Discord.js V12如何锁定某个角色的所有通道?

时间:2020-07-09 13:27:01

标签: javascript locking discord.js channels

我想将服务器中的所有通道锁定为某个角色(发送消息: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 :(得分:0)

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');
})