apps/bot/src/lib/structures/ModalRegistry.ts (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import type { ModalSubmitInteraction } from "discord.js";
import type { ModalDefinition } from "./ModalDefinition";
export interface RegisteredModal<Args extends string[]> {
definition: ModalDefinition<any, Args>;
run(interaction: ModalSubmitInteraction, args: Args): unknown | Promise<unknown>;
}
class ModalRegistry {
private modals = new Map<string, RegisteredModal<any>>();
public register<Args extends string[]>(
definition: ModalDefinition<any, Args>,
run: (interaction: ModalSubmitInteraction, args: Args) => unknown | Promise<unknown>,
) {
this.modals.set(definition.id, { definition, run });
}
public get(id: string) {
return this.modals.get(id);
}
}
export const modalRegistry = new ModalRegistry();
|