Discord.JS 角色创建事件

Posted

技术标签:

【中文标题】Discord.JS 角色创建事件【英文标题】:Discord.JS roleCreate event 【发布时间】: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

【问题讨论】:

【参考方案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

以上是关于Discord.JS 角色创建事件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 discord.js 创建角色

创建角色时角色覆盖 discord.js

当我尝试创建一个角色时,它给了我一个错误(discord.js)

Discord.js 创建一个角色并在之后立即获取它的 id

赋予角色的 Discord.js 命令

为 discord.js v12 创建一个自动角色