В Bot Api для получения целевого результата иногда требуется выполнить ещё один запрос. Такой механизм работы я называю парными запросами
Простой пример с кодом ниже поможет разобраться с тем, как они программируются.
Для простоты код дан в процедурном стиле.
В общем случае порядок работы скрипта бота следующий:
Если данных для отображения в меню автозагрузки много, то в код нужно ещё добавить функцию их подгрузки при прокрутке меню. Это похоже на то, как происходит подгрузка данных на страницах сайтов - указывается начало выборки и количество элементов в ней. Без подгрузки в меню можно вывести до 50 элементов. Обработка встроенного запроса ограничено по времени, при превышении которого не будет прекращена. Данные для вывода в меню нужно формировать очень быстро, что особенно актуально при загрузке изображений и медиа.
Если пользователь выбрал опцию меню, то, как правило, его выбор нужно обработать. Текст опции поступит в поле [message][text]. Проще говоря, это сообщение от пользователя, только отправленное на сервер посредством бота и в обновлении будет дополнительное поле [via_bot].
Вот этот механизм уже является парным. Пользователь нажимает на кнопку встроенной клавиатуры, в ответ на что можно вывести диалог или уведомление отдельным запросом.
Изменим пару функций и добавим новую.
В тексте диалога можно использовать символ перевода строки \n.
Здесь также требуется второй запрос для получения файла. После отправки сообщения с фотографией ссылку на фотографию можно получить по пути $data['message']['photo'], затем выполнить запрос на получения пути к файлу по идентификатору file_id.
if (!empty($data['message']['photo'])) {
msgPhoto($data);
}