Обработка сообщений, которые содержат альбомы (media_group), через telegram api
Одна из задач бота (которого я пишу) - проанализировать сообщение, полученное от пользователя, и в зависимости от контента в нём, встроить клавиатуру с возможными действиями.
В ситуации, когда одно сообщение содержит только текст и/или одно изображение, всё хорошо. Получаем один update, в нём лежат все данные, извлекаем и обрабатываем.
Сложности возникают с обработкой сообщений, которые содержат так называемый альбом (медиа группу). Как пример - сообщение, в котором вложены две и более фотографии.
В этом случае бот получает такие сообщения как бы фрагментами (отдельными update'ами). Например, сообщение, состоящее из двух фотографии, бот получит по API в трёх разных update’ах.
Сложность с тем, чтобы понять:
- Когда «долетит» последний "фрагмент", после которого можно приступить к анализу всего сообщения?
- Как потом обратиться ко всем фрагментам этого сообщения?
Просматривая такие сообщения с помощью бота Json Dump, я увидел, что у такой «пачки» одинаковое значения поля «media_group_id». Вероятно, это и есть связующий ключ. Но два вышеуказанных вопроса по прежнему актуальны.
Не хотелось бы делать костыли в виде глобальной/статической переменной, в которой я должен запоминать начало получения такого сообщения. К тому же, у меня нет понимания: гарантирует ли API телеграмма, что между "фрагментами" одного сообщения не залетит update от другого события/сообщения.?♂️
В общем, буду признателен за любые мысли. Желательно, на языке golang. Но можно и на другом. Мне важно понять подход, как подступиться к этой задаче.