From 0c8e9198eea18d4ecb0356f99bf35319dcad4c53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Wed, 11 Jan 2023 14:47:05 +0800 Subject: [PATCH] fix: atri & v1.6.1-beta5 --- go.mod | 6 +-- go.sum | 12 ++--- kanban/banner.go | 4 +- plugin/atri/atri.go | 89 +++++++++++++++++-------------- plugin/bilibili/bilibili.go | 2 +- plugin/bilibili/bilibili_parse.go | 2 +- plugin/bilibili/bilibilipush.go | 4 +- plugin/coser/coser.go | 2 +- plugin/gif/context.go | 4 +- plugin/heisi/heisi.go | 2 +- plugin/hs/run.go | 10 ++-- plugin/hyaku/main.go | 64 ++++++++-------------- plugin/image_finder/keyword.go | 3 +- plugin/music/selecter.go | 2 +- plugin/qzone/qzone.go | 2 +- plugin/saucenao/searcher.go | 4 +- plugin/shadiao/shadiao.go | 2 +- plugin/shadiao/sweetnothings.go | 4 +- plugin/shadiao/yduanzi.go | 2 +- plugin/tarot/tarot.go | 4 +- plugin/wangyiyun/main.go | 2 +- 21 files changed, 108 insertions(+), 118 deletions(-) diff --git a/go.mod b/go.mod index cf8c2c3d..e9d7a95d 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.6.1-0.20230109140531-ffbc8b39ad14 - github.com/FloatTech/floatbox v0.0.0-20230109123116-c544925718fe + github.com/FloatTech/AnimeAPI v1.6.1-0.20230111055153-4d8aebd3eab9 + github.com/FloatTech/floatbox v0.0.0-20230111053652-a03d6334fadf github.com/FloatTech/sqlite v1.5.7 github.com/FloatTech/ttl v0.0.0-20220715042055-15612be72f5b github.com/FloatTech/zbpctrl v1.5.3-0.20230109124217-41203036b80a - github.com/FloatTech/zbputils v1.6.1-0.20230109125328-bf06bab484de + github.com/FloatTech/zbputils v1.6.1 github.com/RomiChan/syncx v0.0.0-20221202055724-5f842c53020e github.com/RomiChan/websocket v1.4.3-0.20220227141055-9b2c6168c9c5 github.com/antchfx/htmlquery v1.2.5 diff --git a/go.sum b/go.sum index 5658316b..ad13307d 100644 --- a/go.sum +++ b/go.sum @@ -4,10 +4,10 @@ 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.6.1-0.20230109140531-ffbc8b39ad14 h1:lqlurSjFYrUwDjhO9jH4y6gARZE8ebk+E2xmSfXLbTQ= -github.com/FloatTech/AnimeAPI v1.6.1-0.20230109140531-ffbc8b39ad14/go.mod h1:gAV8BewrVPCc7VptvbRsCbuYEx33QQbMfajaO6NgsU0= -github.com/FloatTech/floatbox v0.0.0-20230109123116-c544925718fe h1:PJi6gIqSTnepn1wmGA/AeU4M+HPOiIUgQMYYfuK59YI= -github.com/FloatTech/floatbox v0.0.0-20230109123116-c544925718fe/go.mod h1:0+3iDgifrdiEoEsmYe+yiAlUQcmnudhTiiBdSkam2XY= +github.com/FloatTech/AnimeAPI v1.6.1-0.20230111055153-4d8aebd3eab9 h1:TOd10BBqoHPwbOmULK4a6imdaljkOxKIZFyFKbQqTEA= +github.com/FloatTech/AnimeAPI v1.6.1-0.20230111055153-4d8aebd3eab9/go.mod h1:aOU5EVMvflX5Btv0jGLgB6gcSYeR/FNiR2cJG07vd4U= +github.com/FloatTech/floatbox v0.0.0-20230111053652-a03d6334fadf h1:aVmgzw9hJA39/2iR800qq1dU682LpW9/czIkoshDzKw= +github.com/FloatTech/floatbox v0.0.0-20230111053652-a03d6334fadf/go.mod h1:0+3iDgifrdiEoEsmYe+yiAlUQcmnudhTiiBdSkam2XY= github.com/FloatTech/rendercard v0.0.3 h1:eKOKlmotlDq/YbAcJKe0GMzBjGTsT5eSsyEfjT+hy10= github.com/FloatTech/rendercard v0.0.3/go.mod h1:FwwKoWpv1fW7AZ1mwBVWF8GCH9mEqYYIE9LzdmozCZQ= github.com/FloatTech/sqlite v1.5.7 h1:Bvo4LSojcZ6dVtbHrkqvt6z4v8e+sj0G5PSUIvdawsk= @@ -16,8 +16,8 @@ github.com/FloatTech/ttl v0.0.0-20220715042055-15612be72f5b h1:tvciXWq2nuvTbFeJG github.com/FloatTech/ttl v0.0.0-20220715042055-15612be72f5b/go.mod h1:fHZFWGquNXuHttu9dUYoKuNbm3dzLETnIOnm1muSfDs= github.com/FloatTech/zbpctrl v1.5.3-0.20230109124217-41203036b80a h1:O+GS8J1pEM4E8q05EcopHBK6kfIr0BJJ/cHuPa8yWLM= github.com/FloatTech/zbpctrl v1.5.3-0.20230109124217-41203036b80a/go.mod h1:UT3bZNKMF/+r2XzSvIVXWudnTgmWsQrRPOJ3bmBfjFI= -github.com/FloatTech/zbputils v1.6.1-0.20230109125328-bf06bab484de h1:8QYhYSqcnLOoyyW6tbduO/oBbTD99VayTDFhrjLM4BQ= -github.com/FloatTech/zbputils v1.6.1-0.20230109125328-bf06bab484de/go.mod h1:PJrojrMeyK11qAy6mYQbRgM1OaPqvh7/PIiBCDNFt4c= +github.com/FloatTech/zbputils v1.6.1 h1:VcufWTkZl8ny4aB6leJ+CE4TS6OdA4i4zeKgYQdx97c= +github.com/FloatTech/zbputils v1.6.1/go.mod h1:IrPicT+CKYW2ZwPlG//DSNG7bHAQAII2mNyETnRQDG4= github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc= github.com/RomiChan/syncx v0.0.0-20221202055724-5f842c53020e h1:wR3MXQ3VbUlPKOOUwLOYgh/QaJThBTYtsl673O3lqSA= github.com/RomiChan/syncx v0.0.0-20221202055724-5f842c53020e/go.mod h1:vD7Ra3Q9onRtojoY5sMCLQ7JBgjUsrXDnDKyFxqpf9w= diff --git a/kanban/banner.go b/kanban/banner.go index 79c1ba7b..a7a43932 100644 --- a/kanban/banner.go +++ b/kanban/banner.go @@ -1,10 +1,10 @@ package kanban // Version ... -var Version = "v1.6.1-beta4" +var Version = "v1.6.1-beta5" // Banner ... var Banner = "* OneBot + ZeroBot + Golang\n" + - "* Version " + Version + " - 2023-01-09 21:14:12 +0800 CST\n" + + "* Version " + Version + " - 2023-01-11 14:46:24 +0800 CST\n" + "* Copyright © 2020 - 2023 FloatTech. All Rights Reserved.\n" + "* Project: https://github.com/FloatTech/ZeroBot-Plugin" diff --git a/plugin/atri/atri.go b/plugin/atri/atri.go index 71bfafd3..c5274ff1 100644 --- a/plugin/atri/atri.go +++ b/plugin/atri/atri.go @@ -6,6 +6,7 @@ Package atri 本文件基于 https://github.com/Kyomotoi/ATRI package atri import ( + "encoding/base64" "math/rand" "time" @@ -17,7 +18,35 @@ import ( "github.com/FloatTech/zbputils/control" ) -const res = "https://gitcode.net/u011570312/zbpdata/-/raw/main/Atri/" +type datagetter func(string, bool) ([]byte, error) + +func (dgtr datagetter) randImage(file ...string) message.MessageSegment { + data, err := dgtr(file[rand.Intn(len(file))], true) + if err != nil { + return message.Text("ERROR: ", err) + } + return message.ImageBytes(data) +} + +func (dgtr datagetter) randRecord(file ...string) message.MessageSegment { + data, err := dgtr(file[rand.Intn(len(file))], true) + if err != nil { + return message.Text("ERROR: ", err) + } + return message.Record("base64://" + base64.StdEncoding.EncodeToString(data)) +} + +func randText(text ...string) message.MessageSegment { + return message.Text(text[rand.Intn(len(text))]) +} + +// isAtriSleeping 凌晨0点到6点,ATRI 在睡觉,不回应任何请求 +func isAtriSleeping(ctx *zero.Ctx) bool { + if now := time.Now().Hour(); now >= 1 && now < 6 { + return false + } + return true +} func init() { // 插件主体 engine := control.Register("atri", &ctrl.Options[*zero.Ctx]{ @@ -38,25 +67,27 @@ func init() { // 插件主体 ctx.SendChain(message.Text("Zzz……Zzz……")) }, }) - engine.OnFullMatch("萝卜子", isAtriSleeping).SetBlock(true). + engine.UsePreHandler(isAtriSleeping) + var dgtr datagetter = engine.GetLazyData + engine.OnFullMatch("萝卜子").SetBlock(true). Handle(func(ctx *zero.Ctx) { process.SleepAbout1sTo2s() switch rand.Intn(2) { case 0: ctx.SendChain(randText("萝卜子是对机器人的蔑称!", "是亚托莉......萝卜子可是对机器人的蔑称")) case 1: - ctx.SendChain(randRecord("RocketPunch.amr")) + ctx.SendChain(dgtr.randRecord("RocketPunch.amr")) } }) - engine.OnFullMatchGroup([]string{"喜欢", "爱你", "爱", "suki", "daisuki", "すき", "好き", "贴贴", "老婆", "亲一个", "mua"}, isAtriSleeping, zero.OnlyToMe).SetBlock(true). + engine.OnFullMatchGroup([]string{"喜欢", "爱你", "爱", "suki", "daisuki", "すき", "好き", "贴贴", "老婆", "亲一个", "mua"}, zero.OnlyToMe).SetBlock(true). Handle(func(ctx *zero.Ctx) { process.SleepAbout1sTo2s() - ctx.SendChain(randImage("SUKI.jpg", "SUKI1.jpg", "SUKI2.png")) + ctx.SendChain(dgtr.randImage("SUKI.jpg", "SUKI1.jpg", "SUKI2.png")) }) - engine.OnKeywordGroup([]string{"草你妈", "操你妈", "脑瘫", "废柴", "fw", "five", "废物", "战斗", "爬", "爪巴", "sb", "SB", "傻B"}, isAtriSleeping, zero.OnlyToMe).SetBlock(true). + engine.OnKeywordGroup([]string{"草你妈", "操你妈", "脑瘫", "废柴", "fw", "five", "废物", "战斗", "爬", "爪巴", "sb", "SB", "傻B"}, zero.OnlyToMe).SetBlock(true). Handle(func(ctx *zero.Ctx) { process.SleepAbout1sTo2s() - ctx.SendChain(randImage("FN.jpg", "WQ.jpg", "WQ1.jpg")) + ctx.SendChain(dgtr.randImage("FN.jpg", "WQ.jpg", "WQ1.jpg")) }) engine.OnFullMatchGroup([]string{"早安", "早哇", "早上好", "ohayo", "哦哈哟", "お早う", "早好", "早", "早早早"}).SetBlock(true). Handle(func(ctx *zero.Ctx) { @@ -154,7 +185,7 @@ func init() { // 插件主体 )) } }) - engine.OnKeywordGroup([]string{"高性能", "太棒了", "すごい", "sugoi", "斯国一", "よかった"}, isAtriSleeping, zero.OnlyToMe).SetBlock(true). + engine.OnKeywordGroup([]string{"高性能", "太棒了", "すごい", "sugoi", "斯国一", "よかった"}, zero.OnlyToMe).SetBlock(true). Handle(func(ctx *zero.Ctx) { process.SleepAbout1sTo2s() ctx.SendChain(randText( @@ -175,7 +206,7 @@ func init() { // 插件主体 "呣......我的高性能,毫无遗憾地施展出来了......", )) }) - engine.OnKeywordGroup([]string{"没事", "没关系", "大丈夫", "还好", "不要紧", "没出大问题", "没伤到哪"}, isAtriSleeping, zero.OnlyToMe).SetBlock(true). + engine.OnKeywordGroup([]string{"没事", "没关系", "大丈夫", "还好", "不要紧", "没出大问题", "没伤到哪"}, zero.OnlyToMe).SetBlock(true). Handle(func(ctx *zero.Ctx) { process.SleepAbout1sTo2s() ctx.SendChain(randText( @@ -190,67 +221,47 @@ func init() { // 插件主体 )) }) - engine.OnKeywordGroup([]string{"好吗", "是吗", "行不行", "能不能", "可不可以"}, isAtriSleeping).SetBlock(true). + engine.OnKeywordGroup([]string{"好吗", "是吗", "行不行", "能不能", "可不可以"}).SetBlock(true). Handle(func(ctx *zero.Ctx) { process.SleepAbout1sTo2s() if rand.Intn(2) == 0 { - ctx.SendChain(randImage("YES.png", "NO.jpg")) + ctx.SendChain(dgtr.randImage("YES.png", "NO.jpg")) } }) - engine.OnKeywordGroup([]string{"啊这"}, isAtriSleeping).SetBlock(true). + engine.OnKeywordGroup([]string{"啊这"}).SetBlock(true). Handle(func(ctx *zero.Ctx) { process.SleepAbout1sTo2s() if rand.Intn(2) == 0 { - ctx.SendChain(randImage("AZ.jpg", "AZ1.jpg")) + ctx.SendChain(dgtr.randImage("AZ.jpg", "AZ1.jpg")) } }) - engine.OnKeywordGroup([]string{"我好了"}, isAtriSleeping).SetBlock(true). + engine.OnKeywordGroup([]string{"我好了"}).SetBlock(true). Handle(func(ctx *zero.Ctx) { process.SleepAbout1sTo2s() ctx.SendChain(message.Reply(ctx.Event.MessageID), randText("不许好!", "憋回去!")) }) - engine.OnFullMatchGroup([]string{"?", "?", "¿"}, isAtriSleeping).SetBlock(true). + engine.OnFullMatchGroup([]string{"?", "?", "¿"}).SetBlock(true). Handle(func(ctx *zero.Ctx) { process.SleepAbout1sTo2s() switch rand.Intn(5) { case 0: ctx.SendChain(randText("?", "?", "嗯?", "(。´・ω・)ん?", "ん?")) case 1, 2: - ctx.SendChain(randImage("WH.jpg", "WH1.jpg", "WH2.jpg", "WH3.jpg")) + ctx.SendChain(dgtr.randImage("WH.jpg", "WH1.jpg", "WH2.jpg", "WH3.jpg")) } }) - engine.OnKeyword("离谱", isAtriSleeping).SetBlock(true). + engine.OnKeyword("离谱").SetBlock(true). Handle(func(ctx *zero.Ctx) { switch rand.Intn(5) { case 0: ctx.SendChain(randText("?", "?", "嗯?", "(。´・ω・)ん?", "ん?")) case 1, 2: - ctx.SendChain(randImage("WH.jpg")) + ctx.SendChain(dgtr.randImage("WH.jpg")) } }) - engine.OnKeyword("答应我", isAtriSleeping, zero.OnlyToMe).SetBlock(true). + engine.OnKeyword("答应我", zero.OnlyToMe).SetBlock(true). Handle(func(ctx *zero.Ctx) { process.SleepAbout1sTo2s() ctx.SendChain(randText("我无法回应你的请求")) }) } - -func randText(text ...string) message.MessageSegment { - return message.Text(text[rand.Intn(len(text))]) -} - -func randImage(file ...string) message.MessageSegment { - return message.Image(res + file[rand.Intn(len(file))]) -} - -func randRecord(file ...string) message.MessageSegment { - return message.Record(res + file[rand.Intn(len(file))]) -} - -// isAtriSleeping 凌晨0点到6点,ATRI 在睡觉,不回应任何请求 -func isAtriSleeping(ctx *zero.Ctx) bool { - if now := time.Now().Hour(); now >= 1 && now < 6 { - return false - } - return true -} diff --git a/plugin/bilibili/bilibili.go b/plugin/bilibili/bilibili.go index 73500a23..cb6d1c14 100644 --- a/plugin/bilibili/bilibili.go +++ b/plugin/bilibili/bilibili.go @@ -291,7 +291,7 @@ func init() { } client := &http.Client{Transport: tr} - data, err := web.RequestDataWith(client, fmt.Sprintf(bz.DanmakuAPI, id, pagenum), "GET", "", web.RandUA()) + data, err := web.RequestDataWith(client, fmt.Sprintf(bz.DanmakuAPI, id, pagenum), "GET", "", web.RandUA(), nil) if err != nil { ctx.SendChain(message.Text("ERROR: ", err)) return diff --git a/plugin/bilibili/bilibili_parse.go b/plugin/bilibili/bilibili_parse.go index 34a92c7f..8d3aff62 100644 --- a/plugin/bilibili/bilibili_parse.go +++ b/plugin/bilibili/bilibili_parse.go @@ -35,7 +35,7 @@ func init() { en.OnRegex(`((b23|acg).tv|bili2233.cn)/[0-9a-zA-Z]+`).SetBlock(true).Limit(limit.LimitByGroup). Handle(func(ctx *zero.Ctx) { url := ctx.State["regex_matched"].([]string)[0] - realurl, err := bz.GetRealUrl("https://" + url) + realurl, err := bz.GetRealURL("https://" + url) if err != nil { ctx.SendChain(message.Text("ERROR: ", err)) return diff --git a/plugin/bilibili/bilibilipush.go b/plugin/bilibili/bilibilipush.go index e2f6ee3e..2b87afda 100644 --- a/plugin/bilibili/bilibilipush.go +++ b/plugin/bilibili/bilibilipush.go @@ -175,7 +175,7 @@ func getName(buid int64) (name string, err error) { var ok bool if name, ok = upMap[buid]; !ok { var data []byte - data, err = web.RequestDataWith(web.NewDefaultClient(), fmt.Sprintf(infoURL, buid), "GET", referer, ua) + data, err = web.RequestDataWith(web.NewDefaultClient(), fmt.Sprintf(infoURL, buid), "GET", referer, ua, nil) if err != nil { return } @@ -232,7 +232,7 @@ func unsubscribeLive(buid, groupid int64) (err error) { } func getUserDynamicCard(buid int64) (cardList []gjson.Result, err error) { - data, err := web.RequestDataWith(web.NewDefaultClient(), fmt.Sprintf(bz.SpaceHistoryURL, buid, 0), "GET", referer, ua) + data, err := web.RequestDataWith(web.NewDefaultClient(), fmt.Sprintf(bz.SpaceHistoryURL, buid, 0), "GET", referer, ua, nil) if err != nil { return } diff --git a/plugin/coser/coser.go b/plugin/coser/coser.go index 3ead32ed..e22a03d9 100644 --- a/plugin/coser/coser.go +++ b/plugin/coser/coser.go @@ -39,7 +39,7 @@ func init() { return "", err } } - data, err := web.RequestDataWith(web.NewDefaultClient(), coserURL, "GET", "", ua) + data, err := web.RequestDataWith(web.NewDefaultClient(), coserURL, "GET", "", ua, nil) if err != nil { return "", err } diff --git a/plugin/gif/context.go b/plugin/gif/context.go index 58bddc5c..1ecb9ebc 100644 --- a/plugin/gif/context.go +++ b/plugin/gif/context.go @@ -20,7 +20,7 @@ func dlchan(name string, s *string, wg *sync.WaitGroup, exit func(error)) { defer wg.Done() target := datapath + `materials/` + name if file.IsNotExist(target) { - data, err := web.RequestDataWith(web.NewTLS12Client(), `https://gitcode.net/m0_60838134/imagematerials/-/raw/main/`+name, "GET", "gitcode.net", web.RandUA()) + data, err := web.RequestDataWith(web.NewTLS12Client(), `https://gitcode.net/m0_60838134/imagematerials/-/raw/main/`+name, "GET", "gitcode.net", web.RandUA(), nil) if err != nil { _ = os.Remove(target) exit(err) @@ -48,7 +48,7 @@ func dlchan(name string, s *string, wg *sync.WaitGroup, exit func(error)) { func dlblock(name string) (string, error) { target := datapath + `materials/` + name if file.IsNotExist(target) { - data, err := web.RequestDataWith(web.NewTLS12Client(), `https://gitcode.net/m0_60838134/imagematerials/-/raw/main/`+name, "GET", "gitcode.net", web.RandUA()) + data, err := web.RequestDataWith(web.NewTLS12Client(), `https://gitcode.net/m0_60838134/imagematerials/-/raw/main/`+name, "GET", "gitcode.net", web.RandUA(), nil) if err != nil { _ = os.Remove(target) return "", err diff --git a/plugin/heisi/heisi.go b/plugin/heisi/heisi.go index dba16a82..7da43956 100644 --- a/plugin/heisi/heisi.go +++ b/plugin/heisi/heisi.go @@ -60,7 +60,7 @@ func init() { // 插件主体 } return pic.String(), nil }, func(s string) ([]byte, error) { - return web.RequestDataWith(web.NewTLS12Client(), s, "GET", "http://hs.heisiwu.com/", web.RandUA()) + return web.RequestDataWith(web.NewTLS12Client(), s, "GET", "http://hs.heisiwu.com/", web.RandUA(), nil) }, time.Minute) if err != nil { panic(err) diff --git a/plugin/hs/run.go b/plugin/hs/run.go index 4fdc6134..efd48111 100644 --- a/plugin/hs/run.go +++ b/plugin/hs/run.go @@ -67,7 +67,7 @@ func init() { data, err := web.RequestDataWith(web.NewDefaultClient(), `https://res.fbigame.com/hs/v13/`+cid+`.png?auth_key=`+ gjson.Get(g, `list.`+strconv.Itoa(i)+`.auth_key`).String(), - reqconf[0], reqconf[1], reqconf[2]) + reqconf[0], reqconf[1], reqconf[2], nil) if err == nil { err = os.WriteFile(cachefile, data, 0644) } @@ -95,10 +95,10 @@ func init() { } func sh(s string) string { - data, err := web.RequestDataWith(web.NewDefaultClient(), "https://hs.fbigame.com", reqconf[0], reqconf[1], reqconf[2]) + data, err := web.RequestDataWith(web.NewDefaultClient(), "https://hs.fbigame.com", reqconf[0], reqconf[1], reqconf[2], nil) if err == nil { url := hs + para + "&hash=" + strings.SplitN(strings.SplitN(helper.BytesToString(data), `var hash = "`, 2)[1], `"`, 2)[0] + "&search=" + s - r, err := web.RequestDataWith(web.NewDefaultClient(), url, reqconf[0], reqconf[1], reqconf[2]) + r, err := web.RequestDataWith(web.NewDefaultClient(), url, reqconf[0], reqconf[1], reqconf[2], nil) if err == nil { return helper.BytesToString(r) } @@ -107,10 +107,10 @@ func sh(s string) string { } func kz(s string) string { - data, err := web.RequestDataWith(web.NewDefaultClient(), "https://hs.fbigame.com", reqconf[0], reqconf[1], reqconf[2]) + data, err := web.RequestDataWith(web.NewDefaultClient(), "https://hs.fbigame.com", reqconf[0], reqconf[1], reqconf[2], nil) if err == nil { url := hs + para + "mod=general_deck_image&deck_code=" + s + "&deck_text=&hash=" + strings.SplitN(strings.SplitN(helper.BytesToString(data), `var hash = "`, 2)[1], `"`, 2)[0] + "&search=" + s - r, err := web.RequestDataWith(web.NewDefaultClient(), url, reqconf[0], reqconf[1], reqconf[2]) + r, err := web.RequestDataWith(web.NewDefaultClient(), url, reqconf[0], reqconf[1], reqconf[2], nil) if err == nil { return "base64://" + gjson.Get(helper.BytesToString(r), "img").String() } diff --git a/plugin/hyaku/main.go b/plugin/hyaku/main.go index bc1c5f82..6ba4ae41 100644 --- a/plugin/hyaku/main.go +++ b/plugin/hyaku/main.go @@ -2,9 +2,9 @@ package hyaku import ( + "bytes" "encoding/csv" "fmt" - "io" "math/rand" "os" "reflect" @@ -12,8 +12,6 @@ import ( "unsafe" "github.com/FloatTech/floatbox/binary" - "github.com/FloatTech/floatbox/file" - "github.com/FloatTech/floatbox/web" ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" @@ -60,56 +58,36 @@ func init() { "- 百人一首之n", PrivateDataFolder: "hyaku", }) - csvfile := engine.DataFolder() + "hyaku.csv" err := os.MkdirAll(engine.DataFolder()+"img", 0755) if err != nil { panic(err) } - go func() { - var f *os.File - if file.IsNotExist(csvfile) { - data, err := web.RequestDataWith(web.NewTLS12Client(), bed+"小倉百人一首.csv", "GET", "gitcode.net", web.RandUA()) - if err != nil { - _ = os.Remove(csvfile) - panic(err) - } - f, err = os.Create(csvfile) - if err != nil { - panic(err) - } - _, _ = f.Write(data) - _, _ = f.Seek(0, io.SeekStart) - } else { - var err error - f, err = os.Open(csvfile) - if err != nil { - panic(err) - } + data, err := engine.GetCustomLazyData(bed, "小倉百人一首.csv") + if err != nil { + panic(err) + } + records, err := csv.NewReader(bytes.NewReader(data)).ReadAll() + if err != nil { + panic(err) + } + records = records[1:] // skip title + if len(records) != 100 { + panic("invalid csvfile") + } + for j, r := range records { + if len(r) != 6 { + panic("invalid csvfile") } - records, err := csv.NewReader(f).ReadAll() + i, err := strconv.Atoi(r[0]) if err != nil { panic(err) } - _ = f.Close() - records = records[1:] // skip title - if len(records) != 100 { + i-- + if j != i { panic("invalid csvfile") } - for j, r := range records { - if len(r) != 6 { - panic("invalid csvfile") - } - i, err := strconv.Atoi(r[0]) - if err != nil { - panic(err) - } - i-- - if j != i { - panic("invalid csvfile") - } - lines[i] = (*line)(*(*unsafe.Pointer)(unsafe.Pointer(&r))) - } - }() + lines[i] = (*line)(*(*unsafe.Pointer)(unsafe.Pointer(&r))) + } engine.OnFullMatch("百人一首").SetBlock(true).Limit(ctxext.LimitByUser).Handle(func(ctx *zero.Ctx) { i := rand.Intn(100) img0, err := engine.GetCustomLazyData(bed, fmt.Sprintf("img/%03d.jpg", i+1)) diff --git a/plugin/image_finder/keyword.go b/plugin/image_finder/keyword.go index 0fcb17f2..9d0e2b7c 100644 --- a/plugin/image_finder/keyword.go +++ b/plugin/image_finder/keyword.go @@ -98,7 +98,7 @@ func init() { "标题: ", il.Title, "\n", "副标题: ", il.AltTitle, "\n", "ID: ", il.ID, "\n", - "画师: ", illust.UserName, " (", illust.UserId, ")", "\n", + "画师: ", illust.UserName, " (", illust.UserID, ")", "\n", "分级:", il.Sanity, "\n", hrefre.ReplaceAllString(strings.ReplaceAll(strings.ReplaceAll(il.Description, "
", "\n"), "", ""), ""), printtags(reflect.ValueOf(&il.Tags)), @@ -119,6 +119,7 @@ func soutuapi(keyword string) (r resultjson, err error) { "GET", "https://pixivel.moe/", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36", + nil, ) if err != nil { return diff --git a/plugin/music/selecter.go b/plugin/music/selecter.go index 170609f1..71333457 100644 --- a/plugin/music/selecter.go +++ b/plugin/music/selecter.go @@ -177,7 +177,7 @@ func cloud163(keyword string) (msg message.MessageSegment) { // qqmusic 返回QQ音乐卡片 func qqmusic(keyword string) (msg message.MessageSegment) { requestURL := "https://c.y.qq.com/splcloud/fcgi-bin/smartbox_new.fcg?platform=yqq.json&key=" + url.QueryEscape(keyword) - data, err := web.RequestDataWith(web.NewDefaultClient(), requestURL, "GET", "", web.RandUA()) + data, err := web.RequestDataWith(web.NewDefaultClient(), requestURL, "GET", "", web.RandUA(), nil) if err != nil { msg = message.Text("ERROR: ", err) return diff --git a/plugin/qzone/qzone.go b/plugin/qzone/qzone.go index 4a9f9b24..e4a8b5ef 100644 --- a/plugin/qzone/qzone.go +++ b/plugin/qzone/qzone.go @@ -316,7 +316,7 @@ func renderForwardMsg(qq int64, raw string) (base64Bytes []byte, err error) { if qq != 0 { face, err = web.GetData(fmt.Sprintf(faceURL, qq)) } else { - face, err = web.RequestDataWith(web.NewTLS12Client(), fmt.Sprintf(anonymousURL, rand.Intn(4)+1), "GET", "gitcode.net", web.RandUA()) + face, err = web.RequestDataWith(web.NewTLS12Client(), fmt.Sprintf(anonymousURL, rand.Intn(4)+1), "GET", "gitcode.net", web.RandUA(), nil) } if err != nil { return diff --git a/plugin/saucenao/searcher.go b/plugin/saucenao/searcher.go index 0c474ebb..69b52412 100644 --- a/plugin/saucenao/searcher.go +++ b/plugin/saucenao/searcher.go @@ -91,7 +91,7 @@ func init() { // 插件主体 "标题: ", illust.Title, "\n", "插画ID: ", illust.Pid, "\n", "画师: ", illust.UserName, "\n", - "画师ID: ", illust.UserId, "\n", + "画师ID: ", illust.UserID, "\n", "直链: ", "https://pixivel.moe/detail?id=", illust.Pid, ) if imgs != nil { @@ -157,7 +157,7 @@ func init() { // 插件主体 ctx.SendChain(message.Text("请私聊发送 设置 saucenao api key [apikey] 以启用 saucenao 搜图 (方括号不需要输入), key 请前往 https://saucenao.com/user.php?page=search-api 获取")) } // ascii2d 搜索 - if result, err := ascii2d.Ascii2d(pic); err != nil { + if result, err := ascii2d.ASCII2d(pic); err != nil { ctx.SendChain(message.Text("ERROR: ", err)) continue } else { diff --git a/plugin/shadiao/shadiao.go b/plugin/shadiao/shadiao.go index 997d844b..a9b7ee46 100644 --- a/plugin/shadiao/shadiao.go +++ b/plugin/shadiao/shadiao.go @@ -38,7 +38,7 @@ var ( func init() { engine.OnFullMatchGroup([]string{"哄我", "来碗毒鸡汤", "发个朋友圈"}).SetBlock(true).Limit(ctxext.LimitByUser).Handle(func(ctx *zero.Ctx) { requestURL := sdMap[ctx.State["matched"].(string)] - data, err := web.RequestDataWith(web.NewDefaultClient(), requestURL, "GET", sdReferer, ua) + data, err := web.RequestDataWith(web.NewDefaultClient(), requestURL, "GET", sdReferer, ua, nil) if err != nil { ctx.SendChain(message.Text("ERROR: ", err)) return diff --git a/plugin/shadiao/sweetnothings.go b/plugin/shadiao/sweetnothings.go index 8dd4380e..a7ffe8c7 100644 --- a/plugin/shadiao/sweetnothings.go +++ b/plugin/shadiao/sweetnothings.go @@ -12,7 +12,7 @@ import ( func init() { engine.OnFullMatch("来碗绿茶").SetBlock(true).Limit(ctxext.LimitByUser).Handle(func(ctx *zero.Ctx) { - data, err := web.RequestDataWith(web.NewDefaultClient(), chayiURL, "GET", loveliveReferer, ua) + data, err := web.RequestDataWith(web.NewDefaultClient(), chayiURL, "GET", loveliveReferer, ua, nil) if err != nil { ctx.SendChain(message.Text("ERROR: ", err)) return @@ -22,7 +22,7 @@ func init() { }) engine.OnFullMatch("渣我").SetBlock(true).Limit(ctxext.LimitByUser).Handle(func(ctx *zero.Ctx) { - data, err := web.RequestDataWith(web.NewDefaultClient(), ganhaiURL, "GET", loveliveReferer, ua) + data, err := web.RequestDataWith(web.NewDefaultClient(), ganhaiURL, "GET", loveliveReferer, ua, nil) if err != nil { ctx.SendChain(message.Text("ERROR: ", err)) return diff --git a/plugin/shadiao/yduanzi.go b/plugin/shadiao/yduanzi.go index 2505baa8..998be2f6 100644 --- a/plugin/shadiao/yduanzi.go +++ b/plugin/shadiao/yduanzi.go @@ -14,7 +14,7 @@ import ( func init() { engine.OnFullMatch("讲个段子").SetBlock(true).Limit(ctxext.LimitByUser).Handle(func(ctx *zero.Ctx) { - data, err := web.RequestDataWith(web.NewDefaultClient(), yduanziURL, "POST", yduanziReferer, ua) + data, err := web.RequestDataWith(web.NewDefaultClient(), yduanziURL, "POST", yduanziReferer, ua, nil) if err != nil { ctx.SendChain(message.Text("ERROR: ", err)) return diff --git a/plugin/tarot/tarot.go b/plugin/tarot/tarot.go index 7a978b16..9cd7649b 100644 --- a/plugin/tarot/tarot.go +++ b/plugin/tarot/tarot.go @@ -153,7 +153,7 @@ func init() { } imgpath := cache + "/" + imgname + ".png" err := pool.SendImageFromPool("pool"+imgname, imgpath, func() error { - data, err := web.RequestDataWith(web.NewTLS12Client(), imgurl, "GET", "gitcode.net", web.RandUA()) + data, err := web.RequestDataWith(web.NewTLS12Client(), imgurl, "GET", "gitcode.net", web.RandUA(), nil) if err != nil { return err } @@ -336,7 +336,7 @@ func poolimg(ctx *zero.Ctx, imgurl, imgname, cache string) (msg message.MessageS } if file.IsNotExist(aimgfile) { var data []byte - data, err = web.RequestDataWith(web.NewTLS12Client(), imgurl, "GET", "gitcode.net", web.RandUA()) + data, err = web.RequestDataWith(web.NewTLS12Client(), imgurl, "GET", "gitcode.net", web.RandUA(), nil) if err != nil { return } diff --git a/plugin/wangyiyun/main.go b/plugin/wangyiyun/main.go index 6984f884..9ea3f6f4 100644 --- a/plugin/wangyiyun/main.go +++ b/plugin/wangyiyun/main.go @@ -24,7 +24,7 @@ func init() { Help: "- 来份网易云热评", }).OnFullMatch("来份网易云热评").SetBlock(true).Limit(ctxext.LimitByUser). Handle(func(ctx *zero.Ctx) { - data, err := web.RequestDataWith(web.NewDefaultClient(), wangyiyunURL, "GET", wangyiyunReferer, ua) + data, err := web.RequestDataWith(web.NewDefaultClient(), wangyiyunURL, "GET", wangyiyunReferer, ua, nil) if err != nil { ctx.SendChain(message.Text("ERROR: ", err)) return