Discord Slash命令无法向游戏发消息且无报错求助
问题排查与解决方案
你的Discord机器人无法将斜杠命令文本发送至Minecraft服务器且无报错,可从以下方向逐一排查:
1. 确认Minecraft Bot是否成功连接服务器
当前代码未监听Minecraft bot的连接状态,大概率bot并未成功登录服务器,导致bot.chat()调用静默失败。添加以下代码监听连接事件,定位连接问题:
// 在创建bot后添加 bot.on('spawn', () => { console.log('✅Minecraft bot已进入服务器'); }); bot.on('error', (err) => { console.error('❌Minecraft bot连接出错:', err); }); bot.on('end', () => { console.log('❌Minecraft bot断开连接'); });
同时检查OPTIONS配置:
username字段不能为空,需填写你的微软账号邮箱;- 若微软认证失败,可临时改用
auth: 'offline'测试离线模式(仅适用于允许离线登录的服务器)。
2. 确保Discord斜杠命令正确生效
全局斜杠命令同步可能需要1小时,建议先改用服务器级命令快速验证,替换client.application.commands.create(ping)为:
// 替换为你的Discord服务器ID const GUILD_ID = '你的服务器ID'; client.application.commands.create(ping, GUILD_ID);
服务器级命令通常几分钟内即可生效,能快速确认命令是否被正确捕获。
3. 避免在Bot未连接时调用chat
触发斜杠命令时,Minecraft bot可能还未完成连接,此时调用bot.chat()不会产生任何效果。在命令处理逻辑中添加连接状态判断:
client.on('interactionCreate', (interaction) => { if(!interaction.isChatInputCommand()) return; if(interaction.command.name==='ping') { const message = interaction.options.getString('message') // 检查bot是否处于连接状态 if (!bot._client?.connected) { return interaction.reply('❌Minecraft bot未连接,无法发送消息'); } bot.chat(message) interaction.reply('✅消息已发送') } })
4. 排查服务器限制
0b0t.org作为无政府服务器,可能存在聊天冷却、机器人检测或验证机制:
- 添加监听查看服务器聊天,确认bot是否能接收消息、是否有验证提示:
bot.on('chat', (username, message) => { console.log(`[${username}] ${message}`); });
若服务器要求验证(如输入验证码),需先让bot完成验证流程才能发送消息。
内容的提问来源于stack exchange,提问作者jake
相关产品推荐
相关产品推荐

