EnotPRO Logo EnotPRO

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:

  1. SendMessage → Текст: Добро пожаловать! Выберите действие:
  2. ShowMenu → Меню: main_menu

Пример 2: Редактирование меню при пагинации

Сценарий: Пользователь нажал «Следующая страница», нужно обновить меню.

Реакции в обработчике кнопки:

  1. 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 параметр)

© 2025 EnotPRO. Все права защищены.