diff options
| author | Vexs <[email protected]> | 2019-03-23 21:46:05 -0500 |
|---|---|---|
| committer | Rapptz <[email protected]> | 2019-04-06 19:18:06 -0400 |
| commit | 9591b00dcfb79a18288211473006fe562518b307 (patch) | |
| tree | 96074f457784f0cf0b5d03d287b34bcbd91d72ce /discord/state.py | |
| parent | Redesign asset retrieval in the library. (diff) | |
| download | discord.py-9591b00dcfb79a18288211473006fe562518b307.tar.xz discord.py-9591b00dcfb79a18288211473006fe562518b307.zip | |
Redesign bulk delete events
Change `parse_message_delete_bulk` to not dispatch individual
`message_delete` events, and instead `bulk_message_delete`. Also make
`raw_bulk_message` delete and `raw_message_delete` have message
objects attached.
Fixes #1807
Diffstat (limited to 'discord/state.py')
| -rw-r--r-- | discord/state.py | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/discord/state.py b/discord/state.py index ebde9ec0..11c58612 100644 --- a/discord/state.py +++ b/discord/state.py @@ -366,21 +366,22 @@ class ConnectionState: def parse_message_delete(self, data): raw = RawMessageDeleteEvent(data) - self.dispatch('raw_message_delete', raw) - found = self._get_message(raw.message_id) + raw.cached_message = found + self.dispatch('raw_message_delete', raw) if found is not None: self.dispatch('message_delete', found) self._messages.remove(found) def parse_message_delete_bulk(self, data): raw = RawBulkMessageDeleteEvent(data) + found_messages = [message for message in self._messages if message.id in raw.message_ids] + raw.cached_messages = found_messages self.dispatch('raw_bulk_message_delete', raw) - - to_be_deleted = [message for message in self._messages if message.id in raw.message_ids] - for msg in to_be_deleted: - self.dispatch('message_delete', msg) - self._messages.remove(msg) + if found_messages: + self.dispatch('bulk_message_delete', found_messages) + for msg in found_messages: + self._messages.remove(msg) def parse_message_update(self, data): raw = RawMessageUpdateEvent(data) |