Files
Yumi/src/utils/DiscordPermission.ts
T

76 lines
2.1 KiB
TypeScript
Raw Normal View History

2022-07-05 20:34:55 +07:00
import { BaseGuildTextChannel, BaseGuildVoiceChannel, Guild, GuildChannelResolvable, GuildMember, VoiceBasedChannel } from 'discord.js';
2022-07-05 20:00:03 +07:00
import { I18n } from 'i18n';
import { COMMON_EMBEDS } from '../discord/Settings';
import { sendHybridInteractionMessageResponse } from './DiscordMessage';
import { HybridInteractionMessage } from './DiscordModule';
2022-07-05 20:40:16 +07:00
export async function checkMemberPermissionsInGuild({
2022-07-05 20:00:03 +07:00
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, {
2022-07-05 20:34:55 +07:00
embeds: [COMMON_EMBEDS.MEMBER_NO_PERMISSION(data, locale, permissions)]
2022-07-05 20:00:03 +07:00
});
return hasPermissions;
}
2022-07-05 20:34:55 +07:00
2022-07-05 20:40:16 +07:00
export async function checkBotPermissionsInGuild({
2022-07-05 20:34:55 +07:00
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;
}