diff --git a/README.md b/README.md index 9dcef358bd..5d2a092afb 100644 --- a/README.md +++ b/README.md @@ -1069,6 +1069,14 @@ print("run[CQ:image,file="+j["img"]+"]") - [x] 解签 + +
+ 抽扑克 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/poker"` + + - [x] 抽扑克牌 +
一群一天一夫一妻制群老婆 diff --git a/main.go b/main.go index e1881754d4..208914ae0d 100644 --- a/main.go +++ b/main.go @@ -115,6 +115,7 @@ import ( _ "github.com/FloatTech/ZeroBot-Plugin/plugin/nsfw" // nsfw图片识别 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/nwife" // 本地老婆 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/omikuji" // 浅草寺求签 + _ "github.com/FloatTech/ZeroBot-Plugin/plugin/poker" // 抽扑克 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/qqwife" // 一群一天一夫一妻制群老婆 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/qzone" // qq空间表白墙 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/realcugan" // realcugan清晰术 diff --git a/plugin/poker/poker.go b/plugin/poker/poker.go new file mode 100644 index 0000000000..32def3c247 --- /dev/null +++ b/plugin/poker/poker.go @@ -0,0 +1,53 @@ +// Package poker 抽扑克牌 +package poker + +import ( + "encoding/json" + "math/rand" + + fcext "github.com/FloatTech/floatbox/ctxext" + ctrl "github.com/FloatTech/zbpctrl" + "github.com/FloatTech/zbputils/control" + "github.com/FloatTech/zbputils/ctxext" + zero "github.com/wdvxdr1123/ZeroBot" + "github.com/wdvxdr1123/ZeroBot/message" +) + +// 图片来源 https://www.bilibili.com/opus/834601953403076633 + +var cardImgPathList []string + +func init() { + engine := control.AutoRegister(&ctrl.Options[*zero.Ctx]{ + DisableOnDefault: false, + Brief: "抽扑克牌", + Help: "- 抽扑克\n- poker", + PublicDataFolder: "Poker", + }).ApplySingle(ctxext.DefaultSingle) + + getImg := fcext.DoOnceOnSuccess(func(ctx *zero.Ctx) bool { + data, err := engine.GetLazyData("imgdata.json", true) + if err != nil { + ctx.SendChain(message.Text("ERROR:", err)) + return false + } + err = json.Unmarshal(data, &cardImgPathList) + if err != nil { + ctx.SendChain(message.Text("ERROR:", err)) + return false + } + return true + }) + + engine.OnFullMatchGroup([]string{"抽扑克", "poker"}, getImg).SetBlock(true). + Handle(func(ctx *zero.Ctx) { + randomIndex := rand.Intn(len(cardImgPathList)) + randomImgPath := cardImgPathList[randomIndex] + imgData, err := engine.GetLazyData(randomImgPath, true) + if err != nil { + ctx.Send("[poker]读取扑克图片失败") + return + } + ctx.Send(message.ImageBytes(imgData)) + }) +}