Как научить юзер-бот группировать вложения в альбом при пересылке сообщений из канала в канала в телеграме с библиотекой telethon python

Вот код:

client = TelegramClient('anon', API_ID, API_HASH)

@client.on(events.NewMessage(chats=CHANNELS))
async def main(event):
await client.send_message(MY_CHANNEL_ID, event.message)

client.start()
client.run_until_disconnected()
with client:
    client.loop.run_until_complete(main())

В таком варианте, при пересылке сообщения с множеством вложений разбиваются на отдельные сообщения, а нужно, чтобы пересылался альбом+текст.


Ответы (1 шт):

Автор решения: Justborn

Если сообщение является группой нескольких сообщений (альбом из фото или видео), у всех этих сообщений будет одно и то же значение атрибута grouped_id. Если же сообщение не альбом, например, одно изображение, или одно видео, значением атрибута grouped_id будет None. Вы можете использовать это как проверку.

Сами альбомы можно обрабатывать с помощью специального декоратора events.Album.

# Декоратор который обрабатывает альбомы c указанных каналов
@client.on(events.Album(chats=CHANNELS)) 
async def new_album(event):
    await client.send_message(
        entity=MY_CHANNEL_ID, # Канал на который перешлется сообщение
        file=event.messages, # Список сообщений (изображений) из альбома
        message=event.text, # Текст сообщения
    )
→ Ссылка