diff --git a/src/client/base.ts b/src/client/base.ts index 2db17a9..09fec94 100644 --- a/src/client/base.ts +++ b/src/client/base.ts @@ -120,7 +120,7 @@ export class BaseClient { context.client.logger.fatal( `${context.command.name}.`, context.author.id, - permissions, + `permissions ${permissions?.length ? permissions : 'Not found'}`, ); }, onPermissionsFail(context, permissions): any { @@ -424,9 +424,10 @@ export interface BaseClientOptions { defaults?: { onRunError?: (context: MenuCommandContext | CommandContext, error: unknown) => unknown; onPermissionsFail?: Command['onPermissionsFail']; + onBotPermissionsFail?: ( context: MenuCommandContext | CommandContext, - permissions: PermissionStrings, + permissions?: PermissionStrings, ) => unknown; onInternalError?: ( client: UsingClient, diff --git a/src/commands/applications/menu.ts b/src/commands/applications/menu.ts index 363d589..848e339 100644 --- a/src/commands/applications/menu.ts +++ b/src/commands/applications/menu.ts @@ -61,7 +61,7 @@ export abstract class ContextMenuCommand { onMiddlewaresError(context: MenuCommandContext, error: string): any { context.client.logger.fatal(`${this.name}.`, context.author.id, error); } - onBotPermissionsFail(context: MenuCommandContext, permissions: PermissionStrings): any { + onBotPermissionsFail(context: MenuCommandContext, permissions?: PermissionStrings): any { context.client.logger.fatal(`${this.name}.`, context.author.id, permissions); } // onPermissionsFail(context: MenuCommandContext, permissions: PermissionStrings): any { diff --git a/src/commands/handle.ts b/src/commands/handle.ts index 6f323c5..b2d9426 100644 --- a/src/commands/handle.ts +++ b/src/commands/handle.ts @@ -313,22 +313,23 @@ export class HandleCommand { ), ); } - if (command.defaultMemberPermissions && rawMessage.guild_id) { - const memberPermissions = await self.members.permissions(rawMessage.guild_id, rawMessage.author.id); - const permissions = this.checkPermissions(memberPermissions, command.defaultMemberPermissions); - const guild = await this.client.guilds.raw(rawMessage.guild_id); - if (permissions && guild.owner_id !== rawMessage.author.id) { - return command.onPermissionsFail?.(context, memberPermissions.keys(permissions)); - } - } - if (command.botPermissions && rawMessage.guild_id) { - const meMember = await self.cache.members?.get(self.botId, rawMessage.guild_id); - if (!meMember) return; //enable member cache and "Guilds" intent, lol - const appPermissions = await meMember.fetchPermissions(); - const permissions = this.checkPermissions(appPermissions, command.botPermissions); - if (!appPermissions.has('Administrator') && permissions) { - return command.onBotPermissionsFail?.(context, permissions); + if (rawMessage.guild_id) { + if (command.defaultMemberPermissions) { + const memberPermissions = await self.members.permissions(rawMessage.guild_id, rawMessage.author.id); + const permissions = this.checkPermissions(memberPermissions, command.defaultMemberPermissions); + const guild = await this.client.guilds.raw(rawMessage.guild_id); + if (permissions && guild.owner_id !== rawMessage.author.id) { + return command.onPermissionsFail?.(context, memberPermissions.keys(permissions)); + } + } + + if (command.botPermissions) { + const appPermissions = await self.members.permissions(rawMessage.guild_id, self.botId); + const permissions = this.checkPermissions(appPermissions, command.botPermissions); + if (!appPermissions.has('Administrator') && permissions) { + return command.onBotPermissionsFail?.(context, permissions); + } } }