Discord. js V12 Как я могу заблокировать все каналы для определенной роли? - PullRequest
0 голосов
/ 09 июля 2020

Я хочу заблокировать все каналы на сервере для определенной роли (Отправлять сообщения: false) Это мой текущий код, я получаю ошибку TypeError [INVALID_TYPE]: Supplied overwrites is not an Array or Collection of Permission Overwrites. Код:

client.on('message', async message => {
    if(message.content.startsWith(prefix + "modrek")) {
        let muteRole = message.guild.roles.cache.find(role => role.name == "Mute")
        const channels = message.guild.channels.cache.filter(ch => ch.type !== "category")
        
        message.guild.channels.forEach(ch => 
            {
            if(ch.type == "text")
              ch.overwritePermissions([
              {
                 id: muteRole.id,
                 deny: ['SEND_MESSAGES'],
              },
            ], 'Needed to change permissions');
            }) 
    
    }

})

Сообщите мне если кто-то может мне помочь: D

1 Ответ

0 голосов
/ 09 июля 2020

overwritePermissions заменит перезаписи разрешений в канале, что означает, что если канал имел предыдущие перезаписи разрешений, он заменит их все.

В этом случае ->

message.channel.overwritePermissions([
  {
     id: muteRole.id,
     deny: ['SEND_MESSAGES'],
  },
], 'Needed to change permissions');

createOverwrite перезаписывает разрешения для пользователя или роли в этом канале. (заменяет, если существует)

В этом ->

message.channel.createOverwrite(muteRole, {
            SEND_MESSAGES: false})
    }

Изменить разрешения для всех каналов ->

message.guild.channels.cache.forEach(ch => 
{
if(ch.type == "text")
  ch.overwritePermissions([
  {
     id: muteRole.id,
     deny: ['SEND_MESSAGES'],
  },
], 'Needed to change permissions');
}) 
...