diff --git a/compiler/docs/compiler.py b/compiler/docs/compiler.py index 7372202b..b12369bf 100644 --- a/compiler/docs/compiler.py +++ b/compiler/docs/compiler.py @@ -354,12 +354,14 @@ def get_title_list(s: str) -> list: get_star_gifts get_stars_transactions get_stars_transactions_by_id + hide_star_gift refund_star_payment send_invoice send_paid_media send_paid_reaction send_payment_form send_star_gift + show_star_gift """, password=""" Password diff --git a/pyrogram/methods/payments/__init__.py b/pyrogram/methods/payments/__init__.py index 8209ddb4..d6b394df 100644 --- a/pyrogram/methods/payments/__init__.py +++ b/pyrogram/methods/payments/__init__.py @@ -29,12 +29,14 @@ from .get_star_gifts import GetStarGifts from .get_stars_transactions import GetStarsTransactions from .get_stars_transactions_by_id import GetStarsTransactionsById +from .hide_star_gift import HideStarGift from .refund_stars_payment import RefundStarPayment from .send_invoice import SendInvoice from .send_paid_media import SendPaidMedia from .send_paid_reaction import SendPaidReaction from .send_payment_form import SendPaymentForm from .send_star_gift import SendStarGift +from .show_star_gift import ShowStarGift class Payments( ApplyGiftCode, @@ -45,11 +47,13 @@ class Payments( GetStarGifts, GetStarsTransactions, GetStarsTransactionsById, + HideStarGift, RefundStarPayment, SendPaidReaction, SendPaidMedia, SendInvoice, SendPaymentForm, - SendStarGift + SendStarGift, + ShowStarGift ): pass diff --git a/pyrogram/methods/payments/get_star_gifts copy.py b/pyrogram/methods/payments/get_star_gifts copy.py new file mode 100644 index 00000000..d5d8da16 --- /dev/null +++ b/pyrogram/methods/payments/get_star_gifts copy.py @@ -0,0 +1,46 @@ +# Pyrofork - Telegram MTProto API Client Library for Python +# Copyright (C) 2017-present Dan +# Copyright (C) 2022-present Mayuri-Chan +# +# This file is part of Pyrofork. +# +# Pyrofork 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. +# +# Pyrofork 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 Pyrofork. If not, see . + +from typing import List + +import pyrogram +from pyrogram import raw, types + + +class GetStarGifts: + async def get_star_gifts( + self: "pyrogram.Client", + ) -> List["types.StarGift"]: + """Get all available star gifts to send. + + .. include:: /_includes/usable-by/users.rst + + Returns: + List of :obj:`~pyrogram.types.StarGift`: On success, a list of star gifts is returned. + + Example: + .. code-block:: python + + app.get_star_gifts() + """ + r = await self.invoke( + raw.functions.payments.GetStarGifts(hash=0) + ) + + return types.List([await types.StarGift._parse(self, gift) for gift in r.gifts]) diff --git a/pyrogram/methods/payments/hide_star_gift.py b/pyrogram/methods/payments/hide_star_gift.py new file mode 100644 index 00000000..61927134 --- /dev/null +++ b/pyrogram/methods/payments/hide_star_gift.py @@ -0,0 +1,72 @@ +# Pyrofork - Telegram MTProto API Client Library for Python +# Copyright (C) 2017-present Dan +# Copyright (C) 2022-present Mayuri-Chan +# +# This file is part of Pyrofork. +# +# Pyrofork 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. +# +# Pyrofork 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 Pyrofork. If not, see . + + +from typing import Union + +import pyrogram +from pyrogram import raw + + +class HideStarGift: + async def hide_star_gift( + self: "pyrogram.Client", + chat_id: Union[int, str], + message_id: int + ) -> bool: + """Hide the star gift from your profile. + + .. include:: /_includes/usable-by/users.rst + + Parameters: + chat_id (``int`` | ``str``): + Unique identifier (int) or username (str) of the target chat. + For your personal cloud (Saved Messages) you can simply use "me" or "self". + For a contact that exists in your Telegram address book you can use his phone number (str). + + message_id (``int``): + Unique message identifier of star gift. + + Returns: + ``bool``: On success, True is returned. + + Example: + .. code-block:: python + + # Hide gift + app.hide_star_gift(chat_id=chat_id, message_id=123) + """ + peer = await self.resolve_peer(chat_id) + + if isinstance(peer, raw.types.InputPeerUser): + peer = raw.types.InputUser(user_id=peer.user_id, access_hash=peer.access_hash) + elif isinstance(peer, raw.types.InputPeerSelf): + peer = raw.types.InputUserSelf() + else: + raise ValueError("chat_id must belong to a user.") + + r = await self.invoke( + raw.functions.payments.SaveStarGift( + user_id=peer, + msg_id=message_id, + unsave=True + ) + ) + + return r diff --git a/pyrogram/methods/payments/show_star_gift.py b/pyrogram/methods/payments/show_star_gift.py new file mode 100644 index 00000000..3c187a87 --- /dev/null +++ b/pyrogram/methods/payments/show_star_gift.py @@ -0,0 +1,71 @@ +# 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 . + + +from typing import Union + +import pyrogram +from pyrogram import raw + + +class ShowStarGift: + async def show_star_gift( + self: "pyrogram.Client", + chat_id: Union[int, str], + message_id: int + ) -> bool: + """Display the star gift in your profile. + + .. include:: /_includes/usable-by/users.rst + + Parameters: + chat_id (``int`` | ``str``): + Unique identifier (int) or username (str) of the target chat. + For your personal cloud (Saved Messages) you can simply use "me" or "self". + For a contact that exists in your Telegram address book you can use his phone number (str). + + message_id (``int``): + Unique message identifier of star gift. + + Returns: + ``bool``: On success, True is returned. + + Example: + .. code-block:: python + + # Show gift + app.show_star_gift(chat_id=chat_id, message_id=123) + """ + peer = await self.resolve_peer(chat_id) + + if isinstance(peer, raw.types.InputPeerUser): + peer = raw.types.InputUser(user_id=peer.user_id, access_hash=peer.access_hash) + elif isinstance(peer, raw.types.InputPeerSelf): + peer = raw.types.InputUserSelf() + else: + raise ValueError("chat_id must belong to a user.") + + r = await self.invoke( + raw.functions.payments.SaveStarGift( + user_id=peer, + msg_id=message_id, + unsave=False + ) + ) + + return r