async def add_reaction(self, emoji: EmojiInputType, /) -> None:
    '|coro|\n\n        Adds a reaction to the message.\n\n        The emoji may be a unicode emoji or a custom guild :class:`Emoji`.\n\n        You must have the :attr:`~Permissions.read_message_history` permission\n        to use this. If nobody else has reacted to the message using this\n        emoji, the :attr:`~Permissions.add_reactions` permission is required.\n\n        .. versionchanged:: 2.0\n\n            ``emoji`` parameter is now positional-only.\n\n        .. versionchanged:: 2.0\n            This function will now raise :exc:`TypeError` instead of\n            ``InvalidArgument``.\n\n        Parameters\n        ------------\n        emoji: Union[:class:`Emoji`, :class:`Reaction`, :class:`PartialEmoji`, :class:`str`]\n            The emoji to react with.\n\n        Raises\n        --------\n        HTTPException\n            Adding the reaction failed.\n        Forbidden\n            You do not have the proper permissions to react to the message.\n        NotFound\n            The emoji you specified was not found.\n        TypeError\n            The emoji parameter is invalid.\n        '
    emoji = convert_emoji_reaction(emoji)
    (await self._state.http.add_reaction(self.channel.id, self.id, emoji))
|coro|

Adds a reaction to the message.

The emoji may be a unicode emoji or a custom guild :class:`Emoji`.

You must have the :attr:`~Permissions.read_message_history` permission
to use this. If nobody else has reacted to the message using this
emoji, the :attr:`~Permissions.add_reactions` permission is required.

.. versionchanged:: 2.0

    ``emoji`` parameter is now positional-only.

.. versionchanged:: 2.0
    This function will now raise :exc:`TypeError` instead of
    ``InvalidArgument``.

Parameters
------------
emoji: Union[:class:`Emoji`, :class:`Reaction`, :class:`PartialEmoji`, :class:`str`]
    The emoji to react with.

Raises
--------
HTTPException
    Adding the reaction failed.
Forbidden
    You do not have the proper permissions to react to the message.
NotFound
    The emoji you specified was not found.
TypeError
    The emoji parameter is invalid.
async def add_reaction(self, emoji: EmojiInputType, /) -> None:
    '|coro|\n\n        Adds a reaction to the message.\n\n        The emoji may be a unicode emoji or a custom guild :class:`Emoji`.\n\n        You must have the :attr:`~Permissions.read_message_history` permission\n        to use this. If nobody else has reacted to the message using this\n        emoji, the :attr:`~Permissions.add_reactions` permission is required.\n\n        .. versionchanged:: 2.0\n\n            ``emoji`` parameter is now positional-only.\n\n        .. versionchanged:: 2.0\n            This function will now raise :exc:`TypeError` instead of\n            ``InvalidArgument``.\n\n        Parameters\n        ------------\n        emoji: Union[:class:`Emoji`, :class:`Reaction`, :class:`PartialEmoji`, :class:`str`]\n            The emoji to react with.\n\n        Raises\n        --------\n        HTTPException\n            Adding the reaction failed.\n        Forbidden\n            You do not have the proper permissions to react to the message.\n        NotFound\n            The emoji you specified was not found.\n        TypeError\n            The emoji parameter is invalid.\n        '
    emoji = convert_emoji_reaction(emoji)
    (await self._state.http.add_reaction(self.channel.id, self.id, emoji))