nonebot-plugin-l4d2-server 0.6.4.post1__py3-none-any.whl → 0.6.6__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.
- nonebot_plugin_l4d2_server/__init__.py +6 -15
- nonebot_plugin_l4d2_server/l4d2_file/__init__.py +21 -10
- nonebot_plugin_l4d2_server/l4d2_file/utils.py +1 -1
- nonebot_plugin_l4d2_server/l4d2_image/__init__.py +4 -3
- nonebot_plugin_l4d2_server/l4d2_image/images.py +4 -8
- nonebot_plugin_l4d2_server/l4d2_push/__init__.py +20 -14
- nonebot_plugin_l4d2_server/l4d2_queries/__init__.py +2 -42
- nonebot_plugin_l4d2_server/l4d2_queries/send_msg.py +4 -3
- nonebot_plugin_l4d2_server/l4d2_update/__init__.py +3 -1
- nonebot_plugin_l4d2_server/l4d2_utils/config.py +13 -8
- nonebot_plugin_l4d2_server/l4d2_web/webUI.py +12 -4
- {nonebot_plugin_l4d2_server-0.6.4.post1.dist-info → nonebot_plugin_l4d2_server-0.6.6.dist-info}/METADATA +4 -4
- {nonebot_plugin_l4d2_server-0.6.4.post1.dist-info → nonebot_plugin_l4d2_server-0.6.6.dist-info}/RECORD +15 -15
- {nonebot_plugin_l4d2_server-0.6.4.post1.dist-info → nonebot_plugin_l4d2_server-0.6.6.dist-info}/WHEEL +1 -1
- {nonebot_plugin_l4d2_server-0.6.4.post1.dist-info → nonebot_plugin_l4d2_server-0.6.6.dist-info}/licenses/LICENSE +0 -0
@@ -15,7 +15,6 @@
|
|
15
15
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
16
16
|
"""
|
17
17
|
|
18
|
-
|
19
18
|
from nonebot import get_driver, require
|
20
19
|
|
21
20
|
require("nonebot_plugin_apscheduler") # noqa: F401
|
@@ -34,6 +33,7 @@ from .l4d2_data import sq_L4D2
|
|
34
33
|
|
35
34
|
# from .l4d2_file.input_json import *
|
36
35
|
from .l4d2_image.steam import url_to_byte_name
|
36
|
+
from .l4d2_push import scheduler # noqa: F401
|
37
37
|
from .l4d2_utils.command import help_, search_api
|
38
38
|
from .l4d2_utils.config import l4_config
|
39
39
|
from .l4d2_utils.utils import upload_file
|
@@ -41,7 +41,7 @@ from .l4d2_web import web, webUI # noqa: F401
|
|
41
41
|
|
42
42
|
driver = get_driver()
|
43
43
|
|
44
|
-
__version__ = "0.6.
|
44
|
+
__version__ = "0.6.6"
|
45
45
|
__plugin_meta__ = PluginMetadata(
|
46
46
|
name="求生之路小助手",
|
47
47
|
description="可用于管理求生之路查服和本地管理",
|
@@ -59,18 +59,6 @@ __plugin_meta__ = PluginMetadata(
|
|
59
59
|
"""相当于启动就检查数据库"""
|
60
60
|
|
61
61
|
|
62
|
-
# @search_api.handle()
|
63
|
-
# async def _(matcher:Matcher,state:T_State,event:GroupMessageEvent,args:Message = CommandArg()): # noqa: E501
|
64
|
-
# msg:str = args.extract_plain_text()
|
65
|
-
# # if msg.startswith('代码'):
|
66
|
-
# # 建图代码返回三方图信息
|
67
|
-
# data = await seach_map(msg,l4_config.l4_master[0],l4_config.l4_key)
|
68
|
-
# # else:
|
69
|
-
# if type(data) == str:
|
70
|
-
# await matcher.finish(data)
|
71
|
-
# else:
|
72
|
-
# state['maps'] = data
|
73
|
-
# await matcher.send(await map_dict_to_str(data))
|
74
62
|
@help_.handle()
|
75
63
|
async def _(matcher: Matcher):
|
76
64
|
msg = """=====求生机器人帮助=====
|
@@ -80,7 +68,10 @@ async def _(matcher: Matcher):
|
|
80
68
|
4、创意工坊下载【创意工坊下载[物品id/链接]】
|
81
69
|
5、指定ip查询【求生ip[ip]】(可以是域名)
|
82
70
|
6、求生喷漆制作【求生喷漆】
|
83
|
-
7
|
71
|
+
7、本地服务器相关【l4地图上传】【l4地图改名】【l4地图删除】【l4路径】【l4插件】
|
72
|
+
8、ip导入(私聊发送json文件,格式参考下方链接中readme)
|
73
|
+
9、内置ip更新【l4公益服更新】【求生更新anne】
|
74
|
+
项目地址:https://github.com/Agnes4m/nonebot_plugin_l4d2_server
|
84
75
|
"""
|
85
76
|
await matcher.finish(msg)
|
86
77
|
|
@@ -2,12 +2,13 @@ import re
|
|
2
2
|
from pathlib import Path
|
3
3
|
from typing import Tuple
|
4
4
|
|
5
|
-
from nonebot import on_command,
|
6
|
-
from nonebot.adapters.onebot.v11 import Message, NoticeEvent
|
5
|
+
from nonebot import on_command, on_regex
|
6
|
+
from nonebot.adapters.onebot.v11 import Event, Message, NoticeEvent
|
7
7
|
from nonebot.log import logger
|
8
8
|
from nonebot.matcher import Matcher
|
9
9
|
from nonebot.params import ArgPlainText, CommandArg, RegexGroup
|
10
10
|
|
11
|
+
# from nonebot.typing import T_State
|
11
12
|
from ..l4d2_utils.config import MASTER, config_manager, file_format, l4_config, vpk_path
|
12
13
|
from ..l4d2_utils.rule import wenjian
|
13
14
|
from ..l4d2_utils.txt_to_img import mode_txt_to_img
|
@@ -15,21 +16,26 @@ from ..l4d2_utils.utils import del_map, get_vpk, mes_list, rename_map
|
|
15
16
|
from .input_json import upload # noqa: F401
|
16
17
|
from .utils import updown_l4d2_vpk
|
17
18
|
|
18
|
-
up =
|
19
|
+
up = on_command(
|
20
|
+
"l4_upload",
|
21
|
+
aliases={"l4地图上传"},
|
22
|
+
priority=20,
|
23
|
+
block=True,
|
24
|
+
)
|
19
25
|
|
20
26
|
|
21
27
|
rename_vpk = on_regex(
|
22
|
-
r"
|
28
|
+
r"^l4地图\s*(\S+.*?)\s*(改|改名)?\s*(\S+.*?)\s*$",
|
23
29
|
flags=re.S,
|
24
30
|
block=True,
|
25
31
|
priority=20,
|
26
32
|
permission=MASTER,
|
27
33
|
)
|
28
34
|
|
29
|
-
find_vpk = on_command("l4_map", aliases={"
|
35
|
+
find_vpk = on_command("l4_map", aliases={"l4地图"}, priority=25, block=True)
|
30
36
|
del_vpk = on_command(
|
31
37
|
"l4_del_map",
|
32
|
-
aliases={"
|
38
|
+
aliases={"l4地图删除", "地图删除"},
|
33
39
|
priority=20,
|
34
40
|
permission=MASTER,
|
35
41
|
)
|
@@ -37,14 +43,14 @@ del_vpk = on_command(
|
|
37
43
|
|
38
44
|
check_path = on_command(
|
39
45
|
"l4_check",
|
40
|
-
aliases={"
|
46
|
+
aliases={"l4路径"},
|
41
47
|
priority=20,
|
42
48
|
block=True,
|
43
49
|
permission=MASTER,
|
44
50
|
)
|
45
51
|
smx_file = on_command(
|
46
52
|
"l4_smx",
|
47
|
-
aliases={"
|
53
|
+
aliases={"l4插件"},
|
48
54
|
priority=20,
|
49
55
|
block=True,
|
50
56
|
permission=MASTER,
|
@@ -52,8 +58,13 @@ smx_file = on_command(
|
|
52
58
|
|
53
59
|
|
54
60
|
@up.handle()
|
55
|
-
async def _(
|
56
|
-
|
61
|
+
async def _(): ...
|
62
|
+
|
63
|
+
|
64
|
+
@up.got("map_url", prompt="图来")
|
65
|
+
async def _(matcher: Matcher, event: Event):
|
66
|
+
if not isinstance(event, NoticeEvent) or not wenjian(event):
|
67
|
+
await matcher.finish("未检测到地图")
|
57
68
|
return
|
58
69
|
args = event.dict()
|
59
70
|
if args["notice_type"] != "offline_file":
|
@@ -66,7 +66,7 @@ def open_packet(name: str, down_file: Path) -> str:
|
|
66
66
|
".7z": unpack_7zfile,
|
67
67
|
".rar": unpack_rarfile,
|
68
68
|
}
|
69
|
-
unpack_func = unpack_funcs.get(ext
|
69
|
+
unpack_func = unpack_funcs.get(ext)
|
70
70
|
if not unpack_func:
|
71
71
|
raise ValueError(f"不支持的拓展名: {ext}")
|
72
72
|
unpack_func(down_file, down_path)
|
@@ -51,6 +51,7 @@ async def dict_to_html(usr_id, detail_map: dict):
|
|
51
51
|
detail_right["url"] = detail_map["个人资料"]
|
52
52
|
detail_right["one_msg"] = detail_map["一言"]
|
53
53
|
detail_right["last_one"] = detail_map["救援关"]
|
54
|
+
|
54
55
|
# html_text = soup.prettify()
|
55
56
|
# for key, value in detail_right.items():
|
56
57
|
# html_text = html_text.replace(key,value)
|
@@ -74,12 +75,12 @@ async def server_ip_pic(msg_list: List[ServerStatus]):
|
|
74
75
|
server_info.rank_players = f"{server_info.players}/{server_info.max_players}"
|
75
76
|
players_list: List[PlayerInfo] = []
|
76
77
|
# logger.info(server_info.name)
|
77
|
-
|
78
|
-
sorted_players = sorted(server_info.Players, key=lambda x: x.Score)[:
|
78
|
+
max_number = l4_config.l4_img_name
|
79
|
+
sorted_players = sorted(server_info.Players, key=lambda x: x.Score)[:max_number]
|
79
80
|
for player_info in sorted_players:
|
80
81
|
# player_str = f"{player_info.name} | {player_info.Duration}"
|
81
82
|
players_list.append(player_info)
|
82
|
-
while len(players_list) <
|
83
|
+
while len(players_list) < max_number:
|
83
84
|
players_list.append(PlayerInfo())
|
84
85
|
server_info.Players = players_list
|
85
86
|
# logger.info(server_info.Players)
|
@@ -48,23 +48,19 @@ bg_path = CU_BG_PATH if list(CU_BG_PATH.iterdir()) != [] else NM_BG_PATH
|
|
48
48
|
|
49
49
|
|
50
50
|
@overload
|
51
|
-
async def convert_img(img: Image.Image, is_base64: bool = False) -> bytes:
|
52
|
-
...
|
51
|
+
async def convert_img(img: Image.Image, is_base64: bool = False) -> bytes: ...
|
53
52
|
|
54
53
|
|
55
54
|
@overload
|
56
|
-
async def convert_img(img: Image.Image, is_base64: bool = True) -> str:
|
57
|
-
...
|
55
|
+
async def convert_img(img: Image.Image, is_base64: bool = True) -> str: ...
|
58
56
|
|
59
57
|
|
60
58
|
@overload
|
61
|
-
async def convert_img(img: bytes, is_base64: bool = False) -> str:
|
62
|
-
...
|
59
|
+
async def convert_img(img: bytes, is_base64: bool = False) -> str: ...
|
63
60
|
|
64
61
|
|
65
62
|
@overload
|
66
|
-
async def convert_img(img: Path, is_base64: bool = False) -> str:
|
67
|
-
...
|
63
|
+
async def convert_img(img: Path, is_base64: bool = False) -> str: ...
|
68
64
|
|
69
65
|
|
70
66
|
async def convert_img(
|
@@ -15,6 +15,7 @@ from nonebot.log import logger
|
|
15
15
|
from nonebot.matcher import Matcher
|
16
16
|
from nonebot.params import CommandArg
|
17
17
|
from nonebot.permission import SUPERUSER
|
18
|
+
from nonebot_plugin_saa import MessageFactory
|
18
19
|
|
19
20
|
from ..l4d2_queries import get_ip_to_mes
|
20
21
|
from ..l4d2_queries.utils import json_server_to_tag_dict
|
@@ -22,8 +23,10 @@ from ..l4d2_utils.config import l4_config
|
|
22
23
|
from ..l4d2_utils.utils import extract_last_digit, split_maohao
|
23
24
|
|
24
25
|
require("nonebot_plugin_apscheduler")
|
25
|
-
|
26
|
-
|
26
|
+
try:
|
27
|
+
scheduler = require("nonebot_plugin_apscheduler").scheduler
|
28
|
+
except Exception:
|
29
|
+
scheduler = None
|
27
30
|
driver = get_driver()
|
28
31
|
sch_json = Path("data/L4D2/scheduler.json")
|
29
32
|
if not sch_json.exists():
|
@@ -58,12 +61,13 @@ async def _(event: GroupMessageEvent, matcher: Matcher, args: Message = CommandA
|
|
58
61
|
await matcher.finish("无响应的服务器,请检查")
|
59
62
|
else:
|
60
63
|
return_msg = await add_or_update_data(group_id, msg)
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
64
|
+
await MessageFactory(push_msg).send()
|
65
|
+
# if isinstance(push_msg, bytes):
|
66
|
+
# await matcher.finish(MessageSegment.image(push_msg))
|
67
|
+
# elif isinstance(push_msg, Union[Message, MessageSegment]):
|
68
|
+
# await matcher.finish(push_msg)
|
69
|
+
# else:
|
70
|
+
# await matcher.send(push_msg)
|
67
71
|
if return_msg == "add":
|
68
72
|
await matcher.send(f"已添加群定时任务【{msg}】{l4_config.l4_push_times}次")
|
69
73
|
elif return_msg in ["update", "change"]:
|
@@ -211,9 +215,11 @@ async def server_is_change():
|
|
211
215
|
"""检测服务器是否发生变化"""
|
212
216
|
|
213
217
|
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
218
|
+
if scheduler:
|
219
|
+
logger.success("已成功启动求生定时推送")
|
220
|
+
scheduler.add_job(
|
221
|
+
rss_ip,
|
222
|
+
"interval",
|
223
|
+
minutes=l4_config.l4_push_interval,
|
224
|
+
id="rss_ip",
|
225
|
+
)
|
@@ -8,9 +8,8 @@ from nonebot.adapters.onebot.v11 import GroupMessageEvent
|
|
8
8
|
from nonebot.log import logger
|
9
9
|
from nonebot.matcher import Matcher
|
10
10
|
from nonebot.params import ArgPlainText, CommandArg, CommandStart, Keyword, RawCommand
|
11
|
-
from nonebot_plugin_saa import Image, MessageFactory
|
11
|
+
from nonebot_plugin_saa import Image, MessageFactory
|
12
12
|
|
13
|
-
from ..l4d2_anne.server import updata_anne_server
|
14
13
|
from ..l4d2_image import server_group_ip_pic
|
15
14
|
from ..l4d2_queries.qqgroup import add_ip, del_ip, get_number_url, show_ip
|
16
15
|
from ..l4d2_queries.utils import queries_server
|
@@ -162,23 +161,7 @@ async def get_read_ip(ip_anne_list: List[Tuple[str, str, str]]):
|
|
162
161
|
if push_msg is None:
|
163
162
|
return
|
164
163
|
|
165
|
-
|
166
|
-
logger.info("直接发送图片")
|
167
|
-
await MessageFactory([Image(push_msg)]).finish()
|
168
|
-
return
|
169
|
-
if msg and isinstance(push_msg, list):
|
170
|
-
logger.info("更加构造函数")
|
171
|
-
await MessageFactory([Image(push_msg[0]), Text(push_msg[-1])]).finish()
|
172
|
-
return
|
173
|
-
if msg and isinstance(push_msg, str):
|
174
|
-
send_msg = push_msg
|
175
|
-
else:
|
176
|
-
logger.info("出错了")
|
177
|
-
return
|
178
|
-
logger.info(type(send_msg))
|
179
|
-
if not send_msg:
|
180
|
-
logger.warning("没有")
|
181
|
-
await matcher.finish(send_msg)
|
164
|
+
await MessageFactory(push_msg).send()
|
182
165
|
|
183
166
|
|
184
167
|
# tests = on_command("测试1")
|
@@ -279,29 +262,6 @@ async def _():
|
|
279
262
|
await init()
|
280
263
|
|
281
264
|
|
282
|
-
updata = on_command(
|
283
|
-
"updata_anne",
|
284
|
-
aliases={"求生更新anne"},
|
285
|
-
priority=20,
|
286
|
-
block=True,
|
287
|
-
permission=MASTER,
|
288
|
-
)
|
289
|
-
|
290
|
-
|
291
|
-
@updata.handle()
|
292
|
-
async def _(matcher: Matcher, args: Message = CommandArg()):
|
293
|
-
"""更新"""
|
294
|
-
if args:
|
295
|
-
# 占位先,除了电信服还有再加
|
296
|
-
...
|
297
|
-
anne_ip_dict = await updata_anne_server()
|
298
|
-
if anne_ip_dict is None:
|
299
|
-
await matcher.finish("网络开小差了捏")
|
300
|
-
return
|
301
|
-
server_number = len(anne_ip_dict["云"])
|
302
|
-
await matcher.finish(f"更新成功\n一共更新了{server_number}个电信anne服ip")
|
303
|
-
|
304
|
-
|
305
265
|
@add2_queries.handle()
|
306
266
|
async def _(matcher: Matcher, arg: Message = CommandArg()):
|
307
267
|
arg_list = arg.extract_plain_text().split(" ")
|
@@ -2,6 +2,7 @@ import asyncio
|
|
2
2
|
from typing import Dict, List, Optional, Tuple
|
3
3
|
|
4
4
|
from nonebot.log import logger
|
5
|
+
from nonebot_plugin_saa import Image, Text
|
5
6
|
|
6
7
|
from ..l4d2_queries.local_ip import ALL_HOST
|
7
8
|
from ..l4d2_queries.qqgroup import qq_ip_queries_pic
|
@@ -29,7 +30,7 @@ async def get_ip_to_mes(msg: str, command: str = ""):
|
|
29
30
|
msg_tuple = (one_ip["id"], host, port)
|
30
31
|
ip_list.append(msg_tuple)
|
31
32
|
img = await qq_ip_queries_pic(ip_list, igr)
|
32
|
-
return img if img else None
|
33
|
+
return [Image(img)] if img else None
|
33
34
|
|
34
35
|
if not msg[0].isdigit():
|
35
36
|
# if any(mode in msg for mode in gamemode_list):
|
@@ -46,10 +47,10 @@ async def get_ip_to_mes(msg: str, command: str = ""):
|
|
46
47
|
try:
|
47
48
|
msg_send: Optional[str] = await get_anne_server_ip(ip)
|
48
49
|
if msg_send is not None:
|
49
|
-
return msg_send
|
50
|
+
return [Text(msg_send)]
|
50
51
|
|
51
52
|
except (OSError, asyncio.exceptions.TimeoutError):
|
52
|
-
return "服务器无响应"
|
53
|
+
return [Text("服务器无响应")]
|
53
54
|
|
54
55
|
|
55
56
|
# async def get_read_group_ip():
|
@@ -50,7 +50,9 @@ async def _():
|
|
50
50
|
"更新记录",
|
51
51
|
"更新记录",
|
52
52
|
"查看插件最近的更新记录",
|
53
|
-
detail_des=(
|
53
|
+
detail_des=(
|
54
|
+
"介绍:\n查看插件最近的有效Git更新记录\n \n指令:\n- <ft color=(238,120,0)>更新记录</ft>"
|
55
|
+
),
|
54
56
|
)
|
55
57
|
async def send_updatelog_msg(
|
56
58
|
matcher: Matcher,
|
@@ -55,6 +55,7 @@ class L4d2Config(BaseModel):
|
|
55
55
|
web_username: str = Field("l4d2", alias="后台管理用户名")
|
56
56
|
web_password: str = Field("admin", alias="后台管理密码")
|
57
57
|
l4_style: str = Field("standard", alias="图片风格")
|
58
|
+
l4_img_name: int = Field(4, alias="图片显示玩家数量")
|
58
59
|
l4_ipall: List[Dict[str, Any]] = Field(
|
59
60
|
[
|
60
61
|
{
|
@@ -86,15 +87,19 @@ class L4d2Config(BaseModel):
|
|
86
87
|
"49c294d32f69b732ef6447c18379451ce1738922a75cd1d4812ef150318a2ed0",
|
87
88
|
alias="后台管理token密钥",
|
88
89
|
)
|
89
|
-
l4_master: List[str] = Field(["114514919"], alias="求生地图全局管理员qq")
|
90
|
+
l4_master: List[str] = Field(default=["114514919"], alias="求生地图全局管理员qq")
|
90
91
|
# l4_ip:bool = Field(False, alias='查询地图是否显示ip')
|
91
|
-
l4_font: str = Field("simsun.ttc", alias="字体")
|
92
|
-
l4_only: bool = Field(False, alias="下载地图是是否阻碍其他指令")
|
93
|
-
l4_push_interval: int = Field(3, alias="定时任务间隔")
|
94
|
-
l4_push_times: int = Field(10, alias="定时任务次数")
|
95
|
-
l4_connect: bool = Field(True, alias="是否在查服命令后加入connect ip")
|
96
|
-
l4_group_upload: bool = Field(
|
97
|
-
|
92
|
+
l4_font: str = Field(default="simsun.ttc", alias="字体")
|
93
|
+
l4_only: bool = Field(default=False, alias="下载地图是是否阻碍其他指令")
|
94
|
+
l4_push_interval: int = Field(default=3, alias="定时任务间隔")
|
95
|
+
l4_push_times: int = Field(default=10, alias="定时任务次数")
|
96
|
+
l4_connect: bool = Field(default=True, alias="是否在查服命令后加入connect ip")
|
97
|
+
l4_group_upload: bool = Field(
|
98
|
+
default=False, alias="是否在群里传地图的时候,提示上传服务器"
|
99
|
+
)
|
100
|
+
group_config: Dict[int, L4d2GroupConfig] = Field(
|
101
|
+
default_factory=dict, alias="分群配置"
|
102
|
+
)
|
98
103
|
|
99
104
|
def update(self, **kwargs):
|
100
105
|
for key, value in kwargs.items():
|
@@ -98,7 +98,9 @@ global_config_form = Form(
|
|
98
98
|
label="后台管理用户名",
|
99
99
|
name="web_username",
|
100
100
|
value="${web_username}",
|
101
|
-
labelRemark=Remark(
|
101
|
+
labelRemark=Remark(
|
102
|
+
shape="circle", content="登录本后台管理所需要的用户名。"
|
103
|
+
), # noqa: E501
|
102
104
|
),
|
103
105
|
InputPassword(
|
104
106
|
label="后台管理密码",
|
@@ -119,7 +121,9 @@ global_config_form = Form(
|
|
119
121
|
label="字体",
|
120
122
|
name="l4_font",
|
121
123
|
value="${l4_font}",
|
122
|
-
labelRemark=Remark(
|
124
|
+
labelRemark=Remark(
|
125
|
+
shape="circle", content="机器人返回图片中文字的字体。"
|
126
|
+
), # noqa: E501
|
123
127
|
),
|
124
128
|
Switch(
|
125
129
|
label="是否图片发送单服务器查询",
|
@@ -197,7 +201,9 @@ global_config_form = Form(
|
|
197
201
|
visibleOn="${total_enable}",
|
198
202
|
joinValues=False,
|
199
203
|
extractValue=True,
|
200
|
-
labelRemark=Remark(
|
204
|
+
labelRemark=Remark(
|
205
|
+
shape="circle", content="在这里加入的用户,才能上传地图"
|
206
|
+
), # noqa: E501
|
201
207
|
),
|
202
208
|
InputTag(
|
203
209
|
label="坐牢三指令tag",
|
@@ -426,7 +432,9 @@ server_page = PageSchema(
|
|
426
432
|
Alert(
|
427
433
|
level=LevelEnum.info,
|
428
434
|
className="white-space-pre-wrap",
|
429
|
-
body=(
|
435
|
+
body=(
|
436
|
+
f"此数据库记录了{NICKNAME}所在服务器下的求生服务器。\n· 功能暂未完善"
|
437
|
+
), # noqa: E501
|
430
438
|
),
|
431
439
|
server_control,
|
432
440
|
server_ditail,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: nonebot-plugin-l4d2-server
|
3
|
-
Version: 0.6.
|
3
|
+
Version: 0.6.6
|
4
4
|
Summary: L4D2 server related operations plugin for NoneBot2
|
5
5
|
Keywords: steam game l4d2 nonebot2 plugin
|
6
6
|
Home-page: https://github.com/Agnes4m/nonebot_plugin_l4d2_server
|
@@ -16,7 +16,7 @@ Classifier: Operating System :: OS Independent
|
|
16
16
|
Project-URL: Homepage, https://github.com/Agnes4m/nonebot_plugin_l4d2_server
|
17
17
|
Requires-Python: <4.0,>=3.9
|
18
18
|
Requires-Dist: nonebot2>=2.0.0
|
19
|
-
Requires-Dist: nonebot-plugin-htmlrender==0.2.
|
19
|
+
Requires-Dist: nonebot-plugin-htmlrender==0.2.2
|
20
20
|
Requires-Dist: nonebot_plugin_txt2img>=0.3.0
|
21
21
|
Requires-Dist: nonebot-plugin-apscheduler>=0.2.0
|
22
22
|
Requires-Dist: nonebot-adapter-onebot>=2.2.3
|
@@ -28,9 +28,9 @@ Requires-Dist: srctools>=2.3.9
|
|
28
28
|
Requires-Dist: bs4==0.0.1
|
29
29
|
Requires-Dist: httpx>=0.22.0
|
30
30
|
Requires-Dist: rcon==2.1.0
|
31
|
-
Requires-Dist: pillow
|
31
|
+
Requires-Dist: pillow<10.0.0
|
32
32
|
Requires-Dist: pyunpack>=0.3.0
|
33
|
-
Requires-Dist: ruamel.yaml
|
33
|
+
Requires-Dist: ruamel.yaml==0.17.21
|
34
34
|
Requires-Dist: rarfile>=4.0
|
35
35
|
Requires-Dist: patool>=1.12
|
36
36
|
Requires-Dist: python-a2s>=1.3.0
|
@@ -1,7 +1,7 @@
|
|
1
|
-
nonebot_plugin_l4d2_server-0.6.
|
2
|
-
nonebot_plugin_l4d2_server-0.6.
|
3
|
-
nonebot_plugin_l4d2_server-0.6.
|
4
|
-
nonebot_plugin_l4d2_server/__init__.py,sha256=
|
1
|
+
nonebot_plugin_l4d2_server-0.6.6.dist-info/METADATA,sha256=hOWgsfeQPRxxcSqhh8li9UNBlSZG0iZCQf2wwtCMyME,7938
|
2
|
+
nonebot_plugin_l4d2_server-0.6.6.dist-info/WHEEL,sha256=N2J68yzZqJh3mI_Wg92rwhw0rtJDFpZj9bwQIMJgaVg,90
|
3
|
+
nonebot_plugin_l4d2_server-0.6.6.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
4
|
+
nonebot_plugin_l4d2_server/__init__.py,sha256=DH9_eqAVxmEZicQPcmvkBVXjRSl2oI80SYMaAjv8XP4,4814
|
5
5
|
nonebot_plugin_l4d2_server/data/L4D2/image/head/head.png,sha256=Z72PEvp7xF1DZcLDeuWlg2_g6JAfHxtisptWn6BYGN8,158357
|
6
6
|
nonebot_plugin_l4d2_server/data/L4D2/image/header/logo.png,sha256=1KhQNsx7zsCKGHmyIZ65dP9npkKzo7Im-Aafyi5_lhc,631630
|
7
7
|
nonebot_plugin_l4d2_server/data/L4D2/image/header/player1.jpg,sha256=2A_llIi9YVhJs9JOMuF36by7Ewc7P7qOgQS8t5jemNw,405369
|
@@ -28,43 +28,43 @@ nonebot_plugin_l4d2_server/l4d2_data/config.py,sha256=j_Iq2fmJkCX9G-oscuibhCvozF
|
|
28
28
|
nonebot_plugin_l4d2_server/l4d2_data/database.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
29
29
|
nonebot_plugin_l4d2_server/l4d2_data/players.py,sha256=0c4OAEKC38ZBTcbvI-lBl2D0wRUqwm0Spccmi4KlhqQ,3368
|
30
30
|
nonebot_plugin_l4d2_server/l4d2_data/serverip.py,sha256=YnzPwjQaESgOQq8m_aJxZlhwTqzVbwPHD6-EWoIXq60,1293
|
31
|
-
nonebot_plugin_l4d2_server/l4d2_file/__init__.py,sha256=
|
31
|
+
nonebot_plugin_l4d2_server/l4d2_file/__init__.py,sha256=CnkhLLELWxj9VUeQx8xB_KehyyfB_c9UgyEAeE_54b4,7177
|
32
32
|
nonebot_plugin_l4d2_server/l4d2_file/ayromote.py,sha256=CND4LSKEYO86bSrd6_TGe9A5RvVJpy2_--tX9mROHIM,1868
|
33
33
|
nonebot_plugin_l4d2_server/l4d2_file/input_json.py,sha256=_S7NIUZhZlE63ueETnPyVcZMnBAAwIVZdmW3VBukccY,2347
|
34
34
|
nonebot_plugin_l4d2_server/l4d2_file/remote.py,sha256=vzW1RhqAUi7lMLjeoYOUvy_70NVHgGQS07oPkeWNxgk,3074
|
35
|
-
nonebot_plugin_l4d2_server/l4d2_file/utils.py,sha256
|
36
|
-
nonebot_plugin_l4d2_server/l4d2_image/__init__.py,sha256=
|
35
|
+
nonebot_plugin_l4d2_server/l4d2_file/utils.py,sha256=-L_upM6cmVh5GhLyL1NneyEW_ewNOmnT2lcliRAAqe0,3050
|
36
|
+
nonebot_plugin_l4d2_server/l4d2_image/__init__.py,sha256=Y2y1Viy3mbgV8JA8vHHM23Z7Oaxx5-TVudC1ONzf_a0,4545
|
37
37
|
nonebot_plugin_l4d2_server/l4d2_image/download.py,sha256=_ndH2KlehQ5L84hX0b3Lqz0GYQhAWXGy6XJZZODcGqM,4248
|
38
38
|
nonebot_plugin_l4d2_server/l4d2_image/htmlimg.py,sha256=7nVaLI89e8UXehCfBrxumYMj2wIR1V8UWRDueQW-lhQ,664
|
39
|
-
nonebot_plugin_l4d2_server/l4d2_image/images.py,sha256=
|
39
|
+
nonebot_plugin_l4d2_server/l4d2_image/images.py,sha256=wqtAuMfKPvFsgsvIGFYNsES2r1iCs5-yL0_zJo7PFjs,2785
|
40
40
|
nonebot_plugin_l4d2_server/l4d2_image/one.py,sha256=8rZ5GD-F3mp_tXVsbPRoFV4xFiSVDMxMYV2GsAc6TUI,1142
|
41
41
|
nonebot_plugin_l4d2_server/l4d2_image/send_image_tool.py,sha256=0qcce0wOI7liuwjsbUPbFhfMXG06hkrpoSpGlCbl3j4,922
|
42
42
|
nonebot_plugin_l4d2_server/l4d2_image/steam.py,sha256=4c428t9bkRxig4Hmj4XllaoKCSsY6fpIYIkq1DhHUiE,2203
|
43
43
|
nonebot_plugin_l4d2_server/l4d2_image/vtfs.py,sha256=AltoUKpMzWQHY_PSqmlSHQyomk2dZHHML4YN6rnP1s0,1415
|
44
|
-
nonebot_plugin_l4d2_server/l4d2_push/__init__.py,sha256
|
45
|
-
nonebot_plugin_l4d2_server/l4d2_queries/__init__.py,sha256=
|
44
|
+
nonebot_plugin_l4d2_server/l4d2_push/__init__.py,sha256=trCYaSVr6im6ggQk5gedZJ3kZiOGs5UO8V7fl-pYfs0,7686
|
45
|
+
nonebot_plugin_l4d2_server/l4d2_queries/__init__.py,sha256=BK5Rqf4gDCcEkpHPtIVQeLz-PtSW09HBsG8WFsHqNuE,10312
|
46
46
|
nonebot_plugin_l4d2_server/l4d2_queries/himi.py,sha256=iu34wD6P7yWXK_WtErpqmSlNLUjq2pwqO_wf_Rd3X8c,3547
|
47
47
|
nonebot_plugin_l4d2_server/l4d2_queries/local_ip.py,sha256=-wPvCx8mzl7KVh_OlC3j_EjYMf5IEIeLYkZNnknxITY,1281
|
48
48
|
nonebot_plugin_l4d2_server/l4d2_queries/qqgroup.py,sha256=Fcfdprwg2rKXKC5tfGiwkReAXnqdD7WRizhhDmV3Grg,12495
|
49
|
-
nonebot_plugin_l4d2_server/l4d2_queries/send_msg.py,sha256=
|
49
|
+
nonebot_plugin_l4d2_server/l4d2_queries/send_msg.py,sha256=rDh2mzq7QnG3eqSsUyGFY73erAHYP0L_3bNc0Q1dUj4,4690
|
50
50
|
nonebot_plugin_l4d2_server/l4d2_queries/utils.py,sha256=CjGpDvmo44q5fOVMB6t0yxv1zWwBO8VXrW_TUd2REg0,6208
|
51
51
|
nonebot_plugin_l4d2_server/l4d2_server/__init__.py,sha256=azvqgmH-SY2_AESIl8Uta9AzFA4ijefR_0NlLH8MBQo,4353
|
52
52
|
nonebot_plugin_l4d2_server/l4d2_server/index.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
53
53
|
nonebot_plugin_l4d2_server/l4d2_server/rcon.py,sha256=1vz1CAZg0atqIk45d18273ubFd8rm8Y2iW2SK0F8s20,1669
|
54
54
|
nonebot_plugin_l4d2_server/l4d2_server/workshop.py,sha256=m-ZdzYGOWOIxK_cSPAJ8tTr9NA16KpsQgauQt0PTs-g,2846
|
55
|
-
nonebot_plugin_l4d2_server/l4d2_update/__init__.py,sha256=
|
55
|
+
nonebot_plugin_l4d2_server/l4d2_update/__init__.py,sha256=F--dU5arxQztldaH6pr5e-js5UYVksTk9i9mRq3VYGc,4043
|
56
56
|
nonebot_plugin_l4d2_server/l4d2_update/draw_update_log.py,sha256=-Tkn2GBIrDskHbwgAtrh05HflqX32z79vGjIBjR1GQo,1186
|
57
57
|
nonebot_plugin_l4d2_server/l4d2_update/restart.py,sha256=R4tSNgvbqtKCRTVdp41td2mkBNV96I35PfSetm9o5YU,2181
|
58
58
|
nonebot_plugin_l4d2_server/l4d2_update/update.py,sha256=h_YPzWWO6LY5v-m0Yg6fVUhHCvv4qOsdyk6vmotZETA,1465
|
59
59
|
nonebot_plugin_l4d2_server/l4d2_utils/classcal.py,sha256=WqI1pHnTdrgjQ_9YULhaFhERkUYZ-WhtvKBHHaT6_Sg,1226
|
60
60
|
nonebot_plugin_l4d2_server/l4d2_utils/command.py,sha256=cCflT3o5hvE4k56Bbg2TtY5avyEM-Z8nY9GNU3KtoXo,629
|
61
|
-
nonebot_plugin_l4d2_server/l4d2_utils/config.py,sha256=
|
61
|
+
nonebot_plugin_l4d2_server/l4d2_utils/config.py,sha256=4fz-VqAFLEIZw9O-08f52MzVqqzS_WIV2XIOno5Gw4w,6282
|
62
62
|
nonebot_plugin_l4d2_server/l4d2_utils/message.py,sha256=VzLtK9iPjJHPS1I7cmEIBCxiCivH0xaoBX-S_S9izZY,1631
|
63
63
|
nonebot_plugin_l4d2_server/l4d2_utils/rule.py,sha256=A_lC5i8hiQEZiTcCW_Pn2sldwuD5Pz3UdMHiozFqunc,1007
|
64
64
|
nonebot_plugin_l4d2_server/l4d2_utils/seach.py,sha256=ZAhwvS_xxSYg8AXIaRQTp9HzdAnSy2tHhxXrhR_YytQ,1230
|
65
65
|
nonebot_plugin_l4d2_server/l4d2_utils/txt_to_img.py,sha256=GNbveJi5sFlyqIpcBjHmyib2_of2kBs7lfq0VqLT83w,794
|
66
66
|
nonebot_plugin_l4d2_server/l4d2_utils/utils.py,sha256=S1MYcfD38Fcvz4y1jEuoKWhc5LYYT-Skk2K7iVCr7P0,5898
|
67
67
|
nonebot_plugin_l4d2_server/l4d2_web/web.py,sha256=YvEMxG0nDrjbm4-IK9GkZlV7MPF9Nedc3goCnCUk_LA,9799
|
68
|
-
nonebot_plugin_l4d2_server/l4d2_web/webUI.py,sha256=
|
68
|
+
nonebot_plugin_l4d2_server/l4d2_web/webUI.py,sha256=sk0rcF3EnwLr2yTvLAu-BKmAixZTLLPZ1vvE54ym1tc,16345
|
69
69
|
nonebot_plugin_l4d2_server/l4d2_web/webUI_s.py,sha256=Y8PxkarJPsF9OvUVWCJ3SyhWYlYU5VQNnRGKG72KwFc,3339
|
70
|
-
nonebot_plugin_l4d2_server-0.6.
|
70
|
+
nonebot_plugin_l4d2_server-0.6.6.dist-info/RECORD,,
|
File without changes
|