diff options
| author | 2021-11-09 15:46:49 +0100 | |
|---|---|---|
| committer | 2021-11-09 15:46:49 +0100 | |
| commit | 17618fe621d61360a29aea74e62b28a997e2ac1f (patch) | |
| tree | 377f6caf3081467ccce5cc36faa3b07eb977d950 | |
| parent | Merge pull request #1944 from python-discord/ignore-bot (diff) | |
| parent | Listen to only on_raw_message_delete (diff) | |
Merge pull request #1946 from python-discord/refactor-modlog
Refactor ModLog
| -rw-r--r-- | bot/exts/moderation/modlog.py | 40 | 
1 files changed, 21 insertions, 19 deletions
| diff --git a/bot/exts/moderation/modlog.py b/bot/exts/moderation/modlog.py index 1d8e571fb..6416bc3c7 100644 --- a/bot/exts/moderation/modlog.py +++ b/bot/exts/moderation/modlog.py @@ -41,7 +41,6 @@ class ModLog(Cog, name="ModLog"):          self.bot = bot          self._ignored = {event: [] for event in Event} -        self._cached_deletes = []          self._cached_edits = []      async def upload_log( @@ -552,24 +551,22 @@ class ModLog(Cog, name="ModLog"):          return channel.id in GuildConstant.modlog_blacklist -    @Cog.listener() -    async def on_message_delete(self, message: discord.Message) -> None: -        """Log message delete event to message change log.""" +    async def log_cached_deleted_message(self, message: discord.Message) -> None: +        """ +        Log the message's details to message change log. + +        This is called when a cached message is deleted. +        """          channel = message.channel          author = message.author          if self.is_message_blacklisted(message):              return -        self._cached_deletes.append(message.id) -          if message.id in self._ignored[Event.message_delete]:              self._ignored[Event.message_delete].remove(message.id)              return -        if author.bot: -            return -          if channel.category:              response = (                  f"**Author:** {format_user(author)}\n" @@ -610,17 +607,14 @@ class ModLog(Cog, name="ModLog"):              channel_id=Channels.message_log          ) -    @Cog.listener() -    async def on_raw_message_delete(self, event: discord.RawMessageDeleteEvent) -> None: -        """Log raw message delete event to message change log.""" -        if self.is_message_blacklisted(event.channel_id): -            return - -        await asyncio.sleep(1)  # Wait here in case the normal event was fired +    async def log_uncached_deleted_message(self, event: discord.RawMessageDeleteEvent) -> None: +        """ +        Log the message's details to message change log. -        if event.message_id in self._cached_deletes: -            # It was in the cache and the normal event was fired, so we can just ignore it -            self._cached_deletes.remove(event.message_id) +        This is called when a message absent from the cache is deleted. +        Hence, the message contents aren't logged. +        """ +        if self.is_channel_ignored(event.channel_id):              return          if event.message_id in self._ignored[Event.message_delete]: @@ -652,6 +646,14 @@ class ModLog(Cog, name="ModLog"):          )      @Cog.listener() +    async def on_raw_message_delete(self, event: discord.RawMessageDeleteEvent) -> None: +        """Log message deletions to message change log.""" +        if event.cached_message is not None: +            await self.log_cached_deleted_message(event.cached_message) +        else: +            await self.log_uncached_deleted_message(event) + +    @Cog.listener()      async def on_message_edit(self, msg_before: discord.Message, msg_after: discord.Message) -> None:          """Log message edit event to message change log."""          if self.is_message_blacklisted(msg_before): | 
