Что такое ИИ-агент в Telegram: собираем бота с визуализацией шагов за вечер
Оригинал обрывается на середине предложения, поэтому работаю строго по тому, что передано.

Telegram даёт ботам встроенный интерфейс для отображения хода работы ИИ-агента (программы, которая сама решает, какие действия выполнить для ответа), и собрать его можно за вечер на любом языке, используя HTTP-запросы без привязки к фреймворку.
Пока бот «думает», пользователь видит только «печатает…» и не понимает, завис процесс или идёт работа. Временный черновик с блоком состояния, анимацией и кнопкой отмены решает эту проблему средствами самого Telegram, без сторонних библиотек.
Автор инструмента swift-claw описал на Хабре, как из возможностей Bot API собрать полноценный интерфейс агентного бота. Раньше на Хабре уже разбирали стриминг через sendMessageDraft и формат Rich Messages. Новый материал идёт дальше: связывает статусы инструментов, thinking-блоки и обработку отмены в единый рабочий цикл. Примеры написаны на HTTP и прикладном псевдокоде, поэтому переносятся в любой стек.
Что понадобится
- Telegram-бот с токеном (создаётся через BotFather)
- ID личного чата с ботом (можно получить через
getUpdates) - Любой инструмент для HTTP-запросов: curl, Postman, скрипт на Python, Node.js или чём угодно
- Доступ к методам
sendRichMessageDraftиsendRichMessageв Bot API - Примерно 30 минут на первый рабочий прототип
Пошаговая инструкция
1. Создайте первый черновик с блоком состояния.
Метод sendRichMessageDraft работает в личном чате с ботом. В поле rich_message.html передайте тег <tg-thinking> с текстом текущего действия. Параметр can_stop включает встроенную кнопку Stop.
POST https://api.telegram.org/bot<TOKEN>/sendRichMessageDraft
Content-Type: application/json
{
"chat_id": 123456789,
"draft_id": 42,
"can_stop": true,
"rich_message": {
"html": "<tg-thinking>Ищу тесты микрофонов в наушниках…</tg-thinking>"
}
}
Замените <TOKEN> на токен бота, а 123456789 на реальный ID чата. Число 42 в draft_id условное: для каждого нового запроса пользователя выбирайте новый ненулевой ID, а для всех обновлений одного запуска сохраняйте прежний.
2. Обновляйте черновик при каждом новом шаге.
Повторите запрос с тем же draft_id, заменив текст внутри <tg-thinking>. Telegram обновит существующий черновик, а не создаст новый. Например, когда агент переходит от поиска к чтению страницы, отправьте «Читаю обзор Sony WH-1000XM5…».
Без обновлений черновик исчезнет через 30 секунд. Если инструмент работает долго, обновляйте черновик по таймеру, даже когда подпись не меняется.
3. Свяжите статусы с вызовами инструментов.
ИИ-агент при сложном запросе выполняет несколько действий: ищет источники, читает страницы, сравнивает данные. Одна общая подпись быстро перестаёт объяснять, что происходит. Покажите отдельные шаги и обновляйте их по мере выполнения.
Логика на псевдокоде (названия условные, к Telegram SDK не относятся):
при начале вызова инструмента:
добавить шаг по ID вызова:
подпись, цель, время начала, состояние «выполняется»
запланировать обновление черновика
при завершении вызова инструмента:
найти шаг по ID вызова
записать результат и время выполнения
запланировать обновление черновика
Из текущего списка шагов собирайте содержимое <tg-thinking> и отправляйте с прежним draft_id. Подпись «Ищу тесты микрофона Bose» объясняет действие понятно, без JSON с аргументами. После завершения покажите, что шаг выполнен, а если он упал, укажите ошибку. Иначе неудачный шаг останется в состоянии «выполняется», даже когда агент уже перешёл дальше.
Несколько событий могут прийти почти одновременно. Объединяйте такие изменения в одно обновление с актуальным состоянием всех шагов. Весь динамический текст экранируйте перед вставкой в HTML: поисковые запросы и заголовки страниц могут содержать символы разметки.
4. Сохраните готовый ответ отдельным сообщением.
Черновик подходит для промежуточного состояния. Чтобы результат остался в истории чата, отправьте его через sendRichMessage. Перед этим остановите таймер и отправку обновлений черновика.
POST https://api.telegram.org/bot<TOKEN>/sendRichMessage
Content-Type: application/json
{
"chat_id": 123456789,
"rich_message": {
"html": "<p>Здесь готовое сравнение наушников со ссылками на источники.</p>"
}
}
В rich_message.html передавайте текст без <tg-thinking>: этот блок разрешён только в черновиках. Текст ответа можно показывать в черновике по мере генерации, рядом с блоком состояния, но финальная отправка через sendRichMessage всё равно нужна: именно она сохраняет сообщение.
После первого полного прохода выйдите из чата и откройте его снова: сравнение должно остаться на месте.
5. Добавьте анимированные иконки.
Telegram рекомендует набор custom emoji AIActions для действий вроде поиска и обдумывания. Тег <tg-thinking> поддерживает такие эмодзи. Текстовые статусы работают и без анимации, но иконка делает состояние заметнее: пользователь мгновенно видит, ищет агент или читает страницу.
6. Обработайте нажатие кнопки Stop.
Параметр can_stop: true показывает кнопку, но нажатие нужно обработать на стороне бота. Храните draft_id вместе с задачей. Когда Telegram присылает событие отмены, найдите задачу по этому ID и остановите выполнение.
Что такое ИИ-агент в этом контексте?
ИИ-агент (agent) здесь не абстрактный «умный бот», а программа, которая сама решает, какие инструменты вызвать и в каком порядке, чтобы ответить на запрос. Пользователь просит сравнить наушники, агент сам запускает поиск, выбирает страницы, читает их и собирает ответ со ссылками. Каждое такое действие и есть «вызов инструмента», статус которого мы показываем в черновике.
Это отличает агентный (agentic) подход от обычного чат-бота, который просто генерирует текст: агент выполняет цепочку действий, и пользователь заслуживает видеть, на каком шаге процесс.
Пользователь отправляет: «Сравни Sony WH-1000XM5 и Bose QuietComfort Ultra Headphones для рабочих звонков. Найди информацию в интернете и прочитай по одному источнику для каждой модели. Ответь по-английски, не больше 150 слов, с кратким сравнением и ссылками.»
В чате появляется черновик с текстом «Ищу тесты микрофонов в наушниках…». Через несколько секунд статус меняется: первый поиск завершён, второй выполняется. Затем агент читает страницы, статусы обновляются с подписями вроде «Читаю обзор Sony WH-1000XM5…». Когда всё готово, черновик исчезает, а в чате остаётся финальное сообщение со сравнением и ссылками на источники.
Кнопка Stop видна всё время работы. Если пользователь нажмёт её, бот получит событие отмены и прекратит обращения к инструментам.
- Забыть про таймер обновлений. Черновик исчезает через 30 секунд без обновлений. Если инструмент работает дольше, пользователь увидит пустой чат, хотя агент ещё считает. Обновляйте черновик и по событиям инструментов, и по таймеру.
- Не экранировать динамический текст. Заголовки страниц и поисковые запросы часто содержат угловые скобки, амперсанды и кавычки. Без экранирования HTML сломается, и Telegram не отобразит статус.
- Не обновить упавший шаг. Если вызов инструмента завершился ошибкой, а вы не записали результат, шаг навсегда зависнет в состоянии «выполняется». Обрабатывайте ошибки так же, как успешные завершения.
- Использовать
<tg-thinking>в финальном сообщении. Этот тег разрешён только в черновиках. ВsendRichMessageон не сработает: передавайте чистый HTML. - Не обработать нажатие Stop. Кнопка появится, но нажатие ничего не сделает. Пользователь решит, что бот завис, и уйдёт.
Что делать с этим прямо сейчас, по ролям
Авторам Дзена и контент-мейкерам. Если вы строите Telegram-бота, который готовит черновики постов или ищет фактуру, блок состояния покажет подписчикам, что бот работает, а не молчит. Это снижает число повторных запросов и повышает доверие к инструменту.
Маркетологам и продуктовым командам. Прозрачность работы агента напрямую влияет на удержание: пользователь, который видит прогресс, ждёт результата, а не закрывает чат. Механика реализуется через стандартный Bot API, без платных сервисов.
Разработчикам в РФ и СНГ. Примеры из источника написаны на чистом HTTP, без привязки к языку. Вы можете перенести их в Python, Go, PHP или любой стек, который используете. Из доступных в РФ языковых моделей для агентной логики подойдут YandexGPT и GigaChat, хотя конкретную интеграцию придётся настраивать под их API самостоятельно.
По моим наблюдениям, большинство Telegram-ботов с ИИ до сих пор показывают «печатает…» и ничего больше. Это терпимо для быстрых ответов, но агентный бот, который ищет, читает и сравнивает, может работать десятки секунд. Без визуализации прогресса пользователь уходит.
Механика, описанная в источнике, технически простая: пара HTTP-запросов и таймер. Но она меняет восприятие бота принципиально. Я рекомендую начать с текстовых статусов без анимации, проверить на реальных пользователях и только потом добавлять custom emoji.
Честная оговорка: источник описывает работу в личном чате с ботом. Групповые чаты и каналы могут вести себя иначе, и это нужно проверять отдельно. Кроме того, sendRichMessageDraft и sendRichMessage относительно новые методы, и документация Telegram может обновляться.
Практикум по нейросетям для авторов
Учим строить рабочие связки с ИИ, от промптов (инструкций для модели) до агентных ботов. Без воды, на реальных задачах Дзена.
Посмотреть программуБлок состояния в Telegram делает невидимую работу агента видимой, и это тот случай, когда пять HTTP-запросов и один таймер меняют продукт сильнее, чем новая модель под капотом.

Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».
Читайте также

Что такое ИИ-агент в кастомизации PLM: закрытую систему доработали без узких специалистов
Кастомизация PLM (Product Lifecycle Management, система управления жизненным циклом изделия) силами ИИ-агентов (программ, которые сами выполняют цепочку…

AI SaaS и DevOps: что это за подход, когда модель расследует сбой, а не маскирует его
Инженер показывает нейросети строку ошибки и пишет «почини», а модель мгновенно выдаёт пять вариантов от «очистить кэш» до «перезапустить сервис», и один из…

DeepSeek desktop вышел для Windows и Mac: агент работает в фоне, но аналитику не отключить
DeepSeek 30 сентября выпустила десктопное приложение Harness Desktop для Windows и Mac, которое превращает браузерного ИИ-агента в полноценную программу с…
Комментарии