From e2c3ba98a5d832db113fb38768465a328e616bff Mon Sep 17 00:00:00 2001 From: Zevaryx Date: Sun, 29 May 2022 20:07:50 -0600 Subject: [PATCH] Re-introduce moderation log activity logging --- jarvis/utils/__init__.py | 8 +++++--- jarvis/utils/cogs.py | 29 +++++++++++++++++++++++------ 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/jarvis/utils/__init__.py b/jarvis/utils/__init__.py index 2bece3a..6352d00 100644 --- a/jarvis/utils/__init__.py +++ b/jarvis/utils/__init__.py @@ -36,9 +36,10 @@ def build_embed( def modlog_embed( member: Member, admin: Member, - log: AuditLogEntry, title: str, desc: str, + log: AuditLogEntry = None, + reason: str = None, ) -> Embed: """Get modlog embed.""" fields = [ @@ -47,8 +48,9 @@ def modlog_embed( value=f"{admin.mention} ({admin.username}#{admin.discriminator})", ), ] - if log.reason: - fields.append(EmbedField(name="Reason", value=log.reason, inline=False)) + if log and log.reason: + reason = reason or log.reason + fields.append(EmbedField(name="Reason", value=reason, inline=False)) embed = build_embed( title=title, description=desc, diff --git a/jarvis/utils/cogs.py b/jarvis/utils/cogs.py index ff757e5..5a4c619 100644 --- a/jarvis/utils/cogs.py +++ b/jarvis/utils/cogs.py @@ -18,6 +18,7 @@ IGNORE_COMMANDS = { "Mute": ["unmute"], "Warning": ["warnings"], } +VERB_LOOKUP = {"Ban": "banned", "Kick": "kicked", "Mute": "muted", "Warning": "warned"} class ModcaseCog(Extension): @@ -79,7 +80,7 @@ class ModcaseCog(Extension): embed.set_author(name=ctx.guild.name, icon_url=ctx.guild.icon.url, url=guild_url) embed.set_thumbnail(url=ctx.guild.icon.url) try: - await user.send(embed=embed) + await user.send(embeds=embed) except Exception: self.logger.debug("User not warned of action due to closed DMs") @@ -90,6 +91,26 @@ class ModcaseCog(Extension): await modlog.commit() return + modlog = await Setting.find_one(q(guild=ctx.guild.id, setting="modlog")) + if not modlog: + return + + fields = ( + EmbedField(name="Action Type", value=name, inline=False), + EmbedField(name="Reason", value=kwargs.get("reason", None) or "N/A", inline=False), + EmbedField(name="Admin", value=ctx.author.mention, inline=False), + ) + embed = build_embed( + title="Admin action taken", + description=f"Admin action has been taken against {user.mention}", + fields=fields, + ) + embed.set_author( + name=f"{user.username}#{user.discriminator}", icon_url=user.display_avatar.url + ) + embed.set_footer(text=f"User ID: {user.id}") + await ctx.send(embed=embed) + lookup_key = f"{user.id}|{ctx.guild.id}" async with self.bot.redis.lock("lock|" + lookup_key): @@ -97,10 +118,6 @@ class ModcaseCog(Extension): self.logger.debug(f"User {user.id} in {ctx.guild.id} already has pending case") return - modlog = await Setting.find_one(q(guild=ctx.guild.id, setting="modlog")) - if not modlog: - return - channel = await ctx.guild.fetch_channel(modlog.value) if not channel: self.logger.warn( @@ -124,7 +141,7 @@ class ModcaseCog(Extension): Button(style=ButtonStyles.GREEN, emoji="✔️", custom_id="modcase|yes"), ) ] - message = await channel.send(embed=embed, components=components) + message = await channel.send(embeds=embed, components=components) await self.bot.redis.set( lookup_key, f"{name.lower()}|{action.id}", ex=timedelta(days=7)