Browse Source

Handle adding and removal of group members.

pull/276/head
Rapptz 9 years ago
parent
commit
91351a3238
  1. 17
      discord/state.py
  2. 9
      docs/api.rst

17
discord/state.py

@ -325,6 +325,22 @@ class ConnectionState:
self.dispatch('channel_create', channel)
def parse_channel_recipient_add(self, data):
channel = self._get_private_channel(data.get('channel_id'))
user = User(**data.get('user', {}))
channel.recipients.append(user)
self.dispatch('group_join', channel, user)
def parse_channel_recipient_remove(self, data):
channel = self._get_private_channel(data.get('channel_id'))
user = User(**data.get('user', {}))
try:
channel.recipients.remove(user)
except ValueError:
pass
else:
self.dispatch('group_remove', channel, user)
def _make_member(self, server, data):
roles = [server.default_role]
for roleid in data.get('roles', []):
@ -480,7 +496,6 @@ class ConnectionState:
self._remove_server(server)
self.dispatch('server_remove', server)
def parse_guild_ban_add(self, data):
# we make the assumption that GUILD_BAN_ADD is done
# before GUILD_MEMBER_REMOVE is called

9
docs/api.rst

@ -331,6 +331,15 @@ to handle it, which defaults to print a traceback and ignore the exception.
:param user: The user that started typing.
:param when: A ``datetime.datetime`` object representing when typing started.
.. function:: on_group_join(channel, user)
on_group_remove(channel, user)
Called when someone joins or leaves a group, i.e. a :class:`PrivateChannel`
with a :attr:`PrivateChannel.type` of :attr:`ChannelType.group`.
:param channel: The group that the user joined or left.
:param user: The user that joined or left.
.. _discord-api-utils:
Utility Functions

Loading…
Cancel
Save