diff options
| author | Rapptz <[email protected]> | 2020-10-17 23:02:03 -0400 |
|---|---|---|
| committer | Rapptz <[email protected]> | 2020-10-17 23:02:03 -0400 |
| commit | 61e25cb0904af0fe0831942314bf424344d3e42d (patch) | |
| tree | 832b9b3057df0eaecc8fad57dcfdc3354838193f | |
| parent | Add internal method to check if the websocket is currently ratelimited (diff) | |
| download | discord.py-61e25cb0904af0fe0831942314bf424344d3e42d.tar.xz discord.py-61e25cb0904af0fe0831942314bf424344d3e42d.zip | |
Ensure our own member is never evicted from the cache in any policy.
| -rw-r--r-- | discord/state.py | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/discord/state.py b/discord/state.py index 67ffb2f1..0859147a 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) |