package tasks import ( "app/commons/core" "app/commons/services" "app/telegram" "github.com/robfig/cron/v3" ) // StartRedPacketExpireTask 在 API 进程中启动红包过期检查定时任务 func StartRedPacketExpireTask() { c := cron.New(cron.WithSeconds()) // 每30秒检查一次过期红包 _, err := c.AddFunc("*/30 * * * * *", checkExpiredRedPackets) if err != nil { core.Log.Errorf("注册红包过期检查任务失败: %v", err) return } c.Start() core.Log.Info("红包过期检查定时任务已启动 (每30秒)") } func checkExpiredRedPackets() { svc := &services.RedPacketService{} // 结算过期红包(数据库操作),返回需要编辑的 Telegram 消息列表 editList := svc.ProcessExpiredPackets() // 在 tasks 层调用 telegram 包编辑消息(避免 services -> telegram 循环依赖) for _, info := range editList { telegram.EditExpiredMessage(info.ChatID, info.MessageID, info.Text) } }