Skip to content

Commit 8c35889

Browse files
committed
Postpone deleting old messages to the end
1 parent 3dc9bf9 commit 8c35889

1 file changed

Lines changed: 16 additions & 15 deletions

File tree

bot/exts/moderation/clean.py

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -281,16 +281,17 @@ def is_older_than_14d(message: Message) -> bool:
281281
two_weeks_old_snowflake = int((time.time() - 14 * 24 * 60 * 60) * 1000.0 - 1420070400000) << 22
282282
return message.id < two_weeks_old_snowflake
283283

284-
async def _delete_messages_individually(self, messages: list[Message]) -> list[Message]:
285-
"""Delete each message in the list unless cleaning is cancelled. Return the deleted messages."""
284+
async def _delete_messages_individually(self, channel_messages: dict[TextChannel, list[Message]]) -> list[Message]:
285+
"""Delete each message unless cleaning is cancelled. Return the deleted messages."""
286286
deleted = []
287-
for message in messages:
288-
# Ensure that deletion was not canceled
289-
if not self.cleaning:
290-
return deleted
291-
with contextlib.suppress(NotFound): # Message doesn't exist or was already deleted
292-
await message.delete()
293-
deleted.append(message)
287+
for messages in channel_messages.values():
288+
for message in messages:
289+
# Ensure that deletion was not canceled
290+
if not self.cleaning:
291+
return deleted
292+
with contextlib.suppress(NotFound): # Message doesn't exist or was already deleted
293+
await message.delete()
294+
deleted.append(message)
294295
return deleted
295296

296297
async def _delete_found(self, message_mappings: dict[TextChannel, list[Message]]) -> list[Message]:
@@ -302,18 +303,18 @@ async def _delete_found(self, message_mappings: dict[TextChannel, list[Message]]
302303
If cleaning was cancelled in the middle, return messages already deleted.
303304
"""
304305
deleted = []
306+
old_messages = {}
305307
for channel, messages in message_mappings.items():
306308
to_delete = []
307309

308-
delete_old = False
309-
for current_index, message in enumerate(messages): # noqa: B007
310+
for current_index, message in enumerate(messages):
310311
if not self.cleaning:
311312
# Means that the cleaning was canceled
312313
return deleted
313314

314315
if self.is_older_than_14d(message):
315316
# Further messages are too old to be deleted in bulk
316-
delete_old = True
317+
old_messages[channel] = messages[current_index:]
317318
break
318319

319320
to_delete.append(message)
@@ -332,11 +333,11 @@ async def _delete_found(self, message_mappings: dict[TextChannel, list[Message]]
332333
await channel.delete_messages(to_delete)
333334
deleted.extend(to_delete)
334335

336+
if old_messages:
335337
if not self.cleaning:
336338
return deleted
337-
if delete_old:
338-
old_deleted = await self._delete_messages_individually(messages[current_index:])
339-
deleted.extend(old_deleted)
339+
old_deleted = await self._delete_messages_individually(old_messages)
340+
deleted.extend(old_deleted)
340341

341342
return deleted
342343

0 commit comments

Comments
 (0)