async def remove_reaction(self, emoji: Union[(EmojiInputType, Reaction)], member: Snowflake) -> None:
    '|coro|\n\n        Remove a reaction by the member from the message.\n\n        The emoji may be a unicode emoji or a custom guild :class:`Emoji`.\n\n        If the reaction is not your own (i.e. ``member`` parameter is not you) then\n        the :attr:`~Permissions.manage_messages` permission is needed.\n\n        The ``member`` parameter must represent a member and meet\n        the :class:`abc.Snowflake` abc.\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 remove.\n        member: :class:`abc.Snowflake`\n            The member for which to remove the reaction.\n\n        Raises\n        --------\n        HTTPException\n            Removing the reaction failed.\n        Forbidden\n            You do not have the proper permissions to remove the reaction.\n        NotFound\n            The member or emoji you specified was not found.\n        TypeError\n            The emoji parameter is invalid.\n        '
    emoji = convert_emoji_reaction(emoji)
    if (member.id == self._state.self_id):
        (await self._state.http.remove_own_reaction(self.channel.id, self.id, emoji))
    else:
        (await self._state.http.remove_reaction(self.channel.id, self.id, emoji, member.id))
|coro|

Remove a reaction by the member from the message.

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

If the reaction is not your own (i.e. ``member`` parameter is not you) then
the :attr:`~Permissions.manage_messages` permission is needed.

The ``member`` parameter must represent a member and meet
the :class:`abc.Snowflake` abc.

.. 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 remove.
member: :class:`abc.Snowflake`
    The member for which to remove the reaction.

Raises
--------
HTTPException
    Removing the reaction failed.
Forbidden
    You do not have the proper permissions to remove the reaction.
NotFound
    The member or emoji you specified was not found.
TypeError
    The emoji parameter is invalid.
async def remove_reaction(self, emoji: Union[(EmojiInputType, Reaction)], member: Snowflake) -> None:
    '|coro|\n\n        Remove a reaction by the member from the message.\n\n        The emoji may be a unicode emoji or a custom guild :class:`Emoji`.\n\n        If the reaction is not your own (i.e. ``member`` parameter is not you) then\n        the :attr:`~Permissions.manage_messages` permission is needed.\n\n        The ``member`` parameter must represent a member and meet\n        the :class:`abc.Snowflake` abc.\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 remove.\n        member: :class:`abc.Snowflake`\n            The member for which to remove the reaction.\n\n        Raises\n        --------\n        HTTPException\n            Removing the reaction failed.\n        Forbidden\n            You do not have the proper permissions to remove the reaction.\n        NotFound\n            The member or emoji you specified was not found.\n        TypeError\n            The emoji parameter is invalid.\n        '
    emoji = convert_emoji_reaction(emoji)
    if (member.id == self._state.self_id):
        (await self._state.http.remove_own_reaction(self.channel.id, self.id, emoji))
    else:
        (await self._state.http.remove_reaction(self.channel.id, self.id, emoji, member.id))