Discord Bot获取消息发送者用户名报错:ReferenceError: message未定义
问题分析与解决
这个错误和Intents、Partials完全无关——ReferenceError: message is not defined就是当前代码的作用域里找不到message变量,直接从变量作用域入手修复即可:
常见原因和修复方案
- 你大概率在非消息事件的回调里写了这段代码,比如直接在客户端初始化后执行,或者在不接收
message参数的函数里调用。
正确用法示例(在messageCreate事件回调内使用):client.on('messageCreate', (message) => { // 此处message是事件传入的参数,作用域内已存在 const embed = new Discord.EmbedBuilder() .setTitle(`Congratulations, ${message.author.username}`); message.channel.send({ embeds: [embed] }); }); - 如果是在自定义函数里调用这段代码,需要手动把
message变量传入函数:function sendCongratsEmbed(message) { const embed = new Discord.EmbedBuilder() .setTitle(`Congratulations, ${message.author.username}`); message.channel.send({ embeds: [embed] }); } // 在messageCreate事件中调用该函数 client.on('messageCreate', (message) => { sendCongratsEmbed(message); }); - 检查变量名拼写,避免把
message误写成其他单词(比如msg),导致作用域内找不到对应变量。
补充说明
Intents用于控制Discord机器人能接收哪些事件数据(比如是否允许读取消息内容),Partials用于处理未完全加载的对象(比如仅缓存ID的用户)。这两者只会导致“无法获取author”“内容为空”这类数据访问类错误,不会触发message is not defined这种变量未找到的报错。
内容的提问来源于stack exchange,提问作者impeR
相关产品推荐
相关产品推荐

