From 1e2d425cf45e2a60928a599f26f50ddbccbe350f 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, 27 Sep 2025 01:02:53 +0800 Subject: [PATCH] optimize(bilibili): separate packages --- README.md | 4 +- go.mod | 10 +- go.sum | 30 +- main.go | 2 + plugin/animetrace/main.go | 2 +- plugin/bilibili/bilibili.go | 60 +-- plugin/bilibili/card2msg.go | 342 ------------------ plugin/bilibili/card2msg_test.go | 55 --- .../bilibili/{bilibilimodel.go => model.go} | 0 .../parse.go} | 16 +- .../bilibilipush.go | 17 +- .../model.go} | 2 +- 12 files changed, 49 insertions(+), 491 deletions(-) delete mode 100644 plugin/bilibili/card2msg.go delete mode 100644 plugin/bilibili/card2msg_test.go rename plugin/bilibili/{bilibilimodel.go => model.go} (100%) rename plugin/{bilibili/bilibili_parse.go => bilibiliparse/parse.go} (94%) rename plugin/{bilibili => bilibilipush}/bilibilipush.go (95%) rename plugin/{bilibili/bilibilipushmodel.go => bilibilipush/model.go} (99%) diff --git a/README.md b/README.md index 480fb0b6..c1a450af 100644 --- a/README.md +++ b/README.md @@ -571,7 +571,7 @@ print("run[CQ:image,file="+j["img"]+"]")
b站动态、专栏、视频、直播解析 - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/bilibili"` + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/bilibiliparse"` - [x] t.bilibili.com/642277677329285174 | bilibili.com/read/cv17134450 | bilibili.com/video/BV13B4y1x7pS | live.bilibili.com/22603245 @@ -579,7 +579,7 @@ print("run[CQ:image,file="+j["img"]+"]")
b站动态、直播推送,需要配合job一起使用 - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/bilibili"` + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/bilibilipush"` - [x] 添加b站订阅[uid|name] diff --git a/go.mod b/go.mod index c06fe32e..985451e6 100644 --- a/go.mod +++ b/go.mod @@ -4,12 +4,12 @@ go 1.20 require ( github.com/Baidu-AIP/golang-sdk v1.1.1 - github.com/FloatTech/AnimeAPI v1.7.1-0.20250901143505-180d33844860 + github.com/FloatTech/AnimeAPI v1.7.1-0.20250926165541-8ae591d47008 github.com/FloatTech/floatbox v0.0.0-20250513111443-adba80e84e80 github.com/FloatTech/gg v1.1.3 github.com/FloatTech/imgfactory v0.2.2-0.20230413152719-e101cc3606ef github.com/FloatTech/rendercard v0.2.0 - github.com/FloatTech/sqlite v1.7.1 + github.com/FloatTech/sqlite v1.7.2 github.com/FloatTech/ttl v0.0.0-20240716161252-965925764562 github.com/FloatTech/zbpctrl v1.7.0 github.com/FloatTech/zbputils v1.7.2-0.20250926153026-d616e2b87477 @@ -29,7 +29,7 @@ require ( github.com/fumiama/gotracemoe v0.0.3 github.com/fumiama/jieba v0.0.0-20221203025406-36c17a10b565 github.com/fumiama/slowdo v0.0.0-20241001074058-27c4fe5259a4 - github.com/fumiama/terasu v0.0.0-20241027183601-987ab91031ce + github.com/fumiama/terasu v0.0.0-20250409134005-3ac40e382e6c github.com/fumiama/unibase2n v0.0.0-20240530074540-ec743fd5a6d6 github.com/go-ego/gse v0.80.3 github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 @@ -48,9 +48,9 @@ require ( github.com/wcharczuk/go-chart/v2 v2.1.2 github.com/wdvxdr1123/ZeroBot v1.8.2-0.20250921063512-13752a73d444 gitlab.com/gomidi/midi/v2 v2.1.7 - golang.org/x/image v0.24.0 + golang.org/x/image v0.31.0 golang.org/x/sys v0.30.0 - golang.org/x/text v0.22.0 + golang.org/x/text v0.29.0 gopkg.in/yaml.v3 v3.0.1 ) diff --git a/go.sum b/go.sum index dd1a66e1..3377af1d 100644 --- a/go.sum +++ b/go.sum @@ -1,8 +1,8 @@ github.com/Baidu-AIP/golang-sdk v1.1.1 h1:RQsAmgDSAkiq22I6n7XJ2t3afgzFeqjY46FGhvrx4cw= github.com/Baidu-AIP/golang-sdk v1.1.1/go.mod h1:bXnGw7xPeKt8aF7UCELKrV6UZ/46spItONK1RQBQj1Y= github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= -github.com/FloatTech/AnimeAPI v1.7.1-0.20250901143505-180d33844860 h1:ddthsMzYC2LZ517/71W//9VsXT82CSBALVt3sQY5vfA= -github.com/FloatTech/AnimeAPI v1.7.1-0.20250901143505-180d33844860/go.mod h1:CzpSeo5Pvslnq7Ho14E438Yn/flFMKzjGeX2nbC1mzk= +github.com/FloatTech/AnimeAPI v1.7.1-0.20250926165541-8ae591d47008 h1:YK29qIO+Iun8YbMoPNN/KHLzv1N0q93RD0sC60pj83g= +github.com/FloatTech/AnimeAPI v1.7.1-0.20250926165541-8ae591d47008/go.mod h1:yairaELY4W1TmRFjNy7HXGW4qLNhCkrXCZEBgmWQ/Sc= github.com/FloatTech/floatbox v0.0.0-20250513111443-adba80e84e80 h1:lFD1pd8NkYCrw0QpTX/T5pJ67I7AL5eGxQ4v0r9f81Q= github.com/FloatTech/floatbox v0.0.0-20250513111443-adba80e84e80/go.mod h1:IWoFFqu+0FeaHHQdddyiTRL5z7gJME6qHC96qh0R2sc= github.com/FloatTech/gg v1.1.3 h1:+GlL02lTKsxJQr4WCuNwVxC1/eBZrCvypCIBtxuOFb4= @@ -11,8 +11,8 @@ github.com/FloatTech/imgfactory v0.2.2-0.20230413152719-e101cc3606ef h1:CJbK/2FR github.com/FloatTech/imgfactory v0.2.2-0.20230413152719-e101cc3606ef/go.mod h1:el5hGpj1C1bDRxcTXYRwEivDCr40zZeJpcrLrB1fajs= github.com/FloatTech/rendercard v0.2.0 h1:PBTZ2gCEy/dAEGSfWecrGTrWDYpiBJD1dVzNDDaOxh4= github.com/FloatTech/rendercard v0.2.0/go.mod h1:Sbojcy1t3NfFz7/WicZRmR/uKFxNMYkKF8qHx69dxY0= -github.com/FloatTech/sqlite v1.7.1 h1:XKUY0+MNaRmvEIgRv7QLbl7PFVpUfQ72+XQg+no2Vq0= -github.com/FloatTech/sqlite v1.7.1/go.mod h1:/4tzfCGhrZnnjC1U8vcfwGQeF6eR649fhOsS3+Le0+s= +github.com/FloatTech/sqlite v1.7.2 h1:b8COegNLSzofzOyARsVwSbz9OOzWEa8IElsTlx1TBLw= +github.com/FloatTech/sqlite v1.7.2/go.mod h1:/4tzfCGhrZnnjC1U8vcfwGQeF6eR649fhOsS3+Le0+s= github.com/FloatTech/ttl v0.0.0-20240716161252-965925764562 h1:snfw7FNFym1eNnLrQ/VCf80LiQo9C7jHgrunZDwiRcY= github.com/FloatTech/ttl v0.0.0-20240716161252-965925764562/go.mod h1:fHZFWGquNXuHttu9dUYoKuNbm3dzLETnIOnm1muSfDs= github.com/FloatTech/zbpctrl v1.7.0 h1:Hxo6EIhJo+pHjcQP9QgIJgluaT1pHH99zkk3njqTNMo= @@ -83,8 +83,8 @@ github.com/fumiama/slowdo v0.0.0-20241001074058-27c4fe5259a4 h1:zN9e09TYKXI1mNku github.com/fumiama/slowdo v0.0.0-20241001074058-27c4fe5259a4/go.mod h1:iZf1H/Jcw5gjOOFb4C5nlweJtViWc7uwUxRCe14pbYk= github.com/fumiama/sqlite3 v1.29.10-simp h1:c5y3uKyU0q9t0/SyfynzYyuslQ5zP+5CD8e0yYY554A= github.com/fumiama/sqlite3 v1.29.10-simp/go.mod h1:ItX2a1OVGgNsFh6Dv60JQvGfJfTPHPVpV6DF59akYOA= -github.com/fumiama/terasu v0.0.0-20241027183601-987ab91031ce h1:T6iDDU16rFyxV/FwfJJR6qcgkIlXJEIFlUTSmTD1h6s= -github.com/fumiama/terasu v0.0.0-20241027183601-987ab91031ce/go.mod h1:UVx8YP1jKKL1Cj+uy+OnQRM2Ih6U36Mqy9GSf7jabsI= +github.com/fumiama/terasu v0.0.0-20250409134005-3ac40e382e6c h1:GXEfVjTQ2xLHmrHYwGY3W9orcbDPUarfQCC3SjKHeEw= +github.com/fumiama/terasu v0.0.0-20250409134005-3ac40e382e6c/go.mod h1:UVx8YP1jKKL1Cj+uy+OnQRM2Ih6U36Mqy9GSf7jabsI= github.com/fumiama/unibase2n v0.0.0-20240530074540-ec743fd5a6d6 h1:LtDgr628eji8jRpjPCxsk7ibjcfi97QieZVCTjxLCBw= github.com/fumiama/unibase2n v0.0.0-20240530074540-ec743fd5a6d6/go.mod h1:lEaZsT4FRSqcjnQ5q8y+mkenkzR/r1D3BJmfdp0vqDg= github.com/gabriel-vasile/mimetype v1.0.4 h1:uBejfH8l3/2f+5vjl1e4xIaSyNEhRBZ5N/ij7ohpNd8= @@ -126,8 +126,8 @@ github.com/jinzhu/gorm v1.9.16 h1:+IyIjPEABKRpsu/F8OvDPy9fyQlgsg2luMV2ZIH5i5o= github.com/jinzhu/gorm v1.9.16/go.mod h1:G3LB3wezTOWM2ITLzPxEXgSkOXAntiLHS7UdBefADcs= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.0.1 h1:HjfetcXq097iXP0uoPCdnM4Efp5/9MsM0/M+XOTeR3M= github.com/jinzhu/now v1.0.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= -github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= github.com/jozsefsallai/gophersauce v1.0.1 h1:BA3ovtQRrAb1qYU9JoRLbDHpxnDunlNcEkEfhCvDDCM= github.com/jozsefsallai/gophersauce v1.0.1/go.mod h1:YVEI7djliMTmZ1Vh01YPF8bUHi+oKhe3yXgKf1T49vg= github.com/kanrichan/resvg-go v0.0.2-0.20231001163256-63db194ca9f5 h1:BXnB1Gz4y/zwQh+ZFNy7rgd+ZfMOrwRr4uZSHEI+ieY= @@ -183,7 +183,7 @@ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVs github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/tetratelabs/wazero v1.5.0 h1:Yz3fZHivfDiZFUXnWMPUoiW7s8tC1sjdBtlJn08qYa0= github.com/tetratelabs/wazero v1.5.0/go.mod h1:0U0G41+ochRKoPKCJlh0jMg1CHkyfK8kDqiirMmKY8A= github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= @@ -224,8 +224,8 @@ golang.org/x/image v0.0.0-20190220214146-31aff87c08e9/go.mod h1:kZ7UVZpmo3dzQBMx golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.18.0/go.mod h1:4yyo5vMFQjVjUcVk4jEQcU9MGy/rulF5WvUILseCM2E= -golang.org/x/image v0.24.0 h1:AN7zRgVsbvmTfNyqIbbOraYL8mSwcKncEj8ofjgzcMQ= -golang.org/x/image v0.24.0/go.mod h1:4b/ITuLfqYq1hqZcjofwctIhi7sZh2WaCjvsBNjjya8= +golang.org/x/image v0.31.0 h1:mLChjE2MV6g1S7oqbXC0/UcKijjm5fnJLUYKIYrLESA= +golang.org/x/image v0.31.0/go.mod h1:R9ec5Lcp96v9FTF+ajwaH3uGxPH4fKfHHAVbUILxghA= golang.org/x/mobile v0.0.0-20190415191353-3e0bab5405d6/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mobile v0.0.0-20231127183840-76ac6878050a h1:sYbmY3FwUWCBTodZL1S3JUuOvaW6kM2o+clDzzDNBWg= golang.org/x/mobile v0.0.0-20231127183840-76ac6878050a/go.mod h1:Ede7gF0KGoHlj822RtphAHK1jLdrcuRBZg0sF1Q+SPc= @@ -233,8 +233,8 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91 golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -257,7 +257,7 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= +golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -300,15 +300,15 @@ golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= -golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg= +golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= diff --git a/main.go b/main.go index 4de143cf..b874df7e 100644 --- a/main.go +++ b/main.go @@ -77,6 +77,8 @@ import ( _ "github.com/FloatTech/ZeroBot-Plugin/plugin/base64gua" // base64卦加解密 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/baseamasiro" // base天城文加解密 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/bilibili" // b站相关 + _ "github.com/FloatTech/ZeroBot-Plugin/plugin/bilibiliparse" // b站相关 + _ "github.com/FloatTech/ZeroBot-Plugin/plugin/bilibilipush" // b站相关 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/bookreview" // 哀伤雪刃吧推书记录 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/chess" // 国际象棋 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/choose" // 选择困难症帮手 diff --git a/plugin/animetrace/main.go b/plugin/animetrace/main.go index e738d18f..a02ec6f5 100644 --- a/plugin/animetrace/main.go +++ b/plugin/animetrace/main.go @@ -23,7 +23,7 @@ import ( ) func init() { - engine := control.Register("animetrace", &ctrl.Options[*zero.Ctx]{ + engine := control.AutoRegister(&ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Brief: "AnimeTrace 动画/Galgame识别插件", Help: "- Gal识图\n- 动漫识图\n- 动漫识图 2\n- 动漫识图 [模型名]\n- Gal识图 [模型名]", diff --git a/plugin/bilibili/bilibili.go b/plugin/bilibili/bilibili.go index f7f93358..187e7719 100644 --- a/plugin/bilibili/bilibili.go +++ b/plugin/bilibili/bilibili.go @@ -11,7 +11,6 @@ import ( "net/http" "os" "path" - "regexp" "sort" "strconv" "time" @@ -31,7 +30,6 @@ import ( ) var ( - re = regexp.MustCompile(`^\d+$`) danmakuTypeMap = map[int64]string{ 0: "普通消息", 1: "礼物", @@ -73,7 +71,7 @@ func init() { } return true }) - engine.OnRegex(`^>user info\s?(.{1,25})$`, getPara).SetBlock(true). + engine.OnRegex(`^>user info\s?(.{1,25})$`, bz.RequireUser(cfg)).SetBlock(true). Handle(func(ctx *zero.Ctx) { id := ctx.State["uid"].(string) card, err := bz.GetMemberCard(id) @@ -91,7 +89,7 @@ func init() { )) }) - engine.OnRegex(`^>vup info\s?(.{1,25})$`, getPara).SetBlock(true). + engine.OnRegex(`^>vup info\s?(.{1,25})$`, bz.RequireUser(cfg)).SetBlock(true). Handle(func(ctx *zero.Ctx) { id := ctx.State["uid"].(string) // 获取详情 @@ -114,7 +112,7 @@ func init() { )) }) - engine.OnRegex(`^查成分\s?(.{1,25})$`, getPara, getdb).SetBlock(true). + engine.OnRegex(`^查成分\s?(.{1,25})$`, bz.RequireUser(cfg), getdb).SetBlock(true). Handle(func(ctx *zero.Ctx) { id := ctx.State["uid"].(string) today := time.Now().Format("20060102") @@ -134,7 +132,7 @@ func init() { return } vupLen := len(vups) - medals, err := bz.GetMedalWall(cfg, id) + medals, err := cfg.GetMedalWall(id) sort.Sort(bz.MedalSorter(medals)) if err != nil { ctx.SendChain(message.Text("ERROR: ", err)) @@ -275,7 +273,7 @@ func init() { ctx.SendChain(message.Image("file:///" + file.BOTPATH + "/" + drawedFile)) }) - engine.OnRegex(`^查弹幕\s?(\S{1,25})\s?(\d*)$`, getPara).SetBlock(true).Handle(func(ctx *zero.Ctx) { + engine.OnRegex(`^查弹幕\s?(\S{1,25})\s?(\d*)$`, bz.RequireUser(cfg)).SetBlock(true).Handle(func(ctx *zero.Ctx) { id := ctx.State["uid"].(string) pagenum := ctx.State["regex_matched"].([]string)[2] if pagenum == "" { @@ -582,51 +580,3 @@ func int2rbg(t int64) (int64, int64, int64) { b, g, r := int64(buf[0]), int64(buf[1]), int64(buf[2]) return r, g, b } - -func getPara(ctx *zero.Ctx) bool { - keyword := ctx.State["regex_matched"].([]string)[1] - if !re.MatchString(keyword) { - searchRes, err := bz.SearchUser(cfg, keyword) - if err != nil { - ctx.SendChain(message.Text("ERROR: ", err)) - return false - } - ctx.State["uid"] = strconv.FormatInt(searchRes[0].Mid, 10) - return true - } - next := zero.NewFutureEvent("message", 999, false, ctx.CheckSession()) - recv, cancel := next.Repeat() - defer cancel() - ctx.SendChain(message.Text("输入为纯数字, 请选择查询uid还是用户名, 输入对应序号:\n0. 查询uid\n1. 查询用户名")) - for { - select { - case <-time.After(time.Second * 10): - ctx.SendChain(message.Text("时间太久啦!", zero.BotConfig.NickName[0], "帮你选择查询uid")) - ctx.State["uid"] = keyword - return true - case c := <-recv: - msg := c.Event.Message.ExtractPlainText() - num, err := strconv.Atoi(msg) - if err != nil { - ctx.SendChain(message.Text("请输入数字!")) - continue - } - if num < 0 || num > 1 { - ctx.SendChain(message.Text("序号非法!")) - continue - } - if num == 0 { - ctx.State["uid"] = keyword - return true - } else if num == 1 { - searchRes, err := bz.SearchUser(cfg, keyword) - if err != nil { - ctx.SendChain(message.Text("ERROR: ", err)) - return false - } - ctx.State["uid"] = strconv.FormatInt(searchRes[0].Mid, 10) - return true - } - } - } -} diff --git a/plugin/bilibili/card2msg.go b/plugin/bilibili/card2msg.go deleted file mode 100644 index d2dcc5fe..00000000 --- a/plugin/bilibili/card2msg.go +++ /dev/null @@ -1,342 +0,0 @@ -package bilibili - -import ( - "encoding/json" - "fmt" - "time" - - bz "github.com/FloatTech/AnimeAPI/bilibili" - "github.com/FloatTech/floatbox/binary" - "github.com/FloatTech/floatbox/web" - "github.com/wdvxdr1123/ZeroBot/message" -) - -var ( - msgType = map[int]string{ - 1: "转发了动态", - 2: "有图营业", - 4: "无图营业", - 8: "投稿了视频", - 16: "投稿了短视频", - 64: "投稿了文章", - 256: "投稿了音频", - 2048: "发布了简报", - 4200: "发布了直播", - 4308: "发布了直播", - } -) - -// dynamicCard2msg 处理DynCard -func dynamicCard2msg(dynamicCard *bz.DynamicCard) (msg []message.Segment, err error) { - var ( - card bz.Card - vote bz.Vote - cType int - ) - msg = make([]message.Segment, 0, 16) - // 初始化结构体 - err = json.Unmarshal(binary.StringToBytes(dynamicCard.Card), &card) - if err != nil { - return - } - if dynamicCard.Extension.Vote != "" { - err = json.Unmarshal(binary.StringToBytes(dynamicCard.Extension.Vote), &vote) - if err != nil { - return - } - } - cType = dynamicCard.Desc.Type - // 生成消息 - switch cType { - case 1: - msg = append(msg, message.Text(card.User.Uname, msgType[cType], "\n", - card.Item.Content, "\n", - "转发的内容: \n")) - var originMsg []message.Segment - var co bz.Card - co, err = bz.LoadCardDetail(card.Origin) - if err != nil { - return - } - originMsg, err = card2msg(dynamicCard, &co, card.Item.OrigType) - if err != nil { - return - } - msg = append(msg, originMsg...) - case 2: - msg = append(msg, message.Text(card.User.Name, "在", time.Unix(int64(card.Item.UploadTime), 0).Format("2006-01-02 15:04:05"), msgType[cType], "\n", - card.Item.Description)) - for i := 0; i < len(card.Item.Pictures); i++ { - msg = append(msg, message.Image(card.Item.Pictures[i].ImgSrc)) - } - case 4: - msg = append(msg, message.Text(card.User.Uname, "在", time.Unix(int64(card.Item.Timestamp), 0).Format("2006-01-02 15:04:05"), msgType[cType], "\n", - card.Item.Content, "\n")) - if dynamicCard.Extension.Vote != "" { - msg = append(msg, message.Text("【投票】", vote.Desc, "\n", - "截止日期: ", time.Unix(int64(vote.Endtime), 0).Format("2006-01-02 15:04:05"), "\n", - "参与人数: ", bz.HumanNum(vote.JoinNum), "\n", - "投票选项( 最多选择", vote.ChoiceCnt, "项 )\n")) - for i := 0; i < len(vote.Options); i++ { - msg = append(msg, message.Text("- ", vote.Options[i].Idx, ". ", vote.Options[i].Desc, "\n")) - if vote.Options[i].ImgURL != "" { - msg = append(msg, message.Image(vote.Options[i].ImgURL)) - } - } - } - case 8: - msg = append(msg, message.Text(card.Owner.Name, "在", time.Unix(int64(card.Pubdate), 0).Format("2006-01-02 15:04:05"), msgType[cType], "\n", - card.Title)) - msg = append(msg, message.Image(card.Pic)) - msg = append(msg, message.Text(card.Desc, "\n", - card.ShareSubtitle, "\n", - "视频链接: ", card.ShortLink, "\n")) - case 16: - msg = append(msg, message.Text(card.User.Name, "在", time.Unix(int64(card.Item.UploadTime), 0).Format("2006-01-02 15:04:05"), msgType[cType], "\n", - card.Item.Description)) - msg = append(msg, message.Image(card.Item.Cover.Default)) - case 64: - msg = append(msg, message.Text(card.Author.(map[string]any)["name"], "在", time.Unix(int64(card.PublishTime), 0).Format("2006-01-02 15:04:05"), msgType[cType], "\n", - card.Title, "\n", - card.Summary)) - for i := 0; i < len(card.ImageUrls); i++ { - msg = append(msg, message.Image(card.ImageUrls[i])) - } - if card.ID != 0 { - msg = append(msg, message.Text("文章链接: https://www.bilibili.com/read/cv", card.ID, "\n")) - } - case 256: - msg = append(msg, message.Text(card.Upper, "在", time.Unix(int64(card.Ctime), 0).Format("2006-01-02 15:04:05"), msgType[cType], "\n", - card.Title)) - msg = append(msg, message.Image(card.Cover)) - msg = append(msg, message.Text(card.Intro, "\n")) - if card.ID != 0 { - msg = append(msg, message.Text("音频链接: https://www.bilibili.com/audio/au", card.ID, "\n")) - } - - case 2048: - msg = append(msg, message.Text(card.User.Uname, msgType[cType], "\n", - card.Vest.Content, "\n", - card.Sketch.Title, "\n", - card.Sketch.DescText, "\n")) - msg = append(msg, message.Image(card.Sketch.CoverURL)) - msg = append(msg, message.Text("分享链接: ", card.Sketch.TargetURL, "\n")) - case 4308: - if dynamicCard.Desc.UserProfile.Info.Uname != "" { - msg = append(msg, message.Text(dynamicCard.Desc.UserProfile.Info.Uname, msgType[cType], "\n")) - } - msg = append(msg, message.Image(card.LivePlayInfo.Cover)) - msg = append(msg, message.Text("\n", card.LivePlayInfo.Title, "\n", - "房间号: ", card.LivePlayInfo.RoomID, "\n", - "分区: ", card.LivePlayInfo.ParentAreaName)) - if card.LivePlayInfo.ParentAreaName != card.LivePlayInfo.AreaName { - msg = append(msg, message.Text("-", card.LivePlayInfo.AreaName)) - } - if card.LivePlayInfo.LiveStatus == 0 { - msg = append(msg, message.Text("未开播 \n")) - } else { - msg = append(msg, message.Text("直播中 ", card.LivePlayInfo.WatchedShow, "\n")) - } - msg = append(msg, message.Text("直播链接: ", card.LivePlayInfo.Link)) - default: - msg = append(msg, message.Text("动态id: ", dynamicCard.Desc.DynamicIDStr, "未知动态类型: ", cType, "\n")) - } - if dynamicCard.Desc.DynamicIDStr != "" { - msg = append(msg, message.Text("动态链接: ", bz.TURL, dynamicCard.Desc.DynamicIDStr)) - } - return -} - -// card2msg cType=1, 2, 4, 8, 16, 64, 256, 2048, 4200, 4308时,处理Card字符串,cType为card类型 -func card2msg(dynamicCard *bz.DynamicCard, card *bz.Card, cType int) (msg []message.Segment, err error) { - var ( - vote bz.Vote - ) - msg = make([]message.Segment, 0, 16) - // 生成消息 - switch cType { - case 1: - msg = append(msg, message.Text(card.User.Uname, msgType[cType], "\n", - card.Item.Content, "\n", - "转发的内容: \n")) - var originMsg []message.Segment - var co bz.Card - co, err = bz.LoadCardDetail(card.Origin) - if err != nil { - return - } - originMsg, err = card2msg(dynamicCard, &co, card.Item.OrigType) - if err != nil { - return - } - msg = append(msg, originMsg...) - case 2: - msg = append(msg, message.Text(card.User.Name, "在", time.Unix(int64(card.Item.UploadTime), 0).Format("2006-01-02 15:04:05"), msgType[cType], "\n", - card.Item.Description)) - for i := 0; i < len(card.Item.Pictures); i++ { - msg = append(msg, message.Image(card.Item.Pictures[i].ImgSrc)) - } - case 4: - msg = append(msg, message.Text(card.User.Uname, "在", time.Unix(int64(card.Item.Timestamp), 0).Format("2006-01-02 15:04:05"), msgType[cType], "\n", - card.Item.Content, "\n")) - if dynamicCard.Extension.Vote != "" { - msg = append(msg, message.Text("【投票】", vote.Desc, "\n", - "截止日期: ", time.Unix(int64(vote.Endtime), 0).Format("2006-01-02 15:04:05"), "\n", - "参与人数: ", bz.HumanNum(vote.JoinNum), "\n", - "投票选项( 最多选择", vote.ChoiceCnt, "项 )\n")) - for i := 0; i < len(vote.Options); i++ { - msg = append(msg, message.Text("- ", vote.Options[i].Idx, ". ", vote.Options[i].Desc, "\n")) - if vote.Options[i].ImgURL != "" { - msg = append(msg, message.Image(vote.Options[i].ImgURL)) - } - } - } - case 8: - msg = append(msg, message.Text(card.Owner.Name, "在", time.Unix(int64(card.Pubdate), 0).Format("2006-01-02 15:04:05"), msgType[cType], "\n", - card.Title)) - msg = append(msg, message.Image(card.Pic)) - msg = append(msg, message.Text(card.Desc, "\n", - card.ShareSubtitle, "\n", - "视频链接: ", card.ShortLink, "\n")) - case 16: - msg = append(msg, message.Text(card.User.Name, "在", time.Unix(int64(card.Item.UploadTime), 0).Format("2006-01-02 15:04:05"), msgType[cType], "\n", - card.Item.Description)) - msg = append(msg, message.Image(card.Item.Cover.Default)) - case 64: - msg = append(msg, message.Text(card.Author.(map[string]any)["name"], "在", time.Unix(int64(card.PublishTime), 0).Format("2006-01-02 15:04:05"), msgType[cType], "\n", - card.Title, "\n", - card.Summary)) - for i := 0; i < len(card.ImageUrls); i++ { - msg = append(msg, message.Image(card.ImageUrls[i])) - } - if card.ID != 0 { - msg = append(msg, message.Text("文章链接: https://www.bilibili.com/read/cv", card.ID, "\n")) - } - case 256: - msg = append(msg, message.Text(card.Upper, "在", time.Unix(int64(card.Ctime), 0).Format("2006-01-02 15:04:05"), msgType[cType], "\n", - card.Title)) - msg = append(msg, message.Image(card.Cover)) - msg = append(msg, message.Text(card.Intro, "\n")) - if card.ID != 0 { - msg = append(msg, message.Text("音频链接: https://www.bilibili.com/audio/au", card.ID, "\n")) - } - - case 2048: - msg = append(msg, message.Text(card.User.Uname, msgType[cType], "\n", - card.Vest.Content, "\n", - card.Sketch.Title, "\n", - card.Sketch.DescText, "\n")) - msg = append(msg, message.Image(card.Sketch.CoverURL)) - msg = append(msg, message.Text("分享链接: ", card.Sketch.TargetURL, "\n")) - case 4308: - if dynamicCard.Desc.UserProfile.Info.Uname != "" { - msg = append(msg, message.Text(dynamicCard.Desc.UserProfile.Info.Uname, msgType[cType], "\n")) - } - msg = append(msg, message.Image(card.LivePlayInfo.Cover)) - msg = append(msg, message.Text("\n", card.LivePlayInfo.Title, "\n", - "房间号: ", card.LivePlayInfo.RoomID, "\n", - "分区: ", card.LivePlayInfo.ParentAreaName)) - if card.LivePlayInfo.ParentAreaName != card.LivePlayInfo.AreaName { - msg = append(msg, message.Text("-", card.LivePlayInfo.AreaName)) - } - if card.LivePlayInfo.LiveStatus == 0 { - msg = append(msg, message.Text("未开播 \n")) - } else { - msg = append(msg, message.Text("直播中 ", card.LivePlayInfo.WatchedShow, "\n")) - } - msg = append(msg, message.Text("直播链接: ", card.LivePlayInfo.Link)) - default: - msg = append(msg, message.Text("动态id: ", dynamicCard.Desc.DynamicIDStr, "未知动态类型: ", cType, "\n")) - } - if dynamicCard.Desc.DynamicIDStr != "" { - msg = append(msg, message.Text("动态链接: ", bz.TURL, dynamicCard.Desc.DynamicIDStr)) - } - return -} - -// dynamicDetail 用动态id查动态信息 -func dynamicDetail(cookiecfg *bz.CookieConfig, dynamicIDStr string) (msg []message.Segment, err error) { - dyc, err := bz.GetDynamicDetail(cookiecfg, dynamicIDStr) - if err != nil { - return - } - return dynamicCard2msg(&dyc) -} - -// articleCard2msg 专栏转消息 -func articleCard2msg(card bz.Card, defaultID string) (msg []message.Segment) { - msg = make([]message.Segment, 0, 16) - for i := 0; i < len(card.OriginImageUrls); i++ { - msg = append(msg, message.Image(card.OriginImageUrls[i])) - } - msg = append(msg, message.Text("\n", card.Title, "\n", "UP主: ", card.AuthorName, "\n", - "阅读: ", bz.HumanNum(card.Stats.View), " 评论: ", bz.HumanNum(card.Stats.Reply), "\n", - bz.CVURL, defaultID)) - return -} - -// liveCard2msg 直播卡片转消息 -func liveCard2msg(card bz.RoomCard) (msg []message.Segment) { - msg = make([]message.Segment, 0, 16) - msg = append(msg, message.Image(card.RoomInfo.Keyframe)) - msg = append(msg, message.Text("\n", card.RoomInfo.Title, "\n", - "主播: ", card.AnchorInfo.BaseInfo.Uname, "\n", - "房间号: ", card.RoomInfo.RoomID, "\n")) - if card.RoomInfo.ShortID != 0 { - msg = append(msg, message.Text("短号: ", card.RoomInfo.ShortID, "\n")) - } - msg = append(msg, message.Text("分区: ", card.RoomInfo.ParentAreaName)) - if card.RoomInfo.ParentAreaName != card.RoomInfo.AreaName { - msg = append(msg, message.Text("-", card.RoomInfo.AreaName)) - } - if card.RoomInfo.LiveStatus == 0 { - msg = append(msg, message.Text("未开播 \n")) - } else { - msg = append(msg, message.Text("直播中 ", bz.HumanNum(card.RoomInfo.Online), "人气\n")) - } - if card.RoomInfo.ShortID != 0 { - msg = append(msg, message.Text("直播间链接: ", bz.LURL, card.RoomInfo.ShortID)) - } else { - msg = append(msg, message.Text("直播间链接: ", bz.LURL, card.RoomInfo.RoomID)) - } - - return -} - -// videoCard2msg 视频卡片转消息 -func videoCard2msg(card bz.Card) (msg []message.Segment, err error) { - var ( - mCard bz.MemberCard - onlineTotal bz.OnlineTotal - ) - msg = make([]message.Segment, 0, 16) - mCard, err = bz.GetMemberCard(card.Owner.Mid) - msg = append(msg, message.Text("标题: ", card.Title, "\n")) - if card.Rights.IsCooperation == 1 { - for i := 0; i < len(card.Staff); i++ { - msg = append(msg, message.Text(card.Staff[i].Title, ": ", card.Staff[i].Name, " 粉丝: ", bz.HumanNum(card.Staff[i].Follower), "\n")) - } - } else { - if err != nil { - msg = append(msg, message.Text("UP主: ", card.Owner.Name, "\n")) - } else { - msg = append(msg, message.Text("UP主: ", card.Owner.Name, " 粉丝: ", bz.HumanNum(mCard.Fans), "\n")) - } - } - msg = append(msg, message.Image(card.Pic)) - data, err := web.GetData(fmt.Sprintf(bz.OnlineTotalURL, card.BvID, card.CID)) - if err != nil { - return - } - err = json.Unmarshal(data, &onlineTotal) - if err != nil { - return - } - msg = append(msg, message.Text("👀播放: ", bz.HumanNum(card.Stat.View), " 💬弹幕: ", bz.HumanNum(card.Stat.Danmaku), - "\n👍点赞: ", bz.HumanNum(card.Stat.Like), " 💰投币: ", bz.HumanNum(card.Stat.Coin), - "\n📁收藏: ", bz.HumanNum(card.Stat.Favorite), " 🔗分享: ", bz.HumanNum(card.Stat.Share), - "\n📝简介: ", card.Desc, - "\n🏄‍♂️ 总共 ", onlineTotal.Data.Total, " 人在观看,", onlineTotal.Data.Count, " 人在网页端观看\n", - bz.VURL, card.BvID, "\n\n")) - return -} diff --git a/plugin/bilibili/card2msg_test.go b/plugin/bilibili/card2msg_test.go deleted file mode 100644 index 5d85d775..00000000 --- a/plugin/bilibili/card2msg_test.go +++ /dev/null @@ -1,55 +0,0 @@ -package bilibili - -import ( - "testing" - - bz "github.com/FloatTech/AnimeAPI/bilibili" -) - -func TestArticleInfo(t *testing.T) { - card, err := bz.GetArticleInfo("17279244") - if err != nil { - t.Fatal(err) - } - t.Log(articleCard2msg(card, "17279244")) - -} - -func TestMemberCard(t *testing.T) { - card, err := bz.GetMemberCard(2) - if err != nil { - t.Fatal(err) - } - t.Logf("%+v\n", card) -} - -func TestVideoInfo(t *testing.T) { - card, err := bz.GetVideoInfo("10007") - if err != nil { - t.Fatal(err) - } - t.Log(videoCard2msg(card)) - card, err = bz.GetVideoInfo("BV1xx411c7mD") - if err != nil { - t.Fatal(err) - } - t.Log(videoCard2msg(card)) - card, err = bz.GetVideoInfo("bv1xx411c7mD") - if err != nil { - t.Fatal(err) - } - t.Log(videoCard2msg(card)) - card, err = bz.GetVideoInfo("BV1mF411j7iU") - if err != nil { - t.Fatal(err) - } - t.Log(videoCard2msg(card)) -} - -func TestLiveRoomInfo(t *testing.T) { - card, err := bz.GetLiveRoomInfo("83171", "b_ut=7;buvid3=0;i-wanna-go-back=-1;innersign=0;") - if err != nil { - t.Fatal(err) - } - t.Log(liveCard2msg(card)) -} diff --git a/plugin/bilibili/bilibilimodel.go b/plugin/bilibili/model.go similarity index 100% rename from plugin/bilibili/bilibilimodel.go rename to plugin/bilibili/model.go diff --git a/plugin/bilibili/bilibili_parse.go b/plugin/bilibiliparse/parse.go similarity index 94% rename from plugin/bilibili/bilibili_parse.go rename to plugin/bilibiliparse/parse.go index 81dd03bd..ab8a9bde 100644 --- a/plugin/bilibili/bilibili_parse.go +++ b/plugin/bilibiliparse/parse.go @@ -1,5 +1,5 @@ -// Package bilibili bilibili卡片解析 -package bilibili +// Package bilibiliparse bilibili卡片解析 +package bilibiliparse import ( "bytes" @@ -29,6 +29,7 @@ const ( enableVideoDownload = int64(0x20) disableVideoDownload = ^enableVideoDownload bilibiliparseReferer = "https://www.bilibili.com" + ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36" ) var ( @@ -42,11 +43,12 @@ var ( searchArticleRe = regexp.MustCompile(searchArticle) searchLiveRoomRe = regexp.MustCompile(searchLiveRoom) cachePath string + cfg = bz.NewCookieConfig("data/Bilibili/config.json") ) // 插件主体 func init() { - en := control.Register("bilibiliparse", &ctrl.Options[*zero.Ctx]{ + en := control.AutoRegister(&ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Brief: "b站链接解析", Help: "例:- t.bilibili.com/642277677329285174\n- bilibili.com/read/cv17134450\n- bilibili.com/video/BV13B4y1x7pS\n- live.bilibili.com/22603245 ", @@ -152,7 +154,7 @@ func handleVideo(ctx *zero.Ctx) { ctx.SendChain(message.Text("ERROR: ", err)) return } - msg, err := videoCard2msg(card) + msg, err := card.ToVideoMessage() if err != nil { ctx.SendChain(message.Text("ERROR: ", err)) return @@ -178,7 +180,7 @@ func handleVideo(ctx *zero.Ctx) { } func handleDynamic(ctx *zero.Ctx) { - msg, err := dynamicDetail(cfg, ctx.State["regex_matched"].([]string)[2]) + msg, err := cfg.GetDetailMessage(ctx.State["regex_matched"].([]string)[2]) if err != nil { ctx.SendChain(message.Text("ERROR: ", err)) return @@ -192,7 +194,7 @@ func handleArticle(ctx *zero.Ctx) { ctx.SendChain(message.Text("ERROR: ", err)) return } - ctx.SendChain(articleCard2msg(card, ctx.State["regex_matched"].([]string)[1])...) + ctx.SendChain(card.ToArticleMessage(ctx.State["regex_matched"].([]string)[1])...) } func handleLive(ctx *zero.Ctx) { @@ -206,7 +208,7 @@ func handleLive(ctx *zero.Ctx) { ctx.SendChain(message.Text("ERROR: ", err)) return } - ctx.SendChain(liveCard2msg(card)...) + ctx.SendChain(card.ToMessage()...) } // getVideoSummary AI视频总结 diff --git a/plugin/bilibili/bilibilipush.go b/plugin/bilibilipush/bilibilipush.go similarity index 95% rename from plugin/bilibili/bilibilipush.go rename to plugin/bilibilipush/bilibilipush.go index 52310db2..b0dcef01 100644 --- a/plugin/bilibili/bilibilipush.go +++ b/plugin/bilibilipush/bilibilipush.go @@ -1,5 +1,5 @@ -// Package bilibili b站推送 -package bilibili +// Package bilibilipush b站推送 +package bilibilipush import ( "bytes" @@ -34,10 +34,11 @@ var ( lastTime = map[int64]int64{} liveStatus = map[int64]int{} upMap = map[int64]string{} + cfg = bz.NewCookieConfig("data/Bilibili/config.json") ) func init() { - en := control.Register("bilibilipush", &ctrl.Options[*zero.Ctx]{ + en := control.AutoRegister(&ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Brief: "b站推送", Help: "- 添加b站订阅[uid|name]\n" + @@ -75,7 +76,7 @@ func init() { ctx.SendChain(message.Text("已关闭艾特全体Oo")) }) - en.OnRegex(`^添加[B|b]站订阅\s?(.{1,25})$`, zero.UserOrGrpAdmin, getPara).SetBlock(true).Handle(func(ctx *zero.Ctx) { + en.OnRegex(`^添加[B|b]站订阅\s?(.{1,25})$`, zero.UserOrGrpAdmin, bz.RequireUser(cfg)).SetBlock(true).Handle(func(ctx *zero.Ctx) { buid, _ := strconv.ParseInt(ctx.State["uid"].(string), 10, 64) name, err := getName(buid, cfg) if err != nil || name == "" { @@ -93,7 +94,7 @@ func init() { ctx.SendChain(message.Text("已添加" + name + "的订阅")) }) - en.OnRegex(`^取消[B|b]站订阅\s?(.{1,25})$`, zero.UserOrGrpAdmin, getPara).SetBlock(true).Handle(func(ctx *zero.Ctx) { + en.OnRegex(`^取消[B|b]站订阅\s?(.{1,25})$`, zero.UserOrGrpAdmin, bz.RequireUser(cfg)).SetBlock(true).Handle(func(ctx *zero.Ctx) { buid, _ := strconv.ParseInt(ctx.State["uid"].(string), 10, 64) name, err := getName(buid, cfg) if err != nil { @@ -110,7 +111,7 @@ func init() { } ctx.SendChain(message.Text("已取消" + name + "的订阅")) }) - en.OnRegex(`^取消[B|b]站动态订阅\s?(.{1,25})$`, zero.UserOrGrpAdmin, getPara).SetBlock(true).Handle(func(ctx *zero.Ctx) { + en.OnRegex(`^取消[B|b]站动态订阅\s?(.{1,25})$`, zero.UserOrGrpAdmin, bz.RequireUser(cfg)).SetBlock(true).Handle(func(ctx *zero.Ctx) { buid, _ := strconv.ParseInt(ctx.State["uid"].(string), 10, 64) name, err := getName(buid, cfg) if err != nil { @@ -127,7 +128,7 @@ func init() { } ctx.SendChain(message.Text("已取消" + name + "的动态订阅")) }) - en.OnRegex(`^取消[B|b]站直播订阅\s?(.{1,25})$`, zero.UserOrGrpAdmin, getPara).SetBlock(true).Handle(func(ctx *zero.Ctx) { + en.OnRegex(`^取消[B|b]站直播订阅\s?(.{1,25})$`, zero.UserOrGrpAdmin, bz.RequireUser(cfg)).SetBlock(true).Handle(func(ctx *zero.Ctx) { buid, _ := strconv.ParseInt(ctx.State["uid"].(string), 10, 64) gid := ctx.Event.GroupID if gid == 0 { @@ -333,7 +334,7 @@ func sendDynamic(ctx *zero.Ctx) error { err = errors.Errorf("动态%v的解析有问题,%v", cardList[i].Get("desc.dynamic_id_str"), err) return err } - msg, err := dynamicCard2msg(&dc) + msg, err := dc.ToMessage() if err != nil { err = errors.Errorf("动态%v的解析有问题,%v", cardList[i].Get("desc.dynamic_id_str"), err) return err diff --git a/plugin/bilibili/bilibilipushmodel.go b/plugin/bilibilipush/model.go similarity index 99% rename from plugin/bilibili/bilibilipushmodel.go rename to plugin/bilibilipush/model.go index 8e79a402..db2e4027 100644 --- a/plugin/bilibili/bilibilipushmodel.go +++ b/plugin/bilibilipush/model.go @@ -1,4 +1,4 @@ -package bilibili +package bilibilipush import ( "encoding/json"