修复(service/binance.go): 优化币安服务定时价格更新,移除冗余代码,增强效率。

修复(service/guard.go): 优化消息过滤器,增强消息处理准确性,添加自动撤回及提示功能。
This commit is contained in:
wood chen 2024-09-18 04:07:12 +08:00
parent 19c3b5ebd5
commit 6b4d776a89
2 changed files with 23 additions and 14 deletions

View File

@ -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 {}
}
}

View File

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