`inline_query` в контексте Telegram бота относится к запросу, который пользователь отправляет через интерфейс Telegram, не в приватном чате с ботом, а в любом чате, начиная ввод текста с `@имя_бота` и следующего запроса. Это позволяет ботам отвечать на запросы непосредственно в контексте чата, предлагая различные виды контента, такие как результаты поиска, предложения по автозаполнению и многое другое. Пользователи могут выбирать из представленных ботом вариантов, чтобы отправить их в чат.
Чтобы отправить `inline_query` боту, пользователь должен начать печатать в текстовом поле в любом чате `@имя_бота` и затем ввести свой запрос. Бот затем получит это событие через Telegram Bot API и сможет ответить на него.
Для работы с таким типом запросов в библиотеке Aiogram используются следующие хендлеры:
1. `@router.inline_query()` - Этот хендлер регистрируется для обработки событий `inline_query`, когда пользователь отправляет inline запрос боту. Функция, ассоциированная с этим хендлером, обычно принимает объект `InlineQuery`, и её задача - сформировать и вернуть ответ, который может представлять собой список статей, картинок, видеороликов и других поддерживаемых типов контента.
```python
from aiogram import types
@router.inline_query()
async def inline_handler(inline_query: types.InlineQuery):
# Здесь код для обработки inline запроса и отправки ответа
results = [...] # Список объектов InlineQueryResult
await inline_query.answer(results)
```
2. `@router.chosen_inline_result()` - Обрабатывает событие `chosen_inline_result`, которое возникает, когда пользователь выбирает один из результатов, предложенных в ответ на `inline_query`. Функция, ассоциированная с этим хендлером, обычно принимает объект `ChosenInlineResult`, который содержит информацию о выбранном результате, включая его уникальный идентификатор.
```python
@router.chosen_inline_result()
async def inline_choice_handler(chosen_inline_result: types.ChosenInlineResult):
# Здесь код для обработки выбора пользователя
```
Чтобы вызвать эти хендлеры, соответствующие события (`inline_query` и `chosen_inline_result`) должны быть сгенерированы пользователем в Telegram, и после этого эти события будут получены ботом через Telegram Bot API и обработаны зарегистрированными функциями.
Типы обновлений, обрабатываемых этими хендлерами, следующие:
- `inline_query` - обновление для обработки запроса, отправленного пользователем в inline режиме.
- `chosen_inline_result` - обновление, возникающее после того, как пользователь выбрал один из предложенных inline результатов.
Помните о том, что для использования inline режима у бота должен быть включен соответствующий режим, который можно активировать через BotFather в Telegram.