diff options
author | 2021-08-21 07:26:11 +0530 | |
---|---|---|
committer | 2021-10-11 12:05:46 +0530 | |
commit | 1b52ccf00df8550b0e5df02d350fb8e0baef935d (patch) | |
tree | f350e16cdea00558f2b17434a199379901f326fa | |
parent | Remove unnecessary check for embed when sending (diff) |
Handle message not found specially
Originally message not found would be passed into discord.Exceptions and
then would be logged which was unnecessary for a `MessageNotFound`
error.
Now this has been handled, if the bot receives a deleted message
it would look through the last 100 messages of mod_logs channel to check
if a log entry exists for that message. If one exists, then the incident
embed would have this log entry message linked to it, if it doesn't it
would send a message not found error embed.
In future, we could maybe do the modlog deleted message entry finding
via the python discord API, rather than using hard coded values and
checking if they are existing in the log entry.
-rw-r--r-- | bot/exts/moderation/incidents.py | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/bot/exts/moderation/incidents.py b/bot/exts/moderation/incidents.py index dfc2e0bb0..58777f8cc 100644 --- a/bot/exts/moderation/incidents.py +++ b/bot/exts/moderation/incidents.py @@ -7,7 +7,7 @@ from enum import Enum import discord from async_rediscache import RedisCache -from discord.ext.commands import Cog, Context, MessageConverter +from discord.ext.commands import Cog, Context, MessageConverter, MessageNotFound from bot.bot import Bot from bot.constants import Channels, Colours, Emojis, Guild, Webhooks @@ -168,9 +168,36 @@ async def make_message_link_embed(ctx: Context, message_link: str) -> t.Optional Channel: Special/#bot-commands (814190307980607493) Content: This is a very important message! """ + embed = None + try: message: discord.Message = await MessageConverter().convert(ctx, message_link) + except MessageNotFound: + mod_logs_channel = ctx.bot.get_channel(Channels.mod_log) + last_100_logs: list[discord.Message] = await mod_logs_channel.history(limit=100).flatten() + + for log_entry in last_100_logs: + log_embed: discord.Embed = log_entry.embeds[0] + if ( + log_embed.author.name == "Message deleted" + and f"[Jump to message]({message_link})" in log_embed.description + ): + embed = discord.Embed( + colour=discord.Colour.dark_gold(), + title="Deleted Message Link", + description=( + f"Found <#{Channels.mod_log}> entry for deleted message: " + f"[Jump to message]({log_entry.jump_url})." + ) + ) + if not embed: + embed = discord.Embed( + colour=discord.Colour.red(), + title="Bad Message Link", + description=f"Message {message_link} not found." + ) + except discord.DiscordException as e: log.exception(f"Failed to make message link embed for '{message_link}', raised exception: {e}") @@ -190,7 +217,7 @@ async def make_message_link_embed(ctx: Context, message_link: str) -> t.Optional ) embed.set_footer(text=f"Message ID: {message.id}") - return embed + return embed async def add_signals(incident: discord.Message) -> None: |