mirror of
https://github.com/Mayuri-Chan/pyrofork.git
synced 2025-12-29 12:04:51 +00:00
pyrofork: update StarGift type to new layer
Signed-off-by: Yasir Aris <git@yasir.id>
This commit is contained in:
parent
e67a016828
commit
8e7e5fb9ff
16 changed files with 728 additions and 49 deletions
|
|
@ -365,6 +365,8 @@ def pyrogram_api():
|
||||||
send_payment_form
|
send_payment_form
|
||||||
send_star_gift
|
send_star_gift
|
||||||
show_star_gift
|
show_star_gift
|
||||||
|
transfer_star_gift
|
||||||
|
upgrade_star_gift
|
||||||
""",
|
""",
|
||||||
password="""
|
password="""
|
||||||
Password
|
Password
|
||||||
|
|
@ -562,6 +564,7 @@ def pyrogram_api():
|
||||||
ScreenshotTaken
|
ScreenshotTaken
|
||||||
Wallpaper
|
Wallpaper
|
||||||
WallpaperSettings
|
WallpaperSettings
|
||||||
|
StarGiftAttribute
|
||||||
""",
|
""",
|
||||||
stories="""
|
stories="""
|
||||||
Stories
|
Stories
|
||||||
|
|
|
||||||
|
|
@ -408,4 +408,4 @@ class Dispatcher:
|
||||||
else:
|
else:
|
||||||
await self.client.loop.run_in_executor(
|
await self.client.loop.run_in_executor(
|
||||||
self.client.executor, handler.callback, self.client, *args
|
self.client.executor, handler.callback, self.client, *args
|
||||||
)
|
)
|
||||||
|
|
@ -38,6 +38,7 @@ from .profile_color import ProfileColor
|
||||||
from .reaction_type import ReactionType
|
from .reaction_type import ReactionType
|
||||||
from .reply_color import ReplyColor
|
from .reply_color import ReplyColor
|
||||||
from .sent_code_type import SentCodeType
|
from .sent_code_type import SentCodeType
|
||||||
|
from .star_gift_attribute_type import StarGiftAttributeType
|
||||||
from .stories_privacy_rules import StoriesPrivacyRules
|
from .stories_privacy_rules import StoriesPrivacyRules
|
||||||
from .story_privacy import StoryPrivacy
|
from .story_privacy import StoryPrivacy
|
||||||
from .user_status import UserStatus
|
from .user_status import UserStatus
|
||||||
|
|
@ -64,6 +65,7 @@ __all__ = [
|
||||||
'ReactionType',
|
'ReactionType',
|
||||||
'ReplyColor',
|
'ReplyColor',
|
||||||
'SentCodeType',
|
'SentCodeType',
|
||||||
|
'StarGiftAttributeType',
|
||||||
"StoriesPrivacyRules",
|
"StoriesPrivacyRules",
|
||||||
"StoryPrivacy",
|
"StoryPrivacy",
|
||||||
'UserStatus'
|
'UserStatus'
|
||||||
|
|
|
||||||
33
pyrogram/enums/star_gift_attribute_type.py
Normal file
33
pyrogram/enums/star_gift_attribute_type.py
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
# Pyrogram - Telegram MTProto API Client Library for Python
|
||||||
|
# Copyright (C) 2017-present Dan <https://github.com/delivrance>
|
||||||
|
#
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
from pyrogram import raw
|
||||||
|
from .auto_name import AutoName
|
||||||
|
|
||||||
|
|
||||||
|
class StarGiftAttributeType(AutoName):
|
||||||
|
"""Star gift attribute type enumeration used in :obj:`~pyrogram.types.StarGiftAttribute`."""
|
||||||
|
|
||||||
|
MODEL = raw.types.StarGiftAttributeModel
|
||||||
|
"Model attribute"
|
||||||
|
|
||||||
|
SYMBOL = raw.types.StarGiftAttributePattern
|
||||||
|
"Symbol attribute"
|
||||||
|
|
||||||
|
BACKDROP = raw.types.StarGiftAttributeBackdrop
|
||||||
|
"Backdrop attribute"
|
||||||
|
|
@ -30,6 +30,9 @@ class SearchGlobal:
|
||||||
self: "pyrogram.Client",
|
self: "pyrogram.Client",
|
||||||
query: str = "",
|
query: str = "",
|
||||||
filter: "enums.MessagesFilter" = enums.MessagesFilter.EMPTY,
|
filter: "enums.MessagesFilter" = enums.MessagesFilter.EMPTY,
|
||||||
|
channels_only: Optional[bool] = None,
|
||||||
|
groups_only: Optional[bool] = None,
|
||||||
|
users_only: Optional[bool] = None,
|
||||||
limit: int = 0,
|
limit: int = 0,
|
||||||
) -> Optional[AsyncGenerator["types.Message", None]]:
|
) -> Optional[AsyncGenerator["types.Message", None]]:
|
||||||
"""Search messages globally from all of your chats.
|
"""Search messages globally from all of your chats.
|
||||||
|
|
@ -56,6 +59,15 @@ class SearchGlobal:
|
||||||
Limits the number of messages to be retrieved.
|
Limits the number of messages to be retrieved.
|
||||||
By default, no limit is applied and all messages are returned.
|
By default, no limit is applied and all messages are returned.
|
||||||
|
|
||||||
|
channels_only (``bool``, *optional*):
|
||||||
|
Pass True to search only in channels.
|
||||||
|
|
||||||
|
groups_only (``bool``, *optional*):
|
||||||
|
Pass True to search only in groups.
|
||||||
|
|
||||||
|
users_only (``bool``, *optional*):
|
||||||
|
Pass True to search only in users.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
``Generator``: A generator yielding :obj:`~pyrogram.types.Message` objects.
|
``Generator``: A generator yielding :obj:`~pyrogram.types.Message` objects.
|
||||||
|
|
||||||
|
|
@ -93,6 +105,9 @@ class SearchGlobal:
|
||||||
offset_rate=offset_date,
|
offset_rate=offset_date,
|
||||||
offset_peer=offset_peer,
|
offset_peer=offset_peer,
|
||||||
offset_id=offset_id,
|
offset_id=offset_id,
|
||||||
|
broadcasts_only=channels_only,
|
||||||
|
groups_only=groups_only,
|
||||||
|
users_only=users_only,
|
||||||
limit=limit
|
limit=limit
|
||||||
),
|
),
|
||||||
sleep_threshold=60
|
sleep_threshold=60
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,8 @@
|
||||||
# You should have received a copy of the GNU Lesser General Public License
|
# You should have received a copy of the GNU Lesser General Public License
|
||||||
# along with Pyrofork. If not, see <http://www.gnu.org/licenses/>.
|
# along with Pyrofork. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
import pyrogram
|
import pyrogram
|
||||||
from pyrogram import raw, enums
|
from pyrogram import raw, enums
|
||||||
|
|
||||||
|
|
@ -26,6 +28,9 @@ class SearchGlobalCount:
|
||||||
self: "pyrogram.Client",
|
self: "pyrogram.Client",
|
||||||
query: str = "",
|
query: str = "",
|
||||||
filter: "enums.MessagesFilter" = enums.MessagesFilter.EMPTY,
|
filter: "enums.MessagesFilter" = enums.MessagesFilter.EMPTY,
|
||||||
|
channels_only: Optional[bool] = None,
|
||||||
|
groups_only: Optional[bool] = None,
|
||||||
|
users_only: Optional[bool] = None,
|
||||||
) -> int:
|
) -> int:
|
||||||
"""Get the count of messages resulting from a global search.
|
"""Get the count of messages resulting from a global search.
|
||||||
|
|
||||||
|
|
@ -41,6 +46,15 @@ class SearchGlobalCount:
|
||||||
filter (:obj:`~pyrogram.enums.MessagesFilter`, *optional*):
|
filter (:obj:`~pyrogram.enums.MessagesFilter`, *optional*):
|
||||||
Pass a filter in order to search for specific kind of messages only:
|
Pass a filter in order to search for specific kind of messages only:
|
||||||
|
|
||||||
|
channels_only (``bool``, *optional*):
|
||||||
|
Pass True to search only in channels.
|
||||||
|
|
||||||
|
groups_only (``bool``, *optional*):
|
||||||
|
Pass True to search only in groups.
|
||||||
|
|
||||||
|
users_only (``bool``, *optional*):
|
||||||
|
Pass True to search only in users.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
``int``: On success, the messages count is returned.
|
``int``: On success, the messages count is returned.
|
||||||
"""
|
"""
|
||||||
|
|
@ -53,6 +67,9 @@ class SearchGlobalCount:
|
||||||
offset_rate=0,
|
offset_rate=0,
|
||||||
offset_peer=raw.types.InputPeerEmpty(),
|
offset_peer=raw.types.InputPeerEmpty(),
|
||||||
offset_id=0,
|
offset_id=0,
|
||||||
|
broadcasts_only=channels_only,
|
||||||
|
groups_only=groups_only,
|
||||||
|
users_only=users_only,
|
||||||
limit=1
|
limit=1
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,8 @@ from .send_paid_reaction import SendPaidReaction
|
||||||
from .send_payment_form import SendPaymentForm
|
from .send_payment_form import SendPaymentForm
|
||||||
from .send_star_gift import SendStarGift
|
from .send_star_gift import SendStarGift
|
||||||
from .show_star_gift import ShowStarGift
|
from .show_star_gift import ShowStarGift
|
||||||
|
from .transfer_star_gift import TransferStarGift
|
||||||
|
from .upgrade_star_gift import UpgradeStarGift
|
||||||
|
|
||||||
class Payments(
|
class Payments(
|
||||||
ApplyGiftCode,
|
ApplyGiftCode,
|
||||||
|
|
@ -54,6 +56,8 @@ class Payments(
|
||||||
SendInvoice,
|
SendInvoice,
|
||||||
SendPaymentForm,
|
SendPaymentForm,
|
||||||
SendStarGift,
|
SendStarGift,
|
||||||
ShowStarGift
|
ShowStarGift,
|
||||||
|
TransferStarGift,
|
||||||
|
UpgradeStarGift
|
||||||
):
|
):
|
||||||
pass
|
pass
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,6 @@ from pyrogram import raw
|
||||||
class ConvertStarGift:
|
class ConvertStarGift:
|
||||||
async def convert_star_gift(
|
async def convert_star_gift(
|
||||||
self: "pyrogram.Client",
|
self: "pyrogram.Client",
|
||||||
chat_id: Union[int, str],
|
|
||||||
message_id: int
|
message_id: int
|
||||||
) -> bool:
|
) -> bool:
|
||||||
"""Convert star gift to stars.
|
"""Convert star gift to stars.
|
||||||
|
|
@ -35,11 +34,6 @@ class ConvertStarGift:
|
||||||
.. include:: /_includes/usable-by/users.rst
|
.. include:: /_includes/usable-by/users.rst
|
||||||
|
|
||||||
Parameters:
|
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``):
|
message_id (``int``):
|
||||||
Unique message identifier of star gift.
|
Unique message identifier of star gift.
|
||||||
|
|
||||||
|
|
@ -50,16 +44,10 @@ class ConvertStarGift:
|
||||||
.. code-block:: python
|
.. code-block:: python
|
||||||
|
|
||||||
# Convert gift
|
# Convert gift
|
||||||
app.convert_star_gift(chat_id=chat_id, message_id=123)
|
app.convert_star_gift(message_id=123)
|
||||||
"""
|
"""
|
||||||
peer = await self.resolve_peer(chat_id)
|
|
||||||
|
|
||||||
if not isinstance(peer, (raw.types.InputPeerUser, raw.types.InputPeerSelf)):
|
|
||||||
raise ValueError("chat_id must belong to a user.")
|
|
||||||
|
|
||||||
r = await self.invoke(
|
r = await self.invoke(
|
||||||
raw.functions.payments.ConvertStarGift(
|
raw.functions.payments.ConvertStarGift(
|
||||||
user_id=peer,
|
|
||||||
msg_id=message_id
|
msg_id=message_id
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -17,9 +17,6 @@
|
||||||
# You should have received a copy of the GNU Lesser General Public License
|
# You should have received a copy of the GNU Lesser General Public License
|
||||||
# along with Pyrofork. If not, see <http://www.gnu.org/licenses/>.
|
# along with Pyrofork. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
from typing import Union
|
|
||||||
|
|
||||||
import pyrogram
|
import pyrogram
|
||||||
from pyrogram import raw
|
from pyrogram import raw
|
||||||
|
|
||||||
|
|
@ -27,7 +24,6 @@ from pyrogram import raw
|
||||||
class HideStarGift:
|
class HideStarGift:
|
||||||
async def hide_star_gift(
|
async def hide_star_gift(
|
||||||
self: "pyrogram.Client",
|
self: "pyrogram.Client",
|
||||||
chat_id: Union[int, str],
|
|
||||||
message_id: int
|
message_id: int
|
||||||
) -> bool:
|
) -> bool:
|
||||||
"""Hide the star gift from your profile.
|
"""Hide the star gift from your profile.
|
||||||
|
|
@ -35,11 +31,6 @@ class HideStarGift:
|
||||||
.. include:: /_includes/usable-by/users.rst
|
.. include:: /_includes/usable-by/users.rst
|
||||||
|
|
||||||
Parameters:
|
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``):
|
message_id (``int``):
|
||||||
Unique message identifier of star gift.
|
Unique message identifier of star gift.
|
||||||
|
|
||||||
|
|
@ -50,16 +41,10 @@ class HideStarGift:
|
||||||
.. code-block:: python
|
.. code-block:: python
|
||||||
|
|
||||||
# Hide gift
|
# Hide gift
|
||||||
app.hide_star_gift(chat_id=chat_id, message_id=123)
|
app.hide_star_gift(message_id=123)
|
||||||
"""
|
"""
|
||||||
peer = await self.resolve_peer(chat_id)
|
|
||||||
|
|
||||||
if not isinstance(peer, (raw.types.InputPeerUser, raw.types.InputPeerSelf)):
|
|
||||||
raise ValueError("chat_id must belong to a user.")
|
|
||||||
|
|
||||||
r = await self.invoke(
|
r = await self.invoke(
|
||||||
raw.functions.payments.SaveStarGift(
|
raw.functions.payments.SaveStarGift(
|
||||||
user_id=peer,
|
|
||||||
msg_id=message_id,
|
msg_id=message_id,
|
||||||
unsave=True
|
unsave=True
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -16,9 +16,6 @@
|
||||||
# You should have received a copy of the GNU Lesser General Public License
|
# You should have received a copy of the GNU Lesser General Public License
|
||||||
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
from typing import Union
|
|
||||||
|
|
||||||
import pyrogram
|
import pyrogram
|
||||||
from pyrogram import raw
|
from pyrogram import raw
|
||||||
|
|
||||||
|
|
@ -26,7 +23,6 @@ from pyrogram import raw
|
||||||
class ShowStarGift:
|
class ShowStarGift:
|
||||||
async def show_star_gift(
|
async def show_star_gift(
|
||||||
self: "pyrogram.Client",
|
self: "pyrogram.Client",
|
||||||
chat_id: Union[int, str],
|
|
||||||
message_id: int
|
message_id: int
|
||||||
) -> bool:
|
) -> bool:
|
||||||
"""Display the star gift in your profile.
|
"""Display the star gift in your profile.
|
||||||
|
|
@ -34,11 +30,6 @@ class ShowStarGift:
|
||||||
.. include:: /_includes/usable-by/users.rst
|
.. include:: /_includes/usable-by/users.rst
|
||||||
|
|
||||||
Parameters:
|
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``):
|
message_id (``int``):
|
||||||
Unique message identifier of star gift.
|
Unique message identifier of star gift.
|
||||||
|
|
||||||
|
|
@ -49,16 +40,10 @@ class ShowStarGift:
|
||||||
.. code-block:: python
|
.. code-block:: python
|
||||||
|
|
||||||
# Show gift
|
# Show gift
|
||||||
app.show_star_gift(chat_id=chat_id, message_id=123)
|
app.show_star_gift(message_id=123)
|
||||||
"""
|
"""
|
||||||
peer = await self.resolve_peer(chat_id)
|
|
||||||
|
|
||||||
if not isinstance(peer, (raw.types.InputPeerUser, raw.types.InputPeerSelf)):
|
|
||||||
raise ValueError("chat_id must belong to a user.")
|
|
||||||
|
|
||||||
r = await self.invoke(
|
r = await self.invoke(
|
||||||
raw.functions.payments.SaveStarGift(
|
raw.functions.payments.SaveStarGift(
|
||||||
user_id=peer,
|
|
||||||
msg_id=message_id,
|
msg_id=message_id,
|
||||||
unsave=False
|
unsave=False
|
||||||
)
|
)
|
||||||
|
|
|
||||||
65
pyrogram/methods/payments/transfer_star_gift.py
Normal file
65
pyrogram/methods/payments/transfer_star_gift.py
Normal file
|
|
@ -0,0 +1,65 @@
|
||||||
|
# Pyrogram - Telegram MTProto API Client Library for Python
|
||||||
|
# Copyright (C) 2017-present Dan <https://github.com/delivrance>
|
||||||
|
#
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
from typing import Union
|
||||||
|
|
||||||
|
import pyrogram
|
||||||
|
from pyrogram import raw
|
||||||
|
|
||||||
|
|
||||||
|
class TransferStarGift:
|
||||||
|
async def transfer_star_gift(
|
||||||
|
self: "pyrogram.Client",
|
||||||
|
chat_id: Union[int, str],
|
||||||
|
message_id: int,
|
||||||
|
) -> bool:
|
||||||
|
"""Transfer star gift to another user.
|
||||||
|
|
||||||
|
.. include:: /_includes/usable-by/users.rst
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
chat_id (``int`` | ``str``):
|
||||||
|
Unique identifier (int) or username (str) of the target chat you want to transfer the star gift to.
|
||||||
|
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.transfer_star_gift(chat_id=123, message_id=123)
|
||||||
|
"""
|
||||||
|
peer = await self.resolve_peer(chat_id)
|
||||||
|
|
||||||
|
if not isinstance(peer, (raw.types.InputPeerUser, raw.types.InputPeerSelf)):
|
||||||
|
raise ValueError("chat_id must belong to a user.")
|
||||||
|
|
||||||
|
await self.invoke(
|
||||||
|
raw.functions.payments.TransferStarGift(
|
||||||
|
msg_id=message_id,
|
||||||
|
keep_original_details=keep_details
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
return True # TODO:
|
||||||
55
pyrogram/methods/payments/upgrade_star_gift.py
Normal file
55
pyrogram/methods/payments/upgrade_star_gift.py
Normal file
|
|
@ -0,0 +1,55 @@
|
||||||
|
# Pyrogram - Telegram MTProto API Client Library for Python
|
||||||
|
# Copyright (C) 2017-present Dan <https://github.com/delivrance>
|
||||||
|
#
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
import pyrogram
|
||||||
|
from pyrogram import raw
|
||||||
|
|
||||||
|
|
||||||
|
class UpgradeStarGift:
|
||||||
|
async def upgrade_star_gift(
|
||||||
|
self: "pyrogram.Client",
|
||||||
|
message_id: int,
|
||||||
|
keep_details: Optional[bool] = None
|
||||||
|
) -> bool:
|
||||||
|
"""Upgrade star gift to unique.
|
||||||
|
|
||||||
|
.. include:: /_includes/usable-by/users.rst
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
message_id (``int``):
|
||||||
|
Unique message identifier of star gift.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
``bool``: On success, True is returned.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
# Show gift
|
||||||
|
app.upgrade_star_gift(message_id=123)
|
||||||
|
"""
|
||||||
|
await self.invoke(
|
||||||
|
raw.functions.payments.UpgradeStarGift(
|
||||||
|
msg_id=message_id,
|
||||||
|
keep_original_details=keep_details
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
return True # TODO:
|
||||||
|
|
@ -43,6 +43,8 @@ from .poll_option import PollOption
|
||||||
from .reaction import Reaction
|
from .reaction import Reaction
|
||||||
from .read_participant import ReadParticipant
|
from .read_participant import ReadParticipant
|
||||||
from .screenshot_taken import ScreenshotTaken
|
from .screenshot_taken import ScreenshotTaken
|
||||||
|
from .star_gift_attribute import StarGiftAttribute
|
||||||
|
from .star_gift import StarGift
|
||||||
from .sticker import Sticker
|
from .sticker import Sticker
|
||||||
from .stickerset import StickerSet
|
from .stickerset import StickerSet
|
||||||
from .stories_privacy_rules import StoriesPrivacyRules
|
from .stories_privacy_rules import StoriesPrivacyRules
|
||||||
|
|
@ -115,6 +117,8 @@ __all__ = [
|
||||||
"MessageStory",
|
"MessageStory",
|
||||||
"ReadParticipant",
|
"ReadParticipant",
|
||||||
"ScreenshotTaken",
|
"ScreenshotTaken",
|
||||||
|
"StarGiftAttribute",
|
||||||
|
"StarGift",
|
||||||
"Story",
|
"Story",
|
||||||
"StoryDeleted",
|
"StoryDeleted",
|
||||||
"StorySkipped",
|
"StorySkipped",
|
||||||
|
|
@ -125,4 +129,4 @@ __all__ = [
|
||||||
"Wallpaper",
|
"Wallpaper",
|
||||||
"WallpaperSettings",
|
"WallpaperSettings",
|
||||||
"TranslatedText"
|
"TranslatedText"
|
||||||
]
|
]
|
||||||
|
|
@ -909,7 +909,7 @@ class Message(Object, Update):
|
||||||
elif isinstance(action, raw.types.MessageActionStarGift):
|
elif isinstance(action, raw.types.MessageActionStarGift):
|
||||||
user_gift = await types.UserGift._parse_action(client, message, users)
|
user_gift = await types.UserGift._parse_action(client, message, users)
|
||||||
service_type = enums.MessageServiceType.USER_GIFT
|
service_type = enums.MessageServiceType.USER_GIFT
|
||||||
elif isinstance(action, raw.types.MessageActionStarGift):
|
elif isinstance(action, (raw.types.MessageActionStarGift, raw.types.MessageActionStarGiftUnique)):
|
||||||
star_gift = await types.StarGift._parse_action(client, message, users)
|
star_gift = await types.StarGift._parse_action(client, message, users)
|
||||||
service_type = enums.MessageServiceType.STAR_GIFT
|
service_type = enums.MessageServiceType.STAR_GIFT
|
||||||
elif isinstance(action, raw.types.MessageActionScreenshotTaken):
|
elif isinstance(action, raw.types.MessageActionScreenshotTaken):
|
||||||
|
|
|
||||||
443
pyrogram/types/messages_and_media/star_gift.py
Normal file
443
pyrogram/types/messages_and_media/star_gift.py
Normal file
|
|
@ -0,0 +1,443 @@
|
||||||
|
# Pyrofork - Telegram MTProto API Client Library for Python
|
||||||
|
# Copyright (C) 2017-present Dan <https://github.com/delivrance>
|
||||||
|
# Copyright (C) 2022-present Mayuri-Chan <https://github.com/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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
from datetime import datetime
|
||||||
|
from typing import Optional, List
|
||||||
|
|
||||||
|
import pyrogram
|
||||||
|
from pyrogram import raw
|
||||||
|
from pyrogram import types
|
||||||
|
from pyrogram import utils
|
||||||
|
from ..object import Object
|
||||||
|
|
||||||
|
|
||||||
|
class StarGift(Object):
|
||||||
|
"""A star gift.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
id (``int``):
|
||||||
|
Unique star gift identifier.
|
||||||
|
|
||||||
|
sticker (:obj:`~pyrogram.types.Sticker`, *optional*):
|
||||||
|
Information about the star gift sticker.
|
||||||
|
|
||||||
|
caption (``str``, *optional*):
|
||||||
|
Text message.
|
||||||
|
|
||||||
|
caption_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*):
|
||||||
|
For text messages, special entities like usernames, URLs, bot commands, etc. that appear in the text.
|
||||||
|
|
||||||
|
message_id (``int``, *optional*):
|
||||||
|
Unique message identifier.
|
||||||
|
|
||||||
|
upgrade_message_id (``int``, *optional*):
|
||||||
|
Unique message identifier.
|
||||||
|
For unique gifts only.
|
||||||
|
|
||||||
|
title (``str``, *optional*):
|
||||||
|
Title of the star gift.
|
||||||
|
For unique gifts only.
|
||||||
|
|
||||||
|
number (``int``, *optional*):
|
||||||
|
Collectible number of the star gift.
|
||||||
|
For unique gifts only.
|
||||||
|
|
||||||
|
model (:obj:`~pyrogram.types.StarGiftAttribute`, *optional*):
|
||||||
|
Information about the star gift model.
|
||||||
|
For unique gifts only.
|
||||||
|
|
||||||
|
backdrop (:obj:`~pyrogram.types.StarGiftAttribute`, *optional*):
|
||||||
|
Information about the star gift backdrop.
|
||||||
|
For unique gifts only.
|
||||||
|
|
||||||
|
symbol (:obj:`~pyrogram.types.StarGiftAttribute`, *optional*):
|
||||||
|
Information about the star gift symbol.
|
||||||
|
For unique gifts only.
|
||||||
|
|
||||||
|
date (``datetime``, *optional*):
|
||||||
|
Date when the star gift was received.
|
||||||
|
|
||||||
|
first_sale_date (``datetime``, *optional*):
|
||||||
|
Date when the star gift was first purchased.
|
||||||
|
|
||||||
|
last_sale_date (``datetime``, *optional*):
|
||||||
|
Date when the star gift was last purchased.
|
||||||
|
|
||||||
|
from_user (:obj:`~pyrogram.types.User`, *optional*):
|
||||||
|
User who sent the star gift.
|
||||||
|
|
||||||
|
price (``int``, *optional*):
|
||||||
|
Price of this gift in stars.
|
||||||
|
|
||||||
|
convert_price (``int``, *optional*):
|
||||||
|
The number of stars you get if you convert this gift.
|
||||||
|
|
||||||
|
upgrade_price (``int``, *optional*):
|
||||||
|
The number of stars you need to upgrade this gift.
|
||||||
|
|
||||||
|
transfer_price (``int``, *optional*):
|
||||||
|
The number of stars you need to transfer this gift.
|
||||||
|
|
||||||
|
available_amount (``int``, *optional*):
|
||||||
|
The number of gifts available for purchase.
|
||||||
|
Returned only if is_limited is True.
|
||||||
|
|
||||||
|
total_amount (``int``, *optional*):
|
||||||
|
Total amount of gifts.
|
||||||
|
Returned only if is_limited is True.
|
||||||
|
|
||||||
|
can_upgrade (``bool``, *optional*):
|
||||||
|
True, if the gift can be upgraded.
|
||||||
|
|
||||||
|
can_export_at (``datetime``, *optional*):
|
||||||
|
Date when the gift can be exported via blockchain.
|
||||||
|
|
||||||
|
is_limited (``bool``, *optional*):
|
||||||
|
True, if the number of gifts is limited.
|
||||||
|
|
||||||
|
is_name_hidden (``bool``, *optional*):
|
||||||
|
True, if the sender's name is hidden.
|
||||||
|
|
||||||
|
is_saved (``bool``, *optional*):
|
||||||
|
True, if the star gift is saved in profile.
|
||||||
|
|
||||||
|
is_sold_out (``bool``, *optional*):
|
||||||
|
True, if the star gift is sold out.
|
||||||
|
|
||||||
|
is_converted (``bool``, *optional*):
|
||||||
|
True, if the gift was converted to Telegram Stars.
|
||||||
|
Only for the receiver of the gift.
|
||||||
|
|
||||||
|
is_upgraded (``bool``, *optional*):
|
||||||
|
True, if the gift was upgraded.
|
||||||
|
|
||||||
|
is_refunded (``bool``, *optional*):
|
||||||
|
True, if the gift was refunded.
|
||||||
|
|
||||||
|
is_transferred (``bool``, *optional*):
|
||||||
|
True, if the gift was transferred.
|
||||||
|
|
||||||
|
is_unique (``bool``, *optional*):
|
||||||
|
True, if the gift is unique.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
*,
|
||||||
|
client: "pyrogram.Client" = None,
|
||||||
|
id: int,
|
||||||
|
sticker: "types.Sticker" = None,
|
||||||
|
caption: Optional[str] = None,
|
||||||
|
caption_entities: List["types.MessageEntity"] = None,
|
||||||
|
message_id: Optional[int] = None,
|
||||||
|
date: Optional[datetime] = None,
|
||||||
|
first_sale_date: Optional[datetime] = None,
|
||||||
|
last_sale_date: Optional[datetime] = None,
|
||||||
|
from_user: Optional["types.User"] = None,
|
||||||
|
price: Optional[int] = None,
|
||||||
|
convert_price: Optional[int] = None,
|
||||||
|
upgrade_price: Optional[int] = None,
|
||||||
|
transfer_price: Optional[int] = None,
|
||||||
|
upgrade_message_id: Optional[int] = None,
|
||||||
|
title: Optional[str] = None,
|
||||||
|
number: Optional[int] = None,
|
||||||
|
model: Optional["types.StarGiftAttribute"] = None,
|
||||||
|
backdrop: Optional["types.StarGiftAttribute"] = None,
|
||||||
|
symbol: Optional["types.StarGiftAttribute"] = None,
|
||||||
|
available_amount: Optional[int] = None,
|
||||||
|
total_amount: Optional[int] = None,
|
||||||
|
can_upgrade: Optional[bool] = None,
|
||||||
|
can_export_at: Optional[datetime] = None,
|
||||||
|
is_limited: Optional[bool] = None,
|
||||||
|
is_name_hidden: Optional[bool] = None,
|
||||||
|
is_saved: Optional[bool] = None,
|
||||||
|
is_sold_out: Optional[bool] = None,
|
||||||
|
is_converted: Optional[bool] = None,
|
||||||
|
is_upgraded: Optional[bool] = None,
|
||||||
|
is_refunded: Optional[bool] = None,
|
||||||
|
is_transferred: Optional[bool] = None,
|
||||||
|
is_unique: Optional[bool] = None
|
||||||
|
):
|
||||||
|
super().__init__(client)
|
||||||
|
|
||||||
|
self.id = id
|
||||||
|
self.sticker = sticker
|
||||||
|
self.caption = caption
|
||||||
|
self.caption_entities = caption_entities
|
||||||
|
self.message_id = message_id
|
||||||
|
self.date = date
|
||||||
|
self.first_sale_date = first_sale_date
|
||||||
|
self.last_sale_date = last_sale_date
|
||||||
|
self.from_user = from_user
|
||||||
|
self.price = price
|
||||||
|
self.convert_price = convert_price
|
||||||
|
self.upgrade_price = upgrade_price
|
||||||
|
self.transfer_price = transfer_price
|
||||||
|
self.upgrade_message_id = upgrade_message_id
|
||||||
|
self.title = title
|
||||||
|
self.number = number
|
||||||
|
self.model = model
|
||||||
|
self.backdrop = backdrop
|
||||||
|
self.symbol = symbol
|
||||||
|
self.available_amount = available_amount
|
||||||
|
self.total_amount = total_amount
|
||||||
|
self.can_upgrade = can_upgrade
|
||||||
|
self.can_export_at = can_export_at
|
||||||
|
self.is_limited = is_limited
|
||||||
|
self.is_name_hidden = is_name_hidden
|
||||||
|
self.is_saved = is_saved
|
||||||
|
self.is_sold_out = is_sold_out
|
||||||
|
self.is_converted = is_converted
|
||||||
|
self.is_upgraded = is_upgraded
|
||||||
|
self.is_refunded = is_refunded
|
||||||
|
self.is_transferred = is_transferred
|
||||||
|
self.is_unique = is_unique
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
async def _parse(
|
||||||
|
client,
|
||||||
|
star_gift: "raw.types.StarGift",
|
||||||
|
) -> "StarGift":
|
||||||
|
doc = star_gift.sticker
|
||||||
|
attributes = {type(i): i for i in doc.attributes}
|
||||||
|
|
||||||
|
return StarGift(
|
||||||
|
id=star_gift.id,
|
||||||
|
sticker=await types.Sticker._parse(client, doc, attributes),
|
||||||
|
price=star_gift.stars,
|
||||||
|
convert_price=star_gift.convert_stars,
|
||||||
|
available_amount=getattr(star_gift, "availability_remains", None),
|
||||||
|
total_amount=getattr(star_gift, "availability_total", None),
|
||||||
|
is_limited=getattr(star_gift, "limited", None),
|
||||||
|
first_sale_date=utils.timestamp_to_datetime(getattr(star_gift, "first_sale_date", None)),
|
||||||
|
last_sale_date=utils.timestamp_to_datetime(getattr(star_gift, "last_sale_date", None)),
|
||||||
|
is_sold_out=getattr(star_gift, "sold_out", None),
|
||||||
|
client=client
|
||||||
|
)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
async def _parse_user_star_gift(
|
||||||
|
client,
|
||||||
|
user_star_gift: "raw.types.UserStarGift",
|
||||||
|
users: dict
|
||||||
|
) -> "StarGift":
|
||||||
|
caption, caption_entities = (
|
||||||
|
utils.parse_text_with_entities(
|
||||||
|
client, getattr(user_star_gift, "message", None), users
|
||||||
|
)
|
||||||
|
).values()
|
||||||
|
|
||||||
|
|
||||||
|
if isinstance(user_star_gift.gift, raw.types.StarGift):
|
||||||
|
doc = user_star_gift.gift.sticker
|
||||||
|
attributes = {type(i): i for i in doc.attributes}
|
||||||
|
|
||||||
|
return StarGift(
|
||||||
|
id=user_star_gift.gift.id,
|
||||||
|
sticker=await types.Sticker._parse(client, doc, attributes),
|
||||||
|
price=user_star_gift.gift.stars,
|
||||||
|
convert_price=user_star_gift.gift.convert_stars,
|
||||||
|
available_amount=getattr(user_star_gift.gift, "availability_remains", None),
|
||||||
|
total_amount=getattr(user_star_gift.gift, "availability_total", None),
|
||||||
|
date=utils.timestamp_to_datetime(user_star_gift.date),
|
||||||
|
is_limited=getattr(user_star_gift.gift, "limited", None),
|
||||||
|
is_name_hidden=getattr(user_star_gift, "name_hidden", None),
|
||||||
|
is_saved=not user_star_gift.unsaved if getattr(user_star_gift, "unsaved", None) else None,
|
||||||
|
is_refunded=getattr(user_star_gift, "refunded", None),
|
||||||
|
can_upgrade=getattr(user_star_gift, "can_upgrade", None),
|
||||||
|
can_export_at=utils.timestamp_to_datetime(getattr(user_star_gift, "can_export_at", None)),
|
||||||
|
upgrade_price=getattr(user_star_gift, "upgrade_stars", None),
|
||||||
|
transfer_price=getattr(user_star_gift, "transfer_stars", None),
|
||||||
|
from_user=types.User._parse(client, users.get(user_star_gift.from_id)) if getattr(user_star_gift, "from_id", None) else None,
|
||||||
|
message_id=getattr(user_star_gift, "msg_id", None),
|
||||||
|
caption=caption,
|
||||||
|
caption_entities=caption_entities,
|
||||||
|
client=client
|
||||||
|
)
|
||||||
|
elif isinstance(user_star_gift.gift, raw.types.StarGiftUnique):
|
||||||
|
gift = user_star_gift.gift
|
||||||
|
attributes = {type(i): i for i in gift.attributes}
|
||||||
|
|
||||||
|
model = None
|
||||||
|
backdrop = None
|
||||||
|
symbol = None
|
||||||
|
|
||||||
|
for key, value in attributes.items():
|
||||||
|
if isinstance(key, raw.types.StarGiftAttributeModel):
|
||||||
|
model = await types.StarGiftAttribute._parse(client, value)
|
||||||
|
elif isinstance(key, raw.types.StarGiftAttributeBackdrop):
|
||||||
|
backdrop = await types.StarGiftAttribute._parse(client, value)
|
||||||
|
elif isinstance(key, raw.types.StarGiftAttributePattern):
|
||||||
|
symbol = await types.StarGiftAttribute._parse(client, value)
|
||||||
|
|
||||||
|
return StarGift(
|
||||||
|
id=user_star_gift.gift.id,
|
||||||
|
available_amount=getattr(user_star_gift.gift, "availability_issued", None),
|
||||||
|
total_amount=getattr(user_star_gift.gift, "availability_total", None),
|
||||||
|
date=utils.timestamp_to_datetime(user_star_gift.date),
|
||||||
|
model=model,
|
||||||
|
backdrop=backdrop,
|
||||||
|
symbol=symbol,
|
||||||
|
title=gift.title,
|
||||||
|
number=gift.num,
|
||||||
|
is_unique=True,
|
||||||
|
is_name_hidden=getattr(user_star_gift, "name_hidden", None),
|
||||||
|
is_saved=not user_star_gift.unsaved if getattr(user_star_gift, "unsaved", None) else None,
|
||||||
|
is_refunded=getattr(user_star_gift, "refunded", None),
|
||||||
|
can_upgrade=getattr(user_star_gift, "can_upgrade", None),
|
||||||
|
can_export_at=utils.timestamp_to_datetime(getattr(user_star_gift, "can_export_at", None)),
|
||||||
|
upgrade_price=getattr(user_star_gift, "upgrade_stars", None),
|
||||||
|
transfer_price=getattr(user_star_gift, "transfer_stars", None),
|
||||||
|
from_user=types.User._parse(client, users.get(user_star_gift.from_id)) if getattr(user_star_gift, "from_id", None) else None,
|
||||||
|
message_id=getattr(user_star_gift, "msg_id", None),
|
||||||
|
caption=caption,
|
||||||
|
caption_entities=caption_entities,
|
||||||
|
client=client
|
||||||
|
)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
async def _parse_action(
|
||||||
|
client,
|
||||||
|
message: "raw.base.Message",
|
||||||
|
users: dict
|
||||||
|
) -> "StarGift":
|
||||||
|
action = message.action # type: raw.types.MessageActionStarGift
|
||||||
|
|
||||||
|
caption, caption_entities = (
|
||||||
|
utils.parse_text_with_entities(
|
||||||
|
client, getattr(action, "message", None), users
|
||||||
|
)
|
||||||
|
).values()
|
||||||
|
|
||||||
|
if isinstance(action, raw.types.MessageActionStarGift):
|
||||||
|
doc = action.gift.sticker
|
||||||
|
attributes = {type(i): i for i in doc.attributes}
|
||||||
|
|
||||||
|
return StarGift(
|
||||||
|
id=action.gift.id,
|
||||||
|
sticker=await types.Sticker._parse(client, doc, attributes),
|
||||||
|
price=action.gift.stars,
|
||||||
|
convert_price=action.gift.convert_stars,
|
||||||
|
available_amount=getattr(action.gift, "availability_remains", None),
|
||||||
|
total_amount=getattr(action.gift, "availability_total", None),
|
||||||
|
date=utils.timestamp_to_datetime(message.date),
|
||||||
|
can_upgrade=getattr(action, "can_upgrade", None),
|
||||||
|
is_limited=getattr(action.gift, "limited", None),
|
||||||
|
is_name_hidden=getattr(action, "name_hidden", None),
|
||||||
|
is_saved=getattr(action, "saved", None),
|
||||||
|
is_converted=getattr(action, "converted", None),
|
||||||
|
is_upgraded=getattr(action, "upgraded", None),
|
||||||
|
is_refunded=getattr(action, "refunded", None),
|
||||||
|
from_user=types.User._parse(client, users.get(utils.get_raw_peer_id(message.peer_id))),
|
||||||
|
message_id=message.id,
|
||||||
|
upgrade_message_id=getattr(action, "upgrade_msg_id", None),
|
||||||
|
upgrade_price=getattr(action, "upgrade_stars", None),
|
||||||
|
caption=caption,
|
||||||
|
caption_entities=caption_entities,
|
||||||
|
client=client
|
||||||
|
)
|
||||||
|
elif isinstance(action, raw.types.MessageActionStarGiftUnique):
|
||||||
|
gift = action.gift
|
||||||
|
attributes = {type(i): i for i in gift.attributes}
|
||||||
|
|
||||||
|
model = None
|
||||||
|
backdrop = None
|
||||||
|
symbol = None
|
||||||
|
|
||||||
|
for key, value in attributes.items():
|
||||||
|
if isinstance(key, raw.types.StarGiftAttributeModel):
|
||||||
|
model = await types.StarGiftAttribute._parse(client, value)
|
||||||
|
elif isinstance(key, raw.types.StarGiftAttributeBackdrop):
|
||||||
|
backdrop = await types.StarGiftAttribute._parse(client, value)
|
||||||
|
elif isinstance(key, raw.types.StarGiftAttributePattern):
|
||||||
|
symbol = await types.StarGiftAttribute._parse(client, value)
|
||||||
|
|
||||||
|
return StarGift(
|
||||||
|
id=action.gift.id,
|
||||||
|
available_amount=getattr(action.gift, "availability_issued", None),
|
||||||
|
total_amount=getattr(action.gift, "availability_total", None),
|
||||||
|
date=utils.timestamp_to_datetime(message.date),
|
||||||
|
is_unique=True,
|
||||||
|
from_user=types.User._parse(client, users.get(utils.get_raw_peer_id(message.peer_id))),
|
||||||
|
message_id=message.id,
|
||||||
|
caption=caption,
|
||||||
|
caption_entities=caption_entities,
|
||||||
|
title=gift.title,
|
||||||
|
number=gift.num,
|
||||||
|
model=model,
|
||||||
|
backdrop=backdrop,
|
||||||
|
symbol=symbol,
|
||||||
|
is_upgraded=getattr(action, "upgrade", None),
|
||||||
|
is_transferred=getattr(action, "transferred", None),
|
||||||
|
is_saved=getattr(action, "saved", None),
|
||||||
|
is_refunded=getattr(action, "refunded", None),
|
||||||
|
can_export_at=utils.timestamp_to_datetime(getattr(action, "can_export_at", None)),
|
||||||
|
transfer_price=getattr(action, "transfer_stars", None),
|
||||||
|
client=client
|
||||||
|
)
|
||||||
|
|
||||||
|
async def show(self) -> bool:
|
||||||
|
"""Bound method *show* of :obj:`~pyrogram.types.StarGift`.
|
||||||
|
|
||||||
|
Use as a shortcut for:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
await client.show_star_gift(
|
||||||
|
chat_id=message.chat.id,
|
||||||
|
message_id=message_id
|
||||||
|
)
|
||||||
|
|
||||||
|
Example:
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
await star_gift.show()
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
``bool``: On success, True is returned.
|
||||||
|
"""
|
||||||
|
return await self._client.show_star_gift(
|
||||||
|
chat_id=self.from_user.id,
|
||||||
|
message_id=self.message_id
|
||||||
|
)
|
||||||
|
|
||||||
|
async def hide(self) -> bool:
|
||||||
|
"""Bound method *hide* of :obj:`~pyrogram.types.StarGift`.
|
||||||
|
|
||||||
|
Use as a shortcut for:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
await client.hide_star_gift(
|
||||||
|
chat_id=message.chat.id,
|
||||||
|
message_id=message_id
|
||||||
|
)
|
||||||
|
|
||||||
|
Example:
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
await star_gift.hide()
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
``bool``: On success, True is returned.
|
||||||
|
"""
|
||||||
|
return await self._client.hide_star_gift(
|
||||||
|
chat_id=self.from_user.id,
|
||||||
|
message_id=self.message_id
|
||||||
|
)
|
||||||
80
pyrogram/types/messages_and_media/star_gift_attribute.py
Normal file
80
pyrogram/types/messages_and_media/star_gift_attribute.py
Normal file
|
|
@ -0,0 +1,80 @@
|
||||||
|
# Pyrofork - Telegram MTProto API Client Library for Python
|
||||||
|
# Copyright (C) 2017-present Dan <https://github.com/delivrance>
|
||||||
|
# Copyright (C) 2022-present Mayuri-Chan <https://github.com/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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
from datetime import datetime
|
||||||
|
from typing import Optional, List
|
||||||
|
|
||||||
|
import pyrogram
|
||||||
|
from pyrogram import raw
|
||||||
|
from pyrogram import types
|
||||||
|
from pyrogram import enums
|
||||||
|
from pyrogram import utils
|
||||||
|
from ..object import Object
|
||||||
|
|
||||||
|
|
||||||
|
class StarGiftAttribute(Object):
|
||||||
|
"""Contains information about a star gift attribute.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
name (``str``):
|
||||||
|
Name of the attribute.
|
||||||
|
|
||||||
|
type (:obj:`~pyrogram.enums.StarGiftAttributeType`):
|
||||||
|
Type of the attribute.
|
||||||
|
|
||||||
|
rarity (``int``):
|
||||||
|
Rarity of the attribute in permilles.
|
||||||
|
For example, 15 means 1.5%. So only 1.5% of such collectibles have this attribute.
|
||||||
|
|
||||||
|
sticker (:obj:`~pyrogram.types.Sticker`):
|
||||||
|
Information about the sticker.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
*,
|
||||||
|
client: "pyrogram.Client" = None,
|
||||||
|
name: str,
|
||||||
|
type: "enums.StarGiftAttributeType",
|
||||||
|
rarity: int,
|
||||||
|
sticker: "types.Sticker",
|
||||||
|
):
|
||||||
|
super().__init__(client)
|
||||||
|
|
||||||
|
self.name = name
|
||||||
|
self.type = type
|
||||||
|
self.rarity = rarity
|
||||||
|
self.sticker = sticker
|
||||||
|
# TODO: Add support for raw.types.StarGiftAttributeOriginalDetails
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
async def _parse(
|
||||||
|
client,
|
||||||
|
attr: "raw.base.StarGiftAttribute",
|
||||||
|
) -> "StarGiftAttribute":
|
||||||
|
doc = attr.document
|
||||||
|
attributes = {type(i): i for i in doc.attributes}
|
||||||
|
|
||||||
|
return StarGiftAttribute(
|
||||||
|
name=attr.name,
|
||||||
|
type=enums.StarGiftAttributeType(type(attr)),
|
||||||
|
sticker=await types.Sticker._parse(client, doc, attributes),
|
||||||
|
rarity=attr.rarity_permille,
|
||||||
|
client=client
|
||||||
|
)
|
||||||
Loading…
Reference in a new issue