From c99d09ea637fc4059eafc37fda98e19e8d2a1d96 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: Sat, 7 Jan 2023 16:24:02 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81=E7=BB=93?=
=?UTF-8?q?=E6=9E=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 10 +--
data | 2 +-
go.mod | 12 ++--
go.sum | 24 ++++----
main.go | 1 -
plugin/coser/coser.go | 48 ++++++++++-----
plugin/epidemic/epidemic.go | 120 ------------------------------------
plugin/fortune/fortune.go | 4 +-
plugin/heisi/heisi.go | 59 +++++++++++++-----
9 files changed, 97 insertions(+), 183 deletions(-)
delete mode 100644 plugin/epidemic/epidemic.go
diff --git a/README.md b/README.md
index 38a79f36..3aa54fe5 100644
--- a/README.md
+++ b/README.md
@@ -669,14 +669,6 @@ print("run[CQ:image,file="+j["img"]+"]")
- [x] [emoji][emoji]
-
-
- 城市疫情查询
-
- `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/epidemic"`
-
- - [x] xxx疫情
-
好友申请及群聊邀请事件处理
@@ -704,7 +696,7 @@ print("run[CQ:image,file="+j["img"]+"]")
- [x] 运势 | 抽签
- - [x] 设置底图[车万 DC4 爱因斯坦 星空列车 樱云之恋 富婆妹 李清歌 公主连结 原神 明日方舟 碧蓝航线 碧蓝幻想 战双 阴阳师 赛马娘 东方归言录 奇异恩典 夏日口袋 ASoul]
+ - [x] 设置底图[车万 DC4 爱因斯坦 星空列车 樱云之恋 富婆妹 李清歌 公主连结 原神 明日方舟 碧蓝航线 碧蓝幻想 战双 阴阳师 赛马娘 东方归言录 奇异恩典 夏日口袋 ASoul Hololive]
diff --git a/data b/data
index e8d06b15..00088d0e 160000
--- a/data
+++ b/data
@@ -1 +1 @@
-Subproject commit e8d06b150b2cf84d9c7dc2f8a9f573da2b2290fd
+Subproject commit 00088d0e74496fce52a48ac12540f1d849c44c56
diff --git a/go.mod b/go.mod
index 1a0cb4c7..328a4f80 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.20221226052349-99c1398c6713
- github.com/FloatTech/floatbox v0.0.0-20221228150204-a2bededce74d
+ github.com/FloatTech/AnimeAPI v1.6.1-0.20230107074849-392b0b10b149
+ github.com/FloatTech/floatbox v0.0.0-20230107061309-dcd5c0012dd3
github.com/FloatTech/sqlite v1.5.7
github.com/FloatTech/ttl v0.0.0-20220715042055-15612be72f5b
github.com/FloatTech/zbpctrl v1.5.3-0.20221210051848-740ab7bd6ec3
- github.com/FloatTech/zbputils v1.6.1-0.20221230110225-f0786b77b297
+ github.com/FloatTech/zbputils v1.6.1-0.20230107061700-dadcf8500e7a
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
@@ -34,12 +34,12 @@ require (
github.com/wcharczuk/go-chart/v2 v2.1.0
github.com/wdvxdr1123/ZeroBot v1.6.6
gitlab.com/gomidi/midi/v2 v2.0.25
- golang.org/x/image v0.1.0
+ golang.org/x/image v0.3.0
gopkg.in/yaml.v3 v3.0.1
)
require (
- github.com/FloatTech/rendercard v0.0.2 // indirect
+ github.com/FloatTech/rendercard v0.0.3 // indirect
github.com/antchfx/xpath v1.2.1 // indirect
github.com/disintegration/imaging v1.6.2 // indirect
github.com/ericpauley/go-quantize v0.0.0-20200331213906-ae555eb2afa4 // indirect
@@ -80,7 +80,7 @@ require (
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect
golang.org/x/net v0.0.0-20221014081412-f15817d10f9b // indirect
golang.org/x/sys v0.2.0 // indirect
- golang.org/x/text v0.4.0 // indirect
+ golang.org/x/text v0.6.0 // indirect
golang.org/x/tools v0.1.12 // indirect
modernc.org/libc v1.21.5 // indirect
modernc.org/mathutil v1.5.0 // indirect
diff --git a/go.sum b/go.sum
index 15ed4c0a..0fc9113a 100644
--- a/go.sum
+++ b/go.sum
@@ -4,20 +4,20 @@ 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.20221226052349-99c1398c6713 h1:jK94NVITfIcekb6HuK6UQbPT4b/S3XlfG//DT2ERbqk=
-github.com/FloatTech/AnimeAPI v1.6.1-0.20221226052349-99c1398c6713/go.mod h1:8wsdxt90jVHX67xFqArQpqs5kVsxOds0Cps2MyHkZtQ=
-github.com/FloatTech/floatbox v0.0.0-20221228150204-a2bededce74d h1:nvkui8iKLsOC10Hpo/f/NSkFXdYDX0NqoCaanRQicgc=
-github.com/FloatTech/floatbox v0.0.0-20221228150204-a2bededce74d/go.mod h1:e51vYUkDUw6dBJYTErXLHi8lt9frSOik9a6xdYRRt5w=
-github.com/FloatTech/rendercard v0.0.2 h1:2SNPDXsOjxPpefxqA1xvIgXWNmeSEvjKEak24q7pEKY=
-github.com/FloatTech/rendercard v0.0.2/go.mod h1:FwwKoWpv1fW7AZ1mwBVWF8GCH9mEqYYIE9LzdmozCZQ=
+github.com/FloatTech/AnimeAPI v1.6.1-0.20230107074849-392b0b10b149 h1:luwPT3dGLRYLjRfLlz4Uo1r4Us7UkrCL9tz9cFUuuJs=
+github.com/FloatTech/AnimeAPI v1.6.1-0.20230107074849-392b0b10b149/go.mod h1:Kg0LSMN9KjqbAGzcd4T6xvL/hvlnzlOU/nWJ63we3oo=
+github.com/FloatTech/floatbox v0.0.0-20230107061309-dcd5c0012dd3 h1:LSuKljwLeoW/jFrIprWpD0yUT0YUTKqukK/fPrS5BGw=
+github.com/FloatTech/floatbox v0.0.0-20230107061309-dcd5c0012dd3/go.mod h1:/k2zxRJtAJ17w9fSpc7xf2QjPDTUBmqhBsOGyHVyX0U=
+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=
github.com/FloatTech/sqlite v1.5.7/go.mod h1:zFbHzRfB+CJ+VidfjuVbrcin3DAz283F7hF1hIeHzpY=
github.com/FloatTech/ttl v0.0.0-20220715042055-15612be72f5b h1:tvciXWq2nuvTbFeJGLDNIdRX3BI546D3O7k7vrVueZw=
github.com/FloatTech/ttl v0.0.0-20220715042055-15612be72f5b/go.mod h1:fHZFWGquNXuHttu9dUYoKuNbm3dzLETnIOnm1muSfDs=
github.com/FloatTech/zbpctrl v1.5.3-0.20221210051848-740ab7bd6ec3 h1:dxARTVta2i48OOYa0xMRzWTO0lr6bM4M6JmQWLkHdNE=
github.com/FloatTech/zbpctrl v1.5.3-0.20221210051848-740ab7bd6ec3/go.mod h1:KFfMTzItP5usfnUYs7cFWjk89dzjtdO1eI+B1BVQNig=
-github.com/FloatTech/zbputils v1.6.1-0.20221230110225-f0786b77b297 h1:fNzUbc/1d2fu3OwgyhJ8QBz4vPMiObRMP/UmmzLw1f8=
-github.com/FloatTech/zbputils v1.6.1-0.20221230110225-f0786b77b297/go.mod h1:KBxpGdtIS2MweGAba0TrenOt2Nlddbsk3BaXHaAQ9Zk=
+github.com/FloatTech/zbputils v1.6.1-0.20230107061700-dadcf8500e7a h1:nv3+ss6kID+nn1ZC5e3DJC59aHljeXPb0Tx0xMpbmQI=
+github.com/FloatTech/zbputils v1.6.1-0.20230107061700-dadcf8500e7a/go.mod h1:cbIXoOF4IEBSUiI175cpfiC7XV70+TMQpbLGuTrRoLA=
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=
@@ -214,8 +214,8 @@ golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMx
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/image v0.0.0-20200927104501-e162460cd6b5/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
-golang.org/x/image v0.1.0 h1:r8Oj8ZA2Xy12/b5KZYj3tuv7NG/fBz3TwQVvpJ9l8Rk=
-golang.org/x/image v0.1.0/go.mod h1:iyPr49SD/G/TBxYVB/9RRtGUT5eNbo2u4NamWeQcD5c=
+golang.org/x/image v0.3.0 h1:HTDXbdK9bjfSWkPzDJIw89W8CAtfFGduujWs33NLLsg=
+golang.org/x/image v0.3.0/go.mod h1:fXd9211C/0VTlYuAcOhW8dY/RtEJqODXOWBDpmYBf+A=
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
golang.org/x/mobile v0.0.0-20190415191353-3e0bab5405d6/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
golang.org/x/mobile v0.0.0-20201217150744-e6ae53a27f4f h1:kgfVkAEEQXXQ0qc6dH7n6y37NAYmTFmz0YRwrRjgxKw=
@@ -266,8 +266,8 @@ golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuX
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg=
-golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
+golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k=
+golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
diff --git a/main.go b/main.go
index 866ab7fd..5024dcf8 100644
--- a/main.go
+++ b/main.go
@@ -81,7 +81,6 @@ import (
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/dress" // 女装
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/drift_bottle" // 漂流瓶
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/emojimix" // 合成emoji
- _ "github.com/FloatTech/ZeroBot-Plugin/plugin/epidemic" // 城市疫情查询
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/event" // 好友申请群聊邀请事件处理
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/font" // 渲染任意文字到图片
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/fortune" // 运势
diff --git a/plugin/coser/coser.go b/plugin/coser/coser.go
index 7c0fbe86..331b2967 100644
--- a/plugin/coser/coser.go
+++ b/plugin/coser/coser.go
@@ -2,7 +2,10 @@
package coser
import (
- "regexp"
+ "errors"
+ "math/rand"
+ "os"
+ "time"
"github.com/tidwall/gjson"
@@ -10,6 +13,8 @@ import (
"github.com/wdvxdr1123/ZeroBot/message"
"github.com/wdvxdr1123/ZeroBot/utils/helper"
+ "github.com/FloatTech/AnimeAPI/setu"
+ "github.com/FloatTech/floatbox/file"
"github.com/FloatTech/floatbox/web"
ctrl "github.com/FloatTech/zbpctrl"
"github.com/FloatTech/zbputils/control"
@@ -19,35 +24,44 @@ import (
var (
ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36"
coserURL = "http://ovooa.com/API/cosplay/api.php"
- datestr = regexp.MustCompile(`/\d{4}-\d{2}-\d{2}/`)
)
func init() {
+ p, err := setu.NewPool(setu.DefaultPoolDir,
+ func(s string) (string, error) {
+ if s != "coser" {
+ return "", errors.New("invalid call")
+ }
+ typ := setu.DefaultPoolDir + "/" + "coser"
+ if file.IsNotExist(typ) {
+ err := os.MkdirAll(typ, 0755)
+ if err != nil {
+ return "", err
+ }
+ }
+ data, err := web.RequestDataWith(web.NewDefaultClient(), coserURL, "GET", "", ua)
+ if err != nil {
+ return "", err
+ }
+ arr := gjson.Get(helper.BytesToString(data), "data.data").Array()
+ pic := arr[rand.Intn(len(arr))]
+ return pic.String(), nil
+ }, web.GetData, time.Minute)
+ if err != nil {
+ panic(err)
+ }
control.Register("coser", &ctrl.Options[*zero.Ctx]{
DisableOnDefault: false,
Brief: "三次元coser",
Help: "- coser",
}).ApplySingle(ctxext.DefaultSingle).OnFullMatch("coser").SetBlock(true).Limit(ctxext.LimitByGroup).
Handle(func(ctx *zero.Ctx) {
- ctx.SendChain(message.Text("少女祈祷中......"))
- data, err := web.RequestDataWith(web.NewDefaultClient(), coserURL, "GET", "", ua)
+ pic, err := p.Roll("coser")
if err != nil {
ctx.SendChain(message.Text("ERROR: ", err))
return
}
- text := gjson.Get(helper.BytesToString(data), "data.Title").String()
- m := message.Message{ctxext.FakeSenderForwardNode(ctx, message.Text(text))}
- ds := ""
- gjson.Get(helper.BytesToString(data), "data.data").ForEach(func(_, value gjson.Result) bool {
- if ds == "" {
- ds = datestr.FindString(value.String())
- } else if ds != datestr.FindString(value.String()) {
- return false
- }
- m = append(m, ctxext.FakeSenderForwardNode(ctx, message.Image(value.String())))
- return true
- })
- if id := ctx.Send(m).ID(); id == 0 {
+ if id := ctx.Send(message.Message{ctxext.FakeSenderForwardNode(ctx, message.Image(pic))}).ID(); id == 0 {
ctx.SendChain(message.Text("ERROR: 可能被风控或下载图片用时过长,请耐心等待"))
}
})
diff --git a/plugin/epidemic/epidemic.go b/plugin/epidemic/epidemic.go
deleted file mode 100644
index c9545fbf..00000000
--- a/plugin/epidemic/epidemic.go
+++ /dev/null
@@ -1,120 +0,0 @@
-// Package epidemic 城市疫情查询
-package epidemic
-
-import (
- "encoding/json"
-
- zero "github.com/wdvxdr1123/ZeroBot"
- "github.com/wdvxdr1123/ZeroBot/message"
-
- "github.com/FloatTech/floatbox/web"
- ctrl "github.com/FloatTech/zbpctrl"
- "github.com/FloatTech/zbputils/control"
- "github.com/FloatTech/zbputils/ctxext"
-)
-
-const txurl = "https://api.inews.qq.com/newsqa/v1/query/inner/publish/modules/list?modules=statisGradeCityDetail,diseaseh5Shelf"
-
-// result 疫情查询结果
-type result struct {
- Data struct {
- Epidemic epidemic `json:"diseaseh5Shelf"`
- } `json:"data"`
-}
-
-// epidemic 疫情数据
-type epidemic struct {
- LastUpdateTime string `json:"lastUpdateTime"`
- AreaTree []*area `json:"areaTree"`
-}
-
-// area 城市疫情数据
-type area struct {
- Name string `json:"name"`
- Today struct {
- Confirm int `json:"confirm"`
- Wzzadd any `json:"wzz_add"`
- } `json:"today"`
- Total struct {
- NowConfirm int `json:"nowConfirm"`
- Confirm int `json:"confirm"`
- Dead int `json:"dead"`
- Heal int `json:"heal"`
- Grade string `json:"grade"`
- Wzz int `json:"wzz"`
- } `json:"total"`
- Children []*area `json:"children"`
-}
-
-func init() {
- engine := control.Register("epidemic", &ctrl.Options[*zero.Ctx]{
- DisableOnDefault: false,
- Brief: "城市疫情查询",
- Help: "- xxx疫情\n",
- })
- engine.OnSuffix("疫情").SetBlock(true).Limit(ctxext.LimitByUser).
- Handle(func(ctx *zero.Ctx) {
- city := ctx.State["args"].(string)
- if city == "" {
- ctx.SendChain(message.Text("你还没有输入城市名字呢!"))
- return
- }
- data, time, err := queryEpidemic(city)
- if err != nil {
- ctx.SendChain(message.Text("ERROR: ", err))
- return
- }
- if data == nil {
- ctx.SendChain(message.Text("没有找到【", city, "】城市的疫情数据."))
- return
- }
- ctx.SendChain(
- message.Text(
- "【", data.Name, "】疫情数据\n",
- "新增人数:", data.Today.Confirm, "\n",
- "现有确诊:", data.Total.NowConfirm, "\n",
- "累计确诊:", data.Total.Confirm, "\n",
- "治愈人数:", data.Total.Heal, "\n",
- "死亡人数:", data.Total.Dead, "\n",
- "无症状人数:", data.Total.Wzz, "\n",
- "新增无症状:", data.Today.Wzzadd, "\n",
- "更新时间:\n『", time, "』",
- ),
- )
- })
-}
-
-// rcity 查找城市
-func rcity(a *area, cityName string) *area {
- if a == nil {
- return nil
- }
- if a.Name == cityName {
- return a
- }
- for _, v := range a.Children {
- if v.Name == cityName {
- return v
- }
- c := rcity(v, cityName)
- if c != nil {
- return c
- }
- }
- return nil
-}
-
-// queryEpidemic 查询城市疫情
-func queryEpidemic(findCityName string) (citydata *area, times string, err error) {
- data, err := web.GetData(txurl)
- if err != nil {
- return
- }
- var r result
- err = json.Unmarshal(data, &r)
- if err != nil {
- return
- }
- citydata = rcity(r.Data.Epidemic.AreaTree[0], findCityName)
- return citydata, r.Data.Epidemic.LastUpdateTime, nil
-}
diff --git a/plugin/fortune/fortune.go b/plugin/fortune/fortune.go
index 61e7a100..2a39e91c 100644
--- a/plugin/fortune/fortune.go
+++ b/plugin/fortune/fortune.go
@@ -40,7 +40,7 @@ const (
var (
// 底图类型列表
- table = [...]string{"车万", "DC4", "爱因斯坦", "星空列车", "樱云之恋", "富婆妹", "李清歌", "公主连结", "原神", "明日方舟", "碧蓝航线", "碧蓝幻想", "战双", "阴阳师", "赛马娘", "东方归言录", "奇异恩典", "夏日口袋", "ASoul"}
+ table = [...]string{"车万", "DC4", "爱因斯坦", "星空列车", "樱云之恋", "富婆妹", "李清歌", "公主连结", "原神", "明日方舟", "碧蓝航线", "碧蓝幻想", "战双", "阴阳师", "赛马娘", "东方归言录", "奇异恩典", "夏日口袋", "ASoul", "Hololive"}
// 映射底图与 index
index = make(map[string]uint8)
// 签文
@@ -53,7 +53,7 @@ func init() {
DisableOnDefault: false,
Brief: "每日运势",
Help: "- 运势 | 抽签\n" +
- "- 设置底图[车万 | DC4 | 爱因斯坦 | 星空列车 | 樱云之恋 | 富婆妹 | 李清歌 | 公主连结 | 原神 | 明日方舟 | 碧蓝航线 | 碧蓝幻想 | 战双 | 阴阳师 | 赛马娘 | 东方归言录 | 奇异恩典 | 夏日口袋 | ASoul]",
+ "- 设置底图[车万 | DC4 | 爱因斯坦 | 星空列车 | 樱云之恋 | 富婆妹 | 李清歌 | 公主连结 | 原神 | 明日方舟 | 碧蓝航线 | 碧蓝幻想 | 战双 | 阴阳师 | 赛马娘 | 东方归言录 | 奇异恩典 | 夏日口袋 | ASoul | Hololive]",
PublicDataFolder: "Fortune",
})
_ = os.RemoveAll(cache)
diff --git a/plugin/heisi/heisi.go b/plugin/heisi/heisi.go
index a1135fd2..218187b3 100644
--- a/plugin/heisi/heisi.go
+++ b/plugin/heisi/heisi.go
@@ -2,11 +2,17 @@
package heisi
import (
+ "errors"
"math/rand"
+ "os"
"strconv"
+ "time"
"unsafe"
+ "github.com/FloatTech/AnimeAPI/setu"
fbctxext "github.com/FloatTech/floatbox/ctxext"
+ "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"
@@ -25,6 +31,39 @@ var (
)
func init() { // 插件主体
+ p, err := setu.NewPool(setu.DefaultPoolDir,
+ func(s string) (string, error) {
+ if s != "黑丝" && s != "白丝" && s != "jk" && s != "巨乳" && s != "足控" && s != "网红" {
+ return "", errors.New("invalid call")
+ }
+ typ := setu.DefaultPoolDir + "/" + s
+ if file.IsNotExist(typ) {
+ err := os.MkdirAll(typ, 0755)
+ if err != nil {
+ return "", err
+ }
+ }
+ var pic item
+ switch s {
+ case "黑丝":
+ pic = heisiPic[rand.Intn(len(heisiPic))]
+ case "白丝":
+ pic = baisiPic[rand.Intn(len(baisiPic))]
+ case "jk":
+ pic = jkPic[rand.Intn(len(jkPic))]
+ case "巨乳":
+ pic = jurPic[rand.Intn(len(jurPic))]
+ case "足控":
+ pic = zukPic[rand.Intn(len(zukPic))]
+ case "网红":
+ pic = mcnPic[rand.Intn(len(mcnPic))]
+ }
+ return pic.String(), nil
+ }, web.GetData, time.Minute)
+ if err != nil {
+ panic(err)
+ }
+
engine := control.Register("heisi", &ctrl.Options[*zero.Ctx]{
DisableOnDefault: false,
Brief: "黑丝",
@@ -65,22 +104,12 @@ func init() { // 插件主体
})).SetBlock(true).
Handle(func(ctx *zero.Ctx) {
matched := ctx.State["matched"].(string)
- var pic item
- switch matched {
- case "来点黑丝":
- pic = heisiPic[rand.Intn(len(heisiPic))]
- case "来点白丝":
- pic = baisiPic[rand.Intn(len(baisiPic))]
- case "来点jk":
- pic = jkPic[rand.Intn(len(jkPic))]
- case "来点巨乳":
- pic = jurPic[rand.Intn(len(jurPic))]
- case "来点足控":
- pic = zukPic[rand.Intn(len(zukPic))]
- case "来点网红":
- pic = mcnPic[rand.Intn(len(mcnPic))]
+ pic, err := p.Roll(matched[3*2:])
+ if err != nil {
+ ctx.SendChain(message.Text("ERROR: ", err))
+ return
}
- m := message.Message{ctxext.FakeSenderForwardNode(ctx, message.Image(pic.String()))}
+ m := message.Message{ctxext.FakeSenderForwardNode(ctx, message.Image(pic))}
if id := ctx.Send(m).ID(); id == 0 {
ctx.SendChain(message.Text("ERROR: 可能被风控或下载图片用时过长,请耐心等待"))
}