Go 在运行时向telegrambot添加新处理程序
我习惯于在golang创建一个机器人。我想在bot启动后添加一个处理程序,但它不工作。换句话说,我想在运行时添加一个处理程序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
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
。