Создание телеграм-бота - как получить значения из двух кликов по двум клавиатурам

Телеграм-ботов сейчас не пишет, наверное, только тот, кому это совсем не интересно. Я решил попробовать написать своего бота. Я, конечно, не программист, но какие-то знания о PHP ещё остались.

Как создать телеграм-бота написано достаточно. В интернет много инструкций и примеров кодов. Про это повторяться не буду. Напишу только о том, какая проблема возникла и как её решили.

(Программисты раскритикуют, наверное, такое решение и будут больно "пинать", но эта заметка для любителей.)

Вот в чём была проблема. Бот для поиска авиабилетов. Сначала пользователю показывается клавиатура с выбором аэропорта отправления, затем клавиатура с выбором аэропорта назначения, а затем клики этих двух клавиатур обрабатываются программой и выдаются варианты перелётов.

Первая клавиатура - Reply Keyboard.
Примерно такого вида:
"keyboard" => [ "text" => "Москва", ["text" => "Петербург",],
и так далее.

При клике по кнопке передаётся атрибут "text" с названием города отправления.

Переданное значение легко уловить и использовать дальше в программе.

Вторая клавиатура - Inline Keyboard.
Примерно такого вида
"inline_keyboard" => ["text"=>"Казань", "callback_data"=>' KZN'], ["text"=>"Калининград", "callback_data"=>'KGD']
и так далее.

Клик по кнопке этой клавиатуры тоже несложно выловить. (Вы найдёте много примеров с кодом в интернет.

Проблема в том, что после клика по второй клавиатуре не сохранялось значение клика по первой. В интернет примеров кода с решением этой задачи не нашёл, но нашёл намёк на путь решения.

Вот, что в итоге получилось.

После клика по первой кнопке значение атрибута "text" используется при создании второй клавиатуры и добавляется в атрибут callback_data.

В итоге получается вторая клавиатура такого примерно вида:
"inline_keyboard" => ["text"=>"Казань", "callback_data"=>$text . ' : KZN'], ["text"=>"Калининград", "callback_data"=>$text . ' : KGD']
и так далее.

После клика по первой кнопке она становится такой:

"inline_keyboard" => ["text"=>"Казань", "callback_data"=> ' Москва : KZN'], ["text"=>"Калининград", "callback_data"=>' Москва : KGD']
и так далее.

После клика по второй клавиатуре мы получаем значение "callback_data" (из callback_query) а дальше разделить значение Москва : KZN по двоеточию и использовать разделённые значения (переменные) это уже как вам будет нужно.

Программисты уже готовы критиковать? Не нужно, для меня важно, что это работает. (Не стреляйте в пианиста! Он играет как может.)

(При поиске образцов котов в интернете часто натыкался на образцы с ошибками. Пользуйтесь только проверенными источниками, обращайтесь к технической документации или лучше наймите программиста.

https://t.me/visitplus_bot - это другой бот, но тоже на тему путешествий.

В связи с техническими проблемами регистрация пользователей приостановлена. Приносим извинения.