aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRapptz <[email protected]>2015-11-30 07:37:48 -0500
committerRapptz <[email protected]>2015-11-30 07:37:48 -0500
commit343e3376ead693bbf02837e6682ebe1b958b6229 (patch)
treeaab2e03a7747203e5d9e55bdce642db68b8c6006
parenton_status event now has the old game ID and old status as parameters. (diff)
downloaddiscord.py-343e3376ead693bbf02837e6682ebe1b958b6229.tar.xz
discord.py-343e3376ead693bbf02837e6682ebe1b958b6229.zip
on_member_update now takes in the older member state as a parameter.
-rw-r--r--discord/client.py10
-rw-r--r--docs/api.rst12
2 files changed, 15 insertions, 7 deletions
diff --git a/discord/client.py b/discord/client.py
index 401e4a35..555fd336 100644
--- a/discord/client.py
+++ b/discord/client.py
@@ -206,16 +206,15 @@ class ConnectionState(object):
member_id = user['id']
member = utils.find(lambda m: m.id == member_id, server.members)
if member is not None:
- old_status = copy.copy(member.status)
- old_game_id = copy.copy(member.game_id)
+ old_member = copy.copy(member)
member.status = data.get('status')
member.game_id = data.get('game_id')
member.name = user.get('username', member.name)
member.avatar = user.get('avatar', member.avatar)
# call the event now
- self.dispatch('status', member, old_game_id, old_status)
- self.dispatch('member_update', member)
+ self.dispatch('status', member, old_member.game_id, old_member.status)
+ self.dispatch('member_update', old_member, member)
def handle_user_update(self, data):
self.user = User(**data)
@@ -276,6 +275,7 @@ class ConnectionState(object):
member = utils.find(lambda m: m.id == user_id, server.members)
if member is not None:
user = data['user']
+ old_member = copy.copy(member)
member.name = user['username']
member.discriminator = user['discriminator']
member.avatar = user['avatar']
@@ -285,7 +285,7 @@ class ConnectionState(object):
if role.id in data['roles']:
member.roles.append(role)
- self.dispatch('member_update', member)
+ self.dispatch('member_update', old_member, member)
def handle_guild_create(self, data):
unavailable = data.get('unavailable')
diff --git a/docs/api.rst b/docs/api.rst
index f1e0ec5b..935f05dc 100644
--- a/docs/api.rst
+++ b/docs/api.rst
@@ -184,11 +184,19 @@ to handle it, which defaults to print a traceback and ignore the exception.
:param member: The :class:`Member` that joined or left.
-.. function:: on_member_update(member)
+.. function:: on_member_update(before, after)
Called when a :class:`Member` updates their profile.
- :param member: The :class:`Member` that updated their profile with the updated info.
+ This is called when one or more of the following things change:
+
+ - status
+ - game playing
+ - avatar
+ - nickname
+
+ :param before: The :class:`Member` that updated their profile with the old info.
+ :param after: The :class:`Member` that updated their profile with the updated info.
.. function:: on_server_join(server)