频道权限覆盖

Channel permissionOverwrites

出于某种原因,每当我在创建频道时为@everyone 分配权限覆盖时,它实际上并没有进行覆盖,我 select.

    if (!interaction.isButton()) return
    if (interaction.customId === 'ticketcreate') 
            {
                
                const ticketCreation = await interaction.guild.channels.create(interaction.user.username + ' ticket', { //Create ticket channel
                    type: 'GUILD_TEXT',
                    permissionOverwrites: [
                        {
                            id: interaction.user.id,
                            allow: ["VIEW_CHANNEL", "READ_MESSAGE_HISTORY", "SEND_MESSAGES"]
                        },
                        {
                            id: interaction.guild.roles.everyone,
                            deny: ["VIEW_CHANNEL", "READ_MESSAGE_HISTORY"]
                        }
                    ],
                })

所以这应该使公会中的每个人都无法查看频道或阅读消息历史记录,并使与按钮交互的人查看频道和阅读消息历史记录。但是它不会这样做。 (此按钮会创建一个支持票,出于显而易见的原因,我不希望每个人都能看到支持票)

您正在为权限传递字符串...我相信文档说这应该是位域标志...这是规范:

https://discord.js.org/#/docs/discord.js/stable/class/GuildChannelManager?scrollTo=create

并且列出的示例也显示了代码示例:

deny: [Permissions.FLAGS.VIEW_CHANNEL],

来自 discordjs 的权限信息: https://discordjs.guide/popular-topics/permissions.html#terminology

向下滚动到基本权限 #设置角色权限

guild.channels.create('new-channel', {
    type: 'GUILD_TEXT',
    permissionOverwrites: [
        {
            id: message.guild.id,
            deny: [Permissions.FLAGS.VIEW_CHANNEL],
        },
        {
            id: message.author.id,
            allow: [Permissions.FLAGS.VIEW_CHANNEL],
        },
    ],
});```