Discord Bot运行报错ReferenceError: message is not defined问题咨询
错误原因
- 事件名不兼容:discord.js v13及以上版本已正式弃用旧版
message事件,新版监听消息触发的事件名为messageCreate,使用旧事件名无法正常接收消息回调。 - 变量名不匹配:你在事件回调中把接收到的消息对象参数命名为
messageCreate,但后续所有逻辑均调用未声明的message变量,直接触发变量未定义的引用错误。 - 存在拼写错误:代码中
prefix.lenght拼写错误,正确拼写为prefix.length,即使解决前两个问题,运行到此处仍会触发新的报错。
修复方案
替换事件名、统一变量名、修正拼写错误即可,完整可运行代码如下:
const { Client, Intents } = require('discord.js'); const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] }); const prefix = '!'; client.on("ready", () => { console.log("Im Ready!"); }); // 修正事件名为messageCreate,参数名统一为message client.on('messageCreate', message => { if (!message.content.startsWith(prefix) || message.author.bot) return; // 修正length拼写错误 const args = message.content.slice(prefix.length).split(/ +/); const command = args.shift().toLowerCase(); if (command === 'ping') { message.channel.send('pong'); } }); client.login("你的Bot Token");
内容的提问来源于stack exchange,提问作者DiegoM
相关产品推荐
相关产品推荐

