pyrofork: Refactor GiveawayResult

Signed-off-by: wulan17 <wulan17@nusantararom.org>
This commit is contained in:
wulan17 2025-03-26 22:59:03 +07:00
parent 776ee3afb3
commit e5b01eb04b
No known key found for this signature in database
GPG key ID: 318CD6CD3A6AC0A5
3 changed files with 9 additions and 12 deletions

View file

@ -221,7 +221,7 @@ class ExternalReplyInfo(Object):
giveaway = types.Giveaway._parse(client, reply, chats) giveaway = types.Giveaway._parse(client, reply, chats)
media_type = enums.MessageMediaType.GIVEAWAY media_type = enums.MessageMediaType.GIVEAWAY
elif isinstance(media, raw.types.MessageMediaGiveawayResults): elif isinstance(media, raw.types.MessageMediaGiveawayResults):
giveaway_result = await types.GiveawayResult._parse(client, media) giveaway_result = await types.GiveawayResult._parse(client, media, users, chats)
media_type = enums.MessageMediaType.GIVEAWAY_RESULT media_type = enums.MessageMediaType.GIVEAWAY_RESULT
elif isinstance(media, raw.types.MessageMediaInvoice): elif isinstance(media, raw.types.MessageMediaInvoice):
invoice = types.Invoice._parse(media) invoice = types.Invoice._parse(media)

View file

@ -21,7 +21,7 @@ import pyrogram
from datetime import datetime from datetime import datetime
from pyrogram import raw, types, utils from pyrogram import raw, types, utils
from ..object import Object from ..object import Object
from typing import List, Union from typing import List, Union, Dict
class GiveawayResult(Object): class GiveawayResult(Object):
@ -104,7 +104,9 @@ class GiveawayResult(Object):
"raw.types.MessageActionGiveawayResults", "raw.types.MessageActionGiveawayResults",
"raw.types.MessageMediaGiveawayResults" "raw.types.MessageMediaGiveawayResults"
], ],
hide_winners: bool = False hide_winners: bool = False,
users: Dict[int, "raw.types.User"] = None,
chats: Dict[int, "raw.types.Chat"] = None
) -> "GiveawayResult": ) -> "GiveawayResult":
chat = None chat = None
giveaway_message = None giveaway_message = None
@ -112,17 +114,12 @@ class GiveawayResult(Object):
winners = None winners = None
if not hide_winners: if not hide_winners:
chat_id = utils.get_channel_id(giveaway_result.channel_id) chat_id = utils.get_channel_id(giveaway_result.channel_id)
chat = await client.invoke( chat = types.Chat._parse_channel_chat(client, chats.get(giveaway_result.channel_id))
raw.functions.channels.GetChannels(
id=[await client.resolve_peer(chat_id)]
)
)
chat = types.Chat._parse_chat(client, chat.chats[0])
giveaway_message = await client.get_messages(chat_id, giveaway_result.launch_msg_id) giveaway_message = await client.get_messages(chat_id, giveaway_result.launch_msg_id)
expired_date = utils.timestamp_to_datetime(giveaway_result.until_date) expired_date = utils.timestamp_to_datetime(giveaway_result.until_date)
winners = [] winners = []
for winner in giveaway_result.winners: for winner in giveaway_result.winners:
winners.append(await client.get_users(winner)) winners.append(types.User._parse(client, users.get(winner, None)))
stars = getattr(giveaway_result, "stars", None) stars = getattr(giveaway_result, "stars", None)

View file

@ -852,7 +852,7 @@ class Message(Object, Update):
giveaway_launched = types.GiveawayLaunched._parse(client, action) giveaway_launched = types.GiveawayLaunched._parse(client, action)
service_type = enums.MessageServiceType.GIVEAWAY_LAUNCHED service_type = enums.MessageServiceType.GIVEAWAY_LAUNCHED
elif isinstance(action, raw.types.MessageActionGiveawayResults): elif isinstance(action, raw.types.MessageActionGiveawayResults):
giveaway_result = await types.GiveawayResult._parse(client, action, True) giveaway_result = await types.GiveawayResult._parse(client, action, True, users, chats)
service_type = enums.MessageServiceType.GIVEAWAY_RESULT service_type = enums.MessageServiceType.GIVEAWAY_RESULT
elif isinstance(action, raw.types.MessageActionBoostApply): elif isinstance(action, raw.types.MessageActionBoostApply):
boosts_applied = action.boosts boosts_applied = action.boosts
@ -1042,7 +1042,7 @@ class Message(Object, Update):
giveaway = await types.Giveaway._parse(client, message, chats) giveaway = await types.Giveaway._parse(client, message, chats)
media_type = enums.MessageMediaType.GIVEAWAY media_type = enums.MessageMediaType.GIVEAWAY
elif isinstance(media, raw.types.MessageMediaGiveawayResults): elif isinstance(media, raw.types.MessageMediaGiveawayResults):
giveaway_result = await types.GiveawayResult._parse(client, message.media) giveaway_result = await types.GiveawayResult._parse(client, message.media, users=users, chats=chats)
media_type = enums.MessageMediaType.GIVEAWAY_RESULT media_type = enums.MessageMediaType.GIVEAWAY_RESULT
elif isinstance(media, raw.types.MessageMediaStory): elif isinstance(media, raw.types.MessageMediaStory):
story = await types.MessageStory._parse(client, media) story = await types.MessageStory._parse(client, media)