Я хочу установить разрешения пользователя на текстовом канале на нейтральный / нулевой / "/", но overwritePermissions(), похоже, в настоящее время использует только разрешить и запретить, а в прошлом сообщении, которое я видел, было показано, что значение установлено равным нулю, но разрешение / запрет, похоже, предотвращает это.

Я устанавливаю разрешения для текстового канала следующим образом:

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

И хотел бы отменить это действие, изменив разрешение ['VIEW_CHANNEL'], чтобы разрешить переопределение других разрешений на сервере, и не работает в моем случае.

overwritePermissions() документация

0
Eric Schram 15 Сен 2020 в 13:38

1 ответ

Лучший ответ

Я считаю, что вы ищете {{X0} } который, помимо функции, отличной от функции 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
 });
});
0
Lioness100 12 Ноя 2020 в 12:24