aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRapptz <[email protected]>2020-10-17 23:02:03 -0400
committerRapptz <[email protected]>2020-10-17 23:02:03 -0400
commit61e25cb0904af0fe0831942314bf424344d3e42d (patch)
tree832b9b3057df0eaecc8fad57dcfdc3354838193f
parentAdd internal method to check if the websocket is currently ratelimited (diff)
downloaddiscord.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.py9
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)