@@ -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)) | ||||