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) + } + } }