我正在尝试创建一个频道,默认情况下可以授予某些角色访问权限并阻止@everyone,但我也希望它能够与类别一起使用,例如允许其他角色
let specificOverwrites = [
...members,
{
id: creatorRoleId,
allow: [PermissionFlagsBits.ViewChannel]
},
{
id: interaction.guild.roles.everyone.id,
deny: [PermissionFlagsBits.ViewChannel]
}
];
// Use specificOverwrites during channel creation
const channel = await interaction.guild.channels.create({
name: allianceNameInput,
type: ChannelType.GuildText,
parent: alliancesCategory.id,
permissionOverwrites: specificOverwrites
});
上面是我目前有效的代码,但它只是忽略了类别权限。如何使其与类别权限一起使用?
您可以映射父类别的
permissionOverwrites
并将映射的权限添加到 specificOverwrites
数组中。
let specificOverwrites = [
...members,
{
id: creatorRoleId,
allow: [PermissionFlagsBits.ViewChannel]
},
{
id: interaction.guild.roles.everyone.id,
deny: [PermissionFlagsBits.ViewChannel]
},
...alliancesCategory.permissionOverwrites.cache.map((p) => {
return {
id: p.id,
allow: p.allow.toArray(),
deny: p.deny.toArray(),
};
}),
];
// Use specificOverwrites during channel creation
const channel = await interaction.guild.channels.create({
name: allianceNameInput,
type: ChannelType.GuildText,
parent: alliancesCategory.id,
permissionOverwrites: specificOverwrites
});