diff --git a/pyrogram/types/messages_and_media/external_reply_info.py b/pyrogram/types/messages_and_media/external_reply_info.py index 9ade920d..a6a35252 100644 --- a/pyrogram/types/messages_and_media/external_reply_info.py +++ b/pyrogram/types/messages_and_media/external_reply_info.py @@ -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_winners = await types.GiveawayResult._parse(client, media) + giveaway_winners = 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) diff --git a/pyrogram/types/messages_and_media/giveaway_result.py b/pyrogram/types/messages_and_media/giveaway_result.py index b0e25f98..721c0e8d 100644 --- a/pyrogram/types/messages_and_media/giveaway_result.py +++ b/pyrogram/types/messages_and_media/giveaway_result.py @@ -104,7 +104,9 @@ class GiveawayResult(Object): "raw.types.MessageActionGiveawayResults", "raw.types.MessageMediaGiveawayResults" ], - hide_winners: bool = False + hide_winners: bool = False, + users: dict = None, + chats: dict = 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) diff --git a/pyrogram/types/messages_and_media/message.py b/pyrogram/types/messages_and_media/message.py index 4b2862bd..3bed1372 100644 --- a/pyrogram/types/messages_and_media/message.py +++ b/pyrogram/types/messages_and_media/message.py @@ -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, chats) media_type = enums.MessageMediaType.GIVEAWAY_RESULT elif isinstance(media, raw.types.MessageMediaStory): story = await types.MessageStory._parse(client, media)