Telegram выкатил Bot API 10.3 - и это не косметическое обновление. Разработчикам, которые уже перешли на Rich Messages в версии 10.1, придётся заново открыть документацию: часть методов отправки эфемерного контента меняется с обратной несовместимостью. Разбираем, что нового, зачем это нужно и как применить в чат-ботах на платформе Watbot.
Rich Messages учатся показывать кнопки и документы
В версии 10.1 Rich Messages получили таблицы, формулы, карты и десятки типов текстового форматирования - но интерактивности в них не было: кнопку внутрь структурированного сообщения было не вставить, только под ним, обычной инлайн-клавиатурой. В 10.3 это ограничение снято.
Кнопки прямо в теле сообщения
Добавлены классы
RichMessageButton и RichTextButton - кнопка теперь может быть частью текстового потока, а не отдельным слоем поверх сообщения. Для группировки нескольких кнопок в единый блок введены RichBlockButtons и InputRichBlockButtons.
На практике это значит, что кнопка перестаёт быть «довеском снизу» и становится элементом верстки: можно разместить её сразу после абзаца, к которому она относится, или собрать блок из нескольких кнопок ровно там, где нужно по смыслу документа - например, сразу после описания тарифа, а не в самом низу длинного сообщения.
Документы как часть структуры
Появились
RichBlockDocument и InputRichBlockDocument - теперь файл можно встроить в Rich Message наравне с фото, видео или таблицей, а не прикреплять его отдельным сообщением. Дополнительно заработали ссылки вида tg://document?id= для прямой загрузки файла по идентификатору, без промежуточных пересылок.
Для ботов, которые собирают у пользователя лонгриды с приложениями - сметы, презентации, инструкции с PDF-приложением - это избавляет от необходимости резать контент на «текст + отдельное сообщение с файлом».
Цитаты, которые можно свернуть
Классы
RichBlockExpandableBlockQuotation и InputRichBlockExpandableBlockQuotation добавляют цитатный блок с возможностью скрыть и раскрыть текст по клику. В отличие от RichBlockDetails из 10.1 (универсальный аккордеон с заголовком), здесь речь именно про цитирование - длинную выдержку, отзыв или фрагмент переписки можно убрать под спойлер, оставив на виду только начало.
Таблицы стали компактнее
В
RichBlockTable и InputRichBlockTable добавлено булево поле is_compact. Оно уплотняет отображение строк - полезно для таблиц с большим количеством данных, которые раньше занимали слишком много места на экране смартфона.
Эфемерные сообщения: единый параметр вместо разрозненных полей
Самая чувствительная часть релиза - не новые возможности, а переработка старых. Логика отправки эфемерного контента (сообщений, которые видит только конкретный пользователь, либо контента с таймером самоуничтожения) получила единую точку входа.
Что меняется технически
Вместо двух отдельных полей -
receiver_user_id и callback_query_id - во всех базовых методах отправки (sendMessage, sendPhoto, sendVideo и другие) теперь используется один объект EphemeralMessageParameters. Тот же параметр добавлен и в sendRichMessage - значит, эфемерными теперь могут быть и структурированные сообщения из 10.1.
Это изменение обратно несовместимо: боты, которые продолжат вызывать старые параметры напрямую, начнут получать ошибки при отправке эфемерного контента. Простой апдейт библиотеки без правки кода здесь не сработает - нужен явный аудит всех мест, где боты работают с приватной видимостью сообщений.
Подмена сообщения на месте клика
Новое поле
replace_callback_query_message внутри EphemeralMessageParameters позволяет боту показать эфемерный ответ прямо на месте исходного сообщения - например, там, где пользователь нажал inline-кнопку, а не отправлять его новым сообщением ниже. Для сценариев вида «нажал кнопку - увидел приватный результат прямо тут же» это убирает лишний визуальный шаг.
Редактирование эфемерного контента стало гибче
Три метода получили расширения:
editEphemeralMessageMedia- теперь можно загружать новый файл при редактировании, а не только менять параметры уже отправленного.editEphemeralMessageCaption- добавлен параметрshow_caption_above_media, управляющий положением подписи относительно медиа.editEphemeralMessageText- научился работать со структурированным текстом через параметрrich_message, то есть эфемерное сообщение можно редактировать, превращая обычный текст в Rich Message на лету.
Точечные улучшения для чатов и клавиатур
Помимо двух крупных блоков, релиз содержит набор менее заметных, но полезных изменений.
Приветствия от имени администратора. В
ChatAdministratorRights, ChatMemberAdministrator и метод promoteChatMember добавлен флаг can_send_welcome_messages - отдельное право, позволяющее администратору или боту отправлять приветственные сообщения новым участникам без выдачи более широких прав модерации.
Кнопки, которые видно, но нельзя нажать. У
InlineKeyboardButton появилось свойство disabled, а также отдельный класс DisabledButton. Теперь неактивную кнопку - например, «Следующая страница» на последней странице каталога, или уже использованный промокод - можно показать визуально приглушённой, не перестраивая всю клавиатуру и не убирая кнопку из разметки.
Принудительный ответ через клавиатуры. Поле
force_reply добавлено сразу в InlineKeyboardMarkup и ReplyKeyboardMarkup - раньше эта функция была доступна только через отдельный ForceReply, теперь её можно включить прямо в обычной разметке клавиатуры.
Больше контроля над черновиками. Методы
sendMessageDraft и sendRichMessageDraft (последний появился в 10.1 для стриминга ИИ-ответов) получили параметры can_stop и keep_on_stop - управление тем, может ли пользователь остановить генерацию черновика и сохраняется ли уже написанный текст при остановке.
Что это значит для разработчиков ботов
Сначала аудит, потом обновление. Замена
receiver_user_id и callback_query_id на EphemeralMessageParameters - не рекомендация, а требование: старый код с эфемерным контентом перестанет работать. Прежде чем обновлять библиотеку или SDK, стоит найти в кодовой базе все вызовы, связанные с приватной видимостью сообщений.
Rich Messages становятся интерактивными. Кнопки и документы внутри структурированного сообщения снимают последнее серьёзное ограничение формата, введённого в 10.1. Теперь можно строить полноценный интерфейс - текст, таблицу, файл и кнопку действия - в одном сообщении, без склейки нескольких отправок.
Неактивные кнопки без танцев с разметкой. Флаг
disabled закрывает частую боль: раньше, чтобы «выключить» кнопку, приходилось либо удалять её из клавиатуры, либо подменять на кнопку-заглушку с пустым callback. Теперь это одно поле.
Как использовать в Watbot
Платформа Watbot полностью готова к использованию всех обновлений Bot API 10.3 - можно спокойно собирать чат-бота и применять новые возможности в полном объёме, без ограничений и доработок на вашей стороне.
На Watbot уже можно создавать приватные ответы внутри воронки, которые видит только сам пользователь - например, персональную скидку после прохождения квиза или результат теста в закрытом сообществе, и показывать его сразу на месте нажатой кнопки, без лишнего сообщения в чате.
Доступна настройка каталогов и подборок с постраничной навигацией: кнопки «Назад» и «Далее» в карточках товаров или уроках онлайн-школы можно сделать неактивными на первой и последней странице - они просто гаснут, а не пропадают из разметки и не ломают логику бота.
Можно собирать сообщения, где текстовое описание и приложенный файл идут вместе - коммерческое предложение, договор оферты, методичка курса - с кнопкой действия рядом.
А развёрнутый отзыв клиента или кейс на лендинге внутри бота получится оформить в виде цитаты с раскрытием по клику, не растягивая сообщение на весь экран.
Все эти сценарии собираются в визуальном конструкторе Watbot без программирования - платформа сама поддерживает актуальную версию Bot API, и следить за обновлениями Telegram вам не нужно.
Совместимость
Обновление затрагивает только методы работы с эфемерным контентом - обычные сообщения и уже реализованные Rich Messages из версии 10.1 продолжают работать без изменений. Тем не менее, если чат-бот отправляет приватные ответы или сообщения с таймером самоуничтожения через
receiver_user_id или callback_query_id, обновление библиотеки без правки этой части кода приведёт к ошибкам.
Выводы
Bot API 10.3 закрывает главный пробел Rich Messages из версии 10.1 - отсутствие интерактивности внутри структурированного сообщения. Кнопки, документы и сворачиваемые цитаты делают формат пригодным для полноценных мини-интерфейсов прямо в переписке. Параллельно Telegram наводит порядок в API эфемерных сообщений, объединяя разрозненные параметры в один объект - ценой обратной несовместимости, которую разработчикам придётся закрыть вручную перед обновлением.
Для тех, кто строит ботов с приватными сценариями - тестами, персональными предложениями, закрытыми материалами - этот релиз стоит внимательного аудита кода перед обновлением SDK.
Полезные ссылки
Собрать чат-бот:
👋 Собрать чат-бот "под ключ":
Наше сообщество в МАХ:
Наш канал в МАХ: