gpt4 book ai didi

go - 如何运行无限循环并保持电报bot中的更新

转载 作者:行者123 更新时间:2023-12-01 21:10:13 25 4
gpt4 key购买 nike

我正在使用Go(go-telegram-bot-api)写电报机器人。它会不断解析网站并通知更改(每分钟)。今天,我添加了简单的键盘,但现在无法使它们一起使用。

问题在于网页解析处于无限循环中,进入该循环的程序将忽略来自“客户端”的更新。

我尝试过将所有内容放在一个循环中,更改订单等。也许有另一种或适当的方法可以做到这一点?

样例代码:

    u := tgbotapi.NewUpdate(0)
u.Timeout = 60

updates, err := bot.GetUpdatesChan(u)

for update := range updates {
if update.Message != nil {

switch update.Message.Text {
case "Show Keyboard":
Keyboard is sent
case "OptionsForParsing":
options.applied
case "StartParsing":
search bool = true
case "StopParsing":
search bool = false
}
}

if search == true{
for{
time.Sleep(1 * time.Minute)
AreThereChanges?()
if yes{
msg := tgbotapi.NewMessage(update.Message.Chat.ID, "help please")
bot.Send(msg)
}
}}
}

最佳答案

如果我没事的话,您应该在单独的goroutine中开始解析循环,以便更新周期继续有效。

尝试做这样的事情:

// you can use cancel to stop running parsing goroutine
ctx, cancel := context.WithCancel(context.Background())

go func() {
ticker := time.NewTicker(5 * time.Second)
defer ticker.Stop()

for {
select {
case <-ctx.Done():
return
case <-ticker.C:
AreThereChanges?()
if yes {
msg := tgbotapi.NewMessage(update.Message.Chat.ID, "help please")
bot.Send(msg)
}
}
}
}()

尽我所能写作,所以不要指望它会在第一次尝试时就被编译出来,而是会证明这个想法。请查看以下链接,了解有关股票行情和取消交易的更多信息: clickclick

关于go - 如何运行无限循环并保持电报bot中的更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62070276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com