From 841e584ee92cd4ba1e3bb32633821268a75109cd Mon Sep 17 00:00:00 2001 From: Rapptz Date: Sun, 14 Feb 2016 20:00:50 -0500 Subject: [PATCH] Update owner references when we get a chunk. --- discord/server.py | 5 +++-- discord/state.py | 4 ++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/discord/server.py b/discord/server.py index f95da70b7..07ccbbdb0 100644 --- a/discord/server.py +++ b/discord/server.py @@ -87,7 +87,7 @@ class Server(Hashable): __slots__ = ['afk_timeout', 'afk_channel', '_members', '_channels', 'icon', 'name', 'id', 'owner', 'unavailable', 'name', 'me', 'region', '_default_role', '_default_channel', 'roles', '_member_count', - 'large' ] + 'large', 'owner_id' ] def __init__(self, **kwargs): self._channels = {} @@ -166,7 +166,8 @@ class Server(Hashable): self._add_member(member) if 'owner_id' in guild: - self.owner = self.get_member(guild['owner_id']) + self.owner_id = guild['owner_id'] + self.owner = self.get_member(self.owner_id) for presence in guild.get('presences', []): user_id = presence['user']['id'] diff --git a/discord/state.py b/discord/state.py index 6c41f9a71..bcb90e728 100644 --- a/discord/state.py +++ b/discord/state.py @@ -384,6 +384,10 @@ class ConnectionState: for member in members: self._add_member(server, member) + # if the owner is offline, server.owner is potentially None + # therefore we should check if this chunk makes it point to a valid + # member. + server.owner = server.get_member(server.owner_id) log.info('processed a chunk for {} members.'.format(len(members))) self.process_listeners(ListenerType.chunk, server, len(members))