在discord.js v14中创建频道时继承类别的权限

问题描述 投票:0回答:1

我正在尝试创建一个频道,默认情况下可以授予某些角色访问权限并阻止@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
            });

上面是我目前有效的代码,但它只是忽略了类别权限。如何使其与类别权限一起使用?

javascript node.js discord discord.js bots
1个回答
0
投票

您可以映射父类别的

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
});
© www.soinside.com 2019 - 2024. All rights reserved.