diff --git a/src/builders/Modal.ts b/src/builders/Modal.ts index 7a3a71f..150e037 100644 --- a/src/builders/Modal.ts +++ b/src/builders/Modal.ts @@ -1,4 +1,5 @@ import type { RestOrArray } from '../common'; +import { ModalSubmitInteraction } from '../structures'; import { type APIActionRowComponent, type APIModalInteractionResponseCallbackData, @@ -89,6 +90,22 @@ export class Modal { return this; } + waitFor(func: ModalSubmitCallback, timeout: number): this { + this.run( + interaction => + new Promise(resolve => { + const timer = setTimeout(() => { + resolve(null); + }, timeout); + func(interaction).then((data: ModalSubmitInteraction) => { + clearTimeout(timer); + resolve(data); + }); + }), + ); + return this; + } + /** * Converts the modal to JSON format. * @returns The modal data in JSON format.