Найти в Дзене
Движение-Жизнь

Как сделать фото + текст в одном сообщении бота (Python + Telegram)

Своего рода продолжение к написанию бота на Python, для Телеграмм.

Бот пишется на TelegramBotApi

Для вывода группы картинок используется MediaGroup. В боте предусмотрено, что если пользователю фотографии не нужны то просто выводятся текстовые сообщения с информацией об отелях. Что-то типа этого:

А если пользователь пожелал увидеть фотографии то, бот спрашивает сколько нужно фотографий и в завершении поиска эти фотографии рандомным образом выдает пользователю в сообщении.

И вот как сделать так чтобы всё было в одном сообщении, как мы привыкли в чатах телеграмма. Как-то типа так:

-2

Принцип работы кода примерно таков:

  1. Мы обращаемся к серверу за дополнительной информацией. Помимо ссылок на фотографии там еще много другой информации. Я взял лишь ссылки на фотографии, из которых сформировал отдельный список images.
  2. Список images содержит примерно 43 (возможно это количество постоянно) ссылки на фотографии, нам же по условиям нужно не более 10 (сообщение телеграмм принимает не более 10). И для справедливости выдавать их не по порядку, а в случайном порядке. Дабы любая фотка имела шанс быть увиденной. Создаю новый список links, с количеством ссылок, равным тому, что запросил пользователь.
  3. Ну а далее нужно создать список объектов MediaGroup, где будут объекты ссылок на фотографии, которые объединятся в одно общее сообщение.
  4. Чтобы видеть описание к каждой группе снимков внизу галереи а не поверх картинок нужно только первому изображению прописать свойство caption=

Ну и собственно скриншоты рабочего кода:

-3
-4

Ну вот наверное и всё. Надеюсь кому-то помог.

Лайк, коммент или подписка - категорически приветствуется!