Сообщения и кнопки
Конструктор ответа: блоки, inline-кнопки, динамические клавиатуры и шаги диалога.
На этой странице
Действие «Отправить сообщение» собирает ответ бота из блоков и снабжает его inline-кнопками, главным меню и шагами диалога. Это самое богатое действие конструктора: здесь же подключаются подстановки и реферальные параметры кнопок.
Блоки сообщения
Сообщение состоит из блоков (кнопка Добавить блок):
- Текст: форматированный текст (до 4096 символов) с подстановками и кнопками.
- Фото: изображение с подписью.
- Файл: документ с подписью.
- Голосовое: аудио (OGG/OPUS, MP3, M4A, до 50 МБ), которое Telegram показывает как голосовое сообщение (
sendVoice). - GIF: анимация или MP4 без звука, до 50 МБ (
sendAnimation). - Видеокружок: квадратное MP4 до 60 секунд (
sendVideoNote). У кружка нет подписи, и, в отличие от фото и файла, кэшfile_idдля него не используется: Telegram не примет вsendVoice/sendAnimation/sendVideoNotefile_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.
Deep-link без /start и заготовленный текст
Ссылка 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.ключ}}). Полный список и формулы: Подстановки и формулы.
Что дальше
- Подстановки и формулы: переменные в текстах и кнопках.
- Действия: другие действия реакции.
- Mini App: кнопка веб-приложения.