feat: make minecraft requests async
This commit is contained in:
parent
5e20fc2297
commit
3f3ba9423b
1 changed files with 6 additions and 6 deletions
12
core/mc.py
12
core/mc.py
|
@ -30,14 +30,14 @@ async def handle_mc_status_command(message: Message):
|
||||||
if server_type == 'java':
|
if server_type == 'java':
|
||||||
try:
|
try:
|
||||||
from mcstatus import JavaServer
|
from mcstatus import JavaServer
|
||||||
server = JavaServer.lookup(server_address)
|
server = await JavaServer.async_lookup(server_address)
|
||||||
status = server.status()
|
status = await server.async_status()
|
||||||
query = None
|
query = None
|
||||||
s_message = f"这个 Java 服务器"
|
s_message = f"这个 Java 服务器"
|
||||||
# 尝试查询服务器信息
|
# 尝试查询服务器信息
|
||||||
if query_enabled:
|
if query_enabled:
|
||||||
try:
|
try:
|
||||||
query = server.query()
|
query = await server.async_query()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
s_message = f"_我未能成功发送 query 请求,可能是因为服务器未开放对应端口。_\n这个 Java 服务器"
|
s_message = f"_我未能成功发送 query 请求,可能是因为服务器未开放对应端口。_\n这个 Java 服务器"
|
||||||
logging.warning('查询 Minecraft 服务器遇到了错误',e)
|
logging.warning('查询 Minecraft 服务器遇到了错误',e)
|
||||||
|
@ -47,7 +47,7 @@ async def handle_mc_status_command(message: Message):
|
||||||
s_message += "延迟大约有 {:.2f} ms\n".format(status.latency)
|
s_message += "延迟大约有 {:.2f} ms\n".format(status.latency)
|
||||||
s_message += f"服务器的 MOTD 是: ```\n{status.motd.to_minecraft()}\n```"
|
s_message += f"服务器的 MOTD 是: ```\n{status.motd.to_minecraft()}\n```"
|
||||||
s_message += f"版本信息: {status.version.name} ({status.version.protocol})\n"
|
s_message += f"版本信息: {status.version.name} ({status.version.protocol})\n"
|
||||||
s_message += f"你应该使用和上面的版本相同的 Minecraft 客户端连接这个服务器。\n"
|
s_message += f"你应该使用和上面的版本相同的 Minecraft 客户端连接这个服务器。\n\n"
|
||||||
if query and query.software.plugins:
|
if query and query.software.plugins:
|
||||||
s_message += f"服务器插件: {', '.join(query.software.plugins)}\n"
|
s_message += f"服务器插件: {', '.join(query.software.plugins)}\n"
|
||||||
if query and query.players.names:
|
if query and query.players.names:
|
||||||
|
@ -55,7 +55,7 @@ async def handle_mc_status_command(message: Message):
|
||||||
if status.forge_data:
|
if status.forge_data:
|
||||||
s_message += f"看起来这是一个有 mod 的服务器。\n"
|
s_message += f"看起来这是一个有 mod 的服务器。\n"
|
||||||
if status.enforces_secure_chat:
|
if status.enforces_secure_chat:
|
||||||
s_message += "服务器启用了消息签名,这意味着你需要调整 No Chat Reports 等类似 mod 的设置。\n"
|
s_message += "服务器启用了消息签名,这意味着你需要调整 No Chat Reports 等类似 mod 的设置。\n\n"
|
||||||
s_message += "声明:这些结果均为服务器所公开的信息。查询结果仅代表bot所在的服务器对该服务器的查询结果,可能与实际情况有出入。"
|
s_message += "声明:这些结果均为服务器所公开的信息。查询结果仅代表bot所在的服务器对该服务器的查询结果,可能与实际情况有出入。"
|
||||||
await status_message.edit_text(s_message, parse_mode=ParseMode.MARKDOWN)
|
await status_message.edit_text(s_message, parse_mode=ParseMode.MARKDOWN)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
@ -65,7 +65,7 @@ async def handle_mc_status_command(message: Message):
|
||||||
from mcstatus import BedrockServer
|
from mcstatus import BedrockServer
|
||||||
server = BedrockServer.lookup(server_address)
|
server = BedrockServer.lookup(server_address)
|
||||||
|
|
||||||
status = server.status()
|
status = await server.async_status()
|
||||||
|
|
||||||
# 稍微汉化一下这个状态信息
|
# 稍微汉化一下这个状态信息
|
||||||
if status.gamemode == 'Survival':
|
if status.gamemode == 'Survival':
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue