nonebot-plugin-l4d2-server 0.4.0a1__py3-none-any.whl → 0.4.0b2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- README.md +48 -272
- nonebot_plugin_l4d2_server/__init__.py +86 -56
- nonebot_plugin_l4d2_server/command.py +2 -4
- nonebot_plugin_l4d2_server/config.py +39 -14
- nonebot_plugin_l4d2_server/data/L4D2/image/header/logo.png +0 -0
- nonebot_plugin_l4d2_server/l4d2_anne/analysis.py +4 -2
- nonebot_plugin_l4d2_server/l4d2_image/steam.py +34 -37
- nonebot_plugin_l4d2_server/l4d2_queries/api.py +42 -0
- nonebot_plugin_l4d2_server/l4d2_queries/ohter.py +3 -6
- nonebot_plugin_l4d2_server/l4d2_queries/qqgroup.py +0 -9
- nonebot_plugin_l4d2_server/utils.py +0 -1
- nonebot_plugin_l4d2_server-0.4.0b2.dist-info/METADATA +326 -0
- {nonebot_plugin_l4d2_server-0.4.0a1.dist-info → nonebot_plugin_l4d2_server-0.4.0b2.dist-info}/RECORD +15 -16
- nonebot_plugin_l4d2_server/data/L4D2/image/header/logo.jpg +0 -0
- nonebot_plugin_l4d2_server/data/L4D2/l4d2.json +0 -171
- nonebot_plugin_l4d2_server/l4d2_queries/maps.py +0 -29
- nonebot_plugin_l4d2_server-0.4.0a1.dist-info/METADATA +0 -551
- {nonebot_plugin_l4d2_server-0.4.0a1.dist-info → nonebot_plugin_l4d2_server-0.4.0b2.dist-info}/LICENSE +0 -0
- {nonebot_plugin_l4d2_server-0.4.0a1.dist-info → nonebot_plugin_l4d2_server-0.4.0b2.dist-info}/WHEEL +0 -0
README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
<div align="center">
|
2
|
-
<img src="
|
2
|
+
<img src="https://raw.githubusercontent.com/Umamusume-Agnes-Digital/nonebot_plugin_l4d2_server/main/image/logo.png" width="180" height="180" alt="AgnesDigitalLogo">
|
3
3
|
<br>
|
4
4
|
<p><img src="https://s2.loli.net/2022/06/16/xsVUGRrkbn1ljTD.png" width="240" alt="NoneBotPluginText"></p>
|
5
5
|
</div>
|
@@ -8,7 +8,11 @@
|
|
8
8
|
|
9
9
|
# nonebot_plugin_l4d2_server
|
10
10
|
_✨Nonebot & Left 4 Dead 2 server操作✨_
|
11
|
-
|
11
|
+
<div align = "center">
|
12
|
+
<a href="https://github.com/Umamusume-Agnes-Digital/nonebot_plugin_l4d2_server/wiki/%E6%96%87%E6%A1%A3" target="_blank">文档</a> ·
|
13
|
+
<a href="https://github.com/Umamusume-Agnes-Digital/nonebot_plugin_l4d2_server/wiki/%E6%96%87%E6%A1%A3#zl" target="_blank">指令列表</a> ·
|
14
|
+
<a href="https://github.com/Umamusume-Agnes-Digital/nonebot_plugin_l4d2_server/wiki/BUG%E5%8F%8D%E9%A6%88">常见问题</a>
|
15
|
+
</div><br>
|
12
16
|
<a href="https://github.com/Umamusume-Agnes-Digital/nonebot_plugin_l4d2_server/stargazers">
|
13
17
|
<img alt="GitHub stars" src="https://img.shields.io/github/stars/Umamusume-Agnes-Digital/nonebot_plugin_l4d2_server" alt="stars">
|
14
18
|
</a>
|
@@ -24,20 +28,22 @@ _✨Nonebot & Left 4 Dead 2 server操作✨_
|
|
24
28
|
<a href="https://pypi.python.org/pypi/nonebot_plugin_l4d2_server">
|
25
29
|
<img src="https://img.shields.io/pypi/dm/nonebot_plugin_l4d2_server" alt="pypi download">
|
26
30
|
</a>
|
27
|
-
<img src="https://img.shields.io/badge/python-3.
|
28
|
-
<img src="https://img.shields.io/badge/nonebot-2.0.
|
31
|
+
<img src="https://img.shields.io/badge/python-3.8+-blue.svg" alt="python">
|
32
|
+
<img src="https://img.shields.io/badge/nonebot-2.0.0rc3-red.svg" alt="NoneBot">
|
29
33
|
</div>
|
30
34
|
|
31
|
-
# 导航
|
32
35
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
36
|
+
## 快速使用(env示例)
|
37
|
+
# 复制到env文件里,没有默认就是下列值,如需修改安装下面env设置
|
38
|
+
# 所有的多选,用逗号隔开
|
39
|
+
l4_master = ['1145149191']
|
40
|
+
l4_file = ['/home/ubuntu/l4d2/coop']
|
41
|
+
l4_host = ['127.0.0.1']
|
42
|
+
l4_port = ['20715']
|
43
|
+
l4_rcon = ['1145149191810']
|
44
|
+
l4_font = 'simsun.ttc'
|
45
|
+
l4_tag = ['呆呆']
|
46
|
+
l4_only = True
|
41
47
|
|
42
48
|
<h2 id="gn">主要功能</h2>
|
43
49
|
|
@@ -47,256 +53,27 @@ _✨Nonebot & Left 4 Dead 2 server操作✨_
|
|
47
53
|
- [求生电信服anne](https://github.com/fantasylidong/CompetitiveWithAnne)[查询~](https://sb.trygek.com/l4d_stats/ranking/index.php)
|
48
54
|
|
49
55
|
|
50
|
-
<h2 id="
|
51
|
-
|
52
|
-
1、nb plugin install nonebot_plugin_l4d2_server
|
53
|
-
2、pip install nonebot_plugin_l4d2_server
|
54
|
-
3、Download zip
|
55
|
-
4、git clone https://github.com/Umamusume-Agnes-Digital/nonebot_plugin_l4d2_server.git
|
56
|
-
|
57
|
-
<h2 id="env">快速使用(env示例)</h2>
|
58
|
-
|
59
|
-
# 复制到env文件里,没有默认就是下列值,如需修改安装下面env设置
|
60
|
-
# 所有的多选,用逗号隔开
|
61
|
-
l4_master = ['1145149191']
|
62
|
-
l4_file = ['/home/ubuntu/l4d2/coop']
|
63
|
-
l4_host = ['127.0.0.1']
|
64
|
-
l4_port = ['20715']
|
65
|
-
l4_rcon = ['1145149191810']
|
66
|
-
l4_font = 'simsun.ttc'
|
67
|
-
l4_only = True
|
68
|
-
|
69
|
-
<h2 id="qz">前置游戏操作 </h2>
|
70
|
-
|
71
|
-
- 如果要操作求生服务器文件,机器人与求生服务器处于同一个服务器上
|
72
|
-
|
73
|
-
- 如果你按照以下步骤操作,env配置可以不填
|
74
|
-
|
75
|
-
- 创建一个steam求生服务器(预计需要储存14G)
|
76
|
-
|
77
|
-
|
78
|
-
<details>
|
79
|
-
<summary>展开/收起</summary>
|
80
|
-
|
81
|
-
|
82
|
-
### 以ubuntu为例,具体教程建议自行搜索,其中路径可以自行替换
|
83
|
-
|
84
|
-
- 安装32位运行库
|
85
|
-
|
86
|
-
sudo apt-get update
|
87
|
-
sudo apt-get upgrade
|
88
|
-
sudo apt-get install lib32gcc1
|
89
|
-
|
90
|
-
- 下载steam
|
91
|
-
|
92
|
-
mkdir ~/steamcmd
|
93
|
-
cd ~/steamcmd
|
94
|
-
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
|
95
|
-
tar -zxvf steamcmd_linux.tar.gz
|
96
|
-
./steamcmd.sh
|
97
|
-
|
98
|
-
- 下载l4d2文件
|
99
|
-
|
100
|
-
Steam> force_install_dir /home/ubuntu/coop
|
101
|
-
Steam> login anonymous
|
102
|
-
Steam>app_update 222860 validate
|
103
|
-
出现Success! App ‘222860’ fully installed后,输入quit或者exit
|
104
|
-
|
105
|
-
- 创建启动脚本
|
106
|
-
|
107
|
-
sudo vi /home/ubuntu/coop/cfg/server.cfg
|
108
|
-
写入
|
56
|
+
<h2 id="gn">如何获取key</h2>
|
109
57
|
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
sv_steamgroup_exclusive 1 //将服务器设为Steam组私有
|
114
|
-
sm_cvar sv_gametypes "coop"//设置游戏模式为合作
|
115
|
-
//设为1可防止玩家加入感染者方,仅战役模式
|
116
|
-
sm_cvar director_no_human_zombies "1"
|
117
|
-
mp_gamemode "coop"//激活游戏模式为合作
|
118
|
-
sm_cvar z_difficulty "Hard"//设置游戏难度为困难
|
119
|
-
sv_tags "hidden" //防止DDOS
|
120
|
-
sm_cvar sv_region 4// 设定服务器区域为亚洲
|
121
|
-
sv_visiblemaxplayers 8 //服务器可见最大玩家数
|
122
|
-
maxplayers 8 //最大玩家数
|
123
|
-
|
124
|
-
:wq回车保存
|
125
|
-
|
126
|
-
cd ~
|
127
|
-
sudo vi start.sh
|
128
|
-
|
129
|
-
在脚本里写入
|
130
|
-
|
131
|
-
cd /home/ubuntu/l4d2
|
132
|
-
sudo ./srcds_run -game left4dead2 -condebug -tickrate 60 +exec server.cfg +map c2m1_highway
|
133
|
-
|
134
|
-
- 启动游戏
|
135
|
-
|
136
|
-
cd ~
|
137
|
-
sh start.sh
|
138
|
-
|
139
|
-
</details>
|
140
|
-
|
141
|
-
|
142
|
-
<h2 id="zl">🤔 功能(指令)</h2>
|
143
|
-
|
144
|
-
|
145
|
-
### 服务器
|
146
|
-
|
147
|
-
(被动)上传地图:设置l4_master后,在群内发送压缩包zip/vpk/7z/rar,就可以直接上传地图到服务器了
|
148
|
-
如果设置了管理员,那么在群里也响应
|
149
|
-
[ip]格式为[127.0.0.1:20715]括号内
|
150
|
-
|
151
|
-
求生帮助:获取简单的帮助列表
|
152
|
-
|
153
|
-
<details>
|
154
|
-
<summary>展开/收起</summary>
|
155
|
-
|
156
|
-
| 指令 | 范围 | 用途 | 说明 |
|
157
|
-
|:-----:|:----:|:----:|:----:|
|
158
|
-
| 求生地图/查看求生地图 | 所有人 | 看图 | 获取当前路径下所有的vpk文件,并输出目录 |
|
159
|
-
| (求生)地图删除[number] | 群管/超管 | 删图 | 根据求生地图列出的序号,删除地图,[number]可以在第二条消息内输入 |
|
160
|
-
| 求生地图[number][改/改名][text] | 群管/超管 | 改图名 | [number]同上,text为更改后名称,如果没有.vpk后缀会自动加上 |
|
161
|
-
| 求生服务器指令[text] | 群管/超管 | 控制台 | rcon连接求生服务器控制台,使用ip和passsword |
|
162
|
-
| 求生路径 | 群管/超管 | 查看路径 | 查看当前服务器路径 |
|
163
|
-
| 求生路径切换[number] | 群管/超管 | 切换路径 | 切换本地服务器路径 |
|
164
|
-
|
165
|
-
### anne(电信服)
|
166
|
-
|
167
|
-
| 指令 | 范围 | 用途 | 说明 |
|
168
|
-
|:-----:|:----:|:----:|:----:|
|
169
|
-
| 探监/坐牢/开牢 | 所有人 | 随机抽一个目标云服 | 探监是得分超过160的队伍\n坐牢是缺人队伍\n开牢是空人房间 |
|
170
|
-
| 求生anne[text]/@/[None] | 所有人 | 查anne成绩 | [text]可以是:空白(则使用绑定信息)、昵称、steamid、@user |
|
171
|
-
| 求生绑定/steam绑定/anne绑定[text] | 所有人 | 绑定steam信息 | [text]可以是:昵称、steamid |
|
172
|
-
| 求生解绑/steam解绑/anne解绑 | 所有人 | 解绑steam信息 | 无 |
|
173
|
-
| 云[number] | 所有人 | 云服信息 | 获取服务器状态和直连ip |
|
58
|
+
为了使得ip不被滥用,我采取这种方式管理。
|
59
|
+
[点击这里加群](https://jq.qq.com/?_wv=1027&k=HdjoCcAe)
|
60
|
+
如果你只查询自己的服务器ip则可以忽略如下,并且更改env设置:
|
174
61
|
|
62
|
+
l4_tag = []
|
175
63
|
|
176
|
-
### ip(服务器查询)
|
177
|
-
|
178
|
-
| 指令 | 范围 | 用途 | 说明 |
|
179
|
-
|:-----:|:----:|:----:|:----:|
|
180
|
-
| 求生ip[ip] | 所有人 | 查指定服务器 | [text]格式为[127.0.0.1:20715]括号内,可以查询服务器玩家名字 |
|
181
|
-
| 求生订阅[ip] | 所有人 | 查询订阅服务器状态 | 返回一个图片\n显示群所有订阅的服务器名字、状态、地图、玩家名字 |
|
182
|
-
| 求生加入[number] | 所有人 | 获取进服直链 | [number]为求生订阅所显示的开头序号 |
|
183
|
-
| 求生添加订阅[ip] | 群管 | 群订阅添加 | 新增订阅ip,在下次订阅的时候可以显示 |
|
184
|
-
| 求生取消订阅[number] | 所有人 | 群订阅取消 | [number]为求生订阅所显示的开头序号 |
|
185
|
-
| 求生更新 添加 [tag] [ip] [text] ([number]) | 群管 | 全局订阅添加 | 可以使用tag(+text)(+number)快速索引服务 |
|
186
|
-
| 求生更新 删除 [tag] [number] | 群管 | 全局订阅添加 | [number]为求生订阅标记的默认序号 |
|
187
|
-
| 求生更新 | 群管 | 刷新缓存 | 一般用不到,如果卡指令可能有用 |
|
188
|
-
|
189
|
-
### 其他功能
|
190
|
-
|
191
|
-
| 指令 | 范围 | 用途 | 说明 |
|
192
|
-
|:-----:|:----:|:----:|:----:|
|
193
|
-
| 创意工坊下载[text] | 所有人 | 下载创意工坊文件 | [text]为id或者网页url |
|
194
|
-
| 求生喷漆 | 所有人 | 制作一个喷漆 | 只支持图片暂不支持gif |
|
195
|
-
|
196
|
-
</details>
|
197
|
-
|
198
|
-
<h2 id="cs">✅ env配置</h2>
|
199
|
-
|
200
|
-
<details>
|
201
|
-
<summary>展开/收起</summary>
|
202
|
-
|
203
|
-
### 本地服务器相关
|
204
|
-
| 配置项 | 必填 | 默认值 | 说明 |
|
205
|
-
|:-----:|:----:|:----:|:----:|
|
206
|
-
| l4_master | 是 | ['1145149191'] | list,里面是可以在群里传求生地图的qq号
|
207
|
-
| l4_file | 否 | ["/home/ubuntu/l4d2/coop"] | 输入求生服务器的绝对路径,该目录下有游戏启动程序srcds_run |
|
208
|
-
| l4_host | 否 | ['127.0.0.1'] | 服务器ip,如果是本机一般就是默认 |
|
209
|
-
| l4_port | 否 | ['20715'] | 服务器端口号 |
|
210
|
-
| l4_rcon | 否 | ['114514'] | 服务器的rcon密码 |
|
211
|
-
|
212
|
-
### 可选填写
|
213
|
-
| 配置项 | 必填 | 默认值 | 说明 |
|
214
|
-
|:-----:|:----:|:----:|:----:|
|
215
|
-
| l4_steamid | 否 | False | 布尔值,默认在输出时隐藏steamid,需要则设置为True |
|
216
|
-
| l4_image | 否 | True | 布尔值,是否显示图片 |
|
217
|
-
| l4_font | 否 | 'simsun.ttc' | str,确保在开启图片的时候,字体存在 |
|
218
|
-
| l4_only | 否 | False | 布尔值,如果不想在下载的时候阻碍其他指令可以开启,但是有不能下载超过200m地图的bug |
|
219
|
-
| l4_style | 否 | '' | str,图片风格,目前可选['balck'] |
|
220
|
-
|
221
|
-
|
222
|
-
</details>
|
223
|
-
|
224
|
-
## ✨ 效果展示
|
225
|
-
|
226
|
-
订阅:<br>
|
227
|
-
<br>
|
228
|
-
anne:<br>
|
229
|
-
<br>
|
230
|
-
群聊:<br>
|
231
|
-
<br>
|
232
|
-
私聊:<br>
|
233
|
-
<br>
|
234
|
-
|
235
|
-
## 🤔 FAQ
|
236
|
-
|
237
|
-
Q:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in position xxx: invalid continuation byte</b>
|
238
|
-
|
239
|
-
A:说明rcon连接服务器时返回了乱码,有可能读取的信息包含表情包或者其他不明字符,我的方法是找到本地pypi包的rcon,编辑rcon/source/async_rcon.py,找到return response.payload.decode(encoding)并替换为return response.payload.decode(encoding,errors='ignore')
|
240
|
-
|
241
|
-
|
242
|
-
Q:ModuleNotFoundError: No module named '_lzma'
|
243
|
-
|
244
|
-
A:python3.3版本后常见,解决方法是
|
245
|
-
vim /usr/local/lib/python3.10/lzma.py
|
246
|
-
#修改前
|
247
|
-
from _lzma import *
|
248
|
-
from _lzma import _encode_filter_properties, _decode_filter_properties
|
249
|
-
#修改后
|
250
|
-
try:
|
251
|
-
from _lzma import *
|
252
|
-
from _lzma import _encode_filter_properties, _decode_filter_properties
|
253
|
-
except ImportError:
|
254
|
-
from backports.lzma import *
|
255
|
-
from backports.lzma import _encode_filter_properties, _decode_filter_properties
|
256
|
-
|
257
|
-
- 解压功能
|
258
|
-
|
259
|
-
# rar压缩包
|
260
|
-
# win直接下winRAR软件就可以
|
261
|
-
# Ubuntu 和 Debian
|
262
|
-
sudo wget https://www.rarlab.com/rar/rarlinux-x64-621b1.tar.gz
|
263
|
-
sudo tar -xzpvf rarlinux-x64-621b1.tar.gz
|
264
|
-
cd rar
|
265
|
-
sudo make
|
266
|
-
|
267
|
-
|
268
|
-
## 📝 TODO LIST
|
269
|
-
|
270
|
-
<details>
|
271
|
-
<summary>展开/收起</summary>
|
272
|
-
|
273
|
-
- [ ] 帮助命令
|
274
|
-
- [x] 创意工坊内容下载并上传q群
|
275
|
-
- [ ] 求生每日签到/抽签
|
276
|
-
- [ ] 按照数值自定义绘画信息图片
|
277
|
-
- [ ] 支持直接修改本地cfg文件
|
278
|
-
- [ ] ~支持远程连接求生服务器并操作~
|
279
|
-
|
280
|
-
</details>
|
281
|
-
|
282
|
-
## 🐛 已知BUG
|
283
|
-
|
284
|
-
<details>
|
285
|
-
<summary>展开/收起</summary>
|
286
|
-
|
287
|
-
- [ ] 更改地图名称后,排序会错误
|
288
|
-
- [ ] 求生喷漆可加载但无法输出
|
289
|
-
|
290
|
-
</details>
|
291
64
|
|
292
65
|
## 🔖 更新日志
|
293
66
|
|
294
67
|
<details>
|
295
68
|
<summary>展开/收起</summary>
|
296
69
|
|
297
|
-
|
70
|
+
|
71
|
+
### 0.4.0--2022.3
|
298
72
|
|
299
73
|
- 新增web控制台
|
74
|
+
- 修复传图超时参数错误
|
75
|
+
- 重写求生ip获取方法 ~ 数据库苦手 ~
|
76
|
+
- 重写文档
|
300
77
|
|
301
78
|
### 0.3.7--2022.3
|
302
79
|
|
@@ -469,35 +246,34 @@ anne:<br>
|
|
469
246
|
|
470
247
|
</details>
|
471
248
|
|
472
|
-
##
|
473
|
-
win10 python3.9 <br>
|
474
|
-
ubuntu20.04 python3.10
|
475
|
-
|
476
|
-
## 📖许可证GPL3.0
|
249
|
+
## 🙈 其他
|
477
250
|
|
478
|
-
|
251
|
+
+ 本人技术很差,如果您有发现BUG或者更好的建议,欢迎提Issue & Pr
|
252
|
+
+ 如果本插件对你有帮助,不要忘了点个Star~
|
253
|
+
+ 本项目仅供学习使用,请勿用于商业用途
|
254
|
+
+ [GPL-3.0 License](https://github.com/Umamusume-Agnes-Digital/nonebot_plugin_l4d2_server/blob/main/LICENSE) ©[@Umamusume-Agnes-Digital](https://github.com/Umamusume-Agnes-Digital)
|
255
|
+
|
479
256
|
|
480
257
|
|
481
|
-
<h2 id="ty"
|
258
|
+
<h2 id="ty">🌐 感谢</h2>
|
482
259
|
|
483
|
-
-
|
484
|
-
-
|
485
|
-
-
|
486
|
-
-
|
487
|
-
-
|
488
|
-
-
|
260
|
+
- [修仙](https://github.com/s52047qwas/nonebot_plugin_xiuxian) - 数据库的写法来自于他
|
261
|
+
- ~ [自己写的求生之路查询库](https://github.com/Umamusume-Agnes-Digital/VSQ) ~已弃用
|
262
|
+
- [@MeetWq](https://github.com/MeetWq) - 非常热心解答nonebot2相关的写法
|
263
|
+
- [可爱小Q](https://github.com/MeetWq/mybot) - 服务器图片写法参考小Q帮助
|
264
|
+
- [群聊学习](https://github.com/CMHopeSunshine/nonebot-plugin-learning-chat) - web控制台的写法来自于他
|
265
|
+
- [gsuid](https://github.com/KimigaiiWuyi/GenshinUID) - readme和wiki的格式参考
|
266
|
+
- 呆呆 - 提供三方地图的详细数据
|
489
267
|
|
490
|
-
<h2 id="
|
491
|
-
|
492
|
-
目前插件会内置经腐竹同意的服的查询(未来将使用api)
|
268
|
+
<h2 id="ty">🌐 默认服务器</h2>
|
269
|
+
目前**已授权**的服务器查询,如果需要加入自己的ip可以进qq群私聊群主
|
493
270
|
|
494
271
|
| 指令 | 服务器 | op | 数量 |
|
495
272
|
|:-----:|:----:|:----:|:----:|
|
496
|
-
| 云 |
|
273
|
+
| 云 | anne电信服云服 | 东 | 22
|
497
274
|
| 呆呆 | 呆呆的小窝 | 提莫大魔王 | 15
|
498
275
|
| 橘 | 橘希实香的小窝 | 橘希实香 | 8
|
499
276
|
| 竹 | 竹烨 | 竹烨oО柠檬茶 | 9
|
277
|
+
| 音理 | 星空列车与白的旅行 | 音理 | 2
|
500
278
|
|
501
|
-
|
502
|
-
|
503
|
-
[pr修改这个文件](https://github.com/Umamusume-Agnes-Digital/nonebot_plugin_l4d2_server/blob/main/nonebot_plugin_l4d2_server/data/L4D2/l4d2.json)
|
279
|
+
**如果提供了ip,那么我只能尽可能保证您的ipv4不会泄漏,如果无法承担风险则请勿提供ip**
|
@@ -20,6 +20,8 @@ from nonebot.params import CommandArg,ArgPlainText,RegexGroup,Arg,RawCommand,Com
|
|
20
20
|
|
21
21
|
from typing import Tuple,Union,List
|
22
22
|
from time import sleep
|
23
|
+
import asyncio
|
24
|
+
|
23
25
|
from .config import *
|
24
26
|
from .utils import *
|
25
27
|
from .command import *
|
@@ -29,9 +31,9 @@ from .l4d2_data import sq_L4D2
|
|
29
31
|
from nonebot import get_driver, require
|
30
32
|
from .l4d2_image.vtfs import img_to_vtf
|
31
33
|
from .l4d2_queries.ohter import load_josn
|
32
|
-
from .l4d2_queries.qqgroup import write_json
|
34
|
+
from .l4d2_queries.qqgroup import write_json
|
33
35
|
from .l4d2_file import updown_l4d2_vpk,all_zip_to_one
|
34
|
-
|
36
|
+
|
35
37
|
from .txt_to_img import mode_txt_to_img
|
36
38
|
# from .l4d2_server import RCONClient
|
37
39
|
# from .l4d2_web import web,webUI
|
@@ -40,7 +42,7 @@ scheduler = require("nonebot_plugin_apscheduler").scheduler
|
|
40
42
|
driver = get_driver()
|
41
43
|
|
42
44
|
|
43
|
-
__version__ = "0.
|
45
|
+
__version__ = "0.4.0"
|
44
46
|
__plugin_meta__ = PluginMetadata(
|
45
47
|
name="求生之路小助手",
|
46
48
|
description='群内对有关求生之路的查询和操作',
|
@@ -373,48 +375,6 @@ async def _(args:Message = CommandArg()):
|
|
373
375
|
message = await write_json(msg)
|
374
376
|
await updata.finish(message)
|
375
377
|
|
376
|
-
@read_ip.handle()
|
377
|
-
async def _():
|
378
|
-
img = await qq_ip_queries_pic(ip_anne_list)
|
379
|
-
if img == None:
|
380
|
-
return "电信服的地址请加主群自行填写哦"
|
381
|
-
await read_ip.finish(MessageSegment.image(img))
|
382
|
-
|
383
|
-
@tan_jian.handle()
|
384
|
-
async def _(event:MessageEvent):
|
385
|
-
await tan_jian.send('正在寻找牢房...')
|
386
|
-
msg = await get_tan_jian(ip_anne_list,1)
|
387
|
-
await tan_jian.finish(msg)
|
388
|
-
|
389
|
-
@get_ip.handle()
|
390
|
-
async def _(command: str = RawCommand(),args:Message = CommandArg()):
|
391
|
-
if CommandStart:
|
392
|
-
command.replace('CommandStart','')
|
393
|
-
msg:str = args.extract_plain_text()
|
394
|
-
if not msg:
|
395
|
-
# 以图片输出全部当前
|
396
|
-
this_ips = ALL_HOST[command]
|
397
|
-
ip_list = []
|
398
|
-
for one_ip in this_ips:
|
399
|
-
host,port = split_maohao(one_ip['ip'])
|
400
|
-
ip_list.append((one_ip['id'],host,port))
|
401
|
-
img = await qq_ip_queries_pic(ip_list)
|
402
|
-
if img:
|
403
|
-
await read_ip.finish(MessageSegment.image(img))
|
404
|
-
else:
|
405
|
-
await read_ip.finish("服务器无响应")
|
406
|
-
else:
|
407
|
-
message = await json_server_to_tag_dict(command,msg)
|
408
|
-
if len(message) == 0:
|
409
|
-
# 关键词不匹配,忽略
|
410
|
-
return
|
411
|
-
ip = str(message['ip'])
|
412
|
-
logger.info(ip)
|
413
|
-
try:
|
414
|
-
msg= await get_anne_server_ip(ip)
|
415
|
-
await get_ip.finish(msg)
|
416
|
-
except OSError:
|
417
|
-
await get_ip.finish('服务器无响应')
|
418
378
|
|
419
379
|
|
420
380
|
@vtf_make.handle()
|
@@ -442,16 +402,6 @@ async def _(bot:Bot,event:MessageEvent,state:T_State,tag = Arg("image")):
|
|
442
402
|
await upload_file(bot, event, img_bytes, file_name)
|
443
403
|
|
444
404
|
|
445
|
-
@prison.handle()
|
446
|
-
async def _(event:MessageEvent):
|
447
|
-
msg = await get_tan_jian(ip_anne_list,2)
|
448
|
-
await tan_jian.finish(msg)
|
449
|
-
|
450
|
-
@open_prison.handle()
|
451
|
-
async def _(event:MessageEvent):
|
452
|
-
|
453
|
-
msg = await get_tan_jian(ip_anne_list,3)
|
454
|
-
await tan_jian.finish(msg)
|
455
405
|
|
456
406
|
@smx_file.handle()
|
457
407
|
async def _():
|
@@ -469,7 +419,7 @@ async def _(state:T_State,event:GroupMessageEvent,args:Message = CommandArg()):
|
|
469
419
|
msg:str = args.extract_plain_text()
|
470
420
|
# if msg.startswith('代码'):
|
471
421
|
# 建图代码返回三方图信息
|
472
|
-
data = await seach_map(msg,
|
422
|
+
data = await seach_map(msg,l4_qq,l4_key)
|
473
423
|
# else:
|
474
424
|
if type(data) == str:
|
475
425
|
await search_api.finish(data)
|
@@ -499,6 +449,86 @@ async def _(bot:Bot,event:GroupMessageEvent,state:T_State):
|
|
499
449
|
else:
|
500
450
|
await search_api.finish('已取消上传')
|
501
451
|
|
452
|
+
|
453
|
+
@driver.on_bot_connect
|
454
|
+
async def _():
|
455
|
+
global ALL_HOST
|
456
|
+
global ANNE_IP
|
457
|
+
ALL_HOST.update(await seach_map(l4_tag,l4_qq,l4_key,'ip'))
|
458
|
+
def count_ips(ip_dict:dict):
|
459
|
+
for key, value in ip_dict.items():
|
460
|
+
if key == 'error_':
|
461
|
+
continue
|
462
|
+
count = len(value)
|
463
|
+
logger.info(f'已加载:{key} | {count}个')
|
464
|
+
if key == '云':
|
465
|
+
ANNE_IP = {key:value}
|
466
|
+
count_ips(ALL_HOST)
|
467
|
+
|
468
|
+
ip_anne_list=[]
|
469
|
+
try:
|
470
|
+
ips = ALL_HOST['云']
|
471
|
+
ip_anne_list = []
|
472
|
+
for one_ip in ips:
|
473
|
+
host,port = split_maohao(one_ip['ip'])
|
474
|
+
ip_anne_list.append((one_ip['id'],host,port))
|
475
|
+
except KeyError:
|
476
|
+
pass
|
477
|
+
get_ip = on_command('anne',aliases=server_key(),priority=80,block=True)
|
478
|
+
@get_ip.handle()
|
479
|
+
async def _(start:str = CommandStart(),command: str = RawCommand(),args:Message = CommandArg(),):
|
480
|
+
if start:
|
481
|
+
command.replace(start,'')
|
482
|
+
if command == 'anne':
|
483
|
+
command = '云'
|
484
|
+
msg:str = args.extract_plain_text()
|
485
|
+
if not msg:
|
486
|
+
# 以图片输出全部当前
|
487
|
+
this_ips = ALL_HOST[command]
|
488
|
+
ip_list = []
|
489
|
+
for one_ip in this_ips:
|
490
|
+
host,port = split_maohao(one_ip['ip'])
|
491
|
+
ip_list.append((one_ip['id'],host,port))
|
492
|
+
img = await qq_ip_queries_pic(ip_list)
|
493
|
+
if img:
|
494
|
+
await get_ip.finish(MessageSegment.image(img))
|
495
|
+
else:
|
496
|
+
await get_ip.finish("服务器无响应")
|
497
|
+
else:
|
498
|
+
if not msg[0].isdigit():
|
499
|
+
if msg.startswith(gamemode_list):
|
500
|
+
pass
|
501
|
+
else:
|
502
|
+
return
|
503
|
+
message = await json_server_to_tag_dict(command,msg)
|
504
|
+
if len(message) == 0:
|
505
|
+
# 关键词不匹配,忽略
|
506
|
+
return
|
507
|
+
ip = str(message['ip'])
|
508
|
+
logger.info(ip)
|
509
|
+
try:
|
510
|
+
msg= await get_anne_server_ip(ip)
|
511
|
+
await get_ip.finish(msg)
|
512
|
+
except (OSError,asyncio.exceptions.TimeoutError):
|
513
|
+
await get_ip.finish('服务器无响应')
|
514
|
+
|
515
|
+
@tan_jian.handle()
|
516
|
+
async def _(event:MessageEvent):
|
517
|
+
await tan_jian.send('正在寻找牢房...')
|
518
|
+
msg = await get_tan_jian(ip_anne_list,1)
|
519
|
+
await tan_jian.finish(msg)
|
520
|
+
|
521
|
+
@prison.handle()
|
522
|
+
async def _(event:MessageEvent):
|
523
|
+
msg = await get_tan_jian(ip_anne_list,2)
|
524
|
+
await tan_jian.finish(msg)
|
525
|
+
|
526
|
+
@open_prison.handle()
|
527
|
+
async def _(event:MessageEvent):
|
528
|
+
|
529
|
+
msg = await get_tan_jian(ip_anne_list,3)
|
530
|
+
await tan_jian.finish(msg)
|
531
|
+
|
502
532
|
|
503
533
|
@driver.on_shutdown
|
504
534
|
async def close_db():
|
@@ -15,7 +15,7 @@ from nonebot.adapters.onebot.v11 import (
|
|
15
15
|
PrivateMessageEvent
|
16
16
|
)
|
17
17
|
from .l4d2_anne.server import server_key,ANNE_IP
|
18
|
-
from .config import Master,ADMINISTRATOR,reMaster,file_format
|
18
|
+
from .config import Master,ADMINISTRATOR,reMaster,file_format,driver
|
19
19
|
|
20
20
|
help_ = on_command('l4_help',aliases={'求生帮助'},priority=20,block=True)
|
21
21
|
|
@@ -66,12 +66,10 @@ smx_file = on_command('l4_smx',aliases={'求生插件'},priority=20,block=True,p
|
|
66
66
|
anne_player = on_command('Ranne',aliases={"求生anne"},priority=25,block=True)
|
67
67
|
anne_bind = on_command('Rbind',aliases={'steam绑定','求生绑定','anne绑定'},priority=20,block=True)
|
68
68
|
del_bind = on_command('del_bind',aliases={'steam解绑','求生解绑','anne解绑'},priority=20,block=True)
|
69
|
-
read_ip = on_command('anne',aliases={'求生云服'},priority=20,block=True)
|
70
69
|
prison = on_command('zl',aliases={'坐牢'},priority=20,block=True)
|
71
70
|
open_prison = on_command('kl',aliases={'开牢'},priority=20,block=True)
|
72
71
|
|
73
72
|
updata = on_command('updata',aliases={'求生更新'},priority=20,block=True,permission= Master)
|
74
|
-
get_ip = on_command('114514919181',aliases=server_key(),priority=80,block=True)
|
75
73
|
def reload_ip():
|
76
74
|
global updata,get_ip
|
77
75
|
updata = on_command('updata',aliases={'求生更新'},priority=20,block=True,permission= Master)
|
@@ -83,7 +81,7 @@ queries = on_command('queries',aliases={'求生ip','求生IP'},priority=20,block
|
|
83
81
|
add_queries = on_command('addq',aliases={"求生添加订阅"},priority=20,block=True,permission= Master)
|
84
82
|
del_queries = on_command('delq',aliases={"求生取消订阅"},priority=20,block=True,permission= Master)
|
85
83
|
show_queries = on_command('showq',aliases={"求生订阅"},priority=20,block=True)
|
86
|
-
join_server = on_command('
|
84
|
+
join_server = on_command('ld_jr',aliases={"求生加入"},priority=20,block=True)
|
87
85
|
connect_rcon = on_command("Rrcon", aliases={"求生连接", '求生链接','求生rcon'}, priority=50, block=False)
|
88
86
|
end_connect = ['stop', '结束', '连接结束', '结束连接']
|
89
87
|
search_api = on_command('search',aliases={'求生三方'}, priority=20, block=True,permission= Master)
|