我目前正在为我的机器人开发一个静音功能,但到目前为止,它只为发送消息的通道设置了权限。
我尝试使用 guild.channels 属性,但是最终却一无所获,尽管我确定我只是在错误地使用它。
schema "messages" do
belongs_to :user, User
end
我希望它为所有通道设置SEND_MESSAGES权限,但仅对我发送命令的通道设置。
答案 0 :(得分:0)
Iterate over公会中的文本通道。
const channels = message.guild.channels.filter(c => c.type === 'text');
for (let [, channel] of channels) {
// ^
// Ignoring the key; we don't need it
}
为我们提供for...of
loop时为什么使用forEach()
?后者只是简单地调用承诺并继续前进,而不能确保其完成。因此,如果发生错误,即使附加了catch()
方法也不会捕获到该错误。
使用GuildChannel.overwritePermissions()
覆盖每个频道的权限(注意:此方法将替换权限覆盖master分支)。
channel.overwritePermissions(msg.mentions.users.first(), { SEND_MESSAGES: false })
.catch(console.error); // Catch and log errors
放在一起...
const channels = message.guild.channels;
for (let [, channel] of channels) {
channel.overwritePermissions(msg.mentions.users.first(), { SEND_MESSAGES: false })
.catch(console.error);
}