| @@ -1,3 +1,6 @@ | |||||
| using System; | |||||
| using System.Threading.Tasks; | |||||
| namespace Discord | namespace Discord | ||||
| { | { | ||||
| /// <summary> | /// <summary> | ||||
| @@ -6,7 +9,7 @@ namespace Discord | |||||
| public interface IComponentInteraction : IDiscordInteraction | public interface IComponentInteraction : IDiscordInteraction | ||||
| { | { | ||||
| /// <summary> | /// <summary> | ||||
| /// Gets the data received with this interaction, contains the button that was clicked. | |||||
| /// Gets the data received with this component interaction. | |||||
| /// </summary> | /// </summary> | ||||
| new IComponentInteractionData Data { get; } | new IComponentInteractionData Data { get; } | ||||
| @@ -14,5 +17,21 @@ namespace Discord | |||||
| /// Gets the message that contained the trigger for this interaction. | /// Gets the message that contained the trigger for this interaction. | ||||
| /// </summary> | /// </summary> | ||||
| IUserMessage Message { get; } | IUserMessage Message { get; } | ||||
| /// <summary> | |||||
| /// Updates the message which this component resides in with the type <see cref="InteractionResponseType.UpdateMessage"/> | |||||
| /// </summary> | |||||
| /// <param name="func">A delegate containing the properties to modify the message with.</param> | |||||
| /// <param name="options">The options to be used when sending the request.</param> | |||||
| /// <returns>A task that represents the asynchronous operation of updating the message.</returns> | |||||
| Task UpdateAsync(Action<MessageProperties> func, RequestOptions options = null); | |||||
| /// <summary> | |||||
| /// Defers an interaction with the response type 5 (<see cref="InteractionResponseType.DeferredChannelMessageWithSource"/>). | |||||
| /// </summary> | |||||
| /// <param name="ephemeral"><see langword="true"/> to defer ephemerally, otherwise <see langword="false"/>.</param> | |||||
| /// <param name="options">The options to be used when sending the request.</param> | |||||
| /// <returns>A task that represents the asynchronous operation of acknowledging the interaction.</returns> | |||||
| Task DeferLoadingAsync(bool ephemeral = false, RequestOptions options = null); | |||||
| } | } | ||||
| } | } | ||||
| @@ -492,5 +492,13 @@ namespace Discord.Rest | |||||
| /// <inheritdoc/> | /// <inheritdoc/> | ||||
| IUserMessage IComponentInteraction.Message => Message; | IUserMessage IComponentInteraction.Message => Message; | ||||
| /// <inheritdoc /> | |||||
| Task IComponentInteraction.UpdateAsync(Action<MessageProperties> func, RequestOptions options) | |||||
| => Task.FromResult(Update(func, options)); | |||||
| /// <inheritdoc /> | |||||
| Task IComponentInteraction.DeferLoadingAsync(bool ephemeral, RequestOptions options) | |||||
| => Task.FromResult(DeferLoading(ephemeral, options)); | |||||
| } | } | ||||
| } | } | ||||
| @@ -202,12 +202,7 @@ namespace Discord.WebSocket | |||||
| HasResponded = true; | HasResponded = true; | ||||
| } | } | ||||
| /// <summary> | |||||
| /// Updates the message which this component resides in with the type <see cref="InteractionResponseType.UpdateMessage"/> | |||||
| /// </summary> | |||||
| /// <param name="func">A delegate containing the properties to modify the message with.</param> | |||||
| /// <param name="options">The request options for this <see langword="async"/> request.</param> | |||||
| /// <returns>A task that represents the asynchronous operation of updating the message.</returns> | |||||
| /// <inheritdoc/> | |||||
| public async Task UpdateAsync(Action<MessageProperties> func, RequestOptions options = null) | public async Task UpdateAsync(Action<MessageProperties> func, RequestOptions options = null) | ||||
| { | { | ||||
| var args = new MessageProperties(); | var args = new MessageProperties(); | ||||
| @@ -383,14 +378,7 @@ namespace Discord.WebSocket | |||||
| return await InteractionHelper.SendFollowupAsync(Discord, args, Token, Channel, options).ConfigureAwait(false); | return await InteractionHelper.SendFollowupAsync(Discord, args, Token, Channel, options).ConfigureAwait(false); | ||||
| } | } | ||||
| /// <summary> | |||||
| /// Defers an interaction and responds with type 5 (<see cref="InteractionResponseType.DeferredChannelMessageWithSource"/>) | |||||
| /// </summary> | |||||
| /// <param name="ephemeral"><see langword="true"/> to send this message ephemerally, otherwise <see langword="false"/>.</param> | |||||
| /// <param name="options">The request options for this <see langword="async"/> request.</param> | |||||
| /// <returns> | |||||
| /// A task that represents the asynchronous operation of acknowledging the interaction. | |||||
| /// </returns> | |||||
| /// <inheritdoc/> | |||||
| public async Task DeferLoadingAsync(bool ephemeral = false, RequestOptions options = null) | public async Task DeferLoadingAsync(bool ephemeral = false, RequestOptions options = null) | ||||
| { | { | ||||
| if (!InteractionHelper.CanSendResponse(this)) | if (!InteractionHelper.CanSendResponse(this)) | ||||