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

Discord.js消息反应添加角色报错:TypeError读取getMember未定义

解决Discord.js消息反应添加角色的报错问题

错误根源

你代码里的reaction.options是不存在的属性,这就是触发TypeError: Cannot read properties of undefined (reading 'getMember')的原因。Discord.js的MessageReaction对象没有options这个属性,自然没法调用它下面的getMember和getRole方法。

修正后的完整代码

const { Client, GatewayIntentBits, Partials } = require('discord.js');
const { token } = require('./config.json');
const client = new Client({
    intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildMessageReactions],
    partials: [Partials.Message, Partials.Channel, Partials.Reaction],
});

client.once('ready', () => {
    console.log("Готов!");
});

client.on('messageReactionAdd', async (reaction, user) => {
    // 跳过机器人自己的反应,避免死循环
    if (user.bot) return;

    // 检查是否是目标频道
    if (reaction.message.channel.id !== '1030100801747701760') return;

    // 检查是否是目标表情
    if (reaction.emoji.name !== '😄') return;

    try {
        // 获取当前服务器对象
        const guild = reaction.message.guild;
        // 把全局用户对象转换成服务器成员对象(只有成员才能操作角色)
        const member = await guild.members.fetch(user.id);
        
        // 从服务器缓存里获取目标角色
        const role = guild.roles.cache.get('1030138804830478387');
        
        // 确认成员和角色都存在的话,添加角色
        if (member && role) {
            await member.roles.add(role);
            console.log(`已给用户 ${user.tag} 加上角色 ${role.name}`);
        } else {
            console.log('找不到目标成员或角色');
        }
    } catch (error) {
        console.error('添加角色时出错:', error);
    }
});

// 别忘了登录机器人
client.login(token);

关键修正说明

  • 替换错误的角色/成员获取方式:用reaction.message.guild拿到服务器对象,再通过guild.members.fetch()获取成员(全局用户对象没法直接操作角色),用guild.roles.cache.get()获取目标角色。
  • 增加错误捕获:用try/catch包裹角色操作逻辑,方便排查运行时的权限或不存在问题。
  • 跳过机器人反应:避免机器人对自己的消息反应触发逻辑,导致无效操作。
  • 异步操作处理:members.fetch()和roles.add()都是异步方法,必须用await等待执行完成。

额外注意事项

  • 确保机器人拥有管理角色的权限,并且机器人自身的角色位置要高于你要添加的目标角色,否则会有权限不足的报错。
  • 确认config.json里的token是正确的Discord机器人令牌。
  • 你原本配置的网关意图和Partials是正确的,不需要修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 05:05:19