Bot API 2.0: информация для разработчиков

Предупреждение

Предполагается, что вы уже ознакомлены с Bot API. В противном случае прочитайте, пожалуйста, описание ботов для разработчиков.

Сегодня мы представляем крупнейшее обновление платформы ботов с июля 2015 года. Была добавлена масса новых возможностей и инструментов, которые позволят создавать простые и удобные интерфейсы для ботов любой сложности.

Сами боты тоже становятся мощнее и функциональнее: теперь они могут отправлять любые файлы и сообщения, которые поддерживаются в Telegram, а также предоставлять гео-сервисы и запрашивать номер телефона пользователя.

Новые инлайн клавиатуры

В первую очередь хочется рассказать о новом типе клавиатуры, который встроен прямо в сообщение. Она доступна как в обычном диалоге с пользователем, так и во встроенном режиме.

Кнопки бота musicКнопки бота music

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

Метод API: inlineKeyboardMarkup

Кнопки с обратной связью

При нажатии на кнопку с обратной связью никаких сообщений в чат не отправится — вместо этого вашему боту будет отправлен соответствующий запрос. После получения запроса бот может отобразить результат в уведомлении вверху чата или в модальном окне.

Уведомления сверху

Пример: @music. Этот бот использует кнопки с обратной связью для перехода между страницами с результатами поиска.

Это ещё не всё: смотрите раздел обновления сообщений, чтобы узнать про ещё одну очень крутую «фишку».

URL-кнопки

На этих кнопках отображается небольшая стрелочка, чтобы пользователям было понятно, что нажатие на неё откроет внешнюю ссылку. Как обычно, перед открытием ссылки в браузере появится модальное окно с предупреждением.

URL-кнопка

Переход в инлайн-режим

Нажатие на такую кнопку запросит у пользователя чат, откроет его и вставит имя пользователя бота в поле ввода сообщения. Помимо этого можно передать запрос, который будет вставлен после имени пользователя. Таким образом пользователи могут сразу получить какой-нибудь результат от бота.

Коллбэк-кнопка

Пример: @stickers. Этот бот ищет стикеры и предлагает переключиться во встроенный режим, чтобы показать, как им пользоваться.

Обновление сообщений

Так как встроенные клавиатуры не отправляют ничего в чат, очевидно, что бот должен уметь изменять свои уже существующие сообщения, чтобы ему не пришлось отправлять новое сообщение всякий раз, когда нужно что-нибудь обновить. Благодаря изменению сообщений в чатах появляется меньше информационного мусора, а сам интерфейс становится проще и понятнее.

Пример: @music. Обратите внимание, как изменяется сообщение при нажатиях на кнопки переключения страниц.

Метод API: editMessageText

Местоположения и номера телефонов

Для работы некоторых ботов необходима дополнительная информация о пользователе. Например, знание местоположения позволит предоставить более точные результаты на карте. А номер телефона может быть полезен для интеграции с некоторыми сервисами — например, банками.

В боты был добавлен простой способ запроса у пользователя его местоположения или номера телефона через специальные кнопки. Обратите внимание: эта возможность работает только в приватных чатах с ботом.

Запрос номера телефона и местоположения

При нажатии на такую кнопку Telegram отобразит соответствующее модальное окно с описанием того, что запросил бот.

Метод API: KeyboardButton

Инлайн-боты тоже могут запрашивать местоположение: для этого нужно отправить команду /setinlinegeo боту @BotFather. Бот будет запрашивать разрешение у пользователя каждый раз при отправлении инлайн-запроса.

Пример: @foursquare. Этот бот спросит разрешение на предоставление геоинформации для поиска мест поблизости.

Инлайн-боты 2.0

Инлайн-боты тоже не остались без изменений.

Новые типы контента

Инлайн-боты теперь могут отправлять любые файлы и сообщения, поддерживаемые в Telegram (19 типов, если быть точным): стикеры, видео, музыку, местоположения, файлы и так далее.

Все виды контента

Пример: @stickers. Этот бот ищет стикеры по вашему запросу.

Метод API: InlineQueryResult

Переключение между инлайн-режимом и личными сообщениями

Некоторым ботам необходима некоторая настройка перед корректной работой — например, для подключения внешнего сервиса (YouTube). Для этого был добавлен механизм переключения между встроенным режимом и чатом, в который пользователь хочет отправить результаты.

Кнопка переключения

Ваш бот теперь может отобразить специальную кнопку «Перейти в личные сообщения» над результатами (или вместо них). Эта кнопка откроет чат с ботом и передаст необходимые параметры для корректной настройки. После успешного выполнения, вы можете отправить пользователя обратно в исходный чат с помощью кнопки switch_inline_query.

Пример: Бот @youtube позволяет привязать ваш аккаунт Telegram к профилю в YouTube.

Метод API: AnswerInlineQuery

Улучшенный интерфейс инлайн-режима

Так как общение с ботом в инлайн-режиме отличается от обычной отправки сообщений, пришлось немного изменить интерфейс. Едва ли можно придумать лучший способ обозначить, что не нужно нажимать на кнопку «Отправить», чем скрыть её совсем:

Новое поле ввода

Однократное нажатие на крестик очистит поле поиска, а повторное—выйдет из встроенного режима.

Администрирование групп

Наконец, самое интересное: постепенно в Bot API будут добавляться инструменты для управления группами. В первую очередь это методы удаления участников из групп и супергрупп.

Метод API: kickChatMember