diff --git a/README.md b/README.md index 9885332062..47bdf7b39e 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ zerobot [-h] [-n nickname] [-t token] [-u url] [-p prefix] [-d|w] [-c|s config.j "command_prefix": "/", "super_users": [], "ring_len": 4096, - "latency": 1000000000, + "latency": 233000000, "max_process_time": 240000000000 }, "ws": [ diff --git a/go.mod b/go.mod index 2fb5c1df70..7bb0a65302 100644 --- a/go.mod +++ b/go.mod @@ -5,12 +5,12 @@ go 1.19 require ( github.com/Baidu-AIP/golang-sdk v1.1.1 github.com/Coloured-glaze/gg v1.3.4 - github.com/FloatTech/AnimeAPI v1.5.2-0.20221105044443-0c9004b2f051 - github.com/FloatTech/floatbox v0.0.0-20221029160423-446812ec82d9 - github.com/FloatTech/sqlite v0.5.0 + github.com/FloatTech/AnimeAPI v1.5.2-0.20221110071402-5672d8466e21 + github.com/FloatTech/floatbox v0.0.0-20221110070748-e0d0b3af3e57 + github.com/FloatTech/sqlite v0.5.1 github.com/FloatTech/ttl v0.0.0-20220715042055-15612be72f5b - github.com/FloatTech/zbpctrl v1.5.2 - github.com/FloatTech/zbputils v1.5.1-0.20221101032142-05b2a4825567 + github.com/FloatTech/zbpctrl v1.5.3-0.20221110070900-b2888434e9fc + github.com/FloatTech/zbputils v1.5.1-0.20221110071200-0a9ea4b7e9c4 github.com/RomiChan/syncx v0.0.0-20220404072119-d7ea0ae15a4c github.com/RomiChan/websocket v1.4.3-0.20220123145318-307a86b127bc github.com/antchfx/htmlquery v1.2.5 @@ -18,7 +18,7 @@ require ( github.com/fumiama/ahsai v0.1.0 github.com/fumiama/cron v1.3.0 github.com/fumiama/go-base16384 v1.6.1 - github.com/fumiama/go-registry v0.2.1 + github.com/fumiama/go-registry v0.2.2 github.com/fumiama/gotracemoe v0.0.3 github.com/fumiama/sqlite3 v1.14.6 github.com/fumiama/unibase2n v0.0.0-20221003115227-e7db987de949 diff --git a/go.sum b/go.sum index 77c4b50747..01b020e105 100644 --- a/go.sum +++ b/go.sum @@ -4,18 +4,18 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym github.com/Coloured-glaze/gg v1.3.4 h1:l31zIF/HaVwkzjrj+A56RGQoSKyKuR1IWtIrqXGFStI= github.com/Coloured-glaze/gg v1.3.4/go.mod h1:Ih5NLNNDHOy3RJbB0EPqGTreIzq/H02TGThIagh8HJg= github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= -github.com/FloatTech/AnimeAPI v1.5.2-0.20221105044443-0c9004b2f051 h1:NEW8HzBNybMXAV0NrDpMF31n/e9BFGvNiGkDPGSkouc= -github.com/FloatTech/AnimeAPI v1.5.2-0.20221105044443-0c9004b2f051/go.mod h1:Z+Q4kIPNo/OX4RWw6WGQOQcaNsbkv/wPmPDw8p4aQIY= -github.com/FloatTech/floatbox v0.0.0-20221029160423-446812ec82d9 h1:HYJ7lwaqaOKmbYooPUMWxMhXRTp+JItoyeqa320ARD4= -github.com/FloatTech/floatbox v0.0.0-20221029160423-446812ec82d9/go.mod h1:w+ND28mRaJvxUJ6pRXS6i4cLzutpXsWyroutCzBdL78= -github.com/FloatTech/sqlite v0.5.0 h1:U7J5Omc534PqmH6csfu+ypCo3DS8L91l5lTsxUu3b/U= -github.com/FloatTech/sqlite v0.5.0/go.mod h1:i33d92OtR8jcp5fBUvQtospf27+MkfUxnGwnZ95E/dA= +github.com/FloatTech/AnimeAPI v1.5.2-0.20221110071402-5672d8466e21 h1:Ao45y4vcH2n5Qx1DPyDPc2Wmt7Lol4/MwY1ZknBhGw4= +github.com/FloatTech/AnimeAPI v1.5.2-0.20221110071402-5672d8466e21/go.mod h1:D3VwaTmT25UM+x/0AULJtJw4Mzyhob5YOa90J5QAX/w= +github.com/FloatTech/floatbox v0.0.0-20221110070748-e0d0b3af3e57 h1:1H1QSxBPqq7o4S5/xtl0cI/GOqaiajoBg+156cuK1e4= +github.com/FloatTech/floatbox v0.0.0-20221110070748-e0d0b3af3e57/go.mod h1:72tI2fKLhrNpuj4AlE2HSjJOAtEnUEKOx/+dEYSc4FE= +github.com/FloatTech/sqlite v0.5.1 h1:IjTdnqMVIVIoIEFXhvh/KKBfYxFvG0tk7Rghz65/DAU= +github.com/FloatTech/sqlite v0.5.1/go.mod h1:i33d92OtR8jcp5fBUvQtospf27+MkfUxnGwnZ95E/dA= github.com/FloatTech/ttl v0.0.0-20220715042055-15612be72f5b h1:tvciXWq2nuvTbFeJGLDNIdRX3BI546D3O7k7vrVueZw= github.com/FloatTech/ttl v0.0.0-20220715042055-15612be72f5b/go.mod h1:fHZFWGquNXuHttu9dUYoKuNbm3dzLETnIOnm1muSfDs= -github.com/FloatTech/zbpctrl v1.5.2 h1:5ap0t2KgROpfTVHqMd9vHKXLeLmRFGI3ZrTPASgFP6s= -github.com/FloatTech/zbpctrl v1.5.2/go.mod h1:BVPivMDJCBImPSdwgizb6sqb7rcDaRE65ZjfgthoC7g= -github.com/FloatTech/zbputils v1.5.1-0.20221101032142-05b2a4825567 h1:bQHNAaTTl/NItJmEzjOCHmUKvRi+OnUB3tvfDGImplo= -github.com/FloatTech/zbputils v1.5.1-0.20221101032142-05b2a4825567/go.mod h1:KDPJDu4KHeB4Gdyt8sqR5+QnIsIDW6XXsFfT1kD7okw= +github.com/FloatTech/zbpctrl v1.5.3-0.20221110070900-b2888434e9fc h1:jNHQsG7kKKkRwey4u9XpQIIBfNXX3SLBCeiTyjhBRQc= +github.com/FloatTech/zbpctrl v1.5.3-0.20221110070900-b2888434e9fc/go.mod h1:zfrIWujK6ORPhOuUUzeKGNOLGI/XXz+78FRHRF9zEFo= +github.com/FloatTech/zbputils v1.5.1-0.20221110071200-0a9ea4b7e9c4 h1:pCUhvQ6LfQFXpHGen+aTeLGyZhBYfeMKXFO7IQKzFMk= +github.com/FloatTech/zbputils v1.5.1-0.20221110071200-0a9ea4b7e9c4/go.mod h1:fUIPd81Bj5wRcjoybxwgwKsMU8+f5QJepsjXWup0vKM= github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc= github.com/RomiChan/syncx v0.0.0-20220404072119-d7ea0ae15a4c h1:cNPOdTNiVwxLpROLjXCgbIPvdkE+BwvxDvgmdYmWx6Q= github.com/RomiChan/syncx v0.0.0-20220404072119-d7ea0ae15a4c/go.mod h1:KqZzu7slNKROh3TSYEH/IUMG6f4M+1qubZ5e52QypsE= @@ -52,8 +52,8 @@ github.com/fumiama/cron v1.3.0 h1:ZWlwuexF+HQHl3cYytEE5HNwD99q+3vNZF1GrEiXCFo= github.com/fumiama/cron v1.3.0/go.mod h1:bz5Izvgi/xEUI8tlBN8BI2jr9Moo8N4or0KV8xXuPDY= github.com/fumiama/go-base16384 v1.6.1 h1:4yb4JgmBJDnQtq3XGXXdLrVwEnRpjhMUt4eAcsNeA30= github.com/fumiama/go-base16384 v1.6.1/go.mod h1:OEn+947GV5gsbTAnyuUW/SrfxJYUdYupSIQXOuGOcXM= -github.com/fumiama/go-registry v0.2.1 h1:PCu4d1OIYkLmoSufyxov3QXRul4lXrAfXfK1pVS2wrQ= -github.com/fumiama/go-registry v0.2.1/go.mod h1:GP45kejHuDLFxcWdksrt75r5rHBqYwtfeUl3JzGWxfQ= +github.com/fumiama/go-registry v0.2.2 h1:BAA/pltg/Ryq3oj4CRJBenVZM6EowOQvtHbv/rPp2LY= +github.com/fumiama/go-registry v0.2.2/go.mod h1:GP45kejHuDLFxcWdksrt75r5rHBqYwtfeUl3JzGWxfQ= github.com/fumiama/go-simple-protobuf v0.1.0 h1:rLzJgNqB6LHNDVMl81yyNt6ZKziWtVfu+ioF0edlEVw= github.com/fumiama/go-simple-protobuf v0.1.0/go.mod h1:5yYNapXq1tQMOZg9bOIVhQlZk9pQqpuFIO4DZLbsdy4= github.com/fumiama/gofastTEA v0.0.10 h1:JJJ+brWD4kie+mmK2TkspDXKzqq0IjXm89aGYfoGhhQ= diff --git a/kanban/banner.go b/kanban/banner.go index f947edca8f..78b2ad234f 100644 --- a/kanban/banner.go +++ b/kanban/banner.go @@ -9,7 +9,7 @@ import ( var ( // Banner ... Banner = "* OneBot + ZeroBot + Golang\n" + - "* Version 1.5.2-beta2 - 2022-10-28 12:49:51 +0800 CST\n" + + "* Version 1.5.2 - 2022-11-09 15:15:01 +0800 CST\n" + "* Copyright © 2020 - 2022 FloatTech. All Rights Reserved.\n" + "* Project: https://github.com/FloatTech/ZeroBot-Plugin" reg = registry.NewRegReader("reilia.fumiama.top:32664", "fumiama") diff --git a/main.go b/main.go index 8e4bfa3ea1..dc32421d99 100644 --- a/main.go +++ b/main.go @@ -204,7 +204,7 @@ func init() { prefix := flag.String("p", "/", "Set command prefix.") runcfg := flag.String("c", "", "Run from config file.") save := flag.String("s", "", "Save default config to file and exit.") - late := flag.Uint("l", 1000, "Response latency (ms).") + late := flag.Uint("l", 233, "Response latency (ms).") rsz := flag.Uint("r", 4096, "Receiving buffer ring size.") maxpt := flag.Uint("x", 4, "Max process time (min).") diff --git a/plugin/ai_reply/ai_tts.go b/plugin/ai_reply/ai_tts.go index caafde89ee..eeb4f46e4f 100644 --- a/plugin/ai_reply/ai_tts.go +++ b/plugin/ai_reply/ai_tts.go @@ -152,7 +152,7 @@ func newttsmode() *ttsmode { tts := &ttsmode{} tts.Lock() defer tts.Unlock() - m, ok := control.Lookup(ttsServiceName) + m, ok := control.Lookup("tts") tts.mode = make(map[int64]int64, 2*len(soundList)) tts.mode[-2905] = 1 if ok { @@ -229,7 +229,7 @@ func (tts *ttsmode) setDefaultSoundMode(name string) error { } tts.Lock() defer tts.Unlock() - m, ok := control.Lookup(ttsServiceName) + m, ok := control.Lookup("tts") if !ok { return errors.New("[tts] service not found") } diff --git a/plugin/ai_reply/main.go b/plugin/ai_reply/main.go index 756302fc43..23acf9de1f 100644 --- a/plugin/ai_reply/main.go +++ b/plugin/ai_reply/main.go @@ -17,15 +17,10 @@ import ( "github.com/wdvxdr1123/ZeroBot/message" ) -const ( - replyServiceName = "aireply" - ttsServiceName = "tts" -) - var replyModes = [...]string{"青云客", "小爱"} func init() { // 插件主体 - enOftts := control.Register(ttsServiceName, &ctrl.Options[*zero.Ctx]{ + enOftts := control.Register("tts", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: true, Brief: "人工智能语音回复", Help: "- @Bot 任意文本(任意一句话回复)\n" + @@ -35,7 +30,7 @@ func init() { // 插件主体 "当前适用的原神人物含有以下:\n" + list(soundList[:], 5), }) tts := newttsmode() - enOfreply := control.Register(replyServiceName, &ctrl.Options[*zero.Ctx]{ + enOfreply := control.Register("aireply", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Brief: "人工智能回复", Help: "- @Bot 任意文本(任意一句话回复)\n- 设置回复模式[青云客|小爱]", diff --git a/plugin/aipaint/aipaint.go b/plugin/aipaint/aipaint.go index dffa615c0c..f87e6ca544 100644 --- a/plugin/aipaint/aipaint.go +++ b/plugin/aipaint/aipaint.go @@ -2,13 +2,10 @@ package aipaint import ( - "bytes" "encoding/base64" "encoding/json" "fmt" - "image" "net/url" - "os" "regexp" "strconv" "strings" @@ -16,7 +13,6 @@ import ( "github.com/FloatTech/floatbox/binary" "github.com/FloatTech/floatbox/file" - "github.com/FloatTech/floatbox/img/writer" "github.com/FloatTech/floatbox/web" ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" @@ -54,7 +50,6 @@ func init() { // 插件主体 Brief: "ai绘图", Help: "- [ ai绘图 | 生成色图 | 生成涩图 | ai画图 ] xxx\n" + "- [ ai高级绘图 | 高级生成色图 | 高级生成涩图 | ai高级画图 ] [prompt]\n" + - "- [ 以图绘图 | 以图生图 | 以图画图 ] xxx [图片]|@xxx|[qq号]\n" + "- 设置ai绘图配置 [server] [token]\n" + "- 设置ai绘图撤回时间90s\n" + "- 查看ai绘图配置\n" + @@ -62,7 +57,7 @@ func init() { // 插件主体 "参考服务器 http://91.217.139.190:5010, http://91.216.169.75:5010, http://185.80.202.180:5010\n" + "通过 http://91.217.139.190:5010/token 获取token\n" + "[prompt]参数如下\n" + - "tags:tag词条\nntags:ntag词条\nshape:[Portrait|Landscape|Square]\nscale:[6:20]\nseed:种子\n" + + "tags:tag词条\nntags:ntag词条\nshape:[Portrait|Landscape|Square]\nscale:[6:20]\nseed:种子\nstrength:[0-1] 建议0-0.7\nnoise:[0-1] 建议0-0.15" + "参数与参数内容用:连接,每个参数之间用回车分割", PrivateDataFolder: "aipaint", }) @@ -83,63 +78,6 @@ func init() { // 插件主体 } sendAiImg(ctx, data, cfg.Interval) }) - engine.OnRegex(`^(以图绘图|以图生图|以图画图)[\s\S]*?(\[CQ:(image\,file=([0-9a-zA-Z]{32}).*|at.+?(\d{5,11}))\].*|(\d+))$`).SetBlock(true). - Handle(func(ctx *zero.Ctx) { - err := cfg.load() - if err != nil { - ctx.SendChain(message.Text("ERROR: ", err)) - return - } - c := newContext(ctx.Event.UserID) - list := ctx.State["regex_matched"].([]string) - err = c.prepareLogos(list[4]+list[5]+list[6], strconv.FormatInt(ctx.Event.UserID, 10)) - if err != nil { - ctx.SendChain(message.Text("ERROR: ", err)) - return - } - args := strings.TrimSuffix(strings.TrimPrefix(list[0], list[1]), list[2]) - if args == "" { - ctx.SendChain(message.Text("ERROR: 以图绘图必须添加tag")) - return - } - ctx.SendChain(message.Text("少女祈祷中...")) - postURL := cfg.BaseURL + fmt.Sprintf(aipaintImg2ImgURL, cfg.Token, url.QueryEscape(strings.TrimSpace(strings.ReplaceAll(args, " ", "%20")))) - - f, err := os.Open(c.headimgsdir[0]) - if err != nil { - ctx.SendChain(message.Text("ERROR: ", err)) - return - } - defer f.Close() - - img, _, err := image.Decode(f) - if err != nil { - ctx.SendChain(message.Text("ERROR: ", err)) - return - } - imageShape := "" - switch { - case img.Bounds().Dx() > img.Bounds().Dy(): - imageShape = "Landscape" - case img.Bounds().Dx() == img.Bounds().Dy(): - imageShape = "Square" - default: - imageShape = "Portrait" - } - - // 图片转base64 - base64Bytes, err := writer.ToBase64(img) - if err != nil { - ctx.SendChain(message.Text("ERROR: ", err)) - return - } - data, err := web.PostData(postURL+"&shape="+imageShape, "text/plain", bytes.NewReader(base64Bytes)) - if err != nil { - ctx.SendChain(message.Text("ERROR: ", err)) - return - } - sendAiImg(ctx, data, cfg.Interval) - }) engine.OnPrefixGroup([]string{`ai高级绘图`, `高级生成色图`, `高级生成涩图`, `ai高级画图`}).SetBlock(true). Handle(func(ctx *zero.Ctx) { err := cfg.load() @@ -183,6 +121,12 @@ func init() { // 插件主体 if _, ok := tags["seed"]; ok { apiurl += "&seed=" + url.QueryEscape(strings.TrimSpace(tags["seed"])) } + if _, ok := tags["strength"]; ok { + apiurl += "&strength=" + url.QueryEscape(strings.TrimSpace(tags["strength"])) + } + if _, ok := tags["noise"]; ok { + apiurl += "&noise=" + url.QueryEscape(strings.TrimSpace(tags["noise"])) + } data, err := web.GetData(cfg.BaseURL + apiurl) if err != nil { ctx.SendChain(message.Text("ERROR: ", err)) diff --git a/plugin/aipaint/img2img.go b/plugin/aipaint/img2img.go new file mode 100644 index 0000000000..ffc1b153da --- /dev/null +++ b/plugin/aipaint/img2img.go @@ -0,0 +1,88 @@ +// Package aipaint ai绘图 +package aipaint + +import ( + "bytes" + "fmt" + "image" + "net/url" + "os" + "strconv" + "strings" + + "github.com/FloatTech/floatbox/file" + "github.com/FloatTech/floatbox/img/writer" + "github.com/FloatTech/floatbox/web" + ctrl "github.com/FloatTech/zbpctrl" + "github.com/FloatTech/zbputils/control" + zero "github.com/wdvxdr1123/ZeroBot" + "github.com/wdvxdr1123/ZeroBot/message" +) + +func init() { // 插件主体 + engine := control.Register("img2img", &ctrl.Options[*zero.Ctx]{ + DisableOnDefault: true, + Brief: "以图绘图", + Help: "- [ 以图绘图 | 以图生图 | 以图画图 ] xxx [图片]|@xxx|[qq号]\n" + + "- 官方以图绘图api已失效 需要自建api 其他配置参数同ai绘图", + PrivateDataFolder: "img2img", + }) + datapath = file.BOTPATH + "/" + engine.DataFolder() + engine.OnRegex(`^(以图绘图|以图生图|以图画图)[\s\S]*?(\[CQ:(image\,file=([0-9a-zA-Z]{32}).*|at.+?(\d{5,11}))\].*|(\d+))$`).SetBlock(true). + Handle(func(ctx *zero.Ctx) { + err := cfg.load() + if err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + c := newContext(ctx.Event.UserID) + list := ctx.State["regex_matched"].([]string) + err = c.prepareLogos(list[4]+list[5]+list[6], strconv.FormatInt(ctx.Event.UserID, 10)) + if err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + args := strings.TrimSuffix(strings.TrimPrefix(list[0], list[1]), list[2]) + if args == "" { + ctx.SendChain(message.Text("ERROR: 以图绘图必须添加tag")) + return + } + ctx.SendChain(message.Text("少女祈祷中...")) + postURL := cfg.BaseURL + fmt.Sprintf(aipaintImg2ImgURL, cfg.Token, url.QueryEscape(strings.TrimSpace(strings.ReplaceAll(args, " ", "%20")))) + + f, err := os.Open(c.headimgsdir[0]) + if err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + defer f.Close() + + img, _, err := image.Decode(f) + if err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + imageShape := "" + switch { + case img.Bounds().Dx() > img.Bounds().Dy(): + imageShape = "Landscape" + case img.Bounds().Dx() == img.Bounds().Dy(): + imageShape = "Square" + default: + imageShape = "Portrait" + } + + // 图片转base64 + base64Bytes, err := writer.ToBase64(img) + if err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + data, err := web.PostData(postURL+"&shape="+imageShape, "text/plain", bytes.NewReader(base64Bytes)) + if err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + sendAiImg(ctx, data, cfg.Interval) + }) +} diff --git a/plugin/atri/atri.go b/plugin/atri/atri.go index 1c7d956f82..71bfafd3a7 100644 --- a/plugin/atri/atri.go +++ b/plugin/atri/atri.go @@ -17,15 +17,10 @@ import ( "github.com/FloatTech/zbputils/control" ) -const ( - // 服务名 - servicename = "atri" - // ATRI 表情的 codechina 镜像 - res = "https://gitcode.net/u011570312/zbpdata/-/raw/main/Atri/" -) +const res = "https://gitcode.net/u011570312/zbpdata/-/raw/main/Atri/" func init() { // 插件主体 - engine := control.Register(servicename, &ctrl.Options[*zero.Ctx]{ + engine := control.Register("atri", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Brief: "atri人格文本回复", Help: "本插件基于 ATRI ,为 Golang 移植版\n" + diff --git a/plugin/baiduaudit/audit.go b/plugin/baiduaudit/audit.go index f59edada8a..799f450518 100644 --- a/plugin/baiduaudit/audit.go +++ b/plugin/baiduaudit/audit.go @@ -241,7 +241,7 @@ func init() { config.Groups[ctx.Event.GroupID] = group ctx.SendChain(message.At(ctx.Event.UserID), message.Text(fmt.Sprintf("本群%s已%s", k2, k1))) }) - engine.OnRegex(`^配置BDAKey\s*(.*)\s*(.*)$`, zero.SuperUserPermission).SetBlock(true). + engine.OnRegex(`^配置BDAKey\s(.*)\s(.*)$`, zero.SuperUserPermission).SetBlock(true). Handle(func(ctx *zero.Ctx) { k1 := ctx.State["regex_matched"].([]string)[1] k2 := ctx.State["regex_matched"].([]string)[2] diff --git a/plugin/bilibili/bilibilipush.go b/plugin/bilibili/bilibilipush.go index b54a5cbb4b..61fd17013d 100644 --- a/plugin/bilibili/bilibilipush.go +++ b/plugin/bilibili/bilibilipush.go @@ -22,10 +22,9 @@ import ( ) const ( - ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36" - referer = "https://www.bilibili.com/" - infoURL = "https://api.bilibili.com/x/space/acc/info?mid=%v" - serviceName = "bilibilipush" + ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36" + referer = "https://www.bilibili.com/" + infoURL = "https://api.bilibili.com/x/space/acc/info?mid=%v" ) // bdb bilibili推送数据库 @@ -38,7 +37,7 @@ var ( ) func init() { - en := control.Register(serviceName, &ctrl.Options[*zero.Ctx]{ + en := control.Register("bilibilipush", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Brief: "b站推送", Help: "- 添加b站订阅[uid|name]\n" + @@ -49,7 +48,7 @@ func init() { "Tips: 需要配合job一起使用, 全局只需要设置一个, 无视响应状态推送, 下为例子\n" + "记录在\"@every 5m\"触发的指令)\n" + "拉取b站推送", - PrivateDataFolder: serviceName, + PrivateDataFolder: "bilibilipush", }) // 加载bilibili推送数据库 @@ -276,7 +275,7 @@ func sendDynamic(ctx *zero.Ctx) error { ct := cardList[i].Get("desc.timestamp").Int() if ct > t && ct > time.Now().Unix()-600 { lastTime[buid] = ct - m, ok := control.Lookup(serviceName) + m, ok := control.Lookup("bilibilipush") if ok { groupList := bdb.getAllGroupByBuidAndDynamic(buid) dc, err := bz.LoadDynamicDetail(cardList[i].Raw) @@ -325,7 +324,7 @@ func sendLive(ctx *zero.Ctx) error { oldStatus := liveStatus[key.Int()] if newStatus != oldStatus && newStatus == 1 { liveStatus[key.Int()] = newStatus - m, ok := control.Lookup(serviceName) + m, ok := control.Lookup("bilibilipush") if ok { groupList := bdb.getAllGroupByBuidAndLive(key.Int()) roomID := value.Get("short_id").Int() diff --git a/plugin/epidemic/epidemic.go b/plugin/epidemic/epidemic.go index de89fd9776..c9545fbfe7 100644 --- a/plugin/epidemic/epidemic.go +++ b/plugin/epidemic/epidemic.go @@ -13,10 +13,7 @@ import ( "github.com/FloatTech/zbputils/ctxext" ) -const ( - servicename = "epidemic" - txurl = "https://api.inews.qq.com/newsqa/v1/query/inner/publish/modules/list?modules=statisGradeCityDetail,diseaseh5Shelf" -) +const txurl = "https://api.inews.qq.com/newsqa/v1/query/inner/publish/modules/list?modules=statisGradeCityDetail,diseaseh5Shelf" // result 疫情查询结果 type result struct { @@ -50,7 +47,7 @@ type area struct { } func init() { - engine := control.Register(servicename, &ctrl.Options[*zero.Ctx]{ + engine := control.Register("epidemic", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Brief: "城市疫情查询", Help: "- xxx疫情\n", diff --git a/plugin/guessmusic/main.go b/plugin/guessmusic/main.go index 0878294bbc..d9249c98ad 100644 --- a/plugin/guessmusic/main.go +++ b/plugin/guessmusic/main.go @@ -32,8 +32,6 @@ import ( "github.com/FloatTech/zbputils/img/text" ) -const servicename = "guessmusic" - var ( filelist []listinfo musictypelist = "mp3;MP3;wav;WAV;amr;AMR;3gp;3GP;3gpp;3GPP;acc;ACC" @@ -42,7 +40,7 @@ var ( ) func init() { // 插件主体 - engine := control.Register(servicename, &ctrl.Options[*zero.Ctx]{ + engine := control.Register("guessmusic", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Brief: "猜歌插件", Help: "由于不可抗因素无法获取网易云歌单内容, 插件改为本地猜歌了, 但保留了下歌功能\n" + @@ -74,7 +72,7 @@ func init() { // 插件主体 ) }), )) - serviceErr := "[" + servicename + "]" + serviceErr := "[guessmusic]" // 用于存放歌曲三个片段的文件夹 cachePath := engine.DataFolder() + "cache/" err := os.MkdirAll(cachePath, 0777) diff --git a/plugin/jikipedia/main.go b/plugin/jikipedia/main.go index 88ad7d9b32..b50098f5a6 100644 --- a/plugin/jikipedia/main.go +++ b/plugin/jikipedia/main.go @@ -32,13 +32,11 @@ type value struct { func init() { // 初始化engine - engine := control.Register( - "jikipedia", - &ctrl.Options[*zero.Ctx]{ - DisableOnDefault: false, - Brief: "小鸡词典", - Help: "- [查梗|小鸡词典][梗]", - }, + engine := control.Register("jikipedia", &ctrl.Options[*zero.Ctx]{ + DisableOnDefault: false, + Brief: "小鸡词典", + Help: "- [查梗|小鸡词典][梗]", + }, ) engine.OnPrefixGroup([]string{"小鸡词典", "查梗"}).Limit(ctxext.LimitByGroup).SetBlock(true).Handle( func(ctx *zero.Ctx) { diff --git a/plugin/manager/manager.go b/plugin/manager/manager.go index 5e0febf87d..2b37f356a6 100644 --- a/plugin/manager/manager.go +++ b/plugin/manager/manager.go @@ -52,9 +52,9 @@ const ( "- 设置告别辞 参数同设置欢迎语\n" + "- 测试告别辞\n" + "- [开启 | 关闭]入群验证\n" + - "- 对信息回复:[设置 | 取消]精华" + - "- 取消精华 [信息ID]" + - "- /精华列表" + + "- 对信息回复:[设置 | 取消]精华\n" + + "- 取消精华 [信息ID]\n" + + "- /精华列表\n" + "Tips: {at}可在发送时艾特被欢迎者 {nickname}是被欢迎者名字 {avatar}是被欢迎者头像 {uid}是被欢迎者QQ号 {gid}是当前群群号 {groupname} 是当前群群名" ) @@ -583,44 +583,31 @@ func init() { // 插件主体 } }) // 设精 - engine.OnRegex(`^\[CQ:reply,id=(\d+)](\s+)?(设置|取消)精华$`, zero.OnlyGroup, zero.SuperUserPermission).SetBlock(true).Limit(ctxext.LimitByUser).Handle(func(ctx *zero.Ctx) { + engine.OnRegex(`^\[CQ:reply,id=(-?\d+)\][\s\S]*(设置|取消)精华$`, zero.OnlyGroup, zero.AdminPermission).SetBlock(true).Limit(ctxext.LimitByUser).Handle(func(ctx *zero.Ctx) { essenceID, _ := strconv.ParseInt(ctx.State["regex_matched"].([]string)[1], 10, 64) - option := ctx.State["regex_matched"].([]string)[3] + option := ctx.State["regex_matched"].([]string)[2] + var rsp zero.APIResponse switch option { case "设置": - rsp := ctx.CallAction("set_essence_msg", zero.Params{ - "message_id": essenceID, - }) - if rsp.RetCode == 0 { - ctx.SendChain(message.Text("设置成功")) - } else { - ctx.SendChain(message.Text("设置失败,信息:", rsp.Msg, "解释:", rsp.Wording)) - } + rsp = ctx.SetGroupEssenceMessage(essenceID) case "取消": - rsp := ctx.CallAction("delete_essence_msg", zero.Params{ - "message_id": essenceID, - }) - if rsp.RetCode == 0 { - ctx.SendChain(message.Text("取消成功")) - } else { - ctx.SendChain(message.Text("取消失败,信息:", rsp.Msg, "解释:", rsp.Wording)) - } - default: - return + rsp = ctx.DeleteGroupEssenceMessage(essenceID) + } + if rsp.RetCode == 0 { + ctx.SendChain(message.Text(option, "成功")) + } else { + ctx.SendChain(message.Text(option, "失败, 信息: ", rsp.Msg, "解释: ", rsp.Wording)) } }) engine.OnCommand("精华列表", zero.OnlyGroup, zero.AdminPermission).SetBlock(true).Limit(ctxext.LimitByUser).Handle(func(ctx *zero.Ctx) { - list := ctx.CallAction("get_essence_msg_list", zero.Params{ - "group_id": ctx.Event.GroupID, - }) + list := ctx.GetGroupEssenceMessageList(ctx.Event.GroupID).Array() msg := message.Message{ctxext.FakeSenderForwardNode(ctx, message.Text("本群精华列表:"))} - if len(list.Data.Array()) > 30 { + n := len(list) + if n > 30 { ctx.SendChain(message.Text("精华内容太多,仅显示前30个")) + n = 30 } - for i, info := range list.Data.Array() { - if i > 29 { - break - } + for _, info := range list[:n] { msg = append(msg, ctxext.FakeSenderForwardNode(ctx, message.Text(fmt.Sprintf( "信息ID: %d\n发送者昵称: %s\n发送者QQ 号: %d\n消息发送时间: %s\n操作者昵称: %s\n操作者QQ 号: %d\n精华设置时间: %s", @@ -649,17 +636,16 @@ func init() { // 插件主体 } }) engine.OnPrefix("取消精华", zero.OnlyGroup, zero.AdminPermission).SetBlock(true).Limit(ctxext.LimitByUser).Handle(func(ctx *zero.Ctx) { - essenceID, err := strconv.ParseInt(ctx.State["args"].(string), 10, 64) + essenceID, err := strconv.ParseInt(strings.TrimSpace(ctx.State["args"].(string)), 10, 64) if err != nil { ctx.SendChain(message.Text("ERROR: 请输入正确的设精ID")) + return } - rsp := ctx.CallAction("delete_essence_msg", zero.Params{ - "message_id": essenceID, - }) + rsp := ctx.DeleteGroupEssenceMessage(essenceID) if rsp.RetCode == 0 { ctx.SendChain(message.Text("取消成功")) } else { - ctx.SendChain(message.Text("取消失败,信息:", rsp.Msg, "解释:", rsp.Wording)) + ctx.SendChain(message.Text("取消失败, 信息: ", rsp.Msg, "解释: ", rsp.Wording)) } }) } diff --git a/plugin/wenxinAI/wenxinAI.go b/plugin/wenxinAI/wenxinAI.go index a105409f60..bf62b5e45c 100644 --- a/plugin/wenxinAI/wenxinAI.go +++ b/plugin/wenxinAI/wenxinAI.go @@ -26,10 +26,8 @@ import ( ) const ( - serviceName = "wenxinvilg" - serviceErr = "[" + serviceName + "]ERROR:\n" - modelName = "wenxinmodel" - modelErr = "[" + modelName + "]ERROR:\n" + serviceErr = "[wenxinvilg]ERROR:\n" + modelErr = "[wenxinmodel]ERROR:\n" ) type keydb struct { @@ -69,7 +67,7 @@ func init() { // 插件主体 defer process.GlobalInitMutex.Unlock() name = zero.BotConfig.NickName[0] }() - engine := control.Register(serviceName, &ctrl.Options[*zero.Ctx]{ + engine := control.Register("wenxinvilg", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Brief: "文心AI画图", Help: "基于百度文心的免费AI画图插件,\n因为是免费的,图片质量你懂的。\n" + @@ -261,7 +259,7 @@ func init() { // 插件主体 ctx.SendChain(message.Text("成功!")) }) /*********************************************************/ - en := control.Register(modelName, &ctrl.Options[*zero.Ctx]{ + en := control.Register("wenxinmodel", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Brief: "文心AI文本处理", Help: "基于百度文心AI的API文本处理\n" +