moldovan 2 Опубликовано: 18 июл 2023 В этой теме расскажу о написании простого граббера постов для нашей любимой телеги. Если будет 30+ реакций то напишу пост о более лучшем и продвинутом граббере с огромным функционалом)) Код, который я предоставлю, является примером использования библиотеки Telethon для работы с Telegram API. Давайте разберем каждую часть кода: Импорт библиотек и модулей: from telethon import TelegramClient, events import asyncio В этом блоке мы импортируем необходимые модули: TelegramClient для создания клиента Telegram, events для работы с событиями в Telegram, и asyncio для работы с асинхронными операциями. Конфигурация API: api_id = 0004220 api_hash = '72b76077b2216344176639c800600000' В этой части кода вы должны заменить значения api_id и api_hash своими реальными значениями, полученными при регистрации приложения на платформе Telegram. Настройки каналов: my_channel_id = -1001391180000 channels = [-1600100000] В данном примере у нас есть один исходный канал (channels), и мы хотим пересылать сообщения с этого канала на другой канал (my_channel_id). Вам нужно заменить значения my_channel_id и channels своими соответствующими значениями. Обратите внимание, что идентификаторы каналов должны быть в числовом формате, и для публичных каналов нужно использовать отрицательные значения. Создание клиента и запуск: client = TelegramClient('myGrab', api_id, api_hash) print("GRAB - Started | by connectUSB") В этой части кода мы создаем экземпляр клиента TelegramClient с именем 'myGrab' и передаем ему значения api_id и api_hash. Затем выводится сообщение о запуске клиента. Обработка новых сообщений: @client.on(events.NewMessage(chats=channels)) async def my_event_handler(event): if event.message: await client.send_message(my_channel_id, event.message) Это декоратор, который регистрирует функцию my_event_handler в качестве обработчика событий новых сообщений из каналов, указанных в channels. Когда новое сообщение поступает в один из этих каналов, функция my_event_handler вызывается. Внутри функции проверяется наличие сообщения event.message и, если оно существует, оно отправляется в канал my_channel_id с помощью client.send_message. Запуск клиента и его работа: client.start() client.run_until_disconnected() В этой части кода клиент запускается с помощью client.start() и остается активным, пока не будет отключен с помощью client.run_until_disconnected(). Это позволяет клиенту продолжать работать и обрабатывать события до тех пор, пока не произойдет отключение. Это основные аспекты кода, которые описывают его функциональность. Вы должны заменить необходимые значения переменных и настроить соответствующие каналы и их обработку в соответствии с вашими требованиями. from telethon import TelegramClient, events import asyncio api_id = 0004220 api_hash = '72b76077b2216344176639c800600000' my_channel_id = -1001391180000 channels = [-1600100000] client = TelegramClient('myGrab', api_id, api_hash) print("GRAB - Started | by connectUSB") @client.on(events.NewMessage(chats=channels)) async def my_event_handler(event): if event.message: await client.send_message(my_channel_id, event.message) client.start() client.run_until_disconnected() 0 Поделиться сообщением Ссылка на сообщение