Skip to content

Commit ebdf0f7

Browse files
yuansheng1549kyranetfavna
authored
fix(ClientPermissions): check app permissions when used with user apps (#797)
Co-authored-by: Aura <kyradiscord@gmail.com> Co-authored-by: Jeroen Claassens <support@favware.tech>
1 parent d38fac0 commit ebdf0f7

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

src/preconditions/ClientPermissions.ts

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,9 @@ export class CorePrecondition extends AllFlowsPrecondition {
5555
): AllFlowsPrecondition.AsyncResult {
5656
const required = context.permissions ?? new PermissionsBitField();
5757

58-
const channel = await this.fetchChannelFromInteraction(interaction);
58+
const availablePermissions = await this.getAvailablePermissions(interaction);
5959

60-
const permissions = await this.getPermissionsForChannel(channel, interaction);
61-
62-
return this.sharedRun(required, permissions, 'chat input');
60+
return this.sharedRun(required, availablePermissions, 'chat input');
6361
}
6462

6563
public async contextMenuRun(
@@ -69,11 +67,9 @@ export class CorePrecondition extends AllFlowsPrecondition {
6967
): AllFlowsPrecondition.AsyncResult {
7068
const required = context.permissions ?? new PermissionsBitField();
7169

72-
const channel = await this.fetchChannelFromInteraction(interaction);
73-
74-
const permissions = await this.getPermissionsForChannel(channel, interaction);
70+
const availablePermissions = await this.getAvailablePermissions(interaction);
7571

76-
return this.sharedRun(required, permissions, 'context menu');
72+
return this.sharedRun(required, availablePermissions, 'context menu');
7773
}
7874

7975
private async getPermissionsForChannel(channel: TextBasedChannel, messageOrInteraction: Message | BaseInteraction) {
@@ -113,6 +109,17 @@ export class CorePrecondition extends AllFlowsPrecondition {
113109
});
114110
}
115111

112+
private async getAvailablePermissions(interaction: ChatInputCommandInteraction | ContextMenuCommandInteraction) {
113+
if (interaction.channel) {
114+
if (interaction.channel.isDMBased()) return this.dmChannelPermissions;
115+
116+
const channel = await this.fetchChannelFromInteraction(interaction);
117+
return this.getPermissionsForChannel(channel, interaction);
118+
}
119+
120+
return interaction.appPermissions;
121+
}
122+
116123
public static readonly readablePermissions: Record<PermissionsString, string> = {
117124
AddReactions: 'Add Reactions',
118125
Administrator: 'Administrator',

0 commit comments

Comments
 (0)