nonebot-plugin-l4d2-server 0.5.0__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.
Files changed (49) hide show
  1. LICENSE +674 -674
  2. README.md +365 -349
  3. nonebot_plugin_l4d2_server/__init__.py +1 -1
  4. nonebot_plugin_l4d2_server/chrome.py +45 -0
  5. nonebot_plugin_l4d2_server/command.py +232 -233
  6. nonebot_plugin_l4d2_server/config.py +210 -318
  7. nonebot_plugin_l4d2_server/data/L4D2/image/template/anne.html +60 -60
  8. nonebot_plugin_l4d2_server/data/L4D2/image/template/fingerprint.svg +15 -15
  9. nonebot_plugin_l4d2_server/data/L4D2/image/template/help.html +233 -233
  10. nonebot_plugin_l4d2_server/data/L4D2/image/template/help_dack.html +231 -231
  11. nonebot_plugin_l4d2_server/data/L4D2/image/template/ip.html +48 -48
  12. nonebot_plugin_l4d2_server/data/L4D2/image/template/l.svg +9 -9
  13. nonebot_plugin_l4d2_server/data/L4D2/image/template/vue.css +530 -530
  14. nonebot_plugin_l4d2_server/l4d2_anne/__init__.py +251 -251
  15. nonebot_plugin_l4d2_server/l4d2_anne/analysis.py +51 -51
  16. nonebot_plugin_l4d2_server/l4d2_anne/anne_telecom.py +75 -75
  17. nonebot_plugin_l4d2_server/l4d2_anne/server.py +65 -65
  18. nonebot_plugin_l4d2_server/l4d2_anne/startand.py +17 -17
  19. nonebot_plugin_l4d2_server/l4d2_data/__init__.py +91 -91
  20. nonebot_plugin_l4d2_server/l4d2_data/config.py +17 -17
  21. nonebot_plugin_l4d2_server/l4d2_data/players.py +87 -87
  22. nonebot_plugin_l4d2_server/l4d2_data/serverip.py +32 -32
  23. nonebot_plugin_l4d2_server/l4d2_file/__init__.py +122 -122
  24. nonebot_plugin_l4d2_server/l4d2_file/ayromote.py +56 -56
  25. nonebot_plugin_l4d2_server/l4d2_file/remote.py +63 -66
  26. nonebot_plugin_l4d2_server/l4d2_image/__init__.py +103 -103
  27. nonebot_plugin_l4d2_server/l4d2_image/download.py +101 -101
  28. nonebot_plugin_l4d2_server/l4d2_image/htmlimg.py +32 -32
  29. nonebot_plugin_l4d2_server/l4d2_image/send_image_tool.py +32 -32
  30. nonebot_plugin_l4d2_server/l4d2_image/steam.py +83 -83
  31. nonebot_plugin_l4d2_server/l4d2_image/vtfs.py +40 -40
  32. nonebot_plugin_l4d2_server/l4d2_queries/__init__.py +114 -114
  33. nonebot_plugin_l4d2_server/l4d2_queries/api.py +43 -43
  34. nonebot_plugin_l4d2_server/l4d2_queries/ohter.py +35 -25
  35. nonebot_plugin_l4d2_server/l4d2_queries/qqgroup.py +288 -288
  36. nonebot_plugin_l4d2_server/l4d2_server/__init__.py +61 -61
  37. nonebot_plugin_l4d2_server/l4d2_server/rcon.py +28 -28
  38. nonebot_plugin_l4d2_server/l4d2_server/workshop.py +50 -50
  39. nonebot_plugin_l4d2_server/l4d2_web/web.py +234 -234
  40. nonebot_plugin_l4d2_server/l4d2_web/webUI.py +241 -241
  41. nonebot_plugin_l4d2_server/message.py +58 -58
  42. nonebot_plugin_l4d2_server/seach.py +33 -33
  43. nonebot_plugin_l4d2_server/txt_to_img.py +64 -64
  44. nonebot_plugin_l4d2_server/utils.py +272 -272
  45. {nonebot_plugin_l4d2_server-0.5.0.dist-info → nonebot_plugin_l4d2_server-0.5.2.dist-info}/LICENSE +674 -674
  46. {nonebot_plugin_l4d2_server-0.5.0.dist-info → nonebot_plugin_l4d2_server-0.5.2.dist-info}/METADATA +47 -32
  47. nonebot_plugin_l4d2_server-0.5.2.dist-info/RECORD +54 -0
  48. nonebot_plugin_l4d2_server-0.5.0.dist-info/RECORD +0 -53
  49. {nonebot_plugin_l4d2_server-0.5.0.dist-info → nonebot_plugin_l4d2_server-0.5.2.dist-info}/WHEEL +0 -0
@@ -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>
@@ -1,233 +1,233 @@
1
- <html>
2
- <head>
3
- <style>
4
- body {
5
- margin: 0px;
6
- zoom: 150%;
7
- }
8
- .image {
9
- display: flex;
10
- flex-direction: column;
11
- overflow: scroll;
12
- width: max-content;
13
- padding: 20px;
14
- }
15
- .head {
16
- display: flex;
17
- flex-direction: row;
18
- align-items: center;
19
- justify-content: space-between;
20
- background-color: #f5f6f7;
21
- padding-left: 20px;
22
- padding-right: 20px;
23
- padding-top: 10px;
24
- padding-bottom: 10px;
25
- border: 2px solid;
26
- border-radius: 50px;
27
- border-color: #e5e7eb;
28
- font-size: 16px;
29
- margin-bottom: 20px;
30
- }
31
-
32
- .plugins {
33
- display: grid;
34
- grid-template-columns: auto auto auto;
35
- row-gap: 20px;
36
- column-gap: 20px;
37
- margin-bottom: 20px;
38
- }
39
- .plugin {
40
- display: flex;
41
- padding: 5px;
42
- border: 1px solid;
43
- border-radius: 5px;
44
- border-color: #e5e7eb;
45
- box-shadow: 0px 2px 6px 1px rgba(0, 0, 0, 0.2);
46
- background-color: #f5f6f7;
47
- }
48
- .plugin_meta {
49
- display: flex;
50
- flex-direction: column;
51
- padding: 5px;
52
- width: 250px;
53
- justify-content: space-between;
54
- }
55
- .plugin_name {
56
- font-size: 20px;
57
- }
58
- .plugin_description {
59
- font-size: 15px;
60
- color: gray;
61
- margin-top: 5px;
62
- margin-bottom: 5px;
63
- }
64
- .plugin_meta_line1 {
65
- display: flex;
66
- flex-direction: row;
67
- align-items: center;
68
- justify-content: space-between;
69
- }
70
- .plugin_meta_line3 {
71
- display: flex;
72
- flex-direction: row;
73
- align-items: center;
74
- }
75
- .package_name_label{
76
- background-image: url(./fingerprint.svg);
77
- width: 13px;
78
- height: 13px;
79
- margin-right: 8px;
80
- }
81
- .package_name {
82
- font-size: 13px;
83
- color: gray;
84
- }
85
- .switch {
86
- position: relative;
87
- display: inline-block;
88
- width: 40px;
89
- height: 24px;
90
- }
91
- .slider {
92
- position: absolute;
93
- cursor: pointer;
94
- top: 0;
95
- left: 0;
96
- right: 0;
97
- bottom: 0;
98
- background-color: #ccc;
99
- }
100
- .slider:before {
101
- position: absolute;
102
- content: "";
103
- height: 16px;
104
- width: 16px;
105
- left: 4px;
106
- bottom: 4px;
107
- background-color: white;
108
- }
109
- .switch input {
110
- display: none;
111
- }
112
- .switch input:checked + .slider {
113
- background-color: rgba(86, 40, 238, 0.5);
114
- }
115
- .switch input:checked + .slider:before {
116
- -webkit-transform: translateX(16px);
117
- -ms-transform: translateX(16px);
118
- transform: translateX(16px);
119
- }
120
- .slider.round {
121
- border-radius: 24px;
122
- }
123
- .slider.round:before {
124
- border-radius: 50%;
125
- }
126
- .checkbox {
127
- visibility: hidden;
128
- }
129
- .slider.locked {
130
- opacity: 0.5;
131
- }
132
- .switch input + span .lock {
133
- width: 8px;
134
- height: 7px;
135
- background: #99a3ba;
136
- position: absolute;
137
- left: 8px;
138
- bottom: 7px;
139
- border-radius: 2px;
140
- display: block;
141
- z-index: 1;
142
- transition: all 0.45s ease;
143
- }
144
- .switch input + span .lock:before {
145
- content: "";
146
- width: 2px;
147
- height: 2px;
148
- border-radius: 1px;
149
- background: #fff;
150
- position: absolute;
151
- display: block;
152
- left: 50%;
153
- top: 50%;
154
- margin: -1px 0 0 -1px;
155
- }
156
- .switch input + span .lock:after {
157
- content: "";
158
- border-top-left-radius: 4px;
159
- border-top-right-radius: 4px;
160
- border: 1px solid #99a3ba;
161
- border-bottom: 0;
162
- width: 4px;
163
- height: 4px;
164
- left: 1px;
165
- bottom: 6px;
166
- position: absolute;
167
- z-index: 1;
168
- -webkit-transform-origin: 0 100%;
169
- transform-origin: 0 100%;
170
- transition: all 0.45s ease;
171
- }
172
- .switch input:checked + span .lock {
173
- background: #5628ee;
174
- -webkit-transform: translateX(16px);
175
- -ms-transform: translateX(16px);
176
- transform: translateX(16px);
177
- }
178
- .lock {
179
- visibility: hidden;
180
- }
181
- .lock.locked {
182
- visibility: inherit;
183
- }
184
- </style>
185
- </head>
186
- <body>
187
- <div class="image">
188
- <div class="head">
189
- <span><b>已加载服务器</b></span>
190
- <span>发送 “<b>服务器昵称/序号</b>” 查看详情</span>
191
- </div>
192
- <div class="plugins">
193
- {% for plugin in plugins %}
194
- <div class="plugin">
195
- <div class="plugin_meta">
196
- <div class="plugin_meta_line1">
197
- <div class="plugin_name">{{ plugin.number }}:{{ plugin.name }}</div>
198
- <div class="plugin_status">
199
- <label class="switch">
200
- <input class="checkbox" type="checkbox" {% if plugin.enabled %} checked {% endif %} />
201
- <span class="slider round {% if plugin.locked %} locked {% endif %}">
202
- <span class="lock {% if plugin.locked %} locked {% endif %}"></span>
203
- </span>
204
- </label>
205
- </div>
206
- </div>
207
- <div class="plugin_meta_line2">
208
- <font color="blue">{{ plugin.map_ }}</font><br>
209
- {% for Player in plugin.Players %}
210
- <font color="green">{{ Player }}</font><br>
211
- {% endfor %}
212
- </div>
213
- <div class="plugin_meta_line3">
214
- <svg width="13px" height="13px">
215
- <image xlink:href="{{ plugin.system }}" width="13px" height="13px"/>
216
- </svg>
217
- <div class="package_name">&nbsp{{ plugin.max_players }} </div>
218
- <div class="package_name">&nbsp{{ plugin.tick }} </div>
219
- </div>
220
- </div>
221
- </div>
222
- {% endfor %}
223
- </div>
224
- <div class="head">
225
- <span><b>©爱丽数码</b></span>
226
- <span>github.com/Agnes4m/nonebot_plugin_l4d2_server</span>
227
- </div>
228
- </div>
229
- </html>
230
- </body>
231
-
232
-
233
-
1
+ <html>
2
+ <head>
3
+ <style>
4
+ body {
5
+ margin: 0px;
6
+ zoom: 150%;
7
+ }
8
+ .image {
9
+ display: flex;
10
+ flex-direction: column;
11
+ overflow: scroll;
12
+ width: max-content;
13
+ padding: 20px;
14
+ }
15
+ .head {
16
+ display: flex;
17
+ flex-direction: row;
18
+ align-items: center;
19
+ justify-content: space-between;
20
+ background-color: #f5f6f7;
21
+ padding-left: 20px;
22
+ padding-right: 20px;
23
+ padding-top: 10px;
24
+ padding-bottom: 10px;
25
+ border: 2px solid;
26
+ border-radius: 50px;
27
+ border-color: #e5e7eb;
28
+ font-size: 16px;
29
+ margin-bottom: 20px;
30
+ }
31
+
32
+ .plugins {
33
+ display: grid;
34
+ grid-template-columns: auto auto auto;
35
+ row-gap: 20px;
36
+ column-gap: 20px;
37
+ margin-bottom: 20px;
38
+ }
39
+ .plugin {
40
+ display: flex;
41
+ padding: 5px;
42
+ border: 1px solid;
43
+ border-radius: 5px;
44
+ border-color: #e5e7eb;
45
+ box-shadow: 0px 2px 6px 1px rgba(0, 0, 0, 0.2);
46
+ background-color: #f5f6f7;
47
+ }
48
+ .plugin_meta {
49
+ display: flex;
50
+ flex-direction: column;
51
+ padding: 5px;
52
+ width: 250px;
53
+ justify-content: space-between;
54
+ }
55
+ .plugin_name {
56
+ font-size: 20px;
57
+ }
58
+ .plugin_description {
59
+ font-size: 15px;
60
+ color: gray;
61
+ margin-top: 5px;
62
+ margin-bottom: 5px;
63
+ }
64
+ .plugin_meta_line1 {
65
+ display: flex;
66
+ flex-direction: row;
67
+ align-items: center;
68
+ justify-content: space-between;
69
+ }
70
+ .plugin_meta_line3 {
71
+ display: flex;
72
+ flex-direction: row;
73
+ align-items: center;
74
+ }
75
+ .package_name_label{
76
+ background-image: url(./fingerprint.svg);
77
+ width: 13px;
78
+ height: 13px;
79
+ margin-right: 8px;
80
+ }
81
+ .package_name {
82
+ font-size: 13px;
83
+ color: gray;
84
+ }
85
+ .switch {
86
+ position: relative;
87
+ display: inline-block;
88
+ width: 40px;
89
+ height: 24px;
90
+ }
91
+ .slider {
92
+ position: absolute;
93
+ cursor: pointer;
94
+ top: 0;
95
+ left: 0;
96
+ right: 0;
97
+ bottom: 0;
98
+ background-color: #ccc;
99
+ }
100
+ .slider:before {
101
+ position: absolute;
102
+ content: "";
103
+ height: 16px;
104
+ width: 16px;
105
+ left: 4px;
106
+ bottom: 4px;
107
+ background-color: white;
108
+ }
109
+ .switch input {
110
+ display: none;
111
+ }
112
+ .switch input:checked + .slider {
113
+ background-color: rgba(86, 40, 238, 0.5);
114
+ }
115
+ .switch input:checked + .slider:before {
116
+ -webkit-transform: translateX(16px);
117
+ -ms-transform: translateX(16px);
118
+ transform: translateX(16px);
119
+ }
120
+ .slider.round {
121
+ border-radius: 24px;
122
+ }
123
+ .slider.round:before {
124
+ border-radius: 50%;
125
+ }
126
+ .checkbox {
127
+ visibility: hidden;
128
+ }
129
+ .slider.locked {
130
+ opacity: 0.5;
131
+ }
132
+ .switch input + span .lock {
133
+ width: 8px;
134
+ height: 7px;
135
+ background: #99a3ba;
136
+ position: absolute;
137
+ left: 8px;
138
+ bottom: 7px;
139
+ border-radius: 2px;
140
+ display: block;
141
+ z-index: 1;
142
+ transition: all 0.45s ease;
143
+ }
144
+ .switch input + span .lock:before {
145
+ content: "";
146
+ width: 2px;
147
+ height: 2px;
148
+ border-radius: 1px;
149
+ background: #fff;
150
+ position: absolute;
151
+ display: block;
152
+ left: 50%;
153
+ top: 50%;
154
+ margin: -1px 0 0 -1px;
155
+ }
156
+ .switch input + span .lock:after {
157
+ content: "";
158
+ border-top-left-radius: 4px;
159
+ border-top-right-radius: 4px;
160
+ border: 1px solid #99a3ba;
161
+ border-bottom: 0;
162
+ width: 4px;
163
+ height: 4px;
164
+ left: 1px;
165
+ bottom: 6px;
166
+ position: absolute;
167
+ z-index: 1;
168
+ -webkit-transform-origin: 0 100%;
169
+ transform-origin: 0 100%;
170
+ transition: all 0.45s ease;
171
+ }
172
+ .switch input:checked + span .lock {
173
+ background: #5628ee;
174
+ -webkit-transform: translateX(16px);
175
+ -ms-transform: translateX(16px);
176
+ transform: translateX(16px);
177
+ }
178
+ .lock {
179
+ visibility: hidden;
180
+ }
181
+ .lock.locked {
182
+ visibility: inherit;
183
+ }
184
+ </style>
185
+ </head>
186
+ <body>
187
+ <div class="image">
188
+ <div class="head">
189
+ <span><b>已加载服务器</b></span>
190
+ <span>发送 “<b>服务器昵称/序号</b>” 查看详情</span>
191
+ </div>
192
+ <div class="plugins">
193
+ {% for plugin in plugins %}
194
+ <div class="plugin">
195
+ <div class="plugin_meta">
196
+ <div class="plugin_meta_line1">
197
+ <div class="plugin_name">{{ plugin.number }}:{{ plugin.name }}</div>
198
+ <div class="plugin_status">
199
+ <label class="switch">
200
+ <input class="checkbox" type="checkbox" {% if plugin.enabled %} checked {% endif %} />
201
+ <span class="slider round {% if plugin.locked %} locked {% endif %}">
202
+ <span class="lock {% if plugin.locked %} locked {% endif %}"></span>
203
+ </span>
204
+ </label>
205
+ </div>
206
+ </div>
207
+ <div class="plugin_meta_line2">
208
+ <font color="blue">{{ plugin.map_ }}</font><br>
209
+ {% for Player in plugin.Players %}
210
+ <font color="green">{{ Player }}</font><br>
211
+ {% endfor %}
212
+ </div>
213
+ <div class="plugin_meta_line3">
214
+ <svg width="13px" height="13px">
215
+ <image xlink:href="{{ plugin.system }}" width="13px" height="13px"/>
216
+ </svg>
217
+ <div class="package_name">&nbsp{{ plugin.max_players }} </div>
218
+ <div class="package_name">&nbsp{{ plugin.tick }} </div>
219
+ </div>
220
+ </div>
221
+ </div>
222
+ {% endfor %}
223
+ </div>
224
+ <div class="head">
225
+ <span><b>©爱丽数码</b></span>
226
+ <span>github.com/Agnes4m/nonebot_plugin_l4d2_server</span>
227
+ </div>
228
+ </div>
229
+ </html>
230
+ </body>
231
+
232
+
233
+