Skip to content

摸鱼提醒 #79

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Nov 22, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
146 changes: 146 additions & 0 deletions plugin_moyu/run.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
package moyu

import (
"bytes"
"encoding/json"
"fmt"
"os"
"strconv"
"time"

"github.com/FloatTech/ZeroBot-Plugin/control"
"github.com/robfig/cron"

zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/message"
)

//开启的群
type Kq struct {
GroupID []int64 `json:"群号"` //群号
}

//默认
var MY = Kq{
GroupID: []int64{639865824},
}

func init() { // 插件主体
os.MkdirAll("config/", 0777)
_, err := os.Stat(`config/moyu.json`)
if err == nil {
f, _ := os.Open("config/moyu.json")
defer f.Close()
err := json.NewDecoder(f).Decode(&MY)
if err != nil {
fmt.Print("config.json格式错误! 请检查!\n")
time.Sleep(5 * time.Second)
return
}
} else {
fp, _ := os.Create("config/moyu.json")
defer fp.Close()
data, _ := json.Marshal(MY)
var out bytes.Buffer
json.Indent(&out, data, "", "\t")
out.WriteTo(fp)
}

FansDaily() // 开启提醒
engine := control.Register("moyu", &control.Options{
DisableOnDefault: false,
Help: "moyu\n" +
"- 删除提醒\n" +
"- 添加提醒\n",
})

engine.OnRegex(`^(添加|删除)提醒$`).
SetBlock(true).SetPriority(20).Handle(func(ctx *zero.Ctx) {
fp, _ := os.Create("config/moyu.json")
defer fp.Close()
for i, v := range MY.GroupID {
if v == ctx.Event.GroupID {
MY.GroupID = append(MY.GroupID[:i], MY.GroupID[i+1:]...)
break
}
}
if ctx.State["regex_matched"].([]string)[1] == "添加" {
MY.GroupID = append(MY.GroupID, ctx.Event.GroupID)
ctx.Send(message.Text("添加成功!"))
} else {
ctx.Send(message.Text("删除成功!"))
}
data, _ := json.Marshal(MY)
var out bytes.Buffer
json.Indent(&out, data, "", "\t")
out.WriteTo(fp)
})

}

// 定时任务每天10点执行一次
func FansDaily() {
c := cron.New()
_ = c.AddFunc("0 0 10 * * ?", func() { fansData() })
c.Start()
}

// 获取数据拼接消息链并发送
func fansData() {
for _, v := range MY.GroupID {
zero.RangeBot(func(id int64, ctx *zero.Ctx) bool {
ctx.SendGroupMessage(
v,
[]message.MessageSegment{
message.Text(time.Now().Format("2006-01-02") +
"上午好,摸鱼人!\n工作再累,一定不要忘记摸鱼哦!有事没事起身去茶水间,去厕所,去廊道走走别老在工位上坐着,钱是老板的,但命是自己的。" +
Zm() + "\n" +
Moyu("元旦", 2022, 1, 1) + "\n" +
Moyu("春节", 2022, 1, 31) + "\n" +
Moyu("清明节", 2022, 4, 3) + "\n" +
Moyu("劳动节", 2022, 4, 30) + "\n" +
Moyu("端午节", 2022, 6, 3) + "\n" +
Moyu("中秋节", 2022, 9, 10) + "\n" +
Moyu("国庆节", 2022, 10, 1) + "\n" +
"\n\n上班是帮老板赚钱,摸鱼是赚老板的钱!最后,祝愿天下所有摸鱼人,都能愉快的渡过每一天…",
),
},
)
return true
})

}
}

// 获取两个时间相差
func Moyu(text string, year int, month time.Month, day int) string {
currentTime := time.Now()
t1 := time.Date(year, month, day, 0, 0, 0, 0, time.Local)
t2 := time.Date(currentTime.Year(), currentTime.Month(), currentTime.Day(), 0, 0, 0, 0, time.Local)
tt := int(t1.Sub(t2).Hours() / 24)
if tt >= 0 {
return "距离" + text + "还有: " + strconv.Itoa(tt) + " 天!"
} else {
return "好好享受 " + text + " 假期吧!"
}
}

func Zm() string {
t := time.Now().Weekday().String()
switch {
case t == "Sunday":
return "\n好好享受周末吧!"
case t == "Monday":
return "\n距离周末还有:4天!"
case t == "Tuesday":
return "\n距离周末还有:3天!"
case t == "Wednesday":
return "\n距离周末还有:2天!"
case t == "Thursday":
return "\n距离周末还有:1天!"
case t == "Friday":
return "\n距离周末还有:0天!"
default:
return "\n好好享受周末吧!"
}
}