Telegram Bot API
🌐 Русский

Что нового в Telegram Bot API 10.0–10.3: rich-сообщения, эфемерные сообщения и гостевой режим

· 9 мин чтения

Версия Telegram Bot API 10.3 вышла 24 августа 2026 года и на сегодня остаётся актуальной. За четыре релиза ветки 10.x боты получили гостевой режим, rich-сообщения с таблицами и стримингом ответов ИИ, эфемерные сообщения, которые в группе видит только один пользователь, обработку заявок на вступление через Mini App и защиту Mini Apps от вызовов с чужих доменов. Разбираем, что нового в Telegram Bot API по версиям, — с примерами запросов и чек-листом миграции.

Bot API 10.0–10.3 коротко

ВерсияДатаГлавное
10.08 мая 2026Гостевой режим, live photos (sendLivePhoto), медиа в опросах, удаление реакций
10.111 июня 2026Rich-сообщения (sendRichMessage, sendRichMessageDraft), заявки на вступление (answerChatJoinRequestQuery)
10.214 июля 2026Эфемерные сообщения, сообщества (Communities), апдейт subscription, защита Mini Apps по origin
10.324 августа 2026EphemeralMessageParameters, кнопки и документы в 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. Остальные новинки:

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) позволяют боту ответить в группе так, что сообщение увидят только конкретный пользователь и сам бот: приветствия, подсказки, персональные сводки. Правила отправки из документации:

Запрос в формате 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 секунд одним из двух способов:

  1. показать пользователю Mini App (капча, анкета, правила) методом sendChatJoinRequestWebApp с параметрами chat_join_request_query_id и web_app_url — приложение получит chat_join_request_query_id в initData;
  2. сразу вынести решение методом 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 и опросы с медиа

Bot API 10.2: сообщества, подписки и защита Mini Apps

Чек-лист миграции на Bot API 10.3

  1. Если вы уже отправляли эфемерные сообщения в формате 10.2, перенесите receiver_user_id и callback_query_id внутрь ephemeral_message_parameters.
  2. Если в allowed_updates типы перечислены явно, добавьте нужные новые: guest_message, subscription, stopped_message_generation. Иначе эти апдейты не придут.
  3. Обновите библиотеку (python-telegram-bot, aiogram, grammY, Telegraf) до версии с поддержкой 10.3. Пока поддержки нет, новые методы можно вызывать обычным HTTP-запросом.
  4. Проверьте Mini Apps: все страницы, которые обращаются к Telegram.WebApp, должны открываться с домена приложения.
  5. Если код разбирает опросы, учтите, что теперь в них может быть всего один вариант ответа.

Как попробовать новые методы

Все 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.