nonebot-plugin-l4d2-server 0.6.6__py3-none-any.whl → 1.0.0a1__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 +9 -92
- nonebot_plugin_l4d2_server/__main__.py +90 -0
- nonebot_plugin_l4d2_server/config.py +30 -0
- nonebot_plugin_l4d2_server/data/L4D2/image/head/head.png +0 -0
- nonebot_plugin_l4d2_server/data/L4D2/image/header/logo.png +0 -0
- nonebot_plugin_l4d2_server/data/L4D2/image/header/player1.jpg +0 -0
- nonebot_plugin_l4d2_server/data/L4D2/image/template/anne.html +50 -42
- nonebot_plugin_l4d2_server/data/L4D2/image/template/back.png +0 -0
- nonebot_plugin_l4d2_server/data/L4D2/image/template/group_ip.html +1 -2
- nonebot_plugin_l4d2_server/data/L4D2/image/template/help.html +1 -2
- nonebot_plugin_l4d2_server/data/L4D2/image/template/help_dack.html +259 -221
- nonebot_plugin_l4d2_server/data/L4D2/image/template/ip.html +1 -2
- nonebot_plugin_l4d2_server/data/font/loli.ttf +0 -0
- nonebot_plugin_l4d2_server/data/icon//344/273/213/347/273/215.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//344/273/273/345/212/241.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//344/277/241/346/201/257.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//345/205/254/345/221/212.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//345/210/200/345/211/221.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//345/210/207/346/215/242.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//345/210/240/351/231/244.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//345/210/267/346/226/260.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//345/215/241/347/273/204.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//345/223/252/351/207/214.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//345/234/260/345/233/276.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//345/257/274/345/205/245.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//345/257/274/345/207/272.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//345/275/261.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//346/213/274/345/233/276.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//346/216/242/347/264/242.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//346/216/250/351/200/201.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//346/224/266/351/233/206.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//346/224/273/347/225/245.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//346/233/264/346/226/260.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//346/235/220/346/226/231.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//346/237/245/350/257/242.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//346/240/241/351/252/214.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//346/257/217/346/234/210.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//346/267/261/346/270/212.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//346/267/273/345/212/240.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//346/270/205/351/231/244.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//347/212/266/346/200/201.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//347/255/276/345/210/260.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//347/273/221/345/256/232.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//350/241/250.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//350/241/250/346/203/205.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//350/247/222/350/211/262.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//350/256/260/345/275/225.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//351/205/215/347/275/256.png +0 -0
- nonebot_plugin_l4d2_server/data/icon//351/207/215/345/220/257.png +0 -0
- nonebot_plugin_l4d2_server/data/img/l4d2.png +0 -0
- nonebot_plugin_l4d2_server/data/img/linux.png +0 -0
- nonebot_plugin_l4d2_server/data/img/vac.png +0 -0
- nonebot_plugin_l4d2_server/data/img/white.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/Help.json +65 -0
- nonebot_plugin_l4d2_server/l4_help/__init__.py +57 -0
- nonebot_plugin_l4d2_server/l4_help/draw.py +206 -0
- nonebot_plugin_l4d2_server/l4_help/icon//344/273/213/347/273/215.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//344/273/273/345/212/241.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//344/277/241/346/201/257.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//345/205/254/345/221/212.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//345/210/200/345/211/221.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//345/210/207/346/215/242.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//345/210/240/351/231/244.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//345/210/267/346/226/260.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//345/215/241/347/273/204.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//345/223/252/351/207/214.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//345/234/260/345/233/276.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//345/257/274/345/205/245.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//345/257/274/345/207/272.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//345/275/261.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//346/213/274/345/233/276.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//346/216/242/347/264/242.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//346/216/250/351/200/201.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//346/224/266/351/233/206.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//346/224/273/347/225/245.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//346/233/264/346/226/260.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//346/235/220/346/226/231.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//346/237/245/350/257/242.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//346/240/241/351/252/214.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//346/257/217/346/234/210.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//346/267/261/346/270/212.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//346/267/273/345/212/240.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//346/270/205/351/231/244.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//347/212/266/346/200/201.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//347/255/276/345/210/260.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//347/273/221/345/256/232.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//350/241/250.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//350/241/250/346/203/205.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//350/247/222/350/211/262.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//350/256/260/345/275/225.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//351/205/215/347/275/256.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/icon//351/207/215/345/220/257.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/texture2d/badge.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/texture2d/banner.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/texture2d/bg.jpg +0 -0
- nonebot_plugin_l4d2_server/l4_help/texture2d/button.png +0 -0
- nonebot_plugin_l4d2_server/l4_help/texture2d/icon.png +0 -0
- nonebot_plugin_l4d2_server/l4_image/__init__.py +16 -0
- nonebot_plugin_l4d2_server/l4_image/convert.py +175 -0
- nonebot_plugin_l4d2_server/{l4d2_image → l4_image}/download.py +6 -30
- nonebot_plugin_l4d2_server/{l4d2_image/__init__.py → l4_image/html_img.py} +54 -45
- nonebot_plugin_l4d2_server/l4_image/image_tools.py +468 -0
- nonebot_plugin_l4d2_server/l4_image/img/anne/anne.html +60 -0
- nonebot_plugin_l4d2_server/l4_image/img/anne/back.png +0 -0
- nonebot_plugin_l4d2_server/l4_image/img/anne/group_ip.html +259 -0
- nonebot_plugin_l4d2_server/l4_image/img/anne/ip.html +55 -0
- nonebot_plugin_l4d2_server/l4_image/img/head/head.png +0 -0
- nonebot_plugin_l4d2_server/l4_image/img/header/logo.png +0 -0
- nonebot_plugin_l4d2_server/l4_image/img/header/player1.jpg +0 -0
- nonebot_plugin_l4d2_server/l4_image/img/template/Bocchi_The_Rock.html +312 -0
- nonebot_plugin_l4d2_server/l4_image/img/template/Bocchi_The_Rock.png +0 -0
- nonebot_plugin_l4d2_server/l4_image/img/template/HYPixel11pxU-2.ttf +0 -0
- nonebot_plugin_l4d2_server/l4_image/img/template/Pixel.html +350 -0
- nonebot_plugin_l4d2_server/l4_image/img/template/Pixel.png +0 -0
- nonebot_plugin_l4d2_server/l4_image/img/template/Rainbow.html +321 -0
- nonebot_plugin_l4d2_server/l4_image/img/template/Rainbow.png +0 -0
- nonebot_plugin_l4d2_server/l4_image/img/template/Tutumianhuatang-Bold-2.ttf +0 -0
- nonebot_plugin_l4d2_server/l4_image/img/template/bilibili.svg +1 -0
- nonebot_plugin_l4d2_server/l4_image/img/template/fingerprint.svg +15 -0
- nonebot_plugin_l4d2_server/l4_image/img/template/github.svg +1 -0
- nonebot_plugin_l4d2_server/l4_image/img/template/l.svg +9 -0
- nonebot_plugin_l4d2_server/l4_image/img/template/m.svg +1 -0
- nonebot_plugin_l4d2_server/l4_image/img/template/normal.html +257 -0
- nonebot_plugin_l4d2_server/l4_image/img/template/vue.css +531 -0
- nonebot_plugin_l4d2_server/l4_image/img/template/w.svg +1 -0
- nonebot_plugin_l4d2_server/l4_image/img/template//345/276/256/350/275/257/351/233/205/351/273/221.ttf +0 -0
- nonebot_plugin_l4d2_server/l4_image/model.py +15 -0
- nonebot_plugin_l4d2_server/{l4d2_image → l4_image}/vtfs.py +2 -0
- nonebot_plugin_l4d2_server/l4_request/__init__.py +84 -0
- nonebot_plugin_l4d2_server/l4_request/draw_msg.py +88 -0
- nonebot_plugin_l4d2_server/utils/api/api.py +4 -0
- nonebot_plugin_l4d2_server/utils/api/models.py +29 -0
- nonebot_plugin_l4d2_server/utils/api/request.py +119 -0
- nonebot_plugin_l4d2_server/utils/database/models.py +29 -0
- nonebot_plugin_l4d2_server/{l4d2_utils → utils}/utils.py +52 -55
- {nonebot_plugin_l4d2_server-0.6.6.dist-info → nonebot_plugin_l4d2_server-1.0.0a1.dist-info}/METADATA +47 -64
- nonebot_plugin_l4d2_server-1.0.0a1.dist-info/RECORD +144 -0
- {nonebot_plugin_l4d2_server-0.6.6.dist-info → nonebot_plugin_l4d2_server-1.0.0a1.dist-info}/WHEEL +1 -1
- nonebot_plugin_l4d2_server/l4d2_anne/__init__.py +0 -95
- nonebot_plugin_l4d2_server/l4d2_anne/analysis.py +0 -54
- nonebot_plugin_l4d2_server/l4d2_anne/anne_telecom.py +0 -79
- nonebot_plugin_l4d2_server/l4d2_anne/server.py +0 -47
- nonebot_plugin_l4d2_server/l4d2_anne/startand.py +0 -17
- nonebot_plugin_l4d2_server/l4d2_anne/utils.py +0 -294
- nonebot_plugin_l4d2_server/l4d2_data/__init__.py +0 -105
- nonebot_plugin_l4d2_server/l4d2_data/config.py +0 -18
- nonebot_plugin_l4d2_server/l4d2_data/database.py +0 -0
- nonebot_plugin_l4d2_server/l4d2_data/players.py +0 -100
- nonebot_plugin_l4d2_server/l4d2_data/serverip.py +0 -40
- nonebot_plugin_l4d2_server/l4d2_file/__init__.py +0 -222
- nonebot_plugin_l4d2_server/l4d2_file/ayromote.py +0 -64
- nonebot_plugin_l4d2_server/l4d2_file/input_json.py +0 -77
- nonebot_plugin_l4d2_server/l4d2_file/remote.py +0 -86
- nonebot_plugin_l4d2_server/l4d2_file/utils.py +0 -104
- nonebot_plugin_l4d2_server/l4d2_image/htmlimg.py +0 -18
- nonebot_plugin_l4d2_server/l4d2_image/images.py +0 -92
- nonebot_plugin_l4d2_server/l4d2_image/one.py +0 -44
- nonebot_plugin_l4d2_server/l4d2_image/send_image_tool.py +0 -32
- nonebot_plugin_l4d2_server/l4d2_image/steam.py +0 -63
- nonebot_plugin_l4d2_server/l4d2_push/__init__.py +0 -225
- nonebot_plugin_l4d2_server/l4d2_queries/__init__.py +0 -326
- nonebot_plugin_l4d2_server/l4d2_queries/himi.py +0 -113
- nonebot_plugin_l4d2_server/l4d2_queries/local_ip.py +0 -41
- nonebot_plugin_l4d2_server/l4d2_queries/qqgroup.py +0 -370
- nonebot_plugin_l4d2_server/l4d2_queries/send_msg.py +0 -131
- nonebot_plugin_l4d2_server/l4d2_queries/utils.py +0 -212
- nonebot_plugin_l4d2_server/l4d2_server/__init__.py +0 -118
- nonebot_plugin_l4d2_server/l4d2_server/index.py +0 -0
- nonebot_plugin_l4d2_server/l4d2_server/rcon.py +0 -53
- nonebot_plugin_l4d2_server/l4d2_server/workshop.py +0 -82
- nonebot_plugin_l4d2_server/l4d2_update/__init__.py +0 -137
- nonebot_plugin_l4d2_server/l4d2_update/draw_update_log.py +0 -45
- nonebot_plugin_l4d2_server/l4d2_update/restart.py +0 -69
- nonebot_plugin_l4d2_server/l4d2_update/update.py +0 -53
- nonebot_plugin_l4d2_server/l4d2_utils/classcal.py +0 -53
- nonebot_plugin_l4d2_server/l4d2_utils/command.py +0 -23
- nonebot_plugin_l4d2_server/l4d2_utils/config.py +0 -201
- nonebot_plugin_l4d2_server/l4d2_utils/message.py +0 -59
- nonebot_plugin_l4d2_server/l4d2_utils/rule.py +0 -35
- nonebot_plugin_l4d2_server/l4d2_utils/seach.py +0 -43
- nonebot_plugin_l4d2_server/l4d2_utils/txt_to_img.py +0 -32
- nonebot_plugin_l4d2_server/l4d2_web/web.py +0 -277
- nonebot_plugin_l4d2_server/l4d2_web/webUI.py +0 -506
- nonebot_plugin_l4d2_server/l4d2_web/webUI_s.py +0 -94
- nonebot_plugin_l4d2_server-0.6.6.dist-info/RECORD +0 -70
- {nonebot_plugin_l4d2_server-0.6.6.dist-info → nonebot_plugin_l4d2_server-1.0.0a1.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,29 @@
|
|
1
|
+
from typing import List, Optional, TypedDict
|
2
|
+
|
3
|
+
import a2s
|
4
|
+
from pydantic import BaseModel
|
5
|
+
|
6
|
+
|
7
|
+
class SourceBansInfo(BaseModel):
|
8
|
+
"""source服务器信息"""
|
9
|
+
|
10
|
+
index: int
|
11
|
+
host: str
|
12
|
+
port: int
|
13
|
+
|
14
|
+
|
15
|
+
class NserverOut(TypedDict):
|
16
|
+
id: int
|
17
|
+
ip: str
|
18
|
+
host: str
|
19
|
+
port: int
|
20
|
+
version: Optional[str]
|
21
|
+
|
22
|
+
|
23
|
+
class OutServer(TypedDict):
|
24
|
+
server: a2s.SourceInfo
|
25
|
+
player: List[a2s.Player]
|
26
|
+
host: str
|
27
|
+
port: int
|
28
|
+
command: str
|
29
|
+
id_: int
|
@@ -0,0 +1,119 @@
|
|
1
|
+
import json as js
|
2
|
+
from copy import deepcopy
|
3
|
+
from typing import Any, Dict, List, Literal, Optional, Union
|
4
|
+
|
5
|
+
import a2s
|
6
|
+
from httpx import AsyncClient
|
7
|
+
from lxml import etree
|
8
|
+
|
9
|
+
from ..utils import split_maohao
|
10
|
+
from .api import anne_ban
|
11
|
+
from .models import SourceBansInfo
|
12
|
+
|
13
|
+
|
14
|
+
class L4D2Api:
|
15
|
+
ssl_verify = False
|
16
|
+
_HEADER: Dict[str, str] = { # noqa: RUF012
|
17
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
|
18
|
+
"(KHTML, like Gecko)"
|
19
|
+
"Chrome/126.0.0.0"
|
20
|
+
"Safari/537.36 Edg/126.0.0.0",
|
21
|
+
}
|
22
|
+
|
23
|
+
async def a2s_info(
|
24
|
+
self,
|
25
|
+
host: str,
|
26
|
+
port: int,
|
27
|
+
) -> a2s.SourceInfo:
|
28
|
+
msg: a2s.SourceInfo = await a2s.ainfo((host, port))
|
29
|
+
return msg
|
30
|
+
|
31
|
+
async def a2s_players(
|
32
|
+
self,
|
33
|
+
host: str,
|
34
|
+
port: int,
|
35
|
+
) -> List[a2s.Player]:
|
36
|
+
msg: List[a2s.Player] = await a2s.aplayers((host, port))
|
37
|
+
return msg
|
38
|
+
|
39
|
+
async def _server_request(
|
40
|
+
self,
|
41
|
+
url: str,
|
42
|
+
method: Literal["GET", "POST"] = "GET",
|
43
|
+
header: Dict[str, str] = _HEADER,
|
44
|
+
params: Optional[Dict[str, Any]] = None,
|
45
|
+
json: Optional[Dict[str, Any]] = None,
|
46
|
+
data: Optional[Dict[str, Any]] = None,
|
47
|
+
is_json: bool = True,
|
48
|
+
) -> Union[Dict, int]:
|
49
|
+
header = deepcopy(self._HEADER)
|
50
|
+
|
51
|
+
if json is not None:
|
52
|
+
method = "POST"
|
53
|
+
|
54
|
+
async with AsyncClient(verify=self.ssl_verify) as client:
|
55
|
+
resp = await client.request(
|
56
|
+
method,
|
57
|
+
url=url,
|
58
|
+
headers=header,
|
59
|
+
params=params,
|
60
|
+
json=json,
|
61
|
+
data=data,
|
62
|
+
timeout=300,
|
63
|
+
)
|
64
|
+
|
65
|
+
if is_json:
|
66
|
+
try:
|
67
|
+
raw_data = await resp.json()
|
68
|
+
except: # noqa: E722
|
69
|
+
_raw_data = resp.text
|
70
|
+
try:
|
71
|
+
raw_data = js.loads(_raw_data)
|
72
|
+
except: # noqa: E722
|
73
|
+
raw_data = {
|
74
|
+
"result": {"error_code": -999, "data": _raw_data},
|
75
|
+
}
|
76
|
+
try:
|
77
|
+
if not raw_data["result"]:
|
78
|
+
return raw_data
|
79
|
+
except Exception:
|
80
|
+
return raw_data
|
81
|
+
if (
|
82
|
+
"result" in raw_data
|
83
|
+
and "error_code" in raw_data["result"]
|
84
|
+
and raw_data["code"] != 0
|
85
|
+
):
|
86
|
+
return raw_data["result"]["error_code"]
|
87
|
+
return raw_data
|
88
|
+
html_content = resp.text
|
89
|
+
return etree.HTML(html_content)
|
90
|
+
|
91
|
+
async def get_sourceban(self, name: str, url: str = anne_ban):
|
92
|
+
tree = await self._server_request(
|
93
|
+
url=url,
|
94
|
+
is_json=False,
|
95
|
+
) # type: ignore
|
96
|
+
name = name
|
97
|
+
# 检查响应状态码
|
98
|
+
|
99
|
+
target_element = tree.xpath(
|
100
|
+
"/html/body/main/div[3]/div[5]/div/div/table/tbody/tr",
|
101
|
+
)
|
102
|
+
server_list = []
|
103
|
+
# for tr in target_element:
|
104
|
+
for tr in target_element:
|
105
|
+
if tr.get("class") != "collapse":
|
106
|
+
continue
|
107
|
+
index = 0
|
108
|
+
for td in tr.xpath("./td"):
|
109
|
+
if td.get("id") is not None or td.text == "\n":
|
110
|
+
continue
|
111
|
+
index += 1
|
112
|
+
host, port = split_maohao(td.text)
|
113
|
+
server_list.append(SourceBansInfo(index=index, host=host, port=port))
|
114
|
+
|
115
|
+
# 通过一次请求,确定服务器的序号
|
116
|
+
return server_list
|
117
|
+
|
118
|
+
|
119
|
+
L4API = L4D2Api()
|
@@ -0,0 +1,29 @@
|
|
1
|
+
from pathlib import Path
|
2
|
+
|
3
|
+
from nonebot import on_command
|
4
|
+
from nonebot_plugin_datastore import get_plugin_data
|
5
|
+
from sqlalchemy.orm import Mapped, mapped_column
|
6
|
+
|
7
|
+
plugin_data = get_plugin_data()
|
8
|
+
|
9
|
+
# 定义模型
|
10
|
+
DATA = get_plugin_data()
|
11
|
+
DATA.set_migration_dir(Path("data/L4D2/") / "sql")
|
12
|
+
|
13
|
+
|
14
|
+
class SteamUser(DATA.Model):
|
15
|
+
"""个人资料"""
|
16
|
+
|
17
|
+
SteamID: Mapped[str] = mapped_column(primary_key=True)
|
18
|
+
SteamID64: Mapped[str]
|
19
|
+
Name: Mapped[str]
|
20
|
+
|
21
|
+
|
22
|
+
matcher = on_command("test")
|
23
|
+
|
24
|
+
# 数据库相关操作
|
25
|
+
# @matcher.handle()
|
26
|
+
# async def handle(session: AsyncSession = Depends(get_session)):
|
27
|
+
# example = SteamUser(message="matcher")
|
28
|
+
# session.add(example)
|
29
|
+
# await session.commit()
|
@@ -1,19 +1,12 @@
|
|
1
1
|
import json
|
2
|
+
import os
|
2
3
|
import tempfile
|
3
4
|
from pathlib import Path
|
4
5
|
from typing import Any, Dict, List, Optional, Tuple
|
5
6
|
|
6
7
|
import aiofiles
|
7
|
-
import httpx
|
8
8
|
from nonebot.adapters.onebot.v11 import Bot, GroupMessageEvent, MessageEvent
|
9
9
|
from nonebot.log import logger
|
10
|
-
from nonebot.matcher import Matcher
|
11
|
-
|
12
|
-
from ..l4d2_image.steam import url_to_byte
|
13
|
-
from .config import l4_config, systems
|
14
|
-
|
15
|
-
# from .rule import
|
16
|
-
from .txt_to_img import mode_txt_to_img
|
17
10
|
|
18
11
|
|
19
12
|
async def get_file(url: str, down_file: Path):
|
@@ -21,10 +14,7 @@ async def get_file(url: str, down_file: Path):
|
|
21
14
|
下载指定Url到指定位置
|
22
15
|
"""
|
23
16
|
try:
|
24
|
-
|
25
|
-
maps = await url_to_byte(url)
|
26
|
-
else:
|
27
|
-
maps = httpx.get(url).content # noqa: ASYNC100
|
17
|
+
maps = await url_to_byte(url)
|
28
18
|
logger.info("已获取文件,尝试新建文件并写入")
|
29
19
|
if maps:
|
30
20
|
async with aiofiles.open(down_file, "wb") as mfile:
|
@@ -99,7 +89,7 @@ async def save_file(file: bytes, path_name):
|
|
99
89
|
|
100
90
|
async def upload_file(bot: Bot, event: MessageEvent, file_data: bytes, filename: str):
|
101
91
|
"""上传临时文件"""
|
102
|
-
if
|
92
|
+
if os.name == "nt":
|
103
93
|
with tempfile.TemporaryDirectory() as temp_dir:
|
104
94
|
async with aiofiles.open(Path(temp_dir) / filename, "wb") as f:
|
105
95
|
await f.write(file_data)
|
@@ -118,23 +108,23 @@ async def upload_file(bot: Bot, event: MessageEvent, file_data: bytes, filename:
|
|
118
108
|
name=filename,
|
119
109
|
)
|
120
110
|
(Path().joinpath(filename)).unlink()
|
121
|
-
|
111
|
+
else:
|
122
112
|
with tempfile.NamedTemporaryFile("wb+") as f:
|
123
113
|
f.write(file_data)
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
114
|
+
if isinstance(event, GroupMessageEvent):
|
115
|
+
await bot.call_api(
|
116
|
+
"upload_group_file",
|
117
|
+
group_id=event.group_id,
|
118
|
+
file=f.name,
|
119
|
+
name=filename,
|
120
|
+
)
|
121
|
+
else:
|
122
|
+
await bot.call_api(
|
123
|
+
"upload_private_file",
|
124
|
+
user_id=event.user_id,
|
125
|
+
file=f.name,
|
126
|
+
name=filename,
|
127
|
+
)
|
138
128
|
|
139
129
|
|
140
130
|
sub_menus = []
|
@@ -176,32 +166,39 @@ async def extract_last_digit(msg: str) -> Tuple[str, str]:
|
|
176
166
|
return msg, ""
|
177
167
|
|
178
168
|
|
179
|
-
|
180
|
-
"""判断图片输出还是正常输出"""
|
181
|
-
if l4_config.l4_image:
|
182
|
-
lines = push_msg.splitlines()
|
183
|
-
first_str = lines[0]
|
184
|
-
last_str = lines[-1]
|
185
|
-
push_msg = "\n".join(lines[1:-1])
|
186
|
-
if l4_config.l4_connect:
|
187
|
-
await mode_txt_to_img(first_str, push_msg, last_str)
|
188
|
-
else:
|
189
|
-
await mode_txt_to_img(first_str, push_msg)
|
190
|
-
else:
|
191
|
-
if l4_config.l4_connect or keyword == "connect":
|
192
|
-
await matcher.send(push_msg)
|
193
|
-
else:
|
194
|
-
await matcher.send("\n".join(push_msg.splitlines()[1:-2]))
|
195
|
-
|
196
|
-
|
197
|
-
def split_maohao(msg: str) -> List[str]:
|
169
|
+
def split_maohao(msg: str) -> Tuple[str, int]:
|
198
170
|
"""分割大小写冒号"""
|
199
171
|
if ":" in msg:
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
172
|
+
return msg.split(":")[0], int(msg.split(":")[-1])
|
173
|
+
if ":" in msg:
|
174
|
+
return msg.split(":")[0], int(msg.split(":")[-1])
|
175
|
+
if msg.replace(".", "").isdigit():
|
176
|
+
return msg, 20715
|
177
|
+
return "", -1
|
178
|
+
|
179
|
+
|
180
|
+
import aiohttp
|
181
|
+
|
182
|
+
headers = {
|
183
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0", # noqa: E501
|
184
|
+
}
|
185
|
+
|
186
|
+
|
187
|
+
async def url_to_byte(url: str):
|
188
|
+
"""获取URL数据的字节流"""
|
189
|
+
|
190
|
+
async with aiohttp.ClientSession() as session:
|
191
|
+
async with session.get(url, headers=headers, timeout=600) as response:
|
192
|
+
if response.status == 200:
|
193
|
+
return await response.read()
|
194
|
+
return None
|
195
|
+
|
196
|
+
|
197
|
+
async def url_to_msg(url: str):
|
198
|
+
"""获取URL数据的字节流"""
|
199
|
+
|
200
|
+
async with aiohttp.ClientSession() as session:
|
201
|
+
async with session.get(url, headers=headers, timeout=600) as response:
|
202
|
+
if response.status == 200:
|
203
|
+
return await response.text()
|
204
|
+
return None
|
{nonebot_plugin_l4d2_server-0.6.6.dist-info → nonebot_plugin_l4d2_server-1.0.0a1.dist-info}/METADATA
RENAMED
@@ -1,8 +1,8 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: nonebot-plugin-l4d2-server
|
3
|
-
Version: 0.
|
3
|
+
Version: 1.0.0a1
|
4
4
|
Summary: L4D2 server related operations plugin for NoneBot2
|
5
|
-
Keywords: steam
|
5
|
+
Keywords: steam,game,l4d2,nonebot2,plugin
|
6
6
|
Home-page: https://github.com/Agnes4m/nonebot_plugin_l4d2_server
|
7
7
|
Author-Email: Agnes_Digital <Z735803792@163.com>
|
8
8
|
License: GPLv3
|
@@ -16,29 +16,15 @@ 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
|
20
|
-
Requires-Dist:
|
21
|
-
Requires-Dist: nonebot-plugin-
|
22
|
-
Requires-Dist: nonebot-adapter-onebot>=2.2.3
|
23
|
-
Requires-Dist: nonebot-plugin-send-anything-anywhere>=0.2.7
|
24
|
-
Requires-Dist: asyncio>=3.4.3
|
19
|
+
Requires-Dist: nonebot-plugin-htmlrender>=0.3.0
|
20
|
+
Requires-Dist: nonebot-adapter-onebot>=2.4.4
|
21
|
+
Requires-Dist: nonebot-plugin-alconna>=0.50.0
|
25
22
|
Requires-Dist: aiohttp>=3.8.4
|
26
23
|
Requires-Dist: jinja2>=3.0.0
|
27
24
|
Requires-Dist: srctools>=2.3.9
|
28
25
|
Requires-Dist: bs4==0.0.1
|
29
26
|
Requires-Dist: httpx>=0.22.0
|
30
|
-
Requires-Dist: rcon==2.1.0
|
31
|
-
Requires-Dist: pillow<10.0.0
|
32
|
-
Requires-Dist: pyunpack>=0.3.0
|
33
|
-
Requires-Dist: ruamel.yaml==0.17.21
|
34
|
-
Requires-Dist: rarfile>=4.0
|
35
|
-
Requires-Dist: patool>=1.12
|
36
27
|
Requires-Dist: python-a2s>=1.3.0
|
37
|
-
Requires-Dist: amis-python>=1.0.6
|
38
|
-
Requires-Dist: pandas>=1.5.2
|
39
|
-
Requires-Dist: python-jose>=3.3.0
|
40
|
-
Requires-Dist: gitpython>=3.1.27
|
41
|
-
Requires-Dist: attrs>=23.1.0
|
42
28
|
Description-Content-Type: text/markdown
|
43
29
|
|
44
30
|
<!-- markdownlint-disable MD026 MD031 MD033 MD036 MD041 MD046 MD051 -->
|
@@ -50,7 +36,7 @@ Description-Content-Type: text/markdown
|
|
50
36
|
|
51
37
|
<div align="center">
|
52
38
|
|
53
|
-
# nonebot_plugin_l4d2_server 0.
|
39
|
+
# nonebot_plugin_l4d2_server 1.0.0a1
|
54
40
|
|
55
41
|
_✨Nonebot & Left 4 Dead 2 server操作✨_
|
56
42
|
<div align = "center">
|
@@ -74,37 +60,29 @@ _✨Nonebot & Left 4 Dead 2 server操作✨_
|
|
74
60
|
<img src="https://img.shields.io/pypi/dm/nonebot_plugin_l4d2_server" alt="pypi download">
|
75
61
|
</a>
|
76
62
|
<img src="https://img.shields.io/badge/python-3.9+-blue.svg" alt="python">
|
77
|
-
<img src="https://img.shields.io/badge/nonebot-2.0.0
|
63
|
+
<img src="https://img.shields.io/badge/nonebot-2.0.0+-red.svg" alt="NoneBot">
|
78
64
|
|
79
65
|
</div>
|
80
66
|
|
81
|
-
##
|
67
|
+
## 顶置公告(如果以前用0.x.x版本暂时别更新)
|
82
68
|
|
83
|
-
-
|
69
|
+
- **版本** 1.x.x进行了破坏式更新,目前处于测试阶段,使用旧插件的不要更新
|
84
70
|
|
85
|
-
|
71
|
+
## 更改部分
|
86
72
|
|
87
|
-
-
|
88
|
-
|
89
|
-
-
|
73
|
+
- 取消了网页控制台(没有卵用)
|
74
|
+
- 取消了自动重启(与其他插件功能重复)
|
75
|
+
- 取消了git拉取更新(nb规范用pypi)
|
76
|
+
- 增加pil和浏览器渲染做选择(可以选择pil以节省性能性能)
|
77
|
+
- 删除无用部分(依赖太多难以维护)
|
90
78
|
|
91
79
|
## 安装
|
92
80
|
|
93
81
|
以下提到的方法 任选**其一** 即可
|
94
82
|
|
95
|
-
<details open>
|
96
|
-
<summary>[个人推荐] 使用 nb-cli 安装</summary>
|
97
|
-
在 nonebot2 项目插件文件夹中,输入以下指令克隆项目,并安装相关依赖(如果有虚拟环境,pip安装依赖需要进虚拟环境再安装,或者参考下方包管理器安装方法)
|
98
|
-
|
99
|
-
```bash
|
100
|
-
https://github.com/Agnes4m/nonebot_plugin_l4d2_server
|
101
|
-
pip install --no-install nonebot_plugin_l4d2_server
|
102
|
-
```
|
103
|
-
|
104
|
-
</details>
|
105
83
|
|
106
84
|
<details open>
|
107
|
-
<summary>[
|
85
|
+
<summary>[推荐] 使用 nb-cli 安装</summary>
|
108
86
|
在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装
|
109
87
|
|
110
88
|
```bash
|
@@ -153,24 +131,35 @@ conda install nonebot-plugin-l4d2-server
|
|
153
131
|
|
154
132
|
## 主要功能
|
155
133
|
|
156
|
-
-
|
157
|
-
- 批量查询指定ip服务器状态和玩家
|
158
|
-
-
|
159
|
-
- web控制台
|
160
|
-
- [求生电信服anne](https://github.com/fantasylidong/CompetitiveWithAnne)[查询~](https://sb.trygek.com/l4d_stats/ranking/index.php)
|
134
|
+
- [ ] 求生服务器-本地多路径操作(传地图等)
|
135
|
+
- [ ] 批量查询指定ip服务器状态和玩家
|
136
|
+
- [ ] [求生电信服anne](https://github.com/fantasylidong/CompetitiveWithAnne)[查询~](https://sb.trygek.com/l4d_stats/ranking/index.php)
|
161
137
|
|
162
138
|
## [数据结构](./docs/standand.md)
|
163
139
|
|
164
|
-
##
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
140
|
+
## env设置
|
141
|
+
|
142
|
+
"""bash
|
143
|
+
l4_anne: bool = False
|
144
|
+
"""是否启用anne电信服相关功能"""
|
145
|
+
l4_enable: bool = True
|
146
|
+
"""是否全局启用求生功能"""
|
147
|
+
l4_image: bool = False
|
148
|
+
"""是否启用图片"""
|
149
|
+
l4_connect: bool = True
|
150
|
+
"""是否在查服命令后加入connect ip"""
|
151
|
+
l4_path: str = "data/L4D2"
|
152
|
+
"""插件数据路径"""
|
153
|
+
l4_players: int = 4
|
154
|
+
"""查询总图的时候展示的用户数量"""
|
155
|
+
l4_style: str = "default"
|
156
|
+
"""图片风格,可选包括以下,默认简洁
|
157
|
+
- 暗风格
|
158
|
+
- 孤独摇滚
|
159
|
+
- 电玩像素
|
160
|
+
- 缤纷彩虹
|
161
|
+
- 求生之路
|
162
|
+
"""
|
174
163
|
|
175
164
|
## 其他
|
176
165
|
|
@@ -183,18 +172,12 @@ conda install nonebot-plugin-l4d2-server
|
|
183
172
|
## 🌐 感谢
|
184
173
|
|
185
174
|
- [nonebot2](https://github.com/nonebot/nonebot2)- 聊天机器人的基础框架
|
186
|
-
- [
|
187
|
-
-
|
188
|
-
-
|
189
|
-
|
190
|
-
- [群聊学习](https://github.com/CMHopeSunshine/nonebot-plugin-learning-chat)- web控制台参考
|
191
|
-
- [日向麻麻](https://github.com/Special-Week)- 配置优化参考
|
192
|
-
- [gsuid](https://github.com/KimigaiiWuyi/GenshinUID)- readme和wiki的格式参考,以及3.1版本的更新和重启
|
193
|
-
- 公益服刷服器 - 虽然不知道哪里来的,不过已经添加ip了
|
175
|
+
- [饼干](https://github.com/lgc2333) - 指导nonebot2框架的函数使用
|
176
|
+
- [wuyi](https://github.com/KimigaiiWuyi/) - 指导pil作图
|
177
|
+
- 水果 - html图片优化
|
178
|
+
|
194
179
|
- 感谢以下服主大力支持
|
195
|
-
- Michaela's | 机器人功能测试反馈
|
180
|
+
- Michaela's | 机器人功能测试反馈
|
196
181
|
- 东 | 提供docker部署方法等建议 | [电信服anne游戏群](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=6i7r5aJ7Jyg0ejby4rt9GWmFRF53nV1K&authKey=ekMsWepBZPL26%2BfJAG%2F95JD0fhvH39%2BIGVyKOvNlXVDbpIclJlly4kXqukL7JhWR&noverify=0&group_code=883237206)
|
197
|
-
- 呆呆 | 提供三方地图的详细数据 | [呆呆组游戏群](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=M5Ei0tYBgi3nwkh-8jfvo3gN5BMhPQGr&authKey=tb2Qa7ykUf5RAe3TBvOIA%2FWdlHAx6tqYXhyV95WqbZXoUx7lU2MRbod7nubiFw16&noverify=0&group_code=592944622)
|
198
|
-
- 柠檬茶 | win端部署测试 | [竹服⭐纯净服游戏群](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=G8AkutNEmN9niNCjNJV8YE-vLv4h_EBz&authKey=wG%2BI6Cks4%2FcRGYYLjRNK0Kg4rMUy3BB7H9SKGjU465ktqKcb%2F6m7WxrSTJiX5bvk&noverify=0&group_code=283150432)
|
199
182
|
- 迷茫 | 催命更新byd
|
200
183
|
- ArcPav | 积极反馈bug,提供改进思路
|
@@ -0,0 +1,144 @@
|
|
1
|
+
nonebot_plugin_l4d2_server-1.0.0a1.dist-info/METADATA,sha256=xIY2oPpfBfe7iBzRj6auNuh6qbNpyOggidK--oHu3fM,6373
|
2
|
+
nonebot_plugin_l4d2_server-1.0.0a1.dist-info/WHEEL,sha256=rSwsxJWe3vzyR5HCwjWXQruDgschpei4h_giTm0dJVE,90
|
3
|
+
nonebot_plugin_l4d2_server-1.0.0a1.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
4
|
+
nonebot_plugin_l4d2_server/__init__.py,sha256=eACLn9Fzz1k4IzfVfpl-WkPOwhzH5aYIp_cueoVzIHI,1599
|
5
|
+
nonebot_plugin_l4d2_server/__main__.py,sha256=bosiqFI2peWnw5mDZuN_KWBvKMkdwJh1G4pWc9hUdWA,2752
|
6
|
+
nonebot_plugin_l4d2_server/config.py,sha256=6GkphHYRfr0JbtcbZv2USaNzWLUHlwz7iRrajPbM4gQ,808
|
7
|
+
nonebot_plugin_l4d2_server/data/L4D2/image/head/head.png,sha256=9Vq73u2WnIcmO-5B5az1eGRkYnrUBRRUI5j0GmPvfV8,159682
|
8
|
+
nonebot_plugin_l4d2_server/data/L4D2/image/header/logo.png,sha256=kD9gXvAdTP7N6p9t-fNWuj_g8bOezwLaqR7sjWom-HQ,632955
|
9
|
+
nonebot_plugin_l4d2_server/data/L4D2/image/header/player1.jpg,sha256=-0C0KVi1knq9mjczkCJ75SxARZdHCUITmCy2H2CnQEc,406679
|
10
|
+
nonebot_plugin_l4d2_server/data/L4D2/image/template/anne.html,sha256=ofZoPzzC4QJfmn-ZmvQb1bK6JQnWtSvkfgoogy03dJs,1651
|
11
|
+
nonebot_plugin_l4d2_server/data/L4D2/image/template/back.png,sha256=ob9OrEJTL_TDg6nu_RMpLhYGl4y49MQ9YMrRfvbcd7Q,244322
|
12
|
+
nonebot_plugin_l4d2_server/data/L4D2/image/template/fingerprint.svg,sha256=qtbdXb-5o62YQU2-LR4S9b7-ddKC1UOpJG4w8xDrytw,2135
|
13
|
+
nonebot_plugin_l4d2_server/data/L4D2/image/template/group_ip.html,sha256=9av4NUDA7INCuC7uGaGqXBV1PQkaxZJg13C-PkTJAVA,7173
|
14
|
+
nonebot_plugin_l4d2_server/data/L4D2/image/template/help.html,sha256=3YUEO6tZNiVG73KIRjAEcvcP3L9WxaY2UTYFw2_vkuQ,5796
|
15
|
+
nonebot_plugin_l4d2_server/data/L4D2/image/template/help_dack.html,sha256=9T2-TRhJhUN0fyjdJXYWJ3YWs3XyhdZzOTh1uNfFnio,5826
|
16
|
+
nonebot_plugin_l4d2_server/data/L4D2/image/template/ip.html,sha256=6i_JyCDGfLxTeLO_PC1EiRwiaJiI5MCkkTpNQXErQNM,1560
|
17
|
+
nonebot_plugin_l4d2_server/data/L4D2/image/template/l.svg,sha256=I9iOeq-XqnWDECC7GqApV6Of3Tm26xmmYdchvXw2tAE,5506
|
18
|
+
nonebot_plugin_l4d2_server/data/L4D2/image/template/m.svg,sha256=rnZwx2X1dXPiKFQvccBZqspDZzLUin5ylesv-rRy1lo,2408
|
19
|
+
nonebot_plugin_l4d2_server/data/L4D2/image/template/vue.css,sha256=2sGjCFrR-3tFMB_x7l4K6k40tZ5JVzhWqD759cagYBA,7874
|
20
|
+
nonebot_plugin_l4d2_server/data/L4D2/image/template/w.svg,sha256=Rvem0xacHSByxPz2ihLkgbJLtXqEKllzzJRz-Q5wN5Q,486
|
21
|
+
nonebot_plugin_l4d2_server/data/font/loli.ttf,sha256=Yrh-RPoCrn1-NG94DR0x20ASXYUt8g3Ep6BCt3CdOFk,11125812
|
22
|
+
nonebot_plugin_l4d2_server/data/icon/介绍.png,sha256=5j7LNu7l_KS_WxvKSo_x-YgloqZnVydnBXb6sNO00Pk,2638
|
23
|
+
nonebot_plugin_l4d2_server/data/icon/任务.png,sha256=5Q34N9p2ForXlOkyCmxLvrXISaK7QJmiUadDpM83_CY,2617
|
24
|
+
nonebot_plugin_l4d2_server/data/icon/信息.png,sha256=Gm3XJCv114rAs7zdGm6MzHHYO2ogNKZfTZnvBCQGfCY,2963
|
25
|
+
nonebot_plugin_l4d2_server/data/icon/公告.png,sha256=aQk6Zlcvs8HL0yoI6qeTE1yWFM3DRligf-9GTYRsw-o,2562
|
26
|
+
nonebot_plugin_l4d2_server/data/icon/刀剑.png,sha256=Jnuclo1sx1UAs_zNZZtvXXkz1Wd6dThOhjkmm-Z2D9A,2840
|
27
|
+
nonebot_plugin_l4d2_server/data/icon/切换.png,sha256=zmADCczjcCCcA7VFOlPp-HegQ2phOSZL5tr9g_GhEmM,2754
|
28
|
+
nonebot_plugin_l4d2_server/data/icon/删除.png,sha256=A5m77Qrk4evAsXeRYp-npSuOqepTXbU7nBHQtBFigQE,2606
|
29
|
+
nonebot_plugin_l4d2_server/data/icon/刷新.png,sha256=BXFYUtQuaPIvzfDqMzJJ29VYNB81aH-HwvPjLft2fJM,2739
|
30
|
+
nonebot_plugin_l4d2_server/data/icon/卡组.png,sha256=tHl81n_86_6sGjWDhh6kcPFL5sOdfPg7TdjVwOf9gdg,3326
|
31
|
+
nonebot_plugin_l4d2_server/data/icon/哪里.png,sha256=UXE7r8GNljGgDbBmSHvStnDqkCxf72vLtzuHt8BDrYI,2760
|
32
|
+
nonebot_plugin_l4d2_server/data/icon/地图.png,sha256=5M-uHWd8saN_8QRiT7lK25tjzEwu_SC_QgLowNHjaWE,2760
|
33
|
+
nonebot_plugin_l4d2_server/data/icon/导入.png,sha256=Er021cuaL8Zl8Tcw0F7QNRVHTAQ-koc1Hc06TGPGlB8,2425
|
34
|
+
nonebot_plugin_l4d2_server/data/icon/导出.png,sha256=Ue_GeuiGSNeWi4Eetok_1980s0TDRFLoeZDbRZmywLk,2508
|
35
|
+
nonebot_plugin_l4d2_server/data/icon/影.png,sha256=mbY6CJgRYRmFzl3hWCb2KeX6wlEzi-d6wF75uc_650I,2485
|
36
|
+
nonebot_plugin_l4d2_server/data/icon/拼图.png,sha256=c_ek2VUOy-aKdSiemZfIBH6_pbbzeW-6OT9z2utWI-M,2781
|
37
|
+
nonebot_plugin_l4d2_server/data/icon/探索.png,sha256=Mm36w6o9l9dEsdR-bxoeT_oyRnuhyJFLh62Q73acMjo,3252
|
38
|
+
nonebot_plugin_l4d2_server/data/icon/推送.png,sha256=6H3pBwuZthWpZ_SF6Mcsp8em0LtOUeGz1sk2Q4COqSA,2634
|
39
|
+
nonebot_plugin_l4d2_server/data/icon/收集.png,sha256=LDMHklcffzsxrWiLjPsvGMdCuSgyeANT3YQbKtWYttU,2984
|
40
|
+
nonebot_plugin_l4d2_server/data/icon/攻略.png,sha256=A8wC6kq0YCXDTAp1tq_FCM5oVAi08uZJnDelb1HjY7c,3186
|
41
|
+
nonebot_plugin_l4d2_server/data/icon/更新.png,sha256=KezIp_aAn056MJL1HsuXqJbU-cNByA5bTZNuEcUSiwI,2746
|
42
|
+
nonebot_plugin_l4d2_server/data/icon/材料.png,sha256=fPFy_i5IbZmLMsRQXPgQP50Dnubr_ktz6pri8S8ta4A,2813
|
43
|
+
nonebot_plugin_l4d2_server/data/icon/查询.png,sha256=4XelJ-TbYa9wQtjB9s3WKwXiuksp8Xd_LRx_ubrM5LM,2703
|
44
|
+
nonebot_plugin_l4d2_server/data/icon/校验.png,sha256=1XKKmolHHEsNj6pxL2RHRxtajzC2opgtnzcx2TU7VKg,2933
|
45
|
+
nonebot_plugin_l4d2_server/data/icon/每月.png,sha256=vzGyOyIyt6XLQQEFgO61klrmvbGGGty5F1ji9FVSY2k,2630
|
46
|
+
nonebot_plugin_l4d2_server/data/icon/深渊.png,sha256=pd_58A-k8_ooMe65Gugn_7dEGihHwYCIj600fV4R6DI,2868
|
47
|
+
nonebot_plugin_l4d2_server/data/icon/添加.png,sha256=VfeXvPafL8zPsXmjGZYUxD_LQr6OQmytJyniM-ai7Kk,2694
|
48
|
+
nonebot_plugin_l4d2_server/data/icon/清除.png,sha256=ZzfpFoSWGDUT7qyHGMCZbkSbepUsOPe3gHlGrDNuMTQ,2507
|
49
|
+
nonebot_plugin_l4d2_server/data/icon/状态.png,sha256=wNfg7Xw5obfqukRXZvh8CmPIgiys7uwInhAXuputZcE,2625
|
50
|
+
nonebot_plugin_l4d2_server/data/icon/签到.png,sha256=iG9zlJq0WBQ5E1H9HQtnpK7drsqoBeqQnLOrQ8ZeSdU,2635
|
51
|
+
nonebot_plugin_l4d2_server/data/icon/绑定.png,sha256=GxGaryOzow9Kwz865oaFIb82OFJ0dXSEFnZsmpecjKI,2701
|
52
|
+
nonebot_plugin_l4d2_server/data/icon/表.png,sha256=YjTSd7WBH-6f-xdY5XlLb5vwGNjiHWYstswLOqt40Mg,2401
|
53
|
+
nonebot_plugin_l4d2_server/data/icon/表情.png,sha256=cTdAe_hQr1CH0ML4xrFeL6VctEbnBRknI_DMskSAzWA,2728
|
54
|
+
nonebot_plugin_l4d2_server/data/icon/角色.png,sha256=7C4uRi-Q2Wr6V_MwrTk5ducIP4oXh47t8Yr_3x1z06o,2490
|
55
|
+
nonebot_plugin_l4d2_server/data/icon/记录.png,sha256=zEZVPjIbx2uJi20pBpVdCZYmZi4psphPIhddTIzfsVo,2292
|
56
|
+
nonebot_plugin_l4d2_server/data/icon/配置.png,sha256=hpWqaVwLnhwc7Px8ZTfUIPpA6bGznVYroL6Zv9yCipw,3049
|
57
|
+
nonebot_plugin_l4d2_server/data/icon/重启.png,sha256=1-rexJPwQxrAUwWIqD5ghoPUrzIqj71DC5Vm4EMm0U8,2854
|
58
|
+
nonebot_plugin_l4d2_server/data/img/l4d2.png,sha256=h3W0d4lDEHZ0ZULTA3g3IMtUsfmsAVzFId8wRmWm4SA,814
|
59
|
+
nonebot_plugin_l4d2_server/data/img/linux.png,sha256=cH6qL7RXi0Fm7bvck-5yZjoQfWPYsK9X4ViWg9DDsO4,6027
|
60
|
+
nonebot_plugin_l4d2_server/data/img/vac.png,sha256=k7JsSEeIZyK5Jj0beiNPWrDLi4ZwvQXMqsiJ97vClJY,4497
|
61
|
+
nonebot_plugin_l4d2_server/data/img/white.png,sha256=Y_cFR-EPNvQtJadPy9h5CXWi0ePiNsnSfSTnwtrOyuM,2675
|
62
|
+
nonebot_plugin_l4d2_server/l4_help/Help.json,sha256=pRWli-Wgl07YmUYqLon8So_Mpb7XX-NjZ4FRTnQqO5g,1522
|
63
|
+
nonebot_plugin_l4d2_server/l4_help/__init__.py,sha256=UGUrRjleSjXtIrG4HvbAULMxV04Hj5WchgGCW0sPxtU,1535
|
64
|
+
nonebot_plugin_l4d2_server/l4_help/draw.py,sha256=y6yDPUnoZFvwly8cf7g9HRpT1JXTxyA9DC1TuvUinTM,6448
|
65
|
+
nonebot_plugin_l4d2_server/l4_help/icon/介绍.png,sha256=kXI6IcFXP9C57qBduD5pC7LIGWELPFYkLFywgZqhSb4,2640
|
66
|
+
nonebot_plugin_l4d2_server/l4_help/icon/任务.png,sha256=3V6NimQ8P6fBA0uMBdW4RarxYW5g6mG93B4UBB55uCI,2617
|
67
|
+
nonebot_plugin_l4d2_server/l4_help/icon/信息.png,sha256=CB2Dllb-6ht4xj5ErNdgVfIMi3g82XLQ_F_MTJ08R70,2963
|
68
|
+
nonebot_plugin_l4d2_server/l4_help/icon/公告.png,sha256=bNIUvn5v4CzUVKeL_udpK6ALkPA5ZVGylOxieGR8E3w,2561
|
69
|
+
nonebot_plugin_l4d2_server/l4_help/icon/刀剑.png,sha256=j4Td0pWf1yKs7E4SXAe_1rMll6tp9M9RtKMAY1AsVxI,2839
|
70
|
+
nonebot_plugin_l4d2_server/l4_help/icon/切换.png,sha256=WX9xfZjHi7EjsVHwhUfZLPcH-BWNEqNJ-7IKwXddfB4,2754
|
71
|
+
nonebot_plugin_l4d2_server/l4_help/icon/删除.png,sha256=Mbt3DThZZn9W3qB6AoS3sX9DbzVYhgT-2J0lY3pvy30,2607
|
72
|
+
nonebot_plugin_l4d2_server/l4_help/icon/刷新.png,sha256=B97dNIGyvyipWYt05sMTlBWOcKlqp7vViUeZWZQKx4o,2739
|
73
|
+
nonebot_plugin_l4d2_server/l4_help/icon/卡组.png,sha256=uTBt1Kvg5r7amKhLMdf-zZOH4PT7Re8kb2BHypm_2Qk,3326
|
74
|
+
nonebot_plugin_l4d2_server/l4_help/icon/哪里.png,sha256=Nsq9LQ7cYhVFO5pnEdpjRet3wvw2apYU_N9Tu6PNLjY,2759
|
75
|
+
nonebot_plugin_l4d2_server/l4_help/icon/地图.png,sha256=tSBCQvQBArjQzeGX9aD6hAIhysJNoSq7C9PAgfnY2x4,2758
|
76
|
+
nonebot_plugin_l4d2_server/l4_help/icon/导入.png,sha256=BKt7UxJEXw0xE4HQUgOZwT-ySizTs7froyaJWanwaUk,2427
|
77
|
+
nonebot_plugin_l4d2_server/l4_help/icon/导出.png,sha256=Ubhws1EPqNDl7FoZjT_sEoqAJEyvgiT9_2XJerX3X6Q,2508
|
78
|
+
nonebot_plugin_l4d2_server/l4_help/icon/影.png,sha256=XovEr4hp1EXuiukf3jc3IFMZch-4VE7BZfqN2yuETBg,2485
|
79
|
+
nonebot_plugin_l4d2_server/l4_help/icon/拼图.png,sha256=KGkkLHhTQ4NyP38qsXs3k6rod9pEge0qHcjfR7joYBg,2781
|
80
|
+
nonebot_plugin_l4d2_server/l4_help/icon/探索.png,sha256=yk2xF5J5bR2-zZN-VsVQsNW1D1fdB_0smK4uVpbrk_8,3252
|
81
|
+
nonebot_plugin_l4d2_server/l4_help/icon/推送.png,sha256=iznIhDpg2CrgMvH4tGYMocS98ISUwZWEUk5oZ4v75jM,2633
|
82
|
+
nonebot_plugin_l4d2_server/l4_help/icon/收集.png,sha256=-r19Dy2yKrrwJuCAEJoaKt7YYDok6HN3RPCOn9H-eYw,2983
|
83
|
+
nonebot_plugin_l4d2_server/l4_help/icon/攻略.png,sha256=OOGJ25IMNgJxm3zXctzdpBEfh4K388amLeFS2UL-YBA,3183
|
84
|
+
nonebot_plugin_l4d2_server/l4_help/icon/更新.png,sha256=wtClahgj88KtvhW2AkbiWympwfp6lCYYPFCR4NoukCY,2747
|
85
|
+
nonebot_plugin_l4d2_server/l4_help/icon/材料.png,sha256=LQekJRbcqUIiwj2sW1AhYvPh10WZhkKfjM1dHfia9P4,2812
|
86
|
+
nonebot_plugin_l4d2_server/l4_help/icon/查询.png,sha256=7X82UQTTxlslDmQeyJvOLOQsiHo1rQi-wzLrUbDJwnQ,2703
|
87
|
+
nonebot_plugin_l4d2_server/l4_help/icon/校验.png,sha256=GKkaAK5CQaTUQDIVadxkjx0Js_oPRCPLoQaqmXN5UDg,2933
|
88
|
+
nonebot_plugin_l4d2_server/l4_help/icon/每月.png,sha256=-rBLNAQvHP43dYdNMfGEJj-JFnUbX9vTPsQpmuaKyMI,2632
|
89
|
+
nonebot_plugin_l4d2_server/l4_help/icon/深渊.png,sha256=m98mJNCm1NdYiqcIqGqWCWw3dVHV6sp4HmxjtqE9_cs,2868
|
90
|
+
nonebot_plugin_l4d2_server/l4_help/icon/添加.png,sha256=9d2tsIMuzyKx4XoHp1Relj49gJCENMV5Xw6W0xP7RAI,2694
|
91
|
+
nonebot_plugin_l4d2_server/l4_help/icon/清除.png,sha256=9WZL0EBO90_rAiHsBzzJevpi_mVPpZEayE_gmXv7PM4,2507
|
92
|
+
nonebot_plugin_l4d2_server/l4_help/icon/状态.png,sha256=vOmLhCbSwCcV4Aucc1Mhuh2NaofNP80T6onCXFwuL5c,2624
|
93
|
+
nonebot_plugin_l4d2_server/l4_help/icon/签到.png,sha256=tSjuY2hP4l7BgpI0snrKl5hu0w1gJQTgcZKrBEydtUQ,2635
|
94
|
+
nonebot_plugin_l4d2_server/l4_help/icon/绑定.png,sha256=gYJND7ikGBgyciDhkszOKREA9FOqKlFdKylAI875giw,2699
|
95
|
+
nonebot_plugin_l4d2_server/l4_help/icon/表.png,sha256=S6QdUU7DC5tcMpNfsqhY7uEI8ka4Ml58KlF2pLjPvwI,2400
|
96
|
+
nonebot_plugin_l4d2_server/l4_help/icon/表情.png,sha256=N59vzxhntcITAOxWnLnZVJHiaPlPyfcWEjQS84O3_Sw,2728
|
97
|
+
nonebot_plugin_l4d2_server/l4_help/icon/角色.png,sha256=QD1Gx6PtdkPs0tQZTP1KO35LQJ0xd8Nzg0fc263BaZw,2491
|
98
|
+
nonebot_plugin_l4d2_server/l4_help/icon/记录.png,sha256=INkAb49mq-AqbaWxln_HBqYraRtvnK6iWUB6YSvx9Jo,2292
|
99
|
+
nonebot_plugin_l4d2_server/l4_help/icon/配置.png,sha256=nqGs6Pmifwb1gC9SXKnAeDUx3WPyHs0LxyJru9raXcU,3049
|
100
|
+
nonebot_plugin_l4d2_server/l4_help/icon/重启.png,sha256=3LvaUGE8YxpGh8Gw1uJxjo6N7eRHVb2rafG0jGkNgW4,2854
|
101
|
+
nonebot_plugin_l4d2_server/l4_help/texture2d/badge.png,sha256=UBbiUMJXpIEuD_UK1rABIXNYccaOi9JuZ5x3npdRLgM,7020
|
102
|
+
nonebot_plugin_l4d2_server/l4_help/texture2d/banner.png,sha256=UZxYRDRa4NloJDw0V_Om6_ssA--GYPswxvlCiOJNm8U,31164
|
103
|
+
nonebot_plugin_l4d2_server/l4_help/texture2d/bg.jpg,sha256=pr1eqsJjn5aB7MHZ3BIPb2zHXGajHN5xJS0M4hYMTvw,117356
|
104
|
+
nonebot_plugin_l4d2_server/l4_help/texture2d/button.png,sha256=JVEKinYjylKuFjjvtVU85JXZEnPy8xLy52XJfwb2GN4,11545
|
105
|
+
nonebot_plugin_l4d2_server/l4_help/texture2d/icon.png,sha256=s8Wgl9juiTQ9mjrB5szDlDPnDqL3MgsZWHHFQ9m8kDw,633494
|
106
|
+
nonebot_plugin_l4d2_server/l4_image/__init__.py,sha256=-mCRjC5XSJmdFwIVUAzccIpX9lNDrQ1rF37vytxYuQk,412
|
107
|
+
nonebot_plugin_l4d2_server/l4_image/convert.py,sha256=EyczOytb9k1EoPbZjBTSaUieLxqbXc4NRgpin1Sokso,3863
|
108
|
+
nonebot_plugin_l4d2_server/l4_image/download.py,sha256=65j_D-8X4M-rh16h5lN9I2m7zLnXcvJT3iXIVtk8MoY,3086
|
109
|
+
nonebot_plugin_l4d2_server/l4_image/html_img.py,sha256=sq80WRpaxPwh5a3FDRSquS9A1ljrr4JIjPmhSpHVZhw,4712
|
110
|
+
nonebot_plugin_l4d2_server/l4_image/image_tools.py,sha256=2kpnXlqFhX5jKADfcGWZ3mm3U8be8iDbA8b8hogMd9w,14478
|
111
|
+
nonebot_plugin_l4d2_server/l4_image/img/anne/anne.html,sha256=8JOUXoWdulhoP2Axy_omuSDafbduKDZ9Y8Rz2VZWTso,1590
|
112
|
+
nonebot_plugin_l4d2_server/l4_image/img/anne/back.png,sha256=vMUtqF1tr4nSY5HL39nn5f0z4HAeUkv_RVSDocHrPOA,244322
|
113
|
+
nonebot_plugin_l4d2_server/l4_image/img/anne/group_ip.html,sha256=0RCWB0q8Wx0NcKdVmGeVr2odaNzODNVCJK0jiQ826U8,7222
|
114
|
+
nonebot_plugin_l4d2_server/l4_image/img/anne/ip.html,sha256=hvKDc7ASbuaGxtx5Doavg5qa82K1vGq4bSapjrwrTy8,1611
|
115
|
+
nonebot_plugin_l4d2_server/l4_image/img/head/head.png,sha256=BWmp8_7-0beJNLrGgMP-apztpEVoQIZXoJdq5FQK_yw,159143
|
116
|
+
nonebot_plugin_l4d2_server/l4_image/img/header/logo.png,sha256=OEXeWUPeQRX_xs10dXbxdiIGfRzmq4yi8gN9TxG93Bs,632416
|
117
|
+
nonebot_plugin_l4d2_server/l4_image/img/header/player1.jpg,sha256=6rBnYb8CJw3x5bNi0gblZYll17s5pe8V3ItIqDyg26I,406140
|
118
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/Bocchi_The_Rock.html,sha256=dCjhVAtayFwwA5e7XdX1ssBm2sPMIuV3KAddi1ko3G0,18924
|
119
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/Bocchi_The_Rock.png,sha256=k4X_RLEdPccM9pZBWbQJnVI5TWTUDKJsHzRn96avd3A,392525
|
120
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/HYPixel11pxU-2.ttf,sha256=RGJai1Y8AP8toBwIqq2EZyaBmRbRYPUpNu7f2ZWeDuk,2446828
|
121
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/Pixel.html,sha256=57No2v1fghJ6Jkrh2oRQfVvapQ3yUP8_SfnREbsiBkU,19786
|
122
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/Pixel.png,sha256=Rwh701eRD6aNbOnAFOj3dyPQgwohs7e7X8KdzRFyNVY,310313
|
123
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/Rainbow.html,sha256=QkiQneLIUFVs_GzuiI_K9_KMGW9seNTYMmqZQrzP4w4,10050
|
124
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/Rainbow.png,sha256=IXiRvU-H0stVXki2K-Iv7Oz7Aeh2-Z3yuvzc-78AOQk,59872
|
125
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/Tutumianhuatang-Bold-2.ttf,sha256=rX7HSHSCpQ4mJYsGghvm3btXLabxcCEbLF52wKNDNAE,3090420
|
126
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/bilibili.svg,sha256=v3u6R-HLoTHVI1qPCNopPWd_WYZ9L2YSqvvB-L6RZY8,1336
|
127
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/fingerprint.svg,sha256=qtbdXb-5o62YQU2-LR4S9b7-ddKC1UOpJG4w8xDrytw,2135
|
128
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/github.svg,sha256=Ev2CdWEyL4G-_bhZJ9vBZr5MEWjcgSR819mracoXjqc,1175
|
129
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/l.svg,sha256=YbahWPd7uau6edcATiWrA8apYyrlKeTejuvRHwXkmLI,5484
|
130
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/m.svg,sha256=JKosfpA8Jncw018dWHVzVR8orC48u3mMdzQovWAa91s,2428
|
131
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/normal.html,sha256=p8RtKyo_nlKxuY_XxrCsNNBe5Pl8PInL8CXvOlXiH6I,16670
|
132
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/vue.css,sha256=2sGjCFrR-3tFMB_x7l4K6k40tZ5JVzhWqD759cagYBA,7874
|
133
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/w.svg,sha256=LnctC2mVwjdhRMiS9ffrjUX-9KGwqb6OMmpJXvVXl70,486
|
134
|
+
nonebot_plugin_l4d2_server/l4_image/img/template/微软雅黑.ttf,sha256=FUetpPih2PEvFU0iEAm5DpOJ6nfzkRyPq2SU5TPPDvI,21767952
|
135
|
+
nonebot_plugin_l4d2_server/l4_image/model.py,sha256=FGsCvf_BKbRNJUVy6I5BKnArMY-3JEIdqeX2gs93E5o,231
|
136
|
+
nonebot_plugin_l4d2_server/l4_image/vtfs.py,sha256=PS9mTCDvl5gXjXHgRTMh6U9zjTO1kQS8gIb3qb0IZDU,1457
|
137
|
+
nonebot_plugin_l4d2_server/l4_request/__init__.py,sha256=kbYge9jGVfliMBXKIsBwD4qEGk3nY63qlabrsEzKAgo,2876
|
138
|
+
nonebot_plugin_l4d2_server/l4_request/draw_msg.py,sha256=NoznyFT-bK90gEB1Y5SttDHtpS-BcvGpW2U8G0RJJUw,2804
|
139
|
+
nonebot_plugin_l4d2_server/utils/api/api.py,sha256=iO2jF-CmCGacEKKGkPk_xP1pW2zz6w_l-GgXBsCvdWg,179
|
140
|
+
nonebot_plugin_l4d2_server/utils/api/models.py,sha256=Cnw6pcq_3I1EOyAemAHTC5e0CmuM-nHYgLPtHeMIYYk,453
|
141
|
+
nonebot_plugin_l4d2_server/utils/api/request.py,sha256=2WFc4KUf-MaMF6BmiFPD9ziInnt9MxkLfqyFaGmeCxI,3599
|
142
|
+
nonebot_plugin_l4d2_server/utils/database/models.py,sha256=puhJaJNhU7kiZSSIS00rkaM8kQTZN9L3RiZFKxJrhMM,690
|
143
|
+
nonebot_plugin_l4d2_server/utils/utils.py,sha256=JOMDMxwxhJ2bYErgPP8_FbwFlwOO5GRIWWCF7As86ps,5610
|
144
|
+
nonebot_plugin_l4d2_server-1.0.0a1.dist-info/RECORD,,
|