Skip to content

Commit

Permalink
[issues 840] Modify the "score" of the Image send type add base64
Browse files Browse the repository at this point in the history
 Modify the "score":Image send type add base64
适配shamrock,以路径发送图片失败后,使用base64发送图片。
  • Loading branch information
vatebur committed Jan 19, 2024
1 parent a006b30 commit 990bb98
Showing 1 changed file with 58 additions and 6 deletions.
64 changes: 58 additions & 6 deletions plugin/score/sign_in.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
package score

import (
"encoding/base64"
"math"
"math/rand"
"os"
Expand Down Expand Up @@ -106,9 +107,20 @@ func init() {
// 如果签到时间是今天
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text("今天你已经签到过了!"))
if file.IsExist(drawedFile) {
ctx.SendChain(message.Image("file:///" + file.BOTPATH + "/" + drawedFile))
//使用"file:"发送图片失败后,使用base64发送
if id := ctx.SendChain(message.Image("file:///" + file.BOTPATH + "/" + drawedFile)); id.ID() == 0 {
if file.IsExist(drawedFile) {
drawedFileData, err := os.ReadFile(file.BOTPATH + "/" + drawedFile)
if err != nil {
ctx.SendChain(message.Text("ERROR: 无法读取图片文件", err))
return
}
drawedFileBase64 := base64.StdEncoding.EncodeToString(drawedFileData)
ctx.SendChain(message.Image("base64://" + drawedFileBase64))
}
}
return
}
return
case siUpdateTimeStr != today:
// 如果是跨天签到就清数据
err := sdb.InsertOrUpdateSignInCountByUID(uid, 0)
Expand Down Expand Up @@ -176,7 +188,18 @@ func init() {
ctx.SendChain(message.Text("ERROR: ", err))
return
}
ctx.SendChain(message.Image("file:///" + file.BOTPATH + "/" + drawedFile))
//使用"file:"发送图片失败后,使用base64发送
if id := ctx.SendChain(message.Image("file:///" + file.BOTPATH + "/" + drawedFile)); id.ID() == 0 {
if file.IsExist(drawedFile) {
drawedFileData, err := os.ReadFile(file.BOTPATH + "/" + drawedFile)
if err != nil {
ctx.SendChain(message.Text("ERROR: 无法读取图片文件", err))
return
}
drawedFileBase64 := base64.StdEncoding.EncodeToString(drawedFileData)
ctx.SendChain(message.Image("base64://" + drawedFileBase64))
}
}
})

engine.OnPrefix("获得签到背景", zero.OnlyGroup).Limit(ctxext.LimitByGroup).SetBlock(true).
Expand All @@ -194,15 +217,33 @@ func init() {
return
}
if id := ctx.SendChain(message.Image("file:///" + file.BOTPATH + "/" + picFile)); id.ID() == 0 {
ctx.SendChain(message.Text("ERROR: 消息发送失败, 账号可能被风控"))
//使用"file:"发送图片失败后,使用base64发送
picFileFileData, err := os.ReadFile(file.BOTPATH + "/" + picFile)
if err != nil {
ctx.SendChain(message.Text("ERROR: 无法读取图片文件", err))
return
}
drawedFileBase64 := base64.StdEncoding.EncodeToString(picFileFileData)
ctx.SendChain(message.Image("base64://" + drawedFileBase64))
}
})
engine.OnFullMatch("查看等级排名", zero.OnlyGroup).Limit(ctxext.LimitByGroup).SetBlock(true).
Handle(func(ctx *zero.Ctx) {
today := time.Now().Format("20060102")
drawedFile := cachePath + today + "scoreRank.png"
if file.IsExist(drawedFile) {
ctx.SendChain(message.Image("file:///" + file.BOTPATH + "/" + drawedFile))
//使用"file:"发送图片失败后,使用base64发送
if id := ctx.SendChain(message.Image("file:///" + file.BOTPATH + "/" + drawedFile)); id.ID() == 0 {
if file.IsExist(drawedFile) {
drawedFileData, err := os.ReadFile(file.BOTPATH + "/" + drawedFile)
if err != nil {
ctx.SendChain(message.Text("ERROR: 无法读取图片文件", err))
return
}
drawedFileBase64 := base64.StdEncoding.EncodeToString(drawedFileData)
ctx.SendChain(message.Image("base64://" + drawedFileBase64))
}
}
return
}
st, err := sdb.GetScoreRankByTopN(10)
Expand Down Expand Up @@ -267,7 +308,18 @@ func init() {
ctx.SendChain(message.Text("ERROR: ", err))
return
}
ctx.SendChain(message.Image("file:///" + file.BOTPATH + "/" + drawedFile))
//使用"file:"发送图片失败后,使用base64发送
if id := ctx.SendChain(message.Image("file:///" + file.BOTPATH + "/" + drawedFile)); id.ID() == 0 {
if file.IsExist(drawedFile) {
drawedFileData, err := os.ReadFile(file.BOTPATH + "/" + drawedFile)
if err != nil {
ctx.SendChain(message.Text("ERROR: 无法读取图片文件", err))
return
}
drawedFileBase64 := base64.StdEncoding.EncodeToString(drawedFileData)
ctx.SendChain(message.Image("base64://" + drawedFileBase64))
}
}
})
engine.OnRegex(`^设置签到预设\s*(\d+)$`, zero.SuperUserPermission).Limit(ctxext.LimitByUser).SetBlock(true).Handle(func(ctx *zero.Ctx) {
key := ctx.State["regex_matched"].([]string)[1]
Expand Down

0 comments on commit 990bb98

Please sign in to comment.