Skip to content

feat: allow usage of unicode emoji in PartialEmojiConverter #2819

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 16 additions & 2 deletions discord/ext/commands/converter.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
)

import discord
from discord.partial_emoji import EMOJIS_MAP

from .errors import *

Expand Down Expand Up @@ -851,7 +852,8 @@ async def convert(self, ctx: Context, argument: str) -> discord.GuildEmoji:
class PartialEmojiConverter(Converter[discord.PartialEmoji]):
"""Converts to a :class:`~discord.PartialEmoji`.

This is done by extracting the animated flag, name and ID from the emoji.
This is done by extracting the animated flag, name, and ID for custom emojis,
or by using the standard Unicode emojis supported by Discord.

.. versionchanged:: 1.5
Raise :exc:`.PartialEmojiConversionFailure` instead of generic :exc:`.BadArgument`
Expand All @@ -872,6 +874,14 @@ async def convert(self, ctx: Context, argument: str) -> discord.PartialEmoji:
id=emoji_id,
)

if argument in EMOJIS_MAP.values():
return discord.PartialEmoji.with_state(
ctx.bot._connection,
animated=False,
name=argument,
id=None,
)

raise PartialEmojiConversionFailure(argument)


Expand Down Expand Up @@ -1094,7 +1104,11 @@ def get_converter(param: inspect.Parameter) -> Any:


def is_generic_type(tp: Any, *, _GenericAlias: type = _GenericAlias) -> bool:
return isinstance(tp, type) and issubclass(tp, Generic) or isinstance(tp, _GenericAlias) # type: ignore
return (
isinstance(tp, type)
and issubclass(tp, Generic)
or isinstance(tp, _GenericAlias)
) # type: ignore


CONVERTER_MAPPING: dict[type[Any], Any] = {
Expand Down
Loading