Почему не удается обработать inline-запрос в бота telegram
Нужно чтобы бот удаленно выполнял функции по вводимому тексту. Для этого попытался использовать inline-запросы. Код взял из примера:
func ChangedInlineKeyboardHandler(bot *tgbotapi.BotAPI, update tgbotapi.Update) {
if update.InlineQuery != nil {
query := update.InlineQuery.Query
fmt.Println(query + "#################################################")
data := "sdasdasdadas"
callback := tgbotapi.NewCallback(update.InlineQuery.ID, data)
if _, err := bot.Request(callback); err != nil {
panic(err)
}
}
}
Сам бот был создан помощью BotFather, inline-запросы включены. Через update данные поступают и видно как меняется query-параметр с каждымм вводом символа. Однако обработка не проискодит. Пример данных, которые приходят:
"inline_query":{"id":"number","from":{"id":number,"is_bot":false,"first_name":"user_name","username":"user_name","language_code":"ru"},"chat_type":"group","query":"ddsasdwas","offset":""}}]}
При этом, в самом приложении телеграма происходит следующая ситуация:

т.е. запрос отправляется, но ответа - нет. Почему так происходит? Как исправить этот код чтобы в результате inline-запроса возвращался текст?
Ответы (1 шт):
Автор решения: Senior Pomidor
→ Ссылка
Нет, этот код неверно написан.
- Он использует
tgbotapi.NewCallback()для создания объекта, который должен использоваться для обработкиCallbackQuery, а неInlineQuery. Он используетbot.Request()для отправки ответа, который должен использоваться для обработки запросов от сервера, а не отправки ответа на inline-запрос. - Вместо этого вы должны использовать
tgbotapi.NewInlineQueryResultArticle()илиtgbotapi.NewInlineQueryResultText()для создания объекта с данными, а затем использоватьbot.AnswerInlineQuery()для отправки ответа.
// create a inline query result
result := tgbotapi.NewInlineQueryResultArticle("1", "Hello", "world")
// create a inline query config
config := tgbotapi.InlineConfig{
InlineQueryID: update.InlineQuery.ID,
IsPersonal: true,
Results: tgbotapi.Results{Results: []interface{}{result}},
}
// send the result
bot.AnswerInlineQuery(config)