From 7401a0cbeccfc3cfb14f516227b558daf62a8574 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: Thu, 14 Apr 2022 17:09:28 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20=E4=BC=98=E5=8C=96=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 27 ++++++++++- config.go | 13 ++++++ go.mod | 7 +-- go.sum | 34 ++++---------- main.go | 92 ++++++++++++++++++++++++++----------- plugin/acgimage/classify.go | 4 +- plugin/chat/chat.go | 2 +- plugin/diana/zhiwang.go | 2 +- plugin/wordle/wordle.go | 4 +- 9 files changed, 123 insertions(+), 62 deletions(-) create mode 100644 config.go diff --git a/README.md b/README.md index 523eddb1..fd4f826f 100644 --- a/README.md +++ b/README.md @@ -29,9 +29,11 @@ ## 命令行参数 > `[]`代表是可选参数 ```bash -zerobot [-h] [-t token] [-u url] [-n nickname] [-p prefix] [-d|w] [-g 监听地址:端口] [qq1 qq2 qq3 ...] [&] +zerobot [-c config.json] [-h] [-s config.json] [-t token] [-u url] [-n nickname] [-p prefix] [-d|w] [-g 监听地址:端口] [qq1 qq2 qq3 ...] [&] ``` +- **-c config.json**: 从`config.json`加载`bot`配置 - **-h**: 显示帮助 +- **-s config.json**: 保存现在`bot`配置到`config.json` - **-t token**: 设置`AccessToken`,默认为空 - **-u url**: 设置`Url`,默认为`ws://127.0.0.1:6700` - **-n nickname**: 设置默认昵称,默认为`椛椛` @@ -41,6 +43,29 @@ zerobot [-h] [-t token] [-u url] [-n nickname] [-p prefix] [-d|w] [-g 监听地 - **qqs**: superusers 的 qq 号 - **&**: 驻留在后台,必须放在最后,仅`Linux`下有效 +默认配置文件格式如下。当选择从配置文件加载时,将忽略相应命令行参数。 +```json +{ + "zero": { + "nickname": [ + "椛椛", + "ATRI", + "atri", + "亚托莉", + "アトリ" + ], + "command_prefix": "/", + "super_users": [] + }, + "ws": [ + { + "Url": "ws://127.0.0.1:6700", + "AccessToken": "" + } + ] +} +``` + ## 功能 > 在编译时,以下功能除插件控制外,均可通过注释`main.go`中的相应`import`而物理禁用,减小插件体积。 > 通过插件控制,还可动态管理某个功能在某个群的打开/关闭。 diff --git a/config.go b/config.go new file mode 100644 index 00000000..42984f95 --- /dev/null +++ b/config.go @@ -0,0 +1,13 @@ +package main + +import ( + zero "github.com/wdvxdr1123/ZeroBot" + "github.com/wdvxdr1123/ZeroBot/driver" +) + +type zbpcfg struct { + Z zero.Config `json:"zero"` + W []*driver.WSClient `json:"ws"` +} + +var config zbpcfg diff --git a/go.mod b/go.mod index 959a4300..e7056343 100644 --- a/go.mod +++ b/go.mod @@ -3,9 +3,9 @@ module github.com/FloatTech/ZeroBot-Plugin go 1.18 require ( - github.com/FloatTech/AnimeAPI v1.3.3-0.20220410083138-383dcb35d1a6 + github.com/FloatTech/AnimeAPI v1.3.3-0.20220414074426-878b31943a9b github.com/FloatTech/sqlite v0.2.1 - github.com/FloatTech/zbputils v1.3.3-0.20220410061344-76381cb2680b + github.com/FloatTech/zbputils v1.3.3-0.20220414074216-3fe2fb332371 github.com/antchfx/htmlquery v1.2.4 github.com/corona10/goimagehash v1.0.3 github.com/fogleman/gg v1.3.0 @@ -23,11 +23,12 @@ require ( github.com/sirupsen/logrus v1.8.1 github.com/tidwall/gjson v1.14.0 github.com/wcharczuk/go-chart/v2 v2.1.0 - github.com/wdvxdr1123/ZeroBot v1.4.2-0.20220330050111-d962c23b4f4d + github.com/wdvxdr1123/ZeroBot v1.4.2-0.20220414063422-1ca81bc47496 golang.org/x/image v0.0.0-20220321031419-a8550c1d254a ) require ( + github.com/RomiChan/syncx v0.0.0-20220404072119-d7ea0ae15a4c // indirect github.com/RomiChan/websocket v1.4.3-0.20220123145318-307a86b127bc // indirect github.com/antchfx/xpath v1.2.0 // indirect github.com/disintegration/imaging v1.6.2 // indirect diff --git a/go.sum b/go.sum index 58c46231..fbc41aea 100644 --- a/go.sum +++ b/go.sum @@ -1,10 +1,12 @@ -github.com/FloatTech/AnimeAPI v1.3.3-0.20220410083138-383dcb35d1a6 h1:dGqbtt8P4mRi6lyrhJqnrAh6zWzgp9FQczVPguTxbEc= -github.com/FloatTech/AnimeAPI v1.3.3-0.20220410083138-383dcb35d1a6/go.mod h1:PeW8oiwtYTq/5MV2DH8Qk4d4+JH2Q8Lr/rBDB6abfKA= +github.com/FloatTech/AnimeAPI v1.3.3-0.20220414074426-878b31943a9b h1:9wvS99e1838XnQWmhW1Ya2OEbydpN5dvNGTpOF/XpXU= +github.com/FloatTech/AnimeAPI v1.3.3-0.20220414074426-878b31943a9b/go.mod h1:MGVkR1LFoP6aTQCXlZKG0t9pGIdKESrXAc8SdU5ypHo= 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.3.3-0.20220410061344-76381cb2680b h1:+wKay8fMICVkV2Jg0qwxvJlb9PAA8yGJHJOBrfdmgHk= -github.com/FloatTech/zbputils v1.3.3-0.20220410061344-76381cb2680b/go.mod h1:V2Y8jkxjwACWuJsDCyNVKc+qABfMAUh/mgBYdWBxOPo= +github.com/FloatTech/zbputils v1.3.3-0.20220414074216-3fe2fb332371 h1:nb5UF/WXDX5ATh0OYFa1FUU1NMzIBpRhiEhxDMMeIXg= +github.com/FloatTech/zbputils v1.3.3-0.20220414074216-3fe2fb332371/go.mod h1:J6+PC/yjgnMEKVbaIyYxSGxKPb9mGjLWeJLfdJZH8RU= 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= github.com/RomiChan/websocket v1.4.3-0.20220123145318-307a86b127bc h1:AAx50/fb/xS4lvsdQg+bFbGvqSDhyV1MF+p2PLCamZ0= github.com/RomiChan/websocket v1.4.3-0.20220123145318-307a86b127bc/go.mod h1:OMmITAib6POA37xCichWM0aRnoVpSMZO1rB/G01wrr0= github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= @@ -28,7 +30,6 @@ github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5 h1:Yzb9+7DP github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0= github.com/fogleman/gg v1.3.0 h1:/7zJX8F6AaYQc57WQCyN9cAIz+4bCJGO9B+dyW29am8= github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fumiama/cron v1.3.0 h1:ZWlwuexF+HQHl3cYytEE5HNwD99q+3vNZF1GrEiXCFo= github.com/fumiama/cron v1.3.0/go.mod h1:bz5Izvgi/xEUI8tlBN8BI2jr9Moo8N4or0KV8xXuPDY= github.com/fumiama/go-base16384 v1.4.0 h1:4KrtewnmAChrZjPA7/QYc72t+vvsKF+DYB0q1iRPdpo= @@ -53,15 +54,12 @@ github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGw github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= 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= @@ -69,7 +67,6 @@ github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkr 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/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/lib/pq v1.1.1 h1:sJZmqHoEaY7f+NPP8pgLB/WxulyR3fewgCM2qaSlBb4= github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= @@ -85,9 +82,6 @@ github.com/mroth/weightedrand v0.4.1 h1:rHcbUBopmi/3x4nnrvwGJBhX9d0vk+KgoLUZeDP6 github.com/mroth/weightedrand v0.4.1/go.mod h1:3p2SIcC8al1YMzGhAIoXD+r9olo/g/cdJgAD905gyNE= github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ= github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/pkumza/numcn v1.0.0 h1:ZT5cf9IJkUZgRgEtCiNNykk0RwsrKXSTsvDHOwUTzgE= github.com/pkumza/numcn v1.0.0/go.mod h1:QSeH+al9dWCd8di5HZM/ZqHqhZmUKfph572e9Ev/ETc= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -99,18 +93,13 @@ github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 h1:OdAsTTz6O github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/shirou/gopsutil/v3 v3.22.2 h1:wCrArWFkHYIdDxx/FSfF5RB4dpJYW6t7rcp3+zL8uks= github.com/shirou/gopsutil/v3 v3.22.2/go.mod h1:WapW1AOOPlHyXr+yOyw3uYx36enocrtSoSBy0L5vUHY= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= -github.com/t-tomalak/logrus-easy-formatter v0.0.0-20190827215021-c074f06c5816/go.mod h1:tzym/CEb5jnFI+Q0k4Qq3+LvRF4gO3E2pxS8fHP8jcA= -github.com/tidwall/gjson v1.13.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.14.0 h1:6aeJ0bzojgWLa82gDQHcx3S0Lr/O51I9bJ5nv6JFx5w= github.com/tidwall/gjson v1.14.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= @@ -125,8 +114,8 @@ github.com/tklauser/numcpus v0.4.0 h1:E53Dm1HjH1/R2/aoCtXtPgzmElmn51aOkhCFSuZq// github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ= github.com/wcharczuk/go-chart/v2 v2.1.0 h1:tY2slqVQ6bN+yHSnDYwZebLQFkphK4WNrVwnt7CJZ2I= github.com/wcharczuk/go-chart/v2 v2.1.0/go.mod h1:yx7MvAVNcP/kN9lKXM/NTce4au4DFN99j6i1OwDclNA= -github.com/wdvxdr1123/ZeroBot v1.4.2-0.20220330050111-d962c23b4f4d h1:NGea1vhhGuvv7E6sPeUyPyTxCtCkEVn8ShNniZY9bQA= -github.com/wdvxdr1123/ZeroBot v1.4.2-0.20220330050111-d962c23b4f4d/go.mod h1:NwXIp7PgjV+kUALMXJ4v4/3QcsRSOodtjhLekuPXFog= +github.com/wdvxdr1123/ZeroBot v1.4.2-0.20220414063422-1ca81bc47496 h1:4ANuTo7sm2cjy6cnYEKjr2JnCsaeonVC+QSqDWI5RZo= +github.com/wdvxdr1123/ZeroBot v1.4.2-0.20220414063422-1ca81bc47496/go.mod h1:/DiS/UKTmGtOys9am9bA4i4/jOgXaoEHkjJRjuA/oZs= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= @@ -142,7 +131,6 @@ golang.org/x/image v0.0.0-20220321031419-a8550c1d254a h1:LnH9RNcpPv5Kzi15lXg42lY golang.org/x/image v0.0.0-20220321031419-a8550c1d254a/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -151,13 +139,10 @@ golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20220325170049-de3da57026de h1:pZB1TWnKi+o4bENlbzAgLrEbY4RMYmUIRobMcSmfeYc= golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -188,9 +173,6 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= diff --git a/main.go b/main.go index b0ae6df8..4d7c5e74 100644 --- a/main.go +++ b/main.go @@ -1,10 +1,12 @@ package main import ( + "encoding/json" "flag" "fmt" "math/rand" "os" + "strconv" "time" "github.com/FloatTech/ZeroBot-Plugin/kanban" // 在最前打印 banner @@ -157,31 +159,26 @@ import ( // -----------------------以上为内置依赖,勿动------------------------ // ) -var ( - nicks = []string{"ATRI", "atri", "亚托莉", "アトリ"} - token *string - url *string - adana *string - prefix *string -) - func init() { + sus := make([]int64, 0, 16) // 解析命令行参数 + // 输入 `-g 监听地址:端口` 指定 gui 访问地址,默认 127.0.0.1:3000 + // g := flag.String("g", "127.0.0.1:3000", "Set web gui listening address.") d := flag.Bool("d", false, "Enable debug level log and higher.") w := flag.Bool("w", false, "Enable warning level log and higher.") h := flag.Bool("h", false, "Display this help.") - // 解析命令行参数,输入 `-g 监听地址:端口` 指定 gui 访问地址,默认 127.0.0.1:3000 - // g := flag.String("g", "127.0.0.1:3000", "Set web gui listening address.") - // 直接写死 AccessToken 时,请更改下面第二个参数 - token = flag.String("t", "", "Set AccessToken of WSClient.") + token := flag.String("t", "", "Set AccessToken of WSClient.") // 直接写死 URL 时,请更改下面第二个参数 - url = flag.String("u", "ws://127.0.0.1:6700", "Set Url of WSClient.") + url := flag.String("u", "ws://127.0.0.1:6700", "Set Url of WSClient.") // 默认昵称 - adana = flag.String("n", "椛椛", "Set default nickname.") - prefix = flag.String("p", "/", "Set command prefix.") + adana := flag.String("n", "椛椛", "Set default nickname.") + prefix := flag.String("p", "/", "Set command prefix.") + runcfg := flag.String("c", "", "Run from config file.") + save := flag.String("s", "", "Save default config to file and exit.") flag.Parse() + if *h { kanban.PrintBanner() fmt.Println("Usage:") @@ -196,8 +193,61 @@ func init() { } } + for _, s := range flag.Args() { + i, err := strconv.ParseInt(s, 10, 64) + if err != nil { + continue + } + sus = append(sus, i) + } + + // 通过代码写死的方式添加主人账号 + // sus = append(sus, 12345678) + // sus = append(sus, 87654321) + // 启用 gui // webctrl.InitGui(*g) + + if *runcfg != "" { + f, err := os.Open(*runcfg) + if err != nil { + panic(err) + } + config.W = make([]*driver.WSClient, 0, 2) + err = json.NewDecoder(f).Decode(&config) + f.Close() + if err != nil { + panic(err) + } + config.Z.Driver = make([]zero.Driver, len(config.W)) + for i, w := range config.W { + config.Z.Driver[i] = w + } + logrus.Infoln("[main] 从", *runcfg, "读取配置文件") + return + } + + config.W = []*driver.WSClient{driver.NewWebSocketClient(*url, *token)} + config.Z = zero.Config{ + NickName: append([]string{*adana}, "ATRI", "atri", "亚托莉", "アトリ"), + CommandPrefix: *prefix, + SuperUsers: sus, + Driver: []zero.Driver{config.W[0]}, + } + + if *save != "" { + f, err := os.Create(*save) + if err != nil { + panic(err) + } + err = json.NewEncoder(f).Encode(&config) + f.Close() + if err != nil { + panic(err) + } + logrus.Infoln("[main] 配置文件已保存到", *save) + os.Exit(0) + } } func main() { @@ -211,15 +261,5 @@ func main() { Handle(func(ctx *zero.Ctx) { ctx.SendChain(message.Text(kanban.Kanban())) }) - zero.RunAndBlock( - zero.Config{ - NickName: append([]string{*adana}, nicks...), - CommandPrefix: *prefix, - // SuperUsers 某些功能需要主人权限,可通过以下两种方式修改 - // SuperUsers: []string{"12345678", "87654321"}, // 通过代码写死的方式添加主人账号 - SuperUsers: flag.Args(), // 通过命令行参数的方式添加主人账号 - Driver: []zero.Driver{driver.NewWebSocketClient(*url, *token)}, - }, - process.GlobalInitMutex.Unlock, - ) + zero.RunAndBlock(config.Z, process.GlobalInitMutex.Unlock) } diff --git a/plugin/acgimage/classify.go b/plugin/acgimage/classify.go index 05afb4f0..6f273786 100644 --- a/plugin/acgimage/classify.go +++ b/plugin/acgimage/classify.go @@ -76,13 +76,13 @@ func init() { // 插件主体 } else { url = randapi } - setLastMsg(ctx.Event.GroupID, message.NewMessageID( + setLastMsg(ctx.Event.GroupID, message.NewMessageIDFromInteger( ctx.SendGroupForwardMessage(ctx.Event.GroupID, message.Message{ ctxext.FakeSenderForwardNode(ctx, message.Image(url).Add("cache", "0"), ), - }).Get("message_id").String())) + }).Get("message_id").Int())) block = false } }) diff --git a/plugin/chat/chat.go b/plugin/chat/chat.go index 34308e08..9e4bbf96 100644 --- a/plugin/chat/chat.go +++ b/plugin/chat/chat.go @@ -13,7 +13,7 @@ import ( ) var ( - poke = rate.NewManager(time.Minute*5, 8) // 戳一戳 + poke = rate.NewManager[int64](time.Minute*5, 8) // 戳一戳 engine = control.Register("chat", &control.Options{ DisableOnDefault: false, Help: "chat\n- [BOT名字]\n- [戳一戳BOT]\n- 空调开\n- 空调关\n- 群温度\n- 设置温度[正整数]", diff --git a/plugin/diana/zhiwang.go b/plugin/diana/zhiwang.go index 15f52df1..e01f9bcc 100644 --- a/plugin/diana/zhiwang.go +++ b/plugin/diana/zhiwang.go @@ -36,7 +36,7 @@ func init() { } return false }).SetBlock(true).Limit(ctxext.LimitByUser).Handle(func(ctx *zero.Ctx) { - msg := ctx.GetMessage(message.NewMessageID(ctx.Event.Message[0].Data["id"])).Elements[0].Data["text"] + msg := ctx.GetMessage(message.NewMessageIDFromString(ctx.Event.Message[0].Data["id"])).Elements[0].Data["text"] result, err := zhiwangapi(msg) if err != nil { ctx.SendChain(message.Text("ERROR:", err)) diff --git a/plugin/wordle/wordle.go b/plugin/wordle/wordle.go index ea4169e9..b120941e 100644 --- a/plugin/wordle/wordle.go +++ b/plugin/wordle/wordle.go @@ -68,8 +68,8 @@ func init() { "- 团队猜单词", PublicDataFolder: "Wordle", }).ApplySingle(single.New( - single.WithKeyFn(func(ctx *zero.Ctx) interface{} { return ctx.Event.GroupID }), - single.WithPostFn(func(ctx *zero.Ctx) { + single.WithKeyFn(func(ctx *zero.Ctx) int64 { return ctx.Event.GroupID }), + single.WithPostFn[int64](func(ctx *zero.Ctx) { ctx.Send( message.ReplyWithMessage(ctx.Event.MessageID, message.Text("已经有正在进行的游戏..."),