如何更改所有通道发送消息的用户权限? 我想阻止用户通过discord.js向所有频道发送消息。
我在代码中尝试了这个
let member = message.mentions.members.first()
member.updateOverwrite(client.guild.roles.member, { SEND_MESSAGES: false });
答案 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));
});
});
参考: