<b><i>Интересная задача.</i></b> Сразу скажу что через <b>Pyrogram </b> сделать не получиться из-за отсутствия обновлений. Ну а вот через <b>Telethon </b> легко. <br/> Рассмотрим на примере. Возмём Телеграм канал сборник розыгрышей ( <a href="https://t.me/premiumlob" rel="nofollow">канал</a> ) и оттуда возмём любой <a href="https://t.me/premiumlob/979" rel="nofollow">розыгрыш</a> . <br/> Нам нужно получить информацию об этом сообщении и это делается с помощью <b>get_messages</b> и параметра <b>ids</b> . Далее извлекаем всю информацию о розыгрыше по ключу <b>media</b> : <br/> <pre><code class="python">MessageMediaGiveaway(
channels=[2037207714, 1218160262, 1404903079, 1849389623],
quantity=1,
months=3,
until_date=datetime.datetime(2024, 3, 3, 17, 30, 9, tzinfo=datetime.timezone.utc),
only_new_subscribers=False,
winners_are_visible=True,
countries_iso2=[],
prize_description=None
)</code></pre> <br/> Уже видно что нужные каналы лежат в <b>channels</b> . Остаётся в цикле пройти по списку и подписаться на каждый канал. <br/> Весь код: <br/> <pre><code class="python">from telethon import TelegramClient
from telethon.tl.functions.channels import JoinChannelRequest
api_id = 12345678
api_hash = "0123456789abcdef0123456789abcdef"
client = TelegramClient('account', api_id=api_id, api_hash=api_hash, device_model="iPhone 55 Pro",
system_version="4.16.30-vxCUSTOM", app_version="1.10.8")
async def main():
messages = await client.get_messages("premiumlob", ids=979)
for channel in messages.media.channels:
await client(JoinChannelRequest(channel))
with client:
client.loop.run_until_complete(main())</code></pre>