ГлавнаяБлогBot API 10.3
🤖 Платформа · по документации

Bot API 10.3: кнопки внутри сообщений и новое право админа

24 августа 2026 года Telegram выпустил Bot API 10.3 — четвёртое обновление ботов с мая. Коротко: кнопки теперь ставятся прямо внутрь форматированного сообщения, а не строкой под ним; появилась кнопка, которая намеренно ничего не делает; бот научился подменять собственный пост персональным окном, видимым одному человеку; у администраторов завелось право can_send_welcome_messages. В схеме MTProto, по которой работают userbot-клиенты и парсеры, из этого нет ничего — файлы схемы после релиза не изменились. Ниже разбор по первоисточнику: что приехало, чего в обновлении нет и что оно меняет, если вы гоняете трафик, а не пишете ботов.

Что нового в Bot API 10.3

Обновление разложено по четырём блокам. Даю их так, как они идут в официальном списке изменений, — с оригинальными именами классов, чтобы это можно было проверить, а не принимать на веру.

БлокЧто приехало
КнопкиRichMessageButton, RichTextButton, RichBlockButtons, DisabledButton, поле disabled у инлайн-кнопки, force_reply у обеих клавиатур
Эфемерные сообщенияобъект EphemeralMessageParameters вместо двух отдельных параметров в тринадцати методах, поле replace_callback_query_message
Права админаcan_send_welcome_messages в правах, в описании админа и параметром в promoteChatMember
Черновики и агентыcan_stop и keep_on_stop у методов черновика, апдейт MessageGenerationStopped
Сообществаслужебное сообщение CommunityChatJoined — человек вступил в чат из сообщества

Плюс мелочи для форматирования: к рич-сообщениям теперь можно прикреплять файлы (RichBlockDocument), таблицы получили компактный режим is_compact, а цитаты — раскрывающийся вариант. И темп, который стоит держать в голове: 10.0 вышла 8 мая, 10.1 — 11 июня, 10.2 — 14 июля, 10.3 — 24 августа. Ровно раз в месяц с небольшим сдвигом, и каждый раз с ломающими правками. Если у вас есть свой бот, это календарь, по которому стоит планировать проверку.

Что такое кнопки внутри сообщения

До этого обновления кнопка в Telegram жила строго под сообщением: текст сверху, клавиатура снизу. Рич-сообщения, появившиеся в 10.1, дали ботам заголовки, таблицы, списки и медиа-блоки — но кнопки всё равно оставались отдельным этажом. В 10.3 кнопка стала таким же блоком, как абзац или таблица: RichBlockButtons — это ряд кнопок внутри тела сообщения, а RichTextButton — кнопка, встроенная в текст.

Разница не косметическая. Одно сообщение теперь вмещает целый сценарий: описание товара, таблица с характеристиками, кнопка «взять» — и следом второй товар со своей кнопкой. В анонсе Telegram называет это «революцией кнопок» и перечисляет, что они умеют из коробки: коллбэки, мини-приложения, Login URL, копирование текста. Для тех, кто собирает воронку в боте, это означает меньше шагов: там, где раньше человек проходил три экрана, теперь хватает одного экрана с несколькими развилками.

Зачем боту кнопка, которая ничего не делает

Самое короткое описание во всём обновлении досталось новому объекту DisabledButton: «представляет отключённую кнопку, которая ничего не делает» и «в настоящее время не содержит информации». Ни одного поля внутри. Включается флагом disabled у обычной инлайн-кнопки, в разметке рич-сообщений — атрибутом type="disabled".

На первый взгляд ерунда, на практике — то, чего в Bot API не хватало годами. Раньше «неактивный» шаг приходилось имитировать: рисовать кнопку-заглушку, которая на нажатие отвечает «пока недоступно», или перерисовывать клавиатуру целиком. Теперь состояние «этот шаг ещё закрыт» выражается штатно и выглядит одинаково во всех клиентах. Заодно в 10.3 приехало поле force_reply у обеих клавиатур — и инлайн, и обычной.

Почему бот показывает одному человеку не то, что видят все

Эфемерные сообщения появились месяцем раньше, в 10.2: бот отвечает в группе так, что ответ видит один человек, а в общей ленте его нет. Разбор этой механики у нас лежит в статье про ботов в чате. В 10.3 её переписали дважды — по форме и по сути.

По форме: параметры receiver_user_id и callback_query_id убраны из тринадцати методов отправки и заменены одним объектом ephemeral_message_parameters. Это ломающее изменение, и прожили старые параметры ровно сорок один день. Кто писал интеграцию в июле, поедет её править.

Второе изменение интереснее. В новом объекте есть поле replace_callback_query_message: личное сообщение показывается на месте исходного. То есть под общим постом висит кнопка, человек её нажимает — и на месте поста видит свою версию: свой расчёт, свою ссылку. Соседи по чату продолжают видеть исходный пост. Одна оговорка из документации при этом никуда не делась: доставка не гарантируется, особенно если человек офлайн. То же самое сказано и про правку эфемерного сообщения — событие редактирования тоже может не дойти.

Мелочь, которая сэкономит вечер. У поля replace_callback_query_message есть жёсткое ограничение: для коллбэков, прилетевших из самого эфемерного сообщения, оно обязано быть False — такие сообщения правятся обычными методами editEphemeralMessage…. Заодно эти методы подтянули: медиа теперь можно загрузить новым файлом, у подписи появился show_caption_above_media, а текст можно заменить рич-сообщением.

Что за право can_send_welcome_messages

Новых прав администратора в Telegram не появляется годами, поэтому это самая заметная строчка обновления для владельцев чатов. Формулировка дословная: «администратор может управлять приветственными сообщениями чата или, в случае ботов, отправлять их напрямую». Право приехало сразу в три места: в объект прав ChatAdministratorRights, в описание админа ChatMemberAdministrator и параметром в метод promoteChatMember.

При сверке справочника я наткнулся на деталь, которую стоит записать. Соседние права — управление темами, тегами участников, личными сообщениями канала — помечены как необязательные и снабжены оговоркой про тип чата: «только для супергрупп», «только для каналов». У приветствий ни того, ни другого: поле идёт без пометки Optional и без ограничения по типу чата. Это либо сознательное решение отдавать его всегда, либо недосмотр в документации. Telegram такие вещи не комментирует, так что фиксирую как есть.

Дополнение от 28 августа. Через день после релиза, 25 августа, Telegram выкатил клиентскую часть: у групп и каналов появились приветственные сообщения — настройка в профиле чата, видит их только вступивший, бот для этого не нужен. Правоcan_send_welcome_messages при таком раскладе нужно боту не для обычного приветствия, а для персонального, разного для разных людей.

Как боты стримят ответ и что делает кнопка «Стоп»

Вместе с 10.3 Telegram переписал страницу возможностей ботов и завёл там три новых раздела: «Streaming Replies», «Topics in Private Chats» и «AI Agents». Сама механика стриминга приехала раньше, но описали её только сейчас — и описание оказалось важнее новых полей.

Работает так: пока ответ генерируется, бот шлёт черновик методом sendMessageDraft и обновляет его. Документация называет черновик временным превью на 30 секунд и прямо предупреждает: как только текст готов, бот обязан отправить обычное сообщение, иначе в чате не останется ничего. У черновика есть свой draft_id — если слать правки с тем же номером, они анимируются, с другим номером черновик заменяется рывком. Пустой текст показывает плашку «Thinking…». Работает только в личных чатах.

Что добавили в 10.3: параметр can_stop рисует человеку кнопку «Стоп», а бот получает апдейт MessageGenerationStopped — там чат, тред и номер черновика. Параметр keep_on_stop оставляет недописанный текст в чате, но с честной оговоркой: черновик всё равно исчезнет «через короткое время или когда бот отправит сообщение», и чтобы сохранить его по-настоящему, надо отправить его новым сообщением.

Отдельно отмечу формулировку про плашку «Thinking…» и тег <tg-thinking>: «это элемент подачи, а не расшифровка рассуждений модели». Редкий случай, когда платформа прямым текстом говорит, что видимая «работа мысли» в интерфейсе — декорация. Я бы такую честность отметил отдельно, её в документациях почти не встретишь.

Чего в обновлении нет

Тут важнее того, что есть, потому что вокруг релизов Telegram всегда нарастает слой догадок. Три вещи проверены сегодня и не подтвердились.

  1. Метода «отправить приветствие» не существует. Право есть, а метода в справочнике нет — как именно бот «отправляет приветствия напрямую», не расписано ни строчкой.
  2. В MTProto этого нет вообще. Публичная схема, машиночитаемый конфиг и справочник ошибок после выхода 10.3 не изменились ни на байт, а поиск по ним не даёт ни одного упоминания приветственных прав и стриминга черновиков. Для userbot-клиента ни того, ни другого не существует.
  3. Сколько живёт эфемерное сообщение, по-прежнему не опубликовано. Документация ограничивается словами «может исчезнуть само через некоторое время». Конкретных секунд нет — и выдумывать их не буду.

Что это меняет, если вы собираете аудиторию чата

Прямой связи между обновлением ботов и парсингом нет, а вот косвенная есть, и она растёт третий релиз подряд. Telegram методично выдаёт ботам способы разговаривать с человеком мимо общей ленты: эфемерное сообщение видно одному, черновик живёт полминуты и исчезает, персональный оверлей подменяет пост только для нажавшего. Ни одна из этих реплик в истории чата не остаётся.

Для оценки чата это означает ровно одно: строка «мало кто пишет» стала слабее как признак. Часть общения ушла в личные ответы бота, и в ленте её не видно. Практический вывод тот же, что и месяц назад, только теперь он подпёрт ещё одним релизом: не судите о чате по одному режиму сбора. Берите участников чата и активных писавших вместе и смотрите на расхождение — оно само по себе диагноз. Для каналов ту же роль играют комментаторы: комментарии остаются обычными сообщениями, и их эфемерка не трогает.

Что это меняет для инвайтинга и сообществ

Право на приветствия — это про первое, что видит человек, которого вы привели. Раньше приветствие было настройкой чата и обычным сообщением бота-помощника, теперь это отдельное право, которое выдаётся или не выдаётся при назначении админом. Если вы гоните людей в свой чат, вопрос «а что там встречает новичка» стал управляемым явно: право можно выдать боту, можно не выдавать. Как устроен сам приход людей, разобрано в инструкции по инвайтингу, а барьер на входе — в статье про заявки на вступление.

Второй сюжет — служебное сообщение CommunityChatJoined. Внутри у него одно поле: сообщество, из которого человек пришёл в чат. Мелочь, но показательная: у админа появляется машиночитаемый признак «этот пришёл из кластера, а не с улицы». Что такое сообщества и почему пять чатов одного кластера дают не пять аудиторий, а одну с повторами, разобрано в материале про папки и Communities и в разборе пересечения аудиторий.

И контраст, который стоит держать в голове тем, кто смотрит в сторону автоматических комментариев. Платформа третий релиз подряд выдаёт ботам легальные способы говорить, не занимая ленту, — с правами, апдейтами и своими объектами. На этом фоне нейрокомментинг выглядит всё более заметным: он делает ровно обратное — занимает ленту чужим текстом.

Что делать прямо сейчас

Если своего бота у вас нет, делать ничего не нужно — это обновление до вас доедет само, обновлением клиента. Если бот есть, список короткий.

  1. Проверьте эфемерные вызовы. Старые receiver_user_id и callback_query_id в тринадцати методах заменены объектом. Это первое, что сломается.
  2. Пересоберите права ботов-админов. В объекте прав стало на поле больше, и если вы собираете права списком, лишнее поле может приехать неожиданно.
  3. Не тестируйте на боевом. У Telegram есть отдельная песочница со своими номерами и своим сервером Bot API — как она устроена и почему лимиты там строже, а не мягче, разобрано в статье про тестовую среду. В телеграмме такие обновления приезжают без предупреждения, и ловить их боевым аккаунтом — дорого.
  4. Держите под тесты отдельные аккаунты и адреса. Проверка сценария в группе — это несколько живых участников, а не один ваш профиль.

Последний пункт — единственное место, где обновление упирается в закупку. Тестовый сценарий с ботом в группе требует нескольких аккаунтов: один админ, один-два обычных участника, кто-то с выключенными уведомлениями. В каталоге готовых Telegram-аккаунтов они лежат по странам и типам, каждый проверяется вживую в момент выдачи. Разводить их по адресам — резидентными прокси, а если сценарий чувствителен к качеству адреса — мобильными 4G/5G. Найти живые чаты под тест, а не мёртвые вывески, помогает поиск чатов.

Частые вопросы

Что нового в Bot API 10.3?

Обновление вышло 24 августа 2026 года и состоит из четырёх кусков. Первый — кнопки: их можно ставить прямо внутрь форматированного сообщения (классы RichMessageButton, RichTextButton, RichBlockButtons), а обычную инлайн-кнопку помечать отключённой через новый класс DisabledButton. Второй — эфемерные сообщения: параметры собрали в объект EphemeralMessageParameters, и там появилось поле replace_callback_query_message, которое показывает личное сообщение на месте исходного. Третий — новое право администратора can_send_welcome_messages. Четвёртый — стриминг черновиков: кнопка «Стоп» через can_stop и возможность оставить недописанный черновик в чате через keep_on_stop.

Что такое отключённая кнопка в Telegram-боте?

Это кнопка, которая видна, но не нажимается. В справочнике новый объект описан предельно скупо: «представляет отключённую кнопку, которая ничего не делает» и «в настоящее время не содержит информации» — то есть внутри у него нет ни одного поля. Подключается через необязательное поле disabled у InlineKeyboardButton, а в разметке рич-сообщений — тегом tg-button с типом disabled. Практический смысл: показать шаг воронки, который ещё не открыт, не подменяя его заглушкой и не перерисовывая всю клавиатуру.

Может ли бот показать одному человеку в группе не то, что видят остальные?

Да, и в 10.3 это стало заметно удобнее. Раньше личный ответ приходил отдельным эфемерным сообщением, теперь у объекта параметров есть поле replace_callback_query_message: личное сообщение показывается на месте исходного, то есть человек нажимает кнопку под общим постом и на этом же месте видит свою версию. Остальным участникам пост не меняется. Оговорка из документации осталась прежней: доставка не гарантируется, особенно если человек офлайн.

Что даёт право can_send_welcome_messages?

Дословно: «администратор может управлять приветственными сообщениями чата или, в случае ботов, отправлять их напрямую». Право приехало сразу в три места — в объект прав ChatAdministratorRights, в описание админа ChatMemberAdministrator и параметром в метод promoteChatMember. Любопытная деталь: в отличие от соседних прав вроде управления темами или тегами, это поле не помечено как необязательное и не ограничено типом чата. Отдельного метода «отправить приветствие» в справочнике при этом нет.

Как работает стриминг ответа у ИИ-ботов в Telegram?

Бот шлёт черновик методом sendMessageDraft и обновляет его, пока генерируется ответ. Документация называет черновик временным превью на 30 секунд: как только текст готов, бот обязан отправить обычное сообщение, иначе в чате ничего не останется. Пустой текст показывает плашку «Thinking…». У черновика есть свой идентификатор draft_id: если слать изменения с тем же номером, они анимируются, с другим — черновик заменяется без анимации. Работает это только в личных чатах.

Видит ли userbot эфемерные сообщения и черновики ботов?

Нет. Всё перечисленное живёт в Bot API, а клиенты на MTProto работают по другой схеме. На 26 августа 2026 года поиск по публичной схеме, машиночитаемому конфигу и справочнику ошибок не даёт ни одного упоминания приветственных прав и стриминга черновиков, а сами эти файлы после выхода 10.3 не изменились ни на байт. На практике это значит вот что: то, что бот показал человеку персонально или черновиком, в истории чата не лежит и при сборе аудитории не появится.

Список изменений — со страницы Bot API Changelog (раздел от 24 августа 2026); описания классов, полей и методов — из справочника Bot API; разделы про стриминг, темы в личных чатах и ИИ-агентов — со страницы возможностей ботов; проверка того, что в MTProto этого нет, — по публичной схеме (слой 223) и машиночитаемым конфигу и справочнику ошибок (слои 225 и 227). Всё снято и сверено 26 августа 2026 года. Telegram меняет такие вещи без анонса — если читаете сильно позже, перепроверьте по первоисточнику.

Аккаунты под тесты и сценарии

Готовые Telegram-аккаунты по странам и типам, от 135 ₽. Каждый проверяется вживую в момент выдачи: коннект через прокси, ограничения, ответ служебного бота.