| @@ -10,9 +10,10 @@ namespace Discord.Interactions | |||||
| /// </summary> | /// </summary> | ||||
| /// <typeparam name="T">Type of the <see cref="IModal"/> implementation.</typeparam> | /// <typeparam name="T">Type of the <see cref="IModal"/> implementation.</typeparam> | ||||
| /// <param name="interaction">The interaction to respond to.</param> | /// <param name="interaction">The interaction to respond to.</param> | ||||
| /// <param name="modifyModal">Delegate that can be used to modify the modal.</param> | |||||
| /// <param name="options">The request options for this <see langword="async"/> request.</param> | /// <param name="options">The request options for this <see langword="async"/> request.</param> | ||||
| /// <returns>A task that represents the asynchronous operation of responding to the interaction.</returns> | /// <returns>A task that represents the asynchronous operation of responding to the interaction.</returns> | ||||
| public static async Task RespondWithModalAsync<T>(this IDiscordInteraction interaction, string customId, RequestOptions options = null) | |||||
| public static async Task RespondWithModalAsync<T>(this IDiscordInteraction interaction, string customId, Action<ModalBuilder> modifyModal = null, RequestOptions options = null) | |||||
| where T : class, IModal | where T : class, IModal | ||||
| { | { | ||||
| if (!ModalUtils.TryGet<T>(out var modalInfo)) | if (!ModalUtils.TryGet<T>(out var modalInfo)) | ||||
| @@ -31,6 +32,9 @@ namespace Discord.Interactions | |||||
| throw new InvalidOperationException($"{input.GetType().FullName} isn't a valid component info class"); | throw new InvalidOperationException($"{input.GetType().FullName} isn't a valid component info class"); | ||||
| } | } | ||||
| if (modifyModal is not null) | |||||
| modifyModal(builder); | |||||
| await interaction.RespondWithModalAsync(builder.Build(), options).ConfigureAwait(false); | await interaction.RespondWithModalAsync(builder.Build(), options).ConfigureAwait(false); | ||||
| } | } | ||||
| } | } | ||||