在运行时向电报机器人添加新的处理程序

Add new handler to telegrambot on runtime

我正在使用 https://github.com/tucnak/telebot 在 golang 中创建一个机器人。我想在机器人启动后添加一个处理程序,但它不工作。换句话说,我想在运行时添加一个处理程序。

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.start() 之前调用该处理程序。您可以创建一个名为 handleDelete 的新函数,在那里您可以处理 /delete,然后在 bot.start() 之前调用该函数。希望这是有道理的。