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)
media_type = enums.MessageMediaType.GIVEAWAY
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
elif isinstance(media, raw.types.MessageMediaInvoice):
invoice = types.Invoice._parse(media)

View file

@ -21,7 +21,7 @@ import pyrogram
from datetime import datetime
from pyrogram import raw, types, utils
from ..object import Object
from typing import List, Union
from typing import List, Union, Dict
class GiveawayResult(Object):
@ -104,7 +104,9 @@ class GiveawayResult(Object):
"raw.types.MessageActionGiveawayResults",
"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":
chat = None
giveaway_message = None
@ -112,17 +114,12 @@ class GiveawayResult(Object):
winners = None
if not hide_winners:
chat_id = utils.get_channel_id(giveaway_result.channel_id)
chat = await client.invoke(
raw.functions.channels.GetChannels(
id=[await client.resolve_peer(chat_id)]
)
)
chat = types.Chat._parse_chat(client, chat.chats[0])
chat = types.Chat._parse_channel_chat(client, chats.get(giveaway_result.channel_id))
giveaway_message = await client.get_messages(chat_id, giveaway_result.launch_msg_id)
expired_date = utils.timestamp_to_datetime(giveaway_result.until_date)
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)

View file

@ -852,7 +852,7 @@ class Message(Object, Update):
giveaway_launched = types.GiveawayLaunched._parse(client, action)
service_type = enums.MessageServiceType.GIVEAWAY_LAUNCHED
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
elif isinstance(action, raw.types.MessageActionBoostApply):
boosts_applied = action.boosts
@ -1042,7 +1042,7 @@ class Message(Object, Update):
giveaway = await types.Giveaway._parse(client, message, chats)
media_type = enums.MessageMediaType.GIVEAWAY
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
elif isinstance(media, raw.types.MessageMediaStory):
story = await types.MessageStory._parse(client, media)