Skip to content

Commit ce1e85e

Browse files
committed
⚡️ 🔥 优化 score 并发
1 parent 560df5c commit ce1e85e

File tree

1 file changed

+37
-12
lines changed

1 file changed

+37
-12
lines changed

plugin_score/sign_in.go

Lines changed: 37 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -49,23 +49,31 @@ func init() {
4949
siUpdateTimeStr := si.UpdatedAt.Format("20060102")
5050
if siUpdateTimeStr != today {
5151
if err := sdb.InsertOrUpdateSignInCountByUID(uid, 0); err != nil {
52-
log.Errorln("[score]:", err)
52+
ctx.SendChain(message.Text("ERROR:", err))
53+
return
5354
}
5455
}
56+
57+
drawedFile := cachePath + strconv.FormatInt(uid, 10) + today + "signin.png"
5558
if si.Count >= signinMax && siUpdateTimeStr == today {
5659
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text("今天你已经签到过了!"))
60+
if file.IsExist(drawedFile) {
61+
ctx.SendChain(message.Image("file:///" + file.BOTPATH + "/" + drawedFile))
62+
}
5763
return
5864
}
5965

6066
picFile := cachePath + strconv.FormatInt(uid, 10) + today + ".png"
6167
initPic(picFile)
6268

6369
if err := sdb.InsertOrUpdateSignInCountByUID(uid, si.Count+1); err != nil {
64-
log.Errorln("[score]:", err)
70+
ctx.SendChain(message.Text("ERROR:", err))
71+
return
6572
}
6673
back, err := gg.LoadImage(picFile)
6774
if err != nil {
68-
log.Errorln("[score]:", err)
75+
ctx.SendChain(message.Text("ERROR:", err))
76+
return
6977
}
7078
canvas := gg.NewContext(back.Bounds().Size().X, int(float64(back.Bounds().Size().Y)*1.7))
7179
canvas.SetRGB(1, 1, 1)
@@ -75,14 +83,16 @@ func init() {
7583
monthWord := now.Format("01/02")
7684
hourWord := getHourWord(now)
7785
if err = canvas.LoadFontFace(txt2img.BoldFontFile, float64(back.Bounds().Size().X)*0.1); err != nil {
78-
log.Println("[score]:", err)
86+
ctx.SendChain(message.Text("ERROR:", err))
87+
return
7988
}
8089
canvas.SetRGB(0, 0, 0)
8190
canvas.DrawString(hourWord, float64(back.Bounds().Size().X)*0.1, float64(back.Bounds().Size().Y)*1.2)
8291
canvas.DrawString(monthWord, float64(back.Bounds().Size().X)*0.6, float64(back.Bounds().Size().Y)*1.2)
8392
nickName := ctxext.CardOrNickName(ctx, uid)
8493
if err = canvas.LoadFontFace(txt2img.FontFile, float64(back.Bounds().Size().X)*0.04); err != nil {
85-
log.Println("[score]:", err)
94+
ctx.SendChain(message.Text("ERROR:", err))
95+
return
8696
}
8797
add := 1
8898
canvas.DrawString(nickName+fmt.Sprintf(" 小熊饼干+%d", add), float64(back.Bounds().Size().X)*0.1, float64(back.Bounds().Size().Y)*1.3)
@@ -93,7 +103,8 @@ func init() {
93103
ctx.SendChain(message.At(uid), message.Text("你获得的小熊饼干已经达到上限"))
94104
}
95105
if err := sdb.InsertOrUpdateScoreByUID(uid, score); err != nil {
96-
log.Println("[score]:", err)
106+
ctx.SendChain(message.Text("ERROR:", err))
107+
return
97108
}
98109
level := getLevel(score)
99110
canvas.DrawString("当前小熊饼干:"+strconv.FormatInt(int64(score), 10), float64(back.Bounds().Size().X)*0.1, float64(back.Bounds().Size().Y)*1.4)
@@ -112,11 +123,25 @@ func init() {
112123
canvas.SetRGB255(102, 102, 102)
113124
canvas.Fill()
114125
canvas.DrawString(fmt.Sprintf("%d/%d", score, nextLevelScore), float64(back.Bounds().Size().X)*0.75, float64(back.Bounds().Size().Y)*1.62)
115-
canvasBase64, err := txt2img.TxtCanvas{Canvas: canvas}.ToBase64()
126+
127+
f, err := os.Open(drawedFile)
128+
txtc := txt2img.TxtCanvas{Canvas: canvas}
129+
if err != nil {
130+
log.Errorln("[score]", err)
131+
canvasBase64, err := txtc.ToBase64()
132+
if err != nil {
133+
ctx.SendChain(message.Text("ERROR:", err))
134+
return
135+
}
136+
ctx.SendChain(message.Image("base64://" + helper.BytesToString(canvasBase64)))
137+
return
138+
}
139+
_, err = txtc.WriteTo(f)
116140
if err != nil {
117-
log.Println("[score]:", err)
141+
ctx.SendChain(message.Text("ERROR:", err))
142+
return
118143
}
119-
ctx.SendChain(message.Image("base64://" + helper.BytesToString(canvasBase64)))
144+
ctx.SendChain(message.Image("file:///" + file.BOTPATH + "/" + drawedFile))
120145
})
121146
engine.OnPrefix("获得签到背景", zero.OnlyGroup).SetBlock(true).SetPriority(20).
122147
Handle(func(ctx *zero.Ctx) {
@@ -168,16 +193,16 @@ func initPic(picFile string) {
168193
if file.IsNotExist(picFile) {
169194
data, err := web.ReqWith(backgroundURL, "GET", referer, ua)
170195
if err != nil {
171-
log.Errorln("[score]:", err)
196+
log.Errorln("[score]", err)
172197
}
173198
picURL := gjson.Get(string(data), "pic").String()
174199
data, err = web.ReqWith(picURL, "GET", "", ua)
175200
if err != nil {
176-
log.Errorln("[score]:", err)
201+
log.Errorln("[score]", err)
177202
}
178203
err = os.WriteFile(picFile, data, 0666)
179204
if err != nil {
180-
log.Errorln("[score]:", err)
205+
log.Errorln("[score]", err)
181206
}
182207
}
183208
}

0 commit comments

Comments
 (0)