Всем привет!
Сегодня Telegram выкатил Bot API версии 9.4. На первый взгляд обновление кажется небольшим, но оно кардинально меняет подход к визуалу ботов. Наконец-то мы получили инструменты для нормального UX/UI дизайна!
Давайте разберем, что нам приготовил Павел Дуров и команда в этот раз.
Если вам интересны подобные материалы, подписывайтесь на Telegram-канал «Код на салфетке». Там я делюсь гайдами для новичков, полезными инструментами и новостями.
Визуальная революция: цвета и иконки
Если вы следите за утечками с тестовых серверов, то слухи про цветные кнопки ходили уже недели 2-3. И вот, они официально доступны! Но это еще не всё — теперь кнопки можно украшать кастомными иконками.

Цветные кнопки
Мы ждали этого годами. Теперь Reply и Inline-кнопки поддерживают свойство style, которое может принимать одно из трёх значений (не считая дефолтного):
🔴
danger— красная кнопка (идеально для «Удалить», «Отмена», «Бан»).🟢
success— зелёная кнопка («Подтвердить», «Оплатить», «Принять»).🔵
primary— синяя кнопка (для основных целевых действий).⚪️ Стандартный — привычный прозрачно-серый цвет.
Это колоссально меняет UX. Теперь можно визуально управлять вниманием пользователя, расставлять акценты и делать интерфейсы интуитивно понятными. Надеюсь, в будущем нам дадут выбирать конкретные HEX-коды, но даже текущий набор — это уже прорыв.
Иконки на кнопках
В чейнджлоге промелькнула еще одна киллер-фича, которую легко упустить. В объекты кнопок добавили поле icon_custom_emoji_id.
Что это значит? Теперь на кнопку можно добавить кастомный эмодзи! Представьте: красная кнопка danger с красивой иконкой мусорной корзины. Или зеленая кнопка success с галочкой в вашем фирменном стиле. Это выводит дизайн ботов на уровень полноценных приложений.

Премиум эмодзи: прощай, Fragment?
Раньше, чтобы бот мог использовать кастомные (премиум) эмодзи в тексте, нужно было пройти целый квест: купить на аукционе Fragment юзернейм для бота за круглую сумму в TON и привязать его.
С версии 9.4 всё стало гораздо демократичнее. Теперь боту достаточно, чтобы у его создателя (владельца) была подписка Telegram Premium.
Понятно, что это сделано для повышения подписочной базы, но если смотреть со стороны разработчика ботов - это, наряду с цветными кнопками отличная возможность кастомизировать оформление бота. Я не говорю о всяких мемных смайликах, есть множество вполне себе стилистических, от букв до элементом оформления.
Работает в личных сообщениях, а также в группах и супергруппах.
Как пощупать прямо сейчас
Пока мы ждём обновления любимых библиотек (привет, aiogram!), протестировать новые фичи можно «по старинке», отправляя запросы напрямую к API.
Вот пример тела запроса, где мы используем сразу всё: и HTML-парсинг с тегом эмодзи, и цветные кнопки, и иконку внутри кнопки.
Тело запроса (JSON):
{ "chat_id": "2111923441", "text": "Привет, Салфетка и Хабр! <tg-emoji emoji-id=\"5285430309720966085\">👍</tg-emoji>", "parse_mode": "HTML", "reply_markup": { "inline_keyboard": [ [ { "text": "Опасная кнопка!", "callback_data": "btn1", "style": "danger", "icon_custom_emoji_id": "5310169226856644648" }, { "text": "Успешная кпнока =)", "callback_data": "btn2", "style": "success", "icon_custom_emoji_id": "5310076249404621168" } ], [ { "text": "Основная кнопка", "callback_data": "btn3", "style": "primary", "icon_custom_emoji_id": "5285430309720966085" }, { "text": "Простокнопка -_-", "callback_data": "btn4", "icon_custom_emoji_id": "5285032475490273112" } ] ] } }
Адрес запроса:
https://api.telegram.org/bot<ТОКЕН_БОТА>/sendMessage
Порядок в личке: Темы (Topics)
Telegram продолжает превращать личные чаты с ботами в подобие почтовых клиентов или CRM-систем. Теперь боты могут самостоятельно создавать темы (форумы) в приватных диалогах тет-а-тет с пользователем.
Это логичное развитие функционала из версии 9.3. Но теперь добавили важный рычаг управления: в BotFather появилась настройка, позволяющая запретить пользователям создавать или удалять темы вручную.
Зачем это нужно? Представьте бота техподдержки.
Пользователь пишет
/start.Бот сам создает темы: «Заказы», «Тикеты», «Общение».
Пользователь не может устроить хаос, удаляя нужные ветки, а пишет строго в отведенные каналы. Это идеальная структура для сложных сервисных ботов.

Пример запроса на создание темы:
{ "chat_id": "2111923441", "name": "Тема для Хабра", "icon_color": 13338331 }
Адрес запроса:
https://api.telegram.org/bot<ТОКЕН_БОТА>/createForumTopic
Бот наводит марафет: Аватарки и Аудио
Динамическая аватарка
Боты получили методы setMyProfilePhoto и removeMyProfilePhoto. Теперь бот может менять свою аватар��у программно, без участия владельца.
Идеи для использования:
Смена статуса: Бот «занят» — красная рамка на аватарке, «свободен» — зеленая.
Сезонность: Автоматически надевать шапку Деда Мороза зимой или тыкву на Хэллоуин.
Геймификация: Аватарка меняется в зависимости от уровня прокачки общего «серверного» персонажа.
Музыкальный вкус пользователей
Боты научились подсматривать в профиль. Новый метод getUserProfileAudios позволяет получить список аудиозаписей, которые пользователь закрепил у себя в профиле («Моя музыка»).
Хотя не все активно используют эту фичу, для Dating-ботов (ботов для знакомств) или Музыкальных-сообществ это киллер-фича. Можно мэтчить людей по музыкальным вкусам или предлагать похожие треки, просто проанализировав профиль.
Важные мелочи (Admin & Video)
Не менее важные изменения для администраторов и контент-мейкеров:
Смена власти в чате. Появились служебные сообщения
ChatOwnerLeft(владелец вышел) иChatOwnerChanged(владелец сменился). Для кого важно: Для ботов-модераторов и гарантов. Если у чата исчез владелец или он сменился на подозрительный аккаунт, бот может автоматически включить «Lockdown» (карантин) или снять с себя админку в целях безопасности.Качество видео. Теперь при получении видео (
Video) бот видит полеqualities. Это список доступных разрешений, которые обработал сервер Telegram. Полезно для ботов, которые занимаются каталогизацией контента.Подарки (Gifts). В объектах п��дарков теперь передается
rarity(редкость) и флагis_burned. Это ответ на недавнее обновление, позволяющее «сжигать» подарки ради получения Stars или NFT. Бот теперь точно знает, существует подарок или он уже был переработан.
Список изменений:
Ботам разрешено использовать кастомные эмодзи в сообщениях, отправляемых напрямую в личные чаты, группы и супергруппы, если у владельца бота есть подписка Telegram Premium.
Ботам разрешено создавать темы в личных чатах с помощью метода createForumTopic.
Ботам разрешено запрещать пользователям создавать и удалять темы в личных чатах через новую настройку в мини-приложении @BotFather.
Добавлено поле allows_users_to_create_topics в класс User.
Добавлено поле icon_custom_emoji_id в классы KeyboardButton и InlineKeyboardButton, позволяющее ботам отображать кастомный эмодзи на кнопках, если они имеют возможность использовать кастомные эмодзи в сообщении.
Добавлено поле style в классы KeyboardButton и InlineKeyboardButton, позволяющее ботам изменять цвет кнопок.
Добавлен класс ChatOwnerLeft и поле chat_owner_left в класс Message.
Добавлен класс ChatOwnerChanged и поле chat_owner_changed в класс Message.
Добавлены методы setMyProfilePhoto и removeMyProfilePhoto, позволяющие ботам управлять своим фото профиля.
Добавлен класс VideoQuality и поле qualities в класс Video, позволяющие ботам получать информацию о других доступных вариантах качества видео.
Добавлено поле first_profile_audio в класс ChatFullInfo.
Добавлен класс UserProfileAudios и метод getUserProfileAudios, позволяющие ботам получать список аудиозаписей, добавленных в профиль пользователя.
Добавлено поле rarity в класс UniqueGiftModel.
Добавлено поле is_burned в класс UniqueGift.
Заключение
Обновление 9.4 получилось камерным, но очень приятным визуально. Да, здесь нет фундаментальных сдвигов в архитектуре, как в прошлых версиях, но цветные кнопки и кастомные эмодзи — это то, чего нам не хватало годами для создания красивых интерфейсов.
Лично для меня это сигнал: Telegram начинает уделять внимание не только функциональности, но и эстетике ботов. Ждём, когда нам разрешат использовать произвольные HEX-цвета, а не только пресеты!
А пока ждём поддержки в библиотеках и обновляем своих ботов.
Если вам интересны подобные материалы, подписывайтесь на Telegram-канал «Код на салфетке». Там я делюсь гайдами для новичков, полезными инструментами и новостями.
