从 TextChannel 获取权限 - Discord.js

Grabbing the permissions from a TextChannel - Discord.js

基本上,我需要从用户当前所在的文本频道获取权限。我已经获得了频道名称,如果我需要获取ID,应该很容易做到。

const Discord = require("discord.js");

module.exports.run = async (client, message, args) => {
  let currentChannel = message.channel.name;
  let category = message.channel.parent;;
  message.guild.createChannel(currentChannel).then(mchannel => {
    mchannel.setParent(category).then(() => {
      message.channel.delete();
    });
  });
}

module.exports.help = {
    name: "a.cleanchannel"
}
// Need the channel permissions to overwrite the new channel's permissions with the old ones

预期的结果是该频道应该与旧频道具有相同的权限。

要直接回答您的问题,您可以使用 GuildChannel#permissionOverwrites 创建与旧频道具有相同权限的新频道。例如...

message.guild.createChannel(message.channel.name, {
  type: 'text',
  permissionOverwrites: message.channel.permissionOverwrites
});

但是,您似乎正在尝试克隆频道。为了帮助简化操作,Discord.js 内置了一个方法 - GuildChannel#clone()。你可以像这样使用它...

message.channel.clone(undefined, true, true) // Same name, same permissions, same topic 
  .then(async clone => {
    await clone.setParent(message.channel.parent);
    await clone.setPosition(message.channel.position);
    await message.channel.delete();

    console.log(`Cloned #${message.channel.name}`);
  })
  .catch(console.error);