From 92c3c2804d7f543adf1f17d17ac28455b07d3575 Mon Sep 17 00:00:00 2001 From: Rapptz Date: Mon, 21 Nov 2016 02:49:50 -0500 Subject: [PATCH] Support MESSAGE_REACTION_REMOVE_ALL event. --- discord/state.py | 7 +++++++ docs/api.rst | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/discord/state.py b/discord/state.py index 9df36cf0e..6a75491e4 100644 --- a/discord/state.py +++ b/discord/state.py @@ -274,6 +274,13 @@ class ConnectionState: self.dispatch('reaction_add', reaction, member) + def parse_message_reaction_remove_all(self, data): + message = self._get_message(data['message_id']) + if message is not None: + old_reactions = message.reactions.copy() + message.reactions.clear() + self.dispatch('reaction_clear', message, old_reactions) + def parse_message_reaction_remove(self, data): message = self._get_message(data['message_id']) if message is not None: diff --git a/docs/api.rst b/docs/api.rst index bd2cf40c1..8bc09e93d 100644 --- a/docs/api.rst +++ b/docs/api.rst @@ -233,6 +233,15 @@ to handle it, which defaults to print a traceback and ignore the exception. :param reaction: A :class:`Reaction` showing the current state of the reaction. :param user: A :class:`User` or :class:`Member` of the user who removed the reaction. +.. function:: on_reaction_clear(message, reactions) + + Called when a message has all its reactions removed from it. Similar to on_message_edit, + if the message is not found in the :attr:`Client.messages` cache, then this event + will not be called. + + :param message: The :class:`Message` that had its reactions cleared. + :param reactions: A list of :class:`Reaction`\s that were removed. + .. function:: on_channel_delete(channel) on_channel_create(channel)