Discord.js机器人离线命令故障求助:执行后显示‘应用未响应’
问题排查与修复
你的离线命令失效并出现“应用未响应”提示,核心问题有3个:
- 错误使用
message变量:当前是InteractionCreate事件,不存在message对象,应该用interaction.user验证所有者ID,用交互相关方法发送消息。 - 未正确响应Discord交互:Slash命令要求必须在3秒内调用
interaction.reply()或interaction.deferReply(),否则会触发“应用未响应”提示。 - 退出时机不当:直接调用
process.exit()可能导致消息还没发送完成就终止进程,需确保交互响应完成后再销毁客户端并退出。
修复后的代码:
client.on('InteractionCreate', async (interaction) => { // 验证命令名和所有者ID if (interaction.commandName === 'bot-going-offline' && interaction.user.id === owner_ID) { const embed = new EmbedBuilder() .setTitle("Gababes bot 即将离线") .setDescription("Gababes bot 现已离线,所有命令将无法使用") .setColor("DarkRed"); // 先响应交互,避免“未响应”提示 await interaction.reply({ embeds: [embed] }); // 等待消息发送完成后,销毁客户端再退出进程 setTimeout(() => { client.destroy(); process.exit(); }, 1000); } });
额外说明:
- 使用
async/await确保交互响应完成,也可以用.then()链式调用,但async/await更易读。 - 添加1秒延迟是为了确保Discord完全接收并显示消息,避免客户端提前销毁导致消息发送失败。
- 确保
owner_ID变量已正确定义为你的Discord用户ID(字符串格式)。
内容的提问来源于stack exchange,提问作者Cariesthuis
相关产品推荐
相关产品推荐

