You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建Discord频道时permissionOverwrites参数不生效问题咨询

问题原因及解决方案

核心触发原因

你遇到的问题90%以上是父分类权限自动同步机制导致的:

  • 你在创建语音频道时指定了parent: state.categories.raids参数,将频道归到指定分类下,discord.js在这种场景下默认会开启子频道与父分类的权限同步,你在permissionOverwrites中传入的自定义规则会直接被父分类的继承权限覆盖,因此不生效。
  • 你在频道创建完成后单独调用permissionOverwrites.edit修改权限,是在权限同步完成后执行的操作,不会被继承逻辑覆盖,因此可以正常生效。

次要排查点(可跳过)

  • 如果你使用的是discord.js v14及以上版本,需确认你传入的权限字符串(比如VIEW_CHANNEL)是否匹配版本要求的枚举值,不过你后续修改时用了相同的权限名生效,因此该问题可以排除。
  • 确认机器人账号本身拥有MANAGE_ROLES、MANAGE_CHANNELS权限,且机器人的角色等级高于@everyone角色,你后续修改操作可以生效也可以排除该问题。

修复方案

无需额外在回调中修改权限,只需要在创建频道的配置参数中新增lockPermissions: false,关闭父分类权限自动同步即可让你写入的permissionOverwrites规则生效,修改后的代码如下:

client.on('messageCreate', (message) => {
    let guild = message.guild;
    if(message.content === '.raid'){
        const ch = guild.channels.create(`${message.member.displayName}'s raid`, {
            type: 'GUILD_VOICE',
            parent: state.categories.raids,
            userLimit:50,
            // 新增这行,关闭父分类权限自动同步
            lockPermissions: false,
            permissionOverwrites: [
                {
                    id: state.roles.everyone,
                    deny: ['VIEW_CHANNEL'],
             },
         ],
        })
    }
})

内容的提问来源于stack exchange,提问作者Sylent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 19:06:03