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

Discord.js v13 如何将一个频道的权限设置为与另一频道完全一致

问题根因

discord.js v13 对权限覆盖相关的API做了不兼容升级:v12 中直接访问<channel>.permissionOverwrites即可拿到权限覆盖项的集合,可直接传入set()方法使用;但 v13 中permissionOverwrites本身是管理器实例,不是合法的参数类型,所以会抛出类型错误。

v13 兼容实现方案

你只需要从源频道的权限管理器中取出缓存的集合,再传入目标频道的set方法即可,最简写法如下:

// sourceChannel 为权限模板源频道,targetChannel 为要修改权限的目标频道
targetChannel.permissionOverwrites.set(sourceChannel.permissionOverwrites.cache)

如果需要更高的版本兼容性,也可以手动构造权限覆盖对象数组再传入:

const permissionOverwrites = sourceChannel.permissionOverwrites.cache.map(item => ({
  id: item.id,
  allow: item.allow,
  deny: item.deny,
  type: item.type
}))
targetChannel.permissionOverwrites.set(permissionOverwrites)
补充注意

v13 中所有资源管理器类(角色、成员、消息管理器等)都需要通过.cache属性访问内部存储的集合数据,这是v12升v13的通用变更规则,其他场景遇到同类报错也可以优先排查是否漏加.cache。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:27:03