You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 12:05:17