2022-10-09 21:05:42 +08:00

125 lines
3.7 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package controller
import (
"fmt"
"github.com/eatmoreapple/openwechat"
"github.com/robfig/cron/v3"
"go-bot/bot/database"
"strconv"
"time"
)
// 新建一个定时任务对象
// 根据cron表达式进行时间调度cron可以精确到秒大部分表达式格式也是从秒开始。
// crontab := cron.New() 默认从分开始进行时间调度
var crontab = cron.New(cron.WithSeconds()) //精确到秒
func SignInBegin(msg *openwechat.Message, self *openwechat.Self) {
groups, err := self.Groups()
name := groups.GetByNickName("叫啥好呢")
fmt.Printf(name.NickName, err)
//定义定时器调用的任务函数
task := func() {
self.SendTextToGroup(name, "同志们学习了!")
}
//定义定时器调用的任务函数
task1 := func() {
self.SendTextToGroup(name, "成天就知道玩,你可张点心吧!")
}
//定义定时器调用的任务函数
task2 := func() {
self.SendTextToGroup(name, "同志们学习了!")
}
//定时任务
spec := "0 0 9 * * ?" //cron表达式每天9点
spec1 := "0 10 9 * * ?" //cron表达式每天9点
spec2 := "0 11 22 * * ?" //cron表达式每天9点
// 添加定时任务,
crontab.AddFunc(spec, task)
crontab.AddFunc(spec1, task1)
crontab.AddFunc(spec2, task2)
// 启动定时器
crontab.Start()
self.SendTextToGroup(name, "sign start is success")
// 定时任务是另起协程执行的,这里使用 select 简答阻塞.实际开发中需要
// 根据实际情况进行控制
//阻塞主线程停止
//select {
//查询语句保持程序运行在这里等同于for{}
//}
}
func SchoolSignInBegin(msg *openwechat.Message, self *openwechat.Self) {
groups, err := self.Groups()
name := groups.GetByNickName("四大天王")
fmt.Printf(name.NickName, err)
//定义定时器调用的任务函数
task := func() {
self.SendTextToGroup(name, "智慧东方打卡!")
}
//定义定时器调用的任务函数
task1 := func() {
self.SendTextToGroup(name, "还不打? 是想对狒狒呲牙麻?")
}
//定义定时器调用的任务函数
task2 := func() {
self.SendTextToGroup(name, "拍照打卡!")
}
//定时任务
spec := "0 0 9 * * ?" //cron表达式每天9点
spec1 := "0 10 9 * * ?" //cron表达式每天9点
spec2 := "0 11 22 * * ?" //cron表达式每天9点
// 添加定时任务,
crontab.AddFunc(spec, task)
crontab.AddFunc(spec1, task1)
crontab.AddFunc(spec2, task2)
// 启动定时器
crontab.Start()
self.SendTextToGroup(name, "sign start is success")
// 定时任务是另起协程执行的,这里使用 select 简答阻塞.实际开发中需要
// 根据实际情况进行控制
//阻塞主线程停止
//select {
//查询语句保持程序运行在这里等同于for{}
//}
}
func SignInEnd(msg *openwechat.Message, self *openwechat.Self, string2 string) {
groups, err := self.Groups()
name := groups.GetByNickName(string2)
fmt.Printf(name.NickName, err)
crontab.Stop()
// 发送到微信
self.SendTextToGroup(name, "sign end is success")
}
func SignIn(msg *openwechat.Message, self *openwechat.Self) {
// 获取消息发送者
sender, err := msg.SenderInGroup()
nickName := sender.NickName
//查询数据库是否有此人 或此人就获得积分
integration := database.SelectUserIntegrationByNickName(nickName)
fmt.Println(integration)
integration = database.UpDataUserIntegrationByNickName(nickName, integration)
// 获取群聊组
groups, err := self.Groups()
name := groups.GetByNickName("叫啥好呢")
fmt.Printf(name.NickName, err)
// 当前时间
timeStr := time.Now().Format("2006-01-02 15:04:05")
self.SendTextToGroup(name, nickName+":今日打卡成功!\n"+"积分:"+strconv.Itoa(integration)+"\n时间"+timeStr)
}