Permission check utils

This commit is contained in:
2022-07-05 20:34:55 +07:00
parent 2090162d78
commit 95534294d1
+52 -2
View File
@@ -1,4 +1,4 @@
import { GuildMember } from 'discord.js'; import { BaseGuildTextChannel, BaseGuildVoiceChannel, Guild, GuildChannelResolvable, GuildMember, VoiceBasedChannel } from 'discord.js';
import { I18n } from 'i18n'; import { I18n } from 'i18n';
import { COMMON_EMBEDS } from '../discord/Settings'; import { COMMON_EMBEDS } from '../discord/Settings';
import { sendHybridInteractionMessageResponse } from './DiscordMessage'; import { sendHybridInteractionMessageResponse } from './DiscordMessage';
@@ -19,8 +19,58 @@ export async function checkMemberPermissions({
if (!hasPermissions && data && locale) if (!hasPermissions && data && locale)
await sendHybridInteractionMessageResponse(data, { await sendHybridInteractionMessageResponse(data, {
embeds: [COMMON_EMBEDS.NO_PERMISSION(data, locale, permissions)] embeds: [COMMON_EMBEDS.MEMBER_NO_PERMISSION(data, locale, permissions)]
}); });
return hasPermissions; return hasPermissions;
} }
export async function checkBotPermissions({
guild,
permissions,
data,
locale
}: {
guild: Guild;
permissions: bigint[];
data?: HybridInteractionMessage;
locale?: I18n;
}): Promise<boolean> {
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<boolean> {
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;
}