Discord.js机器人在线但无法响应/ping、/beep命令问题
解决Discord.js机器人不响应/ping、/beep命令的问题
你的机器人无响应的核心原因有两点:
1. 未配置必要的消息读取权限与意图
Discord.js v14+需要显式声明GatewayIntentBits.MessageContent和GatewayIntentBits.GuildMessages意图,同时要在Discord开发者门户开启消息内容特权,否则机器人无法读取频道内的消息内容。
2. 使用了已废弃的事件监听
message事件在Discord.js v13及以上版本已被废弃,需替换为messageCreate(或Events.MessageCreate枚举)事件。
修正后的代码
const { Client, Events, GatewayIntentBits } = require("discord.js"); const dotenv = require("dotenv"); dotenv.config(); // 补充所需意图 const client = new Client({ intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent ] }); client.once(Events.ClientReady, (c) => { console.log(`Ready! Logged in as ${c.user.tag}`); client.user.setActivity("testing"); }); // 使用messageCreate事件监听消息 client.on(Events.MessageCreate, (message) => { // 忽略机器人自身发送的消息,避免触发循环 if (message.author.bot) return; if (message.content === "/ping") { message.channel.send("Pong."); } else if (message.content.startsWith("/beep")) { message.channel.send("Boop."); } }); client.login(process.env.TOKEN);
关键配置步骤
进入Discord开发者门户,找到你的机器人应用:
- 切换到Bot标签页
- 在“Privileged Gateway Intents”区域,开启Message Content Intent
完成代码修改和上述配置后,重启机器人,即可正常响应/ping、/beep命令。
内容的提问来源于stack exchange,提问作者maboukasm
相关产品推荐
相关产品推荐

