Телеграм выпустил Bot API 10.4: боты присылают HTML-виджеты прямо в сообщениях
Опрос, промокод или кнопка оплаты теперь живут прямо в сообщении бота. Разбираем, что умеют виджеты и какие у них ограничения.
9 ноября Телеграм выпустил Bot API 10.4. Главное в обновлении — виджеты: небольшие интерактивные блоки, которые бот рисует прямо в сообщении. В справке Телеграм приводит примеры: опрос, где столбики двигаются по мере голосования, курс валюты, игра на двоих, промокод, который копируется по нажатию. Пока виджеты работают только в личном чате с ботом, а переслать такое сообщение нельзя.
Как устроен виджет
Виджет — один HTML-документ со встроенными CSS и JavaScript: до 32 КБ кода и до 4 КБ после сжатия. Картинки — только встроенные, в виде SVG или data-ссылок. Код выполняется на устройстве пользователя в песочнице без доступа к сети: внешние скрипты, шрифты и изображения не загружаются, запросы в интернет не проходят. Код задается при отправке и больше не меняется. Меняется состояние, и пишет его только бот. По нажатию виджет может отправить боту запрос до 64 байт, бот отвечает данными до 1024 байт и обновляет виджет без новых сообщений. Ввести текст в виджете нельзя: поля ввода, выпадающие списки и текстовые области удаляются, остаются кнопки, нажатия и горизонтальные жесты. Общий виджет, как опрос, один на сервере: бот показывает его в любом числе сообщений, и обновление доходит до всех.
Где работает сейчас
Сейчас в обычном Телеграме бот отправляет виджеты только в личный чат с пользователем, и такие сообщения защищены от пересылки. Виджеты в группах, во встроенном режиме и в пересылках пока работают только на тестовом сервере. Опубликовать виджет в канале нельзя ни напрямую, ни через бота. Переслать его туда смогут пользователи, но и это пока работает лишь на тестовом сервере. Приложения без поддержки виджетов покажут сообщение как неподдерживаемый файл с подписью. По данным Код.ру, виджеты заработали в версии приложения 13.2.
Оплата через кошелек
Виджет может попросить пользователя оплатить или подписать данные во встроенном кошельке Телеграма, форматы — как у TON Connect. По нажатию бот получает карточку кошелька пользователя с адресом и балансом и присылает транзакцию, а пользователь подтверждает ее в окне кошелька. Результат бот проверяет в блокчейне. Если у пользователя нет кошелька в приложении — например, версия старая или кошелек недоступен в его стране, — справка советует кнопку оплаты не рисовать.
Чем отличается от мини-приложения
Мини-приложение — веб-страница на вашем сервере, которая открывается по кнопке или ссылке. Виджет живет внутри сообщения, виден при прокрутке чата и не ходит в сеть. Из виджета можно открыть ссылку, перейти в бота или мини-приложение: для всего крупнее Телеграм советует именно их.
Что еще в обновлении
Боты могут отправлять скрытые ответы на нажатия кнопок в любом чате, кроме личных сообщений каналов: ответ увидит только тот, кто нажал. Подписчики Telegram Premium могут дать двум своим ботам второй юзернейм с окончаниями вроде agent, ai, app или game. Номера банковских карт и адреса в блокчейне TON выделяются в сообщениях отдельными элементами, а на темы в личном чате с ботом можно давать ссылки.
Что это значит для арбитражника
Если воронка ведет трафик в бота, виджет дает интерактив без мини-приложения и отдельной веб-страницы: квиз, калькулятор, промокод в одно нажатие. Собрать в нем контакт не выйдет — полей ввода нет, телефон по-прежнему просите кнопкой запроса контакта, почту — обычным сообщением. Пиксели и внешняя аналитика внутри виджета не загрузятся, считать действия придется по запросам, которые приходят боту. В канал виджет не поставить, так что реклама в каналах по-прежнему ведет в бота, а виджет встречает пользователя уже там. И пишите к сообщению осмысленную подпись: у пользователей со старой версией приложения вместо виджета будет только она.
Материалы по теме
Alibaba открыла превью Qwen4-Max: контекст 1 млн токенов, доступ через Token Plan до 25 ноября
Замер на Хабре: из России замораживают целые сети зарубежных хостингов, среди них Hetzner, OVH и DigitalOcean
Вставить свои 5 копеек: