feat(bot): add acknowledge to Component

This commit is contained in:
xHyroM 2023-04-08 14:15:13 +02:00
parent ae5e39d08d
commit 3fc9624389
No known key found for this signature in database
GPG key ID: BE0423F386C436AA
3 changed files with 16 additions and 9 deletions

View file

@ -88,14 +88,18 @@ export default {
return new Response("Unknown component", { status: 404 }); return new Response("Unknown component", { status: 404 });
try { try {
return respond({ if (component.acknowledge)
type: InteractionResponseType.DeferredChannelMessageWithSource, return respond({
data: { type: InteractionResponseType.DeferredChannelMessageWithSource,
flags: component.flags, data: {
}, flags: component.flags,
}); },
});
} finally { } finally {
component.run(new ComponentContext(interaction, env)); if (component.acknowledge)
component.run(new ComponentContext(interaction, env));
// rome-ignore lint/correctness/noUnsafeFinally: it works, must do better typings etc...
else return component.run(new ComponentContext(interaction, env));
} }
} }
} }

View file

@ -9,7 +9,7 @@ interface CommandOptions {
run: (interaction: CommandContext) => void; run: (interaction: CommandContext) => void;
} }
export class Command<A> { export class Command {
public name: string; public name: string;
public acknowledge: boolean; public acknowledge: boolean;
public flags: MessageFlags | undefined; public flags: MessageFlags | undefined;

View file

@ -4,17 +4,20 @@ import { ComponentContext } from "./contexts/ComponentContext";
interface ComponentOptions { interface ComponentOptions {
id: string; id: string;
acknowledge?: boolean;
flags?: MessageFlags; flags?: MessageFlags;
run: (interaction: ComponentContext) => void; run: (interaction: ComponentContext) => void;
} }
export class Component { export class Component {
public id: string; public id: string;
public acknowledge: boolean;
public flags: MessageFlags | undefined; public flags: MessageFlags | undefined;
public run: (interaction: ComponentContext) => void; public run: (interaction: ComponentContext) => void | Response;
constructor(options: ComponentOptions) { constructor(options: ComponentOptions) {
this.id = options.id; this.id = options.id;
this.acknowledge = options.acknowledge ?? true;
this.flags = options.flags; this.flags = options.flags;
this.run = options.run; this.run = options.run;