Задать вопрос
@EugeneVKruglov

Как узнать, что отправлен последний файл медиагруппы в Телеграм?

Пользователь в ответ на запрос бота может отправить в чат (или переслать из другого чата) не одно фото или видео, а сразу несколько - в виде альбома (медиагруппы). Телеграм представляет их в виде отдельных сообщений с общим идентификатором (media_group_id). Каждое сообщение содержит свой файл. Как мне узнать, что загружено последнее сообщение (файл) из медиагруппы, и только после этого предпринимать дальнейшие действия?
Сохранять сообщения и восстанавливать медиагруппу я умею, проблема только в том, как понять, что все файлы отправлены.
Работаю с pyTelegramBotApi.
  • Вопрос задан
  • 254 просмотра
Подписаться 1 Средний 1 комментарий
Решения вопроса 1
@EugeneVKruglov Автор вопроса
Решил вопрос так: через bot.middleware_handler отлавливаю первое сообщение медиагруппы, после чего в этом хэндлере продолжаю работу нужных функций. Остальные сообщения приходят, но в эти функции не попадают и обрабатываются отдельно. При этом можно не ждать, когда придут все сообщения из медиагруппы.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Foldren
Вот так я проверяю на последний файл, нигде не нашел решения пришел сам в итоге

async def check_last_media_file(message: Message):
        last_message_flag = False
        try:
            await message.bot.edit_message_text(
                text="  ",
                chat_id=message.from_user.id,
                message_id=message.message_id + 1
            )
        except TelegramBadRequest as exc:
            if (exc.message == "Bad Request: message must be non-empty" or
                    exc.message == "Bad Request: message to edit not found"):
                last_message_flag = True
        return last_message_flag
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы