如何在 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 [关闭]

如何在嵌入 discord.js V13 时使用下载的图像

Discord.js V13:如何编辑交互的消息对象?

如何将消息发送到指定的频道 - Discord.js v13 TypeScript

如何将斜杠命令隐藏到特定用户或频道 Discord.js v13

我不知道 discord.js v13 按钮