mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-05-13 01:09:50 +00:00
Handle case where PRESENCE_UPDATE adds members to cache.
When we don't request offline members, members that are going from offline to online in the server will become available via the PRESENCE_UPDATE event. This should be transparent to the user since technically the member exists in the server and thus on_member_update is used instead of on_member_join.
This commit is contained in:
parent
7b135725bc
commit
530fbe78b8
@ -134,12 +134,19 @@ class ConnectionState:
|
||||
|
||||
def parse_presence_update(self, data):
|
||||
server = self._get_server(data.get('guild_id'))
|
||||
if server is not None:
|
||||
if server is None:
|
||||
return
|
||||
|
||||
status = data.get('status')
|
||||
user = data['user']
|
||||
member_id = user['id']
|
||||
member = server.get_member(member_id)
|
||||
if member is not None:
|
||||
if member is None:
|
||||
# if the member is not in cache then it's being "lazily"
|
||||
# loaded due to large_threshold so we need to add it into
|
||||
# the cache and then update that instead.
|
||||
member = self._add_member(server, data)
|
||||
|
||||
old_member = copy.copy(member)
|
||||
member.status = data.get('status')
|
||||
try:
|
||||
@ -192,9 +199,7 @@ class ConnectionState:
|
||||
|
||||
self.dispatch('channel_create', channel)
|
||||
|
||||
def parse_guild_member_add(self, data):
|
||||
server = self._get_server(data.get('guild_id'))
|
||||
|
||||
def _add_member(self, server, data):
|
||||
roles = [server.default_role]
|
||||
for roleid in data.get('roles', []):
|
||||
role = utils.get(server.roles, id=roleid)
|
||||
@ -204,6 +209,11 @@ class ConnectionState:
|
||||
data['roles'] = roles
|
||||
member = Member(server=server, **data)
|
||||
server._add_member(member)
|
||||
return member
|
||||
|
||||
def parse_guild_member_add(self, data):
|
||||
server = self._get_server(data.get('guild_id'))
|
||||
self._add_member(server, data)
|
||||
server._member_count += 1
|
||||
self.dispatch('member_join', member)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user