【问题标题】:TypeError: Cannot read property 'add' of undefined, Discord.JSTypeError:无法读取未定义的属性“添加”,Discord.JS
【发布时间】:2025-11-15 05:15:01
【问题描述】:
client.on('message', message => {
  if (message.content.startsWith(prefix + 'sanitar')) {
    if (message.member.hasPermission('ADMINISTRATOR')) {
      const user = message.mentions.users.first();
      if (user != undefined) {
        user.GuildMemberRoleManager.add(635602511964667907);
        message.channel.send(`<:mebel:632608605635608578> | Пользователь ${user} был отправлен в дурку ебать!`);
      } else {
        message.channel.send('<:mebel:632608605635608578> | Пингани кого-то, идиот.');
        message.channel.send('<:debil:691052950998482955>');
      }
    } else {
      message.channel.send('<:mebel:632608605635608578> | У вас недостаточно прав для этого действия!');
    }
  }
});

我正在尝试为我的 discord.js 机器人创建一个 add-role 命令,但是当它到达 user.GuildMemberRoleManager.add(635602511964667907);

我明白了:

TypeError:无法读取未定义的属性“添加”。

我也尝试使用user.Addrole 函数,但我得到:

user.Addrole 不是函数。

也许 addrole 现在已经过时了,idk。我对此感到非常厌倦,所以有人可以帮我解决它吗...

【问题讨论】:

  • 我从未使用过 DiscordJS,但您在执行此行之前检查用户是否未定义,因此应该未定义的是 GuildMemberRoleManager 属性
  • 你是想创建一个新角色,还是想给公会里的人一个角色?此外,discord.js.org/#/docs/main/stable 上还有 Discord.js 的文档。

标签: javascript discord discord.js


【解决方案1】:

您需要使用roles 而不是GuildMemberRoleManager,因为roles 返回GuildMemberRoleManagerGuildMember

同样User 没有roles 只有GuildMember 有,所以你必须用const user = message.mentions.members.first(); 替换const user = message.mentions.users.first();

您还需要将角色 ID 作为字符串而不是数字传递。

user.roles.add('635602511964667907');

另外,你是对的,addRole() 不是一个函数,并且自 discord.js v12 以来已被弃用。

【讨论】:

  • 仍然存在 TypeError: cannot read property 'add' of undefined at user.roles.add('635602511964667907');