From 6b4d776a89cdc259b058165890c891be4245f117 Mon Sep 17 00:00:00 2001 From: wood chen Date: Wed, 18 Sep 2024 04:07:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D(service/binance.go):=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=B8=81=E5=AE=89=E6=9C=8D=E5=8A=A1=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E4=BB=B7=E6=A0=BC=E6=9B=B4=E6=96=B0=EF=BC=8C=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=E5=86=97=E4=BD=99=E4=BB=A3=E7=A0=81=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=BC=BA=E6=95=88=E7=8E=87=E3=80=82=20=E4=BF=AE=E5=A4=8D(servi?= =?UTF-8?q?ce/guard.go):=20=E4=BC=98=E5=8C=96=E6=B6=88=E6=81=AF=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E5=99=A8=EF=BC=8C=E5=A2=9E=E5=BC=BA=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E5=A4=84=E7=90=86=E5=87=86=E7=A1=AE=E6=80=A7=EF=BC=8C=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E8=87=AA=E5=8A=A8=E6=92=A4=E5=9B=9E=E5=8F=8A=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E5=8A=9F=E8=83=BD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- service/binance.go | 20 +++++++------------- service/guard.go | 17 ++++++++++++++++- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/service/binance.go b/service/binance.go index 383dec3..837bdf7 100644 --- a/service/binance.go +++ b/service/binance.go @@ -143,23 +143,17 @@ func sendPriceUpdate() { func RunBinance() { log.Println("Starting Binance service...") + // 立即发送一次价格更新 sendPriceUpdate() - var scheduleNextUpdate func() - scheduleNextUpdate = func() { - now := time.Now().In(singaporeTZ) - nextHour := now.Add(time.Hour).Truncate(time.Hour) - duration := nextHour.Sub(now) + ticker := time.NewTicker(1 * time.Minute) + defer ticker.Stop() - time.AfterFunc(duration, func() { + for range ticker.C { + now := time.Now().In(singaporeTZ) + if now.Minute() == 0 { log.Println("Sending hourly price update...") sendPriceUpdate() - scheduleNextUpdate() - }) + } } - - scheduleNextUpdate() - - // 保持主 goroutine 运行 - select {} } diff --git a/service/guard.go b/service/guard.go index ab59787..5b68689 100644 --- a/service/guard.go +++ b/service/guard.go @@ -147,16 +147,20 @@ func processMessage(bot *tgbotapi.BotAPI, message *tgbotapi.Message, linkFilter if shouldFilter { log.Printf("Message should be filtered: %s", message.Text) if message.From.ID != core.ADMIN_ID { + // 删除原始消息 deleteMsg := tgbotapi.NewDeleteMessage(message.Chat.ID, message.MessageID) _, err := bot.Request(deleteMsg) if err != nil { log.Printf("Failed to delete message: %v", err) } + + // 发送提示消息 notification := tgbotapi.NewMessage(message.Chat.ID, "已撤回该消息。注:一个链接不能发两次.") sent, err := bot.Send(notification) if err != nil { log.Printf("Failed to send notification: %v", err) } else { + // 3分钟后删除提示消息 go deleteMessageAfterDelay(bot, message.Chat.ID, sent.MessageID, 3*time.Minute) } } @@ -166,5 +170,16 @@ func processMessage(bot *tgbotapi.BotAPI, message *tgbotapi.Message, linkFilter log.Printf("New non-whitelisted links found: %v", newLinks) } - CheckAndReplyPrompt(bot, message) + // 检查并回复提示词 + if reply, found := GetPromptReply(message.Text); found { + replyMsg := tgbotapi.NewMessage(message.Chat.ID, reply) + replyMsg.ReplyToMessageID = message.MessageID + sent, err := bot.Send(replyMsg) + if err != nil { + log.Printf("Failed to send prompt reply: %v", err) + } else { + // 3分钟后删除提示词回复 + go deleteMessageAfterDelay(bot, message.Chat.ID, sent.MessageID, 3*time.Minute) + } + } }