如何更改所有通道发送消息的用户权限?

时间:2020-07-30 18:03:43

标签: discord discord.js

如何更改所有通道发送消息的用户权限? 我想阻止用户通过discord.js向所有频道发送消息。

我在代码中尝试了这个

let member = message.mentions.members.first()
member.updateOverwrite(client.guild.roles.member, { SEND_MESSAGES: false });

1 个答案:

答案 0 :(得分:0)

您可以遍历特定行业协会中的渠道,然后修改特定用户的权限。

client.on('message', message => {
  if (message.mentions.members.array().length === 0) return message.reply('No user was mentioned.');

  message.guild.channels.cache.each(channel => {
    channel.overwritePermissions([{
      id: message.mentions.members.first().id, // user ID
      deny: 'SEND_MESSAGES'
    }]).catch(err => console.error(err));
  });
});

如果您只想编辑某些频道的权限,则可以使用以下方法:

client.on('message', message => {
  if (message.mentions.members.array().length === 0) return message.reply('No user was mentioned.');

  [/* channel IDs */].forEach(channel => {
    message.guild.channels.cache.get(channel).overwritePermissions([{
        id: message.mentions.members.first().id, // user ID
        deny: 'SEND_MESSAGES'
      }]).catch(err => console.error(err));
    });
  });
});

如果要从所有渠道中排除某些渠道,可以使用以下方法:

client.on('message', message => {
  if (message.mentions.members.array().length === 0) return message.reply('No user was mentioned.');

  message.guild.channels.cache.each(channel => {
    if ([/* channel IDs */].includes(channel.id) return;

    channel.overwritePermissions([{
      id: message.mentions.members.first().id, // user ID
      deny: 'SEND_MESSAGES'
    }]).catch(err => console.error(err));
  });
});

参考: