从 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);
基本上,我需要从用户当前所在的文本频道获取权限。我已经获得了频道名称,如果我需要获取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);