You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.js客户端无法接收交互(斜杠命令)事件求助

Discord.js 未触发interactionCreate事件的解决办法

核心问题

你创建Client实例时没有指定必要的网关意图(Intents),Discord.js v14及以上版本要求必须显式声明所需意图,否则机器人无法接收交互类事件(包括斜杠命令)。

修复步骤

  1. 导入IntentsBitField
    在discord.js的导入语句中添加IntentsBitField:

    const { Client, IntentsBitField } = require("discord.js");
    
  2. 创建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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 05:14:56