Discord.js客户端无法接收交互(斜杠命令)事件求助
Discord.js 未触发interactionCreate事件的解决办法
核心问题
你创建Client实例时没有指定必要的网关意图(Intents),Discord.js v14及以上版本要求必须显式声明所需意图,否则机器人无法接收交互类事件(包括斜杠命令)。
修复步骤
导入IntentsBitField
在discord.js的导入语句中添加IntentsBitField:const { Client, IntentsBitField } = require("discord.js");创建Client时传入意图配置
实例化Client时,传入包含Guilds意图的配置对象(斜杠命令属于服务器交互,必须依赖此意图):const client = new Client({ intents: [ IntentsBitField.Flags.Guilds ] });
额外检查项
- 确认Discord开发者门户中,你的机器人已启用必要的网关权限(
Guilds意图不属于特权权限,无需额外开启,但如果后续需要其他事件,可能需要对应配置) - 验证
hook_commands函数中注册的斜杠命令,applicationId和guildId(服务器命令)配置正确,且命令已成功同步到Discord服务器 - 确保机器人在目标服务器中拥有
UseApplicationCommands权限
修改后的完整代码
require("dotenv").config(); const { Client, IntentsBitField } = require("discord.js"); const axios = require("axios"); const token = process.env.BOT_TOKEN; const client = new Client({ intents: [ IntentsBitField.Flags.Guilds ] }); client.on("ready", () => { console.log(`Logged in as ${client.user.tag}`); hook_commands(); }); client.on("interactionCreate", async (interaction) => { console.log("interaction created"); }); client.login(token); function hook_commands() { //redacted, it works fine }
内容的提问来源于stack exchange,提问作者user8322140
相关产品推荐
相关产品推荐

