Skip to content

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.

ts
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.