From 3f3ba9423bd784c6a7d0b0e7786bca3914bc5cb6 Mon Sep 17 00:00:00 2001 From: grassblock Date: Fri, 8 Aug 2025 09:51:42 +0800 Subject: [PATCH] feat: make minecraft requests async --- core/mc.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/core/mc.py b/core/mc.py index 6798394..30371fb 100644 --- a/core/mc.py +++ b/core/mc.py @@ -30,14 +30,14 @@ async def handle_mc_status_command(message: Message): if server_type == 'java': try: from mcstatus import JavaServer - server = JavaServer.lookup(server_address) - status = server.status() + server = await JavaServer.async_lookup(server_address) + status = await server.async_status() query = None s_message = f"这个 Java 服务器" # 尝试查询服务器信息 if query_enabled: try: - query = server.query() + query = await server.async_query() except Exception as e: s_message = f"_我未能成功发送 query 请求,可能是因为服务器未开放对应端口。_\n这个 Java 服务器" 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 += f"服务器的 MOTD 是: ```\n{status.motd.to_minecraft()}\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: s_message += f"服务器插件: {', '.join(query.software.plugins)}\n" if query and query.players.names: @@ -55,7 +55,7 @@ async def handle_mc_status_command(message: Message): if status.forge_data: s_message += f"看起来这是一个有 mod 的服务器。\n" if status.enforces_secure_chat: - s_message += "服务器启用了消息签名,这意味着你需要调整 No Chat Reports 等类似 mod 的设置。\n" + s_message += "服务器启用了消息签名,这意味着你需要调整 No Chat Reports 等类似 mod 的设置。\n\n" s_message += "声明:这些结果均为服务器所公开的信息。查询结果仅代表bot所在的服务器对该服务器的查询结果,可能与实际情况有出入。" await status_message.edit_text(s_message, parse_mode=ParseMode.MARKDOWN) except Exception as e: @@ -65,7 +65,7 @@ async def handle_mc_status_command(message: Message): from mcstatus import BedrockServer server = BedrockServer.lookup(server_address) - status = server.status() + status = await server.async_status() # 稍微汉化一下这个状态信息 if status.gamemode == 'Survival':