Skip to content

Как реализовать инлайн-режим в боте

Инлайн-режим (inline mode) — это возможность отправлять сообщения «через бота». Если бот поддерживает инлайн-режим, пользователь может обратиться к боту в любом чате, чтобы отправить сообщение, сгенерированное ботом. Инлайн-режим работает даже в чатах, где нет этого бота.

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

Чтобы запустить инлайн-режим, пользователь вводит в чате юзернейм бота и пробел. Если требуется, после юзернейма он может добавить текстовый запрос: текст до 256 символов. Появляется меню результатов. Пользователь выбирает результат и таким образом отправляет сообщение.

Инлайн-режим можно включить в BotFather; там же можно выбрать плейсхолдер вместо стандартного «Search...»

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

Отображение результатов

Результаты можно отображать сеткой (удобно для выдачи картинок) или вертикальным списком (удобно для выдачи текста).

Сеткой

Списком

Можно показать вместе результаты двух видов, но, кажется, такой вариант отображается корректно только на Telegram Desktop. Остальные приложения покажут такие результаты одним списком.

Скриншот результатов двух видов на Telegram Desktop

Совмещение двух видов

Inline feedback

Inline feedback — это апдейты о том, что юзер выбрал инлайн-результат и отправил сообщение. Чтобы получать эти апдейты, вы должны включить inline feedback в BotFather.

Inline feedback предназначается для сбора статистики; но разработчики ботов часто используют его для того, чтобы отредактировать сообщение после отправки. Это полезно, когда нужно подгружать не все результаты сразу, а только выбранный. Например, если бот используется для поиска музыки, то он может не загружать сразу все песни во время поиска, а добавить песню в сообщение только после отправки.

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

Настройка в BotFather. Можно выбрать процент приходящих апдейтов

Ссылки по теме