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

Telegram Bot API 9.5: Пользовательские теги и форматирование времени

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

Вышло обновление Telegram Bot API 9.5. Форматирование даты, пользовательские теги и другое...

Telegram Bot API 9.5: Пользовательские теги и форматирование времени
Новости Иван Ашихмин 29

Всем привет!

Сегодня Telegram выпустил небольшое, но как всегда интересное обновление своего Bot API под номером 9.5. Оно оказалось компактным, но в нём есть один интересный момент с надеждой на будущие обновления...

Кстати, одно из нововведений было известно ещё два дня назад в моём ТГ. Подписывайтесь на канал «Код на салфетке», если интересны подобные новости и разборы!


Форматирование Даты и Времени

Теперь боты могут отправлять дату и время в форматированном виде. Кажется, что это совсем мелочь — ну что такого? Просто вывод времени в удобном формате. Однако это первое за долгое время нововведение именно в форматировании текста!

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

Как это работает под капотом?

Формат вывода задается специальной строкой: r или комбинацией w, d/D и t/T. Если оставить формат пустым, текст отобразится как есть, но пользователь всё равно сможет получить время в локальном формате.

За что отвечают параметры:

  • r: Относительное время (например, "через 2 часа"). Важно: этот параметр нельзя комбинировать с другими.
  • w: День недели на локальном языке пользователя.
  • d / D: Короткая дата (например, «17.03.22») / Длинная дата (например, «March 17, 2022»).
  • t / T: Короткое время (например, «22:45») / Длинное время с секундами (например, «22:45:00»).

Примеры использования в коде:

Если используешь HTML (parse_mode="HTML"), то появился новый тег <tg-time>:

<tg-time unix="1647531900" format="wDT">Текст-заглушка</tg-time>
<tg-time unix="1647531900" format="r">Текст-заглушка</tg-time>

Если предпочитаешь MarkdownV2 (parse_mode="MarkdownV2"), то синтаксис похож на вставку кастомного эмодзи или ссылки:

![Текст-заглушка](tg://time?unix=1647531900&format=wDT)
![Текст-заглушка](tg://time?unix=1647531900&format=r)

Текст-заглушка будет показан, если клиент пользователя вдруг не поддерживает новый формат, поэтому туда лучше писать время текстом, например: "22:45 завтра".


Пользовательские теги участников

Второе интересное нововведение — это теги участников групп. Если раньше кастомные подписи к имени можно было выдавать только администраторам (не выдавая никаких прав, а только "должность"), то теперь небольшие ярлыки можно вешать на кого угодно. И это открывает огромный простор для фантазии!

Только представьте: социальная кастомизация чатов выйдет на новый уровень. Боты смогут автоматически выдавать теги вроде «Новичок», «Ветеран» или «VIP» за активность, помечать нарушителей («1/3 предупреждений») или распределять людей по ролям в рабочих чатах («Дизайнер», «Разработчик»). И всё это без добавления участника в список администраторов.

Как это выглядит со стороны API:

Для работы с тегами завезли целую пачку обновлений в правах и объектах, но главное, что нужно знать:

  • Появился новый метод setChatMemberTag. С его помощью бот может повесить тег на обычного участника.
  • У тегов есть строгие лимиты: от 0 до 16 символов и никаких эмодзи (только текст).
  • Чтобы бот мог раздавать теги, ему (или администратору) нужно выдать новое право — can_manage_tags.
  • Когда пользователь с тегом пишет в чат, бот видит этот ярлык прямо в объекте Message (в новом поле sender_tag). Это значит, что можно легко фильтровать сообщения или настраивать логику бота в зависимости от «статуса» юзера.

В общем, это реально крутая штука для чатов! Кажется, скоро каждый второй групповой бот будет обвешивать нас текстовыми статусами в зависимости от уровня фантазии владельца.


Остальное: Стриминг для всех и кастомные эмодзи в Mini Apps

В обновление попали ещё два классных нововведения, которые точно заслуживают внимания:

1. Стриминг сообщений теперь без ограничений

Помните, в Bot API 9.3 добавили метод sendMessageDraft? Это тот самый эффект плавной генерации текста по буквам, как мы привыкли видеть у ChatGPT и других нейросетей. Тогда это работало только для ботов в чатах с включёнными темами.

Теперь настоящий релиз снимает все ограничения! Метод sendMessageDraft разрешили использовать абсолютно всем ботам и в любых чатах. Если вы пишете ИИ-бота или просто хотите сделать вывод больших текстов более интерактивным — это абсолютный мастхэв.

2. Кастомные эмодзи в кнопках Mini Apps

Мелочь, а для UI/UX очень приятно. В классе BottomButton (нижние кнопки в веб-приложениях Telegram) появилось новое поле — iconCustomEmojiId. Теперь можно вставлять туда не просто стандартные смайлы или системные иконки, а любые кастомные эмодзи.


Обновление вышло небольшим, но со своими «изюминками». Расскажите в комментариях, как вам обновление, а я пошёл продумывать систему тегов в нашем чате.

Если вам интересны подобные материалы, подписывайтесь на Telegram-канал «Код на салфетке». Там я делюсь гайдами для новичков, полезными инструментами и новостями.

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

Автор

Иван Ашихмин

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

Комментарии