使用discord.js开发的Discord Bot无报错却不响应命令该如何排查?
问题原因及修复方案
现有代码的3个核心错误:
- 事件名已废弃:discord.js v13及以上版本移除了
message事件,替换为messageCreate事件,原事件监听完全不会触发,这是调试日志无输出的核心原因。 - 变量名不匹配:事件回调参数命名为
Message,但判断逻辑里调用的是未定义的msg变量,即使事件触发也会抛出引用错误。 - 意图配置不全:仅配置了值为8的
Guilds意图,接收服务器消息内容还需要补充GuildMessages、MessageContent两个意图;同时你需要登录Discord开发者平台,进入对应Bot的设置页,手动开启Message Content Intent权限开关,否则代码层面加了意图也无法获取消息内容。
修正后的代码:
const Discord = require("discord.js") const fetch = require("node-fetch") // 配置所需的全部意图 const client = new Discord.Client({ intents: [ Discord.GatewayIntentBits.Guilds, Discord.GatewayIntentBits.GuildMessages, Discord.GatewayIntentBits.MessageContent ] }) client.on("ready", () => { console.log(`Logged in as ${client.user.tag}!`) }) // 替换为正确的事件名,参数名和后续调用保持一致 client.on("messageCreate", msg => { if (msg.content === "Test") msg.reply("Success") }) client.login(process.env['TOKEN'])
内容的提问来源于stack exchange,提问作者Joshua De Clerck
相关产品推荐
相关产品推荐

