From 91351a3238c8b0ddf9710a870e3933323bcceabc Mon Sep 17 00:00:00 2001 From: Rapptz Date: Fri, 15 Jul 2016 22:03:22 -0400 Subject: [PATCH] Handle adding and removal of group members. --- discord/state.py | 17 ++++++++++++++++- docs/api.rst | 9 +++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/discord/state.py b/discord/state.py index 7a8fc4663..cf2af379a 100644 --- a/discord/state.py +++ b/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 diff --git a/docs/api.rst b/docs/api.rst index e597e6d76..5ac83bef0 100644 --- a/docs/api.rst +++ b/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