aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar MarkKoz <[email protected]>2020-05-31 15:27:53 -0700
committerGravatar MarkKoz <[email protected]>2020-05-31 15:27:53 -0700
commit196ce8a828a0fed7450cad1ee0bba25ef608214a (patch)
tree376805cdda3761cd25b263e1dc1f5cd5c83c59d2
parentRevert message ignore approach. (diff)
Use the messages returned by `purge` to upload message logs
This ensures that only what was actually deleted will be uploaded. I managed to get a 400 response from our API when purging twice in quick succession. Searching the history manually for these messages is unreliable cause of some sort of race condition.
Diffstat (limited to '')
-rw-r--r--bot/cogs/clean.py10
1 files changed, 3 insertions, 7 deletions
diff --git a/bot/cogs/clean.py b/bot/cogs/clean.py
index b164cf232..368d91c85 100644
--- a/bot/cogs/clean.py
+++ b/bot/cogs/clean.py
@@ -117,11 +117,11 @@ class Clean(Cog):
self.mod_log.ignore(Event.message_delete, ctx.message.id)
await ctx.message.delete()
- # Look through the history and retrieve message data
messages = []
message_ids = []
self.cleaning = True
+ # Find the IDs of the messages to delete. IDs are needed in order to ignore mod log events.
for channel in channels:
async for message in channel.history(limit=amount):
@@ -132,21 +132,17 @@ class Clean(Cog):
# If the message passes predicate, let's save it.
if predicate is None or predicate(message):
message_ids.append(message.id)
- messages.append(message)
self.cleaning = False
# Now let's delete the actual messages with purge.
self.mod_log.ignore(Event.message_delete, *message_ids)
for channel in channels:
- await channel.purge(
- limit=amount,
- check=predicate
- )
+ messages += await channel.purge(limit=amount, check=predicate)
# Reverse the list to restore chronological order
if messages:
- messages = list(reversed(messages))
+ messages = reversed(messages)
log_url = await self.mod_log.upload_log(messages, ctx.author.id)
else:
# Can't build an embed, nothing to clean!