|
|
@ -7,24 +7,21 @@ from discord import Member, Embed, DMChannel
|
|
|
|
from discord.ext.commands import command, guild_only, has_guild_permissions, bot_has_guild_permissions, Greedy, \
|
|
|
|
from discord.ext.commands import command, guild_only, has_guild_permissions, bot_has_guild_permissions, Greedy, \
|
|
|
|
cooldown, BucketType, Cog
|
|
|
|
cooldown, BucketType, Cog
|
|
|
|
|
|
|
|
|
|
|
|
from settings import enso_embedmod_colours, get_modlog_for_guild, storeRoles, clearRoles, get_roles_persist, \
|
|
|
|
|
|
|
|
generate_embed
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def send_to_modlogs(self, message, target, reason, action):
|
|
|
|
async def send_to_modlogs(message, target, reason, action):
|
|
|
|
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
Function to send the moderation actions to modlogs channel
|
|
|
|
Function to send the moderation actions to modlogs channel
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
# Get the channel of the modlog within the guild
|
|
|
|
# Get the channel of the modlog within the guild
|
|
|
|
modlog = get_modlog_for_guild(str(message.guild.id))
|
|
|
|
modlog = self.bot.self.bot.get_modlog_for_guild(str(message.guild.id))
|
|
|
|
|
|
|
|
|
|
|
|
if modlog is not None:
|
|
|
|
if modlog is not None:
|
|
|
|
|
|
|
|
|
|
|
|
channel = message.guild.get_channel(int(modlog))
|
|
|
|
channel = message.guild.get_channel(int(modlog))
|
|
|
|
|
|
|
|
|
|
|
|
embed = Embed(title=f"Member {action}",
|
|
|
|
embed = Embed(title=f"Member {action}",
|
|
|
|
colour=enso_embedmod_colours,
|
|
|
|
colour=self.bot.admin_colour,
|
|
|
|
timestamp=datetime.datetime.utcnow())
|
|
|
|
timestamp=datetime.datetime.utcnow())
|
|
|
|
|
|
|
|
|
|
|
|
embed.set_thumbnail(url=target.avatar_url)
|
|
|
|
embed.set_thumbnail(url=target.avatar_url)
|
|
|
@ -39,7 +36,7 @@ async def send_to_modlogs(message, target, reason, action):
|
|
|
|
await channel.send(embed=embed)
|
|
|
|
await channel.send(embed=embed)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def check(ctx, members):
|
|
|
|
async def check(self, ctx, members):
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
Check Function
|
|
|
|
Check Function
|
|
|
|
|
|
|
|
|
|
|
@ -52,13 +49,13 @@ async def check(ctx, members):
|
|
|
|
if not len(members):
|
|
|
|
if not len(members):
|
|
|
|
embed = Embed(description="Not Correct Syntax!"
|
|
|
|
embed = Embed(description="Not Correct Syntax!"
|
|
|
|
f"\nUse **{ctx.prefix}help** to find how to use **{ctx.command}**",
|
|
|
|
f"\nUse **{ctx.prefix}help** to find how to use **{ctx.command}**",
|
|
|
|
colour=enso_embedmod_colours)
|
|
|
|
colour=self.bot.admin_colour)
|
|
|
|
await ctx.send(embed=embed)
|
|
|
|
await ctx.send(embed=embed)
|
|
|
|
return True
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
|
|
elif ctx.author in members:
|
|
|
|
elif ctx.author in members:
|
|
|
|
embed = Embed(description=f"**❌ Forbidden Action ❌**",
|
|
|
|
embed = Embed(description=f"**❌ Forbidden Action ❌**",
|
|
|
|
colour=enso_embedmod_colours)
|
|
|
|
colour=self.bot.admin_colour)
|
|
|
|
await ctx.send(embed=embed)
|
|
|
|
await ctx.send(embed=embed)
|
|
|
|
return True
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
|
@ -96,16 +93,16 @@ async def ummute_members(self, message, targets, reason):
|
|
|
|
roles = [message.guild.get_role(int(id_)) for id_ in role_ids.split(", ") if len(id_)]
|
|
|
|
roles = [message.guild.get_role(int(id_)) for id_ in role_ids.split(", ") if len(id_)]
|
|
|
|
|
|
|
|
|
|
|
|
# Clear all the roles of the user
|
|
|
|
# Clear all the roles of the user
|
|
|
|
await clearRoles(member=target, pool=pool)
|
|
|
|
await self.bot.clearRoles(member=target, pool=pool)
|
|
|
|
|
|
|
|
|
|
|
|
await target.edit(roles=roles)
|
|
|
|
await target.edit(roles=roles)
|
|
|
|
|
|
|
|
|
|
|
|
# Send confirmation to the channel that the user is in
|
|
|
|
# Send confirmation to the channel that the user is in
|
|
|
|
embed = Embed(description="✅ **{}** Was Unmuted! ✅".format(target),
|
|
|
|
embed = Embed(description="✅ **{}** Was Unmuted! ✅".format(target),
|
|
|
|
colour=enso_embedmod_colours)
|
|
|
|
colour=self.bot.admin_colour)
|
|
|
|
await message.channel.send(embed=embed)
|
|
|
|
await message.channel.send(embed=embed)
|
|
|
|
|
|
|
|
|
|
|
|
await send_to_modlogs(message, target, reason, action="Unmuted")
|
|
|
|
await send_to_modlogs(self, message, target, reason, action="Unmuted")
|
|
|
|
|
|
|
|
|
|
|
|
# Send error message if the User could not be muted
|
|
|
|
# Send error message if the User could not be muted
|
|
|
|
else:
|
|
|
|
else:
|
|
|
@ -113,7 +110,7 @@ async def ummute_members(self, message, targets, reason):
|
|
|
|
await message.channel.send(embed=embed)
|
|
|
|
await message.channel.send(embed=embed)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def mute_members(pool, ctx, targets, reason, muted):
|
|
|
|
async def mute_members(self, pool, ctx, targets, reason, muted):
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
Method to allow members to be muted
|
|
|
|
Method to allow members to be muted
|
|
|
@ -128,7 +125,7 @@ async def mute_members(pool, ctx, targets, reason, muted):
|
|
|
|
# When user is already muted, send error message
|
|
|
|
# When user is already muted, send error message
|
|
|
|
if muted in target.roles:
|
|
|
|
if muted in target.roles:
|
|
|
|
embed = Embed(description="**❌ User Is Already Muted! ❌**",
|
|
|
|
embed = Embed(description="**❌ User Is Already Muted! ❌**",
|
|
|
|
colour=enso_embedmod_colours)
|
|
|
|
colour=self.bot.admin_colour)
|
|
|
|
await ctx.send(embed=embed)
|
|
|
|
await ctx.send(embed=embed)
|
|
|
|
|
|
|
|
|
|
|
|
else:
|
|
|
|
else:
|
|
|
@ -141,14 +138,14 @@ async def mute_members(pool, ctx, targets, reason, muted):
|
|
|
|
and not target.guild_permissions.administrator):
|
|
|
|
and not target.guild_permissions.administrator):
|
|
|
|
|
|
|
|
|
|
|
|
# Store the current roles of the user within database
|
|
|
|
# Store the current roles of the user within database
|
|
|
|
await storeRoles(pool=pool, target=target, ctx=ctx.message, member=target)
|
|
|
|
await self.bot.storeRoles(pool=pool, target=target, ctx=ctx.message, member=target)
|
|
|
|
# Give the user the muted role (and any integration roles if need be)
|
|
|
|
# Give the user the muted role (and any integration roles if need be)
|
|
|
|
await target.edit(roles=roles, reason=reason)
|
|
|
|
await target.edit(roles=roles, reason=reason)
|
|
|
|
|
|
|
|
|
|
|
|
# Send confirmation to the channel that the user is in
|
|
|
|
# Send confirmation to the channel that the user is in
|
|
|
|
embed = Embed(description="✅ **{}** Was Muted! ✅".format(target),
|
|
|
|
embed = Embed(description="✅ **{}** Was Muted! ✅".format(target),
|
|
|
|
colour=enso_embedmod_colours)
|
|
|
|
colour=self.bot.admin_colour)
|
|
|
|
if get_roles_persist(str(ctx.message.guild.id)) == 0:
|
|
|
|
if self.bot.get_roles_persist(str(ctx.message.guild.id)) == 0:
|
|
|
|
embed.add_field(name="**WARNING: ROLE PERSIST NOT ENABLED**",
|
|
|
|
embed.add_field(name="**WARNING: ROLE PERSIST NOT ENABLED**",
|
|
|
|
value="The bot **will not give** the roles back to the user if they leave the server."
|
|
|
|
value="The bot **will not give** the roles back to the user if they leave the server."
|
|
|
|
"\nAllowing the user to bypass the Mute by leaving and rejoining."
|
|
|
|
"\nAllowing the user to bypass the Mute by leaving and rejoining."
|
|
|
@ -157,16 +154,16 @@ async def mute_members(pool, ctx, targets, reason, muted):
|
|
|
|
|
|
|
|
|
|
|
|
await ctx.message.channel.send(embed=embed)
|
|
|
|
await ctx.message.channel.send(embed=embed)
|
|
|
|
|
|
|
|
|
|
|
|
await send_to_modlogs(ctx.message, target, reason, action="Muted")
|
|
|
|
await send_to_modlogs(self, ctx.message, target, reason, action="Muted")
|
|
|
|
|
|
|
|
|
|
|
|
# Send error message if the User could not be muted
|
|
|
|
# Send error message if the User could not be muted
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
embed = Embed(description="**{} Could Not Be Muted!**".format(target.mention),
|
|
|
|
embed = Embed(description="**{} Could Not Be Muted!**".format(target.mention),
|
|
|
|
colour=enso_embedmod_colours)
|
|
|
|
colour=self.bot.admin_colour)
|
|
|
|
await ctx.message.channel.send(embed=embed)
|
|
|
|
await ctx.message.channel.send(embed=embed)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def ban_members(message, targets, reason):
|
|
|
|
async def ban_members(self, message, targets, reason):
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
Method to allow members to be banned
|
|
|
|
Method to allow members to be banned
|
|
|
@ -182,10 +179,10 @@ async def ban_members(message, targets, reason):
|
|
|
|
await target.ban(reason=reason)
|
|
|
|
await target.ban(reason=reason)
|
|
|
|
|
|
|
|
|
|
|
|
embed = Embed(description="✅ **{}** Was Banned! ✅".format(target),
|
|
|
|
embed = Embed(description="✅ **{}** Was Banned! ✅".format(target),
|
|
|
|
colour=enso_embedmod_colours)
|
|
|
|
colour=self.bot.admin_colour)
|
|
|
|
await message.channel.send(embed=embed)
|
|
|
|
await message.channel.send(embed=embed)
|
|
|
|
|
|
|
|
|
|
|
|
await send_to_modlogs(message, target, reason, action="Banned")
|
|
|
|
await send_to_modlogs(self, message, target, reason, action="Banned")
|
|
|
|
|
|
|
|
|
|
|
|
# Send error message if the User could not be banned
|
|
|
|
# Send error message if the User could not be banned
|
|
|
|
else:
|
|
|
|
else:
|
|
|
@ -210,7 +207,7 @@ async def unban_members(self, message, targets, reason):
|
|
|
|
for target in targets:
|
|
|
|
for target in targets:
|
|
|
|
if target not in ban_ids:
|
|
|
|
if target not in ban_ids:
|
|
|
|
embed = Embed(description="❌ **Member Is Not In Ban's List!** ❌",
|
|
|
|
embed = Embed(description="❌ **Member Is Not In Ban's List!** ❌",
|
|
|
|
colour=enso_embedmod_colours)
|
|
|
|
colour=self.bot.admin_colour)
|
|
|
|
await message.channel.send(embed=embed)
|
|
|
|
await message.channel.send(embed=embed)
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
|
|
|
|
|
|
|
@ -220,13 +217,13 @@ async def unban_members(self, message, targets, reason):
|
|
|
|
|
|
|
|
|
|
|
|
# Send confirmation to the channel that the user is in
|
|
|
|
# Send confirmation to the channel that the user is in
|
|
|
|
embed = Embed(description="✅ **{}** Was Unbanned! ✅".format(user),
|
|
|
|
embed = Embed(description="✅ **{}** Was Unbanned! ✅".format(user),
|
|
|
|
colour=enso_embedmod_colours)
|
|
|
|
colour=self.bot.admin_colour)
|
|
|
|
await message.channel.send(embed=embed)
|
|
|
|
await message.channel.send(embed=embed)
|
|
|
|
|
|
|
|
|
|
|
|
await send_to_modlogs(message, user, reason, action="Unbanned")
|
|
|
|
await send_to_modlogs(self, message, user, reason, action="Unbanned")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def kick_members(message, targets, reason):
|
|
|
|
async def kick_members(self, message, targets, reason):
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
Method to allow the kick member log to be sent to the modlog channel
|
|
|
|
Method to allow the kick member log to be sent to the modlog channel
|
|
|
@ -243,10 +240,10 @@ async def kick_members(message, targets, reason):
|
|
|
|
await target.kick(reason=reason)
|
|
|
|
await target.kick(reason=reason)
|
|
|
|
|
|
|
|
|
|
|
|
embed = Embed(description="✅ **{}** Was Kicked! ✅".format(target),
|
|
|
|
embed = Embed(description="✅ **{}** Was Kicked! ✅".format(target),
|
|
|
|
colour=enso_embedmod_colours)
|
|
|
|
colour=self.bot.admin_colour)
|
|
|
|
await message.channel.send(embed=embed)
|
|
|
|
await message.channel.send(embed=embed)
|
|
|
|
|
|
|
|
|
|
|
|
await send_to_modlogs(message, target, reason, action="Kicked")
|
|
|
|
await send_to_modlogs(self, message, target, reason, action="Kicked")
|
|
|
|
|
|
|
|
|
|
|
|
# Send error message if the User could not be kicked
|
|
|
|
# Send error message if the User could not be kicked
|
|
|
|
else:
|
|
|
|
else:
|
|
|
@ -275,10 +272,10 @@ class Moderation(Cog):
|
|
|
|
Multiple Members can be Kicked at Once
|
|
|
|
Multiple Members can be Kicked at Once
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
if not await check(ctx, members):
|
|
|
|
if not await check(self, ctx, members):
|
|
|
|
with ctx.typing():
|
|
|
|
with ctx.typing():
|
|
|
|
# Send embed of the kicked member
|
|
|
|
# Send embed of the kicked member
|
|
|
|
await kick_members(ctx.message, members, reason)
|
|
|
|
await kick_members(self, ctx.message, members, reason)
|
|
|
|
|
|
|
|
|
|
|
|
@command(name="mute", usage="`<member>...` `[reason]`")
|
|
|
|
@command(name="mute", usage="`<member>...` `[reason]`")
|
|
|
|
@has_guild_permissions(manage_roles=True)
|
|
|
|
@has_guild_permissions(manage_roles=True)
|
|
|
@ -289,7 +286,7 @@ class Moderation(Cog):
|
|
|
|
Multiple Members can be Muted At Once
|
|
|
|
Multiple Members can be Muted At Once
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
if not await check(ctx, members):
|
|
|
|
if not await check(self, ctx, members):
|
|
|
|
with ctx.typing():
|
|
|
|
with ctx.typing():
|
|
|
|
|
|
|
|
|
|
|
|
# Get muted role from the server
|
|
|
|
# Get muted role from the server
|
|
|
@ -302,7 +299,7 @@ class Moderation(Cog):
|
|
|
|
await channel.set_permissions(muted, read_messages=True, send_messages=False,
|
|
|
|
await channel.set_permissions(muted, read_messages=True, send_messages=False,
|
|
|
|
read_message_history=False)
|
|
|
|
read_message_history=False)
|
|
|
|
|
|
|
|
|
|
|
|
await mute_members(self.bot.db, ctx, members, reason, muted)
|
|
|
|
await mute_members(self, self.bot.db, ctx, members, reason, muted)
|
|
|
|
|
|
|
|
|
|
|
|
# Make sure that the Muted Role has the correct permissions before muting member(s)
|
|
|
|
# Make sure that the Muted Role has the correct permissions before muting member(s)
|
|
|
|
else:
|
|
|
|
else:
|
|
|
@ -325,7 +322,7 @@ class Moderation(Cog):
|
|
|
|
if perms.read_messages or perms.send_messages or perms.read_message_history:
|
|
|
|
if perms.read_messages or perms.send_messages or perms.read_message_history:
|
|
|
|
await channel.set_permissions(role, overwrite=perms)
|
|
|
|
await channel.set_permissions(role, overwrite=perms)
|
|
|
|
|
|
|
|
|
|
|
|
await mute_members(self.bot.db, ctx, members, reason, role)
|
|
|
|
await mute_members(self, self.bot.db, ctx, members, reason, role)
|
|
|
|
|
|
|
|
|
|
|
|
@command(name="unmute", usage="`<member>...` `[reason]`")
|
|
|
|
@command(name="unmute", usage="`<member>...` `[reason]`")
|
|
|
|
@has_guild_permissions(manage_roles=True)
|
|
|
|
@has_guild_permissions(manage_roles=True)
|
|
|
@ -337,13 +334,13 @@ class Moderation(Cog):
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
unmute = False
|
|
|
|
unmute = False
|
|
|
|
|
|
|
|
|
|
|
|
if not await check(ctx, members):
|
|
|
|
if not await check(self, ctx, members):
|
|
|
|
with ctx.typing():
|
|
|
|
with ctx.typing():
|
|
|
|
role = discord.utils.get(ctx.guild.roles, name="Muted")
|
|
|
|
role = discord.utils.get(ctx.guild.roles, name="Muted")
|
|
|
|
|
|
|
|
|
|
|
|
if role is None:
|
|
|
|
if role is None:
|
|
|
|
embed = Embed(description="**❌ No Muted Role Was Found! ❌**",
|
|
|
|
embed = Embed(description="**❌ No Muted Role Was Found! ❌**",
|
|
|
|
colour=enso_embedmod_colours)
|
|
|
|
colour=self.bot.admin_colour)
|
|
|
|
await ctx.send(embed=embed)
|
|
|
|
await ctx.send(embed=embed)
|
|
|
|
|
|
|
|
|
|
|
|
else:
|
|
|
|
else:
|
|
|
@ -355,7 +352,7 @@ class Moderation(Cog):
|
|
|
|
|
|
|
|
|
|
|
|
if role not in member.roles and unmute is False:
|
|
|
|
if role not in member.roles and unmute is False:
|
|
|
|
embed = Embed(description=f"**❌ {member.mention} Is Not Muted! ❌**",
|
|
|
|
embed = Embed(description=f"**❌ {member.mention} Is Not Muted! ❌**",
|
|
|
|
colour=enso_embedmod_colours)
|
|
|
|
colour=self.bot.admin_colour)
|
|
|
|
await ctx.send(embed=embed)
|
|
|
|
await ctx.send(embed=embed)
|
|
|
|
|
|
|
|
|
|
|
|
@command(name="ban", usage="`<member>...` `[reason]`")
|
|
|
|
@command(name="ban", usage="`<member>...` `[reason]`")
|
|
|
@ -369,9 +366,9 @@ class Moderation(Cog):
|
|
|
|
Multiple Members can be banned at once
|
|
|
|
Multiple Members can be banned at once
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
if not await check(ctx, members):
|
|
|
|
if not await check(self, ctx, members):
|
|
|
|
with ctx.typing():
|
|
|
|
with ctx.typing():
|
|
|
|
await ban_members(ctx.message, members, reason)
|
|
|
|
await ban_members(self, ctx.message, members, reason)
|
|
|
|
|
|
|
|
|
|
|
|
@command(name="unban", usage="`<member>...` `[reason]`")
|
|
|
|
@command(name="unban", usage="`<member>...` `[reason]`")
|
|
|
|
@guild_only()
|
|
|
|
@guild_only()
|
|
|
@ -383,7 +380,7 @@ class Moderation(Cog):
|
|
|
|
Unban Member(s) from Server
|
|
|
|
Unban Member(s) from Server
|
|
|
|
Multiple Members can be Unbanned At Once
|
|
|
|
Multiple Members can be Unbanned At Once
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
if not await check(ctx, members):
|
|
|
|
if not await check(self, ctx, members):
|
|
|
|
with ctx.typing():
|
|
|
|
with ctx.typing():
|
|
|
|
await unban_members(self, ctx.message, members, reason)
|
|
|
|
await unban_members(self, ctx.message, members, reason)
|
|
|
|
|
|
|
|
|
|
|
@ -412,7 +409,7 @@ class Moderation(Cog):
|
|
|
|
|
|
|
|
|
|
|
|
# Send error if amount is not between 0 and 100
|
|
|
|
# Send error if amount is not between 0 and 100
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
await generate_embed(ctx, desc="The amount provided is not between **0** and **100**")
|
|
|
|
await self.bot.generate_embed(ctx, desc="The amount provided is not between **0** and **100**")
|
|
|
|
|
|
|
|
|
|
|
|
# Delete the last 50 messages if no amount is given
|
|
|
|
# Delete the last 50 messages if no amount is given
|
|
|
|
else:
|
|
|
|
else:
|
|
|
@ -431,7 +428,7 @@ class Moderation(Cog):
|
|
|
|
"""Logging Bulk Message Deletion from Server"""
|
|
|
|
"""Logging Bulk Message Deletion from Server"""
|
|
|
|
|
|
|
|
|
|
|
|
# Get the channel within the cache
|
|
|
|
# Get the channel within the cache
|
|
|
|
channel = get_modlog_for_guild(str(payload.guild_id))
|
|
|
|
channel = self.bot.get_modlog_for_guild(str(payload.guild_id))
|
|
|
|
|
|
|
|
|
|
|
|
# When no modlogs channel is returned, do nothing
|
|
|
|
# When no modlogs channel is returned, do nothing
|
|
|
|
if channel is not None:
|
|
|
|
if channel is not None:
|
|
|
@ -443,7 +440,7 @@ class Moderation(Cog):
|
|
|
|
embed = Embed(
|
|
|
|
embed = Embed(
|
|
|
|
description="**Bulk Delete in {} | {} messages deleted**".format(deleted_msgs_channel.mention,
|
|
|
|
description="**Bulk Delete in {} | {} messages deleted**".format(deleted_msgs_channel.mention,
|
|
|
|
len(payload.message_ids)),
|
|
|
|
len(payload.message_ids)),
|
|
|
|
colour=enso_embedmod_colours,
|
|
|
|
colour=self.bot.admin_colour,
|
|
|
|
timestamp=datetime.datetime.utcnow())
|
|
|
|
timestamp=datetime.datetime.utcnow())
|
|
|
|
embed.set_author(name=deleted_msgs_channel.guild.name, icon_url=deleted_msgs_channel.guild.icon_url)
|
|
|
|
embed.set_author(name=deleted_msgs_channel.guild.name, icon_url=deleted_msgs_channel.guild.icon_url)
|
|
|
|
|
|
|
|
|
|
|
@ -454,7 +451,7 @@ class Moderation(Cog):
|
|
|
|
"""Log Member Leaves from Server"""
|
|
|
|
"""Log Member Leaves from Server"""
|
|
|
|
|
|
|
|
|
|
|
|
# Get the channel within the cache
|
|
|
|
# Get the channel within the cache
|
|
|
|
channel = get_modlog_for_guild(str(member.guild.id))
|
|
|
|
channel = self.bot.get_modlog_for_guild(str(member.guild.id))
|
|
|
|
|
|
|
|
|
|
|
|
# When no modlogs channel is returned, do nothing
|
|
|
|
# When no modlogs channel is returned, do nothing
|
|
|
|
if channel is not None:
|
|
|
|
if channel is not None:
|
|
|
@ -462,7 +459,7 @@ class Moderation(Cog):
|
|
|
|
modlogs_channel = self.bot.get_channel(int(channel))
|
|
|
|
modlogs_channel = self.bot.get_channel(int(channel))
|
|
|
|
|
|
|
|
|
|
|
|
embed = Embed(description="**{}** | **{}**".format(member.mention, member),
|
|
|
|
embed = Embed(description="**{}** | **{}**".format(member.mention, member),
|
|
|
|
colour=enso_embedmod_colours,
|
|
|
|
colour=self.bot.admin_colour,
|
|
|
|
timestamp=datetime.datetime.utcnow())
|
|
|
|
timestamp=datetime.datetime.utcnow())
|
|
|
|
embed.set_author(name="Member Left", icon_url=member.avatar_url)
|
|
|
|
embed.set_author(name="Member Left", icon_url=member.avatar_url)
|
|
|
|
embed.set_thumbnail(url=member.avatar_url)
|
|
|
|
embed.set_thumbnail(url=member.avatar_url)
|
|
|
@ -475,7 +472,7 @@ class Moderation(Cog):
|
|
|
|
"""Log Member Joins to Server"""
|
|
|
|
"""Log Member Joins to Server"""
|
|
|
|
|
|
|
|
|
|
|
|
# Get the channel within the cache
|
|
|
|
# Get the channel within the cache
|
|
|
|
channel = get_modlog_for_guild(str(member.guild.id))
|
|
|
|
channel = self.bot.get_modlog_for_guild(str(member.guild.id))
|
|
|
|
|
|
|
|
|
|
|
|
# When no modlogs channel is returned, do nothing
|
|
|
|
# When no modlogs channel is returned, do nothing
|
|
|
|
if channel is not None:
|
|
|
|
if channel is not None:
|
|
|
@ -483,7 +480,7 @@ class Moderation(Cog):
|
|
|
|
modlogs_channel = self.bot.get_channel(int(channel))
|
|
|
|
modlogs_channel = self.bot.get_channel(int(channel))
|
|
|
|
|
|
|
|
|
|
|
|
embed = Embed(description="**{}** | **{}**".format(member.mention, member),
|
|
|
|
embed = Embed(description="**{}** | **{}**".format(member.mention, member),
|
|
|
|
colour=enso_embedmod_colours,
|
|
|
|
colour=self.bot.admin_colour,
|
|
|
|
timestamp=datetime.datetime.utcnow())
|
|
|
|
timestamp=datetime.datetime.utcnow())
|
|
|
|
embed.add_field(name="Account Creation Date",
|
|
|
|
embed.add_field(name="Account Creation Date",
|
|
|
|
value=member.created_at.strftime("%a, %b %d, %Y\n%I:%M:%S %p"),
|
|
|
|
value=member.created_at.strftime("%a, %b %d, %Y\n%I:%M:%S %p"),
|
|
|
@ -499,7 +496,7 @@ class Moderation(Cog):
|
|
|
|
"""Logs Member Bans to Server"""
|
|
|
|
"""Logs Member Bans to Server"""
|
|
|
|
|
|
|
|
|
|
|
|
# Get the channel within the cache
|
|
|
|
# Get the channel within the cache
|
|
|
|
channel = get_modlog_for_guild(str(guild.id))
|
|
|
|
channel = self.bot.get_modlog_for_guild(str(guild.id))
|
|
|
|
|
|
|
|
|
|
|
|
# When no modlogs channel is returned, do nothing
|
|
|
|
# When no modlogs channel is returned, do nothing
|
|
|
|
if channel is not None:
|
|
|
|
if channel is not None:
|
|
|
@ -507,7 +504,7 @@ class Moderation(Cog):
|
|
|
|
modlogs_channel = self.bot.get_channel(int(channel))
|
|
|
|
modlogs_channel = self.bot.get_channel(int(channel))
|
|
|
|
|
|
|
|
|
|
|
|
embed = Embed(description=f"{user.mention} | **{user}**",
|
|
|
|
embed = Embed(description=f"{user.mention} | **{user}**",
|
|
|
|
colour=enso_embedmod_colours,
|
|
|
|
colour=self.bot.admin_colour,
|
|
|
|
timestamp=datetime.datetime.utcnow())
|
|
|
|
timestamp=datetime.datetime.utcnow())
|
|
|
|
embed.set_author(name="Member Banned", icon_url=user.avatar_url)
|
|
|
|
embed.set_author(name="Member Banned", icon_url=user.avatar_url)
|
|
|
|
embed.set_footer(text=f"ID: {user.id}")
|
|
|
|
embed.set_footer(text=f"ID: {user.id}")
|
|
|
@ -520,7 +517,7 @@ class Moderation(Cog):
|
|
|
|
"""Logs Member Unbans to Server"""
|
|
|
|
"""Logs Member Unbans to Server"""
|
|
|
|
|
|
|
|
|
|
|
|
# Get the channel within the cache
|
|
|
|
# Get the channel within the cache
|
|
|
|
channel = get_modlog_for_guild(str(guild.id))
|
|
|
|
channel = self.bot.get_modlog_for_guild(str(guild.id))
|
|
|
|
|
|
|
|
|
|
|
|
# When no modlogs channel is returned, do nothing
|
|
|
|
# When no modlogs channel is returned, do nothing
|
|
|
|
if channel is not None:
|
|
|
|
if channel is not None:
|
|
|
@ -528,7 +525,7 @@ class Moderation(Cog):
|
|
|
|
modlogs_channel = self.bot.get_channel(int(channel))
|
|
|
|
modlogs_channel = self.bot.get_channel(int(channel))
|
|
|
|
|
|
|
|
|
|
|
|
embed = Embed(description=f"{user.mention} | **{user}**",
|
|
|
|
embed = Embed(description=f"{user.mention} | **{user}**",
|
|
|
|
colour=enso_embedmod_colours,
|
|
|
|
colour=self.bot.admin_colour,
|
|
|
|
timestamp=datetime.datetime.utcnow())
|
|
|
|
timestamp=datetime.datetime.utcnow())
|
|
|
|
embed.set_author(name="Member Unbanned", icon_url=user.avatar_url)
|
|
|
|
embed.set_author(name="Member Unbanned", icon_url=user.avatar_url)
|
|
|
|
embed.set_footer(text=f"ID: {user.id}")
|
|
|
|
embed.set_footer(text=f"ID: {user.id}")
|
|
|
@ -541,7 +538,7 @@ class Moderation(Cog):
|
|
|
|
"""Logging Member Profile Updates"""
|
|
|
|
"""Logging Member Profile Updates"""
|
|
|
|
|
|
|
|
|
|
|
|
# Get the channel within the cache
|
|
|
|
# Get the channel within the cache
|
|
|
|
channel = get_modlog_for_guild(str(after.guild.id))
|
|
|
|
channel = self.bot.get_modlog_for_guild(str(after.guild.id))
|
|
|
|
|
|
|
|
|
|
|
|
# When no modlogs channel is returned, do nothing
|
|
|
|
# When no modlogs channel is returned, do nothing
|
|
|
|
if channel is not None:
|
|
|
|
if channel is not None:
|
|
|
@ -551,7 +548,7 @@ class Moderation(Cog):
|
|
|
|
# Logging Nickname Updates
|
|
|
|
# Logging Nickname Updates
|
|
|
|
if before.nick != after.nick:
|
|
|
|
if before.nick != after.nick:
|
|
|
|
embed = Embed(description=f"**{after.mention}'s Nickname Changed**",
|
|
|
|
embed = Embed(description=f"**{after.mention}'s Nickname Changed**",
|
|
|
|
colour=enso_embedmod_colours,
|
|
|
|
colour=self.bot.admin_colour,
|
|
|
|
timestamp=datetime.datetime.utcnow())
|
|
|
|
timestamp=datetime.datetime.utcnow())
|
|
|
|
embed.set_author(name=after, icon_url=after.avatar_url)
|
|
|
|
embed.set_author(name=after, icon_url=after.avatar_url)
|
|
|
|
embed.add_field(name="Before",
|
|
|
|
embed.add_field(name="Before",
|
|
|
@ -579,7 +576,7 @@ class Moderation(Cog):
|
|
|
|
desc = f"**Roles Added To {after.mention}\nRoles: {new_roles_string}**"
|
|
|
|
desc = f"**Roles Added To {after.mention}\nRoles: {new_roles_string}**"
|
|
|
|
|
|
|
|
|
|
|
|
embed = Embed(description=desc,
|
|
|
|
embed = Embed(description=desc,
|
|
|
|
colour=enso_embedmod_colours,
|
|
|
|
colour=self.bot.admin_colour,
|
|
|
|
timestamp=datetime.datetime.utcnow())
|
|
|
|
timestamp=datetime.datetime.utcnow())
|
|
|
|
embed.set_author(name=after, icon_url=after.avatar_url)
|
|
|
|
embed.set_author(name=after, icon_url=after.avatar_url)
|
|
|
|
embed.set_footer(text=f"ID: {after.id}")
|
|
|
|
embed.set_footer(text=f"ID: {after.id}")
|
|
|
@ -597,7 +594,7 @@ class Moderation(Cog):
|
|
|
|
desc = f"**Roles Removed From {after.mention}\nRoles: {old_roles_string}**"
|
|
|
|
desc = f"**Roles Removed From {after.mention}\nRoles: {old_roles_string}**"
|
|
|
|
|
|
|
|
|
|
|
|
embed = Embed(description=desc,
|
|
|
|
embed = Embed(description=desc,
|
|
|
|
colour=enso_embedmod_colours,
|
|
|
|
colour=self.bot.admin_colour,
|
|
|
|
timestamp=datetime.datetime.utcnow())
|
|
|
|
timestamp=datetime.datetime.utcnow())
|
|
|
|
embed.set_author(name=after, icon_url=after.avatar_url)
|
|
|
|
embed.set_author(name=after, icon_url=after.avatar_url)
|
|
|
|
embed.set_footer(text=f"ID: {after.id}")
|
|
|
|
embed.set_footer(text=f"ID: {after.id}")
|
|
|
@ -613,7 +610,7 @@ class Moderation(Cog):
|
|
|
|
# Get the channel within the cache
|
|
|
|
# Get the channel within the cache
|
|
|
|
if not isinstance(msg_channel, DMChannel):
|
|
|
|
if not isinstance(msg_channel, DMChannel):
|
|
|
|
# Get the channel within the cache
|
|
|
|
# Get the channel within the cache
|
|
|
|
channel = get_modlog_for_guild(str(after.guild.id))
|
|
|
|
channel = self.bot.get_modlog_for_guild(str(after.guild.id))
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
return
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
|
@ -632,7 +629,7 @@ class Moderation(Cog):
|
|
|
|
after_value = f"{after.content[:500]} ..." if len(after.content) >= 500 else after.content
|
|
|
|
after_value = f"{after.content[:500]} ..." if len(after.content) >= 500 else after.content
|
|
|
|
|
|
|
|
|
|
|
|
embed = Embed(description=desc,
|
|
|
|
embed = Embed(description=desc,
|
|
|
|
colour=enso_embedmod_colours,
|
|
|
|
colour=self.bot.admin_colour,
|
|
|
|
timestamp=datetime.datetime.utcnow())
|
|
|
|
timestamp=datetime.datetime.utcnow())
|
|
|
|
embed.set_author(name=after.author, icon_url=after.author.avatar_url)
|
|
|
|
embed.set_author(name=after.author, icon_url=after.author.avatar_url)
|
|
|
|
embed.add_field(name="Before",
|
|
|
|
embed.add_field(name="Before",
|
|
|
@ -651,7 +648,7 @@ class Moderation(Cog):
|
|
|
|
|
|
|
|
|
|
|
|
# Get the channel within the cache
|
|
|
|
# Get the channel within the cache
|
|
|
|
if not isinstance(msg_channel, DMChannel):
|
|
|
|
if not isinstance(msg_channel, DMChannel):
|
|
|
|
channel = get_modlog_for_guild(payload.data["guild_id"])
|
|
|
|
channel = self.bot.get_modlog_for_guild(payload.data["guild_id"])
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
return
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
|
@ -662,7 +659,7 @@ class Moderation(Cog):
|
|
|
|
|
|
|
|
|
|
|
|
desc = f"**Message Edited Within <#{payload.channel_id}>\nMessage Content Not Displayable**"
|
|
|
|
desc = f"**Message Edited Within <#{payload.channel_id}>\nMessage Content Not Displayable**"
|
|
|
|
embed = Embed(description=desc,
|
|
|
|
embed = Embed(description=desc,
|
|
|
|
colour=enso_embedmod_colours,
|
|
|
|
colour=self.bot.admin_colour,
|
|
|
|
timestamp=datetime.datetime.utcnow())
|
|
|
|
timestamp=datetime.datetime.utcnow())
|
|
|
|
embed.set_author(name=modlogs_channel.guild.name, icon_url=modlogs_channel.guild.icon_url)
|
|
|
|
embed.set_author(name=modlogs_channel.guild.name, icon_url=modlogs_channel.guild.icon_url)
|
|
|
|
embed.set_footer(text=f"Message ID: {payload.message_id}")
|
|
|
|
embed.set_footer(text=f"Message ID: {payload.message_id}")
|
|
|
@ -674,7 +671,7 @@ class Moderation(Cog):
|
|
|
|
"""Logging Message Deletions (Within Cache)"""
|
|
|
|
"""Logging Message Deletions (Within Cache)"""
|
|
|
|
|
|
|
|
|
|
|
|
# Get the channel within the cache
|
|
|
|
# Get the channel within the cache
|
|
|
|
channel = get_modlog_for_guild(str(message.guild.id))
|
|
|
|
channel = self.bot.get_modlog_for_guild(str(message.guild.id))
|
|
|
|
|
|
|
|
|
|
|
|
# When no modlogs channel is returned, do nothing
|
|
|
|
# When no modlogs channel is returned, do nothing
|
|
|
|
if channel is not None and not message.author.bot:
|
|
|
|
if channel is not None and not message.author.bot:
|
|
|
@ -692,7 +689,7 @@ class Moderation(Cog):
|
|
|
|
f"\n\nMessage Content:**\n{message.content}{attach_string}"
|
|
|
|
f"\n\nMessage Content:**\n{message.content}{attach_string}"
|
|
|
|
|
|
|
|
|
|
|
|
embed = Embed(description=desc,
|
|
|
|
embed = Embed(description=desc,
|
|
|
|
colour=enso_embedmod_colours,
|
|
|
|
colour=self.bot.admin_colour,
|
|
|
|
timestamp=datetime.datetime.utcnow())
|
|
|
|
timestamp=datetime.datetime.utcnow())
|
|
|
|
embed.set_author(name=message.author, icon_url=message.author.avatar_url)
|
|
|
|
embed.set_author(name=message.author, icon_url=message.author.avatar_url)
|
|
|
|
embed.set_footer(text=f"Author ID: {message.author.id} | Message ID: {message.id}")
|
|
|
|
embed.set_footer(text=f"Author ID: {message.author.id} | Message ID: {message.id}")
|
|
|
|