mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-11-25 02:01:28 +00:00
Fix voice states being overwritten after a GUILD_SYNC.
This was a two-fold problem. The first of which involved the overwriting of members during a GUILD_SYNC. Since we are requesting a chunk anyway, we have all the member references we need without actually chunking. The second problem came from the order. We were doing a GUILD_SYNC and then doing the chunking requests. We should do the GUILD_SYNC after the chunking in order to just update presences.
This commit is contained in:
@@ -180,6 +180,19 @@ class Server(Hashable):
|
||||
self.unavailable = guild.get('unavailable', False)
|
||||
self.id = guild['id']
|
||||
self.roles = [Role(server=self, **r) for r in guild.get('roles', [])]
|
||||
|
||||
for mdata in guild.get('members', []):
|
||||
roles = [self.default_role]
|
||||
for role_id in mdata['roles']:
|
||||
role = utils.find(lambda r: r.id == role_id, self.roles)
|
||||
if role is not None:
|
||||
roles.append(role)
|
||||
|
||||
mdata['roles'] = roles
|
||||
member = Member(**mdata)
|
||||
member.server = self
|
||||
self._add_member(member)
|
||||
|
||||
self._sync(guild)
|
||||
self.large = None if member_count is None else self._member_count > 250
|
||||
|
||||
@@ -197,18 +210,6 @@ class Server(Hashable):
|
||||
if 'large' in data:
|
||||
self.large = data['large']
|
||||
|
||||
for mdata in data.get('members', []):
|
||||
roles = [self.default_role]
|
||||
for role_id in mdata['roles']:
|
||||
role = utils.find(lambda r: r.id == role_id, self.roles)
|
||||
if role is not None:
|
||||
roles.append(role)
|
||||
|
||||
mdata['roles'] = roles
|
||||
member = Member(**mdata)
|
||||
member.server = self
|
||||
self._add_member(member)
|
||||
|
||||
for presence in data.get('presences', []):
|
||||
user_id = presence['user']['id']
|
||||
member = self.get_member(user_id)
|
||||
|
||||
Reference in New Issue
Block a user