Перейти к контенту

Telegram BOT API 9.4: цветные кнопки и премиум эмодзи

Новости Иван Ашихмин 137

Вышло обновление BOT API 9.4. Что нового читайте в статье...

Telegram BOT API 9.4: цветные кнопки и премиум эмодзи
Новости Иван Ашихмин 137

Всем привет!

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

Зачем это нужно? Представьте бота техподдержки.

  1. Пользователь пишет /start.
  2. Бот сам создает темы: «Заказы», «Тикеты», «Общение».
  3. Пользователь не может устроить хаос, удаляя нужные ветки, а пишет строго в отведенные каналы. Это идеальная структура для сложных сервисных ботов.

 

Пример запроса на создание темы:

{
  "chat_id": "2111923441",
  "name": "Тема для Салфетки",
  "icon_color": 13338331
}

Адрес запроса:

https://api.telegram.org/bot<ТОКЕН_БОТА>/createForumTopic

Бот наводит марафет: Аватарки и Аудио

Динамическая аватарка

Боты получили методы setMyProfilePhoto и removeMyProfilePhoto. Теперь бот может менять свою аватарку программно, без участия владельца.

Идеи для использования:

  • Смена статуса: Бот «занят» — красная рамка на аватарке, «свободен» — зеленая.
  • Сезонность: Автоматически надевать шапку Деда Мороза зимой или тыкву на Хэллоуин.
  • Геймификация: Аватарка меняется в зависимости от уровня прокачки общего «серверного» персонажа.

Музыкальный вкус пользователей

Боты научились подсматривать в профиль. Новый метод getUserProfileAudios позволяет получить список аудиозаписей, которые пользователь закрепил у себя в профиле («Моя музыка»).

Хотя не все активно используют эту фичу, для Dating-ботов (ботов для знакомств) или Музыкальных-сообществ это киллер-фича. Можно мэтчить людей по музыкальным вкусам или предлагать похожие треки, просто проанализировав профиль.


Важные мелочи (Admin & Video)

Не менее важные изменения для администраторов и контент-мейкеров:

  1. Смена власти в чате. Появились служебные сообщения ChatOwnerLeft (владелец вышел) и ChatOwnerChanged (владелец сменился). Для кого важно: Для ботов-модераторов и гарантов. Если у чата исчез владелец или он сменился на подозрительный аккаунт, бот может автоматически включить «Lockdown» (карантин) или снять с себя админку в целях безопасности.
  2. Качество видео. Теперь при получении видео (Video) бот видит поле qualities. Это список доступных разрешений, которые обработал сервер Telegram. Полезно для ботов, которые занимаются каталогизацией контента.
  3. Подарки (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-канал «Код на салфетке». Там я делюсь гайдами для новичков, полезными инструментами и новостями.

Аватар автора

Автор

Иван Ашихмин

Программист, фрилансер и автор гайдов. Занимаюсь разработкой ботов, сайтов и не только.

Комментарии