Discord.js v13机器人执行命令无响应,请求技术帮助
Discord.js v13机器人执行命令无输出的问题排查与修复
问题点分析
- 事件名称错误:Discord.js v13中消息创建事件的标准名称是
messageCreate(驼峰命名规则),你代码中写的是全小写的messagecreate,导致事件监听器完全无法触发。 - 模板字符串语法错误:回复消息时使用双引号包裹内容,无法解析
${message.author}变量,会直接输出原始字符串而非用户对象。 - 缺少前缀校验:未先判断消息是否以设定的前缀开头,非命令消息会触发不必要的字符串切割操作,可能导致
command变量异常。
修复后的完整代码
const Discord = require("discord.js"); const bot = new Discord.Client({ intents: ["GUILDS", "GUILD_MESSAGES"] }); const token = "MTAxNzgyMjQ1MjU1MTc5NDgxOA.GjO8F-.VWCMsDKV5_YdP1w6gnEME6Jucd7BN9OADesM4s"; const prefix = "lb!"; bot.on("ready", () => { console.log("Your bot is now online"); }); // 修复事件名称为驼峰格式的messageCreate bot.on("messageCreate", (message) => { if (message.author.bot) return; // 新增前缀校验,过滤非命令消息 if (!message.content.startsWith(prefix)) return; const args = message.content.slice(prefix.length).trim().split(/ +/g); // 改用toLowerCase统一命令大小写(比toLocaleLowerCase更适合命令场景) const command = args.shift().toLowerCase(); if (command === "hello") { // 改用反引号包裹模板字符串,正确解析变量 message.reply(`Hi ${message.author}`); } }); bot.login(token);
额外注意事项
请确保在Discord开发者门户的机器人设置页面中,已开启消息内容意图(Message Content Intent)——Discord.js v13需要该权限才能读取消息内容,否则即使代码修复完成,命令仍无法触发。
内容的提问来源于stack exchange,提问作者Syed Faizan Ali Kazmi
相关产品推荐
相关产品推荐

