Что такое inline-режим Telegram-ботов и как его применить
Основы3 минРедакция Innovialabs
Коротко
Inline-режим позволяет вызвать бота в любом чате, набрав @имя_бота и запрос: бот возвращает список результатов, а пользователь отправляет выбранный в текущий чат — так удобно делиться товарами, статьями и ссылками.
Как работает inline-режим
Inline-режим — это способ пользоваться ботом, не открывая чат с ним. Пользователь в любом диалоге, группе или канале набирает в поле ввода @имя_бота и текст запроса, например @shopbot кроссовки. Над клавиатурой появляется список результатов, и выбранный результат отправляется в текущий чат с пометкой «via @имя_бота».
Ключевые особенности:
- боту не нужно быть участником чата, где его вызвали;
- бот не видит переписку — только текст запроса и данные о пользователе;
- сообщение отправляет сам пользователь, поэтому собеседники видят его от его имени.
Как это устроено технически
- Режим включается в BotFather командой
/setinline, там же задаётся подсказка-плейсхолдер. - Когда пользователь печатает запрос, бот получает обновление
inline_query: текст запроса,offsetдля пагинации и, как правило, тип чата, где идёт поиск. - Бот отвечает методом
answerInlineQuery, передавая до 50 результатов за раз. - Если нужно знать, какой результат выбрали, включите
/setinlinefeedback— тогда приходит обновлениеchosen_inline_result.
Полезные параметры ответа:
cache_time— сколько секунд Telegram кеширует результаты на своей стороне;is_personal— кешировать отдельно для каждого пользователя, если выдача персональная;next_offset— подгрузка следующей порции при прокрутке;button— кнопка над результатами, которая открывает личный чат с ботом или Mini App, например чтобы авторизоваться.
Типы результатов
| Тип | Что отправляется |
|---|---|
| Article | текстовое сообщение, часто с превью и кнопками |
| Photo, GIF, Video | медиа по ссылке или уже загруженное в Telegram |
| Audio, Voice, Document | аудио, голосовое, файл |
| Location, Venue | точка на карте или место с адресом |
| Contact | карточка контакта |
| Game | игра, зарегистрированная у бота |
Для медиа есть «кешированные» варианты: они используют file_id уже загруженного в Telegram файла, что быстрее и надёжнее внешних ссылок. К любому результату можно прикрепить inline-клавиатуру, например кнопку «Открыть в магазине».
Где это полезно бизнесу
- Поделиться товаром. Покупатель ищет товар через
@shopbot, отправляет карточку с фото и ценой другу или в семейный чат, а кнопка ведёт в бота или Mini App для заказа. - База знаний и поддержка. Сотрудник поддержки вставляет готовый ответ или ссылку на инструкцию прямо в диалог с клиентом.
- Реферальные ссылки и промокоды. Пользователь отправляет персональное приглашение в любой чат.
- Подбор контента. Статьи, рецепты, расписание, курсы валют — всё, что люди обсуждают в переписке.
- Совместные решения. Отправка опроса, слота для записи или адреса встречи в групповой чат.
Частые ошибки
- Медленный ответ. Пользователь ждёт результатов при каждом наборе символа. Ищите по индексу, а не перебором, и не делайте тяжёлых запросов к внешним API на каждый символ.
- Пустой запрос без выдачи. Когда пользователь набрал только
@имя_бота, покажите популярное или последние позиции. - Неверный кеш. Персональные цены или данные аккаунта без
is_personalмогут попасть к другим пользователям из кеша. - Кнопки как в обычном сообщении. У inline-сообщения нет привычного
message, в callback query приходитinline_message_id, и редактировать его нужно через него.