DiscordJS为用户添加角色报错:Cannot read properties of undefined (reading 'add')
DiscordJS 添加角色报错解决方法
报错原因:你调用的
interaction.user是Discord.js的User对象,这个全局用户对象不包含服务器角色相关属性,所以roles会是undefined,调用add就触发报错。角色是和服务器(Guild)绑定的,必须用GuildMember对象才能操作角色。解决办法:
- 直接用交互对象里的成员对象(大部分场景适用)
服务器内的交互(斜杠命令、按钮、菜单等)都会自带interaction.member,这就是当前用户的GuildMember实例,直接调用角色添加方法:interaction.member.roles.add('1081869257043869767') - 手动获取服务器成员对象(特殊场景)
如果interaction.member无法使用,先通过服务器ID获取服务器,再获取对应成员:// 替换为你的目标服务器ID const targetGuild = interaction.client.guilds.cache.get('你的服务器ID'); const targetMember = targetGuild.members.cache.get(interaction.user.id); targetMember.roles.add('1081869257043869767');
- 直接用交互对象里的成员对象(大部分场景适用)
额外注意:
- 确保机器人拥有「管理角色」的服务器权限
- 机器人自身的角色位置必须高于你要添加的角色,否则会触发权限不足的错误
内容的提问来源于stack exchange,提问作者cxiqlne
相关产品推荐
相关产品推荐

