diff --git a/pyrogram/types/messages_and_media/external_reply_info.py b/pyrogram/types/messages_and_media/external_reply_info.py index 1006ebcc..9ade920d 100644 --- a/pyrogram/types/messages_and_media/external_reply_info.py +++ b/pyrogram/types/messages_and_media/external_reply_info.py @@ -218,7 +218,7 @@ class ExternalReplyInfo(Object): game = types.Game._parse(client, media) media_type = enums.MessageMediaType.GAME elif isinstance(media, raw.types.MessageMediaGiveaway): - giveaway = types.Giveaway._parse(client, reply) + 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) diff --git a/pyrogram/types/messages_and_media/giveaway.py b/pyrogram/types/messages_and_media/giveaway.py index 51aa4c28..7ea47aef 100644 --- a/pyrogram/types/messages_and_media/giveaway.py +++ b/pyrogram/types/messages_and_media/giveaway.py @@ -73,7 +73,6 @@ class Giveaway(Object): stars: int = None, additional_price: str = None, allowed_countries: List[str] = None, - private_channel_ids: List[int] = None, is_winners_hidden: bool = None ): super().__init__(client) @@ -86,28 +85,12 @@ class Giveaway(Object): self.new_subscribers = new_subscribers self.additional_price = additional_price self.allowed_countries = allowed_countries - self.private_channel_ids = private_channel_ids self.is_winners_hidden = is_winners_hidden @staticmethod - async def _parse(client, message: "raw.types.Message") -> "Giveaway": + async def _parse(client, message: "raw.types.Message", chats: dict) -> "Giveaway": giveaway: "raw.types.MessageMediaGiveaway" = message.media - chats = [] - private_ids = [] - for raw_chat_id in giveaway.channels: - chat_id = utils.get_channel_id(raw_chat_id) - try: - chat = await client.invoke( - raw.functions.channels.GetChannels( - id=[await client.resolve_peer(chat_id)] - ) - ) - except FloodWait as e: - await asyncio.sleep(e.value) - except Exception: - private_ids.append(chat_id) - else: - chats.append(types.Chat._parse_chat(client, chat.chats[0])) + chats = types.List([types.Chat._parse_channel_chat(client, chats.get(i)) for i in giveaway.channels]) return Giveaway( chats=chats, @@ -118,7 +101,6 @@ class Giveaway(Object): new_subscribers=giveaway.only_new_subscribers, additional_price=giveaway.prize_description, allowed_countries=giveaway.countries_iso2 if len(giveaway.countries_iso2) > 0 else None, - private_channel_ids=private_ids if len(private_ids) > 0 else None, is_winners_hidden=not giveaway.winners_are_visible, client=client ) diff --git a/pyrogram/types/messages_and_media/message.py b/pyrogram/types/messages_and_media/message.py index 576736b9..4b2862bd 100644 --- a/pyrogram/types/messages_and_media/message.py +++ b/pyrogram/types/messages_and_media/message.py @@ -1039,7 +1039,7 @@ class Message(Object, Update): game = types.Game._parse(client, media) media_type = enums.MessageMediaType.GAME elif isinstance(media, raw.types.MessageMediaGiveaway): - giveaway = await types.Giveaway._parse(client, message) + 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)