Telegram начал поэтапно внедрять интерактивные виджеты, которые работают прямо внутри сообщений от ботов. В них можно запускать компактные игры и опросы, менять параметры заказа, показывать обновляемые статусы и создавать другие элементы, реагирующие на нажатия пользователя.
О функции стало известно 9 ноября. Spot сообщил, что она появилась в Telegram 13.2 для Android, iOS и macOS и в версии 7.4 настольного клиента. Отдельного анонса в блоге мессенджера не было, но возможность уже описана в официальной документации Telegram и добавлена в Bot API.
В рабочей среде запуск пока ограничен: бот может отправить виджет только пользователю в личном чате. Такие сообщения защищены от пересылки. Работа в группах, пересылка и отправка через inline-режим доступны на тестовом сервере, но ещё не включены для обычных пользователей. Напрямую публиковать виджеты в каналах нельзя.
Читайте также
Виджет представляет собой один HTML-документ со встроенными CSS и JavaScript. После сжатия код должен укладываться в 4 КБ.
Код выполняется в изолированном движке QuickJS. Виджет не может обращаться к сайтам и серверным API через fetch, XMLHttpRequest или WebSocket, загружать внешние скрипты, шрифты и изображения. Если карточке нужны актуальная цена, состояние заказа или другие внешние данные, она должна отправить короткий запрос боту, а бот — получить информацию на сервере и обновить состояние сообщения.
Сам виджет не меняет сохранённое состояние напрямую. Это делает бот, поэтому одна и та же карточка может показать новый результат опроса, очередной ход в игре или изменившийся статус заказа без повторной отправки HTML. Чтобы заменить интерфейс или логику, разработчику придётся прислать новый виджет.
Новый формат не заменяет Telegram Mini Apps. Мини-приложение загружается с внешнего сервера и открывается на отдельном экране, поэтому подходит для каталогов, сложных форм и сервисов с большим количеством данных. Виджет остаётся частью переписки, работает без прямого доступа к сети и рассчитан на короткие сценарии.
При этом в лимит помещаются небольшие игры. Автор Хабра собрал для проверки игру с падающими этажами башни: весь её код занял немногим больше 3 КБ после сжатия.
Bot API также предусматривает запросы с данными TON-кошелька, подписанными кошельком сведениями и уведомлениями о транзакциях. Однако документация не позволяет считать любой виджет универсальной платёжной формой: конкретный сценарий должен реализовать бот, а доступные операции зависят от кошелька и API.
