Advertisement
askanton

Пересылка группы картинок(альбомов) в телеграм группах и каналах

Nov 13th, 2021
731
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.39 KB | None | 0 0
  1. from telethon import TelegramClient, events
  2.  
  3. api_id = ********** # +0000000000
  4. api_hash = '**************************************'
  5.  
  6. client = TelegramClient("Test", api_id, api_hash)
  7. target_can = 13**********  # айди канала куда идёт пересылка
  8. comparer = [0, 0, 0, 0, 0]  # список который будет хранить данные о полученных файлах
  9. album_t0_send = []  # список из обьектов с медиафайлами
  10. list_to_del = []  # список сообщений на удаление
  11.  
  12.  
  13.  
  14. @client.on(events.NewMessage(chats=[59*********]))  # мониторим нужный нам чат
  15. async def normal_handler(event):
  16.     if event.media != None:  # проверяем есть ли медиафайл в сообщении
  17.         start = await client.send_message(target_can, event.message)  # пересылаем его в целевой чат
  18.         comparer[0] = event.date  # записываем дату и время сообщения
  19.         comparer[1] = event.peer_id  # записываем айди сообщения
  20.         comparer[4] = event.media  # записываем данные о медиафайле
  21.         album_t0_send.append(event.media)  # добавляем медиафайл в список для отправки
  22.         list_to_del.append(start.id)  # добавляем айди в список для отправки
  23.         if (comparer[0] == comparer[2]) and (comparer[1] == comparer[3]):  # проверяем сообщение на причастность к альбому
  24.             print("Album detected")
  25.             if start.id not in list_to_del:  # проверяем есть ли айди пересланого сообщения в списке на удаление
  26.                 list_to_del.append(start.id)  # если не то добавляем
  27.             if event.media not in album_t0_send:  # проверяем есть ли медифайл пересланого сообщения в списке на отправку
  28.                 album_t0_send.append(event.media)  # если не то добавляем
  29.             stop = await client._send_album(target_can, album_t0_send)  # отправляем альбом
  30.             for i in range(0, len(stop)):  # проходим по всем айди отправленных сообщений
  31.                 list_to_del.append(stop[i].id)  # и добавляем их с писок на удаление
  32.             cleaner = list_to_del[:-len(album_t0_send) or None]  # убираем из списка айди медиафайлов которые были отправленны в виде альбома
  33.             await client.delete_messages(target_can, cleaner)  # удаляем лишнее
  34.             cleaner.clear()  # чистим список
  35.             album_t0_send.clear()  # чистим список
  36.             list_to_del.clear()  # чистим список
  37.         comparer[2] = comparer[0]  # перезаписываем список с медиафайлами датой последнего полученого
  38.         comparer[3] = comparer[1]  # перезаписываем список с медиафайлами айди последнего полученого
  39.  
  40.  
  41. client.start()  # запускаем клиент
  42. client.run_until_disconnected()  # запускаем цикл
  43.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement