From 1fd0d5ac636a25a1b6a10320c434819804145786 Mon Sep 17 00:00:00 2001 From: KurimuzonAkuma Date: Wed, 29 Jan 2025 10:37:09 +0300 Subject: [PATCH] Add wear bound method to Gift class --- compiler/docs/compiler.py | 1 + pyrogram/methods/users/set_emoji_status.py | 4 +++ pyrogram/types/messages_and_media/gift.py | 27 +++++++++++++++++++ pyrogram/types/user_and_chats/emoji_status.py | 18 ++++++------- 4 files changed, 41 insertions(+), 9 deletions(-) diff --git a/compiler/docs/compiler.py b/compiler/docs/compiler.py index a5e44b8560..73a629a432 100644 --- a/compiler/docs/compiler.py +++ b/compiler/docs/compiler.py @@ -857,6 +857,7 @@ def get_title_list(s: str) -> list: Gift.convert Gift.upgrade Gift.transfer + Gift.wear """, animation=""" Animation diff --git a/pyrogram/methods/users/set_emoji_status.py b/pyrogram/methods/users/set_emoji_status.py index 2d8c77cc02..01e9a21d64 100644 --- a/pyrogram/methods/users/set_emoji_status.py +++ b/pyrogram/methods/users/set_emoji_status.py @@ -43,7 +43,11 @@ async def set_emoji_status( from pyrogram import types + # Set emoji status await app.set_emoji_status(types.EmojiStatus(custom_emoji_id=1234567890987654321)) + + # Set collectible emoji status + await app.set_emoji_status(types.EmojiStatus(collectible_id=1234567890987654321)) """ await self.invoke( raw.functions.account.UpdateEmojiStatus( diff --git a/pyrogram/types/messages_and_media/gift.py b/pyrogram/types/messages_and_media/gift.py index cad78b070e..a9669e8ef1 100644 --- a/pyrogram/types/messages_and_media/gift.py +++ b/pyrogram/types/messages_and_media/gift.py @@ -491,3 +491,30 @@ async def transfer(self, to_chat_id: Union[int, str]) -> bool: message_id=self.message_id, to_chat_id=to_chat_id ) + + async def wear(self) -> bool: + """Bound method *wear* of :obj:`~pyrogram.types.Gift`. + + .. note:: + + This works for upgraded gifts only. + + Use as a shortcut for: + + .. code-block:: python + + await client.set_emoji_status(types.EmojiStatus(gift_id=123)) + + Example: + .. code-block:: python + + await star_gift.wear() + + Returns: + ``bool``: On success, True is returned. + """ + return self._client.set_emoji_status( + emoji_status=types.EmojiStatus( + gift_id=self.id + ) + ) diff --git a/pyrogram/types/user_and_chats/emoji_status.py b/pyrogram/types/user_and_chats/emoji_status.py index 47e8090e1c..2205ef3b92 100644 --- a/pyrogram/types/user_and_chats/emoji_status.py +++ b/pyrogram/types/user_and_chats/emoji_status.py @@ -29,7 +29,7 @@ class EmojiStatus(Object): """A user emoji status. Parameters: - custom_emoji_id (``int``): + custom_emoji_id (``int``, *optional*): Custom emoji id. until_date (:py:obj:`~datetime.datetime`, *optional*): @@ -38,8 +38,8 @@ class EmojiStatus(Object): title (``str``, *optional*): Title of the collectible. - collectible_id (``int``, *optional*): - Collectible id. + gift_id (``int``, *optional*): + Gift collectible id. name (``str``, *optional*): Name of the collectible. @@ -64,10 +64,10 @@ def __init__( self, *, client: "pyrogram.Client" = None, - custom_emoji_id: int, + custom_emoji_id: Optional[int] = None, + gift_id: Optional[int] = None, until_date: Optional[datetime] = None, title: Optional[str] = None, - collectible_id: Optional[int] = None, name: Optional[str] = None, pattern_custom_emoji_id: Optional[int] = None, center_color: Optional[int] = None, @@ -78,9 +78,9 @@ def __init__( super().__init__(client) self.custom_emoji_id = custom_emoji_id + self.gift_id = gift_id self.until_date = until_date self.title = title - self.collectible_id = collectible_id self.name = name self.pattern_custom_emoji_id = pattern_custom_emoji_id self.center_color = center_color @@ -101,9 +101,9 @@ def _parse(client, emoji_status: "raw.base.EmojiStatus") -> Optional["EmojiStatu return EmojiStatus( client=client, custom_emoji_id=emoji_status.document_id, + gift_id=emoji_status.collectible_id, until_date=utils.timestamp_to_datetime(getattr(emoji_status, "until", None)), title=emoji_status.title, - collectible_id=emoji_status.collectible_id, name=emoji_status.slug, pattern_custom_emoji_id=emoji_status.pattern_document_id, center_color=emoji_status.center_color, @@ -115,9 +115,9 @@ def _parse(client, emoji_status: "raw.base.EmojiStatus") -> Optional["EmojiStatu return None def write(self): - if self.collectible_id: + if self.gift_id: return raw.types.InputEmojiStatusCollectible( - collectible_id=self.collectible_id, + collectible_id=self.gift_id, until=utils.datetime_to_timestamp(self.until_date) )