Moved member permission check to utils

This commit is contained in:
2022-07-05 20:00:03 +07:00
parent 58e8e53a9b
commit 8a34621964
4 changed files with 48 additions and 29 deletions
+12 -9
View File
@@ -14,12 +14,15 @@ import {
import { COMMON_EMBEDS } from '.'; import { COMMON_EMBEDS } from '.';
import Locale from '../../providers/Locale'; import Locale from '../../providers/Locale';
import { checkMemberPermissions } from '../../utils/DiscordPermission';
const EMBEDS = { const EMBEDS = {
LANGUAGE_INFO: (data: HybridInteractionMessage, locale: I18n, currentLocale: string) => { LANGUAGE_INFO: (data: HybridInteractionMessage, locale: I18n, currentLocale: string) => {
return makeInfoEmbed({ return makeInfoEmbed({
title: locale.__('settings_language.info', { LANGUAGE: currentLocale }), title: locale.__('settings_language.info', { LANGUAGE: currentLocale }),
description: locale.__('settings_language.info_description', { LANGUAGES: Locale.getLocaleProvider('en').getLocales().join(', ') }), description: locale.__('settings_language.info_description', {
LANGUAGES: Locale.getLocaleProvider('en').getLocales().join(', ')
}),
user: data.getUser() user: data.getUser()
}); });
}, },
@@ -33,7 +36,10 @@ const EMBEDS = {
LANGUAGE_UPDATED: (data: HybridInteractionMessage, locale: I18n, newLanguage: string) => { LANGUAGE_UPDATED: (data: HybridInteractionMessage, locale: I18n, newLanguage: string) => {
return makeSuccessEmbed({ return makeSuccessEmbed({
title: locale.__({ phrase: 'settings_language.language_updated', locale: newLanguage }), title: locale.__({ phrase: 'settings_language.language_updated', locale: newLanguage }),
description: locale.__({ phrase: 'settings_language.language_updated_description', locale: newLanguage }, { LANGUAGE: newLanguage }), description: locale.__(
{ phrase: 'settings_language.language_updated_description', locale: newLanguage },
{ LANGUAGE: newLanguage }
),
user: data.getUser() user: data.getUser()
}); });
} }
@@ -47,12 +53,8 @@ export default async (data: HybridInteractionMessage, args: any, guild: Guild, l
if (!GuildCache) return; if (!GuildCache) return;
const language = GuildCache.locale; const language = GuildCache.locale;
const requiredPermissions = [PermissionsBitField.Flags.ManageGuild]; if (!(await checkMemberPermissions({ member, data, locale, permissions: [PermissionsBitField.Flags.ManageGuild] })))
return;
if (!member.permissions.has(requiredPermissions))
return await sendHybridInteractionMessageResponse(data, {
embeds: [COMMON_EMBEDS.NO_PERMISSION(data, locale, requiredPermissions)]
});
let newLanguage: string | null | undefined; let newLanguage: string | null | undefined;
if (data.isMessage()) { if (data.isMessage()) {
@@ -66,7 +68,8 @@ export default async (data: HybridInteractionMessage, args: any, guild: Guild, l
__name.shift(); __name.shift();
_name = __name.join(' '); _name = __name.join(' ');
newLanguage = _name; newLanguage = _name;
} else if (data.isApplicationCommand()) newLanguage = data.getSlashCommand().options.get('language', true).value?.toString(); } else if (data.isApplicationCommand())
newLanguage = data.getSlashCommand().options.get('language', true).value?.toString();
if (!newLanguage) if (!newLanguage)
return await sendHybridInteractionMessageResponse(data, { return await sendHybridInteractionMessageResponse(data, {
+3 -6
View File
@@ -14,6 +14,7 @@ import {
} from '../../utils/DiscordMessage'; } from '../../utils/DiscordMessage';
import { COMMON_EMBEDS } from '.'; import { COMMON_EMBEDS } from '.';
import { checkMemberPermissions } from '../../utils/DiscordPermission';
const EMBEDS = { const EMBEDS = {
PREFIX_INFO: (data: HybridInteractionMessage, locale: I18n, currentPrefix: string) => { PREFIX_INFO: (data: HybridInteractionMessage, locale: I18n, currentPrefix: string) => {
@@ -54,12 +55,8 @@ export default async (data: HybridInteractionMessage, args: any, guild: Guild, l
if (!GuildCache) return; if (!GuildCache) return;
const prefix = GuildCache.prefix; const prefix = GuildCache.prefix;
const requiredPermissions = [PermissionsBitField.Flags.ManageGuild]; if (!(await checkMemberPermissions({ member, data, locale, permissions: [PermissionsBitField.Flags.ManageGuild] })))
return;
if (!member.permissions.has(requiredPermissions))
return await sendHybridInteractionMessageResponse(data, {
embeds: [COMMON_EMBEDS.NO_PERMISSION(data, locale, requiredPermissions)]
});
let newPrefix: string | null | undefined; let newPrefix: string | null | undefined;
if (data.isMessage()) { if (data.isMessage()) {
+5 -12
View File
@@ -13,6 +13,7 @@ import {
} from '../../utils/DiscordMessage'; } from '../../utils/DiscordMessage';
import { COMMON_EMBEDS } from '.'; import { COMMON_EMBEDS } from '.';
import { checkMemberPermissions } from '../../utils/DiscordPermission';
const EMBEDS = { const EMBEDS = {
SERVICE_ANNOUNCEMENT_INVALID_STATUS: (data: HybridInteractionMessage, locale: I18n) => { SERVICE_ANNOUNCEMENT_INVALID_STATUS: (data: HybridInteractionMessage, locale: I18n) => {
@@ -103,12 +104,8 @@ export const setEnableServiceAnnouncement = async (
let member = data.getMember(); let member = data.getMember();
if (!member) return; if (!member) return;
const requiredPermissions = [PermissionsBitField.Flags.Administrator]; if (!(await checkMemberPermissions({ member, data, locale, permissions: [PermissionsBitField.Flags.Administrator] })))
return;
if (!member.permissions.has(requiredPermissions))
return await sendHybridInteractionMessageResponse(data, {
embeds: [COMMON_EMBEDS.NO_PERMISSION(data, locale, requiredPermissions)]
});
let GuildCache = await Cache.getCachedGuild(guild.id); let GuildCache = await Cache.getCachedGuild(guild.id);
if(!GuildCache) return; if(!GuildCache) return;
@@ -185,12 +182,8 @@ export const setServiceAnnouncementChannel = async (
let member = data.getMember(); let member = data.getMember();
if (!member) return; if (!member) return;
const requiredPermissions = [PermissionsBitField.Flags.Administrator]; if (!(await checkMemberPermissions({ member, data, locale, permissions: [PermissionsBitField.Flags.Administrator] })))
return;
if (!member.permissions.has(requiredPermissions))
return await sendHybridInteractionMessageResponse(data, {
embeds: [COMMON_EMBEDS.NO_PERMISSION(data, locale, requiredPermissions)]
});
let channel; let channel;
if (data.isMessage()) { if (data.isMessage()) {
+26
View File
@@ -0,0 +1,26 @@
import { GuildMember } from 'discord.js';
import { I18n } from 'i18n';
import { COMMON_EMBEDS } from '../discord/Settings';
import { sendHybridInteractionMessageResponse } from './DiscordMessage';
import { HybridInteractionMessage } from './DiscordModule';
export async function checkMemberPermissions({
member,
permissions,
data,
locale
}: {
member: GuildMember;
permissions: bigint[];
data?: HybridInteractionMessage;
locale?: I18n;
}): Promise<boolean> {
const hasPermissions = member.permissions.has(permissions);
if (!hasPermissions && data && locale)
await sendHybridInteractionMessageResponse(data, {
embeds: [COMMON_EMBEDS.NO_PERMISSION(data, locale, permissions)]
});
return hasPermissions;
}