You need to enable JavaScript to run this app. Discord.js创建频道时如何避免自动同步所属分类的权限
优惠活动
大模型
产品
解决方案
定价
更多

Discord.js创建频道时如何避免自动同步所属分类的权限

Discord.js创建子频道时取消父分类权限同步的解决方法

当前写法的问题有两个:

  1. 先创建绑定父分类的频道时没有指定自定义权限,触发了Discord默认的父分类权限同步逻辑
  2. 直接给channel.permissionOverwrites赋值是无效的,Discord.js不支持直接修改该属性,必须调用官方提供的方法修改权限

方案1:创建频道时直接指定权限(推荐)

创建频道时直接传入permissionOverwrites参数,此时频道不会自动同步父分类的权限,直接使用你指定的规则:

message.guild.channels
  .create('test', {
    type: 'text',
    parent: '868148689644957726',
    permissionOverwrites: [
      {
        type: 'member',
        id: message.member.id,
        allow: ['VIEW_CHANNEL'],
      },
      // 可在此追加其他角色/成员的权限规则
    ]
  })

方案2:频道创建完成后主动覆盖权限

如果需要先创建频道再修改权限,调用permissionOverwrites.set()方法即可,该操作会自动断开和父分类的权限同步:

message.guild.channels
  .create('test', {
    type: 'text',
    parent: '868148689644957726',
  })
  .then(async (channel) => {
    await channel.permissionOverwrites.set([
      {
        type: 'member',
        id: message.member.id,
        allow: ['VIEW_CHANNEL'],
      },
    ]);
  });

版本适配说明

如果你使用的是Discord.js v14及以上版本,需要调整频道类型参数:

  • 先从discord.js导入枚举:const { ChannelType } = require('discord.js')
  • 将创建参数中的type: 'text'修改为type: ChannelType.GuildText

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 12:24:03