首页 > 解决方案 > discord.js 将频道权限设置为“/”(中性)

问题描述

我希望将文本通道上的用户权限设置为中性/空/“/”,但overwritePermissions()目前似乎只使用允许和拒绝,我看到的过去帖子显示将值设置为空,但允许/拒绝似乎阻止了这种情况。

我在这样的文本频道上设置权限:

member.guild.channels.cache.array().forEach((channel) => {
 channel.overwritePermissions([
  {
   id: member,
   deny: ['VIEW_CHANNEL'],
  },
 ]);
});

并希望有效地撤消此操作,更改 ['VIEW_CHANNEL'] 权限以允许覆盖服务器中的其他权限,并且不适用于我的情况。

overwritePermissions()文件

标签: javascriptnode.jsdiscord.js

解决方案


我相信您正在寻找的是Channel#updateOverwrites(),除了具有不同的功能之外overwritePermissions(),还具有不同的格式。

overwritePermissions覆盖频道中的所有权限(如其名称所示)。所以即使你只想改变一件事,overwritePermissions也会带来一切。值得庆幸的是,我们也有updateOverwrites. 此方法只会更改一个成员/角色的权限。

以下是您可以使用它的方法:

// as a note, `forEach()` automatically coverts the collection to an array,
// so no need for the `array()` function
member.guild.channels.cache.forEach((channel) => {
 channel.updateOverwrite(member, { // update permissions only for the member
  VIEW_CHANNEL: null, // set view_channel to default
 });
});

推荐阅读