Discord.js v13 无法读取未定义的属性(读取 'roles')

Discord.js v13 Cannot read properties of undefined (reading 'roles')

我正在尝试创建一个命令,如果您说一个带有 use 参数的斜杠命令,那么它将为该用户提供角色。即使我知道该成员存在,我仍然收到此错误。

TypeError: Cannot read properties of undefined (reading 'roles')

我的代码:

const { commandName, options } = interaction;
const user = options.getUser('user');

if (commandName == 'givebetatester'){
     console.log(user);
     const role = interaction.guild.roles.cache.get('917609388154425374');
     interaction.reply('Success');

     user.member.roles.add(role);
}

我已经仔细检查过我有角色并且用户存在,但我不知道此时出了什么问题。任何帮助将不胜感激。

您只能从 GuildMember 转到 User,不能反过来。您正在尝试使用 user.member

从 User 转到 GuildMember

要么更改您的斜杠命令选项以接受成员而不是用户

或者确保您已启用 Guild Member's Intent 并获取具有用户 ID 的 GuildMember 对象:

// Async/Await
const member = await interaction.guild.members.fetch(user.id);

已修复!我从用户切换到可提及,如果有人试图输入角色以外的内容,这可能会中断,但它确实起作用了。

代码:

const { commandName, options } = interaction;
const user = options.getMentionable('user');

if (commandName == 'givebetatester'){
     const role = interaction.guild.roles.cache.get('917609388154425374');
     user.roles.add(role);

     interaction.reply('<a:ncheckmark:917609071195074600>');
}