【问题标题】:How do i give roles to members on discord.js in V13?如何在 V13 中为 discord.js 上的成员分配角色?
【发布时间】: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) 来检查变量的类型。另外您当前使用的确切版本是什么?

标签: typescript discord discord.js


【解决方案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

【讨论】:

    猜你喜欢
    • 2022-10-01
    • 2021-12-14
    • 2021-05-10
    • 2022-01-13
    • 2020-11-16
    • 2021-10-14
    • 2022-10-23
    • 2021-10-16
    • 2021-07-04
    相关资源
    最近更新 更多