如何通过golang回答电报机器人中的内联查询?

qcuzuvrc  于 2023-02-01  发布在  Go
关注(0)|答案(1)|浏览(174)

尝试使用库“github.com/go-telegram-bot-api/telegram-bot-api/v5“。当我想回答telegram-api内联查询时出现错误。如何回答?内联请求正在发送到我的服务器,但代码不工作,出现介绍性死机

if update.InlineQuery != nil {
        query := update.InlineQuery.Query
        fmt.Println(update.CallbackQuery.ID, update.CallbackQuery.Data)
        callback := tgbotapi.NewCallback(update.CallbackQuery.ID, update.CallbackQuery.Data)
        if _, err := bot.Request(callback); err != nil {
            panic(err) // Error here panic: runtime error: invalid memory address or nil pointer dereference [signal 0xc0000005 code=0x0 addr=0x0 pc=0xe9e3e6]
        }

        // And finally, send a message containing the data received.
        msg := tgbotapi.NewMessage(update.CallbackQuery.Message.Chat.ID, update.CallbackQuery.Data)
        if _, err := bot.Send(msg); err != nil {
            panic(err)
        }
    }

我需要一个例子来工作。完全不理解图书馆的这一部分...

e0bqpujr

e0bqpujr1#

如果你看了API文档,他们确实列出了下面的例子(见下文). TLDR,你应该用一个InlineConfig对象来响应,而不是像回调一样处理它。

if update.InlineQuery == nil {
        continue
    }

    article := NewInlineQueryResultArticle(update.InlineQuery.ID, "Echo", update.InlineQuery.Query)
    article.Description = update.InlineQuery.Query

    inlineConf := InlineConfig{
        InlineQueryID: update.InlineQuery.ID,
        IsPersonal:    true,
        CacheTime:     0,
        Results:       []interface{}{article},
    }

    if _, err := bot.Request(inlineConf); err != nil {
        log.Println(err)
    }

我遵循了一个例子,我想返回多个结果作为文章给定用户的查询,它为我工作出色:)
参考:https://pkg.go.dev/github.com/go-telegram-bot-api/telegram-bot-api/v5@v5.5.1#InlineConfig

相关问题