tg模式和定时模式不再冲突

This commit is contained in:
johlanse 2022-05-02 20:30:49 +08:00
parent 62d0e1c1f1
commit 326585bcdb
1 changed files with 53 additions and 30 deletions

83
main.go
View File

@ -35,7 +35,9 @@ func init() {
log.SetOutput(io.MultiWriter(w, os.Stdout)) log.SetOutput(io.MultiWriter(w, os.Stdout))
log.SetFormatter(logFormatter) log.SetFormatter(logFormatter)
level, err := log.ParseLevel(config.LogLevel) level, err := log.ParseLevel(config.LogLevel)
if err != nil {
log.SetLevel(log.DebugLevel)
}
log.SetLevel(level) log.SetLevel(level)
} }
@ -56,7 +58,7 @@ var (
func init() { func init() {
_, err := os.Stat(`./config/`) _, err := os.Stat(`./config/`)
if err != nil { if err != nil {
os.Mkdir("./config/", 0666) os.Mkdir("./config/", 0666) //nolint:errcheck
return return
} }
} }
@ -76,43 +78,64 @@ func main() {
log.Infoln(fmt.Sprintf("将等待%d秒后启动程序", config.StartWait)) log.Infoln(fmt.Sprintf("将等待%d秒后启动程序", config.StartWait))
time.Sleep(time.Second * time.Duration(config.StartWait)) time.Sleep(time.Second * time.Duration(config.StartWait))
} }
switch {
case config.Cron != "": if config.Cron != "" {
log.Infoln("已采用定时执行模式") go func() {
c := cron.New()
_, err := c.AddFunc(config.Cron, func() {
defer func() { defer func() {
i := recover() err := recover()
if i != nil { if err != nil {
log.Errorln(i) log.Errorln("定时任务执行出现问题")
log.Errorln("执行定时任务出现异常") log.Errorln(err)
} }
}() }()
do() log.Infoln("已采用定时执行模式")
}) c := cron.New()
if err != nil { _, err := c.AddFunc(config.Cron, func() {
log.Errorln(err.Error()) defer func() {
return i := recover()
} if i != nil {
c.Start() log.Errorln(i)
select {} log.Errorln("执行定时任务出现异常")
case config.TG.Enable: }
log.Infoln("已采用tg交互模式") }()
telegram := lib.Telegram{ do()
Token: config.TG.Token, })
ChatId: config.TG.ChatID, if err != nil {
Proxy: config.TG.Proxy, log.Errorln(err.Error())
} return
telegram.Init() }
select {} c.Start()
default: select {}
}()
}
if config.TG.Enable {
go func() {
defer func() {
err := recover()
if err != nil {
log.Errorln("TG模式执行出现问题")
log.Errorln(err)
}
}()
log.Infoln("已采用tg交互模式")
telegram := lib.Telegram{
Token: config.TG.Token,
ChatId: config.TG.ChatID,
Proxy: config.TG.Proxy,
}
telegram.Init()
select {}
}()
}
if !config.TG.Enable && config.Cron == "" {
log.Infoln("已采用普通学习模式") log.Infoln("已采用普通学习模式")
do() do()
} }
} }
func do() { func do() {
defer func() { defer func() {
err := recover() err := recover()
if err != nil { if err != nil {