如何在 V13 中为 discord.js 上的成员分配角色?
Posted
技术标签:
【中文标题】如何在 V13 中为 discord.js 上的成员分配角色?【英文标题】:How do i give roles to members on discord.js in V13? 【发布时间】:2021-10-28 09:44:54 【问题描述】:所以我正在制作一个不和谐的机器人,我希望能够为玩家添加和删除角色。 在 Discord.js V12 中这有效:
const role =
message.mentions.roles.first() ||
message.guild?.roles.cache.get(args[0]);
const member =
message.mentions.members?.first() ||
message.guild?.members.cache.find((m) => m.user.tag === args[0]) ||
message.mentions.roles.first();
await member?.roles.add(role?.id).catch((e) => console.log(e));
这在 V13 中不再有效:
Property 'roles' does not exist on type 'Role | GuildMember'.
Property 'roles' does not exist on type 'Role'.ts(2339)
有人知道我在谷歌上搜索了一天吗?
【问题讨论】:
这很令人困惑,因为根据文档,GuildMember 显然有一个roles
属性。但是为了测试它,你可以console.log(typeof member)
来检查变量的类型。另外您当前使用的确切版本是什么?
【参考方案1】:
这里
const member =message.mentions.members?.first() || message.guild?.members.cache.find((m) => m.user.tag === args[0]) ||
message.mentions.roles.first()
您允许它成为提及的角色。考虑到您将变量命名为member
,我猜您希望它仅是GuildMember
。删除将停止警告
const member =message.mentions.members?.first() || message.guild?.members.cache.find((m) => m.user.tag === args[0])
您也可以将其设为邮件作者的默认值
const member = message.mentions.members?.first() || message.guild?.members.cache.find((m) => m.user.tag === args[0]) ||
message.member
【讨论】:
以上是关于如何在 V13 中为 discord.js 上的成员分配角色?的主要内容,如果未能解决你的问题,请参考以下文章
如何将消息发送到指定的频道 - Discord.js v13 TypeScript