Содержание

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

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

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

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

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

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

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

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

Метод API: inlineKeyboardMarkup

Важное примечание

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

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

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

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

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

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

URL-кнопки

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

URL-кнопка

Переход во встроенный режим

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

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

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

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

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

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

Метод API: editMessageText

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

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

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

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

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

Метод API: KeyboardButton

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

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

Встроенные боты 2.0

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

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

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

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

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

Метод API: InlineQueryResult

Переключение между встроенным режимом и личными сообщениями

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

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

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

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

Метод API: AnswerInlineQuery

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

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

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

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

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

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

Метод API: kickChatMember

Комментарии