From 95534294d1f99f18168a8c03928b3eebcae1e0cf Mon Sep 17 00:00:00 2001 From: Yuzu Date: Tue, 5 Jul 2022 20:34:55 +0700 Subject: [PATCH] Permission check utils --- src/utils/DiscordPermission.ts | 54 ++++++++++++++++++++++++++++++++-- 1 file changed, 52 insertions(+), 2 deletions(-) diff --git a/src/utils/DiscordPermission.ts b/src/utils/DiscordPermission.ts index b067082..29ec053 100644 --- a/src/utils/DiscordPermission.ts +++ b/src/utils/DiscordPermission.ts @@ -1,4 +1,4 @@ -import { GuildMember } from 'discord.js'; +import { BaseGuildTextChannel, BaseGuildVoiceChannel, Guild, GuildChannelResolvable, GuildMember, VoiceBasedChannel } from 'discord.js'; import { I18n } from 'i18n'; import { COMMON_EMBEDS } from '../discord/Settings'; import { sendHybridInteractionMessageResponse } from './DiscordMessage'; @@ -19,8 +19,58 @@ export async function checkMemberPermissions({ if (!hasPermissions && data && locale) await sendHybridInteractionMessageResponse(data, { - embeds: [COMMON_EMBEDS.NO_PERMISSION(data, locale, permissions)] + embeds: [COMMON_EMBEDS.MEMBER_NO_PERMISSION(data, locale, permissions)] }); return hasPermissions; } + +export async function checkBotPermissions({ + guild, + permissions, + data, + locale +}: { + guild: Guild; + permissions: bigint[]; + data?: HybridInteractionMessage; + locale?: I18n; +}): Promise { + const member = guild.members.me; + if(!member) return false; + + const hasPermissions = member.permissions.has(permissions); + + if (!hasPermissions && data && locale) + await sendHybridInteractionMessageResponse(data, { + embeds: [COMMON_EMBEDS.BOT_NO_PERMISSION(data, locale, permissions)] + }); + + return hasPermissions; +} + +export async function checkBotPermissionsInChannel({ + guild, + channel, + permissions, + data, + locale +}: { + guild: Guild; + channel: GuildChannelResolvable; + permissions: bigint[]; + data?: HybridInteractionMessage; + locale?: I18n; +}): Promise { + const member = guild.members.me; + if(!member) return false; + + const hasPermissions = member.permissionsIn(channel).has(permissions); + + if (!hasPermissions && data && locale) + await sendHybridInteractionMessageResponse(data, { + embeds: [COMMON_EMBEDS.BOT_NO_PERMISSION(data, locale, permissions)] + }); + + return hasPermissions; +} \ No newline at end of file