fix: checkPermissions

This commit is contained in:
MARCROCK22 2024-09-20 00:11:01 +00:00
parent 85b1b93131
commit 830e9fbf5a

View File

@ -108,12 +108,8 @@ export class HandleCommand {
interaction: UserCommandInteraction, interaction: UserCommandInteraction,
context: MenuCommandContext<UserCommandInteraction>, context: MenuCommandContext<UserCommandInteraction>,
) { ) {
if (command.botPermissions && interaction.appPermissions) { if (context.guildId && command.botPermissions && interaction.appPermissions) {
const permissions = this.checkPermissions( const permissions = this.checkPermissions(interaction.appPermissions, command.botPermissions);
interaction.appPermissions,
command.botPermissions,
!context.guildId || interaction.appPermissions.has('Administrator'),
);
if (permissions) return command.onBotPermissionsFail(context, permissions); if (permissions) return command.onBotPermissionsFail(context, permissions);
} }
@ -140,12 +136,8 @@ export class HandleCommand {
} }
async entryPoint(command: EntryPointCommand, interaction: EntryPointInteraction, context: EntryPointContext) { async entryPoint(command: EntryPointCommand, interaction: EntryPointInteraction, context: EntryPointContext) {
if (command.botPermissions && interaction.appPermissions) { if (context.guildId && command.botPermissions && interaction.appPermissions) {
const permissions = this.checkPermissions( const permissions = this.checkPermissions(interaction.appPermissions, command.botPermissions);
interaction.appPermissions,
command.botPermissions,
!context.guildId || interaction.appPermissions.has('Administrator'),
);
if (permissions) return command.onBotPermissionsFail(context, permissions); if (permissions) return command.onBotPermissionsFail(context, permissions);
} }
@ -177,12 +169,8 @@ export class HandleCommand {
resolver: OptionResolverStructure, resolver: OptionResolverStructure,
context: CommandContext, context: CommandContext,
) { ) {
if (command.botPermissions && interaction.appPermissions) { if (context.guildId && command.botPermissions && interaction.appPermissions) {
const permissions = this.checkPermissions( const permissions = this.checkPermissions(interaction.appPermissions, command.botPermissions);
interaction.appPermissions,
command.botPermissions,
!context.guildId || interaction.appPermissions.has('Administrator'),
);
if (permissions) return command.onBotPermissionsFail?.(context, permissions); if (permissions) return command.onBotPermissionsFail?.(context, permissions);
} }
if (!(await this.runOptions(command, context, resolver))) return; if (!(await this.runOptions(command, context, resolver))) return;
@ -375,11 +363,7 @@ export class HandleCommand {
if (rawMessage.guild_id) { if (rawMessage.guild_id) {
if (command.defaultMemberPermissions) { if (command.defaultMemberPermissions) {
const memberPermissions = await self.members.permissions(rawMessage.guild_id, rawMessage.author.id); const memberPermissions = await self.members.permissions(rawMessage.guild_id, rawMessage.author.id);
const permissions = this.checkPermissions( const permissions = this.checkPermissions(memberPermissions, command.defaultMemberPermissions);
memberPermissions,
command.defaultMemberPermissions,
memberPermissions.has('Administrator'),
);
const guild = await this.client.guilds.raw(rawMessage.guild_id); const guild = await this.client.guilds.raw(rawMessage.guild_id);
if (permissions && guild.owner_id !== rawMessage.author.id) { if (permissions && guild.owner_id !== rawMessage.author.id) {
return command.onPermissionsFail?.(context, memberPermissions.keys(permissions)); return command.onPermissionsFail?.(context, memberPermissions.keys(permissions));
@ -388,11 +372,7 @@ export class HandleCommand {
if (command.botPermissions) { if (command.botPermissions) {
const appPermissions = await self.members.permissions(rawMessage.guild_id, self.botId); const appPermissions = await self.members.permissions(rawMessage.guild_id, self.botId);
const permissions = this.checkPermissions( const permissions = this.checkPermissions(appPermissions, command.botPermissions);
appPermissions,
command.botPermissions,
appPermissions.has('Administrator'),
);
if (permissions) { if (permissions) {
return command.onBotPermissionsFail?.(context, permissions); return command.onBotPermissionsFail?.(context, permissions);
} }
@ -522,10 +502,9 @@ export class HandleCommand {
}) as T; }) as T;
} }
checkPermissions(app: PermissionsBitField, bot: bigint, bypass = false) { checkPermissions(app: PermissionsBitField, bot: bigint) {
if (bypass) return;
const permissions = app.missings(...app.values([bot])); const permissions = app.missings(...app.values([bot]));
if (permissions.length) { if (!app.has('Administrator') && permissions.length) {
return app.keys(permissions); return app.keys(permissions);
} }
return; return;