✨ 新增配置文件
This commit is contained in:
@@ -2,6 +2,7 @@ package tasks
|
||||
|
||||
import (
|
||||
"github.com/go-co-op/gocron"
|
||||
"go-wechat/config"
|
||||
"log"
|
||||
"time"
|
||||
)
|
||||
@@ -9,16 +10,25 @@ import (
|
||||
// InitTasks
|
||||
// @description: 初始化定时任务
|
||||
func InitTasks() {
|
||||
// 没启用直接返回
|
||||
if !config.Conf.Task.Enable {
|
||||
log.Println("未启用定时任务")
|
||||
return
|
||||
}
|
||||
// 定时任务发送消息
|
||||
s := gocron.NewScheduler(time.Local)
|
||||
|
||||
// 每天早上九点半发送前一天的水群排行
|
||||
_, _ = s.Every(1).Day().At("09:30").Do(yesterday)
|
||||
//_, _ = s.Every(5).Minute().Do(yesterday)
|
||||
// 水群排行
|
||||
if config.Conf.Task.WaterGroup.Enable {
|
||||
log.Printf("水群排行任务已启用,执行表达式: %s", config.Conf.Task.WaterGroup.Cron)
|
||||
_, _ = s.Cron(config.Conf.Task.WaterGroup.Cron).Do(yesterday)
|
||||
}
|
||||
|
||||
// 每小时更新一次好友列表
|
||||
//_, _ = s.Every(5).Minute().Do(syncFriends)
|
||||
_, _ = s.Every(1).Hour().Do(syncFriends)
|
||||
// 更新好友列表
|
||||
if config.Conf.Task.SyncFriends.Enable {
|
||||
log.Printf("更新好友列表任务已启用,执行表达式: %s", config.Conf.Task.SyncFriends.Cron)
|
||||
_, _ = s.Cron(config.Conf.Task.SyncFriends.Cron).Do(syncFriends)
|
||||
}
|
||||
|
||||
// 开启定时任务
|
||||
s.StartAsync()
|
||||
|
||||
@@ -3,11 +3,9 @@ package tasks
|
||||
import (
|
||||
"fmt"
|
||||
"go-wechat/client"
|
||||
"go-wechat/config"
|
||||
"go-wechat/entity"
|
||||
"go-wechat/utils"
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
"strings"
|
||||
)
|
||||
|
||||
@@ -16,9 +14,7 @@ import (
|
||||
// yesterday
|
||||
// @description: 昨日排行榜
|
||||
func yesterday() {
|
||||
// 从环境变量读取需要处理的群Id
|
||||
gid := strings.Split(os.Getenv("GROUP_ID"), ",")
|
||||
for _, id := range gid {
|
||||
for _, id := range config.Conf.Task.WaterGroup.Groups {
|
||||
dealYesterday(id)
|
||||
}
|
||||
}
|
||||
@@ -29,24 +25,9 @@ func yesterday() {
|
||||
func dealYesterday(gid string) {
|
||||
notifyMsgs := []string{"#昨日水群排行榜"}
|
||||
|
||||
// 读取黑名单文件,名单内的Id不上榜
|
||||
var blacklist []string
|
||||
file, err := os.Open("blacklist.txt")
|
||||
if err != nil {
|
||||
log.Printf("读取黑名单失败: %v", err)
|
||||
} else {
|
||||
defer file.Close()
|
||||
var content []byte
|
||||
if content, err = io.ReadAll(file); err != nil {
|
||||
log.Printf("读取黑名单失败: %v", err)
|
||||
} else {
|
||||
blacklist = strings.Split(string(content), "\n")
|
||||
}
|
||||
}
|
||||
|
||||
// 获取昨日消息总数
|
||||
var yesterdayMsgCount int64
|
||||
err = client.MySQL.Model(&entity.Message{}).
|
||||
err := client.MySQL.Model(&entity.Message{}).
|
||||
Where("from_user = ?", gid).
|
||||
Where("DATEDIFF(create_at,NOW()) = -1").
|
||||
Count(&yesterdayMsgCount).Error
|
||||
@@ -79,6 +60,8 @@ func dealYesterday(gid string) {
|
||||
Group("tm.group_user, tgu.nickname").Order("`count` DESC").
|
||||
Limit(10)
|
||||
|
||||
// 黑名单
|
||||
blacklist := config.Conf.Task.WaterGroup.Blacklist
|
||||
// 如果有黑名单,过滤掉
|
||||
if len(blacklist) > 0 {
|
||||
tx.Where("tm.group_user NOT IN (?)", blacklist)
|
||||
@@ -99,5 +82,5 @@ func dealYesterday(gid string) {
|
||||
notifyMsgs = append(notifyMsgs, " \n请未上榜的群友多多反思。")
|
||||
|
||||
log.Printf("排行榜: \n%s", strings.Join(notifyMsgs, "\n"))
|
||||
go utils.SendMessage(gid, "", strings.Join(notifyMsgs, "\n"), 0)
|
||||
//go utils.SendMessage(gid, "", strings.Join(notifyMsgs, "\n"), 0)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user