From 7258a9e700376a040875878de367da8af5567ce2 Mon Sep 17 00:00:00 2001 From: Rapptz Date: Sat, 19 Dec 2015 06:31:19 -0500 Subject: [PATCH] Delete messages from message cache when you leave the server. --- discord/state.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/discord/state.py b/discord/state.py index 07c710395..c4c3cee62 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