From 61e25cb0904af0fe0831942314bf424344d3e42d Mon Sep 17 00:00:00 2001 From: Rapptz Date: Sat, 17 Oct 2020 23:02:03 -0400 Subject: [PATCH] Ensure our own member is never evicted from the cache in any policy. --- discord/state.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/discord/state.py b/discord/state.py index 67ffb2f16..0859147a0 100644 --- a/discord/state.py +++ b/discord/state.py @@ -610,7 +610,7 @@ class ConnectionState: if user_update: self.dispatch('user_update', user_update[0], user_update[1]) - if flags._online_only and member.raw_status == 'offline': + if member.id != self.self_id and flags._online_only and member.raw_status == 'offline': guild._remove_member(member) self.dispatch('member_update', old_member, member) @@ -971,8 +971,9 @@ class ConnectionState: guild = self._get_guild(utils._get_as_snowflake(data, 'guild_id')) channel_id = utils._get_as_snowflake(data, 'channel_id') flags = self._member_cache_flags + self_id = self.user.id if guild is not None: - if int(data['user_id']) == self.user.id: + if int(data['user_id']) == self_id: voice = self._get_voice_client(guild.id) if voice is not None: coro = voice.on_voice_state_update(data) @@ -981,10 +982,10 @@ class ConnectionState: member, before, after = guild._update_voice_state(data, channel_id) if member is not None: if flags.voice: - if channel_id is None and flags.value == MemberCacheFlags.voice.flag: + if channel_id is None and flags._voice_only and member.id != self_id: # Only remove from cache iff we only have the voice flag enabled guild._remove_member(member) - else: + elif channel_id is not None: guild._add_member(member) self.dispatch('voice_state_update', member, before, after)