Minecraft Server Status命令失效,App Commands实现遇阻求助
Minecraft Server Status命令无响应及App Commands实现失败排查
问题概述
- 使用
Minecraft Server Status命令无任何输出,提示命令无响应 - 调整相关设置后问题仍未解决
- 尝试通过App Commands实现该功能也以失败告终
排查步骤
一、基础连通性验证
- 确认MC服务器可用性:直接使用Minecraft客户端尝试连接目标服务器,排除服务器本身离线的可能
- 测试端口连通性:在运行命令的主机上执行以下命令,检查是否能访问服务器默认端口(25565):
telnet <服务器IP> 25565 # 或使用nc工具 nc -zv <服务器IP> 25565 - 核对命令参数:检查命令中填写的服务器IP、端口是否正确,是否遗漏必填参数
二、命令本身的问题排查
- 查看日志输出:检查命令执行时的系统日志或应用日志,是否有被忽略的错误信息
- 直接测试API调用:如果命令依赖第三方状态查询API,执行以下命令测试接口可用性:
curl -s "<服务器IP>:<端口>/status" # 或使用公开状态API示例 curl -s "https://api.mcsrvstat.us/2/<服务器IP>:<端口>"
三、App Commands实现排查
假设你的App Commands代码(以Discord.js为例)如下:
const { SlashCommandBuilder } = require('@discordjs/builders'); const mc = require('minecraft-server-util'); module.exports = { data: new SlashCommandBuilder() .setName('mcstatus') .setDescription('查询Minecraft服务器状态') .addStringOption(option => option.setName('ip') .setDescription('服务器IP地址') .setRequired(true)), async execute(interaction) { const ip = interaction.options.getString('ip'); try { const status = await mc.status(ip); await interaction.reply(`服务器在线 | 玩家数:${status.players.online}/${status.players.max}`); } catch (error) { await interaction.reply('无法获取服务器状态'); } }, };
针对这类代码的排查点:
- 检查依赖包:确认
minecraft-server-util等相关包已正确安装,执行npm list minecraft-server-util验证 - 完善错误处理:修改代码打印具体错误信息,定位失败原因:
catch (error) { console.error('状态查询失败:', error); await interaction.reply(`错误详情:${error.message}`); } - 确认权限与注册:确保机器人拥有发送消息的权限,且App Commands已正确注册到目标服务器
- 设置超时参数:如果服务器响应缓慢,添加超时配置避免无响应:
const status = await mc.status(ip, { timeout: 5000 }); // 设置5秒超时
四、其他潜在原因
- 防火墙/代理拦截:检查运行命令或App的主机是否有防火墙拦截出站请求,或代理配置导致无法连接服务器
- MC服务器设置:确认服务器
server.properties中已开启enable-query=true,否则第三方工具无法获取状态信息
内容的提问来源于stack exchange,提问作者Kret873
相关产品推荐
相关产品推荐

