From 76c9515501c09a8adb19dcff8f1d61e2a6dd188f Mon Sep 17 00:00:00 2001 From: Sebastiaan Zeeff <33516116+SebastiaanZ@users.noreply.github.com> Date: Sun, 15 Sep 2019 02:00:04 +0200 Subject: Fix deleting already deleted message in antispam Since we're in an async context, it can happen that a message was already deleted before the antispam cog could get to it. To prevent processing from stopping dead because of a NotFound exception, I added a try-except and log message to handle that In addition, corrected a small mistake: trying to indice a single Message object. Corrected. --- bot/cogs/antispam.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/bot/cogs/antispam.py b/bot/cogs/antispam.py index 22f9794f3..69367b40b 100644 --- a/bot/cogs/antispam.py +++ b/bot/cogs/antispam.py @@ -5,7 +5,7 @@ from datetime import datetime, timedelta from operator import itemgetter from typing import Dict, Iterable, List, Set -from discord import Colour, Member, Message, Object, TextChannel +from discord import Colour, Member, Message, NotFound, Object, TextChannel from discord.ext.commands import Bot from bot import rules @@ -74,7 +74,7 @@ class DeletionContext: else: mod_alert_message += "Message:\n" [message] = self.messages.values() - content = message[0].clean_content + content = message.clean_content remaining_chars = 2040 - len(mod_alert_message) if len(content) > remaining_chars: @@ -227,7 +227,10 @@ class AntiSpam: # Delete the message directly instead. else: self.mod_log.ignore(Event.message_delete, messages[0].id) - await messages[0].delete() + try: + await messages[0].delete() + except NotFound: + log.info(f"Tried to delete message `{messages[0].id}`, but message could not be found.") async def _process_deletion_context(self, context_id: int) -> None: """Processes the Deletion Context queue.""" -- cgit v1.2.3