mirror of
https://github.com/FloatTech/ZeroBot-Plugin.git
synced 2025-12-20 22:40:23 +08:00
parent
58cf08fc39
commit
e5b2b369e3
@ -2,8 +2,10 @@
|
|||||||
package drawlots
|
package drawlots
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"errors"
|
"errors"
|
||||||
"image"
|
"image"
|
||||||
|
"image/color"
|
||||||
"image/gif"
|
"image/gif"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"os"
|
"os"
|
||||||
@ -11,6 +13,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/FloatTech/floatbox/file"
|
"github.com/FloatTech/floatbox/file"
|
||||||
|
"github.com/FloatTech/floatbox/web"
|
||||||
"github.com/FloatTech/imgfactory"
|
"github.com/FloatTech/imgfactory"
|
||||||
ctrl "github.com/FloatTech/zbpctrl"
|
ctrl "github.com/FloatTech/zbpctrl"
|
||||||
control "github.com/FloatTech/zbputils/control"
|
control "github.com/FloatTech/zbputils/control"
|
||||||
@ -40,7 +43,9 @@ var (
|
|||||||
en = control.Register("drawlots", &ctrl.Options[*zero.Ctx]{
|
en = control.Register("drawlots", &ctrl.Options[*zero.Ctx]{
|
||||||
DisableOnDefault: false,
|
DisableOnDefault: false,
|
||||||
Brief: "多功能抽签",
|
Brief: "多功能抽签",
|
||||||
Help: "支持图包文件夹和gif抽签\n-------------\n- (刷新)抽签列表\n- 抽[签名]签\n- 看签[gif签名]\n- 加签[签名][gif图片]\n- 删签[gif签名]",
|
Help: "支持图包文件夹和gif抽签\n" +
|
||||||
|
"-------------\n" +
|
||||||
|
"- (刷新)抽签列表\n- 抽[签名]签\n- 看[gif签名]签\n- 加[签名]签[gif图片]\n- 删[gif签名]签",
|
||||||
PrivateDataFolder: "drawlots",
|
PrivateDataFolder: "drawlots",
|
||||||
}).ApplySingle(ctxext.DefaultSingle)
|
}).ApplySingle(ctxext.DefaultSingle)
|
||||||
datapath = file.BOTPATH + "/" + en.DataFolder()
|
datapath = file.BOTPATH + "/" + en.DataFolder()
|
||||||
@ -96,9 +101,9 @@ func init() {
|
|||||||
}
|
}
|
||||||
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.ImageBytes(data))
|
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.ImageBytes(data))
|
||||||
})
|
})
|
||||||
en.OnPrefix("看签", zero.UserOrGrpAdmin).SetBlock(true).Limit(ctxext.LimitByUser).Handle(func(ctx *zero.Ctx) {
|
en.OnRegex(`^看(.+)签$`, zero.UserOrGrpAdmin).SetBlock(true).Limit(ctxext.LimitByUser).Handle(func(ctx *zero.Ctx) {
|
||||||
id := ctx.Event.MessageID
|
id := ctx.Event.MessageID
|
||||||
lotsName := strings.TrimSpace(ctx.State["args"].(string))
|
lotsName := ctx.State["regex_matched"].([]string)[1]
|
||||||
fileInfo, ok := lotsList[lotsName]
|
fileInfo, ok := lotsList[lotsName]
|
||||||
if !ok {
|
if !ok {
|
||||||
ctx.Send(message.ReplyWithMessage(id, message.Text("才...才没有", lotsName, "签这种东西啦")))
|
ctx.Send(message.ReplyWithMessage(id, message.Text("才...才没有", lotsName, "签这种东西啦")))
|
||||||
@ -110,26 +115,25 @@ func init() {
|
|||||||
}
|
}
|
||||||
ctx.Send(message.ReplyWithMessage(id, message.Image("file:///"+datapath+lotsName+"."+fileInfo.lotsType)))
|
ctx.Send(message.ReplyWithMessage(id, message.Image("file:///"+datapath+lotsName+"."+fileInfo.lotsType)))
|
||||||
})
|
})
|
||||||
en.OnPrefix("加签", zero.SuperUserPermission, zero.MustProvidePicture).SetBlock(true).Limit(ctxext.LimitByUser).Handle(func(ctx *zero.Ctx) {
|
en.OnRegex(`^加(.+)签.*`, zero.SuperUserPermission, zero.MustProvidePicture).SetBlock(true).Limit(ctxext.LimitByUser).Handle(func(ctx *zero.Ctx) {
|
||||||
id := ctx.Event.MessageID
|
id := ctx.Event.MessageID
|
||||||
lotsName := strings.TrimSpace(ctx.State["args"].(string))
|
lotsName := ctx.State["regex_matched"].([]string)[1]
|
||||||
if lotsName == "" {
|
if lotsName == "" {
|
||||||
ctx.Send(message.ReplyWithMessage(id, message.Text("请使用正确的指令形式哦~")))
|
ctx.Send(message.ReplyWithMessage(id, message.Text("请使用正确的指令形式哦~")))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
picURL := ctx.State["image_url"].([]string)[0]
|
picURL := ctx.State["image_url"].([]string)[0]
|
||||||
err := file.DownloadTo(picURL, datapath+"/"+lotsName+".gif")
|
gifdata, err := web.GetData(picURL)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
im, err := gif.DecodeAll(bytes.NewReader(gifdata))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.SendChain(message.Text("ERROR:", err))
|
ctx.SendChain(message.Text("ERROR:", err))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
file, err := os.Open(datapath + "/" + lotsName + ".gif")
|
fileName := datapath + "/" + lotsName + ".gif"
|
||||||
if err != nil {
|
err = file.DownloadTo(picURL, fileName)
|
||||||
ctx.SendChain(message.Text("ERROR:", err))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
im, err := gif.DecodeAll(file)
|
|
||||||
_ = file.Close()
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.SendChain(message.Text("ERROR:", err))
|
ctx.SendChain(message.Text("ERROR:", err))
|
||||||
return
|
return
|
||||||
@ -140,9 +144,9 @@ func init() {
|
|||||||
}
|
}
|
||||||
ctx.Send(message.ReplyWithMessage(id, message.Text("成功!")))
|
ctx.Send(message.ReplyWithMessage(id, message.Text("成功!")))
|
||||||
})
|
})
|
||||||
en.OnPrefix("删签", zero.SuperUserPermission).SetBlock(true).Limit(ctxext.LimitByUser).Handle(func(ctx *zero.Ctx) {
|
en.OnRegex(`^删(.+)签$`, zero.SuperUserPermission).SetBlock(true).Limit(ctxext.LimitByUser).Handle(func(ctx *zero.Ctx) {
|
||||||
id := ctx.Event.MessageID
|
id := ctx.Event.MessageID
|
||||||
lotsName := strings.TrimSpace(ctx.State["args"].(string))
|
lotsName := ctx.State["regex_matched"].([]string)[1]
|
||||||
fileInfo, ok := lotsList[lotsName]
|
fileInfo, ok := lotsList[lotsName]
|
||||||
if !ok {
|
if !ok {
|
||||||
ctx.Send(message.ReplyWithMessage(id, message.Text("才...才没有", lotsName, "签这种东西啦")))
|
ctx.Send(message.ReplyWithMessage(id, message.Text("才...才没有", lotsName, "签这种东西啦")))
|
||||||
@ -244,6 +248,6 @@ func randGif(gifName string) (image.Image, error) {
|
|||||||
/*/
|
/*/
|
||||||
// 如果gif图片出现信息缺失请使用上面注释掉的代码,把下面注释了(上面代码部分图存在bug)
|
// 如果gif图片出现信息缺失请使用上面注释掉的代码,把下面注释了(上面代码部分图存在bug)
|
||||||
v := im.Image[rand.Intn(len(im.Image))]
|
v := im.Image[rand.Intn(len(im.Image))]
|
||||||
return imgfactory.Size(v, v.Bounds().Max.X, v.Bounds().Max.Y).Image(), err
|
return imgfactory.NewFactoryBG(v.Rect.Max.X, v.Rect.Max.Y, color.NRGBA{0, 0, 0, 255}).InsertUp(v, 0, 0, 0, 0).Clone().Image(), err
|
||||||
// */
|
// */
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user