ShowMenu
ShowMenu — отправляет меню (клавиатуру) пользователю.
📝 Назначение
Используется для отображения интерактивных клавиатур с кнопками. В отличие от SendMessage, ShowMenu специализируется именно на отправке заранее созданных меню из раздела /adm → Меню.
💡 Совет: Комбинируйте
SendMessage(текст) +ShowMenu(кнопки) для лучшего пользовательского опыта. Или используйте встроенный текст в самом меню.
⚙️ Основные параметры
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| Меню | Выбор | ✅ Да | Название меню из раздела /adm → Меню |
| Редактировать на месте | Boolean | ❌ Нет | Заменить предыдущее меню (вместо отправки нового) |
| Чат | Блок | ❌ Нет | Настройки получателя |
| Ответ | Блок | ❌ Нет | Ответ на конкретное сообщение |
| Опции | Блок | ❌ Нет | Дополнительные настройки (уведомления, эффекты) |
| Web-preview | Блок | ❌ Нет | Настройки превью ссылок (если меню содержит текст) |
💬 Чат
Настройки получателя сообщения.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| chat_id | Integer/String | ❌ Нет* | ID чата или @username канала |
| topic_id | Integer | ❌ Нет | ID темы форума (если чат — супергруппа с темами) |
| business_id | String | ❌ Нет | ID бизнес-подключения (для бизнес-аккаунтов) |
| direct_messages_topic_id | Integer | ❌ Нет | ID темы в личных сообщениях (только для супергрупп) |
| edit_id | Integer | ❌ Нет | ID сообщения, вместо которого нужно отправить (расширенное редактирование) |
** Если не указан
chat_id, меню отправляется в текущий чат (откуда пришёл запрос).*
↩️ Ответ
Настройки ответа на конкретное сообщение.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| chat_id | Integer/String | ❌ Нет | ID чата, где находится сообщение для ответа |
| message_id | Integer | ✅ Да** | ID сообщения, на которое отвечаем |
| Разрешить без ответа | Boolean | ❌ Нет | Отправить меню, даже если указанного сообщения не существует |
| Авто-ответ | Boolean | ❌ Нет | Отметить ответ как автоматический (Telegram показывает специальный значок) |
***
message_idобязателен, если заполнен блок «Ответ».*
Разница между «Разрешить без ответа» и «Авто-ответ»
| Параметр | Что делает |
|---|---|
| Разрешить без ответа | Игнорирует ошибку, если сообщения с указанным message_id не существует. Меню всё равно отправится |
| Авто-ответ | Помечает ответ как автоматический. В интерфейсе Telegram у пользователя отображается специальный значок 🤖 |
⚙️ Опции
Дополнительные настройки отправки.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| disable_notification | Boolean | ❌ Нет | Отправить без звукового уведомления (беззвучно) |
| protect_content | Boolean | ❌ Нет | Запретить пересылку и сохранение содержимого |
| effect_id | String | ❌ Нет | ID визуального эффекта (список эффектов) |
⚠️ Важно: Эффекты (
effect_id) работают только в личных чатах. В группах и каналах эффекты не отображаются.
🔗 Web-preview
Настройка предпросмотра ссылок в тексте меню.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| Включено | Boolean | ❌ Нет | Включить/выключить отображение превью ссылок |
| Ссылка | String | ❌ Нет | Конкретная ссылка для превью (если не указана — берётся первая ссылка в тексте) |
| Расположение | Выбор | ❌ Нет | Сверху — превью над текстом, Снизу — под текстом |
| Размер | Выбор | ❌ Нет | Большое медиа — стандартный размер, Маленькое медиа — компактный |
🔄 Редактирование существующего меню
Если включить опцию «Редактировать на месте», ShowMenu заменит последнее отправленное ботом меню в этом чате, а не отправит новое.
Когда использовать:
- Обновление кнопок без спама
- Постраничная навигация
- Индикация загрузки
- Обновление состояния кнопок (вкл/выкл)
⚠️ Важно:
- Редактировать можно только меню, отправленные самим ботом
- Редактирование возможно не позднее 48 часов после отправки
- При редактировании текст меню и кнопки полностью заменяются
🧪 Примеры
Пример 1: Отправка главного меню после /start
Реакции в обработчике /start:
SendMessage→ Текст:Добро пожаловать! Выберите действие:ShowMenu→ Меню:main_menu
Пример 2: Редактирование меню при пагинации
Сценарий: Пользователь нажал «Следующая страница», нужно обновить меню.
Реакции в обработчике кнопки:
ShowMenu→ Меню:page_2, Редактировать на месте:true
Пример 3: Меню в конкретном чате (не отправителе)
Параметры:
- Меню:
admin_panel - Чат → chat_id:
-100123456789(группа администраторов)
Пример 4: Меню с эффектом и без уведомления
Параметры:
- Меню:
surprise_menu - Опции → disable_notification:
true - Опции → effect_id:
5104841245755180586(эффект огня)
Пример 5: Ответ на конкретное сообщение с авто-ответом
Параметры:
- Меню:
support_menu - Ответ → message_id:
${update.message.message_id} - Ответ → Авто-ответ:
true
🔗 Связанные разделы
- Создание меню — подробная инструкция по созданию меню в админке
- SendMessage — отправка текстовых сообщений
- EditMessage — редактирование сообщений
- AnswerButton — уведомления на нажатие кнопок
- Макрос media — для отправки медиа в меню
🔗 Ссылка на официальную документацию
sendMessage — Telegram Bot API (меню отправляются через reply_markup параметр)