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

Discord反应角色机器人报TypeError: Cannot read properties of undefined (reading 'guild')如何修复

问题根因

你触发报错的核心原因是index.js中调用指令执行方法时存在语法错误,导致reactionrole.js的execute函数接收到的第一个message参数为undefined,访问undefined的guild属性自然会抛出你遇到的类型错误。

修复步骤
  • 1 修复参数传递语法错误
    找到index.js中调用execute的代码行:
    client.commands.get("reactionrole").execute(message. args, Discord, client);
    
    将message和args之间的.改为参数分隔符,,修改后为:
    client.commands.get("reactionrole").execute(message, args, Discord, client);
    
  • 2 修复Discord.js v13适配错误
    v13版本已废弃message事件,替换为messageCreate,将index.js中的事件监听声明修改为:
    client.on("messageCreate", message => {
    
  • 3 修复客户端初始化参数错误
    你当前把intents和partials拆成了两个独立对象传给Client,不符合参数规范,同时需要补充反应事件对应的权限意图,修改初始化代码为:
    const client = new Discord.Client({ 
      intents: ["GUILDS", "GUILD_MESSAGES", "GUILD_MESSAGE_REACTIONS"], 
      partials: ["MESSAGE", "CHANNEL", "REACTION"] 
    })
    
  • 4 修复Embed构造语法错误
    找到reactionrole.js中构造Embed的代码,setTitle和setDescription之间缺失了点号,修改为:
    let embed = new Discord.MessageEmbed()
    .setColor("#e42643")
    .setTitle("Selection des matière")
    .setDescription("Choisis tes matières en cliquant sur la reaction qui correspond\n\n"
    
  • 5 可选优化:不要在execute函数内重复注册messageReactionAdd和messageReactionRemove事件,否则每次执行!reactionrole命令都会新增一次事件监听,导致后续重复执行加/删角色逻辑,建议将这两个事件监听移到index.js全局注册。

内容的提问来源于stack exchange,提问作者deoxys

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:45:04