From 170bc3f231231a77e0b1dad45c656ed4209bc877 Mon Sep 17 00:00:00 2001 From: sgoudham Date: Sat, 22 Aug 2020 05:00:16 +0100 Subject: [PATCH] Make sure bot updates aren't triggering events Fixing unmute and mute for working with cache --- cogs/moderation.py | 38 +++++++++++++++----------------------- 1 file changed, 15 insertions(+), 23 deletions(-) diff --git a/cogs/moderation.py b/cogs/moderation.py index 7895c2f2..40dc70dd 100644 --- a/cogs/moderation.py +++ b/cogs/moderation.py @@ -91,30 +91,14 @@ async def ummute_members(self, ctx, targets, reason): if (ctx.guild.me.top_role.position > target.top_role.position and not target.guild_permissions.administrator): - # Setup up pool connection - pool = self.bot.db - async with pool.acquire() as conn: + # Get the roles of the user + result = await self.bot.check_cache(target.id, ctx.guild.id) - # Get the roles of the user from the database - try: - select_query = """SELECT * FROM members WHERE guild_id = $1 AND member_id = $2""" - result = await conn.fetchrow(select_query, ctx.guild.id, target.id) - - # Catch Errors - except Exception as e: - print("PostGres Error: Record Not Found For Unmuting Members", e) - - # Get all the roles of the user before they were muted from the database - else: - role_ids = result["muted_roles"] - roles = [ctx.guild.get_role(int(id_)) for id_ in role_ids.split(", ") if len(id_)] - - # Release connection back to pool - finally: - await pool.release(conn) + role_ids = result["muted_roles"] + roles = [ctx.guild.get_role(int(id_)) for id_ in role_ids.split(", ") if len(id_)] # Clear all the roles of the user - await self.bot.clearRoles(member=target) + await self.bot.clear_roles(member=target) await target.edit(roles=roles) @@ -155,7 +139,7 @@ async def mute_members(self, ctx, targets, reason, muted): and not target.guild_permissions.administrator): # Store the current roles of the user within database - await self.bot.storeRoles(target=target, ctx=ctx, member=target) + await self.bot.store_roles(target=target, ctx=ctx, member=target) # Give the user the muted role (and any integration roles if need be) await target.edit(roles=roles, reason=reason) @@ -192,6 +176,7 @@ async def ban_members(self, ctx, targets, reason): for target in targets: if (ctx.guild.me.top_role.position > target.top_role.position and not target.guild_permissions.administrator): + await target.ban(reason=reason) await self.bot.generate_embed(ctx, desc=f"✅ **{target}** Was Banned! ✅") @@ -220,8 +205,8 @@ async def unban_members(self, ctx, targets, reason): for target in targets: if target not in ban_ids: await self.bot.generate_embed(ctx, desc="❌ **Member Is Not In Ban's List!** ❌") - else: + else: # Get the member and unban them user = await self.bot.fetch_user(target) await ctx.guild.unban(user, reason=reason) @@ -245,6 +230,7 @@ async def kick_members(self, ctx, targets, reason): for target in targets: if (ctx.guild.me.top_role.position > target.top_role.position and not target.guild_permissions.administrator): + await target.kick(reason=reason) await self.bot.generate_embed(ctx, desc=f"✅ **{target}** Was Kicked! ✅") @@ -458,6 +444,8 @@ class Moderation(Cog): async def on_member_join(self, member): """Log Member Joins to Server""" + if member == self.bot.user: return + # Get the channel within the cache channel = self.bot.get_modlog_for_guild(member.guild.id) @@ -482,6 +470,8 @@ class Moderation(Cog): async def on_member_ban(self, guild, user): """Logs Member Bans to Server""" + if user == self.bot.user: return + # Get the channel within the cache channel = self.bot.get_modlog_for_guild(guild.id) @@ -524,6 +514,8 @@ class Moderation(Cog): async def on_member_update(self, before, after): """Logging Member Profile Updates""" + if before == self.bot.user: return + # Get the channel within the cache channel = self.bot.get_modlog_for_guild(after.guild.id)