【问题标题】:Create and give role in one command Discord.JS在一个命令中创建并赋予角色 Discord.JS
【发布时间】:2021-04-09 20:52:13
【问题描述】:

我正在创建一个 Discord 机器人,它根据在命令中输入的参数创建一个角色,然后将该角色分配给同一消息中提到的用户。角色创建得很好,但是我遇到了问题,然后将角色分配给消息的作者(我),更不用说消息中的多次提及了。我推断找不到该角色,因此无法将其分配给用户,但我不知道为什么找不到。

我正在使用

message.guild.roles.create({
    data: {
        name: roleName,
        color: 'BLUE'
    }
})
.catch(console.error);

(其中roleName定义为命令的第一个参数)创建角色,然后

let role = message.guild.roles.cache.find(role => role.name === roleName);

按名称搜索角色(我尝试将其打印到控制台,但返回为undefined)。

是否可以在一个命令中同时创建和赋予角色?

【问题讨论】:

    标签: javascript node.js discord.js


    【解决方案1】:

    首先,在您的情况下确实不需要使用find() 函数! 你可以简单地定义你新创建的角色对象:

    message.guild.roles.create({
    data: {
        name: roleName,
        color: 'BLUE'
    }
    }).catch(console.error).then(role => {
    // Our following code will be placed here
    })
    

    从那时起,为了将角色分配给消息中提到的所有成员,我们可以简单地使用 message.mentionsforEach() 函数来获取每个成员对象并将角色分配给它。

    message.mentions.members.forEach(member => {
            member.roles.add(role)
        })
    

    最后,你的代码应该是这样的:

    message.guild.roles.create({
            data: {
                name: roleName,
                color: 'BLUE'
            }
        }).catch(console.error).then(role => {
            message.mentions.members.forEach(member => {
                member.roles.add(role)
            })
        })
    

    【讨论】:

      猜你喜欢
      • 2020-10-07
      • 2021-11-18
      • 2021-04-12
      • 2022-01-10
      • 2018-06-10
      • 1970-01-01
      • 1970-01-01
      • 2021-06-24
      • 1970-01-01
      相关资源
      最近更新 更多