Discord.JS斜杠命令提示‘应用未响应’,控制台无报错
问题分析与修复方案
核心问题
- 错误绑定
message事件:斜杠命令的处理逻辑完全不需要监听message事件——你在execute函数里加的这个监听器根本不会触发(当前客户端只开了Guilds意图,没有消息相关权限,且斜杠命令的触发流程和普通消息完全无关),这直接导致交互因超时没收到回复,弹出"Application did not respond"提示。 - 获取发起者的方式错误:斜杠命令的发起者信息存在
interaction.user里,不需要通过message.author获取。 - 重复绑定隐患:每次执行命令都会新增一个
message监听器,后续会导致逻辑混乱。
修复后的代码
const { SlashCommandBuilder } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() .setName('cleanthedecks') .setDescription('Tells a user to clean the decks'), async execute(interaction) { // 直接通过interaction.user拿到命令发起者 await interaction.reply(`${interaction.user} Get the decks cleaned immediately with /deckscrub`); console.log(interaction.user); } }
额外提醒
- 命令模块里不需要重新创建
Client实例,Discord.js的命令处理器会自动传递所需对象,你当前代码里的client实例完全多余,甚至可能引发冲突。 - 如果要处理普通消息,需要给客户端开启
GatewayIntentBits.MessageContent和GatewayIntentBits.GuildMessages权限意图,但斜杠命令不需要这些。
内容的提问来源于stack exchange,提问作者MagicRecon
相关产品推荐
相关产品推荐

