База знаний GetMyBot

Сообщения и кнопки

Конструктор ответа: блоки, inline-кнопки, динамические клавиатуры и шаги диалога.

На этой странице

Действие «Отправить сообщение» собирает ответ бота из блоков и снабжает его inline-кнопками, главным меню и шагами диалога. Это самое богатое действие конструктора: здесь же подключаются подстановки и реферальные параметры кнопок.

Блоки сообщения

Сообщение состоит из блоков (кнопка Добавить блок):

  • Текст: форматированный текст (до 4096 символов) с подстановками и кнопками.
  • Фото: изображение с подписью.
  • Файл: документ с подписью.
  • Голосовое: аудио (OGG/OPUS, MP3, M4A, до 50 МБ), которое Telegram показывает как голосовое сообщение (sendVoice).
  • GIF: анимация или MP4 без звука, до 50 МБ (sendAnimation).
  • Видеокружок: квадратное MP4 до 60 секунд (sendVideoNote). У кружка нет подписи, и, в отличие от фото и файла, кэш file_id для него не используется: Telegram не примет в sendVoice/sendAnimation/sendVideoNote file_id, полученный другим методом, поэтому файл из медиатеки заново загружается нужным методом при каждой отправке.
  • Карусель: от 2 до 10 карточек «фото + подпись + свои кнопки». В Telegram это одно сообщение, которое листается кнопками «‹ ›» (бот перерисовывает медиа на месте через editMessageMedia). В каналах без нативной карусели (например, VK) карточки уходят серией отдельных сообщений.
  • Задержка: пауза в секундах перед следующим блоком.
  • ИИ: ответ, сгенерированный моделью по промпту.
  • Реакция: вызов другой реакции (опционально дождавшись её обработки).

Голосовые, GIF, видеокружки и карусели работают в реакциях так же, как остальные блоки, и попадают в быструю рассылку реакции (см. Рассылки).

Блоки перетаскиваются. Режим показа блоков: «По порядку» или «Случайно» (для вариативных ответов). Главное меню бота можно оставить без изменений, задать новое или спрятать.

Опции блока

У текстовых и медиа-блоков есть флаги: закрепить, без звука, защита от пересылки, спойлер, без превью ссылок, автоудаление через N секунд.

Inline-кнопки

В блоке настраиваются кнопки (Текст кнопки + Тип):

  • Текст (callback): кнопка с обработкой нажатия на стороне бота.
  • Ссылка: открывает URL.
  • Веб-приложение: открывает Telegram Mini App. См. Mini App.
  • Вызов реакции: нажатие запускает другую реакцию.
  • Скопировать текст: нажатие копирует заданный текст (1–256 символов) в буфер обмена, ничего не отправляя (copy_text).
  • Inline-запрос: подставляет «@бот запрос» в поле ввода текущего чата или предлагает выбрать чат (switch_inline_query/switch_inline_query_current_chat). Доступна только в Telegram и требует включённого у бота inline-режима (@BotFather → /setinline); MyBot не отвечает на inline-запросы (answerInlineQuery не реализован), так что это лишь способ заготовить текст запроса, а не рабочий inline-поиск.
  • Заготовленный текст: кнопка-ссылка на https://t.me/<бот>?text=… – открывает чат с ботом и кладёт текст в поле ввода, ничего не отправляя (prefill).
  • Приём платежа и Уведомление: размечены как «скоро».

Кнопки «Скопировать текст», «Inline-запрос» и «Заготовленный текст» не открывают callback, поэтому у них нет ни ответа answerCallbackQuery, ни Carry.

У любой кнопки можно задать иконку: премиум-эмодзи перед текстом (icon_custom_emoji_id) – значение должно разбираться как положительное 64-битное целое число ID эмодзи (ведущие нули не мешают: 007 разбирается как 7); всё, что так не разбирается (буквы, ноль, отрицательное число, число, не влезающее в 64-битный ID), молча отбрасывается, и кнопка сохраняется без иконки. Telegram показывает иконку лишь у ботов с нужными правами (дополнительное имя через Fragment либо Telegram Premium у владельца бота при прямой отправке в личный чат или группу); у остальных ботов поле уходит в запрос, но сам Telegram его игнорирует, замены обычным эмодзи не будет. Стиль: «Обычная» (без цвета), «Основная» (синий), «Успех» (зелёный) или «Опасная» (красный) – передаётся в Telegram как style. Флаг «Одноразовая» сжигает кнопку после нажатия.

Поведение при нажатии

Для callback-кнопок настраивается, что происходит при нажатии: заменить текст кнопки, заменить сообщение (текстом или содержимым привязанной реакции), удалить сообщение, пропустить answerCallbackQuery. Нажатие также может ставить метки и задавать параметры.

Ещё для callback-кнопок можно задать текст при нажатии (до 200 символов, подстановки работают) и включить «Показывать как всплывающее окно»: без этого флага текст показывается как краткий тост, с ним – как модальное окно (answerCallbackQuery с show_alert). Пустой текст просто снимает индикатор загрузки без уведомления. При включённом «Пропустить answerCallbackQuery» текст и alert тоже не отправляются.

Параметры в кнопке (Carry)

Блок «Carry: снимок данных в нажатие кнопки» прикрепляет к кнопке набор значений, зафиксированных в момент отправки. При нажатии эти значения попадают в контекст: так каждая кнопка несёт свои параметры (per-invocation), даже если кнопок много. Задаётся время жизни payload в секундах. Это основа сценариев «выбери товар → оформи именно его».

Динамические кнопки

Блок «Динамические кнопки из списка» разворачивает массив из ctx в кнопки: по одной на элемент. Настраиваются: ключ списка в ctx, псевдоним элемента, число кнопок в ряд и шаблон кнопки (поддерживает {{alias.поле}}). Так строятся каталоги, списки записей и меню из данных коллекции. Подробнее: Динамические кнопки и параметры.

Премиум-эмодзи в тексте

В текстовом блоке кнопка форматирования «Премиум-эмодзи» вставляет <tg-emoji emoji-id="…">🙂</tg-emoji>: у Telegram Premium вместо запасного эмодзи в теге покажется кастомный, у остальных получателей – сам запасной эмодзи. Работает и в HTML-, и в Markdown-формате блока. ID эмодзи – число до 32 цифр; узнать его можно через getCustomEmojiStickers или переслав сообщение с нужным эмодзи боту вроде @idstickerbot.

Ссылка t.me/<бот>?start=<параметр> всегда заставляет клиент Telegram отправить /start <параметр>: открыть чат по deep-link «тихо» – с параметром, но без самой команды – Bot API не позволяет. Рабочие обходы:

  • Молчаливый /start: у реакции на триггер «Команда /start» с нужным значением Payload действие «Отправить сообщение» можно оставить без блоков – заметного ответа на сам /start не будет, а значение payload уже доступно в контексте события и его можно использовать в условиях и других действиях той же реакции.
  • Заготовленный текст: ссылка https://t.me/<бот>?text=<текст> (кнопка «Заготовленный текст» или обычная кнопка-ссылка) открывает чат и кладёт текст в поле ввода, ничего не отправляя; /start при этом не срабатывает, отправляет сообщение сам пользователь.
  • Автосообщение «от лица пользователя» при переходе Bot API не даёт сделать в принципе: бот не может отправить сообщение от имени пользователя. Ближайшая замена – deep-link ?start= и реакция, которая сама отвечает нужным текстом от бота.

Ожидаемый ответ (шаги диалога)

Текстовый блок может ждать ответ пользователя. Тогда сообщение становится шагом диалога и ставит сценарий на паузу до ответа. Несколько шагов подряд образуют анкету или мастер прямо в чате.

Тип ожидаемого контента

Бот может ждать конкретный вид ответа: текст, выбор из вариантов (кнопки-варианты), фото, видео, видео-заметку, аудио, документ, голосовое, местоположение, контакт, календарь или кубик. Если пользователь пришлёт не тот тип, шаг считает ответ неподходящим.

Проверка текста

Для текстового ответа можно включить проверку формата: телефон, e-mail, ссылка, дата, время или соответствие формуле (регулярное выражение). Не прошедший проверку ответ отклоняется, и бот показывает сообщение об ошибке.

Сохранение ответа

Ответ пользователя можно сохранить в параметр: после чего он доступен в подстановках как {{param.ключ}} и в условиях. Так шаги диалога наполняют мини-профиль клиента.

Ошибки, напоминание и таймаут

  • Сообщение при ошибке проверки: что показать, если ответ не прошёл валидацию.
  • Напоминание: что отправить, если пользователь молчит.
  • Снятие ожидания по таймауту: через сколько перестать ждать; при таймауте можно запустить реакцию (например, мягко завершить анкету). Эта реакция видна в связях как «Таймаут ожидания», а реакция на сам ответ: как «Ожидаемый ответ».

Подстановки

Кнопка «Подстановки» вставляет переменные: данные отправителя ({{first_name}}, {{username}}, {{user_id}}), события ({{text}}, {{chat_id}}, {{datetime}}) и параметры ({{param.ключ}}). Полный список и формулы: Подстановки и формулы.

Что дальше