[Telegram] Грабер постов из чужих каналов в свой
Приветствую всех! Недавно мне понадобилось наполнить канал контентом, а запариваться над ним не хотелось, тогда и пришла идея написать простенький пост грабер. Решил выложить, мб кому-то понадобится.
Приветствую всех! Недавно мне понадобилось наполнить канал контентом, а запариваться над ним не хотелось, тогда и пришла идея написать простенький пост грабер. Решил выложить, мб кому-то понадобится.
Функционал скрипта: Скрипт будет чекать нужный канал на появление новых постов, появился новый пост - пересылает его в ваш канал.
Используемые библиотеки: Будем юзать только одну библиотеку - Telethon Открываем cmd.exe и устанавливаем ее: pip3 install telethon
Приступаем к говнокоду. (Кому не нужно описание - полный код в конце)
Импортируем нужные библиотеки
from telethon import functions, types from telethon.sync import TelegramClient from telethon import TelegramClient, events, sync
Передаем api_id и api_hash:
api_id = 1976464 api_hash = "xxb1346bdbddb43434"
Подключаемся к клиенту:
client = TelegramClient("test", api_id, api_hash) client.start() print("STARTED")
Далее нам необходимо подписаться на каналы с которых будет происходить граббинг постов и указать их. Мы будем получать обновления с каждого канала который запишем:
@client.on(events.NewMessage(chats=["Chanel1", "Chanel2", " Chanel3", "Chanel4", "chanel5"]))
Хэндлер, который реагирует на новые посты:
async def normal_handler(event): if isinstance(event.chat, types.Channel):
Публикация поста
await client.send_message("https://t.me/joinchat/AAAAAxxxxxxxxx1", rdy) await client.send_message("https://t.me/joinchat/AAAAAxxxxxxxxx1", event.message)
Диссконект
client.run_until_disconnected()
Весь код:
from telethon import functions, types from telethon.sync import TelegramClient from telethon import TelegramClient, sync from telethon import TelegramClient, events, sync api_id = 123456 # ваши данные, брать с my.telegram.org api_hash = "ada12245jsfo5o2525o6o36" # ваши данные, брать с my.telegram.org client = TelegramClient("Test", api_id, api_hash) # логинимся client.start() # старт клиента @client.on(events.NewMessage(chats=["test1", 'test2'])) # список каналов, откуда будем брать посты async def normal_handler(event): if isinstance(event.chat, types.Channel): username = event.chat.username rdy = "@" + str(username) # получаем юзернейм канала, откуда забрали пост await client.send_message("https://t.me/joinchat/AAAAAE1t242", rdy) # будет отправлять инфу, о том, с какого канала спизжен пост await client.send_message("https://t.me/joinchat/AAAAAE1t242", event.message) # отправка поста в канал client.run_until_disconnected()
api id & api hash брать тут Спасибо за внимание Оригинал статьи тут: https://teletype.in/@slivmens/paJYDLi8z
Новая тема: https://teletype.in/@charleswebster/kEKWoVrJa