有没有办法在不提及/ping他们的情况下向某人添加角色? [discord.js]
Posted
技术标签:
【中文标题】有没有办法在不提及/ping他们的情况下向某人添加角色? [discord.js]【英文标题】:Is there a way to add a role to someone without mentioning/pinging them? [discord.js] 【发布时间】:2020-11-04 10:27:41 【问题描述】:标题差不多。每次我尝试使用此功能向某人添加角色时:
const member = message.author;
member.roles.add('732727208774205460');
我最终得到了这个类型错误:
TypeError: Cannot read property 'add' of undefined
但是,如果我这样使用它:
const member = message.mentions.members.first();
member.roles.add('732727208774205460');
它工作得很好。问题是,只有当我添加角色的人被用户提及/ping通时才有效。我正在尝试向用户 self 添加一个角色,用户不会 ping 任何人(主要用于审查)。有没有办法在不出现 TypeError 的情况下做到这一点?
【问题讨论】:
【参考方案1】:您收到错误是因为 message.author.roles
未定义,因此尝试在其上使用 .add()
会导致错误。
message.author
的类型为User
,代表不和谐用户,与任何特定服务器无关。
您正在寻找 message.member
,它的类型为 GuildMember
,它表示公会内部特定用户的个人资料(message.member
只是 message.author
,但作为 GuildMember
而不是 User
)。具有角色的是 GuildMember
类型。
解决方案:
const member = message.member;
member.roles.add('732727208774205460');
官方文档: User, GuildMember
【讨论】:
以上是关于有没有办法在不提及/ping他们的情况下向某人添加角色? [discord.js]的主要内容,如果未能解决你的问题,请参考以下文章