aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Shivansh-007 <[email protected]>2021-08-21 07:26:11 +0530
committerGravatar Shivansh-007 <[email protected]>2021-10-11 12:05:46 +0530
commit1b52ccf00df8550b0e5df02d350fb8e0baef935d (patch)
treef350e16cdea00558f2b17434a199379901f326fa
parentRemove 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.py31
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: