aboutsummaryrefslogtreecommitdiff
path: root/discord
diff options
context:
space:
mode:
authorRapptz <[email protected]>2015-08-27 17:44:31 -0400
committerRapptz <[email protected]>2015-08-27 17:45:43 -0400
commit795b8ceffefa64262c8ebecaaaf4e1f051162fae (patch)
tree36d2b5e0abde68831e3ec7e1ba4cdc3659ae0b8c /discord
parentGive members their server as an attribute. (diff)
downloaddiscord.py-795b8ceffefa64262c8ebecaaaf4e1f051162fae.tar.xz
discord.py-795b8ceffefa64262c8ebecaaaf4e1f051162fae.zip
on_status now takes only a member.
Diffstat (limited to 'discord')
-rw-r--r--discord/client.py18
-rw-r--r--discord/server.py6
2 files changed, 14 insertions, 10 deletions
diff --git a/discord/client.py b/discord/client.py
index f5e86bb9..46f23bda 100644
--- a/discord/client.py
+++ b/discord/client.py
@@ -264,17 +264,21 @@ class Client(object):
server = next((s for s in self.servers if s.id == guild_id), None)
if server is not None:
status = data.get('status')
- user = User(**data.get('user'))
+ member_id = data['user']['id']
# check to see if the member is in our server list of members
- member = next((u for u in server.members if u == user), None)
+ member = next((u for u in server.members if u.id == member_id), None)
+
+ if member is None:
+ # create the member if it doesn't exist
+ member = Member(**data)
+
if status == 'online':
- if member is None:
- server.members.append(user)
- if status == 'offline' and user in server.members:
- server.members.remove(user)
+ server.members.append(member)
+ elif status == 'offline' and self.no_offline_members:
+ server.members.remove(member)
# call the event now
- self._invoke_event('on_status', server, user, status, data.get('game_id'))
+ self._invoke_event('on_status', member)
elif event == 'USER_UPDATE':
self.user = User(**data)
elif event == 'CHANNEL_DELETE':
diff --git a/discord/server.py b/discord/server.py
index 727dfb7d..0c0172b6 100644
--- a/discord/server.py
+++ b/discord/server.py
@@ -81,15 +81,15 @@ class Member(User):
The :class:`Server` that the member belongs to.
"""
- def __init__(self, deaf, joined_at, user, roles, mute):
+ def __init__(self, deaf, joined_at, user, roles, mute, **kwargs):
super(Member, self).__init__(**user)
self.deaf = deaf
self.mute = mute
self.joined_at = datetime.datetime(*map(int, re.split(r'[^\d]', joined_at.replace('+00:00', ''))))
self.roles = roles
self.status = 'offline'
- self.game_id = None
- self.server = None
+ self.game_id = kwargs.get('game_id', None)
+ self.server = kwargs.get('server', None)
class Server(object):
"""Represents a Discord server.