diff --git a/src/discord/Settings/Language.ts b/src/discord/Settings/Language.ts index 4e0dba2..43345f2 100644 --- a/src/discord/Settings/Language.ts +++ b/src/discord/Settings/Language.ts @@ -48,9 +48,11 @@ export default async (data: HybridInteractionMessage, args: any, guild: Guild, l if (!GuildCache) return; const language = GuildCache.locale; - if (!member.permissions.has([PermissionsBitField.Flags.Administrator])) + const requiredPermissions = [PermissionsBitField.Flags.ManageGuild]; + + if (!member.permissions.has(requiredPermissions)) return await sendHybridInteractionMessageResponse(data, { - embeds: [COMMON_EMBEDS.NO_PERMISSION(data, locale)] + embeds: [COMMON_EMBEDS.NO_PERMISSION(data, locale, requiredPermissions)] }); let newLanguage: string | null | undefined; diff --git a/src/discord/Settings/Prefix.ts b/src/discord/Settings/Prefix.ts index 3862022..8462985 100644 --- a/src/discord/Settings/Prefix.ts +++ b/src/discord/Settings/Prefix.ts @@ -54,9 +54,11 @@ export default async (data: HybridInteractionMessage, args: any, guild: Guild, l if (!GuildCache) return; const prefix = GuildCache.prefix; - if (!member.permissions.has([PermissionsBitField.Flags.Administrator])) + const requiredPermissions = [PermissionsBitField.Flags.ManageGuild]; + + if (!member.permissions.has(requiredPermissions)) return await sendHybridInteractionMessageResponse(data, { - embeds: [COMMON_EMBEDS.NO_PERMISSION(data, locale)] + embeds: [COMMON_EMBEDS.NO_PERMISSION(data, locale, requiredPermissions)] }); let newPrefix: string | null | undefined; diff --git a/src/discord/Settings/ServiceAnnouncement.ts b/src/discord/Settings/ServiceAnnouncement.ts index 7320e40..56b1ac8 100644 --- a/src/discord/Settings/ServiceAnnouncement.ts +++ b/src/discord/Settings/ServiceAnnouncement.ts @@ -1,4 +1,4 @@ -import { Permissions, Guild, GuildChannel, ThreadChannel, Message, PermissionsBitField } from 'discord.js'; +import { Permissions, Guild, GuildChannel, ThreadChannel, Message, PermissionsBitField, PermissionFlags, PermissionFlagsBits, PermissionResolvable } from 'discord.js'; import { I18n } from 'i18n'; import DiscordProvider from '../../providers/Discord'; @@ -104,9 +104,11 @@ export const setEnableServiceAnnouncement = async ( let member = data.getMember(); if (!member) return; - if (!member.permissions.has([PermissionsBitField.Flags.Administrator])) + const requiredPermissions = [PermissionsBitField.Flags.Administrator]; + + if (!member.permissions.has(requiredPermissions)) return await sendHybridInteractionMessageResponse(data, { - embeds: [COMMON_EMBEDS.NO_PERMISSION(data, locale)] + embeds: [COMMON_EMBEDS.NO_PERMISSION(data, locale, requiredPermissions)] }); let GuildCache = await Cache.getCachedGuild(guild.id); @@ -184,9 +186,11 @@ export const setServiceAnnouncementChannel = async ( let member = data.getMember(); if (!member) return; - if (!member.permissions.has([PermissionsBitField.Flags.Administrator])) + const requiredPermissions: PermissionResolvable[] = [PermissionsBitField.Flags.Administrator]; + + if (!member.permissions.has(requiredPermissions)) return await sendHybridInteractionMessageResponse(data, { - embeds: [COMMON_EMBEDS.NO_PERMISSION(data, locale)] + embeds: [COMMON_EMBEDS.NO_PERMISSION(data, locale, requiredPermissions)] }); let channel; diff --git a/src/discord/Settings/index.ts b/src/discord/Settings/index.ts index a47948f..af4988f 100644 --- a/src/discord/Settings/index.ts +++ b/src/discord/Settings/index.ts @@ -1,16 +1,13 @@ import { Message, CommandInteraction, - Permissions, - ThreadChannel, - GuildChannel, - Guild + Guild, + PermissionsBitField, + PermissionResolvable } from 'discord.js'; import { I18n } from 'i18n'; import DiscordProvider from '../../providers/Discord'; -import Prisma from '../../providers/Prisma'; -import Cache from '../../providers/Cache'; import Locale from '../../services/Locale'; import DiscordModule, { HybridInteractionMessage } from '../../utils/DiscordModule'; @@ -27,10 +24,15 @@ import * as LanguageModule from './Language'; import * as ServiceAnnouncementModule from './ServiceAnnouncement'; export const COMMON_EMBEDS = { - NO_PERMISSION: (data: HybridInteractionMessage, locale: I18n) => { + NO_PERMISSION: (data: HybridInteractionMessage, locale: I18n, permissions: PermissionResolvable[]) => { + + let allPermissions = []; + for(const value of permissions) { + allPermissions.push(new PermissionsBitField(value).toArray()); + } return makeErrorEmbed({ title: locale.__('common.no_permissions'), - description: locale.__('common.no_permissions_description', { PERMISSIONS: 'ADMINISTRATOR'}), + description: locale.__('common.no_permissions_description', { PERMISSIONS: allPermissions.join(', ')}), user: data.getUser() }); },