Skip to content

Commit ae41bdb

Browse files
committed
✏️ 修改摸鱼节日为动态变化
1 parent 4147f10 commit ae41bdb

File tree

3 files changed

+109
-7
lines changed

3 files changed

+109
-7
lines changed

plugin_moyu/holiday_test.go

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package moyu
2+
3+
import (
4+
"fmt"
5+
"testing"
6+
"time"
7+
8+
reg "github.com/fumiama/go-registry"
9+
)
10+
11+
var sr = reg.NewRegedit("reilia.eastasia.azurecontainer.io:32664", "fumiama", "--")
12+
13+
func TestGetHoliday(t *testing.T) {
14+
registry.Connect()
15+
holidaymap = make(map[string]*Holiday)
16+
h := GetHoliday("元旦")
17+
registry.Close()
18+
t.Fatal(h)
19+
}
20+
21+
func TestSetHoliday(t *testing.T) {
22+
err := sr.Connect()
23+
if err != nil {
24+
t.Fatal(err)
25+
}
26+
27+
err = SetHoliday("元旦", 1, 2022, 1, 1)
28+
if err != nil {
29+
t.Fatal(err)
30+
}
31+
err = SetHoliday("春节", 7, 2022, 1, 31)
32+
if err != nil {
33+
t.Fatal(err)
34+
}
35+
err = SetHoliday("清明节", 1, 2022, 4, 3)
36+
if err != nil {
37+
t.Fatal(err)
38+
}
39+
err = SetHoliday("劳动节", 1, 2022, 4, 30)
40+
if err != nil {
41+
t.Fatal(err)
42+
}
43+
err = SetHoliday("端午节", 1, 2022, 6, 3)
44+
if err != nil {
45+
t.Fatal(err)
46+
}
47+
err = SetHoliday("中秋节", 1, 2022, 9, 10)
48+
if err != nil {
49+
t.Fatal(err)
50+
}
51+
err = SetHoliday("国庆节", 7, 2022, 10, 1)
52+
if err != nil {
53+
t.Fatal(err)
54+
}
55+
56+
err = sr.Close()
57+
if err != nil {
58+
t.Fatal(err)
59+
}
60+
}
61+
62+
func SetHoliday(name string, dur, year int, month time.Month, day int) error {
63+
return sr.Set("holiday/"+name, fmt.Sprintf("%d_%d_%d_%d", dur, year, month, day))
64+
}

plugin_moyu/nowork.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ import (
44
"fmt"
55
"strconv"
66
"time"
7+
8+
reg "github.com/fumiama/go-registry"
9+
"github.com/sirupsen/logrus"
710
)
811

912
// Holiday 节日
@@ -18,6 +21,31 @@ func NewHoliday(name string, dur, year int, month time.Month, day int) *Holiday
1821
return &Holiday{name: name, date: time.Date(year, month, day, 0, 0, 0, 0, time.Local), dur: time.Duration(dur) * time.Hour * 24}
1922
}
2023

24+
var (
25+
registry = reg.NewRegReader("reilia.eastasia.azurecontainer.io:32664", "fumiama")
26+
holidaymap map[string]*Holiday
27+
)
28+
29+
// GetHoliday 从 reg 服务器获取节日
30+
func GetHoliday(name string) *Holiday {
31+
var dur, year int
32+
var month time.Month
33+
var day int
34+
h, ok := holidaymap[name]
35+
if ok {
36+
return h
37+
}
38+
ret, err := registry.Get("holiday/" + name)
39+
if err != nil {
40+
return NewHoliday(name+err.Error(), 0, 0, 0, 0)
41+
}
42+
fmt.Sscanf(ret, "%d_%d_%d_%d", &dur, &year, &month, &day)
43+
logrus.Debugln("[moyu]获取节日:", name, dur, year, month, day)
44+
h = NewHoliday(name, dur, year, month, day)
45+
holidaymap[name] = h
46+
return h
47+
}
48+
2149
// 获取两个时间相差
2250
func (h *Holiday) String() string {
2351
d := time.Until(h.date)

plugin_moyu/run.go

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,13 @@ func init() { // 插件主体
5959
func sendNotice() {
6060
m, ok := control.Lookup("moyu")
6161
if ok {
62+
if holidaymap == nil {
63+
ok = false
64+
if registry.Connect() != nil {
65+
return
66+
}
67+
holidaymap = make(map[string]*Holiday, 32)
68+
}
6269
zero.RangeBot(func(id int64, ctx *zero.Ctx) bool {
6370
for _, g := range ctx.GetGroupList().Array() {
6471
grp := g.Get("group_id").Int()
@@ -69,19 +76,19 @@ func sendNotice() {
6976
message.Text("上午好,摸鱼人!\n工作再累,一定不要忘记摸鱼哦!有事没事起身去茶水间,去厕所,去廊道走走别老在工位上坐着,钱是老板的,但命是自己的。\n"),
7077
message.Text(weekend()),
7178
message.Text("\n"),
72-
message.Text(NewHoliday("元旦", 1, 2022, 1, 1)),
79+
message.Text(GetHoliday("元旦")),
7380
message.Text("\n"),
74-
message.Text(NewHoliday("春节", 7, 2022, 1, 31)),
81+
message.Text(GetHoliday("春节")),
7582
message.Text("\n"),
76-
message.Text(NewHoliday("清明节", 1, 2022, 4, 3)),
83+
message.Text(GetHoliday("清明节")),
7784
message.Text("\n"),
78-
message.Text(NewHoliday("劳动节", 1, 2022, 4, 30)),
85+
message.Text(GetHoliday("劳动节")),
7986
message.Text("\n"),
80-
message.Text(NewHoliday("端午节", 1, 2022, 6, 3)),
87+
message.Text(GetHoliday("端午节")),
8188
message.Text("\n"),
82-
message.Text(NewHoliday("中秋节", 1, 2022, 9, 10)),
89+
message.Text(GetHoliday("中秋节")),
8390
message.Text("\n"),
84-
message.Text(NewHoliday("国庆节", 7, 2022, 10, 1)),
91+
message.Text(GetHoliday("国庆节")),
8592
message.Text("\n"),
8693
message.Text("上班是帮老板赚钱,摸鱼是赚老板的钱!最后,祝愿天下所有摸鱼人,都能愉快的渡过每一天…"),
8794
},
@@ -90,5 +97,8 @@ func sendNotice() {
9097
}
9198
return true
9299
})
100+
if !ok {
101+
_ = registry.Close()
102+
}
93103
}
94104
}

0 commit comments

Comments
 (0)