Add client parameter to PartialEmoji.from_str

Fix #10407
This commit is contained in:
Rapptz
2026-02-24 09:47:10 -05:00
parent ef1cb6a089
commit 79b709290c

View File

@@ -39,6 +39,7 @@ __all__ = (
if TYPE_CHECKING: if TYPE_CHECKING:
from typing_extensions import Self from typing_extensions import Self
from .client import Client
from .state import ConnectionState from .state import ConnectionState
from datetime import datetime from datetime import datetime
from .types.emoji import Emoji as EmojiPayload, PartialEmoji as PartialEmojiPayload from .types.emoji import Emoji as EmojiPayload, PartialEmoji as PartialEmojiPayload
@@ -114,7 +115,7 @@ class PartialEmoji(_EmojiTag, AssetMixin):
) )
@classmethod @classmethod
def from_str(cls, value: str) -> Self: def from_str(cls, value: str, *, client: Client = utils.MISSING) -> Self:
"""Converts a Discord string representation of an emoji to a :class:`PartialEmoji`. """Converts a Discord string representation of an emoji to a :class:`PartialEmoji`.
The formats accepted are: The formats accepted are:
@@ -132,6 +133,11 @@ class PartialEmoji(_EmojiTag, AssetMixin):
------------ ------------
value: :class:`str` value: :class:`str`
The string representation of an emoji. The string representation of an emoji.
client: :class:`Client`
The client to initialise this emoji with. This allows it to
attach the client's internal state.
.. versionadded:: 2.7
Returns Returns
-------- --------
@@ -144,8 +150,12 @@ class PartialEmoji(_EmojiTag, AssetMixin):
animated = bool(groups['animated']) animated = bool(groups['animated'])
emoji_id = int(groups['id']) emoji_id = int(groups['id'])
name = groups['name'] name = groups['name']
if client is not utils.MISSING:
return cls.with_state(name=name, animated=animated, id=emoji_id, state=client._connection)
return cls(name=name, animated=animated, id=emoji_id) return cls(name=name, animated=animated, id=emoji_id)
if client is not utils.MISSING:
return cls.with_state(name=value, animated=False, id=None, state=client._connection)
return cls(name=value, id=None, animated=False) return cls(name=value, id=None, animated=False)
def to_dict(self) -> EmojiPayload: def to_dict(self) -> EmojiPayload: