ai-week/cmd/main.go

74 lines
2.2 KiB
Go
Raw Permalink Normal View History

2024-05-01 20:03:20 +08:00
package main
import (
2024-05-02 14:58:41 +08:00
"flag"
2024-05-02 12:38:42 +08:00
"fmt"
"github.com/jasonlvhit/gocron"
2024-05-01 20:03:20 +08:00
"log"
"time"
"week/moonshot"
"week/qywechat"
2024-05-02 12:38:42 +08:00
"week/tools"
2024-05-01 20:03:20 +08:00
)
2024-05-02 12:38:42 +08:00
var maxRetries = 0
var now = time.Now()
2024-05-02 14:58:41 +08:00
var liveMode bool
var operateTime = 1
2024-05-01 20:03:20 +08:00
func main() {
2024-05-02 13:16:38 +08:00
log.Println(`
2024-05-02 12:38:42 +08:00
_____
_/ ____\______ ____ _____ _____ ____ __ _ _______ ____ ____
\ __\\_ __ \/ _ \ / \ \__ \ / _ \ \ \/ \/ /\__ \ / \ / ___\
| | | | \( <_> ) Y Y \ / __ \( <_> ) \ / / __ \| | \/ /_/ >
|__| |__| \____/|__|_| / (____ /\____/ \/\_/ (____ /___| /\___ /
2024-05-02 13:16:38 +08:00
\/ \/ \/ \//_____/ `)
2024-05-02 12:38:42 +08:00
fmt.Println("-----------------------------------------------------------------------------------------")
fmt.Println("-----------------------------------------------------------------------------------------")
2024-05-02 21:05:21 +08:00
flag.BoolVar(&liveMode, "livemode", false, "即时模式默认关闭")
2024-05-02 14:58:41 +08:00
flag.Parse()
if !liveMode {
log.Println("目前是定时任务模式")
log.Printf("等待任务的第%v次执行...", operateTime)
// 定义任务,每周五的五点执行
gocron.Every(1).Friday().At("17:00").Do(job)
// 开始定时任务
<-gocron.Start()
2024-05-01 20:03:20 +08:00
} else {
log.Println("目前是即时任务模式")
2024-05-02 14:58:41 +08:00
job()
2024-05-01 20:03:20 +08:00
}
2024-05-02 14:58:41 +08:00
2024-05-01 20:03:20 +08:00
}
func job() {
//最多重试3次
if maxRetries < 3 {
nowDate := now.Format("2006-01-02 15:04:05") + " " + now.Weekday().String()
log.Printf("开始执行任务,当前时间是:%v", nowDate)
2024-05-02 12:38:42 +08:00
err := moonshot.CreateExcel()
if err != nil {
maxRetries++
log.Printf("执行失败,开始第%v次重试...", maxRetries)
log.Println("----------------------------------------------------------------------")
job()
2024-05-02 12:38:42 +08:00
}
repContent, err := moonshot.AiChat()
if err != nil {
maxRetries++
log.Printf("执行失败,开始第%v次重试...", maxRetries)
log.Println("----------------------------------------------------------------------")
job()
}
qywechat.Send(repContent)
operateTime++
log.Printf("任务执行成功,当前时间是:%v", nowDate)
log.Printf("等待%v次任务执行还剩:%v", operateTime, tools.TimeUntilFriday())
} else {
log.Fatalln("最大重试次数已到达3退出")
2024-05-01 20:03:20 +08:00
}
}