chosenInlineResult
Метод chosenInlineResult
в GramIO позволяет вашему боту обрабатывать обновления, когда пользователь выбирает один из результатов, возвращенных инлайн-запросом. Этот метод особенно полезен, когда вам нужно выполнить дополнительные действия после того, как пользователь выбрал определенный результат из предложений инлайн-запроса.
Вам следует включить Feedback в @BotFather.
Чтобы узнать, какие из предоставленных результатов ваши пользователи отправляют своим собеседникам, отправьте @Botfather команду
/setinlinefeedback
. После включения этой функции вы будете получать обновления о результатах, выбранных вашими пользователями.
Обратите внимание, что это может создать проблемы с нагрузкой для популярных ботов – вы можете получить больше результатов, чем фактических запросов, из-за кэширования (см. параметр cache_time в answerInlineQuery). Для таких случаев мы рекомендуем регулировать настройку вероятности, чтобы получать 1/10, 1/100 или 1/1000 часть результатов.
Мы рекомендуем установить значение 100%
(каждый клик по результату инлайн-запроса будет создавать это событие).
Основное использование
WARNING
Вы должны указать тот же тип триггера (String, Regex, Function), что и в InlineQuery, чтобы получить результаты нажатия на него, или использовать опцию onResult
в триггере InlineQuery.
Обработка выбранных инлайн-результатов
Метод chosenInlineResult
регистрирует обработчик, который вызывается всякий раз, когда пользователь выбирает результат из ответа на инлайн-запрос. Вы можете определить триггер, который определяет, когда должен быть вызван обработчик, аналогично тому, как вы определяете триггеры в методе inlineQuery
.
bot.chosenInlineResult(/search (.*)/i, async (context) => {
const selectedResult = context.resultId;
const queryParams = context.args;
// Вы можете редактировать сообщения только с InlineKeyboard
if (queryParams && context.inlineMessageId) {
await context.editText(
`Вы выбрали результат с ID: ${selectedResult} для запроса: ${queryParams[1]}`
);
}
});
В этом примере:
- Бот прослушивает любой выбор результата, соответствующий регулярному выражению
search (.*)
. - Если выбран результат, соответствующий триггеру, бот извлекает ID результата и параметры запроса.
- Затем бот редактирует сообщение, чтобы указать, какой результат был выбран.
Типы триггеров
Метод chosenInlineResult
поддерживает те же типы триггеров, что и метод inlineQuery
:
- Строковый триггер: Обработчик вызывается, если
query
точно соответствует указанной строке. - RegExp триггер: Обработчик вызывается, если
query
соответствует регулярному выражению. - Функциональный триггер: Обработчик вызывается на основе пользовательской функции, которая возвращает
true
илиfalse
.