Go 在运行时向telegrambot添加新处理程序

Go 在运行时向telegrambot添加新处理程序,go,telegram-bot,Go,Telegram Bot,我习惯于在golang创建一个机器人。我想在bot启动后添加一个处理程序,但它不工作。换句话说,我想在运行时添加一个处理程序 package main import ( "log" "time" tb "gopkg.in/tucnak/telebot.v2" ) func main() { b, err := tb.NewBot(tb.Settings{ // You can als

我习惯于在golang创建一个机器人。我想在bot启动后添加一个处理程序,但它不工作。换句话说,我想在运行时添加一个处理程序

package main

import (
    "log"
    "time"

    tb "gopkg.in/tucnak/telebot.v2"
)

func main() {
    b, err := tb.NewBot(tb.Settings{
        // You can also set custom API URL.
        // If field is empty it equals to "https://api.telegram.org".
        URL: "http://195.129.111.17:8012",

        Token:  "TOKEN_HERE",
        Poller: &tb.LongPoller{Timeout: 10 * time.Second},
    })

    if err != nil {
        log.Fatal(err)
        return
    }

    b.Handle("/delete", func(m *tb.Message) {
        user = m.Sender.ID
        prepareUserButtons(user,b)
        b.Send(m.Sender, "test")
    })

    b.Start()
}

func prepareUserButtons(user int, b *tb.Bot){
        key := "/delete" + strconv.Itoa(user)
        b.Handle(key, func(m *tb.Message) {
            b.Send(m.Sender, "this is sample")
        })
}

为了简单起见,我在上面写了一个简单的示例。所以这不是我的代码,而是我的意思的一个示例。在bot启动(运行时)后创建新的处理程序。

好的,您可以在bot启动(main func)后创建新的处理程序,但必须在
bot.start()之前调用处理程序。
。您可以创建一个名为
handleDelete
的新函数,在那里您可以处理
/delete
,然后在
bot.start()之前调用该函数。希望这有意义。

我不明白,为什么需要在运行时添加处理程序?您希望在
/delete
中处理有效负载,例如
/delete?foo=bar
/delete1
/delete2
/deleteN
/deleteN
/deleteN
,谢谢您的关注。您有获取处理程序有效负载的样本吗?在我的示例中,每个用户都有N个项目,因此我希望在例如“delete”调用时,我将项目的id和用户id传递给处理程序。消息中有
有效负载
,您能提供它作为示例的答案吗?因为我看到的是bot消息中的数据。我需要提到的是,您必须通过
:=
user
声明为新变量。然后,它将是
user:=m.Sender.ID