Что нового в Telegram Bot API 10.0–10.3: rich-сообщения, эфемерные сообщения и гостевой режим
Версия Telegram Bot API 10.3 вышла 24 августа 2026 года и на сегодня остаётся актуальной. За четыре релиза ветки 10.x боты получили гостевой режим, rich-сообщения с таблицами и стримингом ответов ИИ, эфемерные сообщения, которые в группе видит только один пользователь, обработку заявок на вступление через Mini App и защиту Mini Apps от вызовов с чужих доменов. Разбираем, что нового в Telegram Bot API по версиям, — с примерами запросов и чек-листом миграции.
Bot API 10.0–10.3 коротко
| Версия | Дата | Главное |
|---|---|---|
| 10.0 | 8 мая 2026 | Гостевой режим, live photos (sendLivePhoto), медиа в опросах, удаление реакций |
| 10.1 | 11 июня 2026 | Rich-сообщения (sendRichMessage, sendRichMessageDraft), заявки на вступление (answerChatJoinRequestQuery) |
| 10.2 | 14 июля 2026 | Эфемерные сообщения, сообщества (Communities), апдейт subscription, защита Mini Apps по origin |
| 10.3 | 24 августа 2026 | EphemeralMessageParameters, кнопки и документы в rich-сообщениях, DisabledButton, остановка генерации |
Что нового в Telegram Bot API 10.3
Самое важное изменение 10.3 ломает обратную совместимость. Параметры эфемерных сообщений receiver_user_id и callback_query_id, добавленные в 10.2, убрали из 13 методов отправки (sendMessage, sendPhoto, sendVideo, sendDocument, sendSticker и других) и перенесли в объект EphemeralMessageParameters, который передаётся в параметре ephemeral_message_parameters. Этот же параметр получил sendRichMessage. Остальные новинки:
replace_callback_query_message— эфемерный ответ показывается на месте исходного сообщения с нажатой кнопкой;- в
editEphemeralMessageMediaможно загружать новые файлы, вeditEphemeralMessageCaptionпоявилсяshow_caption_above_media, вeditEphemeralMessageText—rich_message; - rich-сообщения: кнопки (
RichMessageButton, теги<tg-button>и<tg-button-row>), компактные таблицы (is_compact), сворачиваемые цитаты и блоки с документами (<tg-document>, ссылкиtg://document?id=); - черновики:
can_stopиkeep_on_stopвsendMessageDraftиsendRichMessageDraftи новый апдейтstopped_message_generation, когда пользователь остановил генерацию; - клавиатуры: неактивная кнопка
DisabledButton(полеdisabledвInlineKeyboardButton) и полеforce_replyвInlineKeyboardMarkupиReplyKeyboardMarkup; - право администратора
can_send_welcome_messages(в том числе вpromoteChatMember), сервисное сообщениеcommunity_chat_joined, поляtext,entitiesиis_privateвUniqueGiftInfo.
Rich-сообщения: sendRichMessage и стриминг ответов ИИ
Rich-сообщения появились в 10.1 и рассчитаны на структурированный контент: отчёты, документацию, ответы ИИ-ассистентов. Метод sendRichMessage принимает объект rich_message (InputRichMessage), в котором заполняется ровно одно из полей: markdown, html или blocks. Rich Markdown по возможности совместим с GitHub Flavored Markdown: заголовки, таблицы, списки задач, формулы LaTeX, сноски и медиаблоки.
curl -s -X POST "https://api.telegram.org/bot$TOKEN/sendRichMessage" \
-H "Content-Type: application/json" \
-d '{
"chat_id": 123456789,
"rich_message": {
"markdown": "# Отчёт за неделю\n\n| Метрика | Значение |\n|:---|---:|\n| Новые пользователи | **1 204** |\n| Конверсия | 3,2% |\n\n- [x] Релиз 2.4\n- [ ] Переход на Bot API 10.3"
}
}'
Ограничения: до 32 768 символов текста, до 500 блоков, до 16 уровней вложенности, до 50 медиа и до 20 столбцов в таблице. Отредактировать отправленное rich-сообщение можно через editMessageText с параметром rich_message.
Для ИИ-ботов главное — стриминг. sendRichMessageDraft (и sendMessageDraft для обычного текста) показывает в личном чате черновик, который обновляется по мере генерации. Черновик — временное превью примерно на 30 секунд: когда ответ готов, обязательно отправьте его через sendRichMessage, иначе он не сохранится в чате.
import requests
API_URL = "https://api.telegram.org/bot123456789:AAEexampleTokenReplaceWithYours"
CHAT_ID, DRAFT_ID = 123456789, 1 # draft_id — любое ненулевое число
text = ""
for chunk in ["## Ответ\n\n", "Собираю данные…", "\n\n- пункт 1\n- пункт 2"]: # куски от LLM
text += chunk
requests.post(f"{API_URL}/sendRichMessageDraft", json={
"chat_id": CHAT_ID, "draft_id": DRAFT_ID,
"rich_message": {"markdown": text}, "can_stop": True,
}, timeout=10)
requests.post(f"{API_URL}/sendRichMessage", json={
"chat_id": CHAT_ID, "rich_message": {"markdown": text},
}, timeout=10)
С can_stop пользователь увидит кнопку остановки, а бот получит апдейт stopped_message_generation — по нему стоит прервать генерацию на стороне модели. Пустой текст в sendMessageDraft или тег <tg-thinking> в rich-черновике показывают заглушку «Thinking...».
Эфемерные сообщения: ответ, который видит один участник
Эфемерные сообщения (10.2) позволяют боту ответить в группе так, что сообщение увидят только конкретный пользователь и сам бот: приветствия, подсказки, персональные сводки. Правила отправки из документации:
- любой бот может отправить эфемерное сообщение в течение 15 секунд после действия пользователя, передав
callback_query_idнажатой кнопки илиreply_parameters.ephemeral_message_idвходящего эфемерного сообщения; - бот-администратор может так писать любому участнику (кроме ботов) в любой момент, без этих идентификаторов;
- доставка не гарантируется, особенно если пользователь офлайн.
Запрос в формате Bot API 10.3:
curl -s -X POST "https://api.telegram.org/bot$TOKEN/sendMessage" \
-H "Content-Type: application/json" \
-d '{
"chat_id": -1001234567890,
"text": "Это сообщение видите только вы",
"ephemeral_message_parameters": {
"receiver_user_id": 123456789,
"callback_query_id": "ID_ИЗ_CALLBACK_QUERY"
}
}'
В ответе у объекта Message будет поле ephemeral_message_id. По нему сообщение редактируют методами editEphemeralMessageText, editEphemeralMessageMedia, editEphemeralMessageCaption, editEphemeralMessageReplyMarkup и удаляют через deleteEphemeralMessage:
curl -s -X POST "https://api.telegram.org/bot$TOKEN/deleteEphemeralMessage" \
-H "Content-Type: application/json" \
-d '{"chat_id": -1001234567890, "receiver_user_id": 123456789, "ephemeral_message_id": 17}'
Работает и обратное направление: если в setMyCommands пометить команду флагом is_ephemeral, её вызов пользователем не увидят другие участники чата.
Заявки на вступление: answerChatJoinRequestQuery
С версии 10.1 бот, назначенный обрабатывать заявки на вступление в чат, получает в апдейте chat_join_request поле query_id. Отреагировать нужно в течение 10 секунд одним из двух способов:
- показать пользователю Mini App (капча, анкета, правила) методом
sendChatJoinRequestWebAppс параметрамиchat_join_request_query_idиweb_app_url— приложение получитchat_join_request_query_idвinitData; - сразу вынести решение методом answerChatJoinRequestQuery.
curl -s -X POST "https://api.telegram.org/bot$TOKEN/answerChatJoinRequestQuery" \
-H "Content-Type: application/json" \
-d '{"chat_join_request_query_id": "QUERY_ID_ИЗ_АПДЕЙТА", "result": "approve"}'
Параметр result принимает "approve" (впустить), "decline" (отклонить) или "queue" (оставить решение другим администраторам). Поддерживает ли бот такие запросы, видно по полю supports_join_request_queries в ответе getMe, а бот-охранник чата указан в поле guard_bot ответа getChat.
Bot API 10.0: гостевой режим, live photos и опросы с медиа
- Гостевой режим. Включается в Mini App @BotFather (пункт Guest Mode). Если бота упомянуть (
@botname) или ответить на его сообщение в чате, где его нет, он получит апдейтguest_messageи сможет один раз ответить черезanswerGuestQuery. Доступа к истории и списку участников гостевой бот не получает. - Реакции. Методы
deleteMessageReactionиdeleteAllMessageReactions(до 10 000 последних реакций пользователя или чата), правоcan_react_to_messages. - Опросы. Медиа в самих опросах, в вариантах ответа и в пояснениях к викторинам (
media,explanation_media), параметрыmembers_onlyиcountry_codesвsendPoll; минимум вариантов снижен с 2 до 1. - Live photos. Метод
sendLivePhoto, поддержка в альбомах иeditMessageMedia. - Прочее.
return_botsвgetChatAdministrators,getManagedBotAccessSettingsиsetManagedBotAccessSettings,getUserPersonalChatMessages, отправка сообщений другим ботам по username, если оба включили общение «бот — бот».
Bot API 10.2: сообщества, подписки и защита Mini Apps
- Сообщества (Communities) — несколько супергрупп, каналов и ботов, объединённых общей темой: тип
Community, сервисные сообщенияcommunity_chat_addedиcommunity_chat_removed, полеcommunityвChatFullInfo. - Подписки. Апдейт
subscription(BotSubscriptionUpdated) сообщает об изменениях платной подписки пользователя. - Rich-сообщения из блоков. Классы
InputRichBlock…и полеmediaдля явной передачи файлов. - Безопасность Mini Apps. Методы Mini App больше нельзя вызывать со страниц, origin которых отличается от домена приложения. Защиту включили для всех 20 июля 2026 года; отключить её можно в Mini App @BotFather, но тогда ответственность за ссылки на недоверенные сайты ложится на вас. Как учесть это при тестировании — в гайде тестирование Mini App.
Чек-лист миграции на Bot API 10.3
- Если вы уже отправляли эфемерные сообщения в формате 10.2, перенесите
receiver_user_idиcallback_query_idвнутрьephemeral_message_parameters. - Если в
allowed_updatesтипы перечислены явно, добавьте нужные новые:guest_message,subscription,stopped_message_generation. Иначе эти апдейты не придут. - Обновите библиотеку (python-telegram-bot, aiogram, grammY, Telegraf) до версии с поддержкой 10.3. Пока поддержки нет, новые методы можно вызывать обычным HTTP-запросом.
- Проверьте Mini Apps: все страницы, которые обращаются к
Telegram.WebApp, должны открываться с домена приложения. - Если код разбирает опросы, учтите, что теперь в них может быть всего один вариант ответа.
Как попробовать новые методы
Все 185 методов Bot API 10.3 доступны в Bot API Tester: откройте sendRichMessage в тестере, вставьте токен тестового бота и отправьте rich-сообщение из примера выше. Схемы запросов удобно смотреть в Swagger-документации (группы «Rich-сообщения» и «Эфемерные»), описание параметров — в справочнике методов. Базовые приёмы отправки и форматирования собраны в гайде как отправить сообщение через бота, ограничения по частоте и размерам — в гайде лимиты Telegram Bot API.
Частые вопросы
Какая последняя версия Telegram Bot API?
Bot API 10.3 от 24 августа 2026 года. Все изменения Telegram публикует в официальном changelog на core.telegram.org.
Что такое rich-сообщения в Telegram?
Это сообщения со сложной структурой: заголовки, таблицы, списки, формулы, медиа и кнопки. Их отправляют методом sendRichMessage (Bot API 10.1), а для потокового вывода ответа есть sendRichMessageDraft.
Что такое эфемерные сообщения в Telegram-боте?
Сообщения в группе, которые видят только один пользователь и бот. Они появились в Bot API 10.2, а с версии 10.3 получатель указывается в объекте ephemeral_message_parameters.
Нужно ли переписывать бота под Bot API 10.3?
Обязательно — только если вы уже отправляли эфемерные сообщения с параметрами receiver_user_id и callback_query_id из 10.2: в 10.3 их перенесли в ephemeral_message_parameters. Остальные изменения в основном добавляют новые возможности.
Как работает answerChatJoinRequestQuery?
Бот, назначенный обрабатывать заявки, получает query_id в апдейте chat_join_request и в течение 10 секунд вызывает answerChatJoinRequestQuery с результатом approve, decline или queue — либо сначала показывает Mini App через sendChatJoinRequestWebApp.
Как попробовать методы Bot API 10.3 без кода?
Откройте Bot API Tester: в нём есть все 185 методов версии 10.3, включая sendRichMessage и deleteEphemeralMessage. Вставьте токен, заполните параметры и нажмите Ctrl+Enter.
Читайте также
Как создать бота в Телеграм: от @BotFather до первого сообщения
Как создать бота в Телеграм: регистрация в @BotFather, токен, проверка через getMe, первое сообщение на curl и Python, команды и описание бота.
Лимиты Telegram Bot API: сообщения в секунду, ошибка 429 и размеры файлов
Все лимиты Telegram Bot API в одном месте: сообщения в секунду, ошибка 429 и retry_after, платные рассылки, размеры файлов, длина текста и подписи.
Как отправить сообщение через бота Telegram: sendMessage, разметка и кнопки
Как отправить сообщение через бота Telegram: sendMessage на curl, Python и JavaScript, parse_mode HTML и MarkdownV2, кнопки и ошибки 400, 403, 429.
Токен бота Telegram: как получить, где найти, как проверить и отозвать
Как получить токен бота Телеграм в @BotFather, где взять токен уже созданного бота, как проверить его через getMe и что делать, если токен утёк.
Вебхук для Telegram-бота: настройка setWebhook, проверка и удаление
Как настроить вебхук Телеграм-бота: требования к HTTPS и портам, setWebhook с secret_token, проверка через getWebhookInfo, удаление и частые ошибки.
Как узнать chat id в Telegram: пользователь, группа, канал и тема форума
Как узнать chat id в Telegram через getUpdates: личный чат, группа, супергруппа, канал и тема форума. Форматы id с -100 и что делать с пустым result.
Тестирование Telegram Mini App: от браузера до отладки на телефоне
Тестирование Telegram Mini App по шагам: mock-режим в браузере, HTTPS-туннель для localhost, тестовая среда, DevTools на телефоне и проверка initData.