【问题标题】:How can a bot add roles to a user? (Discord.js)机器人如何向用户添加角色? (不和谐.js)
【发布时间】:2022-03-12 00:17:38
【问题描述】:

我有一个不和谐的机器人,我正在尝试为用户分配一个角色。通过一些搜索,我发现代码 let role = message.guild.roles.cache.get("[role_id]") message.author.roles.add(role) 应该可以工作。

问题是 message.author.roles 不存在。 discord.js v13 有没有新的方法可以做到这一点,还是我错过了什么?

【问题讨论】:

标签: discord.js


【解决方案1】:

根据 discord.js 文档,Message#author 是一个 User 对象,它没有 .roles 属性。你想要的是Message#member,它是一个GuildMember,并且有你想要的属性来赋予和删除角色。

试一试:

let role = message.guild.roles.cache.get("[role_id]")
message.member.roles.add(role)

【讨论】:

    【解决方案2】:

    我用了另一种方法,效果和这个一样好,试试看

    let role = message.guild.roles.cache.find((role) => role.name === "[role name here]")
    message.member.roles.add(role)
    

    【讨论】:

      【解决方案3】:
      const mention = (await message.mentions.members.first()) || message.guild.members.cache.get(args[0]) || message.guild.members.cache.find((r) => r.user.username.toLowerCase().includes() === args.join(" ").toLocaleLowerCase()) || message.guild.members.cache.find((r) => r.displayName.toLowerCase().includes() === args.join(" ").toLocaleLowerCase()); // get member on mention
      const role = message.mentions.roles.first(); // get role on mention
      await mention.roles.add(role)
      

      {prefix} {command} {mention a user} {mention a role}

      别忘了,这是在异步函数中

      【讨论】:

        猜你喜欢
        • 2022-09-27
        • 2021-04-23
        • 2020-11-08
        • 2022-12-03
        • 2021-01-15
        • 2021-01-22
        • 2019-02-02
        • 2020-12-15
        • 1970-01-01
        相关资源
        最近更新 更多