better perms check for create mute

This commit is contained in:
Erik 2022-09-06 13:10:27 +03:00
parent 46c2bf689c
commit ac30824106
Signed by: Navy.gif
GPG Key ID: 811EC0CD80E7E5FB

View File

@ -133,9 +133,15 @@ class MuteSetting extends Setting {
const textIssues = issues.filter((i) => i.type === 'GUILD_TEXT');
const voiceIssues = issues.filter((i) => i.type === 'GUILD_VOICE');
const permissionIssues = issues.filter((i) => i.type === 'permission');
const missingPerms = [
...new Set(permissionIssues.reduce((acc, curr) => {
acc.push(...curr.missing);
return acc;
}, []))
];
if (textIssues.length) embed.fields.push(addField(textIssues, 'text'));
if (voiceIssues.length) embed.fields.push(addField(voiceIssues, 'voice'));
if (permissionIssues.length) embed.fields.push({ name: 'Missing `ManageRoles`', value: permissionIssues.map((i) => invoker.guild.format('SETTING_MUTE_MISSING_CHANNEL_PERMS', i)).join('\n') });
if (permissionIssues.length) embed.fields.push({ name: `Missing one of \`${missingPerms.join('`, `')}\``, value: permissionIssues.map((i) => invoker.guild.format('SETTING_MUTE_MISSING_CHANNEL_PERMS', i)).join('\n') });
response.embeds = [embed];
updated.push('role');
@ -253,8 +259,9 @@ class MuteSetting extends Setting {
for (const channel of channels.values()) {
if (!channel.permissionsFor(this.client.user).has('ManageRoles')) {
issues.push({ type: 'permission', channel: channel.name });
const missing = channel.permissionsFor(this.client.user).missing(['ManageRoles', 'ViewChannel']);
if (missing.length) {
issues.push({ type: 'permission', channel: channel.name, missing });
continue;
}