【问题标题】:Discord.JS roleCreate eventDiscord.JS 角色创建事件
【发布时间】:2020-10-25 22:29:13
【问题描述】:
client.on("roleCreate", role => {
  const channel = role.guild.channels.cache.find(ch => ch.name === "welcome");
  const embed = new Discord.MessageEmbed()
    .setColor("DEFAULT")
    .setDescription(`A new role has been created\nPermissions List: ${role.permissions}`)
    channel.send(embed)
});

我正在尝试来自 Discord.JS 文档的不同事件,但是,当我遇到 roleCreate 事件时,我尝试了它,当我创建一个新角色时,它可以工作。但是对于role.permissions;我不太清楚为什么会收到[object Object]。我怎么可能解决这个问题?

Discord.JS:v12.2.0

【问题讨论】:

    标签: javascript node.js discord discord.js


    【解决方案1】:

    那是因为role.permissions 是一个对象:

    https://discord.js.org/#/docs/main/stable/class/Permissions

    结合join()使用.toArray()方法:

    client.on("roleCreate", role => {
      const channel = role.guild.channels.cache.find(ch => ch.name === "welcome");
      const perms = role.permissions.toArray().join("\n");
      const embed = new Discord.MessageEmbed()
        .setColor("DEFAULT")
        .setDescription(`A new role has been created\nPermissions List:\n${perms}`)
        channel.send(embed)
    });
    

    CREATE_INSTANT_INVITE 获取它到Create Instant Invite

    const perms = role.permissions.toArray().map(e => {
       const words = e.split("_").map(x => x[0] + x.slice(1).toLowerCase());
       return words.join(" ");
    }).join("\n");
    

    【讨论】:

    • 另一个问题,所以如果我得到[object Object],我应该始终使用toArray() 方法与join() 结合使用?
    • 不,这取决于情况,总体而言,您应该尝试以某种方式将对象转换为字符串,可能是属性,可能是方法,一切都取决于。
    • 它现在可以工作了,但是,一切都在 Caps 上。最后一个问题,我怎样才能使它而不是CREATE_INSTANT_INVITE 它将是Create Instant Invite?到目前为止,我有这个if(role.permissions === "CREATE_INSTANT_INVITE") role.permissions("Create Instant Invite"),但它仍然全部大写。
    • 首先role.permissions === "CREATE_INSTANT_INVITE" 永远不会工作,看看我发送的链接。它是一个对象,为什么要将它与字符串进行比较?如果你想检查它是否有特定的权限使用role.permissions.has(permission_name),你可能不应该尝试改变标志的语法,如果你想以那种格式显示它,你需要映射每个。编辑了我的帖子以展示如何正式化
    • 权限名称之间的_ 现已消失。但是,所有字母仍然大写。我尝试将.toUpperCase 更改为.toLowerCase,但唯一改变的字母大小是前面。所以是cREATE iNSTANT iNVITE
    猜你喜欢
    • 1970-01-01
    • 2021-06-24
    • 2019-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 2020-07-30
    • 1970-01-01
    相关资源
    最近更新 更多