2020-08-12 08:01:00 +00:00
|
|
|
|
import aiohttp
|
2020-06-13 12:43:43 +00:00
|
|
|
|
import json
|
2020-08-12 16:01:34 +00:00
|
|
|
|
import re
|
|
|
|
|
|
2020-07-18 12:58:39 +00:00
|
|
|
|
from .be import main
|
2020-08-12 16:01:34 +00:00
|
|
|
|
|
|
|
|
|
|
2020-07-18 12:58:39 +00:00
|
|
|
|
async def server(address):
|
2020-08-15 06:57:00 +00:00
|
|
|
|
matchObj = re.match(r'(.*):(.*)', address, re.M | re.I)
|
2020-07-18 12:58:39 +00:00
|
|
|
|
servers = []
|
2020-08-12 16:01:34 +00:00
|
|
|
|
|
2020-06-13 12:43:43 +00:00
|
|
|
|
try:
|
|
|
|
|
if matchObj:
|
2020-07-18 12:58:39 +00:00
|
|
|
|
serip = matchObj.group(1)
|
|
|
|
|
port1 = matchObj.group(2)
|
|
|
|
|
port2 = matchObj.group(2)
|
2020-06-13 12:43:43 +00:00
|
|
|
|
else:
|
2020-07-18 12:58:39 +00:00
|
|
|
|
serip = address
|
|
|
|
|
port1 = '25565'
|
|
|
|
|
port2 = '19132'
|
2020-08-12 16:01:34 +00:00
|
|
|
|
|
2020-07-18 12:58:39 +00:00
|
|
|
|
try:
|
2020-08-12 16:01:34 +00:00
|
|
|
|
url = 'http://motd.wd-api.com/?ip=' + serip + '&port=' + port1 + '&mode=info'
|
2020-08-12 08:01:00 +00:00
|
|
|
|
async with aiohttp.ClientSession() as session:
|
2020-08-12 16:01:34 +00:00
|
|
|
|
async with session.get(url, timeout=aiohttp.ClientTimeout(total=20)) as req:
|
2020-08-12 08:01:00 +00:00
|
|
|
|
if req.status != 200:
|
2020-08-15 06:41:56 +00:00
|
|
|
|
print(f"请求时发生错误:{req.status}")
|
2020-08-12 08:01:00 +00:00
|
|
|
|
else:
|
|
|
|
|
motd = await req.text()
|
|
|
|
|
file = json.loads(motd)
|
2020-07-19 02:24:39 +00:00
|
|
|
|
try:
|
|
|
|
|
if file['code'] == 200:
|
2020-08-12 16:01:34 +00:00
|
|
|
|
x = re.sub(r'§\w', "", file['data']['description']['text'])
|
2020-07-19 02:24:39 +00:00
|
|
|
|
if not x:
|
|
|
|
|
extra = file['data']['description']['extra']
|
|
|
|
|
text = []
|
|
|
|
|
qwq = ''
|
|
|
|
|
for item in extra[:]:
|
|
|
|
|
text.append(item['text'])
|
2020-08-12 16:01:34 +00:00
|
|
|
|
servers.append('[JE]\n' + qwq.join(text) + "\n" + "在线玩家:" + str(
|
|
|
|
|
file['data']['players']['online']) + "/" + str(
|
|
|
|
|
file['data']['players']['max']) + "\n" + "游戏版本:" + file['data']['version']['name'])
|
2020-07-19 02:24:39 +00:00
|
|
|
|
else:
|
2020-08-12 16:01:34 +00:00
|
|
|
|
servers.append(
|
|
|
|
|
'[JE]\n' + x + "\n" + "在线玩家:" + str(file['data']['players']['online']) + "/" + str(
|
|
|
|
|
file['data']['players']['max']) + "\n" + "游戏版本:" + file['data']['version']['name'])
|
2020-06-13 12:43:43 +00:00
|
|
|
|
else:
|
2020-07-19 02:24:39 +00:00
|
|
|
|
print('获取JE服务器信息失败。')
|
|
|
|
|
except Exception:
|
|
|
|
|
try:
|
2020-08-12 16:01:34 +00:00
|
|
|
|
x = re.sub(r'§\w', "", file['data']['description'])
|
|
|
|
|
servers.append('[JE]\n' + x + "\n" + "在线玩家:" + str(file['data']['players']['online']) + "/" + str(
|
|
|
|
|
file['data']['players']['max']) + "\n" + "游戏版本:" + file['data']['version']['name'])
|
2020-07-19 02:24:39 +00:00
|
|
|
|
except Exception as e:
|
2020-08-12 16:01:34 +00:00
|
|
|
|
print('获取JE服务器信息失败。' + str(e))
|
2020-07-19 02:24:39 +00:00
|
|
|
|
servers.append("[JE]\n发生错误:调用API时发生错误。")
|
|
|
|
|
except Exception as e:
|
2020-08-12 16:01:34 +00:00
|
|
|
|
print('获取JE服务器信息失败。' + str(e))
|
2020-07-18 12:58:39 +00:00
|
|
|
|
try:
|
2020-08-12 16:01:34 +00:00
|
|
|
|
BE = await main(serip, port2)
|
|
|
|
|
BER = re.sub(r'§\w', "", BE)
|
2020-07-18 13:14:43 +00:00
|
|
|
|
servers.append(BER)
|
|
|
|
|
except Exception as e:
|
2020-08-12 16:01:34 +00:00
|
|
|
|
print('获取BE服务器信息失败。' + str(e))
|
|
|
|
|
if str(servers) == '[]':
|
|
|
|
|
return ('连接失败,没有检测到任何服务器。')
|
2020-07-18 12:58:39 +00:00
|
|
|
|
else:
|
|
|
|
|
awa = '\n'
|
2020-08-27 12:42:53 +00:00
|
|
|
|
servers.append("[30秒后撤回本消息]")
|
2020-08-12 16:01:34 +00:00
|
|
|
|
return (awa.join(servers))
|
|
|
|
|
except Exception as e:
|
|
|
|
|
return ("发生错误:" + str(e) + ".")
|