diff --git a/README.md b/README.md index f825d91f..f733843c 100644 --- a/README.md +++ b/README.md @@ -315,22 +315,6 @@ print("run[CQ:image,file="+j["img"]+"]") ### *中优先级* -
- 随机图片与AI点评 - - `import _ github.com/FloatTech/ZeroBot-Plugin/plugin/acgimage` - - - [x] 随机图片(评级大于6的图将私发) - - - [x] 直接随机(无r18检测,务必小心,仅管理可用) - - - [x] 设置随机图片网址[url] - - - [x] 太涩了(撤回最近发的图) - - - [x] 评价图片(发送一张图片让bot评分) - -
AIfalse diff --git a/main.go b/main.go index 6fcd8eb6..16cfaba0 100644 --- a/main.go +++ b/main.go @@ -57,7 +57,6 @@ import ( // vvvvvvvvvvvvvv // // vvvv // - _ "github.com/FloatTech/ZeroBot-Plugin/plugin/acgimage" // 随机图片与AI点评 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/ai_false" // 服务器监控 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/aiwife" // 随机老婆 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/b14" // base16384加解密 diff --git a/plugin/acgimage/classify.go b/plugin/acgimage/classify.go deleted file mode 100644 index 6f273786..00000000 --- a/plugin/acgimage/classify.go +++ /dev/null @@ -1,172 +0,0 @@ -// Package acgimage 随机图片与AI点评 -package acgimage - -import ( - "net/url" - "strings" - - zero "github.com/wdvxdr1123/ZeroBot" - "github.com/wdvxdr1123/ZeroBot/message" - - "github.com/FloatTech/AnimeAPI/classify" - - "github.com/FloatTech/zbputils/control" - "github.com/FloatTech/zbputils/ctxext" - "github.com/FloatTech/zbputils/img/pool" - "github.com/FloatTech/zbputils/web" -) - -const ( - lolipxy = "https://sayuri.fumiama.top/dice?class=0&loli=true&r18=true" - apihead = "https://sayuri.fumiama.top/img?path=" - apiheadv6 = "http://aikae.v6.army:62002/img?arg=get&name=" -) - -var ( - // r18有一定保护,一般不会发出图片 - randapi = "&loli=true&r18=true" - msgof = make(map[int64]message.MessageID) - block = false -) - -func init() { // 插件主体 - engine := control.Register("acgimage", &control.Options{ - DisableOnDefault: false, - Help: "随机图片与AI点评\n" + - "- 随机图片(评级大于6的图将私发)\n" + - "- 直接随机(无r18检测,务必小心,仅管理可用)\n" + - "- 设置随机图片网址[url]\n" + - "- 太涩了(撤回最近发的图)\n" + - "- 评价图片(发送一张图片让bot评分)", - }).ApplySingle(ctxext.DefaultSingle) - engine.OnRegex(`^设置随机图片网址(.*)$`, zero.OnlyPrivate, zero.SuperUserPermission).SetBlock(true). - Handle(func(ctx *zero.Ctx) { - url := ctx.State["regex_matched"].([]string)[1] - if !strings.HasPrefix(url, "http") { - ctx.SendChain(message.Text("URL非法!")) - } else { - randapi = url - ctx.SendChain(message.Text("设置好啦")) - } - }) - // 有保护的随机图片 - engine.OnFullMatch("随机图片", zero.OnlyGroup).Limit(ctxext.LimitByUser).SetBlock(true). - Handle(func(ctx *zero.Ctx) { - class, dhash, _, err := classify.Classify(randapi, true) - if err != nil { - ctx.SendChain(message.Text("ERROR:", err)) - return - } - err = reply(ctx, class, dhash, classify.Comments[class]) - if err != nil { - ctx.SendChain(message.Text("ERROR:", err)) - return - } - }) - // 直接随机图片,无r18保护,后果自负。如果出r18图可尽快通过发送"太涩了"撤回 - engine.OnFullMatch("直接随机", zero.UserOrGrpAdmin).SetBlock(true). - Handle(func(ctx *zero.Ctx) { - if block { - ctx.SendChain(message.Text("请稍后再试哦")) - } else if randapi != "" { - block = true - var url string - if randapi[0] == '&' { - url = lolipxy - } else { - url = randapi - } - setLastMsg(ctx.Event.GroupID, message.NewMessageIDFromInteger( - ctx.SendGroupForwardMessage(ctx.Event.GroupID, - message.Message{ - ctxext.FakeSenderForwardNode(ctx, - message.Image(url).Add("cache", "0"), - ), - }).Get("message_id").Int())) - block = false - } - }) - // 撤回最后的直接随机图片 - engine.OnFullMatch("太涩了", zero.OnlyGroup).SetBlock(true). - Handle(func(ctx *zero.Ctx) { - msg, ok := msgof[ctx.Event.GroupID] - if ok { - ctx.DeleteMessage(msg) - delete(msgof, ctx.Event.GroupID) - } - }) - // 上传一张图进行评价 - engine.OnKeywordGroup([]string{"评价图片"}, zero.OnlyGroup, zero.MustProvidePicture).SetBlock(true). - Handle(func(ctx *zero.Ctx) { - ctx.SendChain(message.Text("少女祈祷中...")) - url := ctx.State["image_url"].([]string)[0] - class, _, _, err := classify.Classify(url, true) - if err != nil { - ctx.SendChain(message.Text("ERROR:", err)) - return - } - ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text(classify.Comments[class])) - }) - engine.OnRegex(`^给你点提示哦:(.*)$`, zero.OnlyPrivate).SetBlock(true). - Handle(func(ctx *zero.Ctx) { - dhash := ctx.State["regex_matched"].([]string)[1] - if len(dhash) == 5*3 { - var u string - if web.IsSupportIPv6 { - u = apiheadv6 + dhash + ".webp" - } else { - u = apihead + dhash - } - - err := pool.SendRemoteImageFromPool(dhash, u, ctxext.Send(ctx), ctxext.GetMessage(ctx)) - if err != nil { - ctx.SendChain(message.Text("ERROR:", err)) - return - } - } - }) -} - -func setLastMsg(id int64, msg message.MessageID) { - msgof[id] = msg -} - -func reply(ctx *zero.Ctx, class int, dhash string, comment string) error { - b14, err := url.QueryUnescape(dhash) - if err != nil { - return err - } - - var u string - if web.IsSupportIPv6 { - u = apiheadv6 + dhash + ".webp" - } else { - u = apihead + dhash - } - - var send ctxext.NoCtxSendMsg - if class > 5 { - send = ctxext.SendTo(ctx, ctx.Event.UserID) - if dhash != "" { - ctx.SendChain(message.Text(comment + "\n给你点提示哦:" + b14)) - } else { - ctx.SendChain(message.Text(comment)) - } - } else { - send = func(msg interface{}) int64 { - return ctx.SendGroupForwardMessage(ctx.Event.GroupID, message.Message{ - ctxext.FakeSenderForwardNode(ctx, append( - msg.(message.Message), - message.Text(comment))..., - ), - }).Get("message_id").Int() - } - } - - return pool.SendRemoteImageFromPool(b14, u, send, func(i int64) zero.Message { - if class > 5 { - return ctxext.GetMessage(ctx)(i) - } - return ctxext.GetFirstMessageInForward(ctx)(i) - }) -}