mirror of
https://github.com/kirameki-cafe/Yumi.git
synced 2026-09-13 18:59:19 +00:00
Moved member permission check to utils
This commit is contained in:
@@ -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, {
|
||||||
|
|||||||
@@ -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()) {
|
||||||
|
|||||||
@@ -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()) {
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user