From e9eaa486501b5cf4785ad3ef5756d8722bfdbb77 Mon Sep 17 00:00:00 2001 From: KurimuzonAkuma Date: Sun, 2 Feb 2025 16:24:46 +0700 Subject: [PATCH] Pyrofork: Add get_upgraded_gift method Signed-off-by: Yasir --- compiler/docs/compiler.py | 1 + pyrogram/methods/payments/__init__.py | 2 + .../methods/payments/get_upgraded_gift.py | 67 +++++++++++++++++++ 3 files changed, 70 insertions(+) create mode 100644 pyrogram/methods/payments/get_upgraded_gift.py diff --git a/compiler/docs/compiler.py b/compiler/docs/compiler.py index ede69577..04d72242 100644 --- a/compiler/docs/compiler.py +++ b/compiler/docs/compiler.py @@ -357,6 +357,7 @@ def pyrogram_api(): get_stars_transactions get_stars_transactions_by_id get_available_gifts + get_upgraded_gift get_user_gifts_count get_user_gifts hide_gift diff --git a/pyrogram/methods/payments/__init__.py b/pyrogram/methods/payments/__init__.py index fd0894dc..b9cc0468 100644 --- a/pyrogram/methods/payments/__init__.py +++ b/pyrogram/methods/payments/__init__.py @@ -23,6 +23,7 @@ from .convert_gift import ConvertGift from .create_invoice_link import CreateInvoiceLink from .get_payment_form import GetPaymentForm from .get_stars_balance import GetStarsBalance +from .get_upgraded_gift import GetUpgradedGift from .get_available_gifts import GetAvailableGifts from .get_stars_transactions import GetStarsTransactions from .get_stars_transactions_by_id import GetStarsTransactionsById @@ -46,6 +47,7 @@ class Payments( CreateInvoiceLink, GetPaymentForm, GetStarsBalance, + GetUpgradedGift, GetAvailableGifts, GetStarsTransactions, GetStarsTransactionsById, diff --git a/pyrogram/methods/payments/get_upgraded_gift.py b/pyrogram/methods/payments/get_upgraded_gift.py new file mode 100644 index 00000000..613be8dd --- /dev/null +++ b/pyrogram/methods/payments/get_upgraded_gift.py @@ -0,0 +1,67 @@ +# Pyrogram - Telegram MTProto API Client Library for Python +# Copyright (C) 2017-present Dan +# +# This file is part of Pyrogram. +# +# Pyrogram is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Pyrogram is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Pyrogram. If not, see . + +import re + +import pyrogram +from pyrogram import raw, types + + +class GetUpgradedGift: + async def get_upgraded_gift( + self: "pyrogram.Client", + link: str + ): + """Get information about upgraded gift. + + .. include:: /_includes/usable-by/users.rst + + Parameters: + link (``str``): + The gift code link or slug itself. + + Returns: + :obj:`~pyrogram.types.Gift`: Information about the gift is returned. + + Example: + .. code-block:: python + + # Get information about upgraded gift by link + gift = await client.get_upgraded_gift("https://t.me/nft/SignetRing-903") + + # Get information about upgraded gift by slug + gift = await client.get_upgraded_gift("SignetRing-903") + """ + match = re.match(r"^(?:https?://)?(?:www\.)?(?:t(?:elegram)?\.(?:org|me|dog)/(?:nft/|\+))([\w-]+)$", link) + + if match: + slug = match.group(1) + elif isinstance(link, str): + slug = link + else: + raise ValueError("Invalid gift link") + + r = await self.invoke( + raw.functions.payments.GetUniqueStarGift( + slug=slug.replace(" ", "") + ) + ) + + users = {i.id: i for i in r.users} + + return await types.Gift._parse_unique(self, r.gift, users)