在运行时向电报机器人添加新的处理程序
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()
之前调用该函数。希望这是有道理的。
我正在使用 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()
之前调用该函数。希望这是有道理的。