diff --git a/go.mod b/go.mod index 565e9293..ec6d4ccf 100644 --- a/go.mod +++ b/go.mod @@ -3,9 +3,10 @@ module github.com/FloatTech/ZeroBot-Plugin go 1.18 require ( - github.com/FloatTech/AnimeAPI v1.4.1-0.20220520130802-b8c30f649145 + github.com/FloatTech/AnimeAPI v1.4.1-0.20220604065331-115868b47839 github.com/FloatTech/sqlite v0.2.1 - github.com/FloatTech/zbputils v1.4.1-0.20220530064115-3c48ea94cfda + github.com/FloatTech/zbpctrl v1.4.1-0.20220604065149-1ca23316481c + github.com/FloatTech/zbputils v1.4.1-0.20220604065247-bacc14b5ee35 github.com/antchfx/htmlquery v1.2.4 github.com/corona10/goimagehash v1.0.3 github.com/fogleman/gg v1.3.0 diff --git a/go.sum b/go.sum index 048928fd..d7cf303b 100644 --- a/go.sum +++ b/go.sum @@ -1,9 +1,11 @@ -github.com/FloatTech/AnimeAPI v1.4.1-0.20220520130802-b8c30f649145 h1:COSibysiEmRsI7pICkZMdaX6XM35mlqbtB3f4Tbf6ow= -github.com/FloatTech/AnimeAPI v1.4.1-0.20220520130802-b8c30f649145/go.mod h1:7lhHG03Mqoze1ig/zXnzT3WZGSzdwCl6jk1Eh0f/T9s= +github.com/FloatTech/AnimeAPI v1.4.1-0.20220604065331-115868b47839 h1:qwALmfMjUnGdXWL3Nee9Dm744HMOP5taFeHM6dsKp2s= +github.com/FloatTech/AnimeAPI v1.4.1-0.20220604065331-115868b47839/go.mod h1:SycOnpdMaSzRjthUUfI+mr/d2rsEwleaNW+RXoTO3ms= github.com/FloatTech/sqlite v0.2.1 h1:9t6Me48XJJCIoPy4nLRvcdhcVKfT0c2lilp7SEKROG8= github.com/FloatTech/sqlite v0.2.1/go.mod h1:6NfHRzqOo9RWeMJEoAQVuo51Omd5LFNxCNQhMF02/9U= -github.com/FloatTech/zbputils v1.4.1-0.20220530064115-3c48ea94cfda h1:NFNuFXdfegnA0qiRl8l/NsBQ7LwV2n2oumT8NwZZC2Y= -github.com/FloatTech/zbputils v1.4.1-0.20220530064115-3c48ea94cfda/go.mod h1:Cf2wAFtq7OUj4RUHcSQtcAYgAspP06wQseKZwtCJRXQ= +github.com/FloatTech/zbpctrl v1.4.1-0.20220604065149-1ca23316481c h1:1LhskkE5oP1Y2Vi9f4/s5Lns5M5vIzvGAAwJ4z23h+o= +github.com/FloatTech/zbpctrl v1.4.1-0.20220604065149-1ca23316481c/go.mod h1:x57TwTlC6zGhs+HHzWATD0sabyoDpSt8b7OzV3Mvrdc= +github.com/FloatTech/zbputils v1.4.1-0.20220604065247-bacc14b5ee35 h1:d4lP6LLNs5FERiZ/hwuCLnS+W9BxA4CtjpPGfFR5sjw= +github.com/FloatTech/zbputils v1.4.1-0.20220604065247-bacc14b5ee35/go.mod h1:xlw8tTnwv+pglm2WZTDr/9Gl767ALYBguwsqibDqYpI= 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= diff --git a/plugin/ai_false/ai_false.go b/plugin/ai_false/ai_false.go index d4a609e4..cdb3462b 100644 --- a/plugin/ai_false/ai_false.go +++ b/plugin/ai_false/ai_false.go @@ -7,6 +7,7 @@ import ( "strconv" "time" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/shirou/gopsutil/v3/cpu" @@ -19,7 +20,7 @@ import ( ) func init() { // 插件主体 - engine := control.Register("aifalse", &control.Options{ + engine := control.Register("aifalse", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "AIfalse\n" + "- 查询计算机当前活跃度: [检查身体 | 自检 | 启动自检 | 系统状态]\n" + @@ -47,7 +48,7 @@ func init() { // 插件主体 }) engine.OnRegex(`^设置默认限速为每\s*(\d+)\s*(分钟|秒)\s*(\d+)\s*次触发$`, zero.SuperUserPermission).SetBlock(true). Handle(func(ctx *zero.Ctx) { - c, ok := control.Lookup("aifalse") + c, ok := ctx.State["manager"].(*ctrl.Control[*zero.Ctx]) if !ok { ctx.SendChain(message.Text("ERROR:no such plugin")) return diff --git a/plugin/ai_reply/ai_tts.go b/plugin/ai_reply/ai_tts.go index fb7fbd5d..12524665 100644 --- a/plugin/ai_reply/ai_tts.go +++ b/plugin/ai_reply/ai_tts.go @@ -1,7 +1,6 @@ package aireply import ( - "errors" "regexp" "strconv" "sync" @@ -15,6 +14,7 @@ import ( "github.com/FloatTech/AnimeAPI/tts" "github.com/FloatTech/AnimeAPI/tts/baidutts" "github.com/FloatTech/AnimeAPI/tts/mockingbird" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" ) @@ -50,7 +50,7 @@ func init() { }, l: []string{"拟声鸟阿梓", "拟声鸟文静", "拟声鸟药水哥", "百度女声", "百度男声", "百度度逍遥", "百度度丫丫"}, } - engine := control.Register(ttsServiceName, &control.Options{ + engine := control.Register(ttsServiceName, &ctrl.Options[*zero.Ctx]{ DisableOnDefault: true, Help: "语音回复(包括拟声鸟和百度)\n" + "- @Bot 任意文本(任意一句话回复)\n" + @@ -144,10 +144,7 @@ func (t *ttsInstances) setSoundMode(ctx *zero.Ctx, name string) error { } } t.RUnlock() - m, ok := control.Lookup(ttsServiceName) - if !ok { - return errors.New("no such plugin") - } + m := ctx.State["manager"].(*ctrl.Control[*zero.Ctx]) return m.SetData(gid, index) } @@ -156,7 +153,7 @@ func (t *ttsInstances) getSoundMode(ctx *zero.Ctx) (name string) { if gid == 0 { gid = -ctx.Event.UserID } - m, ok := control.Lookup(ttsServiceName) + m, ok := ctx.State["manager"].(*ctrl.Control[*zero.Ctx]) if ok { t.RLock() defer t.RUnlock() diff --git a/plugin/ai_reply/main.go b/plugin/ai_reply/main.go index 0d0838e7..0ae12078 100644 --- a/plugin/ai_reply/main.go +++ b/plugin/ai_reply/main.go @@ -6,6 +6,7 @@ import ( "time" "github.com/FloatTech/AnimeAPI/aireply" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" zero "github.com/wdvxdr1123/ZeroBot" @@ -19,7 +20,7 @@ const ( var replyModes = [...]string{"青云客", "小爱"} func init() { // 插件主体 - engine := control.Register(replyServiceName, &control.Options{ + engine := control.Register(replyServiceName, &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "人工智能回复\n" + "- @Bot 任意文本(任意一句话回复)\n- 设置回复模式[青云客 | 小爱]\n- ", @@ -67,7 +68,7 @@ func setReplyMode(ctx *zero.Ctx, name string) error { if !ok { return errors.New("no such mode") } - m, ok := control.Lookup(replyServiceName) + m, ok := ctx.State["manager"].(*ctrl.Control[*zero.Ctx]) if !ok { return errors.New("no such plugin") } @@ -79,7 +80,7 @@ func getReplyMode(ctx *zero.Ctx) (name string) { if gid == 0 { gid = -ctx.Event.UserID } - m, ok := control.Lookup(replyServiceName) + m, ok := ctx.State["manager"].(*ctrl.Control[*zero.Ctx]) if ok { index := m.GetData(gid) if int(index) < len(replyModes) { diff --git a/plugin/aiwife/non-existent.go b/plugin/aiwife/non-existent.go index 6749331d..5c594d94 100644 --- a/plugin/aiwife/non-existent.go +++ b/plugin/aiwife/non-existent.go @@ -5,6 +5,7 @@ import ( "fmt" "math/rand" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" zero "github.com/wdvxdr1123/ZeroBot" @@ -16,7 +17,7 @@ const ( ) func init() { // 插件主体 - control.Register("aiwife", &control.Options{ + control.Register("aiwife", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "AIWife\n" + "- waifu | 随机waifu", diff --git a/plugin/atri/atri.go b/plugin/atri/atri.go index 9066529f..1f5f1113 100644 --- a/plugin/atri/atri.go +++ b/plugin/atri/atri.go @@ -12,6 +12,7 @@ import ( zero "github.com/wdvxdr1123/ZeroBot" "github.com/wdvxdr1123/ZeroBot/message" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/process" ) @@ -24,7 +25,7 @@ const ( ) func init() { // 插件主体 - engine := control.Register(servicename, &control.Options{ + engine := control.Register(servicename, &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "本插件基于 ATRI ,为 Golang 移植版\n" + "- ATRI醒醒\n- ATRI睡吧\n- 萝卜子\n- 喜欢 | 爱你 | 爱 | suki | daisuki | すき | 好き | 贴贴 | 老婆 | 亲一个 | mua\n" + diff --git a/plugin/b14/main.go b/plugin/b14/main.go index db9e0f2e..a147934e 100644 --- a/plugin/b14/main.go +++ b/plugin/b14/main.go @@ -4,6 +4,7 @@ package b14coder import ( "unsafe" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" base14 "github.com/fumiama/go-base16384" tea "github.com/fumiama/gofastTEA" @@ -13,7 +14,7 @@ import ( ) func init() { - en := control.Register("base16384", &control.Options{ + en := control.Register("base16384", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "base16384加解密\n" + "- 加密xxx\n- 解密xxx\n- 用yyy加密xxx\n- 用yyy解密xxx", diff --git a/plugin/baidu/search.go b/plugin/baidu/search.go index e4e06fb2..bc7cbf12 100644 --- a/plugin/baidu/search.go +++ b/plugin/baidu/search.go @@ -7,12 +7,13 @@ import ( zero "github.com/wdvxdr1123/ZeroBot" "github.com/wdvxdr1123/ZeroBot/message" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" ) func init() { - control.Register("baidu", &control.Options{ + control.Register("baidu", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "baidu\n" + "- 百度下[xxx]", diff --git a/plugin/bilibili/info.go b/plugin/bilibili/info.go index 815dc6a3..0f84a96d 100644 --- a/plugin/bilibili/info.go +++ b/plugin/bilibili/info.go @@ -13,6 +13,7 @@ import ( "strconv" "time" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/file" @@ -26,7 +27,7 @@ import ( "github.com/wdvxdr1123/ZeroBot/message" ) -var engine = control.Register("bilibili", &control.Options{ +var engine = control.Register("bilibili", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "bilibili\n" + "- >vup info [xxx]\n" + diff --git a/plugin/bilibili_parse/bilibili_parse.go b/plugin/bilibili_parse/bilibili_parse.go index 6ccc0edf..94ee0525 100644 --- a/plugin/bilibili_parse/bilibili_parse.go +++ b/plugin/bilibili_parse/bilibili_parse.go @@ -6,6 +6,7 @@ import ( "regexp" "strings" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/antchfx/htmlquery" zero "github.com/wdvxdr1123/ZeroBot" @@ -19,7 +20,7 @@ const ( var re = regexp.MustCompile(validRe) func init() { - engine := control.Register("bilibiliparse", &control.Options{ + engine := control.Register("bilibiliparse", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "b站视频链接解析\n" + "- https://www.bilibili.com/video/BV1xx411c7BF | https://www.bilibili.com/video/av1605 | https://b23.tv/I8uzWCA | https://www.bilibili.com/video/bv1xx411c7BF", diff --git a/plugin/bilibili_push/bilibili_push.go b/plugin/bilibili_push/bilibili_push.go deleted file mode 100644 index ed4a4d3c..00000000 --- a/plugin/bilibili_push/bilibili_push.go +++ /dev/null @@ -1,593 +0,0 @@ -// Package bilibilipush b站推送 -package bilibilipush - -import ( - "bytes" - "encoding/json" - "fmt" - "strconv" - "time" - - log "github.com/sirupsen/logrus" - "github.com/tidwall/gjson" - zero "github.com/wdvxdr1123/ZeroBot" - "github.com/wdvxdr1123/ZeroBot/message" - - "github.com/FloatTech/zbputils/binary" - "github.com/FloatTech/zbputils/control" - "github.com/FloatTech/zbputils/img/text" - "github.com/FloatTech/zbputils/web" -) - -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=%d" - userDynamicURL = "https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/space_history?host_uid=%d&offset_dynamic_id=0&need_top=0" - liveListURL = "https://api.live.bilibili.com/room/v1/Room/get_status_info_by_uids" - tURL = "https://t.bilibili.com/" - liveURL = "https://live.bilibili.com/" - serviceName = "bilibilipush" -) - -// bdb bilibili推送数据库 -var bdb *bilibilipushdb - -var ( - lastTime = map[int64]int64{} - typeMsg = map[int64]string{ - 1: "转发了一条动态", - 2: "有图营业", - 4: "无图营业", - 8: "发布了新投稿", - 16: "发布了短视频", - 64: "发布了新专栏", - 256: "发布了新音频", - 2048: "发布了新简报", - } - liveStatus = map[int64]int{} - uidErrorMsg = map[int]string{ - 0: "输入的uid有效", - -400: "uid不存在,注意uid不是房间号", - -402: "uid不存在,注意uid不是房间号", - -412: "操作过于频繁IP暂时被风控,请半小时后再尝试", - } - upMap = map[int64]string{} -) - -func init() { - go bilibiliPushDaily() - en := control.Register(serviceName, &control.Options{ - DisableOnDefault: false, - Help: "bilibilipush\n" + - "- 添加b站订阅[uid]\n" + - "- 取消b站订阅[uid]\n" + - "- 取消b站动态订阅[uid]\n" + - "- 取消b站直播订阅[uid]\n" + - "- b站推送列表", - PrivateDataFolder: serviceName, - }) - - // 加载数据库 - go func() { - dbpath := en.DataFolder() - dbfile := dbpath + "push.db" - bdb = initialize(dbfile) - }() - - en.OnRegex(`^添加b站订阅\s?(\d+)$`, zero.UserOrGrpAdmin).SetBlock(true).Handle(func(ctx *zero.Ctx) { - buid, _ := strconv.ParseInt(ctx.State["regex_matched"].([]string)[1], 10, 64) - var name string - var ok bool - if name, ok = upMap[buid]; !ok { - var status int - var err error - status, name, err = checkBuid(buid) - if err != nil { - ctx.SendChain(message.Text("ERROR:", err)) - return - } - if status != 0 { - msg, ok := uidErrorMsg[status] - if !ok { - msg = "未知错误,请私聊反馈给" + zero.BotConfig.NickName[0] - } - ctx.SendChain(message.Text(msg)) - return - } - } - gid := ctx.Event.GroupID - if gid == 0 { - gid = -ctx.Event.UserID - } - if err := subscribe(buid, gid); err != nil { - ctx.SendChain(message.Text("ERROR:", err)) - return - } - ctx.SendChain(message.Text("已添加" + name + "的订阅")) - }) - en.OnRegex(`^取消b站订阅\s?(\d+)$`, zero.UserOrGrpAdmin).SetBlock(true).Handle(func(ctx *zero.Ctx) { - buid, _ := strconv.ParseInt(ctx.State["regex_matched"].([]string)[1], 10, 64) - var name string - var ok bool - if name, ok = upMap[buid]; !ok { - var status int - var err error - status, name, err = checkBuid(buid) - if err != nil { - ctx.SendChain(message.Text("ERROR:", err)) - return - } - if status != 0 { - msg, ok := uidErrorMsg[status] - if !ok { - msg = "未知错误,请私聊反馈给" + zero.BotConfig.NickName[0] - } - ctx.SendChain(message.Text(msg)) - return - } - } - gid := ctx.Event.GroupID - if gid == 0 { - gid = -ctx.Event.UserID - } - if err := unsubscribe(buid, gid); err != nil { - ctx.SendChain(message.Text("ERROR:", err)) - return - } - ctx.SendChain(message.Text("已取消" + name + "的订阅")) - }) - en.OnRegex(`^取消b站动态订阅\s?(\d+)$`, zero.UserOrGrpAdmin).SetBlock(true).Handle(func(ctx *zero.Ctx) { - buid, _ := strconv.ParseInt(ctx.State["regex_matched"].([]string)[1], 10, 64) - var name string - var ok bool - if name, ok = upMap[buid]; !ok { - var status int - var err error - status, name, err = checkBuid(buid) - if err != nil { - ctx.SendChain(message.Text("ERROR:", err)) - return - } - if status != 0 { - msg, ok := uidErrorMsg[status] - if !ok { - msg = "未知错误,请私聊反馈给" + zero.BotConfig.NickName[0] - } - ctx.SendChain(message.Text(msg)) - return - } - } - gid := ctx.Event.GroupID - if gid == 0 { - gid = -ctx.Event.UserID - } - if err := unsubscribeDynamic(buid, gid); err != nil { - ctx.SendChain(message.Text("ERROR:", err)) - return - } - ctx.SendChain(message.Text("已取消" + name + "的动态订阅")) - }) - en.OnRegex(`^取消b站直播订阅\s?(\d+)$`, zero.UserOrGrpAdmin).SetBlock(true).Handle(func(ctx *zero.Ctx) { - buid, _ := strconv.ParseInt(ctx.State["regex_matched"].([]string)[1], 10, 64) - var name string - var ok bool - if name, ok = upMap[buid]; !ok { - var status int - var err error - status, name, err = checkBuid(buid) - if err != nil { - ctx.SendChain(message.Text("ERROR:", err)) - return - } - if status != 0 { - msg, ok := uidErrorMsg[status] - if !ok { - msg = "未知错误,请私聊反馈给" + zero.BotConfig.NickName[0] - } - ctx.SendChain(message.Text(msg)) - return - } - } - gid := ctx.Event.GroupID - if gid == 0 { - gid = -ctx.Event.UserID - } - if err := unsubscribeLive(buid, gid); err != nil { - ctx.SendChain(message.Text("ERROR:", err)) - return - } - ctx.SendChain(message.Text("已取消" + name + "的直播订阅")) - }) - en.OnFullMatch("b站推送列表", zero.UserOrGrpAdmin).SetBlock(true).Handle(func(ctx *zero.Ctx) { - gid := ctx.Event.GroupID - if gid == 0 { - gid = -ctx.Event.UserID - } - bpl := bdb.getAllPushByGroup(gid) - msg := "--------b站推送列表--------" - for _, v := range bpl { - if _, ok := upMap[v.BilibiliUID]; !ok { - bdb.updateAllUp() - } - msg += fmt.Sprintf("\nuid:%-12d 动态:", v.BilibiliUID) - if v.DynamicDisable == 0 { - msg += "●" - } else { - msg += "○" - } - msg += " 直播:" - if v.LiveDisable == 0 { - msg += "●" - } else { - msg += "○" - } - msg += " up主:" + upMap[v.BilibiliUID] - } - data, err := text.RenderToBase64(msg, text.FontFile, 600, 20) - if err != nil { - ctx.SendChain(message.Text("ERROR:", err)) - return - } - if id := ctx.SendChain(message.Image("base64://" + binary.BytesToString(data))); id.ID() == 0 { - ctx.SendChain(message.Text("ERROR:可能被风控了")) - } - }) -} - -func bilibiliPushDaily() { - t := time.NewTicker(time.Second * 10) - defer t.Stop() - for range t.C { - log.Debugln("-----bilibilipush拉取推送信息-----") - _ = sendDynamic() - _ = sendLive() - } -} - -func checkBuid(buid int64) (status int, name string, err error) { - data, err := web.RequestDataWith(web.NewDefaultClient(), fmt.Sprintf(infoURL, buid), "GET", referer, ua) - if err != nil { - return - } - status = int(gjson.Get(binary.BytesToString(data), "code").Int()) - name = gjson.Get(binary.BytesToString(data), "data.name").String() - if status == 0 { - bdb.insertBilibiliUp(buid, name) - upMap[buid] = name - } - return -} - -// subscribe 订阅 -func subscribe(buid, groupid int64) (err error) { - bpMap := map[string]interface{}{ - "bilibili_uid": buid, - "group_id": groupid, - "live_disable": 0, - "dynamic_disable": 0, - } - err = bdb.insertOrUpdateLiveAndDynamic(bpMap) - return -} - -// unsubscribe 取消订阅 -func unsubscribe(buid, groupid int64) (err error) { - bpMap := map[string]interface{}{ - "bilibili_uid": buid, - "group_id": groupid, - "live_disable": 1, - "dynamic_disable": 1, - } - err = bdb.insertOrUpdateLiveAndDynamic(bpMap) - return -} - -func unsubscribeDynamic(buid, groupid int64) (err error) { - bpMap := map[string]interface{}{ - "bilibili_uid": buid, - "group_id": groupid, - "dynamic_disable": 1, - } - err = bdb.insertOrUpdateLiveAndDynamic(bpMap) - return -} - -func unsubscribeLive(buid, groupid int64) (err error) { - bpMap := map[string]interface{}{ - "bilibili_uid": buid, - "group_id": groupid, - "live_disable": 1, - } - err = bdb.insertOrUpdateLiveAndDynamic(bpMap) - return -} - -func getUserDynamicCard(buid int64) (cardList []gjson.Result, err error) { - data, err := web.RequestDataWith(web.NewDefaultClient(), fmt.Sprintf(userDynamicURL, buid), "GET", referer, ua) - if err != nil { - return - } - cardList = gjson.Get(binary.BytesToString(data), "data.cards").Array() - return -} - -func getLiveList(uids ...int64) (string, error) { - m := make(map[string]interface{}) - m["uids"] = uids - b, _ := json.Marshal(m) - data, err := web.PostData(liveListURL, "application/json", bytes.NewReader(b)) - if err != nil { - return "", err - } - return binary.BytesToString(data), nil -} - -func sendDynamic() error { - uids := bdb.getAllBuidByDynamic() - for _, buid := range uids { - cardList, err := getUserDynamicCard(buid) - if err != nil { - return err - } - t, ok := lastTime[buid] - if !ok { - lastTime[buid] = cardList[0].Get("desc.timestamp").Int() - return nil - } - for i := len(cardList) - 1; i >= 0; i-- { - ct := cardList[i].Get("desc.timestamp").Int() - if ct > t && ct > time.Now().Unix()-600 { - lastTime[buid] = ct - m, ok := control.Lookup(serviceName) - if ok { - groupList := bdb.getAllGroupByBuidAndDynamic(buid) - var msg []message.MessageSegment - cType := cardList[i].Get("desc.type").Int() - cardStr := cardList[i].Get("card").String() - switch cType { - case 0: - cName := cardList[i].Get("desc.user_profile.info.uname").String() - cTime := time.Unix(cardList[i].Get("desc.timestamp").Int(), 0).Format("2006-01-02 15:04:05") - msg = append(msg, message.Text(cName+"在"+cTime+typeMsg[cType]+"\n")) - case 1: - cName := gjson.Get(cardStr, "user.uname").String() - msg = append(msg, message.Text(cName+typeMsg[cType]+"\n")) - cContent := gjson.Get(cardStr, "item.content").String() - msg = append(msg, message.Text(cContent+"\n")) - msg = append(msg, message.Text("转发的内容:\n")) - cOrigType := gjson.Get(cardStr, "item.orig_type").Int() - cOrigin := gjson.Get(cardStr, "origin").String() - switch cOrigType { - case 1: - cName := gjson.Get(cOrigin, "user.uname").String() - msg = append(msg, message.Text(cName+typeMsg[cOrigType]+"\n")) - case 2: - cName := gjson.Get(cOrigin, "user.name").String() - cUploadTime := time.Unix(gjson.Get(cOrigin, "item.upload_time").Int(), 0).Format("2006-01-02 15:04:05") - msg = append(msg, message.Text(cName+"在"+cUploadTime+typeMsg[cOrigType]+"\n")) - cDescription := gjson.Get(cOrigin, "item.description") - msg = append(msg, message.Text(cDescription)) - if gjson.Get(cOrigin, "item.pictures.#").Int() != 0 { - gjson.Get(cOrigin, "item.pictures").ForEach(func(_, v gjson.Result) bool { - msg = append(msg, message.Image(v.Get("img_src").String())) - return true - }) - } - case 4: - cName := gjson.Get(cOrigin, "user.uname").String() - cTimestamp := time.Unix(gjson.Get(cOrigin, "item.timestamp").Int(), 0).Format("2006-01-02 15:04:05") - msg = append(msg, message.Text(cName+"在"+cTimestamp+typeMsg[cOrigType]+"\n")) - cContent := gjson.Get(cOrigin, "item.content").String() - msg = append(msg, message.Text(cContent+"\n")) - case 8: - cName := gjson.Get(cOrigin, "owner.name").String() - cTime := time.Unix(gjson.Get(cOrigin, "pubdate").Int(), 0).Format("2006-01-02 15:04:05") - msg = append(msg, message.Text(cName+"在"+cTime+typeMsg[cOrigType]+"\n")) - cTitle := gjson.Get(cOrigin, "title").String() - msg = append(msg, message.Text(cTitle)) - cPic := gjson.Get(cOrigin, "pic").String() - msg = append(msg, message.Image(cPic)) - cDesc := gjson.Get(cOrigin, "desc").String() - msg = append(msg, message.Text(cDesc+"\n")) - cShareSubtitle := gjson.Get(cOrigin, "share_subtitle").String() - msg = append(msg, message.Text(cShareSubtitle+"\n")) - cShortLink := gjson.Get(cOrigin, "short_link").String() - msg = append(msg, message.Text("视频链接:"+cShortLink+"\n")) - case 16: - cName := gjson.Get(cOrigin, "user.name").String() - cUploadTime := gjson.Get(cOrigin, "item.upload_time").String() - msg = append(msg, message.Text(cName+"在"+cUploadTime+typeMsg[cOrigType]+"\n")) - cDescription := gjson.Get(cOrigin, "item.description") - msg = append(msg, message.Text(cDescription)) - cCover := gjson.Get(cOrigin, "item.cover.default").String() - msg = append(msg, message.Image(cCover)) - case 64: - cName := gjson.Get(cOrigin, "author.name").String() - cPublishTime := time.Unix(gjson.Get(cOrigin, "publish_time").Int(), 0).Format("2006-01-02 15:04:05") - msg = append(msg, message.Text(cName+"在"+cPublishTime+typeMsg[cOrigType]+"\n")) - cTitle := gjson.Get(cOrigin, "title").String() - msg = append(msg, message.Text(cTitle+"\n")) - cSummary := gjson.Get(cOrigin, "summary").String() - msg = append(msg, message.Text(cSummary)) - cBannerURL := gjson.Get(cOrigin, "banner_url").String() - msg = append(msg, message.Image(cBannerURL)) - case 256: - cUpper := gjson.Get(cOrigin, "upper").String() - cTime := time.UnixMilli(gjson.Get(cOrigin, "ctime").Int()).Format("2006-01-02 15:04:05") - msg = append(msg, message.Text(cUpper+"在"+cTime+typeMsg[cOrigType]+"\n")) - cTitle := gjson.Get(cOrigin, "title").String() - msg = append(msg, message.Text(cTitle)) - cCover := gjson.Get(cOrigin, "cover").String() - msg = append(msg, message.Image(cCover)) - case 2048: - cName := gjson.Get(cOrigin, "user.uname").String() - msg = append(msg, message.Text(cName+typeMsg[cOrigType]+"\n")) - cContent := gjson.Get(cOrigin, "vest.content").String() - msg = append(msg, message.Text(cContent+"\n")) - cTitle := gjson.Get(cOrigin, "sketch.title").String() - msg = append(msg, message.Text(cTitle+"\n")) - cDescText := gjson.Get(cOrigin, "sketch.desc_text").String() - msg = append(msg, message.Text(cDescText)) - cCoverURL := gjson.Get(cOrigin, "sketch.cover_url").String() - msg = append(msg, message.Image(cCoverURL)) - cTargetURL := gjson.Get(cOrigin, "sketch.target_url").String() - msg = append(msg, message.Text("简报链接:"+cTargetURL+"\n")) - default: - msg = append(msg, message.Text("未知动态类型"+strconv.FormatInt(cOrigType, 10)+"\n")) - } - case 2: - cName := gjson.Get(cardStr, "user.name").String() - cUploadTime := time.Unix(gjson.Get(cardStr, "item.upload_time").Int(), 0).Format("2006-01-02 15:04:05") - msg = append(msg, message.Text(cName+"在"+cUploadTime+typeMsg[cType]+"\n")) - cDescription := gjson.Get(cardStr, "item.description") - msg = append(msg, message.Text(cDescription)) - if gjson.Get(cardStr, "item.pictures.#").Int() != 0 { - gjson.Get(cardStr, "item.pictures").ForEach(func(_, v gjson.Result) bool { - msg = append(msg, message.Image(v.Get("img_src").String())) - return true - }) - } - case 4: - cName := gjson.Get(cardStr, "user.uname").String() - cTimestamp := time.Unix(gjson.Get(cardStr, "item.timestamp").Int(), 0).Format("2006-01-02 15:04:05") - msg = append(msg, message.Text(cName+"在"+cTimestamp+typeMsg[cType]+"\n")) - cContent := gjson.Get(cardStr, "item.content").String() - msg = append(msg, message.Text(cContent+"\n")) - case 8: - cName := gjson.Get(cardStr, "owner.name").String() - cTime := time.Unix(gjson.Get(cardStr, "ctime").Int(), 0).Format("2006-01-02 15:04:05") - msg = append(msg, message.Text(cName+"在"+cTime+typeMsg[cType]+"\n")) - cTitle := gjson.Get(cardStr, "title").String() - msg = append(msg, message.Text(cTitle)) - cPic := gjson.Get(cardStr, "pic").String() - msg = append(msg, message.Image(cPic)) - cDesc := gjson.Get(cardStr, "desc").String() - msg = append(msg, message.Text(cDesc+"\n")) - cShareSubtitle := gjson.Get(cardStr, "share_subtitle").String() - msg = append(msg, message.Text(cShareSubtitle+"\n")) - cShortLink := gjson.Get(cardStr, "short_link").String() - msg = append(msg, message.Text("视频链接:"+cShortLink+"\n")) - case 16: - cName := gjson.Get(cardStr, "user.name").String() - cUploadTime := gjson.Get(cardStr, "item.upload_time").String() - msg = append(msg, message.Text(cName+"在"+cUploadTime+typeMsg[cType]+"\n")) - cDescription := gjson.Get(cardStr, "item.description") - msg = append(msg, message.Text(cDescription)) - cCover := gjson.Get(cardStr, "item.cover.default").String() - msg = append(msg, message.Image(cCover)) - case 64: - cName := gjson.Get(cardStr, "author.name").String() - cPublishTime := time.Unix(gjson.Get(cardStr, "publish_time").Int(), 0).Format("2006-01-02 15:04:05") - msg = append(msg, message.Text(cName+"在"+cPublishTime+typeMsg[cType]+"\n")) - cTitle := gjson.Get(cardStr, "title").String() - msg = append(msg, message.Text(cTitle+"\n")) - cSummary := gjson.Get(cardStr, "summary").String() - msg = append(msg, message.Text(cSummary)) - cBannerURL := gjson.Get(cardStr, "banner_url").String() - msg = append(msg, message.Image(cBannerURL)) - case 256: - cUpper := gjson.Get(cardStr, "upper").String() - cTime := time.UnixMilli(gjson.Get(cardStr, "ctime").Int()).Format("2006-01-02 15:04:05") - msg = append(msg, message.Text(cUpper+"在"+cTime+typeMsg[cType]+"\n")) - cTitle := gjson.Get(cardStr, "title").String() - msg = append(msg, message.Text(cTitle)) - cCover := gjson.Get(cardStr, "cover").String() - msg = append(msg, message.Image(cCover)) - case 2048: - cName := gjson.Get(cardStr, "user.uname").String() - msg = append(msg, message.Text(cName+typeMsg[cType]+"\n")) - cContent := gjson.Get(cardStr, "vest.content").String() - msg = append(msg, message.Text(cContent+"\n")) - cTitle := gjson.Get(cardStr, "sketch.title").String() - msg = append(msg, message.Text(cTitle+"\n")) - cDescText := gjson.Get(cardStr, "sketch.desc_text").String() - msg = append(msg, message.Text(cDescText)) - cCoverURL := gjson.Get(cardStr, "sketch.cover_url").String() - msg = append(msg, message.Image(cCoverURL)) - cTargetURL := gjson.Get(cardStr, "sketch.target_url").String() - msg = append(msg, message.Text("简报链接:"+cTargetURL+"\n")) - default: - msg = append(msg, message.Text("未知动态类型"+strconv.FormatInt(cType, 10)+"\n")) - } - cID := cardList[i].Get("desc.dynamic_id").String() - msg = append(msg, message.Text("动态链接:", tURL+cID)) - - zero.RangeBot(func(id int64, ctx *zero.Ctx) bool { - for _, gid := range groupList { - if m.IsEnabledIn(gid) { - switch { - case gid > 0: - ctx.SendGroupMessage(gid, msg) - case gid < 0: - ctx.SendPrivateMessage(-gid, msg) - } - } - } - return true - }) - } - } - } - } - return nil -} - -func sendLive() error { - uids := bdb.getAllBuidByLive() - ll, err := getLiveList(uids...) - if err != nil { - return err - } - gjson.Get(ll, "data").ForEach(func(key, value gjson.Result) bool { - newStatus := int(value.Get("live_status").Int()) - if newStatus == 2 { - newStatus = 0 - } - if _, ok := liveStatus[key.Int()]; !ok { - liveStatus[key.Int()] = newStatus - return true - } - oldStatus := liveStatus[key.Int()] - if newStatus != oldStatus && newStatus == 1 { - liveStatus[key.Int()] = newStatus - m, ok := control.Lookup(serviceName) - if ok { - groupList := bdb.getAllGroupByBuidAndLive(key.Int()) - roomID := value.Get("short_id").Int() - if roomID == 0 { - roomID = value.Get("room_id").Int() - } - lURL := liveURL + strconv.FormatInt(roomID, 10) - lName := value.Get("uname").String() - lTitle := value.Get("title").String() - lCover := value.Get("cover_from_user").String() - if lCover == "" { - lCover = value.Get("keyframe").String() - } - var msg []message.MessageSegment - msg = append(msg, message.Text(lName+" 正在直播:\n")) - msg = append(msg, message.Text(lTitle)) - msg = append(msg, message.Image(lCover)) - msg = append(msg, message.Text("直播链接:", lURL)) - zero.RangeBot(func(id int64, ctx *zero.Ctx) bool { - for _, gid := range groupList { - if m.IsEnabledIn(gid) { - switch { - case gid > 0: - ctx.SendGroupMessage(gid, msg) - case gid < 0: - ctx.SendPrivateMessage(-gid, msg) - } - } - } - return true - }) - } - } else if newStatus != oldStatus { - liveStatus[key.Int()] = newStatus - } - return true - }) - return nil -} diff --git a/plugin/bilibili_push/model.go b/plugin/bilibili_push/model.go deleted file mode 100644 index 6b8c0963..00000000 --- a/plugin/bilibili_push/model.go +++ /dev/null @@ -1,144 +0,0 @@ -package bilibilipush - -import ( - "encoding/json" - "os" - - _ "github.com/fumiama/sqlite3" // import sql - "github.com/jinzhu/gorm" -) - -// bilibilipushdb bili推送数据库 -type bilibilipushdb gorm.DB - -type bilibilipush struct { - ID int64 `gorm:"column:id;primary_key" json:"id"` - BilibiliUID int64 `gorm:"column:bilibili_uid;index:idx_buid_gid" json:"bilibili_uid"` - GroupID int64 `gorm:"column:group_id;index:idx_buid_gid" json:"group_id"` - LiveDisable int64 `gorm:"column:live_disable;default:0" json:"live_disable"` - DynamicDisable int64 `gorm:"column:dynamic_disable;default:0" json:"dynamic_disable"` -} - -// TableName ... -func (bilibilipush) TableName() string { - return "bilibili_push" -} - -type bilibiliup struct { - BilibiliUID int64 `gorm:"column:bilibili_uid;primary_key"` - Name string `gorm:"column:name"` -} - -// TableName ... -func (bilibiliup) TableName() string { - return "bilibili_up" -} - -// initialize 初始化ScoreDB数据库 -func initialize(dbpath string) *bilibilipushdb { - var err error - if _, err = os.Stat(dbpath); err != nil || os.IsNotExist(err) { - // 生成文件 - f, err := os.Create(dbpath) - if err != nil { - return nil - } - defer f.Close() - } - gdb, err := gorm.Open("sqlite3", dbpath) - if err != nil { - panic(err) - } - gdb.AutoMigrate(&bilibilipush{}).AutoMigrate(&bilibiliup{}) - return (*bilibilipushdb)(gdb) -} - -// insertOrUpdateLiveAndDynamic 插入或更新数据库 -func (bdb *bilibilipushdb) insertOrUpdateLiveAndDynamic(bpMap map[string]interface{}) (err error) { - db := (*gorm.DB)(bdb) - bp := bilibilipush{} - data, _ := json.Marshal(&bpMap) - _ = json.Unmarshal(data, &bp) - if err = db.Model(&bilibilipush{}).First(&bp, "bilibili_uid = ? and group_id = ?", bp.BilibiliUID, bp.GroupID).Error; err != nil { - if gorm.IsRecordNotFoundError(err) { - err = db.Model(&bilibilipush{}).Create(&bp).Error - } - } else { - err = db.Model(&bilibilipush{}).Where("bilibili_uid = ? and group_id = ?", bp.BilibiliUID, bp.GroupID).Update(bpMap).Error - } - return -} - -func (bdb *bilibilipushdb) getAllBuidByLive() (buidList []int64) { - db := (*gorm.DB)(bdb) - var bpl []bilibilipush - db.Model(&bilibilipush{}).Find(&bpl, "live_disable = 0") - temp := make(map[int64]bool) - for _, v := range bpl { - _, ok := temp[v.BilibiliUID] - if !ok { - buidList = append(buidList, v.BilibiliUID) - temp[v.BilibiliUID] = true - } - } - return -} - -func (bdb *bilibilipushdb) getAllBuidByDynamic() (buidList []int64) { - db := (*gorm.DB)(bdb) - var bpl []bilibilipush - db.Model(&bilibilipush{}).Find(&bpl, "dynamic_disable = 0") - temp := make(map[int64]bool) - for _, v := range bpl { - _, ok := temp[v.BilibiliUID] - if !ok { - buidList = append(buidList, v.BilibiliUID) - temp[v.BilibiliUID] = true - } - } - return -} - -func (bdb *bilibilipushdb) getAllGroupByBuidAndLive(buid int64) (groupList []int64) { - db := (*gorm.DB)(bdb) - var bpl []bilibilipush - db.Model(&bilibilipush{}).Find(&bpl, "bilibili_uid = ? and live_disable = 0", buid) - for _, v := range bpl { - groupList = append(groupList, v.GroupID) - } - return -} - -func (bdb *bilibilipushdb) getAllGroupByBuidAndDynamic(buid int64) (groupList []int64) { - db := (*gorm.DB)(bdb) - var bpl []bilibilipush - db.Model(&bilibilipush{}).Find(&bpl, "bilibili_uid = ? and dynamic_disable = 0", buid) - for _, v := range bpl { - groupList = append(groupList, v.GroupID) - } - return -} - -func (bdb *bilibilipushdb) getAllPushByGroup(groupID int64) (bpl []bilibilipush) { - db := (*gorm.DB)(bdb) - db.Model(&bilibilipush{}).Find(&bpl, "group_id = ? and (live_disable = 0 or dynamic_disable = 0)", groupID) - return -} - -func (bdb *bilibilipushdb) insertBilibiliUp(buid int64, name string) { - db := (*gorm.DB)(bdb) - bu := bilibiliup{ - BilibiliUID: buid, - Name: name, - } - db.Model(&bilibiliup{}).Create(bu) -} - -func (bdb *bilibilipushdb) updateAllUp() { - db := (*gorm.DB)(bdb) - var bul []bilibiliup - db.Model(&bilibiliup{}).Find(&bul) - for _, v := range bul { - upMap[v.BilibiliUID] = v.Name - } -} diff --git a/plugin/book_review/book_review.go b/plugin/book_review/book_review.go index 1e5c0386..1ecc6a32 100644 --- a/plugin/book_review/book_review.go +++ b/plugin/book_review/book_review.go @@ -6,6 +6,7 @@ import ( zero "github.com/wdvxdr1123/ZeroBot" "github.com/wdvxdr1123/ZeroBot/message" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/binary" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" @@ -13,7 +14,7 @@ import ( ) func init() { - engine := control.Register("bookreview", &control.Options{ + engine := control.Register("bookreview", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "哀伤雪刃推书记录\n- 书评[xxx]\n- 随机书评", PublicDataFolder: "BookReview", diff --git a/plugin/cangtoushi/cangtoushi.go b/plugin/cangtoushi/cangtoushi.go index aa33f236..9f5dea68 100644 --- a/plugin/cangtoushi/cangtoushi.go +++ b/plugin/cangtoushi/cangtoushi.go @@ -9,6 +9,7 @@ import ( "net/url" "strings" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/antchfx/htmlquery" zero "github.com/wdvxdr1123/ZeroBot" @@ -29,7 +30,7 @@ var ( ) func init() { - engine := control.Register("cangtoushi", &control.Options{ + engine := control.Register("cangtoushi", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "藏头诗\n" + "- 藏头诗[xxx]\n- 藏尾诗[xxx]", diff --git a/plugin/chat/chat.go b/plugin/chat/chat.go index 440efcee..026f773e 100644 --- a/plugin/chat/chat.go +++ b/plugin/chat/chat.go @@ -6,6 +6,7 @@ import ( "strconv" "time" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" zero "github.com/wdvxdr1123/ZeroBot" "github.com/wdvxdr1123/ZeroBot/extension/rate" @@ -14,7 +15,7 @@ import ( var ( poke = rate.NewManager[int64](time.Minute*5, 8) // 戳一戳 - engine = control.Register("chat", &control.Options{ + engine = control.Register("chat", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "chat\n- [BOT名字]\n- [戳一戳BOT]\n- 空调开\n- 空调关\n- 群温度\n- 设置温度[正整数]", }) diff --git a/plugin/choose/choose.go b/plugin/choose/choose.go index ab86d731..e8574578 100644 --- a/plugin/choose/choose.go +++ b/plugin/choose/choose.go @@ -6,13 +6,14 @@ import ( "strconv" "strings" + 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("choose", &control.Options{ + engine := control.Register("choose", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "choose\n" + "- 选择可口可乐还是百事可乐\n" + diff --git a/plugin/chouxianghua/chouxianghua.go b/plugin/chouxianghua/chouxianghua.go index 511f9c3f..416432e7 100644 --- a/plugin/chouxianghua/chouxianghua.go +++ b/plugin/chouxianghua/chouxianghua.go @@ -6,12 +6,13 @@ import ( zero "github.com/wdvxdr1123/ZeroBot" "github.com/wdvxdr1123/ZeroBot/message" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" ) func init() { - en := control.Register("chouxianghua", &control.Options{ + en := control.Register("chouxianghua", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "抽象话\n- 抽象翻译xxx", PublicDataFolder: "ChouXiangHua", diff --git a/plugin/coser/coser.go b/plugin/coser/coser.go index c2cfb6fe..4f6f1563 100644 --- a/plugin/coser/coser.go +++ b/plugin/coser/coser.go @@ -10,6 +10,7 @@ import ( "github.com/wdvxdr1123/ZeroBot/message" "github.com/wdvxdr1123/ZeroBot/utils/helper" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/web" @@ -22,7 +23,7 @@ var ( ) func init() { - control.Register("coser", &control.Options{ + control.Register("coser", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "三次元小姐姐\n- coser", }).ApplySingle(ctxext.DefaultSingle).OnFullMatch("coser", zero.OnlyGroup).SetBlock(true).Limit(ctxext.LimitByGroup). diff --git a/plugin/cpstory/cpstory.go b/plugin/cpstory/cpstory.go index feafc201..5cc13ec4 100644 --- a/plugin/cpstory/cpstory.go +++ b/plugin/cpstory/cpstory.go @@ -8,13 +8,14 @@ import ( zero "github.com/wdvxdr1123/ZeroBot" "github.com/wdvxdr1123/ZeroBot/message" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/math" ) func init() { - engine := control.Register("cpstory", &control.Options{ + engine := control.Register("cpstory", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "cp短打\n- 组cp[@xxx][@xxx]\n- 磕cp大老师 雪乃", PublicDataFolder: "CpStory", diff --git a/plugin/curse/curse.go b/plugin/curse/curse.go index 782e764b..dff926a8 100644 --- a/plugin/curse/curse.go +++ b/plugin/curse/curse.go @@ -6,6 +6,7 @@ import ( zero "github.com/wdvxdr1123/ZeroBot" "github.com/wdvxdr1123/ZeroBot/message" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/process" @@ -17,7 +18,7 @@ const ( ) func init() { - engine := control.Register("curse", &control.Options{ + engine := control.Register("curse", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: true, Help: "骂人(求骂,自卫)\n- 骂我\n- 大力骂我", PublicDataFolder: "Curse", diff --git a/plugin/danbooru/main.go b/plugin/danbooru/main.go index b8dec2c0..470c4226 100644 --- a/plugin/danbooru/main.go +++ b/plugin/danbooru/main.go @@ -6,6 +6,7 @@ import ( "encoding/hex" "github.com/FloatTech/AnimeAPI/danbooru" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/file" "github.com/FloatTech/zbputils/img/writer" @@ -15,7 +16,7 @@ import ( ) func init() { // 插件主体 - engine := control.Register("danbooru", &control.Options{ + engine := control.Register("danbooru", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "二次元图片标签识别\n" + "- 鉴赏图片[图片]", diff --git a/plugin/diana/bing.go b/plugin/diana/bing.go index 926e8e5d..f6df6304 100644 --- a/plugin/diana/bing.go +++ b/plugin/diana/bing.go @@ -5,13 +5,14 @@ import ( zero "github.com/wdvxdr1123/ZeroBot" "github.com/wdvxdr1123/ZeroBot/message" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/ZeroBot-Plugin/plugin/diana/data" ) -var engine = control.Register("diana", &control.Options{ +var engine = control.Register("diana", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "嘉然\n" + "- 小作文\n" + diff --git a/plugin/drift_bottle/main.go b/plugin/drift_bottle/main.go index 0cdb7db8..c296d835 100644 --- a/plugin/drift_bottle/main.go +++ b/plugin/drift_bottle/main.go @@ -6,6 +6,7 @@ import ( "strings" "sync" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/sirupsen/logrus" zero "github.com/wdvxdr1123/ZeroBot" @@ -13,7 +14,7 @@ import ( ) func init() { - en := control.Register("driftbottle", &control.Options{ + en := control.Register("driftbottle", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "漂流瓶\n- (在群xxx)丢漂流瓶(到频道xxx) [消息]\n- (从频道xxx)捡漂流瓶\n- @BOT 创建频道 xxx\n- 跳入(频道)海中\n- 注:不显式限制时,私聊发送可在所有群抽到,群聊发送仅可在本群抽到,默认频道为 global", PrivateDataFolder: "driftbottle", diff --git a/plugin/emojimix/mix.go b/plugin/emojimix/mix.go index 9a5e9d17..ac67426b 100644 --- a/plugin/emojimix/mix.go +++ b/plugin/emojimix/mix.go @@ -6,6 +6,7 @@ import ( "net/http" "strconv" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/sirupsen/logrus" @@ -16,7 +17,7 @@ import ( const bed = "https://www.gstatic.com/android/keyboard/emojikitchen/%d/u%x/u%x_u%x.png" func init() { - control.Register("emojimix", &control.Options{ + control.Register("emojimix", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "合成emoji\n" + "- [emoji][emoji]", diff --git a/plugin/epidemic/epidemic.go b/plugin/epidemic/epidemic.go index 85667e84..3a312a9f 100644 --- a/plugin/epidemic/epidemic.go +++ b/plugin/epidemic/epidemic.go @@ -7,6 +7,7 @@ import ( zero "github.com/wdvxdr1123/ZeroBot" "github.com/wdvxdr1123/ZeroBot/message" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/web" @@ -49,7 +50,7 @@ type area struct { } func init() { - engine := control.Register(servicename, &control.Options{ + engine := control.Register(servicename, &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "城市疫情查询\n" + "- xxx疫情\n", diff --git a/plugin/font/main.go b/plugin/font/main.go index 93ea0262..7118118c 100644 --- a/plugin/font/main.go +++ b/plugin/font/main.go @@ -2,6 +2,7 @@ package font import ( + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/binary" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" @@ -11,7 +12,7 @@ import ( ) func init() { - control.Register("font", &control.Options{ + control.Register("font", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "渲染任意文字到图片\n- (用[终末体|终末变体|紫罗兰体|樱酥体|Consolas体|苹方体])渲染文字xxx", }).OnRegex(`^(用.+)?渲染文字([\s\S]+)$`).SetBlock(true).Limit(ctxext.LimitByUser).Handle(func(ctx *zero.Ctx) { diff --git a/plugin/fortune/fortune.go b/plugin/fortune/fortune.go index 8ca8ffce..51b4fe1f 100644 --- a/plugin/fortune/fortune.go +++ b/plugin/fortune/fortune.go @@ -17,6 +17,7 @@ import ( "github.com/wdvxdr1123/ZeroBot/message" "github.com/wdvxdr1123/ZeroBot/utils/helper" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/file" @@ -47,7 +48,7 @@ var ( func init() { // 插件主体 - en := control.Register("fortune", &control.Options{ + en := control.Register("fortune", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "每日运势: \n" + "- 运势 | 抽签\n" + @@ -71,7 +72,7 @@ func init() { } i, ok := index[ctx.State["regex_matched"].([]string)[1]] if ok { - c, ok := control.Lookup("fortune") + c, ok := ctx.State["manager"].(*ctrl.Control[*zero.Ctx]) if ok { err := c.SetData(gid, int64(i)&0xff) if err != nil { @@ -115,7 +116,7 @@ func init() { gid = -ctx.Event.UserID } logrus.Debugln("[fortune]gid:", ctx.Event.GroupID, "uid:", ctx.Event.UserID) - c, ok := control.Lookup("fortune") + c, ok := ctx.State["manager"].(*ctrl.Control[*zero.Ctx]) if ok { v := uint8(c.GetData(gid) & 0xff) if int(v) < len(table) { diff --git a/plugin/funny/laugh.go b/plugin/funny/laugh.go index 5365d657..51bbc762 100644 --- a/plugin/funny/laugh.go +++ b/plugin/funny/laugh.go @@ -9,6 +9,7 @@ import ( "github.com/wdvxdr1123/ZeroBot/message" sql "github.com/FloatTech/sqlite" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" ) @@ -21,7 +22,7 @@ type joke struct { var db = &sql.Sqlite{} func init() { - en := control.Register("funny", &control.Options{ + en := control.Register("funny", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "讲个笑话\n" + "- 讲个笑话[@xxx|qq号|人名] | 夸夸[@xxx|qq号|人名] ", diff --git a/plugin/genshin/ys.go b/plugin/genshin/ys.go index c9f54e77..c97a5634 100644 --- a/plugin/genshin/ys.go +++ b/plugin/genshin/ys.go @@ -13,6 +13,7 @@ import ( "strings" "sync/atomic" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/img/writer" @@ -33,7 +34,7 @@ var ( ) func init() { - engine := control.Register("genshin", &control.Options{ + engine := control.Register("genshin", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "原神抽卡\n- 原神十连\n- 切换原神卡池", PublicDataFolder: "Genshin", @@ -41,7 +42,7 @@ func init() { engine.OnFullMatch("切换原神卡池").SetBlock(true).Limit(ctxext.LimitByUser). Handle(func(ctx *zero.Ctx) { - c, ok := control.Lookup("genshin") + c, ok := ctx.State["manager"].(*ctrl.Control[*zero.Ctx]) if !ok { ctx.SendChain(message.Text("找不到服务!")) return @@ -82,7 +83,7 @@ func init() { }, )).SetBlock(true).Limit(ctxext.LimitByUser). Handle(func(ctx *zero.Ctx) { - c, ok := control.Lookup("genshin") + c, ok := ctx.State["manager"].(*ctrl.Control[*zero.Ctx]) if !ok { ctx.SendChain(message.Text("找不到服务!")) return diff --git a/plugin/gif/run.go b/plugin/gif/run.go index aef84171..4490ffee 100644 --- a/plugin/gif/run.go +++ b/plugin/gif/run.go @@ -6,6 +6,7 @@ import ( "strconv" "strings" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/file" @@ -20,7 +21,7 @@ var ( ) func init() { // 插件主体 - en := control.Register("gif", &control.Options{ + en := control.Register("gif", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "制图\n- " + strings.Join(cmds, "\n- "), PrivateDataFolder: "gif", diff --git a/plugin/github/repo_searcher.go b/plugin/github/repo_searcher.go index 71fc71f4..06baa6e1 100644 --- a/plugin/github/repo_searcher.go +++ b/plugin/github/repo_searcher.go @@ -9,6 +9,7 @@ import ( "net/url" "strings" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" zero "github.com/wdvxdr1123/ZeroBot" "github.com/wdvxdr1123/ZeroBot/message" @@ -17,7 +18,7 @@ import ( ) func init() { // 插件主体 - control.Register("github", &control.Options{ + control.Register("github", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "GitHub仓库搜索\n" + "- >github [xxx]\n" + diff --git a/plugin/hs/run.go b/plugin/hs/run.go index 555da4cc..2b4976d9 100644 --- a/plugin/hs/run.go +++ b/plugin/hs/run.go @@ -11,6 +11,7 @@ import ( "github.com/wdvxdr1123/ZeroBot/message" "github.com/wdvxdr1123/ZeroBot/utils/helper" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/file" @@ -40,7 +41,7 @@ const ( ) func init() { - engine := control.Register("hs", &control.Options{ + engine := control.Register("hs", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "炉石\n" + "- 搜卡[xxxx]\n" + diff --git a/plugin/hyaku/main.go b/plugin/hyaku/main.go index 979b0758..f7f93b96 100644 --- a/plugin/hyaku/main.go +++ b/plugin/hyaku/main.go @@ -10,6 +10,7 @@ import ( "strconv" "unsafe" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/binary" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" @@ -51,7 +52,7 @@ func (l *line) String() string { var lines [100]*line func init() { - engine := control.Register("hyaku", &control.Options{ + engine := control.Register("hyaku", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "百人一首\n" + "- 百人一首(随机发一首)\n" + diff --git a/plugin/image_finder/keyword.go b/plugin/image_finder/keyword.go index eb8a45b5..d749b1be 100644 --- a/plugin/image_finder/keyword.go +++ b/plugin/image_finder/keyword.go @@ -13,6 +13,7 @@ import ( "github.com/FloatTech/AnimeAPI/pixiv" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/img/pool" @@ -35,7 +36,7 @@ type resultjson struct { } func init() { - control.Register("imgfinder", &control.Options{ + control.Register("imgfinder", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "关键字搜图\n" + "- 来张 [xxx]", diff --git a/plugin/inject/main.go b/plugin/inject/main.go index 26c11d4d..6064994d 100644 --- a/plugin/inject/main.go +++ b/plugin/inject/main.go @@ -2,13 +2,14 @@ package inject import ( + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" zero "github.com/wdvxdr1123/ZeroBot" "github.com/wdvxdr1123/ZeroBot/message" ) func init() { - en := control.Register("inject", &control.Options{ + en := control.Register("inject", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "注入指令\n" + "- run[CQ码]", diff --git a/plugin/jandan/jandan.go b/plugin/jandan/jandan.go index 97f232ee..03655a83 100644 --- a/plugin/jandan/jandan.go +++ b/plugin/jandan/jandan.go @@ -7,6 +7,7 @@ import ( "regexp" "strconv" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/binary" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" @@ -21,7 +22,7 @@ const ( ) func init() { - engine := control.Register("jandan", &control.Options{ + engine := control.Register("jandan", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "煎蛋网无聊图\n- 来份[屌|弔|吊]图\n- 更新[屌|弔|吊]图\n", PublicDataFolder: "Jandan", diff --git a/plugin/juejuezi/juejuezi.go b/plugin/juejuezi/juejuezi.go index 2cbb5222..ef5abcb5 100644 --- a/plugin/juejuezi/juejuezi.go +++ b/plugin/juejuezi/juejuezi.go @@ -7,6 +7,7 @@ import ( "net/http" "strings" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/tidwall/gjson" @@ -22,7 +23,7 @@ const ( ) func init() { - control.Register("juejuezi", &control.Options{ + control.Register("juejuezi", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "绝绝子生成器\n" + "- 喝奶茶绝绝子 | 绝绝子吃饭", diff --git a/plugin/lolicon/lolicon.go b/plugin/lolicon/lolicon.go index 174a0a1c..1a2635bd 100644 --- a/plugin/lolicon/lolicon.go +++ b/plugin/lolicon/lolicon.go @@ -10,6 +10,7 @@ import ( zero "github.com/wdvxdr1123/ZeroBot" "github.com/wdvxdr1123/ZeroBot/message" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/img/pool" @@ -29,7 +30,7 @@ var ( ) func init() { - en := control.Register("lolicon", &control.Options{ + en := control.Register("lolicon", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "lolicon\n" + "- 来份萝莉\n" + diff --git a/plugin/manager/manager.go b/plugin/manager/manager.go index 80474b18..2c2d731c 100644 --- a/plugin/manager/manager.go +++ b/plugin/manager/manager.go @@ -14,6 +14,7 @@ import ( "github.com/wdvxdr1123/ZeroBot/message" sql "github.com/FloatTech/sqlite" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/math" @@ -59,7 +60,7 @@ var ( ) func init() { // 插件主体 - engine := control.Register("manager", &control.Options{ + engine := control.Register("manager", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: hint, PrivateDataFolder: "manager", @@ -385,7 +386,7 @@ func init() { // 插件主体 } else { ctx.SendChain(message.Text("欢迎~")) } - c, ok := control.Lookup("manager") + c, ok := ctx.State["manager"].(*ctrl.Control[*zero.Ctx]) if ok { enable := c.GetData(ctx.Event.GroupID)&1 == 1 if enable { @@ -499,7 +500,7 @@ func init() { // 插件主体 engine.OnRegex(`^(.*)入群验证$`, zero.OnlyGroup, zero.AdminPermission).SetBlock(true). Handle(func(ctx *zero.Ctx) { option := ctx.State["regex_matched"].([]string)[1] - c, ok := control.Lookup("manager") + c, ok := ctx.State["manager"].(*ctrl.Control[*zero.Ctx]) if ok { data := c.GetData(ctx.Event.GroupID) switch option { @@ -524,7 +525,7 @@ func init() { // 插件主体 engine.OnRegex(`^(.*)gist加群自动审批$`, zero.OnlyGroup, zero.AdminPermission).SetBlock(true). Handle(func(ctx *zero.Ctx) { option := ctx.State["regex_matched"].([]string)[1] - c, ok := control.Lookup("manager") + c, ok := ctx.State["manager"].(*ctrl.Control[*zero.Ctx]) if ok { data := c.GetData(ctx.Event.GroupID) switch option { @@ -552,7 +553,7 @@ func init() { // 插件主体 /*if ctx.Event.RequestType == "friend" { ctx.SetFriendAddRequest(ctx.Event.Flag, true, "") }*/ - c, ok := control.Lookup("manager") + c, ok := ctx.State["manager"].(*ctrl.Control[*zero.Ctx]) if ok && c.GetData(ctx.Event.GroupID)&0x10 == 0x10 && ctx.Event.RequestType == "group" && ctx.Event.SubType == "add" { // gist 文件名是群号的 ascii 编码的 md5 // gist 内容是当前 uinx 时间戳,在 10 分钟内视为有效 diff --git a/plugin/moyu/run.go b/plugin/moyu/run.go index eb4d2c50..2c3f604e 100644 --- a/plugin/moyu/run.go +++ b/plugin/moyu/run.go @@ -5,6 +5,7 @@ import ( "sync" "time" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" zero "github.com/wdvxdr1123/ZeroBot" "github.com/wdvxdr1123/ZeroBot/message" @@ -17,7 +18,7 @@ var ( ) func init() { // 插件主体 - control.Register("moyu", &control.Options{ + control.Register("moyu", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: true, Help: "moyu\n" + "- /启用 moyu\n" + diff --git a/plugin/moyu_calendar/calendar.go b/plugin/moyu_calendar/calendar.go index 602dd69c..1783ac2e 100644 --- a/plugin/moyu_calendar/calendar.go +++ b/plugin/moyu_calendar/calendar.go @@ -2,6 +2,7 @@ package moyucalendar import ( + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/web" zero "github.com/wdvxdr1123/ZeroBot" @@ -9,7 +10,7 @@ import ( ) func init() { - control.Register("moyucalendar", &control.Options{ + control.Register("moyucalendar", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: true, Help: "摸鱼人日历\n" + "- /启用 moyucalendar\n" + diff --git a/plugin/music/selecter.go b/plugin/music/selecter.go index 254afb8e..4b806291 100644 --- a/plugin/music/selecter.go +++ b/plugin/music/selecter.go @@ -13,6 +13,7 @@ import ( "github.com/FloatTech/zbputils/web" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/tidwall/gjson" @@ -21,7 +22,7 @@ import ( ) func init() { - control.Register("music", &control.Options{ + control.Register("music", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "点歌\n" + "- 点歌[xxx]\n" + diff --git a/plugin/nativesetu/main.go b/plugin/nativesetu/main.go index 08e75ba1..6893301c 100644 --- a/plugin/nativesetu/main.go +++ b/plugin/nativesetu/main.go @@ -10,6 +10,7 @@ import ( "github.com/wdvxdr1123/ZeroBot/message" "github.com/wdvxdr1123/ZeroBot/utils/helper" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/file" @@ -20,7 +21,7 @@ var ( ) func init() { - engine := control.Register("nativesetu", &control.Options{ + engine := control.Register("nativesetu", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "本地涩图\n" + "- 本地[xxx]\n" + diff --git a/plugin/nativewife/main.go b/plugin/nativewife/main.go index 105f44a6..93dfd1ce 100644 --- a/plugin/nativewife/main.go +++ b/plugin/nativewife/main.go @@ -16,12 +16,13 @@ import ( "github.com/wdvxdr1123/ZeroBot/message" "github.com/wdvxdr1123/ZeroBot/utils/helper" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/file" ) func init() { - engine := control.Register("nwife", &control.Options{ + engine := control.Register("nwife", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "nativewife\n- 抽wife[@xxx]\n- 添加wife[名字][图片]\n- 删除wife[名字]\n- [让 | 不让]所有人均可添加wife", PrivateDataFolder: "nwife", @@ -123,9 +124,9 @@ func init() { var err error switch text { case "设置", "授予", "让": - err = setEveryoneCanAddWife(ctx.Event.GroupID, true) + err = setEveryoneCanAddWife(ctx, true) case "取消", "撤销", "不让": - err = setEveryoneCanAddWife(ctx.Event.GroupID, false) + err = setEveryoneCanAddWife(ctx, false) } if err == nil { ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text("成功!")) @@ -138,7 +139,7 @@ func init() { func chkAddWifePermission(ctx *zero.Ctx) bool { gid := ctx.Event.GroupID if gid > 0 { - m, ok := control.Lookup("nwife") + m, ok := ctx.State["manager"].(*ctrl.Control[*zero.Ctx]) if ok { data := m.GetData(gid) if data&1 == 1 { @@ -150,13 +151,13 @@ func chkAddWifePermission(ctx *zero.Ctx) bool { return false } -func setEveryoneCanAddWife(gid int64, canadd bool) error { - m, ok := control.Lookup("nwife") +func setEveryoneCanAddWife(ctx *zero.Ctx, canadd bool) error { + m, ok := ctx.State["manager"].(*ctrl.Control[*zero.Ctx]) if ok { if canadd { - return m.SetData(gid, 1) + return m.SetData(ctx.Event.GroupID, 1) } - return m.SetData(gid, 0) + return m.SetData(ctx.Event.GroupID, 0) } return errors.New("no such plugin") } diff --git a/plugin/nbnhhsh/nbnhhsh.go b/plugin/nbnhhsh/nbnhhsh.go index e364be2a..8e5dcd9c 100644 --- a/plugin/nbnhhsh/nbnhhsh.go +++ b/plugin/nbnhhsh/nbnhhsh.go @@ -7,6 +7,7 @@ import ( "net/url" "strings" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/tidwall/gjson" zero "github.com/wdvxdr1123/ZeroBot" @@ -14,7 +15,7 @@ import ( ) func init() { - control.Register("nbnhhsh", &control.Options{ + control.Register("nbnhhsh", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "拼音首字母释义工具\n- ?? [缩写]", }).OnRegex(`^[??]{1,2} ?([a-z0-9]+)$`).SetBlock(false). diff --git a/plugin/novel/qianbi.go b/plugin/novel/qianbi.go index e06077d0..6a4aa777 100644 --- a/plugin/novel/qianbi.go +++ b/plugin/novel/qianbi.go @@ -15,6 +15,7 @@ import ( "github.com/wdvxdr1123/ZeroBot/message" "github.com/wdvxdr1123/ZeroBot/utils/helper" + ctrl "github.com/FloatTech/zbpctrl" ub "github.com/FloatTech/zbputils/binary" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" @@ -37,7 +38,7 @@ const ( var gCurCookieJar *cookiejar.Jar func init() { - control.Register("novel", &control.Options{ + control.Register("novel", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "铅笔小说网搜索\n- 小说[xxx]", }).OnRegex("^小说([\u4E00-\u9FA5A-Za-z0-9]{1,25})$").SetBlock(true).Limit(ctxext.LimitByUser). diff --git a/plugin/nsfw/main.go b/plugin/nsfw/main.go index e82ef9c4..76187407 100644 --- a/plugin/nsfw/main.go +++ b/plugin/nsfw/main.go @@ -3,6 +3,7 @@ package nsfw import ( "github.com/FloatTech/AnimeAPI/nsfw" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/process" @@ -13,7 +14,7 @@ import ( const hso = "https://gchat.qpic.cn/gchatpic_new//--4234EDEC5F147A4C319A41149D7E0EA9/0" func init() { - engine := control.Register("nsfw", &control.Options{ + engine := control.Register("nsfw", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "nsfw图片识别\n- nsfw打分[图片]", }).ApplySingle(ctxext.DefaultSingle) @@ -31,7 +32,7 @@ func init() { ctx.Send(message.ReplyWithMessage(ctx.Event.MessageID, message.Text(judge(p)))) } }) - control.Register("nsfwauto", &control.Options{ + control.Register("nsfwauto", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: true, Help: "nsfw图片自动识别\n- 当图片属于非 neutral 类别时自动发送评价", }).OnMessage(zero.HasPicture).SetBlock(false). diff --git a/plugin/omikuji/sensou.go b/plugin/omikuji/sensou.go index 66b3d371..c988323f 100644 --- a/plugin/omikuji/sensou.go +++ b/plugin/omikuji/sensou.go @@ -9,6 +9,7 @@ import ( "github.com/wdvxdr1123/ZeroBot/message" "github.com/wdvxdr1123/ZeroBot/utils/helper" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/img/text" @@ -17,7 +18,7 @@ import ( const bed = "https://gitcode.net/u011570312/senso-ji-omikuji/-/raw/main/%d_%d.jpg" func init() { // 插件主体 - engine := control.Register("omikuji", &control.Options{ + engine := control.Register("omikuji", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "浅草寺求签\n" + "- 求签 | 占卜\n- 解签", diff --git a/plugin/qqwife/qqmapwife.go b/plugin/qqwife/qqmapwife.go index 1bf74cb1..c1d03d3f 100644 --- a/plugin/qqwife/qqmapwife.go +++ b/plugin/qqwife/qqmapwife.go @@ -11,6 +11,7 @@ import ( zero "github.com/wdvxdr1123/ZeroBot" "github.com/wdvxdr1123/ZeroBot/message" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/binary" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" @@ -151,7 +152,7 @@ var ( ) func init() { - engine := control.Register("qqwife", &control.Options{ + engine := control.Register("qqwife", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "一群一天一夫一妻制群老婆\n(每天凌晨刷新CP)\n" + "- 娶群友\n- 群老婆列表\n" + diff --git a/plugin/reborn/main.go b/plugin/reborn/main.go index 1c8e7806..bc1268cf 100644 --- a/plugin/reborn/main.go +++ b/plugin/reborn/main.go @@ -5,6 +5,7 @@ import ( "fmt" "math/rand" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" wr "github.com/mroth/weightedrand" @@ -14,7 +15,7 @@ import ( ) func init() { - en := control.Register("reborn", &control.Options{ + en := control.Register("reborn", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "投胎\n- reborn", PublicDataFolder: "Reborn", diff --git a/plugin/runcode/code_runner.go b/plugin/runcode/code_runner.go index 0c43e6c2..ad51c419 100644 --- a/plugin/runcode/code_runner.go +++ b/plugin/runcode/code_runner.go @@ -9,6 +9,7 @@ import ( "strings" "time" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" zero "github.com/wdvxdr1123/ZeroBot" @@ -91,7 +92,7 @@ var ( ) func init() { - control.Register("runcode", &control.Options{ + control.Register("runcode", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "在线代码运行: \n" + ">runcode [language] [code block]\n" + diff --git a/plugin/saucenao/searcher.go b/plugin/saucenao/searcher.go index 23bea645..2decbc55 100644 --- a/plugin/saucenao/searcher.go +++ b/plugin/saucenao/searcher.go @@ -16,6 +16,7 @@ import ( "github.com/FloatTech/AnimeAPI/pixiv" "github.com/jozsefsallai/gophersauce" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/binary" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" @@ -28,7 +29,7 @@ var ( ) func init() { // 插件主体 - engine := control.Register("saucenao", &control.Options{ + engine := control.Register("saucenao", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "搜图\n" + "- 以图搜图 | 搜索图片 | 以图识图[图片]\n" + diff --git a/plugin/scale/main.go b/plugin/scale/main.go index 3bb41914..cde0be3e 100644 --- a/plugin/scale/main.go +++ b/plugin/scale/main.go @@ -21,6 +21,7 @@ import ( "github.com/FloatTech/AnimeAPI/nsfw" "github.com/FloatTech/AnimeAPI/scale" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/binary" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" @@ -31,7 +32,7 @@ import ( ) func init() { - engine := control.Register("scale", &control.Options{ + engine := control.Register("scale", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "叔叔的AI二次元图片放大\n- 放大图片[图片]", PrivateDataFolder: "scale", diff --git a/plugin/score/sign_in.go b/plugin/score/sign_in.go index a1803d12..1d59a1a0 100644 --- a/plugin/score/sign_in.go +++ b/plugin/score/sign_in.go @@ -15,6 +15,7 @@ import ( zero "github.com/wdvxdr1123/ZeroBot" "github.com/wdvxdr1123/ZeroBot/message" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/binary" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" @@ -37,7 +38,7 @@ const ( var levelArray = [...]int{0, 1, 2, 5, 10, 20, 35, 55, 75, 100, 120} func init() { - engine := control.Register("score", &control.Options{ + engine := control.Register("score", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "签到得分\n- 签到\n- 获得签到背景[@xxx] | 获得签到背景\n- 查看分数排名", PrivateDataFolder: "score", diff --git a/plugin/setutime/setu_geter.go b/plugin/setutime/setu_geter.go index e8f9dbbc..9d9cd7e4 100644 --- a/plugin/setutime/setu_geter.go +++ b/plugin/setutime/setu_geter.go @@ -10,6 +10,7 @@ import ( "github.com/FloatTech/AnimeAPI/pixiv" sql "github.com/FloatTech/sqlite" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" fileutil "github.com/FloatTech/zbputils/file" @@ -49,7 +50,7 @@ var pool = &imgpool{ } func init() { // 插件主体 - engine := control.Register("setutime", &control.Options{ + engine := control.Register("setutime", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "涩图\n" + "- 来份[涩图/二次元/风景/车万]\n" + diff --git a/plugin/shadiao/shadiao.go b/plugin/shadiao/shadiao.go index 07fb913e..8dacb01b 100644 --- a/plugin/shadiao/shadiao.go +++ b/plugin/shadiao/shadiao.go @@ -2,6 +2,7 @@ package shadiao import ( + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/web" @@ -25,7 +26,7 @@ const ( ) var ( - engine = control.Register("shadiao", &control.Options{ + engine = control.Register("shadiao", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "沙雕app\n" + "- 哄我\n- 渣我\n- 来碗绿茶\n- 发个朋友圈\n- 来碗毒鸡汤\n- 讲个段子\n- 马丁路德骂我\n", diff --git a/plugin/shindan/shindan.go b/plugin/shindan/shindan.go index 1c82916c..f2cd479a 100644 --- a/plugin/shindan/shindan.go +++ b/plugin/shindan/shindan.go @@ -7,13 +7,14 @@ import ( "github.com/wdvxdr1123/ZeroBot/message" "github.com/wdvxdr1123/ZeroBot/utils/helper" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/img/text" ) func init() { - engine := control.Register("shindan", &control.Options{ + engine := control.Register("shindan", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "shindan\n" + "- 今天是什么少女[@xxx]\n" + diff --git a/plugin/sleep_manage/sleep_manage.go b/plugin/sleep_manage/sleep_manage.go index 13fee1aa..7927d4c8 100644 --- a/plugin/sleep_manage/sleep_manage.go +++ b/plugin/sleep_manage/sleep_manage.go @@ -9,11 +9,12 @@ import ( zero "github.com/wdvxdr1123/ZeroBot" "github.com/wdvxdr1123/ZeroBot/message" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" ) func init() { - engine := control.Register("sleepmanage", &control.Options{ + engine := control.Register("sleepmanage", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "sleepmanage\n- 早安\n- 晚安", PrivateDataFolder: "sleep", diff --git a/plugin/tarot/tarot.go b/plugin/tarot/tarot.go index 204bbdb7..f019fdc1 100644 --- a/plugin/tarot/tarot.go +++ b/plugin/tarot/tarot.go @@ -8,6 +8,7 @@ import ( "strconv" "strings" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/sirupsen/logrus" @@ -34,7 +35,7 @@ var infoMap = make(map[string]cardInfo, 30) // var cardName = make([]string, 22) func init() { - engine := control.Register("tarot", &control.Options{ + engine := control.Register("tarot", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "塔罗牌\n" + "- 抽塔罗牌\n" + diff --git a/plugin/thesaurus/chat.go b/plugin/thesaurus/chat.go index 048789b9..d583a673 100644 --- a/plugin/thesaurus/chat.go +++ b/plugin/thesaurus/chat.go @@ -5,6 +5,7 @@ import ( "encoding/json" "math/rand" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/sirupsen/logrus" zero "github.com/wdvxdr1123/ZeroBot" @@ -14,7 +15,7 @@ import ( type kimo = map[string]*[]string func init() { - engine := control.Register("thesaurus", &control.Options{ + engine := control.Register("thesaurus", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "thesaurus\n- 词典匹配回复", PublicDataFolder: "Chat", diff --git a/plugin/tiangou/tiangou.go b/plugin/tiangou/tiangou.go index 68070389..2274de88 100644 --- a/plugin/tiangou/tiangou.go +++ b/plugin/tiangou/tiangou.go @@ -3,6 +3,7 @@ package tiangou import ( sql "github.com/FloatTech/sqlite" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/sirupsen/logrus" @@ -18,7 +19,7 @@ type tiangou struct { var db = &sql.Sqlite{} func init() { - en := control.Register("tiangou", &control.Options{ + en := control.Register("tiangou", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "舔狗日记\n" + "- 舔狗日记", diff --git a/plugin/tracemoe/moe.go b/plugin/tracemoe/moe.go index 1f63a983..852ce9cc 100644 --- a/plugin/tracemoe/moe.go +++ b/plugin/tracemoe/moe.go @@ -2,6 +2,7 @@ package tracemoe import ( + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" trmoe "github.com/fumiama/gotracemoe" zero "github.com/wdvxdr1123/ZeroBot" @@ -13,7 +14,7 @@ var ( ) func init() { // 插件主体 - engine := control.Register("tracemoe", &control.Options{ + engine := control.Register("tracemoe", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "tracemoe\n- 搜番 | 搜索番剧[图片]", }) diff --git a/plugin/translation/tl.go b/plugin/translation/tl.go index 75775a6f..9e8e589e 100644 --- a/plugin/translation/tl.go +++ b/plugin/translation/tl.go @@ -3,6 +3,7 @@ package translation import ( "github.com/FloatTech/AnimeAPI/tl" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" zero "github.com/wdvxdr1123/ZeroBot" @@ -10,7 +11,7 @@ import ( ) func init() { - control.Register("translation", &control.Options{ + control.Register("translation", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "翻译\n" + ">TL 你好", diff --git a/plugin/vtb_quotation/vtb_quotation.go b/plugin/vtb_quotation/vtb_quotation.go index 9f467272..40dee1ce 100644 --- a/plugin/vtb_quotation/vtb_quotation.go +++ b/plugin/vtb_quotation/vtb_quotation.go @@ -18,6 +18,7 @@ import ( "github.com/wdvxdr1123/ZeroBot/message" "github.com/wdvxdr1123/ZeroBot/utils/helper" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/file" @@ -30,7 +31,7 @@ import ( var reg = regexp.MustCompile(".*/(.*)") func init() { - engine := control.Register("vtbquotation", &control.Options{ + engine := control.Register("vtbquotation", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "vtbkeyboard.moe\n- vtb语录\n- 随机vtb\n- 更新vtb\n", PublicDataFolder: "VtbQuotation", diff --git a/plugin/wangyiyun/main.go b/plugin/wangyiyun/main.go index 0a85b483..246f752a 100644 --- a/plugin/wangyiyun/main.go +++ b/plugin/wangyiyun/main.go @@ -2,6 +2,7 @@ package wangyiyun import ( + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/web" @@ -17,7 +18,7 @@ const ( ) func init() { - control.Register("wangyiyun", &control.Options{ + control.Register("wangyiyun", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "wangyiyun \n- 来份网易云热评", }).OnFullMatch("来份网易云热评").SetBlock(true).Limit(ctxext.LimitByUser). diff --git a/plugin/word_count/word_count.go b/plugin/word_count/word_count.go index c169ade0..b8c96a7a 100644 --- a/plugin/word_count/word_count.go +++ b/plugin/word_count/word_count.go @@ -11,6 +11,7 @@ import ( "sync" "time" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/binary" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" @@ -30,7 +31,7 @@ var ( ) func init() { - engine := control.Register("wordcount", &control.Options{ + engine := control.Register("wordcount", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "聊天热词\n" + "- 热词 [群号] [消息数目]|热词 123456 1000", diff --git a/plugin/wordle/wordle.go b/plugin/wordle/wordle.go index 63d4b552..5325fb94 100644 --- a/plugin/wordle/wordle.go +++ b/plugin/wordle/wordle.go @@ -14,6 +14,7 @@ import ( "github.com/FloatTech/AnimeAPI/tl" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/binary" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" @@ -59,7 +60,7 @@ type dictionary map[int]struct { var words = make(dictionary) func init() { - en := control.Register("wordle", &control.Options{ + en := control.Register("wordle", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "猜单词\n" + "- 个人猜单词\n" + diff --git a/plugin/wtf/main.go b/plugin/wtf/main.go index a6daefac..7c5c18c7 100644 --- a/plugin/wtf/main.go +++ b/plugin/wtf/main.go @@ -5,6 +5,7 @@ import ( "fmt" "strconv" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" zero "github.com/wdvxdr1123/ZeroBot" @@ -12,7 +13,7 @@ import ( ) func init() { - en := control.Register("wtf", &control.Options{ + en := control.Register("wtf", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "鬼东西\n- 鬼东西列表\n- 查询鬼东西[序号][@xxx]", }) diff --git a/plugin/ymgal/ymgal.go b/plugin/ymgal/ymgal.go index ebb902b8..ff181597 100644 --- a/plugin/ymgal/ymgal.go +++ b/plugin/ymgal/ymgal.go @@ -4,6 +4,7 @@ package ymgal import ( "strings" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" zero "github.com/wdvxdr1123/ZeroBot" @@ -11,7 +12,7 @@ import ( ) func init() { - engine := control.Register("ymgal", &control.Options{ + engine := control.Register("ymgal", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Help: "月幕galgame\n- 随机galCG\n- 随机gal表情包\n- galCG[xxx]\n- gal表情包[xxx]\n- 更新gal\n", PublicDataFolder: "Ymgal", diff --git a/plugin/zaobao/zaobao.go b/plugin/zaobao/zaobao.go index 92e05e88..5d76a7e0 100644 --- a/plugin/zaobao/zaobao.go +++ b/plugin/zaobao/zaobao.go @@ -9,6 +9,7 @@ import ( zero "github.com/wdvxdr1123/ZeroBot" "github.com/wdvxdr1123/ZeroBot/message" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/binary" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/web" @@ -27,7 +28,7 @@ var ( ) func init() { // 插件主体 - engine := control.Register("zaobao", &control.Options{ + engine := control.Register("zaobao", &ctrl.Options[*zero.Ctx]{ DisableOnDefault: true, Help: "易即今日公众号api的今日早报\n" + "api早上8点更新,推荐定时在8点30后\n" +