Bot API 2.0: информация для разработчиков
Предполагается, что вы уже ознакомлены с Bot API. В противном случае прочитайте, пожалуйста, описание ботов для разработчиков.
Сегодня мы представляем крупнейшее обновление платформы ботов с июля 2015 года. Была добавлена масса новых возможностей и инструментов, которые позволят создавать простые и удобные интерфейсы для ботов любой сложности.
Сами боты тоже становятся мощнее и функциональнее: теперь они могут отправлять любые файлы и сообщения, которые поддерживаются в Telegram, а также предоставлять гео-сервисы и запрашивать номер телефона пользователя.
Новые инлайн клавиатуры
В первую очередь хочется рассказать о новом типе клавиатуры, который встроен прямо в сообщение. Она доступна как в обычном диалоге с пользователем, так и во встроенном режиме.
В отличие от привычной клавиатуры для ботов, нажатие на кнопку не приведёт к отправке сообщения боту — вместо этого данные будут переданы в фоновом режиме. О том, как это работает, читайте в разделах кнопки с обратной связью, URL-кнопки и кнопки-переключатели режима.
Кнопки с обратной связью
При нажатии на кнопку с обратной связью никаких сообщений в чат не отправится — вместо этого вашему боту будет отправлен соответствующий запрос. После получения запроса бот может отобразить результат в уведомлении вверху чата или в модальном окне.
Пример: @music. Этот бот использует кнопки с обратной связью для перехода между страницами с результатами поиска.
Это ещё не всё: смотрите раздел обновления сообщений, чтобы узнать про ещё одну очень крутую «фишку».
URL-кнопки
На этих кнопках отображается небольшая стрелочка, чтобы пользователям было понятно, что нажатие на неё откроет внешнюю ссылку. Как обычно, перед открытием ссылки в браузере появится модальное окно с предупреждением.
Переход в инлайн-режим
Нажатие на такую кнопку запросит у пользователя чат, откроет его и вставит имя пользователя бота в поле ввода сообщения. Помимо этого можно передать запрос, который будет вставлен после имени пользователя. Таким образом пользователи могут сразу получить какой-нибудь результат от бота.
Пример: @stickers. Этот бот ищет стикеры и предлагает переключиться во встроенный режим, чтобы показать, как им пользоваться.
Обновление сообщений
Так как встроенные клавиатуры не отправляют ничего в чат, очевидно, что бот должен уметь изменять свои уже существующие сообщения, чтобы ему не пришлось отправлять новое сообщение всякий раз, когда нужно что-нибудь обновить. Благодаря изменению сообщений в чатах появляется меньше информационного мусора, а сам интерфейс становится проще и понятнее.
Пример: @music. Обратите внимание, как изменяется сообщение при нажатиях на кнопки переключения страниц.
Местоположения и номера телефонов
Для работы некоторых ботов необходима дополнительная информация о пользователе. Например, знание местоположения позволит предоставить более точные результаты на карте. А номер телефона может быть полезен для интеграции с некоторыми сервисами — например, банками.
В боты был добавлен простой способ запроса у пользователя его местоположения или номера телефона через специальные кнопки. Обратите внимание: эта возможность работает только в приватных чатах с ботом.
При нажатии на такую кнопку Telegram отобразит соответствующее модальное окно с описанием того, что запросил бот.
Инлайн-боты тоже могут запрашивать местоположение: для этого нужно отправить команду /setinlinegeo боту @BotFather. Бот будет запрашивать разрешение у пользователя каждый раз при отправлении инлайн-запроса.
Пример: @foursquare. Этот бот спросит разрешение на предоставление геоинформации для поиска мест поблизости.
Инлайн-боты 2.0
Инлайн-боты тоже не остались без изменений.
Новые типы контента
Инлайн-боты теперь могут отправлять любые файлы и сообщения, поддерживаемые в Telegram (19 типов, если быть точным): стикеры, видео, музыку, местоположения, файлы и так далее.
Пример: @stickers. Этот бот ищет стикеры по вашему запросу.
Переключение между инлайн-режимом и личными сообщениями
Некоторым ботам необходима некоторая настройка перед корректной работой — например, для подключения внешнего сервиса (YouTube). Для этого был добавлен механизм переключения между встроенным режимом и чатом, в который пользователь хочет отправить результаты.
Ваш бот теперь может отобразить специальную кнопку «Перейти в личные сообщения» над результатами (или вместо них). Эта кнопка откроет чат с ботом и передаст необходимые параметры для корректной настройки. После успешного выполнения, вы можете отправить пользователя обратно в исходный чат с помощью кнопки switch_inline_query.
Пример: Бот @youtube позволяет привязать ваш аккаунт Telegram к профилю в YouTube.
Улучшенный интерфейс инлайн-режима
Так как общение с ботом в инлайн-режиме отличается от обычной отправки сообщений, пришлось немного изменить интерфейс. Едва ли можно придумать лучший способ обозначить, что не нужно нажимать на кнопку «Отправить», чем скрыть её совсем:
Однократное нажатие на крестик очистит поле поиска, а повторное—выйдет из встроенного режима.
Администрирование групп
Наконец, самое интересное: постепенно в Bot API будут добавляться инструменты для управления группами. В первую очередь это методы удаления участников из групп и супергрупп.
Сайт про Telegram на русском (неофициальный).
Здесь собраны приложения на базе MTProto, переведена некоторая документация с официального сайта, а также работает Webogram.
Кнопки в телеграм-ботах
Это статья из серии о телеграм-ботах. Я по частям расскажу о важных моментах в pytelegrambotapi. Сразу полезная информация: я начал учиться делать ботов по этой статье и всем ее рекомендую.
Кнопки в телеграм бывают двух видов — inline и обычные (reply).
Обычные вы видите вместо клавиатуры, все, что они делают, как правило, — отправляют текстовое сообщение боту.
Но, перед тем, как сделать кнопку, нужно создать клавиатуру. Для обычных кнопок она одна, для inline другая, вот обычная:
resize_keyboard: bool — необязательный | будет ли клавиатура растягиваться (по умолчанию: без значения)
one_time_keyboard: bool — необязательный \ разовая ли клавиатура (по умолчанию: без значения)
selective: bool — необязательный | кому показывать (по умолчанию: без значения)
row_width: int — обязательный | количество столбцов кнопок (по умолчанию: 3)
input_field_placeholder: str — необязательный | заменяет текст-заглушку в поле ввода (по умолчанию: без значения)
Создав клавиатуру, создадим к ней кнопку:
text: str — обязательный | текст кнопки. Если указан только он, то кнопка будет просто отправлять текст при нажатии.
request_contact: bool — необязательный | если указан как true то пользователь при нажатии отправит свой контакт. Доступен только в приватных чатах.
request_location: bool — необязательный | если указан как true, то пользователь при нажатии отправит свою локацию. Доступен только в приватных чатах.
request_poll: bool — необязательный | если указан как true, то пользователь при нажатии отправит свою локацию. Доступен только в приватных чатах.
web_app: WebAppInfo — необязательный | если указан как true, то при нажатии откроется страница указанного веб-приложения — про это есть отдельная статья. Доступен только в приватных чатах.
Как создать inline кнопки?
Как создать Inline кнопки в Телеграмм боте
Здравствуйте, использую библиотеку Telegram.Bot. Везде искал, но не нашел как создать.
Telegram.Bot17.0.0 Как создать обработчик клика на inline кнопку?
Раньше можно было так Bot.OnCallbackQuery, сейчас не понятно что к чему. Как сделать.
Как к одной inline кнопки привязать несколько действий?
Добрый день, возник вопрос, как к одной инлайн кнопки привязать несколько функций? к примеру 1.
Как заставить выполнять действия inline кнопки в Telegram
Здравствуйте. Помогите разобраться. Есть фрагмент кода. import config import logging from.
Как создать inline клавиатуру для бота в ВК на python?
Помогите, пожалуйста. Если кто знает, как сделать inline keyboard через vk_api longpoll на Python.
InlineKeyboard в Телеграмм ботах (Telegram Bots)
Для начала создадим проект на Maven и добавим репозиторий «Telegram Bots»:
При помощью BotFather регистрируем бота и получаем token:
Далее создаем класс Bot, наследуемся от TelegramLongPollingBot и Овверайдим методы:
Создаем final переменные с именем бота и токеном, добавляем в метод getBotUsername() — botUserName, в getBotToken() — token. В методе main регистрируем бота:
Каркас бота готов! Теперь напишем метод с InlineKeyboard.
Работа с InlineKeyboard
Создаем обьект разметки клавиатуры:
Теперь выстраиваем положение кнопок.
Создаем обьект InlineKeyboardButton, у которой есть 2 параметка: Текст (Что будет написано на самой кнопке) и CallBackData (Что будет отсылатся серверу при нажатии на кнопку).
Добавляем его в список, таким образом создавая ряд.
Если желаете создать еще один ряд, просто сделайте еще один список и добавляйте в него новые кнопки.
После этого нам нужно обьеденить ряды, поэтому создаем список рядов.
Фича
Разработчик позаботился о нас и мы можем сразу записывать кнопки в список не создавая переменную.
Теперь мы можем установить кнопки в обьект разметки клавиатуры.
Если немного не понятно описание работы с созданием клавиатуры, вот вам схема:
Вот и всё! Теперь добавляем разметку в сообщение:
Теперь можем отправлять, вот вам готовый метод:
Делаем вариант когда будет вызывается метод в обработчике запросов onUpdateReceived:
Теперь нам нужно обработать делаем новое ветвление в if и обрабатываем CallbackQuery: