diff options
author | 2019-09-15 02:00:04 +0200 | |
---|---|---|
committer | 2019-09-15 02:00:04 +0200 | |
commit | 76c9515501c09a8adb19dcff8f1d61e2a6dd188f (patch) | |
tree | 931528d338ca5c39c14ce40de0c01f08c944f7c6 | |
parent | Fix AntiSpam sending duplicate messages to API (diff) |
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.
-rw-r--r-- | bot/cogs/antispam.py | 9 |
1 files 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.""" |