diff options
| author | Rapptz <[email protected]> | 2015-12-19 06:31:19 -0500 |
|---|---|---|
| committer | Rapptz <[email protected]> | 2015-12-19 10:36:11 -0500 |
| commit | 7258a9e700376a040875878de367da8af5567ce2 (patch) | |
| tree | e66546cc8b0fd319387235fac24518e2df184ef6 | |
| parent | Add __slots__ where appropriate to data classes. (diff) | |
| download | discord.py-7258a9e700376a040875878de367da8af5567ce2.tar.xz discord.py-7258a9e700376a040875878de367da8af5567ce2.zip | |
Delete messages from message cache when you leave the server.
| -rw-r--r-- | discord/state.py | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/discord/state.py b/discord/state.py index 07c71039..c4c3cee6 100644 --- a/discord/state.py +++ b/discord/state.py @@ -43,7 +43,8 @@ class ConnectionState: self.email = None self.servers = [] self.private_channels = [] - self.messages = deque(maxlen=max_messages) + self.max_messages = max_messages + self.messages = deque(maxlen=self.max_messages) self.dispatch = dispatch def _get_message(self, msg_id): @@ -236,6 +237,9 @@ class ConnectionState: def parse_guild_delete(self, data): server = self._get_server(data.get('id')) + if server is None: + return + if data.get('unavailable', False) and server is not None: # GUILD_DELETE with unavailable being True means that the # server that was available is now currently unavailable @@ -243,6 +247,9 @@ class ConnectionState: self.dispatch('server_unavailable', server) return + # do a cleanup of the messages cache + self.messages = deque((msg for msg in self.messages if msg.server != server), maxlen=self.max_messages) + try: self.servers.remove(server) except ValueError: @@ -250,6 +257,7 @@ class ConnectionState: else: self.dispatch('server_remove', server) + def parse_guild_ban_add(self, data): # we make the assumption that GUILD_BAN_ADD is done # before GUILD_MEMBER_REMOVE is called |