diff --git a/discord/emoji.py b/discord/emoji.py index 0c161c6c0..a959bea8e 100644 --- a/discord/emoji.py +++ b/discord/emoji.py @@ -80,6 +80,11 @@ class PartialReactionEmoji(namedtuple('PartialReactionEmoji', 'name id')): """Checks if this is a Unicode emoji.""" return self.id is None + def _as_reaction(self): + if self.id is None: + return self.name + return ':%s:%s' % (self.name, self.id) + class Emoji(Hashable): """Represents a custom emoji. diff --git a/discord/message.py b/discord/message.py index d321663f5..3efea9fb7 100644 --- a/discord/message.py +++ b/discord/message.py @@ -29,7 +29,7 @@ import re from . import utils from .reaction import Reaction -from .emoji import Emoji +from .emoji import Emoji, PartialReactionEmoji from .calls import CallMessage from .enums import MessageType, try_enum from .errors import InvalidArgument, ClientException, HTTPException, NotFound @@ -593,7 +593,7 @@ class Message: Parameters ------------ - emoji: Union[:class:`Emoji`, :class:`Reaction`, str] + emoji: Union[:class:`Emoji`, :class:`Reaction`, :class:`PartialReactionEmoji`, str] The emoji to react with. Raises @@ -613,6 +613,8 @@ class Message: if isinstance(emoji, Emoji): emoji = '%s:%s' % (emoji.name, emoji.id) + elif isinstance(emoji, PartialReactionEmoji): + emoji = emoji._as_reaction() elif isinstance(emoji, str): pass # this is okay else: @@ -636,7 +638,7 @@ class Message: Parameters ------------ - emoji: Union[:class:`Emoji`, :class:`Reaction`, str] + emoji: Union[:class:`Emoji`, :class:`Reaction`, :class:`PartialReactionEmoji`, str] The emoji to remove. member: :class:`abc.Snowflake` The member for which to remove the reaction. @@ -658,6 +660,8 @@ class Message: if isinstance(emoji, Emoji): emoji = '%s:%s' % (emoji.name, emoji.id) + elif isinstance(emoji, PartialReactionEmoji): + emoji = emoji._as_reaction() elif isinstance(emoji, str): pass # this is okay else: