diff options
| author | Rapptz <[email protected]> | 2016-06-28 19:07:56 -0400 |
|---|---|---|
| committer | Rapptz <[email protected]> | 2016-06-28 19:07:56 -0400 |
| commit | d87d11c5a66a0b2684fe606d0bbbe14e74fcc46d (patch) | |
| tree | 7913ed8c4c6bf6539502c77d4c72629b14b61eb0 /discord/server.py | |
| parent | Change max_length to max_messages (diff) | |
| download | discord.py-d87d11c5a66a0b2684fe606d0bbbe14e74fcc46d.tar.xz discord.py-d87d11c5a66a0b2684fe606d0bbbe14e74fcc46d.zip | |
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.
Diffstat (limited to 'discord/server.py')
| -rw-r--r-- | discord/server.py | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/discord/server.py b/discord/server.py index 02873c46..b320fede 100644 --- a/discord/server.py +++ b/discord/server.py @@ -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) |