aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar mbaruh <[email protected]>2021-09-07 22:54:43 +0300
committerGravatar mbaruh <[email protected]>2021-09-07 22:59:54 +0300
commit5b8e16bb9e0226e40173a84da4e103d9960b8839 (patch)
tree81dc1050ac32b5a76c82945458a17f5cc101f368
parentImprove responses (diff)
Fix delete order
In case of old messages, it would delete the old messages first, and only then bulk delete the remainder, which affected logging. This commit corrects the deletion order.
-rw-r--r--bot/exts/moderation/clean.py23
1 files changed, 14 insertions, 9 deletions
diff --git a/bot/exts/moderation/clean.py b/bot/exts/moderation/clean.py
index 7a24833fe..c90aff256 100644
--- a/bot/exts/moderation/clean.py
+++ b/bot/exts/moderation/clean.py
@@ -270,33 +270,38 @@ class Clean(Cog):
for channel, messages in message_mappings.items():
to_delete = []
- for current_index, message in enumerate(messages):
+ delete_old = False
+ for current_index, message in enumerate(messages): # noqa: B007
if not self.cleaning:
# Means that the cleaning was canceled
return deleted
if self.is_older_than_14d(message):
- # further messages are too old to be deleted in bulk
- deleted_remaining = await self._delete_messages_individually(messages[current_index:])
- deleted.extend(deleted_remaining)
- if not self.cleaning:
- # Means that deletion was canceled while deleting the individual messages
- return deleted
+ # Further messages are too old to be deleted in bulk
+ delete_old = True
break
to_delete.append(message)
if len(to_delete) == 100:
- # we can only delete up to 100 messages in a bulk
+ # Only up to 100 messages can be deleted in a bulk
await channel.delete_messages(to_delete)
deleted.extend(to_delete)
to_delete.clear()
+ if not self.cleaning:
+ return deleted
if len(to_delete) > 0:
- # deleting any leftover messages if there are any
+ # Deleting any leftover messages if there are any
await channel.delete_messages(to_delete)
deleted.extend(to_delete)
+ if not self.cleaning:
+ return deleted
+ if delete_old:
+ old_deleted = await self._delete_messages_individually(messages[current_index:])
+ deleted.extend(old_deleted)
+
return deleted
async def _modlog_cleaned_messages(self, messages: list[Message], channels: CleanChannels, ctx: Context) -> bool: