首页 > 解决方案 > 有没有办法在不提及/ping他们的情况下向某人添加角色?[discord.js]

问题描述

标题差不多。每次我尝试使用此功能向某人添加角色时:

const member = message.author;
member.roles.add('732727208774205460');

我最终得到了这个 TypeError:

TypeError: Cannot read property 'add' of undefined

但是,如果我这样使用它:

const member = message.mentions.members.first();
member.roles.add('732727208774205460');

它工作得很好。问题是,只有当我添加角色的人被用户提及/ping通时才有效。我正在尝试为用户自己添加一个角色,用户不会 ping 任何人(主要用于审查)。有没有办法可以在不收到 TypeError 的情况下做到这一点?

标签: discord.js

解决方案


您收到错误是因为message.author.roles未定义,因此尝试使用.add()它会导致错误。

message.author类型为User,表示不和谐用户,并且不与任何特定服务器关联。

您正在寻找message.memberwhich has type GuildMember,它代表公会内的特定用户的个人资料(message.member只是message.author作为 aGuildMember而不是 a User)。它是GuildMember具有角色的类型。

解决方案:

const member = message.member;
member.roles.add('732727208774205460');

官方文档: User , GuildMember


推荐阅读