nonebot-plugin-l4d2-server 0.5.1__py3-none-any.whl → 0.5.2__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.
- LICENSE +674 -674
- README.md +364 -359
- nonebot_plugin_l4d2_server/__init__.py +1 -1
- nonebot_plugin_l4d2_server/chrome.py +44 -44
- nonebot_plugin_l4d2_server/command.py +232 -232
- nonebot_plugin_l4d2_server/config.py +210 -210
- nonebot_plugin_l4d2_server/data/L4D2/image/template/anne.html +60 -60
- nonebot_plugin_l4d2_server/data/L4D2/image/template/fingerprint.svg +15 -15
- nonebot_plugin_l4d2_server/data/L4D2/image/template/help.html +233 -233
- nonebot_plugin_l4d2_server/data/L4D2/image/template/help_dack.html +231 -231
- nonebot_plugin_l4d2_server/data/L4D2/image/template/ip.html +48 -48
- nonebot_plugin_l4d2_server/data/L4D2/image/template/l.svg +9 -9
- nonebot_plugin_l4d2_server/l4d2_anne/__init__.py +251 -251
- nonebot_plugin_l4d2_server/l4d2_anne/analysis.py +51 -51
- nonebot_plugin_l4d2_server/l4d2_anne/anne_telecom.py +75 -75
- nonebot_plugin_l4d2_server/l4d2_anne/server.py +65 -65
- nonebot_plugin_l4d2_server/l4d2_anne/startand.py +17 -17
- nonebot_plugin_l4d2_server/l4d2_data/__init__.py +91 -91
- nonebot_plugin_l4d2_server/l4d2_data/config.py +17 -17
- nonebot_plugin_l4d2_server/l4d2_data/players.py +87 -87
- nonebot_plugin_l4d2_server/l4d2_data/serverip.py +32 -32
- nonebot_plugin_l4d2_server/l4d2_file/__init__.py +122 -122
- nonebot_plugin_l4d2_server/l4d2_file/ayromote.py +56 -56
- nonebot_plugin_l4d2_server/l4d2_file/remote.py +63 -63
- nonebot_plugin_l4d2_server/l4d2_image/__init__.py +103 -103
- nonebot_plugin_l4d2_server/l4d2_image/download.py +101 -101
- nonebot_plugin_l4d2_server/l4d2_image/htmlimg.py +32 -32
- nonebot_plugin_l4d2_server/l4d2_image/send_image_tool.py +32 -32
- nonebot_plugin_l4d2_server/l4d2_image/steam.py +83 -83
- nonebot_plugin_l4d2_server/l4d2_image/vtfs.py +40 -40
- nonebot_plugin_l4d2_server/l4d2_queries/__init__.py +114 -114
- nonebot_plugin_l4d2_server/l4d2_queries/api.py +43 -43
- nonebot_plugin_l4d2_server/l4d2_queries/ohter.py +35 -35
- nonebot_plugin_l4d2_server/l4d2_queries/qqgroup.py +288 -288
- nonebot_plugin_l4d2_server/l4d2_server/__init__.py +61 -61
- nonebot_plugin_l4d2_server/l4d2_server/rcon.py +28 -28
- nonebot_plugin_l4d2_server/l4d2_server/workshop.py +50 -50
- nonebot_plugin_l4d2_server/l4d2_web/web.py +234 -252
- nonebot_plugin_l4d2_server/l4d2_web/webUI.py +241 -245
- nonebot_plugin_l4d2_server/message.py +58 -58
- nonebot_plugin_l4d2_server/seach.py +33 -33
- nonebot_plugin_l4d2_server/txt_to_img.py +64 -64
- nonebot_plugin_l4d2_server/utils.py +272 -272
- {nonebot_plugin_l4d2_server-0.5.1.dist-info → nonebot_plugin_l4d2_server-0.5.2.dist-info}/LICENSE +674 -674
- {nonebot_plugin_l4d2_server-0.5.1.dist-info → nonebot_plugin_l4d2_server-0.5.2.dist-info}/METADATA +6 -1
- nonebot_plugin_l4d2_server-0.5.2.dist-info/RECORD +54 -0
- {nonebot_plugin_l4d2_server-0.5.1.dist-info → nonebot_plugin_l4d2_server-0.5.2.dist-info}/WHEEL +1 -1
- nonebot_plugin_l4d2_server-0.5.1.dist-info/RECORD +0 -54
@@ -1,211 +1,211 @@
|
|
1
|
-
from pathlib import Path
|
2
|
-
from typing import List,Dict,Union
|
3
|
-
import ast
|
4
|
-
import platform
|
5
|
-
import os
|
6
|
-
from ruamel import yaml
|
7
|
-
from pydantic import Extra,BaseModel,Field
|
8
|
-
try:
|
9
|
-
import ujson as json
|
10
|
-
except:
|
11
|
-
import json
|
12
|
-
|
13
|
-
from nonebot.permission import SUPERUSER
|
14
|
-
from nonebot import get_driver
|
15
|
-
from nonebot.log import logger
|
16
|
-
from nonebot.adapters.onebot.v11.permission import (
|
17
|
-
GROUP_ADMIN,
|
18
|
-
GROUP_OWNER,
|
19
|
-
PRIVATE_FRIEND,
|
20
|
-
)
|
21
|
-
|
22
|
-
from .l4d2_queries.ohter import ALL_HOST
|
23
|
-
from .l4d2_queries.api import seach_map,map_dict_to_str
|
24
|
-
file_format = (".vpk",".zip",".7z",'rar')
|
25
|
-
# 权限
|
26
|
-
|
27
|
-
driver = get_driver()
|
28
|
-
COMMAND_START = list[driver.config.command_start]
|
29
|
-
try:
|
30
|
-
NICKNAME: str = list(driver.config.nickname)[0]
|
31
|
-
except Exception:
|
32
|
-
NICKNAME = 'bot'
|
33
|
-
CHECK_FILE:int = 0
|
34
|
-
|
35
|
-
|
36
|
-
reMaster = SUPERUSER | GROUP_OWNER
|
37
|
-
Master = SUPERUSER | GROUP_ADMIN | GROUP_OWNER
|
38
|
-
ADMINISTRATOR = SUPERUSER | GROUP_ADMIN | GROUP_OWNER | PRIVATE_FRIEND
|
39
|
-
# file 填写求生服务器所在路径
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
CONFIG_PATH = Path() / 'data' / 'L4D2' / 'l4d2.yml'
|
45
|
-
CONFIG_PATH.parent.mkdir(parents=True, exist_ok=True)
|
46
|
-
|
47
|
-
class L4d2GroupConfig(BaseModel):
|
48
|
-
enable: bool = Field(True, alias='是否启用求生功能')
|
49
|
-
map_master: List[str] = Field([], alias='分群地图管理员')
|
50
|
-
|
51
|
-
def update(self, **kwargs):
|
52
|
-
for key, value in kwargs.items():
|
53
|
-
if key in self.__fields__:
|
54
|
-
self.__setattr__(key, value)
|
55
|
-
|
56
|
-
class L4d2Config(BaseModel):
|
57
|
-
total_enable: bool = Field(True, alias='是否全局启用求生功能')
|
58
|
-
map_path: List[str] = Field([], alias='求生地图路径')
|
59
|
-
web_username: str = Field('l4d2', alias='后台管理用户名')
|
60
|
-
web_password: str = Field('admin', alias='后台管理密码')
|
61
|
-
l4_style: str = Field("standard", alias='图片风格')
|
62
|
-
# l4_file: List[str] = Field( ["/home/ubuntu/l4d2/coop"], alias='本地求生服务器地址')
|
63
|
-
# l4_host: List[str] = Field(['127.0.0.1'], alias='求生服务器地址')
|
64
|
-
# l4_port: List[str] = Field(['20715'], alias='求生服务器端口')
|
65
|
-
# l4_rcon: List[str] = Field(['114514'], alias='求生服务器rcon密码')
|
66
|
-
|
67
|
-
l4_ipall: List[Dict[str,Union[str,int,bool]]] = Field(
|
68
|
-
[{
|
69
|
-
'id_rank':'1',
|
70
|
-
'place': False,
|
71
|
-
'location':'C:\\l4d2',
|
72
|
-
'host':'127.0.0.1',
|
73
|
-
'port':'20715',
|
74
|
-
'rcon':'114514',
|
75
|
-
'server_id':'本地地图',
|
76
|
-
},{
|
77
|
-
'id_rank':'2',
|
78
|
-
'place': True,
|
79
|
-
'location':'/home/unbuntu/coop',
|
80
|
-
'host':'11.4.51.4',
|
81
|
-
'port':'20715',
|
82
|
-
'rcon':'9191810',
|
83
|
-
'account':'root',
|
84
|
-
'password':'114514',
|
85
|
-
'server_id':'远程地图',
|
86
|
-
}],
|
87
|
-
alias='l4服务器ip集合')
|
88
|
-
web_secret_key: str = Field('49c294d32f69b732ef6447c18379451ce1738922a75cd1d4812ef150318a2ed0',
|
89
|
-
alias='后台管理token密钥')
|
90
|
-
l4_master: List[str] = Field(['114514919'], alias='求生地图全局管理员qq')
|
91
|
-
# l4_ip:bool = Field(False, alias='查询地图是否显示ip')
|
92
|
-
l4_font: str = Field('simsun.ttc', alias='字体')
|
93
|
-
l4_only:bool = Field(False, alias='下载地图是是否阻碍其他指令')
|
94
|
-
l4_tag: List[str] = Field(['呆呆','橘'], alias='查服的名')
|
95
|
-
l4_key: str = Field('q1145149191810', alias='key')
|
96
|
-
group_config: Dict[int, L4d2GroupConfig] = Field({}, alias='分群配置')
|
97
|
-
|
98
|
-
def update(self, **kwargs):
|
99
|
-
for key, value in kwargs.items():
|
100
|
-
if key in self.__fields__:
|
101
|
-
self.__setattr__(key, value)
|
102
|
-
|
103
|
-
class L4d2ConfigManager:
|
104
|
-
|
105
|
-
def __init__(self):
|
106
|
-
self.file_path = CONFIG_PATH
|
107
|
-
if self.file_path.exists():
|
108
|
-
self.config = L4d2Config.parse_obj(
|
109
|
-
yaml.load(self.file_path.read_text(encoding='utf-8'), Loader=yaml.Loader))
|
110
|
-
else:
|
111
|
-
self.config = L4d2Config()
|
112
|
-
self.save()
|
113
|
-
|
114
|
-
def get_group_config(self, group_id: int) -> L4d2GroupConfig:
|
115
|
-
if group_id not in self.config.group_config:
|
116
|
-
self.config.group_config[group_id] = L4d2GroupConfig()
|
117
|
-
self.save()
|
118
|
-
return self.config.group_config[group_id]
|
119
|
-
|
120
|
-
@property
|
121
|
-
def config_list(self) -> List[str]:
|
122
|
-
return list(self.config.dict(by_alias=True).keys())
|
123
|
-
|
124
|
-
def save(self):
|
125
|
-
with self.file_path.open('w', encoding='utf-8') as f:
|
126
|
-
yaml.dump(
|
127
|
-
self.config.dict(by_alias=True),
|
128
|
-
f,
|
129
|
-
indent=2,
|
130
|
-
Dumper=yaml.RoundTripDumper,
|
131
|
-
allow_unicode=True)
|
132
|
-
|
133
|
-
# 参数设置为全局变量
|
134
|
-
global config_manager,l4_config
|
135
|
-
config_manager = L4d2ConfigManager()
|
136
|
-
l4_config = config_manager.config
|
137
|
-
|
138
|
-
class UserModel(BaseModel):
|
139
|
-
username: str
|
140
|
-
password: str
|
141
|
-
|
142
|
-
|
143
|
-
'''
|
144
|
-
地图路径
|
145
|
-
'''
|
146
|
-
vpk_path = "left4dead2/addons"
|
147
|
-
|
148
|
-
|
149
|
-
PLAYERSDATA = Path() / "data/L4D2/image/players"
|
150
|
-
"""用户数据路径"""
|
151
|
-
TEXT_PATH = Path(__file__).parent / 'data/L4D2/image'
|
152
|
-
"""图片存储路径"""
|
153
|
-
TEXT_XPATH = Path() / 'data/L4D2/image'
|
154
|
-
"""内置图片路径"""
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
PLAYERSDATA = Path() / "data/L4D2/sql"
|
159
|
-
"""数据库路径"""
|
160
|
-
DATASQLITE = Path().parent / "data/L4D2/sql/L4D2.db"
|
161
|
-
"""数据库!"""
|
162
|
-
|
163
|
-
table_data = ["L4d2_players","L4D2_server"]
|
164
|
-
"""数据库表"""
|
165
|
-
L4d2_players_tag = ['qq', 'nickname', 'steamid']
|
166
|
-
"""数据库表1"""
|
167
|
-
L4d2_server_tag = ['id','qqgroup', 'host', 'port', 'rcon']
|
168
|
-
"""数据库表2"""
|
169
|
-
L4d2_INTEGER = ['id','qq','qqgroup','port']
|
170
|
-
"""INITEGER的表头"""
|
171
|
-
L4d2_TEXT = ['nickname','steamid','host','rcon','path']
|
172
|
-
"""TEXT的表头"""
|
173
|
-
L4d2_BOOLEAN = ['use']
|
174
|
-
"""BOOLEAN的表头"""
|
175
|
-
|
176
|
-
tables_columns = {
|
177
|
-
table_data[0]:L4d2_players_tag,
|
178
|
-
table_data[1]:L4d2_server_tag
|
179
|
-
}
|
180
|
-
|
181
|
-
# 求生anne服务器
|
182
|
-
anne_url = "https://server.trygek.com/"
|
183
|
-
|
184
|
-
gamemode_list = [
|
185
|
-
'纯净',
|
186
|
-
'魔改战役',
|
187
|
-
'多特',
|
188
|
-
'魔改多特',
|
189
|
-
'写专',
|
190
|
-
'对抗',
|
191
|
-
'魔改对抗',
|
192
|
-
'药役',
|
193
|
-
'药抗',
|
194
|
-
'包抗',
|
195
|
-
'绝境',
|
196
|
-
'死专',
|
197
|
-
'ast',
|
198
|
-
'清道夫',
|
199
|
-
]
|
200
|
-
|
201
|
-
# 系统
|
202
|
-
if platform.system() == 'Windows':
|
203
|
-
systems:str = 'win'
|
204
|
-
elif platform.system() == 'Linux':
|
205
|
-
systems:str = 'linux'
|
206
|
-
else:
|
207
|
-
systems:str = 'others'
|
208
|
-
ANNE_IP = {}
|
209
|
-
|
210
|
-
|
1
|
+
from pathlib import Path
|
2
|
+
from typing import List,Dict,Union
|
3
|
+
import ast
|
4
|
+
import platform
|
5
|
+
import os
|
6
|
+
from ruamel import yaml
|
7
|
+
from pydantic import Extra,BaseModel,Field
|
8
|
+
try:
|
9
|
+
import ujson as json
|
10
|
+
except:
|
11
|
+
import json
|
12
|
+
|
13
|
+
from nonebot.permission import SUPERUSER
|
14
|
+
from nonebot import get_driver
|
15
|
+
from nonebot.log import logger
|
16
|
+
from nonebot.adapters.onebot.v11.permission import (
|
17
|
+
GROUP_ADMIN,
|
18
|
+
GROUP_OWNER,
|
19
|
+
PRIVATE_FRIEND,
|
20
|
+
)
|
21
|
+
|
22
|
+
from .l4d2_queries.ohter import ALL_HOST
|
23
|
+
from .l4d2_queries.api import seach_map,map_dict_to_str
|
24
|
+
file_format = (".vpk",".zip",".7z",'rar')
|
25
|
+
# 权限
|
26
|
+
|
27
|
+
driver = get_driver()
|
28
|
+
COMMAND_START = list[driver.config.command_start]
|
29
|
+
try:
|
30
|
+
NICKNAME: str = list(driver.config.nickname)[0]
|
31
|
+
except Exception:
|
32
|
+
NICKNAME = 'bot'
|
33
|
+
CHECK_FILE:int = 0
|
34
|
+
|
35
|
+
|
36
|
+
reMaster = SUPERUSER | GROUP_OWNER
|
37
|
+
Master = SUPERUSER | GROUP_ADMIN | GROUP_OWNER
|
38
|
+
ADMINISTRATOR = SUPERUSER | GROUP_ADMIN | GROUP_OWNER | PRIVATE_FRIEND
|
39
|
+
# file 填写求生服务器所在路径
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
CONFIG_PATH = Path() / 'data' / 'L4D2' / 'l4d2.yml'
|
45
|
+
CONFIG_PATH.parent.mkdir(parents=True, exist_ok=True)
|
46
|
+
|
47
|
+
class L4d2GroupConfig(BaseModel):
|
48
|
+
enable: bool = Field(True, alias='是否启用求生功能')
|
49
|
+
map_master: List[str] = Field([], alias='分群地图管理员')
|
50
|
+
|
51
|
+
def update(self, **kwargs):
|
52
|
+
for key, value in kwargs.items():
|
53
|
+
if key in self.__fields__:
|
54
|
+
self.__setattr__(key, value)
|
55
|
+
|
56
|
+
class L4d2Config(BaseModel):
|
57
|
+
total_enable: bool = Field(True, alias='是否全局启用求生功能')
|
58
|
+
map_path: List[str] = Field([], alias='求生地图路径')
|
59
|
+
web_username: str = Field('l4d2', alias='后台管理用户名')
|
60
|
+
web_password: str = Field('admin', alias='后台管理密码')
|
61
|
+
l4_style: str = Field("standard", alias='图片风格')
|
62
|
+
# l4_file: List[str] = Field( ["/home/ubuntu/l4d2/coop"], alias='本地求生服务器地址')
|
63
|
+
# l4_host: List[str] = Field(['127.0.0.1'], alias='求生服务器地址')
|
64
|
+
# l4_port: List[str] = Field(['20715'], alias='求生服务器端口')
|
65
|
+
# l4_rcon: List[str] = Field(['114514'], alias='求生服务器rcon密码')
|
66
|
+
|
67
|
+
l4_ipall: List[Dict[str,Union[str,int,bool]]] = Field(
|
68
|
+
[{
|
69
|
+
'id_rank':'1',
|
70
|
+
'place': False,
|
71
|
+
'location':'C:\\l4d2',
|
72
|
+
'host':'127.0.0.1',
|
73
|
+
'port':'20715',
|
74
|
+
'rcon':'114514',
|
75
|
+
'server_id':'本地地图',
|
76
|
+
},{
|
77
|
+
'id_rank':'2',
|
78
|
+
'place': True,
|
79
|
+
'location':'/home/unbuntu/coop',
|
80
|
+
'host':'11.4.51.4',
|
81
|
+
'port':'20715',
|
82
|
+
'rcon':'9191810',
|
83
|
+
'account':'root',
|
84
|
+
'password':'114514',
|
85
|
+
'server_id':'远程地图',
|
86
|
+
}],
|
87
|
+
alias='l4服务器ip集合')
|
88
|
+
web_secret_key: str = Field('49c294d32f69b732ef6447c18379451ce1738922a75cd1d4812ef150318a2ed0',
|
89
|
+
alias='后台管理token密钥')
|
90
|
+
l4_master: List[str] = Field(['114514919'], alias='求生地图全局管理员qq')
|
91
|
+
# l4_ip:bool = Field(False, alias='查询地图是否显示ip')
|
92
|
+
l4_font: str = Field('simsun.ttc', alias='字体')
|
93
|
+
l4_only:bool = Field(False, alias='下载地图是是否阻碍其他指令')
|
94
|
+
l4_tag: List[str] = Field(['呆呆','橘'], alias='查服的名')
|
95
|
+
l4_key: str = Field('q1145149191810', alias='key')
|
96
|
+
group_config: Dict[int, L4d2GroupConfig] = Field({}, alias='分群配置')
|
97
|
+
|
98
|
+
def update(self, **kwargs):
|
99
|
+
for key, value in kwargs.items():
|
100
|
+
if key in self.__fields__:
|
101
|
+
self.__setattr__(key, value)
|
102
|
+
|
103
|
+
class L4d2ConfigManager:
|
104
|
+
|
105
|
+
def __init__(self):
|
106
|
+
self.file_path = CONFIG_PATH
|
107
|
+
if self.file_path.exists():
|
108
|
+
self.config = L4d2Config.parse_obj(
|
109
|
+
yaml.load(self.file_path.read_text(encoding='utf-8'), Loader=yaml.Loader))
|
110
|
+
else:
|
111
|
+
self.config = L4d2Config()
|
112
|
+
self.save()
|
113
|
+
|
114
|
+
def get_group_config(self, group_id: int) -> L4d2GroupConfig:
|
115
|
+
if group_id not in self.config.group_config:
|
116
|
+
self.config.group_config[group_id] = L4d2GroupConfig()
|
117
|
+
self.save()
|
118
|
+
return self.config.group_config[group_id]
|
119
|
+
|
120
|
+
@property
|
121
|
+
def config_list(self) -> List[str]:
|
122
|
+
return list(self.config.dict(by_alias=True).keys())
|
123
|
+
|
124
|
+
def save(self):
|
125
|
+
with self.file_path.open('w', encoding='utf-8') as f:
|
126
|
+
yaml.dump(
|
127
|
+
self.config.dict(by_alias=True),
|
128
|
+
f,
|
129
|
+
indent=2,
|
130
|
+
Dumper=yaml.RoundTripDumper,
|
131
|
+
allow_unicode=True)
|
132
|
+
|
133
|
+
# 参数设置为全局变量
|
134
|
+
global config_manager,l4_config
|
135
|
+
config_manager = L4d2ConfigManager()
|
136
|
+
l4_config = config_manager.config
|
137
|
+
|
138
|
+
class UserModel(BaseModel):
|
139
|
+
username: str
|
140
|
+
password: str
|
141
|
+
|
142
|
+
|
143
|
+
'''
|
144
|
+
地图路径
|
145
|
+
'''
|
146
|
+
vpk_path = "left4dead2/addons"
|
147
|
+
|
148
|
+
|
149
|
+
PLAYERSDATA = Path() / "data/L4D2/image/players"
|
150
|
+
"""用户数据路径"""
|
151
|
+
TEXT_PATH = Path(__file__).parent / 'data/L4D2/image'
|
152
|
+
"""图片存储路径"""
|
153
|
+
TEXT_XPATH = Path() / 'data/L4D2/image'
|
154
|
+
"""内置图片路径"""
|
155
|
+
|
156
|
+
|
157
|
+
|
158
|
+
PLAYERSDATA = Path() / "data/L4D2/sql"
|
159
|
+
"""数据库路径"""
|
160
|
+
DATASQLITE = Path().parent / "data/L4D2/sql/L4D2.db"
|
161
|
+
"""数据库!"""
|
162
|
+
|
163
|
+
table_data = ["L4d2_players","L4D2_server"]
|
164
|
+
"""数据库表"""
|
165
|
+
L4d2_players_tag = ['qq', 'nickname', 'steamid']
|
166
|
+
"""数据库表1"""
|
167
|
+
L4d2_server_tag = ['id','qqgroup', 'host', 'port', 'rcon']
|
168
|
+
"""数据库表2"""
|
169
|
+
L4d2_INTEGER = ['id','qq','qqgroup','port']
|
170
|
+
"""INITEGER的表头"""
|
171
|
+
L4d2_TEXT = ['nickname','steamid','host','rcon','path']
|
172
|
+
"""TEXT的表头"""
|
173
|
+
L4d2_BOOLEAN = ['use']
|
174
|
+
"""BOOLEAN的表头"""
|
175
|
+
|
176
|
+
tables_columns = {
|
177
|
+
table_data[0]:L4d2_players_tag,
|
178
|
+
table_data[1]:L4d2_server_tag
|
179
|
+
}
|
180
|
+
|
181
|
+
# 求生anne服务器
|
182
|
+
anne_url = "https://server.trygek.com/"
|
183
|
+
|
184
|
+
gamemode_list = [
|
185
|
+
'纯净',
|
186
|
+
'魔改战役',
|
187
|
+
'多特',
|
188
|
+
'魔改多特',
|
189
|
+
'写专',
|
190
|
+
'对抗',
|
191
|
+
'魔改对抗',
|
192
|
+
'药役',
|
193
|
+
'药抗',
|
194
|
+
'包抗',
|
195
|
+
'绝境',
|
196
|
+
'死专',
|
197
|
+
'ast',
|
198
|
+
'清道夫',
|
199
|
+
]
|
200
|
+
|
201
|
+
# 系统
|
202
|
+
if platform.system() == 'Windows':
|
203
|
+
systems:str = 'win'
|
204
|
+
elif platform.system() == 'Linux':
|
205
|
+
systems:str = 'linux'
|
206
|
+
else:
|
207
|
+
systems:str = 'others'
|
208
|
+
ANNE_IP = {}
|
209
|
+
|
210
|
+
|
211
211
|
|
@@ -1,60 +1,60 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
<head>
|
3
|
-
<link rel="stylesheet" type="text/css" href="vue.css">
|
4
|
-
</head>
|
5
|
-
</br>
|
6
|
-
<body style="background-image: url('back.png'); background-size: cover;">
|
7
|
-
<font color="yellow">
|
8
|
-
{% for item in data %}
|
9
|
-
<h1 ><center>求生药役anne电信服数据</center></h1>
|
10
|
-
<div class="scissors" style="border-top:1px dashed orange;">
|
11
|
-
</div><h3><center>
|
12
|
-
{% for msg_one in item.one_msg %}
|
13
|
-
{{ msg_one }}<br>
|
14
|
-
{% endfor %}</center></h3>
|
15
|
-
</font>
|
16
|
-
<div class="scissors" style="border-top:1px dashed orange;">
|
17
|
-
</div>
|
18
|
-
<div class="myinfo">
|
19
|
-
<table class="transparent-bg">
|
20
|
-
<tbody>
|
21
|
-
<tr>
|
22
|
-
<td rowspan="6">
|
23
|
-
<img src={{item.header}} width="200" height="200" style="border-radius: 50%;">
|
24
|
-
</td>
|
25
|
-
<td>昵  称 | {{item.name}}</td>
|
26
|
-
<td>Steam id | {{item.Steam_ID}}</td>
|
27
|
-
</tr>
|
28
|
-
<tr>
|
29
|
-
<td>游玩时间 | {{item.play_time}}</td>
|
30
|
-
<td>最后上线 | {{item.last_online}}</td>
|
31
|
-
</tr>
|
32
|
-
<tr>
|
33
|
-
<td>排  行 | {{item.rank}}</td>
|
34
|
-
|
35
|
-
<td>分  数 | {{item.points}}</td>
|
36
|
-
</tr>
|
37
|
-
<tr>
|
38
|
-
<td>分数 / 分 | {{item.point_min}}</td>
|
39
|
-
<td>小僵尸数 | {{item.killed}}</td>
|
40
|
-
</tr>
|
41
|
-
<tr>
|
42
|
-
<td>爆  头 | {{item.shut}}</td>
|
43
|
-
<td>爆 头 率 | {{item.out}}</td>
|
44
|
-
</tr>
|
45
|
-
<tr>
|
46
|
-
<td>游玩次数 | {{item.playtimes}}</td>
|
47
|
-
<td>救 援 关 | {{item.last_one}}</td>
|
48
|
-
</tr>
|
49
|
-
</tbody>
|
50
|
-
</table>
|
51
|
-
</div>
|
52
|
-
<font color="yellow">
|
53
|
-
{% endfor %}
|
54
|
-
<h5><center>©爱丽数码</center></br>
|
55
|
-
<center>
|
56
|
-
github.com/Agnes4m/nonebot_plugin_l4d2_server
|
57
|
-
</center>
|
58
|
-
</h5>
|
59
|
-
</font>
|
60
|
-
</body>
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<head>
|
3
|
+
<link rel="stylesheet" type="text/css" href="vue.css">
|
4
|
+
</head>
|
5
|
+
</br>
|
6
|
+
<body style="background-image: url('back.png'); background-size: cover;">
|
7
|
+
<font color="yellow">
|
8
|
+
{% for item in data %}
|
9
|
+
<h1 ><center>求生药役anne电信服数据</center></h1>
|
10
|
+
<div class="scissors" style="border-top:1px dashed orange;">
|
11
|
+
</div><h3><center>
|
12
|
+
{% for msg_one in item.one_msg %}
|
13
|
+
{{ msg_one }}<br>
|
14
|
+
{% endfor %}</center></h3>
|
15
|
+
</font>
|
16
|
+
<div class="scissors" style="border-top:1px dashed orange;">
|
17
|
+
</div>
|
18
|
+
<div class="myinfo">
|
19
|
+
<table class="transparent-bg">
|
20
|
+
<tbody>
|
21
|
+
<tr>
|
22
|
+
<td rowspan="6">
|
23
|
+
<img src={{item.header}} width="200" height="200" style="border-radius: 50%;">
|
24
|
+
</td>
|
25
|
+
<td>昵  称 | {{item.name}}</td>
|
26
|
+
<td>Steam id | {{item.Steam_ID}}</td>
|
27
|
+
</tr>
|
28
|
+
<tr>
|
29
|
+
<td>游玩时间 | {{item.play_time}}</td>
|
30
|
+
<td>最后上线 | {{item.last_online}}</td>
|
31
|
+
</tr>
|
32
|
+
<tr>
|
33
|
+
<td>排  行 | {{item.rank}}</td>
|
34
|
+
|
35
|
+
<td>分  数 | {{item.points}}</td>
|
36
|
+
</tr>
|
37
|
+
<tr>
|
38
|
+
<td>分数 / 分 | {{item.point_min}}</td>
|
39
|
+
<td>小僵尸数 | {{item.killed}}</td>
|
40
|
+
</tr>
|
41
|
+
<tr>
|
42
|
+
<td>爆  头 | {{item.shut}}</td>
|
43
|
+
<td>爆 头 率 | {{item.out}}</td>
|
44
|
+
</tr>
|
45
|
+
<tr>
|
46
|
+
<td>游玩次数 | {{item.playtimes}}</td>
|
47
|
+
<td>救 援 关 | {{item.last_one}}</td>
|
48
|
+
</tr>
|
49
|
+
</tbody>
|
50
|
+
</table>
|
51
|
+
</div>
|
52
|
+
<font color="yellow">
|
53
|
+
{% endfor %}
|
54
|
+
<h5><center>©爱丽数码</center></br>
|
55
|
+
<center>
|
56
|
+
github.com/Agnes4m/nonebot_plugin_l4d2_server
|
57
|
+
</center>
|
58
|
+
</h5>
|
59
|
+
</font>
|
60
|
+
</body>
|
@@ -1,15 +1,15 @@
|
|
1
|
-
<svg
|
2
|
-
aria-hidden="true"
|
3
|
-
focusable="false"
|
4
|
-
data-prefix="fas"
|
5
|
-
data-icon="fingerprint"
|
6
|
-
class="svg-inline--fa fa-fingerprint mr-2"
|
7
|
-
role="img"
|
8
|
-
xmlns="http://www.w3.org/2000/svg"
|
9
|
-
viewBox="0 0 512 512"
|
10
|
-
>
|
11
|
-
<path
|
12
|
-
fill="currentColor"
|
13
|
-
d="M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z"
|
14
|
-
></path>
|
15
|
-
</svg>
|
1
|
+
<svg
|
2
|
+
aria-hidden="true"
|
3
|
+
focusable="false"
|
4
|
+
data-prefix="fas"
|
5
|
+
data-icon="fingerprint"
|
6
|
+
class="svg-inline--fa fa-fingerprint mr-2"
|
7
|
+
role="img"
|
8
|
+
xmlns="http://www.w3.org/2000/svg"
|
9
|
+
viewBox="0 0 512 512"
|
10
|
+
>
|
11
|
+
<path
|
12
|
+
fill="currentColor"
|
13
|
+
d="M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z"
|
14
|
+
></path>
|
15
|
+
</svg>
|