Как научить юзер-бот группировать вложения в альбом при пересылке сообщений из канала в канала в телеграме с библиотекой 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, # Текст сообщения
)