mirror of
https://github.com/FloatTech/ZeroBot-Plugin.git
synced 2025-12-18 20:50:12 +08:00
92 lines
2.5 KiB
Go
92 lines
2.5 KiB
Go
// Package omikuji 浅草寺求签
|
|
package omikuji
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/sirupsen/logrus"
|
|
zero "github.com/wdvxdr1123/ZeroBot"
|
|
"github.com/wdvxdr1123/ZeroBot/message"
|
|
"github.com/wdvxdr1123/ZeroBot/utils/helper"
|
|
|
|
fcext "github.com/FloatTech/floatbox/ctxext"
|
|
ctrl "github.com/FloatTech/zbpctrl"
|
|
"github.com/FloatTech/zbputils/control"
|
|
"github.com/FloatTech/zbputils/ctxext"
|
|
"github.com/FloatTech/zbputils/img/text"
|
|
)
|
|
|
|
const bed = "https://gitea.seku.su/fumiama/senso-ji-omikuji/raw/branch/main/"
|
|
|
|
func init() { // 插件主体
|
|
engine := control.AutoRegister(&ctrl.Options[*zero.Ctx]{
|
|
DisableOnDefault: false,
|
|
Brief: "浅草寺求签",
|
|
Help: "- 求签 | 占卜\n- 解签",
|
|
PublicDataFolder: "Omikuji",
|
|
}).ApplySingle(ctxext.DefaultSingle)
|
|
|
|
engine.OnFullMatchGroup([]string{"求签", "占卜"}).SetBlock(true).
|
|
Handle(func(ctx *zero.Ctx) {
|
|
i := fcext.RandSenderPerDayN(ctx.Event.UserID, 100) + 1
|
|
img0, err := engine.GetCustomLazyData(bed, fmt.Sprintf("%d_%d.jpg", i, 0))
|
|
if err != nil {
|
|
ctx.SendChain(message.Text("ERROR: ", err))
|
|
return
|
|
}
|
|
img1, err := engine.GetCustomLazyData(bed, fmt.Sprintf("%d_%d.jpg", i, 1))
|
|
if err != nil {
|
|
ctx.SendChain(message.Text("ERROR: ", err))
|
|
return
|
|
}
|
|
ctx.SendChain(
|
|
message.At(ctx.Event.UserID),
|
|
message.ImageBytes(img0),
|
|
message.ImageBytes(img1),
|
|
)
|
|
})
|
|
engine.OnFullMatch("解签", fcext.DoOnceOnSuccess(
|
|
func(ctx *zero.Ctx) bool {
|
|
db.DBPath = engine.DataFolder() + "kuji.db"
|
|
_, err := engine.GetLazyData("kuji.db", true)
|
|
if err != nil {
|
|
ctx.SendChain(message.Text("ERROR: ", err))
|
|
return false
|
|
}
|
|
err = db.Open(time.Hour)
|
|
if err != nil {
|
|
ctx.SendChain(message.Text("ERROR: ", err))
|
|
return false
|
|
}
|
|
err = db.Create("kuji", &kuji{})
|
|
if err != nil {
|
|
ctx.SendChain(message.Text("ERROR: ", err))
|
|
return false
|
|
}
|
|
n, err := db.Count("kuji")
|
|
if err != nil {
|
|
ctx.SendChain(message.Text("ERROR: ", err))
|
|
return false
|
|
}
|
|
logrus.Infof("[kuji]读取%d条签文", n)
|
|
return true
|
|
},
|
|
)).SetBlock(true).
|
|
Handle(func(ctx *zero.Ctx) {
|
|
kujiBytes, err := text.RenderToBase64(
|
|
getKujiByBango(
|
|
uint8(fcext.RandSenderPerDayN(ctx.Event.UserID, 100)+1),
|
|
),
|
|
text.FontFile, 400, 20,
|
|
)
|
|
if err != nil {
|
|
ctx.SendChain(message.Text("ERROR: ", err))
|
|
return
|
|
}
|
|
if id := ctx.SendChain(message.At(ctx.Event.UserID), message.Image("base64://"+helper.BytesToString(kujiBytes))); id.ID() == 0 {
|
|
ctx.SendChain(message.Text("ERROR: 可能被风控了"))
|
|
}
|
|
})
|
|
}
|