@@ -8,7 +8,7 @@ | |||||
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT' ">net461;netstandard2.0;netstandard2.1</TargetFrameworks> | <TargetFrameworks Condition=" '$(OS)' == 'Windows_NT' ">net461;netstandard2.0;netstandard2.1</TargetFrameworks> | ||||
<TargetFrameworks Condition=" '$(OS)' != 'Windows_NT' ">netstandard2.0;netstandard2.1</TargetFrameworks> | <TargetFrameworks Condition=" '$(OS)' != 'Windows_NT' ">netstandard2.0;netstandard2.1</TargetFrameworks> | ||||
<PackageId>Discord.Net.Labs.Core</PackageId> | <PackageId>Discord.Net.Labs.Core</PackageId> | ||||
<Version>2.4.4</Version> | |||||
<Version>2.4.5</Version> | |||||
<Product>Discord.Net.Labs.Core</Product> | <Product>Discord.Net.Labs.Core</Product> | ||||
<RepositoryUrl>https://github.com/Discord-Net-Labs/Discord.Net-Labs</RepositoryUrl> | <RepositoryUrl>https://github.com/Discord-Net-Labs/Discord.Net-Labs</RepositoryUrl> | ||||
<PackageIcon>Temporary.png</PackageIcon> | <PackageIcon>Temporary.png</PackageIcon> | ||||
@@ -7266,31 +7266,31 @@ | |||||
<member name="F:Discord.TagType.Emoji"> | <member name="F:Discord.TagType.Emoji"> | ||||
<summary> The object is an emoji. </summary> | <summary> The object is an emoji. </summary> | ||||
</member> | </member> | ||||
<member name="T:Discord.Entities.Messages.TimestampTag"> | |||||
<member name="T:Discord.TimestampTag"> | |||||
<summary> | <summary> | ||||
Represents a class used to make timestamps in messages. see <see href="https://discord.com/developers/docs/reference#message-formatting-timestamp-styles"/>. | Represents a class used to make timestamps in messages. see <see href="https://discord.com/developers/docs/reference#message-formatting-timestamp-styles"/>. | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:Discord.Entities.Messages.TimestampTag.Style"> | |||||
<member name="P:Discord.TimestampTag.Style"> | |||||
<summary> | <summary> | ||||
Gets or sets the style of the timestamp tag. | Gets or sets the style of the timestamp tag. | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:Discord.Entities.Messages.TimestampTag.Time"> | |||||
<member name="P:Discord.TimestampTag.Time"> | |||||
<summary> | <summary> | ||||
Gets or sets the time for this timestamp tag. | Gets or sets the time for this timestamp tag. | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:Discord.Entities.Messages.TimestampTag.ToString"> | |||||
<member name="M:Discord.TimestampTag.ToString"> | |||||
<summary> | <summary> | ||||
Converts the current timestamp tag to the string representation supported by discord. | Converts the current timestamp tag to the string representation supported by discord. | ||||
<para> | <para> | ||||
If the <see cref="P:Discord.Entities.Messages.TimestampTag.Time"/> is null then the default 0 will be used. | |||||
If the <see cref="P:Discord.TimestampTag.Time"/> is null then the default 0 will be used. | |||||
</para> | </para> | ||||
</summary> | </summary> | ||||
<returns>A string thats compatable in a discord message, ex: <code><t:1625944201:f></code></returns> | <returns>A string thats compatable in a discord message, ex: <code><t:1625944201:f></code></returns> | ||||
</member> | </member> | ||||
<member name="M:Discord.Entities.Messages.TimestampTag.FromDateTime(System.DateTime,Discord.Entities.Messages.TimestampTagStyles)"> | |||||
<member name="M:Discord.TimestampTag.FromDateTime(System.DateTime,Discord.TimestampTagStyles)"> | |||||
<summary> | <summary> | ||||
Creates a new timestamp tag with the specified datetime object. | Creates a new timestamp tag with the specified datetime object. | ||||
</summary> | </summary> | ||||
@@ -7298,42 +7298,42 @@ | |||||
<param name="style">The style for this timestamp tag.</param> | <param name="style">The style for this timestamp tag.</param> | ||||
<returns>The newly create timestamp tag.</returns> | <returns>The newly create timestamp tag.</returns> | ||||
</member> | </member> | ||||
<member name="T:Discord.Entities.Messages.TimestampTagStyles"> | |||||
<member name="T:Discord.TimestampTagStyles"> | |||||
<summary> | <summary> | ||||
Represents a set of styles to use with a <see cref="T:Discord.Entities.Messages.TimestampTag"/> | |||||
Represents a set of styles to use with a <see cref="T:Discord.TimestampTag"/> | |||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:Discord.Entities.Messages.TimestampTagStyles.ShortTime"> | |||||
<member name="F:Discord.TimestampTagStyles.ShortTime"> | |||||
<summary> | <summary> | ||||
A short time string: 16:20 | A short time string: 16:20 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:Discord.Entities.Messages.TimestampTagStyles.LongTime"> | |||||
<member name="F:Discord.TimestampTagStyles.LongTime"> | |||||
<summary> | <summary> | ||||
A long time string: 16:20:30 | A long time string: 16:20:30 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:Discord.Entities.Messages.TimestampTagStyles.ShortDate"> | |||||
<member name="F:Discord.TimestampTagStyles.ShortDate"> | |||||
<summary> | <summary> | ||||
A short date string: 20/04/2021 | A short date string: 20/04/2021 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:Discord.Entities.Messages.TimestampTagStyles.LongDate"> | |||||
<member name="F:Discord.TimestampTagStyles.LongDate"> | |||||
<summary> | <summary> | ||||
A long date string: 20 April 2021 | A long date string: 20 April 2021 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:Discord.Entities.Messages.TimestampTagStyles.ShortDateTime"> | |||||
<member name="F:Discord.TimestampTagStyles.ShortDateTime"> | |||||
<summary> | <summary> | ||||
A short datetime string: 20 April 2021 16:20 | A short datetime string: 20 April 2021 16:20 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:Discord.Entities.Messages.TimestampTagStyles.LongDateTime"> | |||||
<member name="F:Discord.TimestampTagStyles.LongDateTime"> | |||||
<summary> | <summary> | ||||
A long datetime string: Tuesday, 20 April 2021 16:20 | A long datetime string: Tuesday, 20 April 2021 16:20 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:Discord.Entities.Messages.TimestampTagStyles.Relative"> | |||||
<member name="F:Discord.TimestampTagStyles.Relative"> | |||||
<summary> | <summary> | ||||
The relative time to the user: 2 months ago | The relative time to the user: 2 months ago | ||||
</summary> | </summary> | ||||
@@ -70,27 +70,8 @@ namespace Discord.WebSocket | |||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// Responds to an Interaction. | |||||
/// <para> | |||||
/// If you have <see cref="DiscordSocketConfig.AlwaysAcknowledgeInteractions"/> set to <see langword="true"/>, You should use | |||||
/// <see cref="FollowupAsync(string, bool, Embed, InteractionResponseType, AllowedMentions, RequestOptions)"/> instead. | |||||
/// </para> | |||||
/// </summary> | |||||
/// <param name="text">The text of the message to be sent.</param> | |||||
/// <param name="isTTS"><see langword="true"/> if the message should be read out by a text-to-speech reader, otherwise <see langword="false"/>.</param> | |||||
/// <param name="embed">A <see cref="Embed"/> to send with this response.</param> | |||||
/// <param name="type">The type of response to this Interaction.</param> | |||||
/// <param name="ephemeral"><see langword="true"/> if the response should be hidden to everyone besides the invoker of the command, otherwise <see langword="false"/>.</param> | |||||
/// <param name="allowedMentions">The allowed mentions for this response.</param> | |||||
/// <param name="options">The request options for this response.</param> | |||||
/// <param name="component">A <see cref="MessageComponent"/> to be sent with this response</param> | |||||
/// <returns> | |||||
/// The <see cref="IMessage"/> sent as the response. If this is the first acknowledgement, it will return null. | |||||
/// </returns> | |||||
/// <exception cref="ArgumentOutOfRangeException">Message content is too long, length must be less or equal to <see cref="DiscordConfig.MaxMessageSize"/>.</exception> | |||||
/// <exception cref="InvalidOperationException">The parameters provided were invalid or the token was invalid.</exception> | |||||
public override async Task RespondAsync(string text = null, bool isTTS = false, Embed embed = null, InteractionResponseType type = InteractionResponseType.ChannelMessageWithSource, | |||||
/// <inheritdoc/> | |||||
public override async Task RespondAsync(string text = null, bool isTTS = false, Embed[] embeds = null, InteractionResponseType type = InteractionResponseType.ChannelMessageWithSource, | |||||
bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null) | bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null) | ||||
{ | { | ||||
if (type == InteractionResponseType.Pong) | if (type == InteractionResponseType.Pong) | ||||
@@ -101,12 +82,13 @@ namespace Discord.WebSocket | |||||
if (Discord.AlwaysAcknowledgeInteractions) | if (Discord.AlwaysAcknowledgeInteractions) | ||||
{ | { | ||||
await FollowupAsync(text, isTTS, embed, ephemeral, type, allowedMentions, options); | |||||
await FollowupAsync(text, isTTS, embeds, ephemeral, type, allowedMentions, options); | |||||
return; | return; | ||||
} | } | ||||
Preconditions.AtMost(allowedMentions?.RoleIds?.Count ?? 0, 100, nameof(allowedMentions.RoleIds), "A max of 100 role Ids are allowed."); | Preconditions.AtMost(allowedMentions?.RoleIds?.Count ?? 0, 100, nameof(allowedMentions.RoleIds), "A max of 100 role Ids are allowed."); | ||||
Preconditions.AtMost(allowedMentions?.UserIds?.Count ?? 0, 100, nameof(allowedMentions.UserIds), "A max of 100 user Ids are allowed."); | Preconditions.AtMost(allowedMentions?.UserIds?.Count ?? 0, 100, nameof(allowedMentions.UserIds), "A max of 100 user Ids are allowed."); | ||||
Preconditions.AtMost(embeds?.Length ?? 0, 10, nameof(embeds), "A max of 10 embeds are allowed."); | |||||
// check that user flag and user Id list are exclusive, same with role flag and role Id list | // check that user flag and user Id list are exclusive, same with role flag and role Id list | ||||
if (allowedMentions != null && allowedMentions.AllowedTypes.HasValue) | if (allowedMentions != null && allowedMentions.AllowedTypes.HasValue) | ||||
@@ -131,8 +113,8 @@ namespace Discord.WebSocket | |||||
Data = new API.InteractionApplicationCommandCallbackData(text) | Data = new API.InteractionApplicationCommandCallbackData(text) | ||||
{ | { | ||||
AllowedMentions = allowedMentions?.ToModel(), | AllowedMentions = allowedMentions?.ToModel(), | ||||
Embeds = embed != null | |||||
? new API.Embed[] { embed.ToModel() } | |||||
Embeds = embeds != null | |||||
? embeds.Select(x => x.ToModel()).ToArray() | |||||
: Optional<API.Embed[]>.Unspecified, | : Optional<API.Embed[]>.Unspecified, | ||||
TTS = isTTS, | TTS = isTTS, | ||||
Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional<API.ActionRowComponent[]>.Unspecified | Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional<API.ActionRowComponent[]>.Unspecified | ||||
@@ -145,21 +127,8 @@ namespace Discord.WebSocket | |||||
await InteractionHelper.SendInteractionResponse(this.Discord, this.Channel, response, this.Id, Token, options); | await InteractionHelper.SendInteractionResponse(this.Discord, this.Channel, response, this.Id, Token, options); | ||||
} | } | ||||
/// <summary> | |||||
/// Sends a followup message for this interaction. | |||||
/// </summary> | |||||
/// <param name="text">The text of the message to be sent</param> | |||||
/// <param name="isTTS"><see langword="true"/> if the message should be read out by a text-to-speech reader, otherwise <see langword="false"/>.</param> | |||||
/// <param name="embed">A <see cref="Embed"/> to send with this response.</param> | |||||
/// <param name="type">The type of response to this Interaction.</param> | |||||
/// /// <param name="ephemeral"><see langword="true"/> if the response should be hidden to everyone besides the invoker of the command, otherwise <see langword="false"/>.</param> | |||||
/// <param name="allowedMentions">The allowed mentions for this response.</param> | |||||
/// <param name="options">The request options for this response.</param> | |||||
/// <param name="component">A <see cref="MessageComponent"/> to be sent with this response</param> | |||||
/// <returns> | |||||
/// The sent message. | |||||
/// </returns> | |||||
public override async Task<RestFollowupMessage> FollowupAsync(string text = null, bool isTTS = false, Embed embed = null, bool ephemeral = false, | |||||
/// <inheritdoc/> | |||||
public override async Task<RestFollowupMessage> FollowupAsync(string text = null, bool isTTS = false, Embed[] embeds = null, bool ephemeral = false, | |||||
InteractionResponseType type = InteractionResponseType.ChannelMessageWithSource, | InteractionResponseType type = InteractionResponseType.ChannelMessageWithSource, | ||||
AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null) | AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null) | ||||
{ | { | ||||
@@ -169,11 +138,16 @@ namespace Discord.WebSocket | |||||
if (!IsValidToken) | if (!IsValidToken) | ||||
throw new InvalidOperationException("Interaction token is no longer valid"); | throw new InvalidOperationException("Interaction token is no longer valid"); | ||||
Preconditions.AtMost(allowedMentions?.RoleIds?.Count ?? 0, 100, nameof(allowedMentions.RoleIds), "A max of 100 role Ids are allowed."); | |||||
Preconditions.AtMost(allowedMentions?.UserIds?.Count ?? 0, 100, nameof(allowedMentions.UserIds), "A max of 100 user Ids are allowed."); | |||||
Preconditions.AtMost(embeds?.Length ?? 0, 10, nameof(embeds), "A max of 10 embeds are allowed."); | |||||
var args = new API.Rest.CreateWebhookMessageParams(text) | var args = new API.Rest.CreateWebhookMessageParams(text) | ||||
{ | { | ||||
AllowedMentions = allowedMentions?.ToModel(), | |||||
IsTTS = isTTS, | IsTTS = isTTS, | ||||
Embeds = embed != null | |||||
? new API.Embed[] { embed.ToModel() } | |||||
Embeds = embeds != null | |||||
? embeds.Select(x => x.ToModel()).ToArray() | |||||
: Optional<API.Embed[]>.Unspecified, | : Optional<API.Embed[]>.Unspecified, | ||||
Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional<API.ActionRowComponent[]>.Unspecified | Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional<API.ActionRowComponent[]>.Unspecified | ||||
}; | }; | ||||
@@ -51,7 +51,7 @@ namespace Discord.WebSocket | |||||
} | } | ||||
/// <inheritdoc/> | /// <inheritdoc/> | ||||
public override async Task RespondAsync(string text = null, bool isTTS = false, Embed embed = null, InteractionResponseType type = InteractionResponseType.ChannelMessageWithSource, | |||||
public override async Task RespondAsync(string text = null, bool isTTS = false, Embed[] embeds = null, InteractionResponseType type = InteractionResponseType.ChannelMessageWithSource, | |||||
bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null) | bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null) | ||||
{ | { | ||||
if (type == InteractionResponseType.Pong) | if (type == InteractionResponseType.Pong) | ||||
@@ -65,12 +65,13 @@ namespace Discord.WebSocket | |||||
if (Discord.AlwaysAcknowledgeInteractions) | if (Discord.AlwaysAcknowledgeInteractions) | ||||
{ | { | ||||
await FollowupAsync(text, isTTS, embed, ephemeral, type, allowedMentions, options); | |||||
await FollowupAsync(text, isTTS, embeds, ephemeral, type, allowedMentions, options); | |||||
return; | return; | ||||
} | } | ||||
Preconditions.AtMost(allowedMentions?.RoleIds?.Count ?? 0, 100, nameof(allowedMentions.RoleIds), "A max of 100 role Ids are allowed."); | Preconditions.AtMost(allowedMentions?.RoleIds?.Count ?? 0, 100, nameof(allowedMentions.RoleIds), "A max of 100 role Ids are allowed."); | ||||
Preconditions.AtMost(allowedMentions?.UserIds?.Count ?? 0, 100, nameof(allowedMentions.UserIds), "A max of 100 user Ids are allowed."); | Preconditions.AtMost(allowedMentions?.UserIds?.Count ?? 0, 100, nameof(allowedMentions.UserIds), "A max of 100 user Ids are allowed."); | ||||
Preconditions.AtMost(embeds?.Length ?? 0, 10, nameof(embeds), "A max of 10 embeds are allowed."); | |||||
// check that user flag and user Id list are exclusive, same with role flag and role Id list | // check that user flag and user Id list are exclusive, same with role flag and role Id list | ||||
if (allowedMentions != null && allowedMentions.AllowedTypes.HasValue) | if (allowedMentions != null && allowedMentions.AllowedTypes.HasValue) | ||||
@@ -95,8 +96,8 @@ namespace Discord.WebSocket | |||||
Data = new API.InteractionApplicationCommandCallbackData(text) | Data = new API.InteractionApplicationCommandCallbackData(text) | ||||
{ | { | ||||
AllowedMentions = allowedMentions?.ToModel(), | AllowedMentions = allowedMentions?.ToModel(), | ||||
Embeds = embed != null | |||||
? new API.Embed[] { embed.ToModel() } | |||||
Embeds = embeds != null | |||||
? embeds.Select(x => x.ToModel()).ToArray() | |||||
: Optional<API.Embed[]>.Unspecified, | : Optional<API.Embed[]>.Unspecified, | ||||
TTS = isTTS, | TTS = isTTS, | ||||
Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional<API.ActionRowComponent[]>.Unspecified | Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional<API.ActionRowComponent[]>.Unspecified | ||||
@@ -110,7 +111,7 @@ namespace Discord.WebSocket | |||||
} | } | ||||
/// <inheritdoc/> | /// <inheritdoc/> | ||||
public override async Task<RestFollowupMessage> FollowupAsync(string text = null, bool isTTS = false, Embed embed = null, bool ephemeral = false, | |||||
public override async Task<RestFollowupMessage> FollowupAsync(string text = null, bool isTTS = false, Embed[] embeds = null, bool ephemeral = false, | |||||
InteractionResponseType type = InteractionResponseType.ChannelMessageWithSource, | InteractionResponseType type = InteractionResponseType.ChannelMessageWithSource, | ||||
AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null) | AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null) | ||||
{ | { | ||||
@@ -120,11 +121,16 @@ namespace Discord.WebSocket | |||||
if (!IsValidToken) | if (!IsValidToken) | ||||
throw new InvalidOperationException("Interaction token is no longer valid"); | throw new InvalidOperationException("Interaction token is no longer valid"); | ||||
Preconditions.AtMost(allowedMentions?.RoleIds?.Count ?? 0, 100, nameof(allowedMentions.RoleIds), "A max of 100 role Ids are allowed."); | |||||
Preconditions.AtMost(allowedMentions?.UserIds?.Count ?? 0, 100, nameof(allowedMentions.UserIds), "A max of 100 user Ids are allowed."); | |||||
Preconditions.AtMost(embeds?.Length ?? 0, 10, nameof(embeds), "A max of 10 embeds are allowed."); | |||||
var args = new API.Rest.CreateWebhookMessageParams(text) | var args = new API.Rest.CreateWebhookMessageParams(text) | ||||
{ | { | ||||
AllowedMentions = allowedMentions?.ToModel(), | |||||
IsTTS = isTTS, | IsTTS = isTTS, | ||||
Embeds = embed != null | |||||
? new API.Embed[] { embed.ToModel() } | |||||
Embeds = embeds != null | |||||
? embeds.Select(x => x.ToModel()).ToArray() | |||||
: Optional<API.Embed[]>.Unspecified, | : Optional<API.Embed[]>.Unspecified, | ||||
Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional<API.ActionRowComponent[]>.Unspecified | Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional<API.ActionRowComponent[]>.Unspecified | ||||
}; | }; | ||||
@@ -99,7 +99,7 @@ namespace Discord.WebSocket | |||||
/// Responds to an Interaction. | /// Responds to an Interaction. | ||||
/// <para> | /// <para> | ||||
/// If you have <see cref="DiscordSocketConfig.AlwaysAcknowledgeInteractions"/> set to <see langword="true"/>, You should use | /// If you have <see cref="DiscordSocketConfig.AlwaysAcknowledgeInteractions"/> set to <see langword="true"/>, You should use | ||||
/// <see cref="FollowupAsync(string, bool, Embed, bool, InteractionResponseType, AllowedMentions, RequestOptions, MessageComponent)"/> instead. | |||||
/// <see cref="FollowupAsync(string, bool, Embed[], bool, InteractionResponseType, AllowedMentions, RequestOptions, MessageComponent)"/> instead. | |||||
/// </para> | /// </para> | ||||
/// </summary> | /// </summary> | ||||
/// <param name="text">The text of the message to be sent.</param> | /// <param name="text">The text of the message to be sent.</param> | ||||
@@ -112,8 +112,46 @@ namespace Discord.WebSocket | |||||
/// <param name="component">A <see cref="MessageComponent"/> to be sent with this response</param> | /// <param name="component">A <see cref="MessageComponent"/> to be sent with this response</param> | ||||
/// <exception cref="ArgumentOutOfRangeException">Message content is too long, length must be less or equal to <see cref="DiscordConfig.MaxMessageSize"/>.</exception> | /// <exception cref="ArgumentOutOfRangeException">Message content is too long, length must be less or equal to <see cref="DiscordConfig.MaxMessageSize"/>.</exception> | ||||
/// <exception cref="InvalidOperationException">The parameters provided were invalid or the token was invalid.</exception> | /// <exception cref="InvalidOperationException">The parameters provided were invalid or the token was invalid.</exception> | ||||
public Task RespondAsync(string text = null, bool isTTS = false, Embed embed = null, InteractionResponseType type = InteractionResponseType.ChannelMessageWithSource, | |||||
bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null) | |||||
=> RespondAsync(text, isTTS, new Embed[] { embed }, type, ephemeral, allowedMentions, options, component); | |||||
public abstract Task RespondAsync(string text = null, bool isTTS = false, Embed embed = null, InteractionResponseType type = InteractionResponseType.ChannelMessageWithSource, | |||||
/// <summary> | |||||
/// Sends a followup message for this interaction. | |||||
/// </summary> | |||||
/// <param name="text">The text of the message to be sent</param> | |||||
/// <param name="isTTS"><see langword="true"/> if the message should be read out by a text-to-speech reader, otherwise <see langword="false"/>.</param> | |||||
/// <param name="embed">A <see cref="Embed"/> to send with this response</param> | |||||
/// <param name="type">The type of response to this Interaction.</param> | |||||
/// /// <param name="ephemeral"><see langword="true"/> if the response should be hidden to everyone besides the invoker of the command, otherwise <see langword="false"/>.</param> | |||||
/// <param name="allowedMentions">The allowed mentions for this response.</param> | |||||
/// <param name="options">The request options for this response.</param> | |||||
/// <param name="component">A <see cref="MessageComponent"/> to be sent with this response</param> | |||||
/// <returns> | |||||
/// The sent message. | |||||
/// </returns> | |||||
public Task FollowupAsync(string text = null, bool isTTS = false, Embed embed = null, InteractionResponseType type = InteractionResponseType.ChannelMessageWithSource, | |||||
bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null) | |||||
=> RespondAsync(text, isTTS, new Embed[] { embed }, type, ephemeral, allowedMentions, options, component); | |||||
/// <summary> | |||||
/// Responds to an Interaction. | |||||
/// <para> | |||||
/// If you have <see cref="DiscordSocketConfig.AlwaysAcknowledgeInteractions"/> set to <see langword="true"/>, You should use | |||||
/// <see cref="FollowupAsync(string, bool, Embed[], bool, InteractionResponseType, AllowedMentions, RequestOptions, MessageComponent)"/> instead. | |||||
/// </para> | |||||
/// </summary> | |||||
/// <param name="text">The text of the message to be sent.</param> | |||||
/// <param name="isTTS"><see langword="true"/> if the message should be read out by a text-to-speech reader, otherwise <see langword="false"/>.</param> | |||||
/// <param name="embeds">A array of embeds to send with this response. Max 10</param> | |||||
/// <param name="type">The type of response to this Interaction.</param> | |||||
/// <param name="ephemeral"><see langword="true"/> if the response should be hidden to everyone besides the invoker of the command, otherwise <see langword="false"/>.</param> | |||||
/// <param name="allowedMentions">The allowed mentions for this response.</param> | |||||
/// <param name="options">The request options for this response.</param> | |||||
/// <param name="component">A <see cref="MessageComponent"/> to be sent with this response</param> | |||||
/// <exception cref="ArgumentOutOfRangeException">Message content is too long, length must be less or equal to <see cref="DiscordConfig.MaxMessageSize"/>.</exception> | |||||
/// <exception cref="InvalidOperationException">The parameters provided were invalid or the token was invalid.</exception> | |||||
public abstract Task RespondAsync(string text = null, bool isTTS = false, Embed[] embeds = null, InteractionResponseType type = InteractionResponseType.ChannelMessageWithSource, | |||||
bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null); | bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null); | ||||
/// <summary> | /// <summary> | ||||
@@ -121,7 +159,7 @@ namespace Discord.WebSocket | |||||
/// </summary> | /// </summary> | ||||
/// <param name="text">The text of the message to be sent</param> | /// <param name="text">The text of the message to be sent</param> | ||||
/// <param name="isTTS"><see langword="true"/> if the message should be read out by a text-to-speech reader, otherwise <see langword="false"/>.</param> | /// <param name="isTTS"><see langword="true"/> if the message should be read out by a text-to-speech reader, otherwise <see langword="false"/>.</param> | ||||
/// <param name="embed">A <see cref="Embed"/> to send with this response.</param> | |||||
/// <param name="embeds">A array of embeds to send with this response. Max 10</param> | |||||
/// <param name="type">The type of response to this Interaction.</param> | /// <param name="type">The type of response to this Interaction.</param> | ||||
/// /// <param name="ephemeral"><see langword="true"/> if the response should be hidden to everyone besides the invoker of the command, otherwise <see langword="false"/>.</param> | /// /// <param name="ephemeral"><see langword="true"/> if the response should be hidden to everyone besides the invoker of the command, otherwise <see langword="false"/>.</param> | ||||
/// <param name="allowedMentions">The allowed mentions for this response.</param> | /// <param name="allowedMentions">The allowed mentions for this response.</param> | ||||
@@ -130,7 +168,7 @@ namespace Discord.WebSocket | |||||
/// <returns> | /// <returns> | ||||
/// The sent message. | /// The sent message. | ||||
/// </returns> | /// </returns> | ||||
public abstract Task<RestFollowupMessage> FollowupAsync(string text = null, bool isTTS = false, Embed embed = null, bool ephemeral = false, | |||||
public abstract Task<RestFollowupMessage> FollowupAsync(string text = null, bool isTTS = false, Embed[] embeds = null, bool ephemeral = false, | |||||
InteractionResponseType type = InteractionResponseType.ChannelMessageWithSource, | InteractionResponseType type = InteractionResponseType.ChannelMessageWithSource, | ||||
AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null); | AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null); | ||||
@@ -2,7 +2,7 @@ | |||||
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> | <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> | ||||
<metadata> | <metadata> | ||||
<id>Discord.Net.Labs</id> | <id>Discord.Net.Labs</id> | ||||
<version>2.4.6$suffix$</version> | |||||
<version>2.4.7$suffix$</version> | |||||
<title>Discord.Net Labs</title> | <title>Discord.Net Labs</title> | ||||
<authors>Discord.Net Contributors</authors> | <authors>Discord.Net Contributors</authors> | ||||
<owners>quinchs</owners> | <owners>quinchs</owners> | ||||
@@ -14,21 +14,21 @@ | |||||
<iconUrl>https://avatars.githubusercontent.com/u/84047264</iconUrl> | <iconUrl>https://avatars.githubusercontent.com/u/84047264</iconUrl> | ||||
<dependencies> | <dependencies> | ||||
<group targetFramework="net461"> | <group targetFramework="net461"> | ||||
<dependency id="Discord.Net.Labs.Core" version="2.4.4$suffix$" /> | |||||
<dependency id="Discord.Net.Labs.Core" version="2.4.5$suffix$" /> | |||||
<dependency id="Discord.Net.Labs.Rest" version="2.4.5$suffix$" /> | <dependency id="Discord.Net.Labs.Rest" version="2.4.5$suffix$" /> | ||||
<dependency id="Discord.Net.Labs.WebSocket" version="2.4.6$suffix$" /> | <dependency id="Discord.Net.Labs.WebSocket" version="2.4.6$suffix$" /> | ||||
<dependency id="Discord.Net.Labs.Commands" version="2.3.5$suffix$" /> | <dependency id="Discord.Net.Labs.Commands" version="2.3.5$suffix$" /> | ||||
<dependency id="Discord.Net.Labs.Webhook" version="2.3.4$suffix$" /> | <dependency id="Discord.Net.Labs.Webhook" version="2.3.4$suffix$" /> | ||||
</group> | </group> | ||||
<group targetFramework="netstandard2.0"> | <group targetFramework="netstandard2.0"> | ||||
<dependency id="Discord.Net.Labs.Core" version="2.4.4$suffix$" /> | |||||
<dependency id="Discord.Net.Labs.Core" version="2.4.5$suffix$" /> | |||||
<dependency id="Discord.Net.Labs.Rest" version="2.4.5$suffix$" /> | <dependency id="Discord.Net.Labs.Rest" version="2.4.5$suffix$" /> | ||||
<dependency id="Discord.Net.Labs.WebSocket" version="2.4.6$suffix$" /> | <dependency id="Discord.Net.Labs.WebSocket" version="2.4.6$suffix$" /> | ||||
<dependency id="Discord.Net.Labs.Commands" version="2.3.5$suffix$" /> | <dependency id="Discord.Net.Labs.Commands" version="2.3.5$suffix$" /> | ||||
<dependency id="Discord.Net.Labs.Webhook" version="2.3.4$suffix$" /> | <dependency id="Discord.Net.Labs.Webhook" version="2.3.4$suffix$" /> | ||||
</group> | </group> | ||||
<group targetFramework="netstandard2.1"> | <group targetFramework="netstandard2.1"> | ||||
<dependency id="Discord.Net.Labs.Core" version="2.4.4$suffix$" /> | |||||
<dependency id="Discord.Net.Labs.Core" version="2.4.5$suffix$" /> | |||||
<dependency id="Discord.Net.Labs.Rest" version="2.4.5$suffix$" /> | <dependency id="Discord.Net.Labs.Rest" version="2.4.5$suffix$" /> | ||||
<dependency id="Discord.Net.Labs.WebSocket" version="2.4.6$suffix$" /> | <dependency id="Discord.Net.Labs.WebSocket" version="2.4.6$suffix$" /> | ||||
<dependency id="Discord.Net.Labs.Commands" version="2.3.5$suffix$" /> | <dependency id="Discord.Net.Labs.Commands" version="2.3.5$suffix$" /> | ||||