Меню в Telegram-боте представляет собой набор кнопок, которые могут перенаправлять пользователей в другие меню с кнопками, отправлять различные виды контента (например, текст, изображения, видео или стикеры) или направлять на ссылки — как внутри бота (например, с помощью UTM-меток), так и внешние (на каналы, чаты или сайты).

Базовые настройки меню
Настройки основного меню.

На скриншоте показано, где находится управление основным меню(оно распространяется на всего вашего бота, если не добавлять специальные тонкие настройки, но об этом ниже) для вашего бота.
Справа находится настройка управлением основным меню. В нашем случае это создание кнопок для нашего меню и управление размещением кнопок. Пока все выглядит легко? - Продолжим.
Управление меню.
Данный блок представляет собой информацию среднего звена и тут придется немного подумать, но опять ничего сверхтяжелого.
При нажатии на кнопку – “управление” мы увидим 2 кнопки
РЕЖИМ РАБОТЫ МЕНЮ и УДАЛИТЬ МЕНЮ. Если с последним все понятно, то РЕЖИМ РАБОТЫ МЕНЮ очень важная тема, разберем ее ниже.

Если мы нажмем на РЕЖИМ РАБОТЫ МЕНЮ, то увидим 3 режима

- Меню у сообщения(inline) - находится возле сообщения и имеет полупрозрачный вид. Для корректной работы, должно быть создано событие - [TELEGRAM] Событие нажатия встроенной кнопки. Без данного события клики на кнопки будут игнорироваться ботом.
Где настроить событие нажатия встроенной кнопки? – в меню событий слева в навигационном меню.(см скрин)

Отправлять сообщение каждый раз – при любом нажатии на inline кнопку отправляется новый чат в боте.
Редактировать сообщение – В чате бота обновляется сообщение без отправки нового чата в боте.
- Cтатичное меню (Reply) - располагается внизу диалога с ботом. При клике на кнопки отправляются новые сообщения. — это набор кнопок, который появляется вместо клавиатуры пользователя. Эти кнопки отправляют заранее заданные сообщения боту, как будто пользователь их набрал вручную. Они удобны для выбора вариантов ответа.
Статичное меню обладает своими настройками, например спрятать его после нажатия или сделать кнопки в вашем боте немного меньше(смотри скриншот). Данная настройка находится в ”управлении”

- Удаление статичного меню (delete reply) - удаляет меню из чата где ведётся диалог с ботом. Так как статичное меню имеет особенность сохраняться в диалоге до его автоматического удаления.
Примеры меню:
Cтатичное меню (Reply) и ) Меню у сообщения(inline)

Добавление мультиязычности в телеграм бот.
Самый трудный блок для понимания и реализации, тут придется хорошенько подумать и не раз перечитать этот пункт статьи для реализации своих идей в вашем боте, начнем мы с определения мультиязычности.
Мультиязычность в Telegram-боте позволяет пользователям выбирать удобный язык интерфейса, делая бота более доступным и удобным для разных аудиторий. Реализация включает определение языка, хранение переводов и вывод сообщений на нужном языке.
Разберем как это сделать.

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

- Следующим шагом у нас будет выпуск сценария для наших меню и тут надо определиться какое меню у нас будет либо inline либо reply, мы сделаем пример для двух сразу, чтобы было видно наглядно. Мультиязычное меню будем делать на примере бота https://t.me/MULTI_LANGUAGE_BOT_MARKTE_BOT
- Мы создаем сценарий для смены языка, пример на фото ниже.
Первый пример – для встроенного меню сценария или свободного сообщения

Второй пример для статичного меню.

- Кнопки для смены языка на русский или английский мы делаем с событием мультиязычности. (смотри скриншот ниже), данный пункт одинаков, как для reply, так и для inline меню

- Общие настройки мультиязычности для reply и inline меню.
После того как вы создали событие в сценарии (смотри пункт b) у вас должно появиться одноименное событие (во вкладке “события” в навигации)
Пример как это выглядит:

Далее настраиваем действия для этого события, а именно соединяем сценарий (пункт d) с этим событием и сохраняем.
- Т.к у нас меню с использованием мультиязычности действия для наших событий и в том числе кнопки в боте тоже должны быть переведенными, для этого мы должны в нашем компоненте мультиязычности правильно настроить переводы наших кнопок, Нельзя полностью доверять нашему автопереводчику и поэтому лучше поправить переводы вручную

- После того как вы убедились, что перевод верен, мы опять переходим в события и возвращаемся, где остановились.
- Переходим во вкладку ‘изменить” в нашем событии (пункт e) и вписываем переведенное слово с другого языка через запятую, сохраняя знаки и атрибуты, которые мы задавали нашей кнопке в сценарии, так делаем везде, где хотим видеть перевод на другой язык.
В нашем случае это русский поэтому перевод кнопки тоже будет русский через запятую во вкладке ‘изменить” с сохранением атрибутов.

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

Готово вы завершили настройку мультиязычного меню.
- Что должно было получиться? Мы покажем это на примере бота https://t.me/MULTI_LANGUAGE_BOT_MARKTE_BOT
Пример Reply меню:

Пример Inline меню:

Частые ошибки при работе с меню.
- Почему не работает основное меню у сообщения?

Разберем проблему на сценарии /start
Допустим вы создали основное меню и решили создать меню для другого сценария или свободного сообщения, но потом передумали и удалили кнопки, но не удалили само меню, тогда в вашем боте будет ошибка в виде пустоты вместо меню - на том сценарии или свободной кнопке в боте.
- Ошибка тригера(события) инлайн меню
Инлайн кнопки могут перестать работать если тригер(событие) будет настроено с ошибкой или удалено(смотри скриншот)

- Чтобы инлайн кнопки в меню вновь заработали добавьте это событие (можно без привязки к действию)
Заключение
Подведем итог в настройке меню в боте Telegram
Настройка меню в Telegram-боте — важный шаг для улучшения пользовательского опыта. Правильно организованные делают взаимодействие с ботом более удобным, понятным и быстрым, позволяя пользователям легко находить нужные функции и команды.