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

为什么我用Discord.js开发的机器人前缀N!无法正常生效?

问题原因排查

  • 事件名称已弃用:discord.js v13及以上版本已经移除原message事件,替换为messageCreate事件,你当前注册的message事件不会被触发,需要修改事件监听逻辑。
  • 缺少必要的网关意图:你当前配置的intents仅包含DIRECT_MESSAGES和GUILDS,要接收服务器内的消息内容,必须额外添加GUILD_MESSAGES意图;如果需要读取消息内容做前缀匹配,还要额外添加MESSAGE_CONTENT意图。
  • 未开启特权意图:Discord要求所有需要读取用户消息内容的机器人,必须在Discord开发者后台的Bot设置页面手动开启Message Content Intent,否则机器人无法获取用户发送的消息文本,前缀判断逻辑会直接失效。
  • 权限不足:检查机器人在对应服务器/频道是否拥有发送消息的权限,是否被频道角色或权限设置禁言。

修复后参考代码

const Discord = require("discord.js");
const config = require("./config.json");
const client = new Discord.Client({ 
  intents: ["GUILDS", "GUILD_MESSAGES", "DIRECT_MESSAGES", "MESSAGE_CONTENT"]
});

const prefix = "N!";

// 替换为messageCreate事件
client.on("messageCreate", function(message) {
    if (message.author.bot) return;
    if (!message.content.startsWith(prefix)) return;

    const commandBody = message.content.slice(prefix.length);
    const args = commandBody.split(' ');
    const command = args.shift().toLowerCase();


    if (command === "ping") {
        const timeTaken = Date.now() - message.createdTimestamp;
        message.reply(`Pong! This message had a latency of ${timeTaken}ms.`);
    }
});
client.login(config.BOT_TOKEN);

内容的提问来源于stack exchange,提问作者Somebody

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:27:03