From 57880de5b87d9f8afdc2852f11e6355023fe9fc4 Mon Sep 17 00:00:00 2001 From: Paulo Date: Mon, 15 Jun 2020 01:02:23 -0300 Subject: [PATCH 001/212] (ifcbrk) Add SearchUsersAsync (#1556) --- .../Entities/Guilds/IGuild.cs | 16 ++++++++++++ .../API/Rest/SearchGuildMembersParams.cs | 9 +++++++ src/Discord.Net.Rest/DiscordRestApiClient.cs | 16 ++++++++++++ .../Entities/Guilds/GuildHelper.cs | 11 ++++++++ .../Entities/Guilds/RestGuild.cs | 25 +++++++++++++++++++ .../Entities/Guilds/SocketGuild.cs | 25 +++++++++++++++++++ 6 files changed, 102 insertions(+) create mode 100644 src/Discord.Net.Rest/API/Rest/SearchGuildMembersParams.cs diff --git a/src/Discord.Net.Core/Entities/Guilds/IGuild.cs b/src/Discord.Net.Core/Entities/Guilds/IGuild.cs index cdf0118c4..81b5e8dd9 100644 --- a/src/Discord.Net.Core/Entities/Guilds/IGuild.cs +++ b/src/Discord.Net.Core/Entities/Guilds/IGuild.cs @@ -710,6 +710,22 @@ namespace Discord /// be or has been removed from this guild. /// Task PruneUsersAsync(int days = 30, bool simulate = false, RequestOptions options = null); + /// + /// Gets a collection of users in this guild that the name or nickname starts with the + /// provided at . + /// + /// + /// The can not be higher than . + /// + /// The partial name or nickname to search. + /// The maximum number of users to be gotten. + /// The that determines whether the object should be fetched from cache. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains a collection of guild + /// users that the name or nickname starts with the provided at . + /// + Task> SearchUsersAsync(string query, int limit = DiscordConfig.MaxUsersPerBatch, CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); /// /// Gets the specified number of audit log entries for this guild. diff --git a/src/Discord.Net.Rest/API/Rest/SearchGuildMembersParams.cs b/src/Discord.Net.Rest/API/Rest/SearchGuildMembersParams.cs new file mode 100644 index 000000000..7c933ff82 --- /dev/null +++ b/src/Discord.Net.Rest/API/Rest/SearchGuildMembersParams.cs @@ -0,0 +1,9 @@ +#pragma warning disable CS1591 +namespace Discord.API.Rest +{ + internal class SearchGuildMembersParams + { + public string Query { get; set; } + public Optional Limit { get; set; } + } +} diff --git a/src/Discord.Net.Rest/DiscordRestApiClient.cs b/src/Discord.Net.Rest/DiscordRestApiClient.cs index 732cb5f17..49a256378 100644 --- a/src/Discord.Net.Rest/DiscordRestApiClient.cs +++ b/src/Discord.Net.Rest/DiscordRestApiClient.cs @@ -1136,6 +1136,22 @@ namespace Discord.API await SendJsonAsync("PATCH", () => $"guilds/{guildId}/members/{userId}", args, ids, options: options).ConfigureAwait(false); } } + public async Task> SearchGuildMembersAsync(ulong guildId, SearchGuildMembersParams args, RequestOptions options = null) + { + Preconditions.NotEqual(guildId, 0, nameof(guildId)); + Preconditions.NotNull(args, nameof(args)); + Preconditions.GreaterThan(args.Limit, 0, nameof(args.Limit)); + Preconditions.AtMost(args.Limit, DiscordConfig.MaxUsersPerBatch, nameof(args.Limit)); + Preconditions.NotNullOrEmpty(args.Query, nameof(args.Query)); + options = RequestOptions.CreateOrClone(options); + + int limit = args.Limit.GetValueOrDefault(DiscordConfig.MaxUsersPerBatch); + string query = args.Query; + + var ids = new BucketIds(guildId: guildId); + Expression> endpoint = () => $"guilds/{guildId}/members/search?limit={limit}&query={query}"; + return await SendAsync>("GET", endpoint, ids, options: options).ConfigureAwait(false); + } //Guild Roles public async Task> GetGuildRolesAsync(ulong guildId, RequestOptions options = null) diff --git a/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs b/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs index 790b1e5c3..2b3219c21 100644 --- a/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs +++ b/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs @@ -387,6 +387,17 @@ namespace Discord.Rest model = await client.ApiClient.BeginGuildPruneAsync(guild.Id, args, options).ConfigureAwait(false); return model.Pruned; } + public static async Task> SearchUsersAsync(IGuild guild, BaseDiscordClient client, + string query, int? limit, RequestOptions options) + { + var apiArgs = new SearchGuildMembersParams + { + Query = query, + Limit = limit ?? Optional.Create() + }; + var models = await client.ApiClient.SearchGuildMembersAsync(guild.Id, apiArgs, options).ConfigureAwait(false); + return models.Select(x => RestGuildUser.Create(client, guild, x)).ToImmutableArray(); + } // Audit logs public static IAsyncEnumerable> GetAuditLogsAsync(IGuild guild, BaseDiscordClient client, diff --git a/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs b/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs index 900f5045e..f0b5be0f7 100644 --- a/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs +++ b/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs @@ -634,6 +634,23 @@ namespace Discord.Rest public Task PruneUsersAsync(int days = 30, bool simulate = false, RequestOptions options = null) => GuildHelper.PruneUsersAsync(this, Discord, days, simulate, options); + /// + /// Gets a collection of users in this guild that the name or nickname starts with the + /// provided at . + /// + /// + /// The can not be higher than . + /// + /// The partial name or nickname to search. + /// The maximum number of users to be gotten. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains a collection of guild + /// users that the name or nickname starts with the provided at . + /// + public Task> SearchUsersAsync(string query, int limit = DiscordConfig.MaxUsersPerBatch, RequestOptions options = null) + => GuildHelper.SearchUsersAsync(this, Discord, query, limit, options); + //Audit logs /// /// Gets the specified number of audit log entries for this guild. @@ -884,6 +901,14 @@ namespace Discord.Rest /// Downloading users is not supported for a REST-based guild. Task IGuild.DownloadUsersAsync() => throw new NotSupportedException(); + /// + async Task> IGuild.SearchUsersAsync(string query, int limit, CacheMode mode, RequestOptions options) + { + if (mode == CacheMode.AllowDownload) + return await SearchUsersAsync(query, limit, options).ConfigureAwait(false); + else + return ImmutableArray.Create(); + } async Task> IGuild.GetAuditLogsAsync(int limit, CacheMode cacheMode, RequestOptions options, ulong? beforeId, ulong? userId, ActionType? actionType) diff --git a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs index cdba2b67d..d2d759bb3 100644 --- a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs +++ b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs @@ -850,6 +850,23 @@ namespace Discord.WebSocket _downloaderPromise.TrySetResultAsync(true); } + /// + /// Gets a collection of users in this guild that the name or nickname starts with the + /// provided at . + /// + /// + /// The can not be higher than . + /// + /// The partial name or nickname to search. + /// The maximum number of users to be gotten. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains a collection of guild + /// users that the name or nickname starts with the provided at . + /// + public Task> SearchUsersAsync(string query, int limit = DiscordConfig.MaxUsersPerBatch, RequestOptions options = null) + => GuildHelper.SearchUsersAsync(this, Discord, query, limit, options); + //Audit logs /// /// Gets the specified number of audit log entries for this guild. @@ -1224,6 +1241,14 @@ namespace Discord.WebSocket /// Task IGuild.GetOwnerAsync(CacheMode mode, RequestOptions options) => Task.FromResult(Owner); + /// + async Task> IGuild.SearchUsersAsync(string query, int limit, CacheMode mode, RequestOptions options) + { + if (mode == CacheMode.AllowDownload) + return await SearchUsersAsync(query, limit, options).ConfigureAwait(false); + else + return ImmutableArray.Create(); + } /// async Task> IGuild.GetAuditLogsAsync(int limit, CacheMode cacheMode, RequestOptions options, From bd4672ae212c443f16f9e50a48d26ca4c6429085 Mon Sep 17 00:00:00 2001 From: Paulo Date: Mon, 15 Jun 2020 01:02:51 -0300 Subject: [PATCH 002/212] fix: InvalidOperationException at MESSAGE_CREATE (#1555) ## Summary If PartyId isn't present, Discord.Net will throw an InvalidOperationException and not raise `MessageReceived`. Got this a few times with my bot, stacktrace: ``` System.InvalidOperationException: This property has no value set. at Discord.Optional`1.get_Value() in ...\Discord.Net\src\Discord.Net.Core\Utils\Optional.cs:line 20 at Discord.WebSocket.SocketMessage.Update(ClientState state, Message model) in ...\Discord.Net\src\Discord.Net.WebSocket\Entities\Messages\SocketMessage.cs:line 157 at Discord.WebSocket.SocketUserMessage.Update(ClientState state, Message model) in ...\Discord.Net\src\Discord.Net.WebSocket\Entities\Messages\SocketUserMessage.cs:line 58 at Discord.WebSocket.SocketUserMessage.Create(DiscordSocketClient discord, ClientState state, SocketUser author, ISocketMessageChannel channel, Message model) in ...\Discord.Net\src\Discord.Net.WebSocket\Entities\Messages\SocketUserMessage.cs:line 53 at Discord.WebSocket.DiscordSocketClient.ProcessMessageAsync(GatewayOpCode opCode, Nullable`1 seq, String type, Object payload) in ...\Discord.Net\src\Discord.Net.WebSocket\DiscordSocketClient.cs:line 1210 ``` After looking all properties, this is the only one that could be blamed and was already fixed for `RestMessage`s, see #1337 ## Changes - `Value` to `GetValueOrDefault()` for `PartyId` --- src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs b/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs index 7900b7ee7..55902035c 100644 --- a/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs +++ b/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs @@ -140,7 +140,7 @@ namespace Discord.WebSocket Activity = new MessageActivity() { Type = model.Activity.Value.Type.Value, - PartyId = model.Activity.Value.PartyId.Value + PartyId = model.Activity.Value.PartyId.GetValueOrDefault() }; } From 42826df5e419c32cbec91288642466744db5e7cd Mon Sep 17 00:00:00 2001 From: Joe4evr Date: Mon, 15 Jun 2020 06:03:23 +0200 Subject: [PATCH 003/212] nit: minor refactor to switch expression (#1561) --- src/Discord.Net.Core/Utils/Comparers.cs | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/Discord.Net.Core/Utils/Comparers.cs b/src/Discord.Net.Core/Utils/Comparers.cs index 7ec9f5c74..3c7b8aa3c 100644 --- a/src/Discord.Net.Core/Utils/Comparers.cs +++ b/src/Discord.Net.Core/Utils/Comparers.cs @@ -41,16 +41,13 @@ namespace Discord { public override bool Equals(TEntity x, TEntity y) { - bool xNull = x == null; - bool yNull = y == null; - - if (xNull && yNull) - return true; - - if (xNull ^ yNull) - return false; - - return x.Id.Equals(y.Id); + return (x, y) switch + { + (null, null) => true, + (null, _) => false, + (_, null) => false, + var (l, r) => l.Id.Equals(r.Id) + }; } public override int GetHashCode(TEntity obj) From a89f0761f4674cd679b41e3844ed15c88ea01e58 Mon Sep 17 00:00:00 2001 From: Paulo Date: Mon, 15 Jun 2020 01:04:34 -0300 Subject: [PATCH 004/212] feature: Add MESSAGE_REACTION_REMOVE_EMOJI and RemoveAllReactionsForEmoteAsync (#1544) * Add event and method * Simplify convert to IEmote --- .../Entities/Messages/IMessage.cs | 9 ++++++ src/Discord.Net.Rest/DiscordRestApiClient.cs | 12 ++++++++ .../Entities/Messages/MessageHelper.cs | 5 ++++ .../Entities/Messages/RestMessage.cs | 3 ++ .../RemoveAllReactionsForEmoteEvent.cs | 16 +++++++++++ .../BaseSocketClient.Events.cs | 22 +++++++++++++++ .../DiscordShardedClient.cs | 1 + .../DiscordSocketClient.cs | 28 +++++++++++++++++++ .../Entities/Messages/SocketMessage.cs | 7 +++++ 9 files changed, 103 insertions(+) create mode 100644 src/Discord.Net.WebSocket/API/Gateway/RemoveAllReactionsForEmoteEvent.cs diff --git a/src/Discord.Net.Core/Entities/Messages/IMessage.cs b/src/Discord.Net.Core/Entities/Messages/IMessage.cs index aac526831..530c1cd82 100644 --- a/src/Discord.Net.Core/Entities/Messages/IMessage.cs +++ b/src/Discord.Net.Core/Entities/Messages/IMessage.cs @@ -215,6 +215,15 @@ namespace Discord /// A task that represents the asynchronous removal operation. /// Task RemoveAllReactionsAsync(RequestOptions options = null); + /// + /// Removes all reactions with a specific emoji from this message. + /// + /// The emoji used to react to this message. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous removal operation. + /// + Task RemoveAllReactionsForEmoteAsync(IEmote emote, RequestOptions options = null); /// /// Gets all users that reacted to a message with a given emote. diff --git a/src/Discord.Net.Rest/DiscordRestApiClient.cs b/src/Discord.Net.Rest/DiscordRestApiClient.cs index 49a256378..3ee22446c 100644 --- a/src/Discord.Net.Rest/DiscordRestApiClient.cs +++ b/src/Discord.Net.Rest/DiscordRestApiClient.cs @@ -660,6 +660,18 @@ namespace Discord.API await SendAsync("DELETE", () => $"channels/{channelId}/messages/{messageId}/reactions", ids, options: options).ConfigureAwait(false); } + public async Task RemoveAllReactionsForEmoteAsync(ulong channelId, ulong messageId, string emoji, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + Preconditions.NotEqual(messageId, 0, nameof(messageId)); + Preconditions.NotNullOrWhitespace(emoji, nameof(emoji)); + + options = RequestOptions.CreateOrClone(options); + + var ids = new BucketIds(channelId: channelId); + + await SendAsync("DELETE", () => $"channels/{channelId}/messages/{messageId}/reactions/{emoji}", ids, options: options).ConfigureAwait(false); + } public async Task> GetReactionUsersAsync(ulong channelId, ulong messageId, string emoji, GetReactionUsersParams args, RequestOptions options = null) { Preconditions.NotEqual(channelId, 0, nameof(channelId)); diff --git a/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs b/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs index 57f8b2509..d6a718b3a 100644 --- a/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs +++ b/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs @@ -78,6 +78,11 @@ namespace Discord.Rest await client.ApiClient.RemoveAllReactionsAsync(msg.Channel.Id, msg.Id, options).ConfigureAwait(false); } + public static async Task RemoveAllReactionsForEmoteAsync(IMessage msg, IEmote emote, BaseDiscordClient client, RequestOptions options) + { + await client.ApiClient.RemoveAllReactionsForEmoteAsync(msg.Channel.Id, msg.Id, emote is Emote e ? $"{e.Name}:{e.Id}" : emote.Name, options).ConfigureAwait(false); + } + public static IAsyncEnumerable> GetReactionUsersAsync(IMessage msg, IEmote emote, int? limit, BaseDiscordClient client, RequestOptions options) { diff --git a/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs b/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs index b4a33c76c..809a55e9c 100644 --- a/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs +++ b/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs @@ -182,6 +182,9 @@ namespace Discord.Rest public Task RemoveAllReactionsAsync(RequestOptions options = null) => MessageHelper.RemoveAllReactionsAsync(this, Discord, options); /// + public Task RemoveAllReactionsForEmoteAsync(IEmote emote, RequestOptions options = null) + => MessageHelper.RemoveAllReactionsForEmoteAsync(this, emote, Discord, options); + /// public IAsyncEnumerable> GetReactionUsersAsync(IEmote emote, int limit, RequestOptions options = null) => MessageHelper.GetReactionUsersAsync(this, emote, limit, Discord, options); } diff --git a/src/Discord.Net.WebSocket/API/Gateway/RemoveAllReactionsForEmoteEvent.cs b/src/Discord.Net.WebSocket/API/Gateway/RemoveAllReactionsForEmoteEvent.cs new file mode 100644 index 000000000..7f804d3f5 --- /dev/null +++ b/src/Discord.Net.WebSocket/API/Gateway/RemoveAllReactionsForEmoteEvent.cs @@ -0,0 +1,16 @@ +using Newtonsoft.Json; + +namespace Discord.API.Gateway +{ + internal class RemoveAllReactionsForEmoteEvent + { + [JsonProperty("channel_id")] + public ulong ChannelId { get; set; } + [JsonProperty("guild_id")] + public Optional GuildId { get; set; } + [JsonProperty("message_id")] + public ulong MessageId { get; set; } + [JsonProperty("emoji")] + public Emoji Emoji { get; set; } + } +} diff --git a/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs b/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs index 908314f6a..2cd62b3e8 100644 --- a/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs +++ b/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs @@ -234,6 +234,28 @@ namespace Discord.WebSocket remove { _reactionsClearedEvent.Remove(value); } } internal readonly AsyncEvent, ISocketMessageChannel, Task>> _reactionsClearedEvent = new AsyncEvent, ISocketMessageChannel, Task>>(); + /// + /// Fired when all reactions to a message with a specific emote are removed. + /// + /// + /// + /// This event is fired when all reactions to a message with a specific emote are removed. + /// The event handler must return a and accept a and + /// a as its parameters. + /// + /// + /// The channel where this message was sent will be passed into the parameter. + /// + /// + /// The emoji that all reactions had and were removed will be passed into the parameter. + /// + /// + public event Func, ISocketMessageChannel, IEmote, Task> ReactionsRemovedForEmote + { + add { _reactionsRemovedForEmoteEvent.Add(value); } + remove { _reactionsRemovedForEmoteEvent.Remove(value); } + } + internal readonly AsyncEvent, ISocketMessageChannel, IEmote, Task>> _reactionsRemovedForEmoteEvent = new AsyncEvent, ISocketMessageChannel, IEmote, Task>>(); //Roles /// Fired when a role is created. diff --git a/src/Discord.Net.WebSocket/DiscordShardedClient.cs b/src/Discord.Net.WebSocket/DiscordShardedClient.cs index 8359ca048..930ea1585 100644 --- a/src/Discord.Net.WebSocket/DiscordShardedClient.cs +++ b/src/Discord.Net.WebSocket/DiscordShardedClient.cs @@ -313,6 +313,7 @@ namespace Discord.WebSocket client.ReactionAdded += (cache, channel, reaction) => _reactionAddedEvent.InvokeAsync(cache, channel, reaction); client.ReactionRemoved += (cache, channel, reaction) => _reactionRemovedEvent.InvokeAsync(cache, channel, reaction); client.ReactionsCleared += (cache, channel) => _reactionsClearedEvent.InvokeAsync(cache, channel); + client.ReactionsRemovedForEmote += (cache, channel, emote) => _reactionsRemovedForEmoteEvent.InvokeAsync(cache, channel, emote); client.RoleCreated += (role) => _roleCreatedEvent.InvokeAsync(role); client.RoleDeleted += (role) => _roleDeletedEvent.InvokeAsync(role); diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index b56498061..10470365f 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -1391,6 +1391,34 @@ namespace Discord.WebSocket } } break; + case "MESSAGE_REACTION_REMOVE_EMOJI": + { + await _gatewayLogger.DebugAsync("Received Dispatch (MESSAGE_REACTION_REMOVE_EMOJI)").ConfigureAwait(false); + + var data = (payload as JToken).ToObject(_serializer); + if (State.GetChannel(data.ChannelId) is ISocketMessageChannel channel) + { + var cachedMsg = channel.GetCachedMessage(data.MessageId) as SocketUserMessage; + bool isCached = cachedMsg != null; + + var optionalMsg = !isCached + ? Optional.Create() + : Optional.Create(cachedMsg); + + var cacheable = new Cacheable(cachedMsg, data.MessageId, isCached, async () => await channel.GetMessageAsync(data.MessageId).ConfigureAwait(false) as IUserMessage); + var emote = data.Emoji.ToIEmote(); + + cachedMsg?.RemoveAllReactionsForEmoteAsync(emote); + + await TimedInvokeAsync(_reactionsRemovedForEmoteEvent, nameof(ReactionsRemovedForEmote), cacheable, channel, emote).ConfigureAwait(false); + } + else + { + await UnknownChannelAsync(type, data.ChannelId).ConfigureAwait(false); + return; + } + } + break; case "MESSAGE_DELETE_BULK": { await _gatewayLogger.DebugAsync("Received Dispatch (MESSAGE_DELETE_BULK)").ConfigureAwait(false); diff --git a/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs b/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs index 55902035c..f392614ad 100644 --- a/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs +++ b/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs @@ -200,6 +200,10 @@ namespace Discord.WebSocket { _reactions.Clear(); } + internal void RemoveReactionsForEmote(IEmote emote) + { + _reactions.RemoveAll(x => x.Emote.Equals(emote)); + } /// public Task AddReactionAsync(IEmote emote, RequestOptions options = null) @@ -214,6 +218,9 @@ namespace Discord.WebSocket public Task RemoveAllReactionsAsync(RequestOptions options = null) => MessageHelper.RemoveAllReactionsAsync(this, Discord, options); /// + public Task RemoveAllReactionsForEmoteAsync(IEmote emote, RequestOptions options = null) + => MessageHelper.RemoveAllReactionsForEmoteAsync(this, emote, Discord, options); + /// public IAsyncEnumerable> GetReactionUsersAsync(IEmote emote, int limit, RequestOptions options = null) => MessageHelper.GetReactionUsersAsync(this, emote, limit, Discord, options); } From 5430cc8df9d603b91648dcfce081386250afb37c Mon Sep 17 00:00:00 2001 From: Bram <35614609+BramEsendam@users.noreply.github.com> Date: Mon, 15 Jun 2020 06:11:05 +0200 Subject: [PATCH 005/212] fix: Sending 2 requests instead of 1 to create a Guild role. (#1557) The GuildHelper.CreateRoleAsync() was sending 2 requests to create a role. One to create the role, and one to modify the role that was created. This can be done in one request. So i have moved it to a single request to lower the amount of requests send to the api. This will also solve issue #1451. --- .../API/Rest/CreateGuildRoleParams.cs | 19 +++++++++++++++ src/Discord.Net.Rest/DiscordRestApiClient.cs | 4 ++-- .../Entities/Guilds/GuildHelper.cs | 23 +++++++++---------- 3 files changed, 32 insertions(+), 14 deletions(-) create mode 100644 src/Discord.Net.Rest/API/Rest/CreateGuildRoleParams.cs diff --git a/src/Discord.Net.Rest/API/Rest/CreateGuildRoleParams.cs b/src/Discord.Net.Rest/API/Rest/CreateGuildRoleParams.cs new file mode 100644 index 000000000..8ed15fe0e --- /dev/null +++ b/src/Discord.Net.Rest/API/Rest/CreateGuildRoleParams.cs @@ -0,0 +1,19 @@ +using Newtonsoft.Json; + +namespace Discord.API.Rest +{ + [JsonObject(MemberSerialization = MemberSerialization.OptIn)] + public class CreateGuildRoleParams + { + [JsonProperty("name")] + public Optional Name { get; set; } + [JsonProperty("permissions")] + public Optional Permissions { get; set; } + [JsonProperty("color")] + public Optional Color { get; set; } + [JsonProperty("hoist")] + public Optional Hoist { get; set; } + [JsonProperty("mentionable")] + public Optional Mentionable { get; set; } + } + } diff --git a/src/Discord.Net.Rest/DiscordRestApiClient.cs b/src/Discord.Net.Rest/DiscordRestApiClient.cs index 3ee22446c..f2dd2bf29 100644 --- a/src/Discord.Net.Rest/DiscordRestApiClient.cs +++ b/src/Discord.Net.Rest/DiscordRestApiClient.cs @@ -1174,13 +1174,13 @@ namespace Discord.API var ids = new BucketIds(guildId: guildId); return await SendAsync>("GET", () => $"guilds/{guildId}/roles", ids, options: options).ConfigureAwait(false); } - public async Task CreateGuildRoleAsync(ulong guildId, RequestOptions options = null) + public async Task CreateGuildRoleAsync(ulong guildId, Rest.CreateGuildRoleParams args, RequestOptions options = null) { Preconditions.NotEqual(guildId, 0, nameof(guildId)); options = RequestOptions.CreateOrClone(options); var ids = new BucketIds(guildId: guildId); - return await SendAsync("POST", () => $"guilds/{guildId}/roles", ids, options: options).ConfigureAwait(false); + return await SendJsonAsync("POST", () => $"guilds/{guildId}/roles", args, ids, options: options).ConfigureAwait(false); } public async Task DeleteGuildRoleAsync(ulong guildId, ulong roleId, RequestOptions options = null) { diff --git a/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs b/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs index 2b3219c21..286dd5dae 100644 --- a/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs +++ b/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs @@ -264,19 +264,18 @@ namespace Discord.Rest { if (name == null) throw new ArgumentNullException(paramName: nameof(name)); - var model = await client.ApiClient.CreateGuildRoleAsync(guild.Id, options).ConfigureAwait(false); - var role = RestRole.Create(client, guild, model); - - await role.ModifyAsync(x => + var createGuildRoleParams = new API.Rest.CreateGuildRoleParams { - x.Name = name; - x.Permissions = (permissions ?? role.Permissions); - x.Color = (color ?? Color.Default); - x.Hoist = isHoisted; - x.Mentionable = isMentionable; - }, options).ConfigureAwait(false); - - return role; + Color = color?.RawValue ?? Optional.Create(), + Hoist = isHoisted, + Mentionable = isMentionable, + Name = name, + Permissions = permissions?.RawValue ?? Optional.Create() + }; + + var model = await client.ApiClient.CreateGuildRoleAsync(guild.Id, createGuildRoleParams, options).ConfigureAwait(false); + + return RestRole.Create(client, guild, model); } //Users From 3df05399ead1b7f83e033bdbcba378da9a8cbf90 Mon Sep 17 00:00:00 2001 From: Christopher Felegy Date: Mon, 15 Jun 2020 00:29:16 -0400 Subject: [PATCH 006/212] nit: remove redundant CreateGuildRoleParams CreateGuildRoleParams is identical to ModifyGuildRoleParams, so just use the latter when creating new roles. --- .../API/Rest/CreateGuildRoleParams.cs | 19 ------------------- src/Discord.Net.Rest/DiscordRestApiClient.cs | 2 +- .../Entities/Guilds/GuildHelper.cs | 2 +- 3 files changed, 2 insertions(+), 21 deletions(-) delete mode 100644 src/Discord.Net.Rest/API/Rest/CreateGuildRoleParams.cs diff --git a/src/Discord.Net.Rest/API/Rest/CreateGuildRoleParams.cs b/src/Discord.Net.Rest/API/Rest/CreateGuildRoleParams.cs deleted file mode 100644 index 8ed15fe0e..000000000 --- a/src/Discord.Net.Rest/API/Rest/CreateGuildRoleParams.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Newtonsoft.Json; - -namespace Discord.API.Rest -{ - [JsonObject(MemberSerialization = MemberSerialization.OptIn)] - public class CreateGuildRoleParams - { - [JsonProperty("name")] - public Optional Name { get; set; } - [JsonProperty("permissions")] - public Optional Permissions { get; set; } - [JsonProperty("color")] - public Optional Color { get; set; } - [JsonProperty("hoist")] - public Optional Hoist { get; set; } - [JsonProperty("mentionable")] - public Optional Mentionable { get; set; } - } - } diff --git a/src/Discord.Net.Rest/DiscordRestApiClient.cs b/src/Discord.Net.Rest/DiscordRestApiClient.cs index f2dd2bf29..30984c0e9 100644 --- a/src/Discord.Net.Rest/DiscordRestApiClient.cs +++ b/src/Discord.Net.Rest/DiscordRestApiClient.cs @@ -1174,7 +1174,7 @@ namespace Discord.API var ids = new BucketIds(guildId: guildId); return await SendAsync>("GET", () => $"guilds/{guildId}/roles", ids, options: options).ConfigureAwait(false); } - public async Task CreateGuildRoleAsync(ulong guildId, Rest.CreateGuildRoleParams args, RequestOptions options = null) + public async Task CreateGuildRoleAsync(ulong guildId, Rest.ModifyGuildRoleParams args, RequestOptions options = null) { Preconditions.NotEqual(guildId, 0, nameof(guildId)); options = RequestOptions.CreateOrClone(options); diff --git a/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs b/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs index 286dd5dae..675847b58 100644 --- a/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs +++ b/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs @@ -264,7 +264,7 @@ namespace Discord.Rest { if (name == null) throw new ArgumentNullException(paramName: nameof(name)); - var createGuildRoleParams = new API.Rest.CreateGuildRoleParams + var createGuildRoleParams = new API.Rest.ModifyGuildRoleParams { Color = color?.RawValue ?? Optional.Create(), Hoist = isHoisted, From 3325031f043e615de9e90f955511c93ecad84683 Mon Sep 17 00:00:00 2001 From: Paulo Date: Tue, 16 Jun 2020 01:45:19 -0300 Subject: [PATCH 007/212] fix: AllowedMentions and AllowedMentionTypes (#1525) * Give proper values to flag enum * Add zero value * Initialize lists * Update xml docs --- .../Entities/Messages/AllowedMentionTypes.cs | 16 +++++++++++++--- .../Entities/Messages/AllowedMentions.cs | 4 ++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/Discord.Net.Core/Entities/Messages/AllowedMentionTypes.cs b/src/Discord.Net.Core/Entities/Messages/AllowedMentionTypes.cs index 3ce6531b7..ecd872d83 100644 --- a/src/Discord.Net.Core/Entities/Messages/AllowedMentionTypes.cs +++ b/src/Discord.Net.Core/Entities/Messages/AllowedMentionTypes.cs @@ -8,17 +8,27 @@ namespace Discord [Flags] public enum AllowedMentionTypes { + /// + /// No flag is set. + /// + /// + /// This flag is not used to control mentions. + /// + /// It will always be present and does not mean mentions will not be allowed. + /// + /// + None = 0, /// /// Controls role mentions. /// - Roles, + Roles = 1, /// /// Controls user mentions. /// - Users, + Users = 2, /// /// Controls @everyone and @here mentions. /// - Everyone, + Everyone = 4, } } diff --git a/src/Discord.Net.Core/Entities/Messages/AllowedMentions.cs b/src/Discord.Net.Core/Entities/Messages/AllowedMentions.cs index 9b168bbd0..d52feaa7d 100644 --- a/src/Discord.Net.Core/Entities/Messages/AllowedMentions.cs +++ b/src/Discord.Net.Core/Entities/Messages/AllowedMentions.cs @@ -39,7 +39,7 @@ namespace Discord /// flag of the property. If the flag is set, the value of this property /// must be null or empty. /// - public List RoleIds { get; set; } + public List RoleIds { get; set; } = new List(); /// /// Gets or sets the list of all user ids that will be mentioned. @@ -47,7 +47,7 @@ namespace Discord /// flag of the property. If the flag is set, the value of this property /// must be null or empty. /// - public List UserIds { get; set; } + public List UserIds { get; set; } = new List(); /// /// Initializes a new instance of the class. From 5227241ba5233e2e1989e1de348d02132f7ec4e8 Mon Sep 17 00:00:00 2001 From: Christopher Felegy Date: Tue, 16 Jun 2020 00:59:16 -0400 Subject: [PATCH 008/212] ci: force dotnet restore to run without cache --- azure/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure/build.yml b/azure/build.yml index 412e4a823..3399d7e3d 100644 --- a/azure/build.yml +++ b/azure/build.yml @@ -1,5 +1,5 @@ steps: -- script: dotnet restore -v minimal Discord.Net.sln +- script: dotnet restore --no-cache Discord.Net.sln displayName: Restore packages - script: dotnet build "Discord.Net.sln" --no-restore -v minimal -c $(buildConfiguration) /p:BuildNumber=$(buildNumber) /p:IsTagBuild=$(buildTag) From d5d10d32cf02b5b234075db5e83cd8664262c923 Mon Sep 17 00:00:00 2001 From: moiph Date: Wed, 17 Jun 2020 20:40:10 -0700 Subject: [PATCH 009/212] feature: Support Gateway Intents (#1566) * Support Gateway Intents Allows supplying gateway intents through DiscordSocketConfig which will be passed through the IDENTIFY payload, in order to choose what gateway events you want to receive. * Fixing enum casing * Feedback * Updating comment for GuildSubscriptions * Comment update --- src/Discord.Net.Core/GatewayIntents.cs | 41 +++++++++++++++++++ .../API/Gateway/IdentifyParams.cs | 4 +- .../DiscordSocketApiClient.cs | 10 +++-- .../DiscordSocketClient.cs | 6 ++- .../DiscordSocketConfig.cs | 11 +++++ 5 files changed, 66 insertions(+), 6 deletions(-) create mode 100644 src/Discord.Net.Core/GatewayIntents.cs diff --git a/src/Discord.Net.Core/GatewayIntents.cs b/src/Discord.Net.Core/GatewayIntents.cs new file mode 100644 index 000000000..e58fc07d1 --- /dev/null +++ b/src/Discord.Net.Core/GatewayIntents.cs @@ -0,0 +1,41 @@ +using System; + +namespace Discord +{ + [Flags] + public enum GatewayIntents + { + /// This intent includes no events + None = 0, + /// This intent includes GUILD_CREATE, GUILD_UPDATE, GUILD_DELETE, GUILD_ROLE_CREATE, GUILD_ROLE_UPDATE, GUILD_ROLE_DELETE, CHANNEL_CREATE, CHANNEL_UPDATE, CHANNEL_DELETE, CHANNEL_PINS_UPDATE + Guilds = 1 << 0, + /// This intent includes GUILD_MEMBER_ADD, GUILD_MEMBER_UPDATE, GUILD_MEMBER_REMOVE + GuildMembers = 1 << 1, + /// This intent includes GUILD_BAN_ADD, GUILD_BAN_REMOVE + GuildBans = 1 << 2, + /// This intent includes GUILD_EMOJIS_UPDATE + GuildEmojis = 1 << 3, + /// This intent includes GUILD_INTEGRATIONS_UPDATE + GuildIntegrations = 1 << 4, + /// This intent includes WEBHOOKS_UPDATE + GuildWebhooks = 1 << 5, + /// This intent includes INVITE_CREATE, INVITE_DELETE + GuildInvites = 1 << 6, + /// This intent includes VOICE_STATE_UPDATE + GuildVoiceStates = 1 << 7, + /// This intent includes PRESENCE_UPDATE + GuildPresences = 1 << 8, + /// This intent includes MESSAGE_CREATE, MESSAGE_UPDATE, MESSAGE_DELETE, MESSAGE_DELETE_BULK + GuildMessages = 1 << 9, + /// This intent includes MESSAGE_REACTION_ADD, MESSAGE_REACTION_REMOVE, MESSAGE_REACTION_REMOVE_ALL, MESSAGE_REACTION_REMOVE_EMOJI + GuildMessageReactions = 1 << 10, + /// This intent includes TYPING_START + GuildMessageTyping = 1 << 11, + /// This intent includes CHANNEL_CREATE, MESSAGE_CREATE, MESSAGE_UPDATE, MESSAGE_DELETE, CHANNEL_PINS_UPDATE + DirectMessages = 1 << 12, + /// This intent includes MESSAGE_REACTION_ADD, MESSAGE_REACTION_REMOVE, MESSAGE_REACTION_REMOVE_ALL, MESSAGE_REACTION_REMOVE_EMOJI + DirectMessageReactions = 1 << 13, + /// This intent includes TYPING_START + DirectMessageTyping = 1 << 14, + } +} diff --git a/src/Discord.Net.WebSocket/API/Gateway/IdentifyParams.cs b/src/Discord.Net.WebSocket/API/Gateway/IdentifyParams.cs index 1e0bf71c2..e3e24491d 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/IdentifyParams.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/IdentifyParams.cs @@ -1,4 +1,4 @@ -#pragma warning disable CS1591 +#pragma warning disable CS1591 using Newtonsoft.Json; using System.Collections.Generic; @@ -17,5 +17,7 @@ namespace Discord.API.Gateway public Optional ShardingParams { get; set; } [JsonProperty("guild_subscriptions")] public Optional GuildSubscriptions { get; set; } + [JsonProperty("intents")] + public Optional Intents { get; set; } } } diff --git a/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs b/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs index ef97615e2..1b21bd666 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs @@ -209,7 +209,7 @@ namespace Discord.API await _sentGatewayMessageEvent.InvokeAsync(opCode).ConfigureAwait(false); } - public async Task SendIdentifyAsync(int largeThreshold = 100, int shardID = 0, int totalShards = 1, bool guildSubscriptions = true, RequestOptions options = null) + public async Task SendIdentifyAsync(int largeThreshold = 100, int shardID = 0, int totalShards = 1, bool guildSubscriptions = true, GatewayIntents? gatewayIntents = null, RequestOptions options = null) { options = RequestOptions.CreateOrClone(options); var props = new Dictionary @@ -220,12 +220,16 @@ namespace Discord.API { Token = AuthToken, Properties = props, - LargeThreshold = largeThreshold, - GuildSubscriptions = guildSubscriptions + LargeThreshold = largeThreshold }; if (totalShards > 1) msg.ShardingParams = new int[] { shardID, totalShards }; + if (gatewayIntents.HasValue) + msg.Intents = (int)gatewayIntents.Value; + else + msg.GuildSubscriptions = guildSubscriptions; + await SendGatewayAsync(GatewayOpCode.Identify, msg, options: options).ConfigureAwait(false); } public async Task SendResumeAsync(string sessionId, int lastSeq, RequestOptions options = null) diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 10470365f..d19f3f90c 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -44,6 +44,7 @@ namespace Discord.WebSocket private RestApplication _applicationInfo; private bool _isDisposed; private bool _guildSubscriptions; + private GatewayIntents? _gatewayIntents; /// /// Provides access to a REST-only client with a shared state from this client. @@ -137,6 +138,7 @@ namespace Discord.WebSocket Rest = new DiscordSocketRestClient(config, ApiClient); _heartbeatTimes = new ConcurrentQueue(); _guildSubscriptions = config.GuildSubscriptions; + _gatewayIntents = config.GatewayIntents; _stateLock = new SemaphoreSlim(1, 1); _gatewayLogger = LogManager.CreateLogger(ShardId == 0 && TotalShards == 1 ? "Gateway" : $"Shard #{ShardId}"); @@ -242,7 +244,7 @@ namespace Discord.WebSocket else { await _gatewayLogger.DebugAsync("Identifying").ConfigureAwait(false); - await ApiClient.SendIdentifyAsync(shardID: ShardId, totalShards: TotalShards, guildSubscriptions: _guildSubscriptions).ConfigureAwait(false); + await ApiClient.SendIdentifyAsync(shardID: ShardId, totalShards: TotalShards, guildSubscriptions: _guildSubscriptions, gatewayIntents: _gatewayIntents).ConfigureAwait(false); } //Wait for READY @@ -517,7 +519,7 @@ namespace Discord.WebSocket _sessionId = null; _lastSeq = 0; - await ApiClient.SendIdentifyAsync(shardID: ShardId, totalShards: TotalShards).ConfigureAwait(false); + await ApiClient.SendIdentifyAsync(shardID: ShardId, totalShards: TotalShards, guildSubscriptions: _guildSubscriptions, gatewayIntents: _gatewayIntents).ConfigureAwait(false); } break; case GatewayOpCode.Reconnect: diff --git a/src/Discord.Net.WebSocket/DiscordSocketConfig.cs b/src/Discord.Net.WebSocket/DiscordSocketConfig.cs index 98ab0ef9b..4b33c770f 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketConfig.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketConfig.cs @@ -121,9 +121,20 @@ namespace Discord.WebSocket /// /// Gets or sets enabling dispatching of guild subscription events e.g. presence and typing events. + /// This is not used if are provided. /// public bool GuildSubscriptions { get; set; } = true; + /// + /// Gets or sets gateway intents to limit what events are sent from Discord. Allows for more granular control than the property. + /// + /// + /// For more information, please see + /// GatewayIntents + /// on the official Discord API documentation. + /// + public GatewayIntents? GatewayIntents { get; set; } + /// /// Initializes a default configuration. /// From f2130f8513ad0c8ae465d50c3305086fca8281ef Mon Sep 17 00:00:00 2001 From: Paulo Date: Thu, 18 Jun 2020 00:48:45 -0300 Subject: [PATCH 010/212] feature: Add Direction.Around to GetMessagesAsync (#1526) * Add Direction.Around to GetMessagesAsync * Reuse the method * Reuse GetMany * Fix limit when getting from cache without message id * Fix limit when getting from rest without message id * Change cache return It will return in a similar way to REST --- .../Entities/Channels/ChannelHelper.cs | 13 ++++-- .../Entities/Channels/SocketChannelHelper.cs | 43 +++++++++++-------- .../Entities/Messages/MessageCache.cs | 14 +++++- 3 files changed, 47 insertions(+), 23 deletions(-) diff --git a/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs b/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs index aa90b2eee..b424cbe32 100644 --- a/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs +++ b/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs @@ -109,12 +109,19 @@ namespace Discord.Rest public static IAsyncEnumerable> GetMessagesAsync(IMessageChannel channel, BaseDiscordClient client, ulong? fromMessageId, Direction dir, int limit, RequestOptions options) { - if (dir == Direction.Around) - throw new NotImplementedException(); //TODO: Impl - var guildId = (channel as IGuildChannel)?.GuildId; var guild = guildId != null ? (client as IDiscordClient).GetGuildAsync(guildId.Value, CacheMode.CacheOnly).Result : null; + if (dir == Direction.Around && limit > DiscordConfig.MaxMessagesPerBatch) + { + int around = limit / 2; + if (fromMessageId.HasValue) + return GetMessagesAsync(channel, client, fromMessageId.Value + 1, Direction.Before, around + 1, options) //Need to include the message itself + .Concat(GetMessagesAsync(channel, client, fromMessageId, Direction.After, around, options)); + else //Shouldn't happen since there's no public overload for ulong? and Direction + return GetMessagesAsync(channel, client, null, Direction.Before, around + 1, options); + } + return new PagedAsyncEnumerable( DiscordConfig.MaxMessagesPerBatch, async (info, ct) => diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketChannelHelper.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketChannelHelper.cs index e6339b6d9..5cfbcc1a8 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketChannelHelper.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketChannelHelper.cs @@ -11,23 +11,11 @@ namespace Discord.WebSocket public static IAsyncEnumerable> GetMessagesAsync(ISocketMessageChannel channel, DiscordSocketClient discord, MessageCache messages, ulong? fromMessageId, Direction dir, int limit, CacheMode mode, RequestOptions options) { - if (dir == Direction.Around) - throw new NotImplementedException(); //TODO: Impl - - IReadOnlyCollection cachedMessages = null; - IAsyncEnumerable> result = null; - if (dir == Direction.After && fromMessageId == null) return AsyncEnumerable.Empty>(); - if (dir == Direction.Before || mode == CacheMode.CacheOnly) - { - if (messages != null) //Cache enabled - cachedMessages = messages.GetMany(fromMessageId, dir, limit); - else - cachedMessages = ImmutableArray.Create(); - result = ImmutableArray.Create(cachedMessages).ToAsyncEnumerable>(); - } + var cachedMessages = GetCachedMessages(channel, discord, messages, fromMessageId, dir, limit); + var result = ImmutableArray.Create(cachedMessages).ToAsyncEnumerable>(); if (dir == Direction.Before) { @@ -38,18 +26,35 @@ namespace Discord.WebSocket //Download remaining messages ulong? minId = cachedMessages.Count > 0 ? cachedMessages.Min(x => x.Id) : fromMessageId; var downloadedMessages = ChannelHelper.GetMessagesAsync(channel, discord, minId, dir, limit, options); - return result.Concat(downloadedMessages); + if (cachedMessages.Count != 0) + return result.Concat(downloadedMessages); + else + return downloadedMessages; } - else + else if (dir == Direction.After) + { + limit -= cachedMessages.Count; + if (mode == CacheMode.CacheOnly || limit <= 0) + return result; + + //Download remaining messages + ulong maxId = cachedMessages.Count > 0 ? cachedMessages.Max(x => x.Id) : fromMessageId.Value; + var downloadedMessages = ChannelHelper.GetMessagesAsync(channel, discord, maxId, dir, limit, options); + if (cachedMessages.Count != 0) + return result.Concat(downloadedMessages); + else + return downloadedMessages; + } + else //Direction.Around { - if (mode == CacheMode.CacheOnly) + if (mode == CacheMode.CacheOnly || limit <= cachedMessages.Count) return result; - //Dont use cache in this case + //Cache isn't useful here since Discord will send them anyways return ChannelHelper.GetMessagesAsync(channel, discord, fromMessageId, dir, limit, options); } } - public static IReadOnlyCollection GetCachedMessages(SocketChannel channel, DiscordSocketClient discord, MessageCache messages, + public static IReadOnlyCollection GetCachedMessages(ISocketMessageChannel channel, DiscordSocketClient discord, MessageCache messages, ulong? fromMessageId, Direction dir, int limit) { if (messages != null) //Cache enabled diff --git a/src/Discord.Net.WebSocket/Entities/Messages/MessageCache.cs b/src/Discord.Net.WebSocket/Entities/Messages/MessageCache.cs index 24e46df46..6baf56879 100644 --- a/src/Discord.Net.WebSocket/Entities/Messages/MessageCache.cs +++ b/src/Discord.Net.WebSocket/Entities/Messages/MessageCache.cs @@ -56,11 +56,23 @@ namespace Discord.WebSocket cachedMessageIds = _orderedMessages; else if (dir == Direction.Before) cachedMessageIds = _orderedMessages.Where(x => x < fromMessageId.Value); - else + else if (dir == Direction.After) cachedMessageIds = _orderedMessages.Where(x => x > fromMessageId.Value); + else //Direction.Around + { + if (!_messages.TryGetValue(fromMessageId.Value, out SocketMessage msg)) + return ImmutableArray.Empty; + int around = limit / 2; + var before = GetMany(fromMessageId, Direction.Before, around); + var after = GetMany(fromMessageId, Direction.After, around).Reverse(); + + return after.Concat(new SocketMessage[] { msg }).Concat(before).ToImmutableArray(); + } if (dir == Direction.Before) cachedMessageIds = cachedMessageIds.Reverse(); + if (dir == Direction.Around) //Only happens if fromMessageId is null, should only get "around" and itself (+1) + limit = limit / 2 + 1; return cachedMessageIds .Select(x => From ab32607bccde1232c0507c111a9cc1de62485669 Mon Sep 17 00:00:00 2001 From: Paulo Date: Thu, 18 Jun 2020 00:51:50 -0300 Subject: [PATCH 011/212] (ifcbrk) fix: Add AllowedMentions to SendFileAsync (#1531) * Add AllowedMentions to SendFileAsync * Update xml reference and mocked channels --- .../Entities/Channels/IMessageChannel.cs | 12 +++++++-- .../Entities/Users/IGuildUser.cs | 2 +- .../API/Rest/UploadFileParams.cs | 3 +++ .../Entities/Channels/ChannelHelper.cs | 27 ++++++++++++++++--- .../Entities/Channels/IRestMessageChannel.cs | 18 ++++++++++--- .../Entities/Channels/RestDMChannel.cs | 16 +++++------ .../Entities/Channels/RestGroupChannel.cs | 16 +++++------ .../Entities/Channels/RestTextChannel.cs | 16 +++++------ .../Channels/ISocketMessageChannel.cs | 16 ++++++++--- .../Entities/Channels/SocketDMChannel.cs | 16 +++++------ .../Entities/Channels/SocketGroupChannel.cs | 16 +++++------ .../Entities/Channels/SocketTextChannel.cs | 16 +++++------ .../MockedEntities/MockedDMChannel.cs | 4 +-- .../MockedEntities/MockedGroupChannel.cs | 4 +-- .../MockedEntities/MockedTextChannel.cs | 4 +-- 15 files changed, 117 insertions(+), 69 deletions(-) diff --git a/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs b/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs index f5b986295..030a278bc 100644 --- a/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs +++ b/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs @@ -59,11 +59,15 @@ namespace Discord /// The to be sent. /// The options to be used when sending the request. /// Whether the message attachment should be hidden as a spoiler. + /// + /// Specifies if notifications are sent for mentioned users and roles in the message . + /// If null, all mentioned roles and users will be notified. + /// /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false); + Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null); /// /// Sends a file to this message channel with an optional caption. /// @@ -88,11 +92,15 @@ namespace Discord /// The to be sent. /// The options to be used when sending the request. /// Whether the message attachment should be hidden as a spoiler. + /// + /// Specifies if notifications are sent for mentioned users and roles in the message . + /// If null, all mentioned roles and users will be notified. + /// /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false); + Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null); /// /// Gets a message from this message channel. diff --git a/src/Discord.Net.Core/Entities/Users/IGuildUser.cs b/src/Discord.Net.Core/Entities/Users/IGuildUser.cs index 60fa06cbd..92b146e05 100644 --- a/src/Discord.Net.Core/Entities/Users/IGuildUser.cs +++ b/src/Discord.Net.Core/Entities/Users/IGuildUser.cs @@ -73,7 +73,7 @@ namespace Discord /// /// /// The following example checks if the current user has the ability to send a message with attachment in - /// this channel; if so, uploads a file via . + /// this channel; if so, uploads a file via . /// /// if (currentUser?.GetPermissions(targetChannel)?.AttachFiles) /// await targetChannel.SendFileAsync("fortnite.png"); diff --git a/src/Discord.Net.Rest/API/Rest/UploadFileParams.cs b/src/Discord.Net.Rest/API/Rest/UploadFileParams.cs index 7ba21d012..64535e6d7 100644 --- a/src/Discord.Net.Rest/API/Rest/UploadFileParams.cs +++ b/src/Discord.Net.Rest/API/Rest/UploadFileParams.cs @@ -19,6 +19,7 @@ namespace Discord.API.Rest public Optional Nonce { get; set; } public Optional IsTTS { get; set; } public Optional Embed { get; set; } + public Optional AllowedMentions { get; set; } public bool IsSpoiler { get; set; } = false; public UploadFileParams(Stream file) @@ -43,6 +44,8 @@ namespace Discord.API.Rest payload["nonce"] = Nonce.Value; if (Embed.IsSpecified) payload["embed"] = Embed.Value; + if (AllowedMentions.IsSpecified) + payload["allowed_mentions"] = AllowedMentions.Value; if (IsSpoiler) payload["hasSpoiler"] = IsSpoiler.ToString(); diff --git a/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs b/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs index b424cbe32..55b6f03a4 100644 --- a/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs +++ b/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs @@ -225,18 +225,37 @@ namespace Discord.Rest /// An I/O error occurred while opening the file. /// Message content is too long, length must be less or equal to . public static async Task SendFileAsync(IMessageChannel channel, BaseDiscordClient client, - string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler) + string filePath, string text, bool isTTS, Embed embed, AllowedMentions allowedMentions, RequestOptions options, bool isSpoiler) { string filename = Path.GetFileName(filePath); using (var file = File.OpenRead(filePath)) - return await SendFileAsync(channel, client, file, filename, text, isTTS, embed, options, isSpoiler).ConfigureAwait(false); + return await SendFileAsync(channel, client, file, filename, text, isTTS, embed, allowedMentions, options, isSpoiler).ConfigureAwait(false); } /// Message content is too long, length must be less or equal to . public static async Task SendFileAsync(IMessageChannel channel, BaseDiscordClient client, - Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler) + Stream stream, string filename, string text, bool isTTS, Embed embed, AllowedMentions allowedMentions, RequestOptions options, bool isSpoiler) { - var args = new UploadFileParams(stream) { Filename = filename, Content = text, IsTTS = isTTS, Embed = embed != null ? embed.ToModel() : Optional.Unspecified, IsSpoiler = isSpoiler }; + 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."); + + // 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.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Users) && + allowedMentions.UserIds != null && allowedMentions.UserIds.Count > 0) + { + throw new ArgumentException("The Users flag is mutually exclusive with the list of User Ids.", nameof(allowedMentions)); + } + + if (allowedMentions.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Roles) && + allowedMentions.RoleIds != null && allowedMentions.RoleIds.Count > 0) + { + throw new ArgumentException("The Roles flag is mutually exclusive with the list of Role Ids.", nameof(allowedMentions)); + } + } + + var args = new UploadFileParams(stream) { Filename = filename, Content = text, IsTTS = isTTS, Embed = embed?.ToModel() ?? Optional.Unspecified, AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, IsSpoiler = isSpoiler }; var model = await client.ApiClient.UploadFileAsync(channel.Id, args, options).ConfigureAwait(false); return RestUserMessage.Create(client, channel, client.CurrentUser, model); } diff --git a/src/Discord.Net.Rest/Entities/Channels/IRestMessageChannel.cs b/src/Discord.Net.Rest/Entities/Channels/IRestMessageChannel.cs index 195fa92df..d02b293ef 100644 --- a/src/Discord.Net.Rest/Entities/Channels/IRestMessageChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/IRestMessageChannel.cs @@ -34,7 +34,7 @@ namespace Discord.Rest /// /// /// This method follows the same behavior as described in - /// . Please visit + /// . Please visit /// its documentation for more details on this method. /// /// The file path of the file. @@ -42,16 +42,21 @@ namespace Discord.Rest /// Whether the message should be read aloud by Discord or not. /// The to be sent. /// The options to be used when sending the request. + /// Whether the message attachment should be hidden as a spoiler. + /// + /// Specifies if notifications are sent for mentioned users and roles in the message . + /// If null, all mentioned roles and users will be notified. + /// /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - new Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false); + new Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null); /// /// Sends a file to this message channel with an optional caption. /// /// - /// This method follows the same behavior as described in . + /// This method follows the same behavior as described in . /// Please visit its documentation for more details on this method. /// /// The of the file to be sent. @@ -60,11 +65,16 @@ namespace Discord.Rest /// Whether the message should be read aloud by Discord or not. /// The to be sent. /// The options to be used when sending the request. + /// Whether the message attachment should be hidden as a spoiler. + /// + /// Specifies if notifications are sent for mentioned users and roles in the message . + /// If null, all mentioned roles and users will be notified. + /// /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - new Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false); + new Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null); /// /// Gets a message from this message channel. diff --git a/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs index 732af2d81..0f29f9d77 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs @@ -121,12 +121,12 @@ namespace Discord.Rest /// is in an invalid format. /// An I/O error occurred while opening the file. /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false) - => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, options, isSpoiler); + public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) + => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, options, isSpoiler); /// /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false) - => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, options, isSpoiler); + public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) + => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, options, isSpoiler); /// public Task DeleteMessageAsync(ulong messageId, RequestOptions options = null) @@ -200,11 +200,11 @@ namespace Discord.Rest async Task> IMessageChannel.GetPinnedMessagesAsync(RequestOptions options) => await GetPinnedMessagesAsync(options).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler) - => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions) + => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler) - => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions) + => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions).ConfigureAwait(false); /// async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions) => await SendMessageAsync(text, isTTS, embed, options, allowedMentions).ConfigureAwait(false); diff --git a/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs index 3c21bd95f..4361fd281 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs @@ -123,12 +123,12 @@ namespace Discord.Rest /// is in an invalid format. /// An I/O error occurred while opening the file. /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false) - => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, options, isSpoiler); + public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) + => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, options, isSpoiler); /// /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false) - => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, options, isSpoiler); + public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) + => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, options, isSpoiler); /// public Task TriggerTypingAsync(RequestOptions options = null) @@ -178,11 +178,11 @@ namespace Discord.Rest async Task> IMessageChannel.GetPinnedMessagesAsync(RequestOptions options) => await GetPinnedMessagesAsync(options).ConfigureAwait(false); - async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler) - => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions) + => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions).ConfigureAwait(false); - async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler) - => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions) + => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions).ConfigureAwait(false); async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions) => await SendMessageAsync(text, isTTS, embed, options, allowedMentions).ConfigureAwait(false); diff --git a/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs index cecd0a4d2..c7ff7fa65 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs @@ -129,13 +129,13 @@ namespace Discord.Rest /// is in an invalid format. /// An I/O error occurred while opening the file. /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false) - => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, options, isSpoiler); + public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) + => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, options, isSpoiler); /// /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false) - => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, options, isSpoiler); + public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) + => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, options, isSpoiler); /// public Task DeleteMessageAsync(ulong messageId, RequestOptions options = null) @@ -266,12 +266,12 @@ namespace Discord.Rest => await GetPinnedMessagesAsync(options).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler) - => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions) + => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler) - => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions) + => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions).ConfigureAwait(false); /// async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions) => await SendMessageAsync(text, isTTS, embed, options, allowedMentions).ConfigureAwait(false); diff --git a/src/Discord.Net.WebSocket/Entities/Channels/ISocketMessageChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/ISocketMessageChannel.cs index 378478dcc..e8511f1f5 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/ISocketMessageChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/ISocketMessageChannel.cs @@ -42,7 +42,7 @@ namespace Discord.WebSocket /// Sends a file to this message channel with an optional caption. /// /// - /// This method follows the same behavior as described in . + /// This method follows the same behavior as described in . /// Please visit its documentation for more details on this method. /// /// The file path of the file. @@ -51,16 +51,20 @@ namespace Discord.WebSocket /// The to be sent. /// The options to be used when sending the request. /// Whether the message attachment should be hidden as a spoiler. + /// + /// Specifies if notifications are sent for mentioned users and roles in the message . + /// If null, all mentioned roles and users will be notified. + /// /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - new Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false); + new Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null); /// /// Sends a file to this message channel with an optional caption. /// /// - /// This method follows the same behavior as described in . + /// This method follows the same behavior as described in . /// Please visit its documentation for more details on this method. /// /// The of the file to be sent. @@ -70,11 +74,15 @@ namespace Discord.WebSocket /// The to be sent. /// The options to be used when sending the request. /// Whether the message attachment should be hidden as a spoiler. + /// + /// Specifies if notifications are sent for mentioned users and roles in the message . + /// If null, all mentioned roles and users will be notified. + /// /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - new Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false); + new Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null); /// /// Gets a cached message from this channel. diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs index 11259a31e..527685578 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs @@ -139,12 +139,12 @@ namespace Discord.WebSocket => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, options); /// - public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false) - => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, options, isSpoiler); + public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) + => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, options, isSpoiler); /// /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false) - => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, options, isSpoiler); + public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) + => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, options, isSpoiler); /// public Task DeleteMessageAsync(ulong messageId, RequestOptions options = null) => ChannelHelper.DeleteMessageAsync(this, messageId, Discord, options); @@ -229,11 +229,11 @@ namespace Discord.WebSocket async Task> IMessageChannel.GetPinnedMessagesAsync(RequestOptions options) => await GetPinnedMessagesAsync(options).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler) - => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions) + => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler) - => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions) + => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions).ConfigureAwait(false); /// async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions) => await SendMessageAsync(text, isTTS, embed, options, allowedMentions).ConfigureAwait(false); diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs index c57c37db2..b95bbffc1 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs @@ -167,11 +167,11 @@ namespace Discord.WebSocket => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, options); /// - public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false) - => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, options, isSpoiler); + public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) + => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, options, isSpoiler); /// - public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false) - => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, options, isSpoiler); + public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) + => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, options, isSpoiler); /// public Task DeleteMessageAsync(ulong messageId, RequestOptions options = null) @@ -293,11 +293,11 @@ namespace Discord.WebSocket => await GetPinnedMessagesAsync(options).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler) - => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions) + => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler) - => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions) + => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions).ConfigureAwait(false); /// async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions) => await SendMessageAsync(text, isTTS, embed, options, allowedMentions).ConfigureAwait(false); diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs index 1b3b5bcd7..e49e3ed37 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs @@ -165,13 +165,13 @@ namespace Discord.WebSocket => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, options); /// - public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false) - => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, options, isSpoiler); + public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) + => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, options, isSpoiler); /// /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false) - => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, options, isSpoiler); + public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) + => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, options, isSpoiler); /// public Task DeleteMessagesAsync(IEnumerable messages, RequestOptions options = null) @@ -302,11 +302,11 @@ namespace Discord.WebSocket => await GetPinnedMessagesAsync(options).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler) - => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions) + => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler) - => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions) + => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions).ConfigureAwait(false); /// async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions) => await SendMessageAsync(text, isTTS, embed, options, allowedMentions).ConfigureAwait(false); diff --git a/test/Discord.Net.Tests.Unit/MockedEntities/MockedDMChannel.cs b/test/Discord.Net.Tests.Unit/MockedEntities/MockedDMChannel.cs index c8d68fb4d..870c05812 100644 --- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedDMChannel.cs +++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedDMChannel.cs @@ -73,12 +73,12 @@ namespace Discord throw new NotImplementedException(); } - public Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false) + public Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) { throw new NotImplementedException(); } - public Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false) + public Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) { throw new NotImplementedException(); } diff --git a/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs b/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs index 5a26b713f..31df719da 100644 --- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs +++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs @@ -81,12 +81,12 @@ namespace Discord throw new NotImplementedException(); } - public Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false) + public Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) { throw new NotImplementedException(); } - public Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false) + public Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) { throw new NotImplementedException(); } diff --git a/test/Discord.Net.Tests.Unit/MockedEntities/MockedTextChannel.cs b/test/Discord.Net.Tests.Unit/MockedEntities/MockedTextChannel.cs index a57c72899..a95a91f5c 100644 --- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedTextChannel.cs +++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedTextChannel.cs @@ -167,12 +167,12 @@ namespace Discord throw new NotImplementedException(); } - public Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false) + public Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) { throw new NotImplementedException(); } - public Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false) + public Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) { throw new NotImplementedException(); } From a51cdf60a20e7e07fe5c19baadaa704e1e2091bf Mon Sep 17 00:00:00 2001 From: OhB00 <43827372+OhB00@users.noreply.github.com> Date: Thu, 18 Jun 2020 04:53:26 +0100 Subject: [PATCH 012/212] feature: allow for inherited commands in modules (#1521) --- src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs b/src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs index aec8dcbe3..28037b0fa 100644 --- a/src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs +++ b/src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs @@ -135,7 +135,8 @@ namespace Discord.Commands if (builder.Name == null) builder.Name = typeInfo.Name; - var validCommands = typeInfo.DeclaredMethods.Where(IsValidCommandDefinition); + // Get all methods (including from inherited members), that are valid commands + var validCommands = typeInfo.GetMethods().Where(IsValidCommandDefinition); foreach (var method in validCommands) { From dc8c95931e5118c60010b147b9c94c1d7b252f6a Mon Sep 17 00:00:00 2001 From: Paulo Date: Thu, 18 Jun 2020 01:00:10 -0300 Subject: [PATCH 013/212] fix: Incomplete Ready, DownloadUsersAsync, and optimize AlwaysDownloadUsers (#1548) * Fix Ready and AlwaysDownloadUsers Ready could fire before downloading all guild data and downloading guild users one guild per time without gateway intents is a waste of a gateway request that can support up to 1000. * Reduce batchSize and fix count * Fix typo * Split xml docs line Co-authored-by: Christopher Felegy --- .../DiscordSocketClient.Events.cs | 8 +++++- .../DiscordSocketClient.cs | 11 +++++--- .../DiscordSocketConfig.cs | 25 +++++++++++++++++++ 3 files changed, 39 insertions(+), 5 deletions(-) diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.Events.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.Events.cs index 51dea5f9f..0418727bf 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.Events.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.Events.cs @@ -21,7 +21,13 @@ namespace Discord.WebSocket remove { _disconnectedEvent.Remove(value); } } private readonly AsyncEvent> _disconnectedEvent = new AsyncEvent>(); - /// Fired when guild data has finished downloading. + /// + /// Fired when guild data has finished downloading. + /// + /// + /// It is possible that some guilds might be unsynced if + /// was not long enough to receive all GUILD_AVAILABLEs before READY. + /// public event Func Ready { add { _readyEvent.Add(value); } diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index d19f3f90c..1bfa467b6 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -169,7 +169,7 @@ namespace Discord.WebSocket GuildAvailable += g => { - if (ConnectionState == ConnectionState.Connected && AlwaysDownloadUsers && !g.HasAllMembers) + if (_guildDownloadTask?.IsCompleted == true && ConnectionState == ConnectionState.Connected && AlwaysDownloadUsers && !g.HasAllMembers) { var _ = g.DownloadUsersAsync(); } @@ -370,7 +370,7 @@ namespace Discord.WebSocket { var cachedGuilds = guilds.ToImmutableArray(); - const short batchSize = 50; + const short batchSize = 100; //TODO: Gateway Intents will limit to a maximum of 1 guild_id ulong[] batchIds = new ulong[Math.Min(batchSize, cachedGuilds.Length)]; Task[] batchTasks = new Task[batchIds.Length]; int batchCount = (cachedGuilds.Length + (batchSize - 1)) / batchSize; @@ -378,7 +378,7 @@ namespace Discord.WebSocket for (int i = 0, k = 0; i < batchCount; i++) { bool isLast = i == batchCount - 1; - int count = isLast ? (batchIds.Length - (batchCount - 1) * batchSize) : batchSize; + int count = isLast ? (cachedGuilds.Length - (batchCount - 1) * batchSize) : batchSize; for (int j = 0; j < count; j++, k++) { @@ -578,6 +578,9 @@ namespace Discord.WebSocket } else if (_connection.CancelToken.IsCancellationRequested) return; + + if (BaseConfig.AlwaysDownloadUsers) + _ = DownloadUsersAsync(Guilds.Where(x => x.IsAvailable && !x.HasAllMembers)); await TimedInvokeAsync(_readyEvent, nameof(Ready)).ConfigureAwait(false); await _gatewayLogger.InfoAsync("Ready").ConfigureAwait(false); @@ -1772,7 +1775,7 @@ namespace Discord.WebSocket try { await logger.DebugAsync("GuildDownloader Started").ConfigureAwait(false); - while ((_unavailableGuildCount != 0) && (Environment.TickCount - _lastGuildAvailableTime < 2000)) + while ((_unavailableGuildCount != 0) && (Environment.TickCount - _lastGuildAvailableTime < BaseConfig.MaxWaitBetweenGuildAvailablesBeforeReady)) await Task.Delay(500, cancelToken).ConfigureAwait(false); await logger.DebugAsync("GuildDownloader Stopped").ConfigureAwait(false); } diff --git a/src/Discord.Net.WebSocket/DiscordSocketConfig.cs b/src/Discord.Net.WebSocket/DiscordSocketConfig.cs index 4b33c770f..877ccd875 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketConfig.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketConfig.cs @@ -126,6 +126,31 @@ namespace Discord.WebSocket public bool GuildSubscriptions { get; set; } = true; /// + /// Gets or sets the maximum wait time in milliseconds between GUILD_AVAILABLE events before firing READY. + /// + /// If zero, READY will fire as soon as it is received and all guilds will be unavailable. + /// + /// + /// This property is measured in milliseconds, negative values will throw an exception. + /// If a guild is not received before READY, it will be unavailable. + /// + /// + /// The maximum wait time in milliseconds between GUILD_AVAILABLE events before firing READY. + /// + /// Value must be at least 0. + public int MaxWaitBetweenGuildAvailablesBeforeReady { + get + { + return _maxWaitForGuildAvailable; + } + set + { + Preconditions.AtLeast(value, 0, nameof(MaxWaitBetweenGuildAvailablesBeforeReady)); + _maxWaitForGuildAvailable = value; + } + } + private int _maxWaitForGuildAvailable = 10000; + /// Gets or sets gateway intents to limit what events are sent from Discord. Allows for more granular control than the property. /// /// From c42bfa6f4f6d796540738b95c1c4c7e5d5a263be Mon Sep 17 00:00:00 2001 From: moiph Date: Sat, 20 Jun 2020 16:48:55 -0700 Subject: [PATCH 014/212] docs: updating comments for privileged intents (#1576) * Updating comments for privileged intents * Moving updated comments to remarks * Formatting --- src/Discord.Net.Core/GatewayIntents.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Discord.Net.Core/GatewayIntents.cs b/src/Discord.Net.Core/GatewayIntents.cs index e58fc07d1..f3dc5ceb9 100644 --- a/src/Discord.Net.Core/GatewayIntents.cs +++ b/src/Discord.Net.Core/GatewayIntents.cs @@ -10,6 +10,7 @@ namespace Discord /// This intent includes GUILD_CREATE, GUILD_UPDATE, GUILD_DELETE, GUILD_ROLE_CREATE, GUILD_ROLE_UPDATE, GUILD_ROLE_DELETE, CHANNEL_CREATE, CHANNEL_UPDATE, CHANNEL_DELETE, CHANNEL_PINS_UPDATE Guilds = 1 << 0, /// This intent includes GUILD_MEMBER_ADD, GUILD_MEMBER_UPDATE, GUILD_MEMBER_REMOVE + /// This is a privileged intent and must be enabled in the Developer Portal. GuildMembers = 1 << 1, /// This intent includes GUILD_BAN_ADD, GUILD_BAN_REMOVE GuildBans = 1 << 2, @@ -24,6 +25,7 @@ namespace Discord /// This intent includes VOICE_STATE_UPDATE GuildVoiceStates = 1 << 7, /// This intent includes PRESENCE_UPDATE + /// This is a privileged intent and must be enabled in the Developer Portal. GuildPresences = 1 << 8, /// This intent includes MESSAGE_CREATE, MESSAGE_UPDATE, MESSAGE_DELETE, MESSAGE_DELETE_BULK GuildMessages = 1 << 9, From 4fa6393329f350ba5d5046d8aaba7e74837d74e8 Mon Sep 17 00:00:00 2001 From: JT Date: Sun, 28 Jun 2020 03:20:30 +0800 Subject: [PATCH 015/212] meta: Fix CI/CD (#1583) * Update build.yml * Update azure-pipelines.yml * Update examples to NC3.1 --- azure-pipelines.yml | 11 +++-------- azure/build.yml | 7 ++++++- samples/01_basic_ping_bot/01_basic_ping_bot.csproj | 2 +- .../02_commands_framework.csproj | 4 ++-- samples/03_sharded_client/03_sharded_client.csproj | 4 ++-- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 5a1d48082..2fe5abfe8 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -14,25 +14,20 @@ trigger: jobs: - job: Linux pool: - vmImage: 'ubuntu-16.04' + vmImage: 'ubuntu-latest' steps: - - task: UseDotNet@2 - displayName: 'Use .NET Core sdk' - inputs: - packageType: 'sdk' - version: '3.x' - template: azure/build.yml - job: Windows_build pool: - vmImage: 'windows-2019' + vmImage: 'windows-latest' condition: ne(variables['Build.SourceBranch'], 'refs/heads/dev') steps: - template: azure/build.yml - job: Windows_deploy pool: - vmImage: 'windows-2019' + vmImage: 'windows-latest' condition: | and ( succeeded(), diff --git a/azure/build.yml b/azure/build.yml index 3399d7e3d..63ba93964 100644 --- a/azure/build.yml +++ b/azure/build.yml @@ -1,5 +1,10 @@ steps: -- script: dotnet restore --no-cache Discord.Net.sln +- task: DotNetCoreCLI@2 + inputs: + command: 'restore' + projects: 'Discord.Net.sln' + feedsToUse: 'select' + verbosityRestore: 'Minimal' displayName: Restore packages - script: dotnet build "Discord.Net.sln" --no-restore -v minimal -c $(buildConfiguration) /p:BuildNumber=$(buildNumber) /p:IsTagBuild=$(buildTag) diff --git a/samples/01_basic_ping_bot/01_basic_ping_bot.csproj b/samples/01_basic_ping_bot/01_basic_ping_bot.csproj index 4b4e35e3f..128082edb 100644 --- a/samples/01_basic_ping_bot/01_basic_ping_bot.csproj +++ b/samples/01_basic_ping_bot/01_basic_ping_bot.csproj @@ -2,7 +2,7 @@ Exe - netcoreapp3.0 + netcoreapp3.1 diff --git a/samples/02_commands_framework/02_commands_framework.csproj b/samples/02_commands_framework/02_commands_framework.csproj index 84b30aa99..151e546a2 100644 --- a/samples/02_commands_framework/02_commands_framework.csproj +++ b/samples/02_commands_framework/02_commands_framework.csproj @@ -2,11 +2,11 @@ Exe - netcoreapp3.0 + netcoreapp3.1 - + diff --git a/samples/03_sharded_client/03_sharded_client.csproj b/samples/03_sharded_client/03_sharded_client.csproj index a6599c117..24f9942f9 100644 --- a/samples/03_sharded_client/03_sharded_client.csproj +++ b/samples/03_sharded_client/03_sharded_client.csproj @@ -2,12 +2,12 @@ Exe - netcoreapp3.0 + netcoreapp3.1 _03_sharded_client - + From b8fa464125ebffeef079f122eb68653bdd9dd81a Mon Sep 17 00:00:00 2001 From: Paulo Date: Fri, 10 Jul 2020 01:13:01 -0300 Subject: [PATCH 016/212] fix: Stop TaskCanceledException from bubbling up (#1580) --- src/Discord.Net.WebSocket/ConnectionManager.cs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Discord.Net.WebSocket/ConnectionManager.cs b/src/Discord.Net.WebSocket/ConnectionManager.cs index 8c9c743cb..e009674e7 100644 --- a/src/Discord.Net.WebSocket/ConnectionManager.cs +++ b/src/Discord.Net.WebSocket/ConnectionManager.cs @@ -141,7 +141,16 @@ namespace Discord catch (OperationCanceledException) { } }); - await _onConnecting().ConfigureAwait(false); + try + { + await _onConnecting().ConfigureAwait(false); + } + catch (TaskCanceledException ex) + { + Exception innerEx = ex.InnerException ?? new OperationCanceledException("Failed to connect."); + Error(innerEx); + throw innerEx; + } await _logger.InfoAsync("Connected").ConfigureAwait(false); State = ConnectionState.Connected; From 468f8264d00d1f5c9cacd7f6fa55e861a197e0a1 Mon Sep 17 00:00:00 2001 From: Mustafa Salih ASLIM Date: Fri, 10 Jul 2020 07:13:46 +0300 Subject: [PATCH 017/212] fix: unsupported property causes an exception (#1469) fix for: https://github.com/discord-net/Discord.Net/issues/1436 `SlowModeInterval` property causes an exception for Announcement Channel feature if it is enabled on discord. Should be checked whether it is specified or not before set to property. --- src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs index c7ff7fa65..a85ef4f0b 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs @@ -42,7 +42,8 @@ namespace Discord.Rest base.Update(model); CategoryId = model.CategoryId; Topic = model.Topic.Value; - SlowModeInterval = model.SlowMode.Value; + if (model.SlowMode.IsSpecified) + SlowModeInterval = model.SlowMode.Value; IsNsfw = model.Nsfw.GetValueOrDefault(); } From 42ba3720e3b2206a54d96425aa78b268efc6da15 Mon Sep 17 00:00:00 2001 From: Paulo Date: Sat, 18 Jul 2020 14:52:23 -0300 Subject: [PATCH 018/212] fix: Trim token before passing it to the authorization header (#1578) * Trim token * Trim when assigning to AuthToken --- src/Discord.Net.Rest/DiscordRestApiClient.cs | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/src/Discord.Net.Rest/DiscordRestApiClient.cs b/src/Discord.Net.Rest/DiscordRestApiClient.cs index 30984c0e9..c29f5e217 100644 --- a/src/Discord.Net.Rest/DiscordRestApiClient.cs +++ b/src/Discord.Net.Rest/DiscordRestApiClient.cs @@ -80,17 +80,13 @@ namespace Discord.API /// Unknown OAuth token type. internal static string GetPrefixedToken(TokenType tokenType, string token) { - switch (tokenType) + return tokenType switch { - case default(TokenType): - return token; - case TokenType.Bot: - return $"Bot {token}"; - case TokenType.Bearer: - return $"Bearer {token}"; - default: - throw new ArgumentException(message: "Unknown OAuth token type.", paramName: nameof(tokenType)); - } + default(TokenType) => token, + TokenType.Bot => $"Bot {token}", + TokenType.Bearer => $"Bearer {token}", + _ => throw new ArgumentException(message: "Unknown OAuth token type.", paramName: nameof(tokenType)), + }; } internal virtual void Dispose(bool disposing) { @@ -133,7 +129,7 @@ namespace Discord.API RestClient.SetCancelToken(_loginCancelToken.Token); AuthTokenType = tokenType; - AuthToken = token; + AuthToken = token?.TrimEnd(); if (tokenType != TokenType.Webhook) RestClient.SetHeader("authorization", GetPrefixedToken(AuthTokenType, AuthToken)); From 2d80037f6b0f25e04e7ceeac9f3e6f04fb2fffa5 Mon Sep 17 00:00:00 2001 From: Paulo Date: Sat, 1 Aug 2020 02:26:24 -0300 Subject: [PATCH 019/212] feature: Add missing channel properties (#1596) --- .../Channels/GuildChannelProperties.cs | 6 ++++ .../API/Rest/CreateGuildChannelParams.cs | 4 +++ .../Entities/Channels/ChannelHelper.cs | 12 ++++++- .../Entities/Guilds/GuildHelper.cs | 34 +++++++++++++++++-- 4 files changed, 52 insertions(+), 4 deletions(-) diff --git a/src/Discord.Net.Core/Entities/Channels/GuildChannelProperties.cs b/src/Discord.Net.Core/Entities/Channels/GuildChannelProperties.cs index 9552b0a60..93ca2e59a 100644 --- a/src/Discord.Net.Core/Entities/Channels/GuildChannelProperties.cs +++ b/src/Discord.Net.Core/Entities/Channels/GuildChannelProperties.cs @@ -1,3 +1,5 @@ +using System.Collections.Generic; + namespace Discord { /// @@ -30,5 +32,9 @@ namespace Discord /// is set. /// public Optional CategoryId { get; set; } + /// + /// Gets or sets the permission overwrites for this channel. + /// + public Optional> PermissionOverwrites { get; set; } } } diff --git a/src/Discord.Net.Rest/API/Rest/CreateGuildChannelParams.cs b/src/Discord.Net.Rest/API/Rest/CreateGuildChannelParams.cs index a102bd38d..aec43dbef 100644 --- a/src/Discord.Net.Rest/API/Rest/CreateGuildChannelParams.cs +++ b/src/Discord.Net.Rest/API/Rest/CreateGuildChannelParams.cs @@ -14,12 +14,16 @@ namespace Discord.API.Rest public Optional CategoryId { get; set; } [JsonProperty("position")] public Optional Position { get; set; } + [JsonProperty("permission_overwrites")] + public Optional Overwrites { get; set; } //Text channels [JsonProperty("topic")] public Optional Topic { get; set; } [JsonProperty("nsfw")] public Optional IsNsfw { get; set; } + [JsonProperty("rate_limit_per_user")] + public Optional SlowModeInterval { get; set; } //Voice channels [JsonProperty("bitrate")] diff --git a/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs b/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs index 55b6f03a4..09507f1d7 100644 --- a/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs +++ b/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs @@ -46,6 +46,15 @@ namespace Discord.Rest Topic = args.Topic, IsNsfw = args.IsNsfw, SlowModeInterval = args.SlowModeInterval, + Overwrites = args.PermissionOverwrites.IsSpecified + ? args.PermissionOverwrites.Value.Select(overwrite => new API.Overwrite + { + TargetId = overwrite.TargetId, + TargetType = overwrite.TargetType, + Allow = overwrite.Permissions.AllowValue, + Deny = overwrite.Permissions.DenyValue + }).ToArray() + : Optional.Create(), }; return await client.ApiClient.ModifyGuildChannelAsync(channel.Id, apiArgs, options).ConfigureAwait(false); } @@ -413,7 +422,8 @@ namespace Discord.Rest var apiArgs = new ModifyGuildChannelParams { Overwrites = category.PermissionOverwrites - .Select(overwrite => new API.Overwrite{ + .Select(overwrite => new API.Overwrite + { TargetId = overwrite.TargetId, TargetType = overwrite.TargetType, Allow = overwrite.Permissions.AllowValue, diff --git a/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs b/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs index 675847b58..ccc02466e 100644 --- a/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs +++ b/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs @@ -176,7 +176,17 @@ namespace Discord.Rest CategoryId = props.CategoryId, Topic = props.Topic, IsNsfw = props.IsNsfw, - Position = props.Position + Position = props.Position, + SlowModeInterval = props.SlowModeInterval, + Overwrites = props.PermissionOverwrites.IsSpecified + ? props.PermissionOverwrites.Value.Select(overwrite => new API.Overwrite + { + TargetId = overwrite.TargetId, + TargetType = overwrite.TargetType, + Allow = overwrite.Permissions.AllowValue, + Deny = overwrite.Permissions.DenyValue + }).ToArray() + : Optional.Create(), }; var model = await client.ApiClient.CreateGuildChannelAsync(guild.Id, args, options).ConfigureAwait(false); return RestTextChannel.Create(client, guild, model); @@ -195,7 +205,16 @@ namespace Discord.Rest CategoryId = props.CategoryId, Bitrate = props.Bitrate, UserLimit = props.UserLimit, - Position = props.Position + Position = props.Position, + Overwrites = props.PermissionOverwrites.IsSpecified + ? props.PermissionOverwrites.Value.Select(overwrite => new API.Overwrite + { + TargetId = overwrite.TargetId, + TargetType = overwrite.TargetType, + Allow = overwrite.Permissions.AllowValue, + Deny = overwrite.Permissions.DenyValue + }).ToArray() + : Optional.Create(), }; var model = await client.ApiClient.CreateGuildChannelAsync(guild.Id, args, options).ConfigureAwait(false); return RestVoiceChannel.Create(client, guild, model); @@ -211,7 +230,16 @@ namespace Discord.Rest var args = new CreateGuildChannelParams(name, ChannelType.Category) { - Position = props.Position + Position = props.Position, + Overwrites = props.PermissionOverwrites.IsSpecified + ? props.PermissionOverwrites.Value.Select(overwrite => new API.Overwrite + { + TargetId = overwrite.TargetId, + TargetType = overwrite.TargetType, + Allow = overwrite.Permissions.AllowValue, + Deny = overwrite.Permissions.DenyValue + }).ToArray() + : Optional.Create(), }; var model = await client.ApiClient.CreateGuildChannelAsync(guild.Id, args, options).ConfigureAwait(false); From 421a0c12ccf97ae01d1467a103db7392c30bef9e Mon Sep 17 00:00:00 2001 From: Paulo Date: Sat, 1 Aug 2020 13:43:56 -0300 Subject: [PATCH 020/212] feature: support reading multiple activities (#1520) --- .../Entities/Users/IPresence.cs | 4 +++ src/Discord.Net.Rest/API/Common/Presence.cs | 5 +++ .../Entities/Users/RestUser.cs | 2 ++ .../DiscordSocketClient.cs | 4 +-- .../Entities/Users/SocketGuildUser.cs | 2 ++ .../Entities/Users/SocketPresence.cs | 31 ++++++++++++++++--- .../Entities/Users/SocketUnknownUser.cs | 2 +- .../Entities/Users/SocketUser.cs | 2 ++ .../Entities/Users/SocketWebhookUser.cs | 2 +- 9 files changed, 46 insertions(+), 8 deletions(-) diff --git a/src/Discord.Net.Core/Entities/Users/IPresence.cs b/src/Discord.Net.Core/Entities/Users/IPresence.cs index 620eb907c..a17ac0df2 100644 --- a/src/Discord.Net.Core/Entities/Users/IPresence.cs +++ b/src/Discord.Net.Core/Entities/Users/IPresence.cs @@ -19,5 +19,9 @@ namespace Discord /// Gets the set of clients where this user is currently active. /// IImmutableSet ActiveClients { get; } + /// + /// Gets the list of activities that this user currently has available. + /// + IImmutableList Activities { get; } } } diff --git a/src/Discord.Net.Rest/API/Common/Presence.cs b/src/Discord.Net.Rest/API/Common/Presence.cs index 22526e8ac..b37ad4229 100644 --- a/src/Discord.Net.Rest/API/Common/Presence.cs +++ b/src/Discord.Net.Rest/API/Common/Presence.cs @@ -1,5 +1,6 @@ #pragma warning disable CS1591 using Newtonsoft.Json; +using System; using System.Collections.Generic; namespace Discord.API @@ -26,5 +27,9 @@ namespace Discord.API // "client_status": { "desktop": "dnd", "mobile": "dnd" } [JsonProperty("client_status")] public Optional> ClientStatus { get; set; } + [JsonProperty("activities")] + public List Activities { get; set; } + [JsonProperty("premium_since")] + public Optional PremiumSince { get; set; } } } diff --git a/src/Discord.Net.Rest/Entities/Users/RestUser.cs b/src/Discord.Net.Rest/Entities/Users/RestUser.cs index d5fffca94..f5becd3ff 100644 --- a/src/Discord.Net.Rest/Entities/Users/RestUser.cs +++ b/src/Discord.Net.Rest/Entities/Users/RestUser.cs @@ -35,6 +35,8 @@ namespace Discord.Rest /// public virtual IImmutableSet ActiveClients => ImmutableHashSet.Empty; /// + public virtual IImmutableList Activities => ImmutableList.Empty; + /// public virtual bool IsWebhook => false; internal RestUser(BaseDiscordClient discord, ulong id) diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 1bfa467b6..004c6179c 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -342,7 +342,7 @@ namespace Discord.WebSocket { var user = SocketGlobalUser.Create(this, state, model); user.GlobalUser.AddRef(); - user.Presence = new SocketPresence(UserStatus.Online, null, null); + user.Presence = new SocketPresence(UserStatus.Online, null, null, null); return user; }); } @@ -450,7 +450,7 @@ namespace Discord.WebSocket return; var status = Status; var statusSince = _statusSince; - CurrentUser.Presence = new SocketPresence(status, Activity, null); + CurrentUser.Presence = new SocketPresence(status, Activity, null, null); var gameModel = new GameModel(); // Discord only accepts rich presence over RPC, don't even bother building a payload diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs index e5dbfa01d..a506a5d7f 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs @@ -154,6 +154,8 @@ namespace Discord.WebSocket Nickname = model.Nick.Value; if (model.Roles.IsSpecified) UpdateRoles(model.Roles.Value); + if (model.PremiumSince.IsSpecified) + _premiumSinceTicks = model.PremiumSince.Value?.UtcTicks; } private void UpdateRoles(ulong[] roleIds) { diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketPresence.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketPresence.cs index 52f111303..407e14419 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketPresence.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketPresence.cs @@ -18,16 +18,20 @@ namespace Discord.WebSocket public IActivity Activity { get; } /// public IImmutableSet ActiveClients { get; } - internal SocketPresence(UserStatus status, IActivity activity, IImmutableSet activeClients) + /// + public IImmutableList Activities { get; } + internal SocketPresence(UserStatus status, IActivity activity, IImmutableSet activeClients, IImmutableList activities) { Status = status; - Activity= activity; - ActiveClients = activeClients; + Activity = activity; + ActiveClients = activeClients ?? ImmutableHashSet.Empty; + Activities = activities ?? ImmutableList.Empty; } internal static SocketPresence Create(Model model) { var clients = ConvertClientTypesDict(model.ClientStatus.GetValueOrDefault()); - return new SocketPresence(model.Status, model.Game?.ToEntity(), clients); + var activities = ConvertActivitiesList(model.Activities); + return new SocketPresence(model.Status, model.Game?.ToEntity(), clients, activities); } /// /// Creates a new containing all of the client types @@ -53,6 +57,25 @@ namespace Discord.WebSocket } return set.ToImmutableHashSet(); } + /// + /// Creates a new containing all the activities + /// that a user has from the data supplied in the Presence update frame. + /// + /// + /// A list of . + /// + /// + /// A list of all that this user currently has available. + /// + private static IImmutableList ConvertActivitiesList(IList activities) + { + if (activities == null || activities.Count == 0) + return ImmutableList.Empty; + var list = new List(); + foreach (var activity in activities) + list.Add(activity.ToEntity()); + return list.ToImmutableList(); + } /// /// Gets the status of the user. diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketUnknownUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketUnknownUser.cs index 840a1c30b..dd2e747b4 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketUnknownUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketUnknownUser.cs @@ -25,7 +25,7 @@ namespace Discord.WebSocket /// public override bool IsWebhook => false; /// - internal override SocketPresence Presence { get { return new SocketPresence(UserStatus.Offline, null, null); } set { } } + internal override SocketPresence Presence { get { return new SocketPresence(UserStatus.Offline, null, null, null); } set { } } /// /// This field is not supported for an unknown user. internal override SocketGlobalUser GlobalUser => diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs index b830ce79c..7d3c2d23b 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs @@ -41,6 +41,8 @@ namespace Discord.WebSocket public UserStatus Status => Presence.Status; /// public IImmutableSet ActiveClients => Presence.ActiveClients ?? ImmutableHashSet.Empty; + /// + public IImmutableList Activities => Presence.Activities ?? ImmutableList.Empty; /// /// Gets mutual guilds shared with this user. /// diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs index 8819fe1b4..d400e1ae7 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs @@ -30,7 +30,7 @@ namespace Discord.WebSocket /// public override bool IsWebhook => true; /// - internal override SocketPresence Presence { get { return new SocketPresence(UserStatus.Offline, null, null); } set { } } + internal override SocketPresence Presence { get { return new SocketPresence(UserStatus.Offline, null, null, null); } set { } } internal override SocketGlobalUser GlobalUser => throw new NotSupportedException(); From 2f6c0175c82dc17781e5f0c204cca4baf3209eab Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 5 Aug 2020 21:16:21 -0300 Subject: [PATCH 021/212] fix: Different ratelimits for the same route (implement discord buckets) (#1546) * Don't disable when there's no resetTick Sometimes Discord won't send any ratelimit headers, disabling the semaphore for endpoints that should have them. * Undo changes and change comment * Add HttpMethod to BucketIds * Add X-RateLimit-Bucket * BucketId changes - BucketId is it's own class now - Add WebhookId as a major parameter - Add shared buckets using the hash and major parameters * Add webhookId to BucketIds * Update BucketId and redirect requests * General bugfixes * Assign semaphore and follow the same standard as Reset for ResetAfter --- src/Discord.Net.Core/Net/BucketId.cs | 118 ++++++++++++++++++ src/Discord.Net.Core/RequestOptions.cs | 3 +- src/Discord.Net.Rest/BaseDiscordClient.cs | 4 +- src/Discord.Net.Rest/DiscordRestApiClient.cs | 69 ++++++---- .../Net/Queue/ClientBucket.cs | 14 +-- .../Net/Queue/RequestQueue.cs | 39 ++++-- .../Net/Queue/RequestQueueBucket.cs | 74 ++++++++--- src/Discord.Net.Rest/Net/RateLimitInfo.cs | 8 +- .../DiscordWebhookClient.cs | 4 +- 9 files changed, 269 insertions(+), 64 deletions(-) create mode 100644 src/Discord.Net.Core/Net/BucketId.cs diff --git a/src/Discord.Net.Core/Net/BucketId.cs b/src/Discord.Net.Core/Net/BucketId.cs new file mode 100644 index 000000000..96281a0ed --- /dev/null +++ b/src/Discord.Net.Core/Net/BucketId.cs @@ -0,0 +1,118 @@ +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; + +namespace Discord.Net +{ + /// + /// Represents a ratelimit bucket. + /// + public class BucketId : IEquatable + { + /// + /// Gets the http method used to make the request if available. + /// + public string HttpMethod { get; } + /// + /// Gets the endpoint that is going to be requested if available. + /// + public string Endpoint { get; } + /// + /// Gets the major parameters of the route. + /// + public IOrderedEnumerable> MajorParameters { get; } + /// + /// Gets the hash of this bucket. + /// + /// + /// The hash is provided by Discord to group ratelimits. + /// + public string BucketHash { get; } + /// + /// Gets if this bucket is a hash type. + /// + public bool IsHashBucket { get => BucketHash != null; } + + private BucketId(string httpMethod, string endpoint, IEnumerable> majorParameters, string bucketHash) + { + HttpMethod = httpMethod; + Endpoint = endpoint; + MajorParameters = majorParameters.OrderBy(x => x.Key); + BucketHash = bucketHash; + } + + /// + /// Creates a new based on the + /// and . + /// + /// Http method used to make the request. + /// Endpoint that is going to receive requests. + /// Major parameters of the route of this endpoint. + /// + /// A based on the + /// and the with the provided data. + /// + public static BucketId Create(string httpMethod, string endpoint, Dictionary majorParams) + { + Preconditions.NotNullOrWhitespace(endpoint, nameof(endpoint)); + majorParams ??= new Dictionary(); + return new BucketId(httpMethod, endpoint, majorParams, null); + } + + /// + /// Creates a new based on a + /// and a previous . + /// + /// Bucket hash provided by Discord. + /// that is going to be upgraded to a hash type. + /// + /// A based on the + /// and . + /// + public static BucketId Create(string hash, BucketId oldBucket) + { + Preconditions.NotNullOrWhitespace(hash, nameof(hash)); + Preconditions.NotNull(oldBucket, nameof(oldBucket)); + return new BucketId(null, null, oldBucket.MajorParameters, hash); + } + + /// + /// Gets the string that will define this bucket as a hash based one. + /// + /// + /// A that defines this bucket as a hash based one. + /// + public string GetBucketHash() + => IsHashBucket ? $"{BucketHash}:{string.Join("/", MajorParameters.Select(x => x.Value))}" : null; + + /// + /// Gets the string that will define this bucket as an endpoint based one. + /// + /// + /// A that defines this bucket as an endpoint based one. + /// + public string GetUniqueEndpoint() + => HttpMethod != null ? $"{HttpMethod} {Endpoint}" : Endpoint; + + public override bool Equals(object obj) + => Equals(obj as BucketId); + + public override int GetHashCode() + => IsHashBucket ? (BucketHash, string.Join("/", MajorParameters.Select(x => x.Value))).GetHashCode() : (HttpMethod, Endpoint).GetHashCode(); + + public override string ToString() + => GetBucketHash() ?? GetUniqueEndpoint(); + + public bool Equals(BucketId other) + { + if (other is null) + return false; + if (ReferenceEquals(this, other)) + return true; + if (GetType() != other.GetType()) + return false; + return ToString() == other.ToString(); + } + } +} diff --git a/src/Discord.Net.Core/RequestOptions.cs b/src/Discord.Net.Core/RequestOptions.cs index 1b05df2a3..ad0a4e33f 100644 --- a/src/Discord.Net.Core/RequestOptions.cs +++ b/src/Discord.Net.Core/RequestOptions.cs @@ -1,3 +1,4 @@ +using Discord.Net; using System.Threading; namespace Discord @@ -57,7 +58,7 @@ namespace Discord public bool? UseSystemClock { get; set; } internal bool IgnoreState { get; set; } - internal string BucketId { get; set; } + internal BucketId BucketId { get; set; } internal bool IsClientBucket { get; set; } internal bool IsReactionBucket { get; set; } diff --git a/src/Discord.Net.Rest/BaseDiscordClient.cs b/src/Discord.Net.Rest/BaseDiscordClient.cs index 1837e38c0..58b42929a 100644 --- a/src/Discord.Net.Rest/BaseDiscordClient.cs +++ b/src/Discord.Net.Rest/BaseDiscordClient.cs @@ -49,9 +49,9 @@ namespace Discord.Rest ApiClient.RequestQueue.RateLimitTriggered += async (id, info) => { if (info == null) - await _restLogger.VerboseAsync($"Preemptive Rate limit triggered: {id ?? "null"}").ConfigureAwait(false); + await _restLogger.VerboseAsync($"Preemptive Rate limit triggered: {id?.ToString() ?? "null"}").ConfigureAwait(false); else - await _restLogger.WarningAsync($"Rate limit triggered: {id ?? "null"}").ConfigureAwait(false); + await _restLogger.WarningAsync($"Rate limit triggered: {id?.ToString() ?? "null"}").ConfigureAwait(false); }; ApiClient.SentRequest += async (method, endpoint, millis) => await _restLogger.VerboseAsync($"{method} {endpoint}: {millis} ms").ConfigureAwait(false); } diff --git a/src/Discord.Net.Rest/DiscordRestApiClient.cs b/src/Discord.Net.Rest/DiscordRestApiClient.cs index c29f5e217..76c7bf1b4 100644 --- a/src/Discord.Net.Rest/DiscordRestApiClient.cs +++ b/src/Discord.Net.Rest/DiscordRestApiClient.cs @@ -24,7 +24,7 @@ namespace Discord.API { internal class DiscordRestApiClient : IDisposable { - private static readonly ConcurrentDictionary> _bucketIdGenerators = new ConcurrentDictionary>(); + private static readonly ConcurrentDictionary> _bucketIdGenerators = new ConcurrentDictionary>(); public event Func SentRequest { add { _sentRequestEvent.Add(value); } remove { _sentRequestEvent.Remove(value); } } private readonly AsyncEvent> _sentRequestEvent = new AsyncEvent>(); @@ -176,9 +176,9 @@ namespace Discord.API //Core internal Task SendAsync(string method, Expression> endpointExpr, BucketIds ids, ClientBucketType clientBucket = ClientBucketType.Unbucketed, RequestOptions options = null, [CallerMemberName] string funcName = null) - => SendAsync(method, GetEndpoint(endpointExpr), GetBucketId(ids, endpointExpr, funcName), clientBucket, options); + => SendAsync(method, GetEndpoint(endpointExpr), GetBucketId(method, ids, endpointExpr, funcName), clientBucket, options); public async Task SendAsync(string method, string endpoint, - string bucketId = null, ClientBucketType clientBucket = ClientBucketType.Unbucketed, RequestOptions options = null) + BucketId bucketId = null, ClientBucketType clientBucket = ClientBucketType.Unbucketed, RequestOptions options = null) { options = options ?? new RequestOptions(); options.HeaderOnly = true; @@ -190,9 +190,9 @@ namespace Discord.API internal Task SendJsonAsync(string method, Expression> endpointExpr, object payload, BucketIds ids, ClientBucketType clientBucket = ClientBucketType.Unbucketed, RequestOptions options = null, [CallerMemberName] string funcName = null) - => SendJsonAsync(method, GetEndpoint(endpointExpr), payload, GetBucketId(ids, endpointExpr, funcName), clientBucket, options); + => SendJsonAsync(method, GetEndpoint(endpointExpr), payload, GetBucketId(method, ids, endpointExpr, funcName), clientBucket, options); public async Task SendJsonAsync(string method, string endpoint, object payload, - string bucketId = null, ClientBucketType clientBucket = ClientBucketType.Unbucketed, RequestOptions options = null) + BucketId bucketId = null, ClientBucketType clientBucket = ClientBucketType.Unbucketed, RequestOptions options = null) { options = options ?? new RequestOptions(); options.HeaderOnly = true; @@ -205,9 +205,9 @@ namespace Discord.API internal Task SendMultipartAsync(string method, Expression> endpointExpr, IReadOnlyDictionary multipartArgs, BucketIds ids, ClientBucketType clientBucket = ClientBucketType.Unbucketed, RequestOptions options = null, [CallerMemberName] string funcName = null) - => SendMultipartAsync(method, GetEndpoint(endpointExpr), multipartArgs, GetBucketId(ids, endpointExpr, funcName), clientBucket, options); + => SendMultipartAsync(method, GetEndpoint(endpointExpr), multipartArgs, GetBucketId(method, ids, endpointExpr, funcName), clientBucket, options); public async Task SendMultipartAsync(string method, string endpoint, IReadOnlyDictionary multipartArgs, - string bucketId = null, ClientBucketType clientBucket = ClientBucketType.Unbucketed, RequestOptions options = null) + BucketId bucketId = null, ClientBucketType clientBucket = ClientBucketType.Unbucketed, RequestOptions options = null) { options = options ?? new RequestOptions(); options.HeaderOnly = true; @@ -219,9 +219,9 @@ namespace Discord.API internal Task SendAsync(string method, Expression> endpointExpr, BucketIds ids, ClientBucketType clientBucket = ClientBucketType.Unbucketed, RequestOptions options = null, [CallerMemberName] string funcName = null) where TResponse : class - => SendAsync(method, GetEndpoint(endpointExpr), GetBucketId(ids, endpointExpr, funcName), clientBucket, options); + => SendAsync(method, GetEndpoint(endpointExpr), GetBucketId(method, ids, endpointExpr, funcName), clientBucket, options); public async Task SendAsync(string method, string endpoint, - string bucketId = null, ClientBucketType clientBucket = ClientBucketType.Unbucketed, RequestOptions options = null) where TResponse : class + BucketId bucketId = null, ClientBucketType clientBucket = ClientBucketType.Unbucketed, RequestOptions options = null) where TResponse : class { options = options ?? new RequestOptions(); options.BucketId = bucketId; @@ -232,9 +232,9 @@ namespace Discord.API internal Task SendJsonAsync(string method, Expression> endpointExpr, object payload, BucketIds ids, ClientBucketType clientBucket = ClientBucketType.Unbucketed, RequestOptions options = null, [CallerMemberName] string funcName = null) where TResponse : class - => SendJsonAsync(method, GetEndpoint(endpointExpr), payload, GetBucketId(ids, endpointExpr, funcName), clientBucket, options); + => SendJsonAsync(method, GetEndpoint(endpointExpr), payload, GetBucketId(method, ids, endpointExpr, funcName), clientBucket, options); public async Task SendJsonAsync(string method, string endpoint, object payload, - string bucketId = null, ClientBucketType clientBucket = ClientBucketType.Unbucketed, RequestOptions options = null) where TResponse : class + BucketId bucketId = null, ClientBucketType clientBucket = ClientBucketType.Unbucketed, RequestOptions options = null) where TResponse : class { options = options ?? new RequestOptions(); options.BucketId = bucketId; @@ -246,9 +246,9 @@ namespace Discord.API internal Task SendMultipartAsync(string method, Expression> endpointExpr, IReadOnlyDictionary multipartArgs, BucketIds ids, ClientBucketType clientBucket = ClientBucketType.Unbucketed, RequestOptions options = null, [CallerMemberName] string funcName = null) - => SendMultipartAsync(method, GetEndpoint(endpointExpr), multipartArgs, GetBucketId(ids, endpointExpr, funcName), clientBucket, options); + => SendMultipartAsync(method, GetEndpoint(endpointExpr), multipartArgs, GetBucketId(method, ids, endpointExpr, funcName), clientBucket, options); public async Task SendMultipartAsync(string method, string endpoint, IReadOnlyDictionary multipartArgs, - string bucketId = null, ClientBucketType clientBucket = ClientBucketType.Unbucketed, RequestOptions options = null) + BucketId bucketId = null, ClientBucketType clientBucket = ClientBucketType.Unbucketed, RequestOptions options = null) { options = options ?? new RequestOptions(); options.BucketId = bucketId; @@ -520,7 +520,8 @@ namespace Discord.API throw new ArgumentException(message: $"Message content is too long, length must be less or equal to {DiscordConfig.MaxMessageSize}.", paramName: nameof(args.Content)); options = RequestOptions.CreateOrClone(options); - return await SendJsonAsync("POST", () => $"webhooks/{webhookId}/{AuthToken}?wait=true", args, new BucketIds(), clientBucket: ClientBucketType.SendEdit, options: options).ConfigureAwait(false); + var ids = new BucketIds(webhookId: webhookId); + return await SendJsonAsync("POST", () => $"webhooks/{webhookId}/{AuthToken}?wait=true", args, ids, clientBucket: ClientBucketType.SendEdit, options: options).ConfigureAwait(false); } /// Message content is too long, length must be less or equal to . public async Task UploadFileAsync(ulong channelId, UploadFileParams args, RequestOptions options = null) @@ -559,7 +560,8 @@ namespace Discord.API throw new ArgumentOutOfRangeException($"Message content is too long, length must be less or equal to {DiscordConfig.MaxMessageSize}.", nameof(args.Content)); } - return await SendMultipartAsync("POST", () => $"webhooks/{webhookId}/{AuthToken}?wait=true", args.ToDictionary(), new BucketIds(), clientBucket: ClientBucketType.SendEdit, options: options).ConfigureAwait(false); + var ids = new BucketIds(webhookId: webhookId); + return await SendMultipartAsync("POST", () => $"webhooks/{webhookId}/{AuthToken}?wait=true", args.ToDictionary(), ids, clientBucket: ClientBucketType.SendEdit, options: options).ConfigureAwait(false); } public async Task DeleteMessageAsync(ulong channelId, ulong messageId, RequestOptions options = null) { @@ -1466,21 +1468,39 @@ namespace Discord.API { public ulong GuildId { get; internal set; } public ulong ChannelId { get; internal set; } + public ulong WebhookId { get; internal set; } + public string HttpMethod { get; internal set; } - internal BucketIds(ulong guildId = 0, ulong channelId = 0) + internal BucketIds(ulong guildId = 0, ulong channelId = 0, ulong webhookId = 0) { GuildId = guildId; ChannelId = channelId; + WebhookId = webhookId; } + internal object[] ToArray() - => new object[] { GuildId, ChannelId }; + => new object[] { HttpMethod, GuildId, ChannelId, WebhookId }; + + internal Dictionary ToMajorParametersDictionary() + { + var dict = new Dictionary(); + if (GuildId != 0) + dict["GuildId"] = GuildId.ToString(); + if (ChannelId != 0) + dict["ChannelId"] = ChannelId.ToString(); + if (WebhookId != 0) + dict["WebhookId"] = WebhookId.ToString(); + return dict; + } internal static int? GetIndex(string name) { switch (name) { - case "guildId": return 0; - case "channelId": return 1; + case "httpMethod": return 0; + case "guildId": return 1; + case "channelId": return 2; + case "webhookId": return 3; default: return null; } @@ -1491,18 +1511,19 @@ namespace Discord.API { return endpointExpr.Compile()(); } - private static string GetBucketId(BucketIds ids, Expression> endpointExpr, string callingMethod) + private static BucketId GetBucketId(string httpMethod, BucketIds ids, Expression> endpointExpr, string callingMethod) { + ids.HttpMethod ??= httpMethod; return _bucketIdGenerators.GetOrAdd(callingMethod, x => CreateBucketId(endpointExpr))(ids); } - private static Func CreateBucketId(Expression> endpoint) + private static Func CreateBucketId(Expression> endpoint) { try { //Is this a constant string? if (endpoint.Body.NodeType == ExpressionType.Constant) - return x => (endpoint.Body as ConstantExpression).Value.ToString(); + return x => BucketId.Create(x.HttpMethod, (endpoint.Body as ConstantExpression).Value.ToString(), x.ToMajorParametersDictionary()); var builder = new StringBuilder(); var methodCall = endpoint.Body as MethodCallExpression; @@ -1539,7 +1560,7 @@ namespace Discord.API var mappedId = BucketIds.GetIndex(fieldName); - if(!mappedId.HasValue && rightIndex != endIndex && format.Length > rightIndex + 1 && format[rightIndex + 1] == '/') //Ignore the next slash + if (!mappedId.HasValue && rightIndex != endIndex && format.Length > rightIndex + 1 && format[rightIndex + 1] == '/') //Ignore the next slash rightIndex++; if (mappedId.HasValue) @@ -1552,7 +1573,7 @@ namespace Discord.API format = builder.ToString(); - return x => string.Format(format, x.ToArray()); + return x => BucketId.Create(x.HttpMethod, string.Format(format, x.ToArray()), x.ToMajorParametersDictionary()); } catch (Exception ex) { diff --git a/src/Discord.Net.Rest/Net/Queue/ClientBucket.cs b/src/Discord.Net.Rest/Net/Queue/ClientBucket.cs index cd9d8aa54..e726a08cf 100644 --- a/src/Discord.Net.Rest/Net/Queue/ClientBucket.cs +++ b/src/Discord.Net.Rest/Net/Queue/ClientBucket.cs @@ -10,14 +10,14 @@ namespace Discord.Net.Queue internal struct ClientBucket { private static readonly ImmutableDictionary DefsByType; - private static readonly ImmutableDictionary DefsById; + private static readonly ImmutableDictionary DefsById; static ClientBucket() { var buckets = new[] { - new ClientBucket(ClientBucketType.Unbucketed, "", 10, 10), - new ClientBucket(ClientBucketType.SendEdit, "", 10, 10) + new ClientBucket(ClientBucketType.Unbucketed, BucketId.Create(null, "", null), 10, 10), + new ClientBucket(ClientBucketType.SendEdit, BucketId.Create(null, "", null), 10, 10) }; var builder = ImmutableDictionary.CreateBuilder(); @@ -25,21 +25,21 @@ namespace Discord.Net.Queue builder.Add(bucket.Type, bucket); DefsByType = builder.ToImmutable(); - var builder2 = ImmutableDictionary.CreateBuilder(); + var builder2 = ImmutableDictionary.CreateBuilder(); foreach (var bucket in buckets) builder2.Add(bucket.Id, bucket); DefsById = builder2.ToImmutable(); } public static ClientBucket Get(ClientBucketType type) => DefsByType[type]; - public static ClientBucket Get(string id) => DefsById[id]; + public static ClientBucket Get(BucketId id) => DefsById[id]; public ClientBucketType Type { get; } - public string Id { get; } + public BucketId Id { get; } public int WindowCount { get; } public int WindowSeconds { get; } - public ClientBucket(ClientBucketType type, string id, int count, int seconds) + public ClientBucket(ClientBucketType type, BucketId id, int count, int seconds) { Type = type; Id = id; diff --git a/src/Discord.Net.Rest/Net/Queue/RequestQueue.cs b/src/Discord.Net.Rest/Net/Queue/RequestQueue.cs index 4baf76433..691ac77c0 100644 --- a/src/Discord.Net.Rest/Net/Queue/RequestQueue.cs +++ b/src/Discord.Net.Rest/Net/Queue/RequestQueue.cs @@ -12,9 +12,9 @@ namespace Discord.Net.Queue { internal class RequestQueue : IDisposable { - public event Func RateLimitTriggered; + public event Func RateLimitTriggered; - private readonly ConcurrentDictionary _buckets; + private readonly ConcurrentDictionary _buckets; private readonly SemaphoreSlim _tokenLock; private readonly CancellationTokenSource _cancelTokenSource; //Dispose token private CancellationTokenSource _clearToken; @@ -34,7 +34,7 @@ namespace Discord.Net.Queue _requestCancelToken = CancellationToken.None; _parentToken = CancellationToken.None; - _buckets = new ConcurrentDictionary(); + _buckets = new ConcurrentDictionary(); _cleanupTask = RunCleanup(); } @@ -82,7 +82,7 @@ namespace Discord.Net.Queue else request.Options.CancelToken = _requestCancelToken; - var bucket = GetOrCreateBucket(request.Options.BucketId, request); + var bucket = GetOrCreateBucket(request.Options, request); var result = await bucket.SendAsync(request).ConfigureAwait(false); createdTokenSource?.Dispose(); return result; @@ -110,14 +110,32 @@ namespace Discord.Net.Queue _waitUntil = DateTimeOffset.UtcNow.AddMilliseconds(info.RetryAfter.Value + (info.Lag?.TotalMilliseconds ?? 0.0)); } - private RequestBucket GetOrCreateBucket(string id, RestRequest request) + private RequestBucket GetOrCreateBucket(RequestOptions options, RestRequest request) { - return _buckets.GetOrAdd(id, x => new RequestBucket(this, request, x)); + var bucketId = options.BucketId; + object obj = _buckets.GetOrAdd(bucketId, x => new RequestBucket(this, request, x)); + if (obj is BucketId hashBucket) + { + options.BucketId = hashBucket; + return (RequestBucket)_buckets.GetOrAdd(hashBucket, x => new RequestBucket(this, request, x)); + } + return (RequestBucket)obj; } - internal async Task RaiseRateLimitTriggered(string bucketId, RateLimitInfo? info) + internal async Task RaiseRateLimitTriggered(BucketId bucketId, RateLimitInfo? info) { await RateLimitTriggered(bucketId, info).ConfigureAwait(false); } + internal (RequestBucket, BucketId) UpdateBucketHash(BucketId id, string discordHash) + { + if (!id.IsHashBucket) + { + var bucket = BucketId.Create(discordHash, id); + var hashReqQueue = (RequestBucket)_buckets.GetOrAdd(bucket, _buckets[id]); + _buckets.AddOrUpdate(id, bucket, (oldBucket, oldObj) => bucket); + return (hashReqQueue, bucket); + } + return (null, null); + } private async Task RunCleanup() { @@ -126,10 +144,15 @@ namespace Discord.Net.Queue while (!_cancelTokenSource.IsCancellationRequested) { var now = DateTimeOffset.UtcNow; - foreach (var bucket in _buckets.Select(x => x.Value)) + foreach (var bucket in _buckets.Where(x => x.Value is RequestBucket).Select(x => (RequestBucket)x.Value)) { if ((now - bucket.LastAttemptAt).TotalMinutes > 1.0) + { + if (bucket.Id.IsHashBucket) + foreach (var redirectBucket in _buckets.Where(x => x.Value == bucket.Id).Select(x => (BucketId)x.Value)) + _buckets.TryRemove(redirectBucket, out _); //remove redirections if hash bucket _buckets.TryRemove(bucket.Id, out _); + } } await Task.Delay(60000, _cancelTokenSource.Token).ConfigureAwait(false); //Runs each minute } diff --git a/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs b/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs index 771923cd4..f1471d545 100644 --- a/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs +++ b/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs @@ -19,12 +19,13 @@ namespace Discord.Net.Queue private readonly RequestQueue _queue; private int _semaphore; private DateTimeOffset? _resetTick; + private RequestBucket _redirectBucket; - public string Id { get; private set; } + public BucketId Id { get; private set; } public int WindowCount { get; private set; } public DateTimeOffset LastAttemptAt { get; private set; } - public RequestBucket(RequestQueue queue, RestRequest request, string id) + public RequestBucket(RequestQueue queue, RestRequest request, BucketId id) { _queue = queue; Id = id; @@ -32,7 +33,7 @@ namespace Discord.Net.Queue _lock = new object(); if (request.Options.IsClientBucket) - WindowCount = ClientBucket.Get(request.Options.BucketId).WindowCount; + WindowCount = ClientBucket.Get(Id).WindowCount; else WindowCount = 1; //Only allow one request until we get a header back _semaphore = WindowCount; @@ -52,6 +53,8 @@ namespace Discord.Net.Queue { await _queue.EnterGlobalAsync(id, request).ConfigureAwait(false); await EnterAsync(id, request).ConfigureAwait(false); + if (_redirectBucket != null) + return await _redirectBucket.SendAsync(request); #if DEBUG_LIMITS Debug.WriteLine($"[{id}] Sending..."); @@ -160,6 +163,9 @@ namespace Discord.Net.Queue while (true) { + if (_redirectBucket != null) + break; + if (DateTimeOffset.UtcNow > request.TimeoutAt || request.Options.CancelToken.IsCancellationRequested) { if (!isRateLimited) @@ -175,7 +181,8 @@ namespace Discord.Net.Queue } DateTimeOffset? timeoutAt = request.TimeoutAt; - if (windowCount > 0 && Interlocked.Decrement(ref _semaphore) < 0) + int semaphore = Interlocked.Decrement(ref _semaphore); + if (windowCount > 0 && semaphore < 0) { if (!isRateLimited) { @@ -210,20 +217,52 @@ namespace Discord.Net.Queue } #if DEBUG_LIMITS else - Debug.WriteLine($"[{id}] Entered Semaphore ({_semaphore}/{WindowCount} remaining)"); + Debug.WriteLine($"[{id}] Entered Semaphore ({semaphore}/{WindowCount} remaining)"); #endif break; } } - private void UpdateRateLimit(int id, RestRequest request, RateLimitInfo info, bool is429) + private void UpdateRateLimit(int id, RestRequest request, RateLimitInfo info, bool is429, bool redirected = false) { if (WindowCount == 0) return; lock (_lock) { + if (redirected) + { + Interlocked.Decrement(ref _semaphore); //we might still hit a real ratelimit if all tickets were already taken, can't do much about it since we didn't know they were the same +#if DEBUG_LIMITS + Debug.WriteLine($"[{id}] Decrease Semaphore"); +#endif + } bool hasQueuedReset = _resetTick != null; + + if (info.Bucket != null && !redirected) + { + (RequestBucket, BucketId) hashBucket = _queue.UpdateBucketHash(Id, info.Bucket); + if (!(hashBucket.Item1 is null) && !(hashBucket.Item2 is null)) + { + if (hashBucket.Item1 == this) //this bucket got promoted to a hash queue + { + Id = hashBucket.Item2; +#if DEBUG_LIMITS + Debug.WriteLine($"[{id}] Promoted to Hash Bucket ({hashBucket.Item2})"); +#endif + } + else + { + _redirectBucket = hashBucket.Item1; //this request should be part of another bucket, this bucket will be disabled, redirect everything + _redirectBucket.UpdateRateLimit(id, request, info, is429, redirected: true); //update the hash bucket ratelimit +#if DEBUG_LIMITS + Debug.WriteLine($"[{id}] Redirected to {_redirectBucket.Id}"); +#endif + return; + } + } + } + if (info.Limit.HasValue && WindowCount != info.Limit.Value) { WindowCount = info.Limit.Value; @@ -233,7 +272,6 @@ namespace Discord.Net.Queue #endif } - var now = DateTimeOffset.UtcNow.ToUnixTimeSeconds(); DateTimeOffset? resetTick = null; //Using X-RateLimit-Remaining causes a race condition @@ -250,16 +288,18 @@ namespace Discord.Net.Queue Debug.WriteLine($"[{id}] Retry-After: {info.RetryAfter.Value} ({info.RetryAfter.Value} ms)"); #endif } - else if (info.ResetAfter.HasValue && (request.Options.UseSystemClock.HasValue ? !request.Options.UseSystemClock.Value : false)) - { - resetTick = DateTimeOffset.UtcNow.Add(info.ResetAfter.Value); - } + else if (info.ResetAfter.HasValue && (request.Options.UseSystemClock.HasValue ? !request.Options.UseSystemClock.Value : false)) + { + resetTick = DateTimeOffset.UtcNow.Add(info.ResetAfter.Value); +#if DEBUG_LIMITS + Debug.WriteLine($"[{id}] Reset-After: {info.ResetAfter.Value} ({info.ResetAfter?.TotalMilliseconds} ms)"); +#endif + } else if (info.Reset.HasValue) { resetTick = info.Reset.Value.AddSeconds(info.Lag?.TotalSeconds ?? 1.0); - /* millisecond precision makes this unnecessary, retaining in case of regression - + /* millisecond precision makes this unnecessary, retaining in case of regression if (request.Options.IsReactionBucket) resetTick = DateTimeOffset.Now.AddMilliseconds(250); */ @@ -269,17 +309,17 @@ namespace Discord.Net.Queue Debug.WriteLine($"[{id}] X-RateLimit-Reset: {info.Reset.Value.ToUnixTimeSeconds()} ({diff} ms, {info.Lag?.TotalMilliseconds} ms lag)"); #endif } - else if (request.Options.IsClientBucket && request.Options.BucketId != null) + else if (request.Options.IsClientBucket && Id != null) { - resetTick = DateTimeOffset.UtcNow.AddSeconds(ClientBucket.Get(request.Options.BucketId).WindowSeconds); + resetTick = DateTimeOffset.UtcNow.AddSeconds(ClientBucket.Get(Id).WindowSeconds); #if DEBUG_LIMITS - Debug.WriteLine($"[{id}] Client Bucket ({ClientBucket.Get(request.Options.BucketId).WindowSeconds * 1000} ms)"); + Debug.WriteLine($"[{id}] Client Bucket ({ClientBucket.Get(Id).WindowSeconds * 1000} ms)"); #endif } if (resetTick == null) { - WindowCount = 0; //No rate limit info, disable limits on this bucket (should only ever happen with a user token) + WindowCount = 0; //No rate limit info, disable limits on this bucket #if DEBUG_LIMITS Debug.WriteLine($"[{id}] Disabled Semaphore"); #endif diff --git a/src/Discord.Net.Rest/Net/RateLimitInfo.cs b/src/Discord.Net.Rest/Net/RateLimitInfo.cs index 13e9e39a7..6a7df7b01 100644 --- a/src/Discord.Net.Rest/Net/RateLimitInfo.cs +++ b/src/Discord.Net.Rest/Net/RateLimitInfo.cs @@ -11,7 +11,8 @@ namespace Discord.Net public int? Remaining { get; } public int? RetryAfter { get; } public DateTimeOffset? Reset { get; } - public TimeSpan? ResetAfter { get; } + public TimeSpan? ResetAfter { get; } + public string Bucket { get; } public TimeSpan? Lag { get; } internal RateLimitInfo(Dictionary headers) @@ -26,8 +27,9 @@ namespace Discord.Net double.TryParse(temp, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out var reset) ? DateTimeOffset.FromUnixTimeMilliseconds((long)(reset * 1000)) : (DateTimeOffset?)null; RetryAfter = headers.TryGetValue("Retry-After", out temp) && int.TryParse(temp, NumberStyles.None, CultureInfo.InvariantCulture, out var retryAfter) ? retryAfter : (int?)null; - ResetAfter = headers.TryGetValue("X-RateLimit-Reset-After", out temp) && - float.TryParse(temp, out var resetAfter) ? TimeSpan.FromMilliseconds((long)(resetAfter * 1000)) : (TimeSpan?)null; + ResetAfter = headers.TryGetValue("X-RateLimit-Reset-After", out temp) && + double.TryParse(temp, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out var resetAfter) ? TimeSpan.FromMilliseconds((long)(resetAfter * 1000)) : (TimeSpan?)null; + Bucket = headers.TryGetValue("X-RateLimit-Bucket", out temp) ? temp : null; Lag = headers.TryGetValue("Date", out temp) && DateTimeOffset.TryParse(temp, CultureInfo.InvariantCulture, DateTimeStyles.None, out var date) ? DateTimeOffset.UtcNow - date : (TimeSpan?)null; } diff --git a/src/Discord.Net.Webhook/DiscordWebhookClient.cs b/src/Discord.Net.Webhook/DiscordWebhookClient.cs index 353345ded..3ad100148 100644 --- a/src/Discord.Net.Webhook/DiscordWebhookClient.cs +++ b/src/Discord.Net.Webhook/DiscordWebhookClient.cs @@ -77,9 +77,9 @@ namespace Discord.Webhook ApiClient.RequestQueue.RateLimitTriggered += async (id, info) => { if (info == null) - await _restLogger.VerboseAsync($"Preemptive Rate limit triggered: {id ?? "null"}").ConfigureAwait(false); + await _restLogger.VerboseAsync($"Preemptive Rate limit triggered: {id?.ToString() ?? "null"}").ConfigureAwait(false); else - await _restLogger.WarningAsync($"Rate limit triggered: {id ?? "null"}").ConfigureAwait(false); + await _restLogger.WarningAsync($"Rate limit triggered: {id?.ToString() ?? "null"}").ConfigureAwait(false); }; ApiClient.SentRequest += async (method, endpoint, millis) => await _restLogger.VerboseAsync($"{method} {endpoint}: {millis} ms").ConfigureAwait(false); } From b95b95bdcb0bd6216bd0633b1bd149da4adb0bb2 Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 5 Aug 2020 21:16:59 -0300 Subject: [PATCH 022/212] fix: Invite audit log without inviter (#1599) * Fix possible invite without inviter * Prevent the same for InviteCreate * Update Creator property docs --- .../DataTypes/InviteCreateAuditLogData.cs | 14 +++++++++----- .../DataTypes/InviteDeleteAuditLogData.cs | 14 +++++++++----- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/InviteCreateAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/InviteCreateAuditLogData.cs index 215a3c164..b177b2435 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/InviteCreateAuditLogData.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/InviteCreateAuditLogData.cs @@ -36,13 +36,17 @@ namespace Discord.Rest var maxAge = maxAgeModel.NewValue.ToObject(discord.ApiClient.Serializer); var code = codeModel.NewValue.ToObject(discord.ApiClient.Serializer); var temporary = temporaryModel.NewValue.ToObject(discord.ApiClient.Serializer); - var inviterId = inviterIdModel.NewValue.ToObject(discord.ApiClient.Serializer); var channelId = channelIdModel.NewValue.ToObject(discord.ApiClient.Serializer); var uses = usesModel.NewValue.ToObject(discord.ApiClient.Serializer); var maxUses = maxUsesModel.NewValue.ToObject(discord.ApiClient.Serializer); - var inviterInfo = log.Users.FirstOrDefault(x => x.Id == inviterId); - var inviter = RestUser.Create(discord, inviterInfo); + RestUser inviter = null; + if (inviterIdModel != null) + { + var inviterId = inviterIdModel.NewValue.ToObject(discord.ApiClient.Serializer); + var inviterInfo = log.Users.FirstOrDefault(x => x.Id == inviterId); + inviter = RestUser.Create(discord, inviterInfo); + } return new InviteCreateAuditLogData(maxAge, code, temporary, inviter, channelId, uses, maxUses); } @@ -70,10 +74,10 @@ namespace Discord.Rest /// public bool Temporary { get; } /// - /// Gets the user that created this invite. + /// Gets the user that created this invite if available. /// /// - /// A user that created this invite. + /// A user that created this invite or . /// public IUser Creator { get; } /// diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/InviteDeleteAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/InviteDeleteAuditLogData.cs index 5e49bb641..9d0aed12b 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/InviteDeleteAuditLogData.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/InviteDeleteAuditLogData.cs @@ -36,13 +36,17 @@ namespace Discord.Rest var maxAge = maxAgeModel.OldValue.ToObject(discord.ApiClient.Serializer); var code = codeModel.OldValue.ToObject(discord.ApiClient.Serializer); var temporary = temporaryModel.OldValue.ToObject(discord.ApiClient.Serializer); - var inviterId = inviterIdModel.OldValue.ToObject(discord.ApiClient.Serializer); var channelId = channelIdModel.OldValue.ToObject(discord.ApiClient.Serializer); var uses = usesModel.OldValue.ToObject(discord.ApiClient.Serializer); var maxUses = maxUsesModel.OldValue.ToObject(discord.ApiClient.Serializer); - var inviterInfo = log.Users.FirstOrDefault(x => x.Id == inviterId); - var inviter = RestUser.Create(discord, inviterInfo); + RestUser inviter = null; + if (inviterIdModel != null) + { + var inviterId = inviterIdModel.OldValue.ToObject(discord.ApiClient.Serializer); + var inviterInfo = log.Users.FirstOrDefault(x => x.Id == inviterId); + inviter = RestUser.Create(discord, inviterInfo); + } return new InviteDeleteAuditLogData(maxAge, code, temporary, inviter, channelId, uses, maxUses); } @@ -70,10 +74,10 @@ namespace Discord.Rest /// public bool Temporary { get; } /// - /// Gets the user that created this invite. + /// Gets the user that created this invite if available. /// /// - /// A user that created this invite. + /// A user that created this invite or . /// public IUser Creator { get; } /// From df8a0f7cd658d99f04964051ae81bfa0797c4447 Mon Sep 17 00:00:00 2001 From: Bram <35614609+BramEsendam@users.noreply.github.com> Date: Fri, 4 Sep 2020 18:56:05 +0200 Subject: [PATCH 023/212] Fix: Not using the new domain name. (#1571) * Fix: Using the correct discord domain. * Fix: Using the correct discord domain. * Docs: Using the correct discord domain. * Fix: Changed canary and ptb to the new domain. --- README.md | 2 +- .../Common/EmbedObjectBuilder.Inclusion.md | 6 +++--- docs/faq/basics/client-basics.md | 2 +- docs/faq/misc/glossary.md | 4 ++-- docs/guides/getting_started/first-bot.md | 10 +++++----- docs/index.md | 4 ++-- samples/04_webhook_client/Program.cs | 8 ++++---- src/Discord.Net.Core/DiscordConfig.cs | 4 ++-- src/Discord.Net.Core/Extensions/MessageExtensions.cs | 2 +- src/Discord.Net.Core/Net/HttpException.cs | 4 ++-- src/Discord.Net.Core/Net/WebSocketClosedException.cs | 2 +- src/Discord.Net.WebSocket/DiscordSocketConfig.cs | 2 +- test/Discord.Net.Tests.Unit/TokenUtilsTests.cs | 2 +- test/Discord.Net.Tests/Tests.DiscordWebhookClient.cs | 12 ++++++------ 14 files changed, 32 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index f4bc5811e..1d9235331 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![NuGet](https://img.shields.io/nuget/vpre/Discord.Net.svg?maxAge=2592000?style=plastic)](https://www.nuget.org/packages/Discord.Net) [![MyGet](https://img.shields.io/myget/discord-net/vpre/Discord.Net.svg)](https://www.myget.org/feed/Packages/discord-net) [![Build Status](https://dev.azure.com/discord-net/Discord.Net/_apis/build/status/discord-net.Discord.Net?branchName=dev)](https://dev.azure.com/discord-net/Discord.Net/_build/latest?definitionId=1&branchName=dev) -[![Discord](https://discordapp.com/api/guilds/81384788765712384/widget.png)](https://discord.gg/jkrBmQR) +[![Discord](https://discord.com/api/guilds/81384788765712384/widget.png)](https://discord.gg/jkrBmQR) An unofficial .NET API Wrapper for the Discord client (http://discordapp.com). diff --git a/docs/_overwrites/Common/EmbedObjectBuilder.Inclusion.md b/docs/_overwrites/Common/EmbedObjectBuilder.Inclusion.md index eac0d9ca5..a9d3539ed 100644 --- a/docs/_overwrites/Common/EmbedObjectBuilder.Inclusion.md +++ b/docs/_overwrites/Common/EmbedObjectBuilder.Inclusion.md @@ -4,10 +4,10 @@ field, and 2 normal fields using an @Discord.EmbedBuilder: ```cs var exampleAuthor = new EmbedAuthorBuilder() .WithName("I am a bot") - .WithIconUrl("https://discordapp.com/assets/e05ead6e6ebc08df9291738d0aa6986d.png"); + .WithIconUrl("https://discord.com/assets/e05ead6e6ebc08df9291738d0aa6986d.png"); var exampleFooter = new EmbedFooterBuilder() .WithText("I am a nice footer") - .WithIconUrl("https://discordapp.com/assets/28174a34e77bb5e5310ced9f95cb480b.png"); + .WithIconUrl("https://discord.com/assets/28174a34e77bb5e5310ced9f95cb480b.png"); var exampleField = new EmbedFieldBuilder() .WithName("Title of Another Field") .WithValue("I am an [example](https://example.com).") @@ -22,4 +22,4 @@ var embed = new EmbedBuilder() .WithAuthor(exampleAuthor) .WithFooter(exampleFooter) .Build(); -``` \ No newline at end of file +``` diff --git a/docs/faq/basics/client-basics.md b/docs/faq/basics/client-basics.md index 9377ac2e9..1176ee3fd 100644 --- a/docs/faq/basics/client-basics.md +++ b/docs/faq/basics/client-basics.md @@ -30,7 +30,7 @@ There are few possible reasons why this may occur. [TokenType]: xref:Discord.TokenType [827]: https://github.com/RogueException/Discord.Net/issues/827 [958]: https://github.com/RogueException/Discord.Net/issues/958 -[Discord API Terms of Service]: https://discordapp.com/developers/docs/legal +[Discord API Terms of Service]: https://discord.com/developers/docs/legal ## How do I do X, Y, Z when my bot connects/logs on? Why do I get a `NullReferenceException` upon calling any client methods after connect? diff --git a/docs/faq/misc/glossary.md b/docs/faq/misc/glossary.md index 95bdbaa03..4b661f65c 100644 --- a/docs/faq/misc/glossary.md +++ b/docs/faq/misc/glossary.md @@ -19,7 +19,7 @@ channels, and are often referred to as "servers". * A **Channel** ([IChannel]) represents a generic channel. - Example: #dotnet_discord-net - See [Channel Types](#channel-types) - + [IGuild]: xref:Discord.IGuild [IChannel]: xref:Discord.IChannel @@ -79,4 +79,4 @@ activity for listening to a song on Spotify. [RichGame]: xref:Discord.RichGame [StreamingGame]: xref:Discord.StreamingGame [SpotifyGame]: xref:Discord.SpotifyGame -[Rich Presence Intro]: https://discordapp.com/developers/docs/rich-presence/best-practices \ No newline at end of file +[Rich Presence Intro]: https://discord.com/developers/docs/rich-presence/best-practices diff --git a/docs/guides/getting_started/first-bot.md b/docs/guides/getting_started/first-bot.md index bdae80c7f..150466be1 100644 --- a/docs/guides/getting_started/first-bot.md +++ b/docs/guides/getting_started/first-bot.md @@ -31,7 +31,7 @@ the Discord Applications Portal first. ![Step 7](images/intro-public-bot.png) -[Discord Applications Portal]: https://discordapp.com/developers/applications/ +[Discord Applications Portal]: https://discord.com/developers/applications/ ## Adding your bot to a server @@ -165,11 +165,11 @@ or any other blocking method, such as reading from the console. > the source code for your bot. > > In the following example, we retrieve the token from a pre-defined -> variable, which is **NOT** secure, especially if you plan on +> variable, which is **NOT** secure, especially if you plan on > distributing the application in any shape or form. > -> We recommend alternative storage such as -> [Environment Variables], an external configuration file, or a +> We recommend alternative storage such as +> [Environment Variables], an external configuration file, or a > secrets manager for safe-handling of secrets. > > [Environment Variables]: https://en.wikipedia.org/wiki/Environment_variable @@ -221,4 +221,4 @@ should be to separate... 2. the modules (handle commands) 3. the services (persistent storage, pure functions, data manipulation) -[CommandService]: xref:Discord.Commands.CommandService \ No newline at end of file +[CommandService]: xref:Discord.Commands.CommandService diff --git a/docs/index.md b/docs/index.md index 34350df70..1d0f5aaf7 100644 --- a/docs/index.md +++ b/docs/index.md @@ -11,12 +11,12 @@ title: Home [![NuGet](https://img.shields.io/nuget/vpre/Discord.Net.svg?maxAge=2592000?style=plastic)](https://www.nuget.org/packages/Discord.Net) [![MyGet](https://img.shields.io/myget/discord-net/vpre/Discord.Net.svg)](https://www.myget.org/feed/Packages/discord-net) [![Build Status](https://dev.azure.com/discord-net/Discord.Net/_apis/build/status/discord-net.Discord.Net?branchName=dev)](https://dev.azure.com/discord-net/Discord.Net/_build/latest?definitionId=1&branchName=dev) -[![Discord](https://discordapp.com/api/guilds/81384788765712384/widget.png)](https://discord.gg/jkrBmQR) +[![Discord](https://discord.com/api/guilds/81384788765712384/widget.png)](https://discord.gg/jkrBmQR) ## What is Discord.Net? Discord.Net is an asynchronous, multi-platform .NET Library used to -interface with the [Discord API](https://discordapp.com/). +interface with the [Discord API](https://discord.com/). ## Where to begin? diff --git a/samples/04_webhook_client/Program.cs b/samples/04_webhook_client/Program.cs index c2e5faa03..f3a50036c 100644 --- a/samples/04_webhook_client/Program.cs +++ b/samples/04_webhook_client/Program.cs @@ -14,10 +14,10 @@ namespace _04_webhook_client public async Task MainAsync() { - // The webhook url follows the format https://discordapp.com/api/webhooks/{id}/{token} + // The webhook url follows the format https://discord.com/api/webhooks/{id}/{token} // Because anyone with the webhook URL can use your webhook - // you should NOT hard code the URL or ID + token into your application. - using (var client = new DiscordWebhookClient("https://discordapp.com/api/webhooks/123/abc123")) + // you should NOT hard code the URL or ID + token into your application. + using (var client = new DiscordWebhookClient("https://discord.com/api/webhooks/123/abc123")) { var embed = new EmbedBuilder { @@ -26,7 +26,7 @@ namespace _04_webhook_client }; // Webhooks are able to send multiple embeds per message - // As such, your embeds must be passed as a collection. + // As such, your embeds must be passed as a collection. await client.SendMessageAsync(text: "Send a message to this webhook!", embeds: new[] { embed.Build() }); } } diff --git a/src/Discord.Net.Core/DiscordConfig.cs b/src/Discord.Net.Core/DiscordConfig.cs index 51970a781..429ad7b0c 100644 --- a/src/Discord.Net.Core/DiscordConfig.cs +++ b/src/Discord.Net.Core/DiscordConfig.cs @@ -13,7 +13,7 @@ namespace Discord /// /// An representing the API version that Discord.Net uses to communicate with Discord. /// A list of available API version can be seen on the official - /// Discord API documentation + /// Discord API documentation /// . /// public const int APIVersion = 6; @@ -50,7 +50,7 @@ namespace Discord /// /// The Discord API URL using . /// - public static readonly string APIUrl = $"https://discordapp.com/api/v{APIVersion}/"; + public static readonly string APIUrl = $"https://discord.com/api/v{APIVersion}/"; /// /// Returns the base Discord CDN URL. /// diff --git a/src/Discord.Net.Core/Extensions/MessageExtensions.cs b/src/Discord.Net.Core/Extensions/MessageExtensions.cs index 64a1d89ab..e44e397fa 100644 --- a/src/Discord.Net.Core/Extensions/MessageExtensions.cs +++ b/src/Discord.Net.Core/Extensions/MessageExtensions.cs @@ -17,7 +17,7 @@ namespace Discord public static string GetJumpUrl(this IMessage msg) { var channel = msg.Channel; - return $"https://discordapp.com/channels/{(channel is IDMChannel ? "@me" : $"{(channel as ITextChannel).GuildId}")}/{channel.Id}/{msg.Id}"; + return $"https://discord.com/channels/{(channel is IDMChannel ? "@me" : $"{(channel as ITextChannel).GuildId}")}/{channel.Id}/{msg.Id}"; } /// diff --git a/src/Discord.Net.Core/Net/HttpException.cs b/src/Discord.Net.Core/Net/HttpException.cs index d36bd66f9..ff9cf91f2 100644 --- a/src/Discord.Net.Core/Net/HttpException.cs +++ b/src/Discord.Net.Core/Net/HttpException.cs @@ -13,7 +13,7 @@ namespace Discord.Net /// /// /// An - /// HTTP status code + /// HTTP status code /// from Discord. /// public HttpStatusCode HttpCode { get; } @@ -22,7 +22,7 @@ namespace Discord.Net /// /// /// A - /// JSON error code + /// JSON error code /// from Discord, or null if none. /// public int? DiscordCode { get; } diff --git a/src/Discord.Net.Core/Net/WebSocketClosedException.cs b/src/Discord.Net.Core/Net/WebSocketClosedException.cs index 6e2564f6e..c743cd696 100644 --- a/src/Discord.Net.Core/Net/WebSocketClosedException.cs +++ b/src/Discord.Net.Core/Net/WebSocketClosedException.cs @@ -11,7 +11,7 @@ namespace Discord.Net /// /// /// A - /// close code + /// close code /// from Discord. /// public int CloseCode { get; } diff --git a/src/Discord.Net.WebSocket/DiscordSocketConfig.cs b/src/Discord.Net.WebSocket/DiscordSocketConfig.cs index 877ccd875..11e44d8dc 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketConfig.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketConfig.cs @@ -87,7 +87,7 @@ namespace Discord.WebSocket /// /// /// For more information, please see - /// Request Guild Members + /// Request Guild Members /// on the official Discord API documentation. /// /// diff --git a/test/Discord.Net.Tests.Unit/TokenUtilsTests.cs b/test/Discord.Net.Tests.Unit/TokenUtilsTests.cs index bbfbfe754..e9526b761 100644 --- a/test/Discord.Net.Tests.Unit/TokenUtilsTests.cs +++ b/test/Discord.Net.Tests.Unit/TokenUtilsTests.cs @@ -83,7 +83,7 @@ namespace Discord public void BotTokenDoesNotThrowExceptions(string token) { // This example token is pulled from the Discord Docs - // https://discordapp.com/developers/docs/reference#authentication-example-bot-token-authorization-header + // https://discord.com/developers/docs/reference#authentication-example-bot-token-authorization-header // should not throw any exception TokenUtils.ValidateToken(TokenType.Bot, token); } diff --git a/test/Discord.Net.Tests/Tests.DiscordWebhookClient.cs b/test/Discord.Net.Tests/Tests.DiscordWebhookClient.cs index 039525afc..52c39005b 100644 --- a/test/Discord.Net.Tests/Tests.DiscordWebhookClient.cs +++ b/test/Discord.Net.Tests/Tests.DiscordWebhookClient.cs @@ -12,18 +12,18 @@ namespace Discord public class DiscordWebhookClientTests { [Theory] - [InlineData("https://discordapp.com/api/webhooks/123412347732897802/_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK", + [InlineData("https://discord.com/api/webhooks/123412347732897802/_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK", 123412347732897802, "_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK")] // ptb, canary, etc will have slightly different urls - [InlineData("https://ptb.discordapp.com/api/webhooks/123412347732897802/_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK", + [InlineData("https://ptb.discord.com/api/webhooks/123412347732897802/_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK", 123412347732897802, "_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK")] - [InlineData("https://canary.discordapp.com/api/webhooks/123412347732897802/_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK", + [InlineData("https://canary.discord.com/api/webhooks/123412347732897802/_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK", 123412347732897802, "_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK")] // don't care about https - [InlineData("http://canary.discordapp.com/api/webhooks/123412347732897802/_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK", + [InlineData("http://canary.discord.com/api/webhooks/123412347732897802/_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK", 123412347732897802, "_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK")] // this is the minimum that the regex cares about - [InlineData("discordapp.com/api/webhooks/123412347732897802/_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK", + [InlineData("discord.com/api/webhooks/123412347732897802/_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK", 123412347732897802, "_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK")] public void TestWebhook_Valid(string webhookurl, ulong expectedId, string expectedToken) { @@ -48,7 +48,7 @@ namespace Discord [Theory] [InlineData("123412347732897802/_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK")] // trailing slash - [InlineData("https://discordapp.com/api/webhooks/123412347732897802/_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK/")] + [InlineData("https://discord.com/api/webhooks/123412347732897802/_abcde123456789-ABCDEFGHIJKLMNOP12345678-abcdefghijklmnopABCDEFGHIJK/")] public void TestWebhook_Invalid(string webhookurl) { Assert.Throws(() => From 366ca9a56273c1eaf5e68a335e2cf969cfa6cbd1 Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 14 Oct 2020 19:02:33 -0300 Subject: [PATCH 024/212] fix: Parse mentions from message payload (#1621) --- .../Entities/Messages/IMessage.cs | 7 +++++ .../Entities/Messages/RestMessage.cs | 3 +++ .../Entities/Messages/RestUserMessage.cs | 17 +++++++----- .../Entities/Messages/SocketMessage.cs | 2 ++ .../Entities/Messages/SocketUserMessage.cs | 27 ++++++++++++------- 5 files changed, 41 insertions(+), 15 deletions(-) diff --git a/src/Discord.Net.Core/Entities/Messages/IMessage.cs b/src/Discord.Net.Core/Entities/Messages/IMessage.cs index 530c1cd82..b74e333c1 100644 --- a/src/Discord.Net.Core/Entities/Messages/IMessage.cs +++ b/src/Discord.Net.Core/Entities/Messages/IMessage.cs @@ -39,6 +39,13 @@ namespace Discord /// bool IsSuppressed { get; } /// + /// Gets the value that indicates whether this message mentioned everyone. + /// + /// + /// true if this message mentioned everyone; otherwise false. + /// + bool MentionedEveryone { get; } + /// /// Gets the content for this message. /// /// diff --git a/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs b/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs index 809a55e9c..2456e65e7 100644 --- a/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs +++ b/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs @@ -37,6 +37,9 @@ namespace Discord.Rest public virtual bool IsSuppressed => false; /// public virtual DateTimeOffset? EditedTimestamp => null; + /// + public virtual bool MentionedEveryone => false; + /// /// Gets a collection of the 's on the message. /// diff --git a/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs b/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs index ad2a65615..be955b13d 100644 --- a/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs +++ b/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs @@ -18,6 +18,8 @@ namespace Discord.Rest private ImmutableArray _attachments = ImmutableArray.Create(); private ImmutableArray _embeds = ImmutableArray.Create(); private ImmutableArray _tags = ImmutableArray.Create(); + private ImmutableArray _roleMentionIds = ImmutableArray.Create(); + private ImmutableArray _userMentions = ImmutableArray.Create(); /// public override bool IsTTS => _isTTS; @@ -28,15 +30,17 @@ namespace Discord.Rest /// public override DateTimeOffset? EditedTimestamp => DateTimeUtils.FromTicks(_editedTimestampTicks); /// + public override bool MentionedEveryone => _isMentioningEveryone; + /// public override IReadOnlyCollection Attachments => _attachments; /// public override IReadOnlyCollection Embeds => _embeds; /// public override IReadOnlyCollection MentionedChannelIds => MessageHelper.FilterTagsByKey(TagType.ChannelMention, _tags); /// - public override IReadOnlyCollection MentionedRoleIds => MessageHelper.FilterTagsByKey(TagType.RoleMention, _tags); + public override IReadOnlyCollection MentionedRoleIds => _roleMentionIds; /// - public override IReadOnlyCollection MentionedUsers => MessageHelper.FilterTagsByValue(TagType.UserMention, _tags); + public override IReadOnlyCollection MentionedUsers => _userMentions; /// public override IReadOnlyCollection Tags => _tags; @@ -67,6 +71,8 @@ namespace Discord.Rest { _isSuppressed = model.Flags.Value.HasFlag(API.MessageFlags.Suppressed); } + if (model.RoleMentions.IsSpecified) + _roleMentionIds = model.RoleMentions.Value.ToImmutableArray(); if (model.Attachments.IsSpecified) { @@ -96,20 +102,19 @@ namespace Discord.Rest _embeds = ImmutableArray.Create(); } - ImmutableArray mentions = ImmutableArray.Create(); if (model.UserMentions.IsSpecified) { var value = model.UserMentions.Value; if (value.Length > 0) { - var newMentions = ImmutableArray.CreateBuilder(value.Length); + var newMentions = ImmutableArray.CreateBuilder(value.Length); for (int i = 0; i < value.Length; i++) { var val = value[i]; if (val.Object != null) newMentions.Add(RestUser.Create(Discord, val.Object)); } - mentions = newMentions.ToImmutable(); + _userMentions = newMentions.ToImmutable(); } } @@ -118,7 +123,7 @@ namespace Discord.Rest var text = model.Content.Value; var guildId = (Channel as IGuildChannel)?.GuildId; var guild = guildId != null ? (Discord as IDiscordClient).GetGuildAsync(guildId.Value, CacheMode.CacheOnly).Result : null; - _tags = MessageHelper.ParseTags(text, null, guild, mentions); + _tags = MessageHelper.ParseTags(text, null, guild, _userMentions); model.Content = text; } } diff --git a/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs b/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs index f392614ad..614bd044b 100644 --- a/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs +++ b/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs @@ -46,6 +46,8 @@ namespace Discord.WebSocket public virtual bool IsSuppressed => false; /// public virtual DateTimeOffset? EditedTimestamp => null; + /// + public virtual bool MentionedEveryone => false; /// public MessageActivity Activity { get; private set; } diff --git a/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs b/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs index e1f0f74dc..51b0c2043 100644 --- a/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs +++ b/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs @@ -20,7 +20,9 @@ namespace Discord.WebSocket private ImmutableArray _attachments = ImmutableArray.Create(); private ImmutableArray _embeds = ImmutableArray.Create(); private ImmutableArray _tags = ImmutableArray.Create(); - + private ImmutableArray _roleMentions = ImmutableArray.Create(); + private ImmutableArray _userMentions = ImmutableArray.Create(); + /// public override bool IsTTS => _isTTS; /// @@ -30,6 +32,8 @@ namespace Discord.WebSocket /// public override DateTimeOffset? EditedTimestamp => DateTimeUtils.FromTicks(_editedTimestampTicks); /// + public override bool MentionedEveryone => _isMentioningEveryone; + /// public override IReadOnlyCollection Attachments => _attachments; /// public override IReadOnlyCollection Embeds => _embeds; @@ -38,9 +42,9 @@ namespace Discord.WebSocket /// public override IReadOnlyCollection MentionedChannels => MessageHelper.FilterTagsByValue(TagType.ChannelMention, _tags); /// - public override IReadOnlyCollection MentionedRoles => MessageHelper.FilterTagsByValue(TagType.RoleMention, _tags); + public override IReadOnlyCollection MentionedRoles => _roleMentions; /// - public override IReadOnlyCollection MentionedUsers => MessageHelper.FilterTagsByValue(TagType.UserMention, _tags); + public override IReadOnlyCollection MentionedUsers => _userMentions; internal SocketUserMessage(DiscordSocketClient discord, ulong id, ISocketMessageChannel channel, SocketUser author, MessageSource source) : base(discord, id, channel, author, source) @@ -57,6 +61,8 @@ namespace Discord.WebSocket { base.Update(state, model); + SocketGuild guild = (Channel as SocketGuildChannel)?.Guild; + if (model.IsTextToSpeech.IsSpecified) _isTTS = model.IsTextToSpeech.Value; if (model.Pinned.IsSpecified) @@ -69,6 +75,8 @@ namespace Discord.WebSocket { _isSuppressed = model.Flags.Value.HasFlag(API.MessageFlags.Suppressed); } + if (model.RoleMentions.IsSpecified) + _roleMentions = model.RoleMentions.Value.Select(x => guild.GetRole(x)).ToImmutableArray(); if (model.Attachments.IsSpecified) { @@ -98,28 +106,29 @@ namespace Discord.WebSocket _embeds = ImmutableArray.Create(); } - IReadOnlyCollection mentions = ImmutableArray.Create(); //Is passed to ParseTags to get real mention collection if (model.UserMentions.IsSpecified) { var value = model.UserMentions.Value; if (value.Length > 0) { - var newMentions = ImmutableArray.CreateBuilder(value.Length); + var newMentions = ImmutableArray.CreateBuilder(value.Length); for (int i = 0; i < value.Length; i++) { var val = value[i]; - if (val.Object != null) + var guildUser = guild.GetUser(val.Id); + if (guildUser != null) + newMentions.Add(guildUser); + else if (val.Object != null) newMentions.Add(SocketUnknownUser.Create(Discord, state, val.Object)); } - mentions = newMentions.ToImmutable(); + _userMentions = newMentions.ToImmutable(); } } if (model.Content.IsSpecified) { var text = model.Content.Value; - var guild = (Channel as SocketGuildChannel)?.Guild; - _tags = MessageHelper.ParseTags(text, Channel, guild, mentions); + _tags = MessageHelper.ParseTags(text, Channel, guild, _userMentions); model.Content = text; } } From c1d04b4d1ac833e917c266e16bbe6fae769bc230 Mon Sep 17 00:00:00 2001 From: Samuel <33796679+orchidalloy@users.noreply.github.com> Date: Wed, 14 Oct 2020 19:03:13 -0300 Subject: [PATCH 025/212] fix: Handle null PreferredLocale in rare cases (#1624) Sometimes Discord messes up and leaves a guild with a null PreferredLocale, causing an error to be thrown. This fixes that from Discord.Net's end even though it's Discord's fault. --- src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs index d2d759bb3..160b91526 100644 --- a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs +++ b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs @@ -381,7 +381,7 @@ namespace Discord.WebSocket Description = model.Description; PremiumSubscriptionCount = model.PremiumSubscriptionCount.GetValueOrDefault(); PreferredLocale = model.PreferredLocale; - PreferredCulture = new CultureInfo(PreferredLocale); + PreferredCulture = PreferredLocale == null ? null : new CultureInfo(PreferredLocale); if (model.Emojis != null) { From 3860da002fb796a27522c6d5028f6a05379ebc2f Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 14 Oct 2020 19:04:43 -0300 Subject: [PATCH 026/212] fix: Do not update overwrite cache locally (#1622) --- .../Entities/Channels/SocketGuildChannel.cs | 20 ------------------- 1 file changed, 20 deletions(-) diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketGuildChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketGuildChannel.cs index c65f3be05..3cc8496d9 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketGuildChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketGuildChannel.cs @@ -125,7 +125,6 @@ namespace Discord.WebSocket public virtual async Task AddPermissionOverwriteAsync(IUser user, OverwritePermissions permissions, RequestOptions options = null) { await ChannelHelper.AddPermissionOverwriteAsync(this, Discord, user, permissions, options).ConfigureAwait(false); - _overwrites = _overwrites.Add(new Overwrite(user.Id, PermissionTarget.User, new OverwritePermissions(permissions.AllowValue, permissions.DenyValue))); } /// @@ -140,7 +139,6 @@ namespace Discord.WebSocket public virtual async Task AddPermissionOverwriteAsync(IRole role, OverwritePermissions permissions, RequestOptions options = null) { await ChannelHelper.AddPermissionOverwriteAsync(this, Discord, role, permissions, options).ConfigureAwait(false); - _overwrites = _overwrites.Add(new Overwrite(role.Id, PermissionTarget.Role, new OverwritePermissions(permissions.AllowValue, permissions.DenyValue))); } /// /// Removes the permission overwrite for the given user, if one exists. @@ -153,15 +151,6 @@ namespace Discord.WebSocket public virtual async Task RemovePermissionOverwriteAsync(IUser user, RequestOptions options = null) { await ChannelHelper.RemovePermissionOverwriteAsync(this, Discord, user, options).ConfigureAwait(false); - - for (int i = 0; i < _overwrites.Length; i++) - { - if (_overwrites[i].TargetId == user.Id) - { - _overwrites = _overwrites.RemoveAt(i); - return; - } - } } /// /// Removes the permission overwrite for the given role, if one exists. @@ -174,15 +163,6 @@ namespace Discord.WebSocket public virtual async Task RemovePermissionOverwriteAsync(IRole role, RequestOptions options = null) { await ChannelHelper.RemovePermissionOverwriteAsync(this, Discord, role, options).ConfigureAwait(false); - - for (int i = 0; i < _overwrites.Length; i++) - { - if (_overwrites[i].TargetId == role.Id) - { - _overwrites = _overwrites.RemoveAt(i); - return; - } - } } public new virtual SocketGuildUser GetUser(ulong id) => null; From 3085e883b73554be22e8f7979ef30173b34b7d9e Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 14 Oct 2020 19:05:35 -0300 Subject: [PATCH 027/212] fix: Invoke UserUpdated from GuildMemberUpdated if needed (#1623) --- src/Discord.Net.WebSocket/DiscordSocketClient.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 004c6179c..307c905c7 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -903,6 +903,13 @@ namespace Discord.WebSocket if (user != null) { + var globalBefore = user.GlobalUser.Clone(); + if (user.GlobalUser.Update(State, data.User)) + { + //Global data was updated, trigger UserUpdated + await TimedInvokeAsync(_userUpdatedEvent, nameof(UserUpdated), globalBefore, user).ConfigureAwait(false); + } + var before = user.Clone(); user.Update(State, data); await TimedInvokeAsync(_guildMemberUpdatedEvent, nameof(GuildMemberUpdated), before, user).ConfigureAwait(false); From 4b389f3ecf1f8c3806f852fc27aa22c061afefc1 Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 14 Oct 2020 19:05:59 -0300 Subject: [PATCH 028/212] fix: Add missing permissions (#1642) --- .../Permissions/OverwritePermissions.cs | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/Discord.Net.Core/Entities/Permissions/OverwritePermissions.cs b/src/Discord.Net.Core/Entities/Permissions/OverwritePermissions.cs index 04bb2f668..7876d49ff 100644 --- a/src/Discord.Net.Core/Entities/Permissions/OverwritePermissions.cs +++ b/src/Discord.Net.Core/Entities/Permissions/OverwritePermissions.cs @@ -76,6 +76,10 @@ namespace Discord public PermValue MoveMembers => Permissions.GetValue(AllowValue, DenyValue, ChannelPermission.MoveMembers); /// If Allowed, a user may use voice-activity-detection rather than push-to-talk. public PermValue UseVAD => Permissions.GetValue(AllowValue, DenyValue, ChannelPermission.UseVAD); + /// If Allowed, a user may use priority speaker in a voice channel. + public PermValue PrioritySpeaker => Permissions.GetValue(AllowValue, DenyValue, ChannelPermission.PrioritySpeaker); + /// If Allowed, a user may go live in a voice channel. + public PermValue Stream => Permissions.GetValue(AllowValue, DenyValue, ChannelPermission.Stream); /// If Allowed, a user may adjust role permissions. This also implicitly grants all other permissions. public PermValue ManageRoles => Permissions.GetValue(AllowValue, DenyValue, ChannelPermission.ManageRoles); @@ -109,7 +113,9 @@ namespace Discord PermValue? moveMembers = null, PermValue? useVoiceActivation = null, PermValue? manageRoles = null, - PermValue? manageWebhooks = null) + PermValue? manageWebhooks = null, + PermValue? prioritySpeaker = null, + PermValue? stream = null) { Permissions.SetValue(ref allowValue, ref denyValue, createInstantInvite, ChannelPermission.CreateInstantInvite); Permissions.SetValue(ref allowValue, ref denyValue, manageChannel, ChannelPermission.ManageChannels); @@ -129,6 +135,8 @@ namespace Discord Permissions.SetValue(ref allowValue, ref denyValue, deafenMembers, ChannelPermission.DeafenMembers); Permissions.SetValue(ref allowValue, ref denyValue, moveMembers, ChannelPermission.MoveMembers); Permissions.SetValue(ref allowValue, ref denyValue, useVoiceActivation, ChannelPermission.UseVAD); + Permissions.SetValue(ref allowValue, ref denyValue, prioritySpeaker, ChannelPermission.PrioritySpeaker); + Permissions.SetValue(ref allowValue, ref denyValue, stream, ChannelPermission.Stream); Permissions.SetValue(ref allowValue, ref denyValue, manageRoles, ChannelPermission.ManageRoles); Permissions.SetValue(ref allowValue, ref denyValue, manageWebhooks, ChannelPermission.ManageWebhooks); @@ -159,10 +167,12 @@ namespace Discord PermValue moveMembers = PermValue.Inherit, PermValue useVoiceActivation = PermValue.Inherit, PermValue manageRoles = PermValue.Inherit, - PermValue manageWebhooks = PermValue.Inherit) + PermValue manageWebhooks = PermValue.Inherit, + PermValue prioritySpeaker = PermValue.Inherit, + PermValue stream = PermValue.Inherit) : this(0, 0, createInstantInvite, manageChannel, addReactions, viewChannel, sendMessages, sendTTSMessages, manageMessages, embedLinks, attachFiles, readMessageHistory, mentionEveryone, useExternalEmojis, connect, speak, muteMembers, deafenMembers, - moveMembers, useVoiceActivation, manageRoles, manageWebhooks) { } + moveMembers, useVoiceActivation, manageRoles, manageWebhooks, prioritySpeaker, stream) { } /// /// Initializes a new from the current one, changing the provided @@ -188,10 +198,12 @@ namespace Discord PermValue? moveMembers = null, PermValue? useVoiceActivation = null, PermValue? manageRoles = null, - PermValue? manageWebhooks = null) + PermValue? manageWebhooks = null, + PermValue? prioritySpeaker = null, + PermValue? stream = null) => new OverwritePermissions(AllowValue, DenyValue, createInstantInvite, manageChannel, addReactions, viewChannel, sendMessages, sendTTSMessages, manageMessages, embedLinks, attachFiles, readMessageHistory, mentionEveryone, useExternalEmojis, connect, speak, muteMembers, deafenMembers, - moveMembers, useVoiceActivation, manageRoles, manageWebhooks); + moveMembers, useVoiceActivation, manageRoles, manageWebhooks, prioritySpeaker, stream); /// /// Creates a of all the values that are allowed. From fa5ef5e1c6028fb6c9711f32bd4b09c3a4599c27 Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 14 Oct 2020 19:20:30 -0300 Subject: [PATCH 029/212] fix: handicap member downloading for verified bots (#1647) --- src/Discord.Net.WebSocket/DiscordSocketClient.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 307c905c7..0263f96d1 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -370,7 +370,7 @@ namespace Discord.WebSocket { var cachedGuilds = guilds.ToImmutableArray(); - const short batchSize = 100; //TODO: Gateway Intents will limit to a maximum of 1 guild_id + int batchSize = _gatewayIntents.HasValue ? 1 : 100; ulong[] batchIds = new ulong[Math.Min(batchSize, cachedGuilds.Length)]; Task[] batchTasks = new Task[batchIds.Length]; int batchCount = (cachedGuilds.Length + (batchSize - 1)) / batchSize; From e3925a77a3ee6553e3fecababf32b01aab7d7fb8 Mon Sep 17 00:00:00 2001 From: mathewsjwh <64035585+mathewsjwh@users.noreply.github.com> Date: Wed, 14 Oct 2020 18:21:42 -0400 Subject: [PATCH 030/212] feature: Added CultureInvariant RegexOption to WebhookUrlRegex (#1637) Co-authored-by: Jake Mathews --- src/Discord.Net.Webhook/DiscordWebhookClient.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Discord.Net.Webhook/DiscordWebhookClient.cs b/src/Discord.Net.Webhook/DiscordWebhookClient.cs index 3ad100148..0af37be4d 100644 --- a/src/Discord.Net.Webhook/DiscordWebhookClient.cs +++ b/src/Discord.Net.Webhook/DiscordWebhookClient.cs @@ -33,7 +33,7 @@ namespace Discord.Webhook : this(webhookUrl, new DiscordRestConfig()) { } // regex pattern to match webhook urls - private static Regex WebhookUrlRegex = new Regex(@"^.*(discord|discordapp)\.com\/api\/webhooks\/([\d]+)\/([a-z0-9_-]+)$", RegexOptions.Compiled | RegexOptions.IgnoreCase); + private static Regex WebhookUrlRegex = new Regex(@"^.*(discord|discordapp)\.com\/api\/webhooks\/([\d]+)\/([a-z0-9_-]+)$", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.CultureInvariant); /// Creates a new Webhook Discord client. public DiscordWebhookClient(ulong webhookId, string webhookToken, DiscordRestConfig config) From f396cd9b928aa3a3ff7725b76551178b6bb80052 Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 14 Oct 2020 19:23:00 -0300 Subject: [PATCH 031/212] fix: Cancel reconnection when 4014 (#1603) * Cancel reconnection when 4014 * Missed an else --- src/Discord.Net.WebSocket/ConnectionManager.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Discord.Net.WebSocket/ConnectionManager.cs b/src/Discord.Net.WebSocket/ConnectionManager.cs index e009674e7..2237e2d1f 100644 --- a/src/Discord.Net.WebSocket/ConnectionManager.cs +++ b/src/Discord.Net.WebSocket/ConnectionManager.cs @@ -44,6 +44,8 @@ namespace Discord var ex2 = ex as WebSocketClosedException; if (ex2?.CloseCode == 4006) CriticalError(new Exception("WebSocket session expired", ex)); + else if (ex2?.CloseCode == 4014) + CriticalError(new Exception("WebSocket connection was closed", ex)); else Error(new Exception("WebSocket connection was closed", ex)); } From 03b831e691fba79191347838fec9952916271fbc Mon Sep 17 00:00:00 2001 From: Alex Howe Date: Wed, 28 Oct 2020 19:26:48 +0000 Subject: [PATCH 032/212] fix: Update README.MD to reflect new discord domain (#1652) The first link does not point to the correct discord domain, it seems the commit that should have fixed this missed this link. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1d9235331..9ace4f22e 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![Build Status](https://dev.azure.com/discord-net/Discord.Net/_apis/build/status/discord-net.Discord.Net?branchName=dev)](https://dev.azure.com/discord-net/Discord.Net/_build/latest?definitionId=1&branchName=dev) [![Discord](https://discord.com/api/guilds/81384788765712384/widget.png)](https://discord.gg/jkrBmQR) -An unofficial .NET API Wrapper for the Discord client (http://discordapp.com). +An unofficial .NET API Wrapper for the Discord client (https://discord.com). Check out the [documentation](https://discord.foxbot.me/) or join the [Discord API Chat](https://discord.gg/jkrBmQR). From 43c8fc0535c2b6045b98c361428e7e663653f700 Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 28 Oct 2020 17:51:16 -0300 Subject: [PATCH 033/212] fix: Voice overwrites and CategoryId remarks (#1608) * Add overwrites to voice and change CategoryId docs * Let's not forget another one --- .../Channels/GuildChannelProperties.cs | 2 +- .../Entities/Channels/ChannelHelper.cs | 22 +++++++++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/Discord.Net.Core/Entities/Channels/GuildChannelProperties.cs b/src/Discord.Net.Core/Entities/Channels/GuildChannelProperties.cs index 93ca2e59a..339d6fffd 100644 --- a/src/Discord.Net.Core/Entities/Channels/GuildChannelProperties.cs +++ b/src/Discord.Net.Core/Entities/Channels/GuildChannelProperties.cs @@ -28,7 +28,7 @@ namespace Discord /// /// /// Setting this value to a category's snowflake identifier will change or set this channel's parent to the - /// specified channel; setting this value to 0 will detach this channel from its parent if one + /// specified channel; setting this value to will detach this channel from its parent if one /// is set. /// public Optional CategoryId { get; set; } diff --git a/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs b/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs index 09507f1d7..6494f7fb7 100644 --- a/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs +++ b/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs @@ -28,7 +28,16 @@ namespace Discord.Rest { Name = args.Name, Position = args.Position, - CategoryId = args.CategoryId + CategoryId = args.CategoryId, + Overwrites = args.PermissionOverwrites.IsSpecified + ? args.PermissionOverwrites.Value.Select(overwrite => new API.Overwrite + { + TargetId = overwrite.TargetId, + TargetType = overwrite.TargetType, + Allow = overwrite.Permissions.AllowValue, + Deny = overwrite.Permissions.DenyValue + }).ToArray() + : Optional.Create(), }; return await client.ApiClient.ModifyGuildChannelAsync(channel.Id, apiArgs, options).ConfigureAwait(false); } @@ -70,7 +79,16 @@ namespace Discord.Rest Name = args.Name, Position = args.Position, CategoryId = args.CategoryId, - UserLimit = args.UserLimit.IsSpecified ? (args.UserLimit.Value ?? 0) : Optional.Create() + UserLimit = args.UserLimit.IsSpecified ? (args.UserLimit.Value ?? 0) : Optional.Create(), + Overwrites = args.PermissionOverwrites.IsSpecified + ? args.PermissionOverwrites.Value.Select(overwrite => new API.Overwrite + { + TargetId = overwrite.TargetId, + TargetType = overwrite.TargetType, + Allow = overwrite.Permissions.AllowValue, + Deny = overwrite.Permissions.DenyValue + }).ToArray() + : Optional.Create(), }; return await client.ApiClient.ModifyGuildChannelAsync(channel.Id, apiArgs, options).ConfigureAwait(false); } From bd4516b035868aba49d1618fe2d8a52c046a5b80 Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 28 Oct 2020 17:52:06 -0300 Subject: [PATCH 034/212] (ifcbrk) fix: Add AllowedMentions to webhooks (#1602) --- .../API/Rest/CreateWebhookMessageParams.cs | 4 +++- .../API/Rest/UploadWebhookFileParams.cs | 3 +++ src/Discord.Net.Webhook/DiscordWebhookClient.cs | 14 ++++++++------ src/Discord.Net.Webhook/WebhookClientHelper.cs | 12 ++++++++---- 4 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/Discord.Net.Rest/API/Rest/CreateWebhookMessageParams.cs b/src/Discord.Net.Rest/API/Rest/CreateWebhookMessageParams.cs index 970a30201..0a4f80a3c 100644 --- a/src/Discord.Net.Rest/API/Rest/CreateWebhookMessageParams.cs +++ b/src/Discord.Net.Rest/API/Rest/CreateWebhookMessageParams.cs @@ -1,4 +1,4 @@ -#pragma warning disable CS1591 +#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest @@ -19,6 +19,8 @@ namespace Discord.API.Rest public Optional Username { get; set; } [JsonProperty("avatar_url")] public Optional AvatarUrl { get; set; } + [JsonProperty("allowed_mentions")] + public Optional AllowedMentions { get; set; } public CreateWebhookMessageParams(string content) { diff --git a/src/Discord.Net.Rest/API/Rest/UploadWebhookFileParams.cs b/src/Discord.Net.Rest/API/Rest/UploadWebhookFileParams.cs index 26153c21b..8da7681ae 100644 --- a/src/Discord.Net.Rest/API/Rest/UploadWebhookFileParams.cs +++ b/src/Discord.Net.Rest/API/Rest/UploadWebhookFileParams.cs @@ -21,6 +21,7 @@ namespace Discord.API.Rest public Optional Username { get; set; } public Optional AvatarUrl { get; set; } public Optional Embeds { get; set; } + public Optional AllowedMentions { get; set; } public bool IsSpoiler { get; set; } = false; @@ -51,6 +52,8 @@ namespace Discord.API.Rest payload["avatar_url"] = AvatarUrl.Value; if (Embeds.IsSpecified) payload["embeds"] = Embeds.Value; + if (AllowedMentions.IsSpecified) + payload["allowed_mentions"] = AllowedMentions.Value; var json = new StringBuilder(); using (var text = new StringWriter(json)) diff --git a/src/Discord.Net.Webhook/DiscordWebhookClient.cs b/src/Discord.Net.Webhook/DiscordWebhookClient.cs index 0af37be4d..9c9bfe958 100644 --- a/src/Discord.Net.Webhook/DiscordWebhookClient.cs +++ b/src/Discord.Net.Webhook/DiscordWebhookClient.cs @@ -88,19 +88,21 @@ namespace Discord.Webhook /// Sends a message to the channel for this webhook. /// Returns the ID of the created message. public Task SendMessageAsync(string text = null, bool isTTS = false, IEnumerable embeds = null, - string username = null, string avatarUrl = null, RequestOptions options = null) - => WebhookClientHelper.SendMessageAsync(this, text, isTTS, embeds, username, avatarUrl, options); + string username = null, string avatarUrl = null, RequestOptions options = null, AllowedMentions allowedMentions = null) + => WebhookClientHelper.SendMessageAsync(this, text, isTTS, embeds, username, avatarUrl, allowedMentions, options); /// Sends a message to the channel for this webhook with an attachment. /// Returns the ID of the created message. public Task SendFileAsync(string filePath, string text, bool isTTS = false, - IEnumerable embeds = null, string username = null, string avatarUrl = null, RequestOptions options = null, bool isSpoiler = false) - => WebhookClientHelper.SendFileAsync(this, filePath, text, isTTS, embeds, username, avatarUrl, options, isSpoiler); + IEnumerable embeds = null, string username = null, string avatarUrl = null, + RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) + => WebhookClientHelper.SendFileAsync(this, filePath, text, isTTS, embeds, username, avatarUrl, allowedMentions, options, isSpoiler); /// Sends a message to the channel for this webhook with an attachment. /// Returns the ID of the created message. public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, - IEnumerable embeds = null, string username = null, string avatarUrl = null, RequestOptions options = null, bool isSpoiler = false) - => WebhookClientHelper.SendFileAsync(this, stream, filename, text, isTTS, embeds, username, avatarUrl, options, isSpoiler); + IEnumerable embeds = null, string username = null, string avatarUrl = null, + RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) + => WebhookClientHelper.SendFileAsync(this, stream, filename, text, isTTS, embeds, username, avatarUrl, allowedMentions, options, isSpoiler); /// Modifies the properties of this webhook. public Task ModifyWebhookAsync(Action func, RequestOptions options = null) diff --git a/src/Discord.Net.Webhook/WebhookClientHelper.cs b/src/Discord.Net.Webhook/WebhookClientHelper.cs index 311d58bda..4bc2eaca9 100644 --- a/src/Discord.Net.Webhook/WebhookClientHelper.cs +++ b/src/Discord.Net.Webhook/WebhookClientHelper.cs @@ -21,7 +21,7 @@ namespace Discord.Webhook return RestInternalWebhook.Create(client, model); } public static async Task SendMessageAsync(DiscordWebhookClient client, - string text, bool isTTS, IEnumerable embeds, string username, string avatarUrl, RequestOptions options) + string text, bool isTTS, IEnumerable embeds, string username, string avatarUrl, AllowedMentions allowedMentions, RequestOptions options) { var args = new CreateWebhookMessageParams(text) { IsTTS = isTTS }; if (embeds != null) @@ -30,19 +30,21 @@ namespace Discord.Webhook args.Username = username; if (avatarUrl != null) args.AvatarUrl = avatarUrl; + if (allowedMentions != null) + args.AllowedMentions = allowedMentions.ToModel(); var model = await client.ApiClient.CreateWebhookMessageAsync(client.Webhook.Id, args, options: options).ConfigureAwait(false); return model.Id; } public static async Task SendFileAsync(DiscordWebhookClient client, string filePath, string text, bool isTTS, - IEnumerable embeds, string username, string avatarUrl, RequestOptions options, bool isSpoiler) + IEnumerable embeds, string username, string avatarUrl, AllowedMentions allowedMentions, RequestOptions options, bool isSpoiler) { string filename = Path.GetFileName(filePath); using (var file = File.OpenRead(filePath)) - return await SendFileAsync(client, file, filename, text, isTTS, embeds, username, avatarUrl, options, isSpoiler).ConfigureAwait(false); + return await SendFileAsync(client, file, filename, text, isTTS, embeds, username, avatarUrl, allowedMentions, options, isSpoiler).ConfigureAwait(false); } public static async Task SendFileAsync(DiscordWebhookClient client, Stream stream, string filename, string text, bool isTTS, - IEnumerable embeds, string username, string avatarUrl, RequestOptions options, bool isSpoiler) + IEnumerable embeds, string username, string avatarUrl, AllowedMentions allowedMentions, RequestOptions options, bool isSpoiler) { var args = new UploadWebhookFileParams(stream) { Filename = filename, Content = text, IsTTS = isTTS, IsSpoiler = isSpoiler }; if (username != null) @@ -51,6 +53,8 @@ namespace Discord.Webhook args.AvatarUrl = avatarUrl; if (embeds != null) args.Embeds = embeds.Select(x => x.ToModel()).ToArray(); + if(allowedMentions != null) + args.AllowedMentions = allowedMentions.ToModel(); var msg = await client.ApiClient.UploadWebhookFileAsync(client.Webhook.Id, args, options).ConfigureAwait(false); return msg.Id; } From ae9fff6380847132ad9357c71f34afa90b0927db Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 28 Oct 2020 18:03:08 -0300 Subject: [PATCH 035/212] fix: Check error 404 and return null for GetBanAsync (#1614) --- src/Discord.Net.Rest/DiscordRestApiClient.cs | 8 ++++++-- src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/Discord.Net.Rest/DiscordRestApiClient.cs b/src/Discord.Net.Rest/DiscordRestApiClient.cs index 76c7bf1b4..83aa6c751 100644 --- a/src/Discord.Net.Rest/DiscordRestApiClient.cs +++ b/src/Discord.Net.Rest/DiscordRestApiClient.cs @@ -874,8 +874,12 @@ namespace Discord.API Preconditions.NotEqual(guildId, 0, nameof(guildId)); options = RequestOptions.CreateOrClone(options); - var ids = new BucketIds(guildId: guildId); - return await SendAsync("GET", () => $"guilds/{guildId}/bans/{userId}", ids, options: options).ConfigureAwait(false); + try + { + var ids = new BucketIds(guildId: guildId); + return await SendAsync("GET", () => $"guilds/{guildId}/bans/{userId}", ids, options: options).ConfigureAwait(false); + } + catch (HttpException ex) when (ex.HttpCode == HttpStatusCode.NotFound) { return null; } } /// /// and must not be equal to zero. diff --git a/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs b/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs index ccc02466e..ecb45fd07 100644 --- a/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs +++ b/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs @@ -132,7 +132,7 @@ namespace Discord.Rest public static async Task GetBanAsync(IGuild guild, BaseDiscordClient client, ulong userId, RequestOptions options) { var model = await client.ApiClient.GetGuildBanAsync(guild.Id, userId, options).ConfigureAwait(false); - return RestBan.Create(client, model); + return model == null ? null : RestBan.Create(client, model); } public static async Task AddBanAsync(IGuild guild, BaseDiscordClient client, From 084db253f32269e364c7106898f2c1b34a8727ff Mon Sep 17 00:00:00 2001 From: Paulo Date: Fri, 6 Nov 2020 11:30:42 -0300 Subject: [PATCH 036/212] fix: limit request members batch size Discord is actually enforcing v8 limits on v6 according to https://github.com/discord/discord-api-docs/issues/2184 --- src/Discord.Net.WebSocket/DiscordSocketClient.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 0263f96d1..24ed8d5ff 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -370,7 +370,7 @@ namespace Discord.WebSocket { var cachedGuilds = guilds.ToImmutableArray(); - int batchSize = _gatewayIntents.HasValue ? 1 : 100; + const short batchSize = 1; ulong[] batchIds = new ulong[Math.Min(batchSize, cachedGuilds.Length)]; Task[] batchTasks = new Task[batchIds.Length]; int batchCount = (cachedGuilds.Length + (batchSize - 1)) / batchSize; From e40ca4a422a55f96235c4f567daebbdb6ac483bc Mon Sep 17 00:00:00 2001 From: Samuel <33796679+orchidalloy@users.noreply.github.com> Date: Sat, 7 Nov 2020 15:26:33 -0300 Subject: [PATCH 037/212] fix: Missing AddReactions permission for DM channels. (#1244) Co-authored-by: Samuel <33796679+Samrux@users.noreply.github.com> --- src/Discord.Net.Core/Entities/Permissions/ChannelPermissions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Discord.Net.Core/Entities/Permissions/ChannelPermissions.cs b/src/Discord.Net.Core/Entities/Permissions/ChannelPermissions.cs index 99885b070..ed675b5f3 100644 --- a/src/Discord.Net.Core/Entities/Permissions/ChannelPermissions.cs +++ b/src/Discord.Net.Core/Entities/Permissions/ChannelPermissions.cs @@ -17,7 +17,7 @@ namespace Discord /// Gets a that grants all permissions for category channels. public static readonly ChannelPermissions Category = new ChannelPermissions(0b01100_1111110_1111111110001_010001); /// Gets a that grants all permissions for direct message channels. - public static readonly ChannelPermissions DM = new ChannelPermissions(0b00000_1000110_1011100110000_000000); + public static readonly ChannelPermissions DM = new ChannelPermissions(0b00000_1000110_1011100110001_000000); /// Gets a that grants all permissions for group channels. public static readonly ChannelPermissions Group = new ChannelPermissions(0b00000_1000110_0001101100000_000000); /// Gets a that grants all permissions for a given channel type. From 971d519e35a1d635d1d0634b3bfdbc9b75ceec0b Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Sat, 7 Nov 2020 12:44:33 -0600 Subject: [PATCH 038/212] fix: GuildEmbed.ChannelId as nullable per API documentation (#1532) --- src/Discord.Net.Rest/API/Common/GuildEmbed.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Discord.Net.Rest/API/Common/GuildEmbed.cs b/src/Discord.Net.Rest/API/Common/GuildEmbed.cs index ff8b8e180..d81632181 100644 --- a/src/Discord.Net.Rest/API/Common/GuildEmbed.cs +++ b/src/Discord.Net.Rest/API/Common/GuildEmbed.cs @@ -1,4 +1,4 @@ -#pragma warning disable CS1591 +#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API @@ -8,6 +8,6 @@ namespace Discord.API [JsonProperty("enabled")] public bool Enabled { get; set; } [JsonProperty("channel_id")] - public ulong ChannelId { get; set; } + public ulong? ChannelId { get; set; } } } From a80e5ff940111f2094dd997b92d134b1584a8fd8 Mon Sep 17 00:00:00 2001 From: Radka Gustavsson Date: Sat, 7 Nov 2020 19:55:14 +0100 Subject: [PATCH 039/212] (ifcbrk) feature: Add includeRoleIds to PruneUsersAsync (#1581) * Implemented include_roles for guilds/id/prune get&post * Unnecessary using Co-authored-by: Paulo --- src/Discord.Net.Core/Entities/Guilds/IGuild.cs | 3 ++- src/Discord.Net.Rest/API/Rest/GuildPruneParams.cs | 6 +++++- src/Discord.Net.Rest/DiscordRestApiClient.cs | 3 ++- src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs | 10 +++++----- src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs | 6 +++--- .../Entities/Guilds/SocketGuild.cs | 4 ++-- 6 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/Discord.Net.Core/Entities/Guilds/IGuild.cs b/src/Discord.Net.Core/Entities/Guilds/IGuild.cs index 81b5e8dd9..8392bcd58 100644 --- a/src/Discord.Net.Core/Entities/Guilds/IGuild.cs +++ b/src/Discord.Net.Core/Entities/Guilds/IGuild.cs @@ -705,11 +705,12 @@ namespace Discord /// The number of days required for the users to be kicked. /// Whether this prune action is a simulation. /// The options to be used when sending the request. + /// An array of role IDs to be included in the prune of users who do not have any additional roles. /// /// A task that represents the asynchronous prune operation. The task result contains the number of users to /// be or has been removed from this guild. /// - Task PruneUsersAsync(int days = 30, bool simulate = false, RequestOptions options = null); + Task PruneUsersAsync(int days = 30, bool simulate = false, RequestOptions options = null, IEnumerable includeRoleIds = null); /// /// Gets a collection of users in this guild that the name or nickname starts with the /// provided at . diff --git a/src/Discord.Net.Rest/API/Rest/GuildPruneParams.cs b/src/Discord.Net.Rest/API/Rest/GuildPruneParams.cs index 6a98d3758..e4c9192ad 100644 --- a/src/Discord.Net.Rest/API/Rest/GuildPruneParams.cs +++ b/src/Discord.Net.Rest/API/Rest/GuildPruneParams.cs @@ -9,9 +9,13 @@ namespace Discord.API.Rest [JsonProperty("days")] public int Days { get; } - public GuildPruneParams(int days) + [JsonProperty("include_roles")] + public ulong[] IncludeRoleIds { get; } + + public GuildPruneParams(int days, ulong[] includeRoleIds) { Days = days; + IncludeRoleIds = includeRoleIds; } } } diff --git a/src/Discord.Net.Rest/DiscordRestApiClient.cs b/src/Discord.Net.Rest/DiscordRestApiClient.cs index 83aa6c751..27658e7ac 100644 --- a/src/Discord.Net.Rest/DiscordRestApiClient.cs +++ b/src/Discord.Net.Rest/DiscordRestApiClient.cs @@ -853,10 +853,11 @@ namespace Discord.API Preconditions.NotEqual(guildId, 0, nameof(guildId)); Preconditions.NotNull(args, nameof(args)); Preconditions.AtLeast(args.Days, 1, nameof(args.Days)); + string endpointRoleIds = args.IncludeRoleIds?.Length > 0 ? $"&include_roles={string.Join(",", args.IncludeRoleIds)}" : ""; options = RequestOptions.CreateOrClone(options); var ids = new BucketIds(guildId: guildId); - return await SendAsync("GET", () => $"guilds/{guildId}/prune?days={args.Days}", ids, options: options).ConfigureAwait(false); + return await SendAsync("GET", () => $"guilds/{guildId}/prune?days={args.Days}{endpointRoleIds}", ids, options: options).ConfigureAwait(false); } //Guild Bans diff --git a/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs b/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs index ecb45fd07..225c53edf 100644 --- a/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs +++ b/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs @@ -404,9 +404,9 @@ namespace Discord.Rest ); } public static async Task PruneUsersAsync(IGuild guild, BaseDiscordClient client, - int days, bool simulate, RequestOptions options) + int days, bool simulate, RequestOptions options, IEnumerable includeRoleIds) { - var args = new GuildPruneParams(days); + var args = new GuildPruneParams(days, includeRoleIds?.ToArray()); GetGuildPruneCountResponse model; if (simulate) model = await client.ApiClient.GetGuildPruneCountAsync(guild.Id, args, options).ConfigureAwait(false); @@ -479,7 +479,7 @@ namespace Discord.Rest var emote = await client.ApiClient.GetGuildEmoteAsync(guild.Id, id, options).ConfigureAwait(false); return emote.ToEntity(); } - public static async Task CreateEmoteAsync(IGuild guild, BaseDiscordClient client, string name, Image image, Optional> roles, + public static async Task CreateEmoteAsync(IGuild guild, BaseDiscordClient client, string name, Image image, Optional> roles, RequestOptions options) { var apiargs = new CreateGuildEmoteParams @@ -494,7 +494,7 @@ namespace Discord.Rest return emote.ToEntity(); } /// is null. - public static async Task ModifyEmoteAsync(IGuild guild, BaseDiscordClient client, ulong id, Action func, + public static async Task ModifyEmoteAsync(IGuild guild, BaseDiscordClient client, ulong id, Action func, RequestOptions options) { if (func == null) throw new ArgumentNullException(paramName: nameof(func)); @@ -512,7 +512,7 @@ namespace Discord.Rest var emote = await client.ApiClient.ModifyGuildEmoteAsync(guild.Id, id, apiargs, options).ConfigureAwait(false); return emote.ToEntity(); } - public static Task DeleteEmoteAsync(IGuild guild, BaseDiscordClient client, ulong id, RequestOptions options) + public static Task DeleteEmoteAsync(IGuild guild, BaseDiscordClient client, ulong id, RequestOptions options) => client.ApiClient.DeleteGuildEmoteAsync(guild.Id, id, options); } } diff --git a/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs b/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs index f0b5be0f7..482eaf556 100644 --- a/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs +++ b/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs @@ -205,7 +205,7 @@ namespace Discord.Rest role?.Update(model); } } - + /// public Task LeaveAsync(RequestOptions options = null) => GuildHelper.LeaveAsync(this, Discord, options); @@ -631,8 +631,8 @@ namespace Discord.Rest /// A task that represents the asynchronous prune operation. The task result contains the number of users to /// be or has been removed from this guild. /// - public Task PruneUsersAsync(int days = 30, bool simulate = false, RequestOptions options = null) - => GuildHelper.PruneUsersAsync(this, Discord, days, simulate, options); + public Task PruneUsersAsync(int days = 30, bool simulate = false, RequestOptions options = null, IEnumerable includeRoleIds = null) + => GuildHelper.PruneUsersAsync(this, Discord, days, simulate, options, includeRoleIds); /// /// Gets a collection of users in this guild that the name or nickname starts with the diff --git a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs index 160b91526..a08ba06ef 100644 --- a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs +++ b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs @@ -746,8 +746,8 @@ namespace Discord.WebSocket return null; } /// - public Task PruneUsersAsync(int days = 30, bool simulate = false, RequestOptions options = null) - => GuildHelper.PruneUsersAsync(this, Discord, days, simulate, options); + public Task PruneUsersAsync(int days = 30, bool simulate = false, RequestOptions options = null, IEnumerable includeRoleIds = null) + => GuildHelper.PruneUsersAsync(this, Discord, days, simulate, options, includeRoleIds); internal SocketGuildUser AddOrUpdateUser(UserModel model) { From 2592264acbbd49f7f1e481a82277d10a5bdea414 Mon Sep 17 00:00:00 2001 From: "bakabaka.bunbun" <54648150+bakabun@users.noreply.github.com> Date: Sun, 8 Nov 2020 02:10:13 +0700 Subject: [PATCH 040/212] feature: Add "View Guild Insights" to GuildPermission (#1619) * feature: Add "View Guild Insights" permission * Add missing summary Co-authored-by: Paulo --- .../Entities/Permissions/GuildPermission.cs | 4 ++++ .../Entities/Permissions/GuildPermissions.cs | 11 +++++++++-- test/Discord.Net.Tests.Unit/GuildPermissionsTests.cs | 2 ++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/Discord.Net.Core/Entities/Permissions/GuildPermission.cs b/src/Discord.Net.Core/Entities/Permissions/GuildPermission.cs index 3c8a5e810..645b67489 100644 --- a/src/Discord.Net.Core/Entities/Permissions/GuildPermission.cs +++ b/src/Discord.Net.Core/Entities/Permissions/GuildPermission.cs @@ -51,6 +51,10 @@ namespace Discord /// authentication when used on a guild that has server-wide 2FA enabled. /// ManageGuild = 0x00_00_00_20, + /// + /// Allows for viewing of guild insights + /// + ViewGuildInsights = 0x00_08_00_00, // Text /// diff --git a/src/Discord.Net.Core/Entities/Permissions/GuildPermissions.cs b/src/Discord.Net.Core/Entities/Permissions/GuildPermissions.cs index a5adad47c..ba6757fc6 100644 --- a/src/Discord.Net.Core/Entities/Permissions/GuildPermissions.cs +++ b/src/Discord.Net.Core/Entities/Permissions/GuildPermissions.cs @@ -12,7 +12,7 @@ namespace Discord /// Gets a that grants all guild permissions for webhook users. public static readonly GuildPermissions Webhook = new GuildPermissions(0b00000_0000000_0001101100000_000000); /// Gets a that grants all guild permissions. - public static readonly GuildPermissions All = new GuildPermissions(0b11111_1111110_1111111111111_111111); + public static readonly GuildPermissions All = new GuildPermissions(0b11111_1111111_1111111111111_111111); /// Gets a packed value representing all the permissions in this . public ulong RawValue { get; } @@ -34,6 +34,8 @@ namespace Discord public bool AddReactions => Permissions.GetValue(RawValue, GuildPermission.AddReactions); /// If true, a user may view the audit log. public bool ViewAuditLog => Permissions.GetValue(RawValue, GuildPermission.ViewAuditLog); + /// If true, a user may view the guild insights. + public bool ViewGuildInsights => Permissions.GetValue(RawValue, GuildPermission.ViewGuildInsights); /// If True, a user may join channels. [Obsolete("Use ViewChannel instead.")] @@ -97,6 +99,7 @@ namespace Discord bool? manageGuild = null, bool? addReactions = null, bool? viewAuditLog = null, + bool? viewGuildInsights = null, bool? viewChannel = null, bool? sendMessages = null, bool? sendTTSMessages = null, @@ -130,6 +133,7 @@ namespace Discord Permissions.SetValue(ref value, manageGuild, GuildPermission.ManageGuild); Permissions.SetValue(ref value, addReactions, GuildPermission.AddReactions); Permissions.SetValue(ref value, viewAuditLog, GuildPermission.ViewAuditLog); + Permissions.SetValue(ref value, viewGuildInsights, GuildPermission.ViewGuildInsights); Permissions.SetValue(ref value, viewChannel, GuildPermission.ViewChannel); Permissions.SetValue(ref value, sendMessages, GuildPermission.SendMessages); Permissions.SetValue(ref value, sendTTSMessages, GuildPermission.SendTTSMessages); @@ -166,6 +170,7 @@ namespace Discord bool manageGuild = false, bool addReactions = false, bool viewAuditLog = false, + bool viewGuildInsights = false, bool viewChannel = false, bool sendMessages = false, bool sendTTSMessages = false, @@ -198,6 +203,7 @@ namespace Discord manageGuild: manageGuild, addReactions: addReactions, viewAuditLog: viewAuditLog, + viewGuildInsights: viewGuildInsights, viewChannel: viewChannel, sendMessages: sendMessages, sendTTSMessages: sendTTSMessages, @@ -231,6 +237,7 @@ namespace Discord bool? manageGuild = null, bool? addReactions = null, bool? viewAuditLog = null, + bool? viewGuildInsights = null, bool? viewChannel = null, bool? sendMessages = null, bool? sendTTSMessages = null, @@ -254,7 +261,7 @@ namespace Discord bool? manageWebhooks = null, bool? manageEmojis = null) => new GuildPermissions(RawValue, createInstantInvite, kickMembers, banMembers, administrator, manageChannels, manageGuild, addReactions, - viewAuditLog, viewChannel, sendMessages, sendTTSMessages, manageMessages, embedLinks, attachFiles, + viewAuditLog, viewGuildInsights, viewChannel, sendMessages, sendTTSMessages, manageMessages, embedLinks, attachFiles, readMessageHistory, mentionEveryone, useExternalEmojis, connect, speak, muteMembers, deafenMembers, moveMembers, useVoiceActivation, prioritySpeaker, stream, changeNickname, manageNicknames, manageRoles, manageWebhooks, manageEmojis); diff --git a/test/Discord.Net.Tests.Unit/GuildPermissionsTests.cs b/test/Discord.Net.Tests.Unit/GuildPermissionsTests.cs index f0611fa24..cd29b2606 100644 --- a/test/Discord.Net.Tests.Unit/GuildPermissionsTests.cs +++ b/test/Discord.Net.Tests.Unit/GuildPermissionsTests.cs @@ -69,6 +69,7 @@ namespace Discord AssertFlag(() => new GuildPermissions(manageGuild: true), GuildPermission.ManageGuild); AssertFlag(() => new GuildPermissions(addReactions: true), GuildPermission.AddReactions); AssertFlag(() => new GuildPermissions(viewAuditLog: true), GuildPermission.ViewAuditLog); + AssertFlag(() => new GuildPermissions(viewGuildInsights: true), GuildPermission.ViewGuildInsights); AssertFlag(() => new GuildPermissions(viewChannel: true), GuildPermission.ViewChannel); AssertFlag(() => new GuildPermissions(sendMessages: true), GuildPermission.SendMessages); AssertFlag(() => new GuildPermissions(sendTTSMessages: true), GuildPermission.SendTTSMessages); @@ -141,6 +142,7 @@ namespace Discord AssertUtil(GuildPermission.ManageGuild, x => x.ManageGuild, (p, enable) => p.Modify(manageGuild: enable)); AssertUtil(GuildPermission.AddReactions, x => x.AddReactions, (p, enable) => p.Modify(addReactions: enable)); AssertUtil(GuildPermission.ViewAuditLog, x => x.ViewAuditLog, (p, enable) => p.Modify(viewAuditLog: enable)); + AssertUtil(GuildPermission.ViewGuildInsights, x => x.ViewGuildInsights, (p, enable) => p.Modify(viewGuildInsights: enable)); AssertUtil(GuildPermission.ViewChannel, x => x.ViewChannel, (p, enable) => p.Modify(viewChannel: enable)); AssertUtil(GuildPermission.SendMessages, x => x.SendMessages, (p, enable) => p.Modify(sendMessages: enable)); AssertUtil(GuildPermission.SendTTSMessages, x => x.SendTTSMessages, (p, enable) => p.Modify(sendTTSMessages: enable)); From a2af9857ca2fc042c33b6243e9e1b71a1960a656 Mon Sep 17 00:00:00 2001 From: Paulo Date: Sat, 7 Nov 2020 16:15:46 -0300 Subject: [PATCH 041/212] fix: Audio stream dispose (#1667) * Fix audio dispose * Missed a few --- .../Audio/Streams/BufferedWriteStream.cs | 3 +++ .../Audio/Streams/OpusDecodeStream.cs | 6 ++++-- .../Audio/Streams/OpusEncodeStream.cs | 8 +++++--- src/Discord.Net.WebSocket/Audio/Streams/RTPReadStream.cs | 7 +++++++ .../Audio/Streams/RTPWriteStream.cs | 9 ++++++++- .../Audio/Streams/SodiumDecryptStream.cs | 7 +++++++ .../Audio/Streams/SodiumEncryptStream.cs | 7 +++++++ 7 files changed, 41 insertions(+), 6 deletions(-) diff --git a/src/Discord.Net.WebSocket/Audio/Streams/BufferedWriteStream.cs b/src/Discord.Net.WebSocket/Audio/Streams/BufferedWriteStream.cs index 16ad0ae89..a2de252a2 100644 --- a/src/Discord.Net.WebSocket/Audio/Streams/BufferedWriteStream.cs +++ b/src/Discord.Net.WebSocket/Audio/Streams/BufferedWriteStream.cs @@ -61,14 +61,17 @@ namespace Discord.Audio.Streams _task = Run(); } + protected override void Dispose(bool disposing) { if (disposing) { _disposeTokenSource?.Cancel(); _disposeTokenSource?.Dispose(); + _cancelTokenSource?.Cancel(); _cancelTokenSource?.Dispose(); _queueLock?.Dispose(); + _next.Dispose(); } base.Dispose(disposing); } diff --git a/src/Discord.Net.WebSocket/Audio/Streams/OpusDecodeStream.cs b/src/Discord.Net.WebSocket/Audio/Streams/OpusDecodeStream.cs index 1861e3554..ad1c285e8 100644 --- a/src/Discord.Net.WebSocket/Audio/Streams/OpusDecodeStream.cs +++ b/src/Discord.Net.WebSocket/Audio/Streams/OpusDecodeStream.cs @@ -68,10 +68,12 @@ namespace Discord.Audio.Streams protected override void Dispose(bool disposing) { - base.Dispose(disposing); - if (disposing) + { _decoder.Dispose(); + _next.Dispose(); + } + base.Dispose(disposing); } } } diff --git a/src/Discord.Net.WebSocket/Audio/Streams/OpusEncodeStream.cs b/src/Discord.Net.WebSocket/Audio/Streams/OpusEncodeStream.cs index 035b92b30..05d12b490 100644 --- a/src/Discord.Net.WebSocket/Audio/Streams/OpusEncodeStream.cs +++ b/src/Discord.Net.WebSocket/Audio/Streams/OpusEncodeStream.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Threading; using System.Threading.Tasks; @@ -89,10 +89,12 @@ namespace Discord.Audio.Streams protected override void Dispose(bool disposing) { - base.Dispose(disposing); - if (disposing) + { _encoder.Dispose(); + _next.Dispose(); + } + base.Dispose(disposing); } } } diff --git a/src/Discord.Net.WebSocket/Audio/Streams/RTPReadStream.cs b/src/Discord.Net.WebSocket/Audio/Streams/RTPReadStream.cs index 120f67e0d..1002502b6 100644 --- a/src/Discord.Net.WebSocket/Audio/Streams/RTPReadStream.cs +++ b/src/Discord.Net.WebSocket/Audio/Streams/RTPReadStream.cs @@ -76,5 +76,12 @@ namespace Discord.Audio.Streams (buffer[extensionOffset + 3]); return extensionOffset + 4 + (extensionLength * 4); } + + protected override void Dispose(bool disposing) + { + if (disposing) + _next.Dispose(); + base.Dispose(disposing); + } } } diff --git a/src/Discord.Net.WebSocket/Audio/Streams/RTPWriteStream.cs b/src/Discord.Net.WebSocket/Audio/Streams/RTPWriteStream.cs index ce407eada..7ecb56bee 100644 --- a/src/Discord.Net.WebSocket/Audio/Streams/RTPWriteStream.cs +++ b/src/Discord.Net.WebSocket/Audio/Streams/RTPWriteStream.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Threading; using System.Threading.Tasks; @@ -69,5 +69,12 @@ namespace Discord.Audio.Streams { await _next.ClearAsync(cancelToken).ConfigureAwait(false); } + + protected override void Dispose(bool disposing) + { + if (disposing) + _next.Dispose(); + base.Dispose(disposing); + } } } diff --git a/src/Discord.Net.WebSocket/Audio/Streams/SodiumDecryptStream.cs b/src/Discord.Net.WebSocket/Audio/Streams/SodiumDecryptStream.cs index 2b1a97f04..40cd6864e 100644 --- a/src/Discord.Net.WebSocket/Audio/Streams/SodiumDecryptStream.cs +++ b/src/Discord.Net.WebSocket/Audio/Streams/SodiumDecryptStream.cs @@ -44,5 +44,12 @@ namespace Discord.Audio.Streams { await _next.ClearAsync(cancelToken).ConfigureAwait(false); } + + protected override void Dispose(bool disposing) + { + if (disposing) + _next.Dispose(); + base.Dispose(disposing); + } } } diff --git a/src/Discord.Net.WebSocket/Audio/Streams/SodiumEncryptStream.cs b/src/Discord.Net.WebSocket/Audio/Streams/SodiumEncryptStream.cs index 8b3f0e302..fa1d34de5 100644 --- a/src/Discord.Net.WebSocket/Audio/Streams/SodiumEncryptStream.cs +++ b/src/Discord.Net.WebSocket/Audio/Streams/SodiumEncryptStream.cs @@ -60,5 +60,12 @@ namespace Discord.Audio.Streams { await _next.ClearAsync(cancelToken).ConfigureAwait(false); } + + protected override void Dispose(bool disposing) + { + if (disposing) + _next.Dispose(); + base.Dispose(disposing); + } } } From 1ab670b3fcab9ddb641a36359149e26ecddaa1ea Mon Sep 17 00:00:00 2001 From: Paulo Date: Sun, 8 Nov 2020 17:33:37 -0300 Subject: [PATCH 042/212] feature: Add INVITE_CREATE and INVITE_DELETE events (#1491) * Add invite events (create and delete) * Removed unused using * Fixing IInviteMetadata properties * Add two new fields to the gateway event * Better event summary and remarks * Change how to assign to target variable Co-Authored-By: Joe4evr * Applying suggested changes to TargetUserType * Renaming NotDefined to Undefined * Fixing xml docs * Changed the summary style format Co-authored-by: Joe4evr --- .../Entities/Invites/TargetUserType.cs | 14 ++ .../API/Gateway/InviteCreateEvent.cs | 31 ++++ .../API/Gateway/InviteDeleteEvent.cs | 14 ++ .../BaseSocketClient.Events.cs | 42 +++++ .../DiscordShardedClient.cs | 3 + .../DiscordSocketClient.cs | 58 +++++++ .../Entities/Invites/SocketInvite.cs | 143 ++++++++++++++++++ 7 files changed, 305 insertions(+) create mode 100644 src/Discord.Net.Core/Entities/Invites/TargetUserType.cs create mode 100644 src/Discord.Net.WebSocket/API/Gateway/InviteCreateEvent.cs create mode 100644 src/Discord.Net.WebSocket/API/Gateway/InviteDeleteEvent.cs create mode 100644 src/Discord.Net.WebSocket/Entities/Invites/SocketInvite.cs diff --git a/src/Discord.Net.Core/Entities/Invites/TargetUserType.cs b/src/Discord.Net.Core/Entities/Invites/TargetUserType.cs new file mode 100644 index 000000000..74263b888 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Invites/TargetUserType.cs @@ -0,0 +1,14 @@ +namespace Discord +{ + public enum TargetUserType + { + /// + /// The invite whose target user type is not defined. + /// + Undefined = 0, + /// + /// The invite is for a Go Live stream. + /// + Stream = 1 + } +} diff --git a/src/Discord.Net.WebSocket/API/Gateway/InviteCreateEvent.cs b/src/Discord.Net.WebSocket/API/Gateway/InviteCreateEvent.cs new file mode 100644 index 000000000..e2ddd8816 --- /dev/null +++ b/src/Discord.Net.WebSocket/API/Gateway/InviteCreateEvent.cs @@ -0,0 +1,31 @@ +using Newtonsoft.Json; +using System; + +namespace Discord.API.Gateway +{ + internal class InviteCreateEvent + { + [JsonProperty("channel_id")] + public ulong ChannelId { get; set; } + [JsonProperty("code")] + public string Code { get; set; } + [JsonProperty("created_at")] + public DateTimeOffset CreatedAt { get; set; } + [JsonProperty("guild_id")] + public Optional GuildId { get; set; } + [JsonProperty("inviter")] + public Optional Inviter { get; set; } + [JsonProperty("max_age")] + public int MaxAge { get; set; } + [JsonProperty("max_uses")] + public int MaxUses { get; set; } + [JsonProperty("target_user")] + public Optional TargetUser { get; set; } + [JsonProperty("target_user_type")] + public Optional TargetUserType { get; set; } + [JsonProperty("temporary")] + public bool Temporary { get; set; } + [JsonProperty("uses")] + public int Uses { get; set; } + } +} diff --git a/src/Discord.Net.WebSocket/API/Gateway/InviteDeleteEvent.cs b/src/Discord.Net.WebSocket/API/Gateway/InviteDeleteEvent.cs new file mode 100644 index 000000000..54bc75595 --- /dev/null +++ b/src/Discord.Net.WebSocket/API/Gateway/InviteDeleteEvent.cs @@ -0,0 +1,14 @@ +using Newtonsoft.Json; + +namespace Discord.API.Gateway +{ + internal class InviteDeleteEvent + { + [JsonProperty("channel_id")] + public ulong ChannelId { get; set; } + [JsonProperty("code")] + public string Code { get; set; } + [JsonProperty("guild_id")] + public Optional GuildId { get; set; } + } +} diff --git a/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs b/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs index 2cd62b3e8..966aec7fa 100644 --- a/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs +++ b/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs @@ -389,5 +389,47 @@ namespace Discord.WebSocket remove { _recipientRemovedEvent.Remove(value); } } internal readonly AsyncEvent> _recipientRemovedEvent = new AsyncEvent>(); + + //Invites + /// + /// Fired when an invite is created. + /// + /// + /// + /// This event is fired when an invite is created. The event handler must return a + /// and accept a as its parameter. + /// + /// + /// The invite created will be passed into the parameter. + /// + /// + public event Func InviteCreated + { + add { _inviteCreatedEvent.Add(value); } + remove { _inviteCreatedEvent.Remove(value); } + } + internal readonly AsyncEvent> _inviteCreatedEvent = new AsyncEvent>(); + /// + /// Fired when an invite is deleted. + /// + /// + /// + /// This event is fired when an invite is deleted. The event handler must return + /// a and accept a and + /// as its parameter. + /// + /// + /// The channel where this invite was created will be passed into the parameter. + /// + /// + /// The code of the deleted invite will be passed into the parameter. + /// + /// + public event Func InviteDeleted + { + add { _inviteDeletedEvent.Add(value); } + remove { _inviteDeletedEvent.Remove(value); } + } + internal readonly AsyncEvent> _inviteDeletedEvent = new AsyncEvent>(); } } diff --git a/src/Discord.Net.WebSocket/DiscordShardedClient.cs b/src/Discord.Net.WebSocket/DiscordShardedClient.cs index 930ea1585..a8780a7b0 100644 --- a/src/Discord.Net.WebSocket/DiscordShardedClient.cs +++ b/src/Discord.Net.WebSocket/DiscordShardedClient.cs @@ -338,6 +338,9 @@ namespace Discord.WebSocket client.UserIsTyping += (oldUser, newUser) => _userIsTypingEvent.InvokeAsync(oldUser, newUser); client.RecipientAdded += (user) => _recipientAddedEvent.InvokeAsync(user); client.RecipientRemoved += (user) => _recipientRemovedEvent.InvokeAsync(user); + + client.InviteCreated += (invite) => _inviteCreatedEvent.InvokeAsync(invite); + client.InviteDeleted += (channel, invite) => _inviteDeletedEvent.InvokeAsync(channel, invite); } //IDiscordClient diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 24ed8d5ff..dfdad99fc 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -1688,6 +1688,64 @@ namespace Discord.WebSocket } break; + //Invites + case "INVITE_CREATE": + { + await _gatewayLogger.DebugAsync("Received Dispatch (INVITE_CREATE)").ConfigureAwait(false); + + var data = (payload as JToken).ToObject(_serializer); + if (State.GetChannel(data.ChannelId) is SocketGuildChannel channel) + { + var guild = channel.Guild; + if (!guild.IsSynced) + { + await UnsyncedGuildAsync(type, guild.Id).ConfigureAwait(false); + return; + } + + SocketGuildUser inviter = data.Inviter.IsSpecified + ? (guild.GetUser(data.Inviter.Value.Id) ?? guild.AddOrUpdateUser(data.Inviter.Value)) + : null; + + SocketUser target = data.TargetUser.IsSpecified + ? (guild.GetUser(data.TargetUser.Value.Id) ?? (SocketUser)SocketUnknownUser.Create(this, State, data.TargetUser.Value)) + : null; + + var invite = SocketInvite.Create(this, guild, channel, inviter, target, data); + + await TimedInvokeAsync(_inviteCreatedEvent, nameof(InviteCreated), invite).ConfigureAwait(false); + } + else + { + await UnknownChannelAsync(type, data.ChannelId).ConfigureAwait(false); + return; + } + } + break; + case "INVITE_DELETE": + { + await _gatewayLogger.DebugAsync("Received Dispatch (INVITE_DELETE)").ConfigureAwait(false); + + var data = (payload as JToken).ToObject(_serializer); + if (State.GetChannel(data.ChannelId) is SocketGuildChannel channel) + { + var guild = channel.Guild; + if (!guild.IsSynced) + { + await UnsyncedGuildAsync(type, guild.Id).ConfigureAwait(false); + return; + } + + await TimedInvokeAsync(_inviteDeletedEvent, nameof(InviteDeleted), channel, data.Code).ConfigureAwait(false); + } + else + { + await UnknownChannelAsync(type, data.ChannelId).ConfigureAwait(false); + return; + } + } + break; + //Ignored (User only) case "CHANNEL_PINS_ACK": await _gatewayLogger.DebugAsync("Ignored Dispatch (CHANNEL_PINS_ACK)").ConfigureAwait(false); diff --git a/src/Discord.Net.WebSocket/Entities/Invites/SocketInvite.cs b/src/Discord.Net.WebSocket/Entities/Invites/SocketInvite.cs new file mode 100644 index 000000000..fa8c56599 --- /dev/null +++ b/src/Discord.Net.WebSocket/Entities/Invites/SocketInvite.cs @@ -0,0 +1,143 @@ +using Discord.Rest; +using System; +using System.Diagnostics; +using System.Threading.Tasks; +using Model = Discord.API.Gateway.InviteCreateEvent; + +namespace Discord.WebSocket +{ + [DebuggerDisplay(@"{DebuggerDisplay,nq}")] + public class SocketInvite : SocketEntity, IInviteMetadata + { + private long _createdAtTicks; + + /// + public ulong ChannelId { get; private set; } + /// + /// Gets the channel where this invite was created. + /// + public SocketGuildChannel Channel { get; private set; } + /// + public ulong? GuildId { get; private set; } + /// + /// Gets the guild where this invite was created. + /// + public SocketGuild Guild { get; private set; } + /// + ChannelType IInvite.ChannelType + { + get + { + switch (Channel) + { + case IVoiceChannel voiceChannel: return ChannelType.Voice; + case ICategoryChannel categoryChannel: return ChannelType.Category; + case IDMChannel dmChannel: return ChannelType.DM; + case IGroupChannel groupChannel: return ChannelType.Group; + case SocketNewsChannel socketNewsChannel: return ChannelType.News; + case ITextChannel textChannel: return ChannelType.Text; + default: throw new InvalidOperationException("Invalid channel type."); + } + } + } + /// + string IInvite.ChannelName => Channel.Name; + /// + string IInvite.GuildName => Guild.Name; + /// + int? IInvite.PresenceCount => throw new NotImplementedException(); + /// + int? IInvite.MemberCount => throw new NotImplementedException(); + /// + bool IInviteMetadata.IsRevoked => throw new NotImplementedException(); + /// + public bool IsTemporary { get; private set; } + /// + int? IInviteMetadata.MaxAge { get => MaxAge; } + /// + int? IInviteMetadata.MaxUses { get => MaxUses; } + /// + int? IInviteMetadata.Uses { get => Uses; } + /// + /// Gets the time (in seconds) until the invite expires. + /// + public int MaxAge { get; private set; } + /// + /// Gets the max number of uses this invite may have. + /// + public int MaxUses { get; private set; } + /// + /// Gets the number of times this invite has been used. + /// + public int Uses { get; private set; } + /// + /// Gets the user that created this invite if available. + /// + public SocketGuildUser Inviter { get; private set; } + /// + DateTimeOffset? IInviteMetadata.CreatedAt => DateTimeUtils.FromTicks(_createdAtTicks); + /// + /// Gets when this invite was created. + /// + public DateTimeOffset CreatedAt => DateTimeUtils.FromTicks(_createdAtTicks); + /// + /// Gets the user targeted by this invite if available. + /// + public SocketUser TargetUser { get; private set; } + /// + /// Gets the type of the user targeted by this invite. + /// + public TargetUserType TargetUserType { get; private set; } + + /// + public string Code => Id; + /// + public string Url => $"{DiscordConfig.InviteUrl}{Code}"; + + internal SocketInvite(DiscordSocketClient discord, SocketGuild guild, SocketGuildChannel channel, SocketGuildUser inviter, SocketUser target, string id) + : base(discord, id) + { + Guild = guild; + Channel = channel; + Inviter = inviter; + TargetUser = target; + } + internal static SocketInvite Create(DiscordSocketClient discord, SocketGuild guild, SocketGuildChannel channel, SocketGuildUser inviter, SocketUser target, Model model) + { + var entity = new SocketInvite(discord, guild, channel, inviter, target, model.Code); + entity.Update(model); + return entity; + } + internal void Update(Model model) + { + ChannelId = model.ChannelId; + GuildId = model.GuildId.IsSpecified ? model.GuildId.Value : Guild.Id; + IsTemporary = model.Temporary; + MaxAge = model.MaxAge; + MaxUses = model.MaxUses; + Uses = model.Uses; + _createdAtTicks = model.CreatedAt.UtcTicks; + TargetUserType = model.TargetUserType.IsSpecified ? model.TargetUserType.Value : TargetUserType.Undefined; + } + + /// + public Task DeleteAsync(RequestOptions options = null) + => InviteHelper.DeleteAsync(this, Discord, options); + + /// + /// Gets the URL of the invite. + /// + /// + /// A string that resolves to the Url of the invite. + /// + public override string ToString() => Url; + private string DebuggerDisplay => $"{Url} ({Guild?.Name} / {Channel.Name})"; + + /// + IGuild IInvite.Guild => Guild; + /// + IChannel IInvite.Channel => Channel; + /// + IUser IInviteMetadata.Inviter => Inviter; + } +} From 10fcde0a32ee3a04b0a50a94d2fe4dcd876d181d Mon Sep 17 00:00:00 2001 From: Paulo Date: Sun, 8 Nov 2020 18:13:41 -0300 Subject: [PATCH 043/212] feature: Add missing application properties (including Teams) (#1604) * Add missing application properties Add IsBotPublic, BotRequiresCodeGrant, and Team properties to IApplication * To immutable list * Change list to array --- src/Discord.Net.Core/CDN.cs | 11 ++++++ src/Discord.Net.Core/Entities/IApplication.cs | 12 ++++++ src/Discord.Net.Core/Entities/Teams/ITeam.cs | 27 ++++++++++++++ .../Entities/Teams/ITeamMember.cs | 25 +++++++++++++ .../Entities/Teams/MembershipState.cs | 11 ++++++ .../API/Common/Application.cs | 8 +++- .../API/Common/MembershipState.cs | 9 +++++ src/Discord.Net.Rest/API/Common/Team.cs | 17 +++++++++ src/Discord.Net.Rest/API/Common/TeamMember.cs | 17 +++++++++ .../Entities/RestApplication.cs | 10 +++++ .../Entities/Teams/RestTeam.cs | 37 +++++++++++++++++++ .../Entities/Teams/RestTeamMember.cs | 30 +++++++++++++++ 12 files changed, 213 insertions(+), 1 deletion(-) create mode 100644 src/Discord.Net.Core/Entities/Teams/ITeam.cs create mode 100644 src/Discord.Net.Core/Entities/Teams/ITeamMember.cs create mode 100644 src/Discord.Net.Core/Entities/Teams/MembershipState.cs create mode 100644 src/Discord.Net.Rest/API/Common/MembershipState.cs create mode 100644 src/Discord.Net.Rest/API/Common/Team.cs create mode 100644 src/Discord.Net.Rest/API/Common/TeamMember.cs create mode 100644 src/Discord.Net.Rest/Entities/Teams/RestTeam.cs create mode 100644 src/Discord.Net.Rest/Entities/Teams/RestTeamMember.cs diff --git a/src/Discord.Net.Core/CDN.cs b/src/Discord.Net.Core/CDN.cs index 32ffbba90..799b037ed 100644 --- a/src/Discord.Net.Core/CDN.cs +++ b/src/Discord.Net.Core/CDN.cs @@ -7,6 +7,17 @@ namespace Discord /// public static class CDN { + /// + /// Returns a team icon URL. + /// + /// The team identifier. + /// The icon identifier. + /// + /// A URL pointing to the team's icon. + /// + public static string GetTeamIconUrl(ulong teamId, string iconId) + => iconId != null ? $"{DiscordConfig.CDNUrl}team-icons/{teamId}/{iconId}.jpg" : null; + /// /// Returns an application icon URL. /// diff --git a/src/Discord.Net.Core/Entities/IApplication.cs b/src/Discord.Net.Core/Entities/IApplication.cs index 78a87dc19..2174baff9 100644 --- a/src/Discord.Net.Core/Entities/IApplication.cs +++ b/src/Discord.Net.Core/Entities/IApplication.cs @@ -22,6 +22,18 @@ namespace Discord /// Gets the icon URL of the application. /// string IconUrl { get; } + /// + /// Gets if the bot is public. + /// + bool IsBotPublic { get; } + /// + /// Gets if the bot requires code grant. + /// + bool BotRequiresCodeGrant { get; } + /// + /// Gets the team associated with this application if there is one. + /// + ITeam Team { get; } /// /// Gets the partial user object containing info on the owner of the application. diff --git a/src/Discord.Net.Core/Entities/Teams/ITeam.cs b/src/Discord.Net.Core/Entities/Teams/ITeam.cs new file mode 100644 index 000000000..5ef3e4253 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Teams/ITeam.cs @@ -0,0 +1,27 @@ +using System.Collections.Generic; + +namespace Discord +{ + /// + /// Represents a Discord Team. + /// + public interface ITeam + { + /// + /// Gets the team icon url. + /// + string IconUrl { get; } + /// + /// Gets the team unique identifier. + /// + ulong Id { get; } + /// + /// Gets the members of this team. + /// + IReadOnlyList TeamMembers { get; } + /// + /// Gets the user identifier that owns this team. + /// + ulong OwnerUserId { get; } + } +} diff --git a/src/Discord.Net.Core/Entities/Teams/ITeamMember.cs b/src/Discord.Net.Core/Entities/Teams/ITeamMember.cs new file mode 100644 index 000000000..fe0e499e5 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Teams/ITeamMember.cs @@ -0,0 +1,25 @@ +namespace Discord +{ + /// + /// Represents a Discord Team member. + /// + public interface ITeamMember + { + /// + /// Gets the membership state of this team member. + /// + MembershipState MembershipState { get; } + /// + /// Gets the permissions of this team member. + /// + string[] Permissions { get; } + /// + /// Gets the team unique identifier for this team member. + /// + ulong TeamId { get; } + /// + /// Gets the Discord user of this team member. + /// + IUser User { get; } + } +} diff --git a/src/Discord.Net.Core/Entities/Teams/MembershipState.cs b/src/Discord.Net.Core/Entities/Teams/MembershipState.cs new file mode 100644 index 000000000..45b1693b0 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Teams/MembershipState.cs @@ -0,0 +1,11 @@ +namespace Discord +{ + /// + /// Represents the membership state of a team member. + /// + public enum MembershipState + { + Invited, + Accepted, + } +} diff --git a/src/Discord.Net.Rest/API/Common/Application.cs b/src/Discord.Net.Rest/API/Common/Application.cs index ca4c443f1..b80aecd27 100644 --- a/src/Discord.Net.Rest/API/Common/Application.cs +++ b/src/Discord.Net.Rest/API/Common/Application.cs @@ -1,4 +1,4 @@ -#pragma warning disable CS1591 +#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API @@ -15,6 +15,12 @@ namespace Discord.API public ulong Id { get; set; } [JsonProperty("icon")] public string Icon { get; set; } + [JsonProperty("bot_public")] + public bool IsBotPublic { get; set; } + [JsonProperty("bot_require_code_grant")] + public bool BotRequiresCodeGrant { get; set; } + [JsonProperty("team")] + public Optional Team { get; set; } [JsonProperty("flags"), Int53] public Optional Flags { get; set; } diff --git a/src/Discord.Net.Rest/API/Common/MembershipState.cs b/src/Discord.Net.Rest/API/Common/MembershipState.cs new file mode 100644 index 000000000..67fcc8908 --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/MembershipState.cs @@ -0,0 +1,9 @@ +namespace Discord.API +{ + internal enum MembershipState + { + None = 0, + Invited = 1, + Accepted = 2, + } +} diff --git a/src/Discord.Net.Rest/API/Common/Team.cs b/src/Discord.Net.Rest/API/Common/Team.cs new file mode 100644 index 000000000..4910f43f7 --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/Team.cs @@ -0,0 +1,17 @@ +#pragma warning disable CS1591 +using Newtonsoft.Json; + +namespace Discord.API +{ + internal class Team + { + [JsonProperty("icon")] + public Optional Icon { get; set; } + [JsonProperty("id")] + public ulong Id { get; set; } + [JsonProperty("members")] + public TeamMember[] TeamMembers { get; set; } + [JsonProperty("owner_user_id")] + public ulong OwnerUserId { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Common/TeamMember.cs b/src/Discord.Net.Rest/API/Common/TeamMember.cs new file mode 100644 index 000000000..788f73b61 --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/TeamMember.cs @@ -0,0 +1,17 @@ +#pragma warning disable CS1591 +using Newtonsoft.Json; + +namespace Discord.API +{ + internal class TeamMember + { + [JsonProperty("membership_state")] + public MembershipState MembershipState { get; set; } + [JsonProperty("permissions")] + public string[] Permissions { get; set; } + [JsonProperty("team_id")] + public ulong TeamId { get; set; } + [JsonProperty("user")] + public User User { get; set; } + } +} diff --git a/src/Discord.Net.Rest/Entities/RestApplication.cs b/src/Discord.Net.Rest/Entities/RestApplication.cs index d033978d0..6c22c0836 100644 --- a/src/Discord.Net.Rest/Entities/RestApplication.cs +++ b/src/Discord.Net.Rest/Entities/RestApplication.cs @@ -21,6 +21,12 @@ namespace Discord.Rest public string[] RPCOrigins { get; private set; } /// public ulong Flags { get; private set; } + /// + public bool IsBotPublic { get; private set; } + /// + public bool BotRequiresCodeGrant { get; private set; } + /// + public ITeam Team { get; private set; } /// public IUser Owner { get; private set; } @@ -46,11 +52,15 @@ namespace Discord.Rest RPCOrigins = model.RPCOrigins; Name = model.Name; _iconId = model.Icon; + IsBotPublic = model.IsBotPublic; + BotRequiresCodeGrant = model.BotRequiresCodeGrant; if (model.Flags.IsSpecified) Flags = model.Flags.Value; //TODO: Do we still need this? if (model.Owner.IsSpecified) Owner = RestUser.Create(Discord, model.Owner.Value); + if (model.Team.IsSpecified) + Team = RestTeam.Create(Discord, model.Team.Value); } /// Unable to update this object from a different application token. diff --git a/src/Discord.Net.Rest/Entities/Teams/RestTeam.cs b/src/Discord.Net.Rest/Entities/Teams/RestTeam.cs new file mode 100644 index 000000000..2343f8b5d --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Teams/RestTeam.cs @@ -0,0 +1,37 @@ +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using Model = Discord.API.Team; + +namespace Discord.Rest +{ + public class RestTeam : RestEntity, ITeam + { + /// + public string IconUrl => _iconId != null ? CDN.GetTeamIconUrl(Id, _iconId) : null; + /// + public IReadOnlyList TeamMembers { get; private set; } + /// + public ulong OwnerUserId { get; private set; } + + private string _iconId; + + internal RestTeam(BaseDiscordClient discord, ulong id) + : base(discord, id) + { + } + internal static RestTeam Create(BaseDiscordClient discord, Model model) + { + var entity = new RestTeam(discord, model.Id); + entity.Update(model); + return entity; + } + internal virtual void Update(Model model) + { + if (model.Icon.IsSpecified) + _iconId = model.Icon.Value; + OwnerUserId = model.OwnerUserId; + TeamMembers = model.TeamMembers.Select(x => new RestTeamMember(Discord, x)).ToImmutableArray(); + } + } +} diff --git a/src/Discord.Net.Rest/Entities/Teams/RestTeamMember.cs b/src/Discord.Net.Rest/Entities/Teams/RestTeamMember.cs new file mode 100644 index 000000000..322bb6a3f --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Teams/RestTeamMember.cs @@ -0,0 +1,30 @@ +using System; +using Model = Discord.API.TeamMember; + +namespace Discord.Rest +{ + public class RestTeamMember : ITeamMember + { + /// + public MembershipState MembershipState { get; } + /// + public string[] Permissions { get; } + /// + public ulong TeamId { get; } + /// + public IUser User { get; } + + internal RestTeamMember(BaseDiscordClient discord, Model model) + { + MembershipState = model.MembershipState switch + { + API.MembershipState.Invited => MembershipState.Invited, + API.MembershipState.Accepted => MembershipState.Accepted, + _ => throw new InvalidOperationException("Invalid membership state"), + }; + Permissions = model.Permissions; + TeamId = model.TeamId; + User = RestUser.Create(discord, model.User); + } + } +} From 1e012ac0b822129e59d6e9132a836453d181aae9 Mon Sep 17 00:00:00 2001 From: Jack Fox <0xdeadbeef1@gmail.com> Date: Sun, 8 Nov 2020 16:21:51 -0500 Subject: [PATCH 044/212] feature: Add GetStreams to AudioClient (#1588) * Added GetStreams * Change return type * Change return type on the interface Co-authored-by: Paulo --- src/Discord.Net.Core/Audio/IAudioClient.cs | 6 +++++- src/Discord.Net.WebSocket/Audio/AudioClient.cs | 8 +++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/Discord.Net.Core/Audio/IAudioClient.cs b/src/Discord.Net.Core/Audio/IAudioClient.cs index 018c8bc05..2fc52a529 100644 --- a/src/Discord.Net.Core/Audio/IAudioClient.cs +++ b/src/Discord.Net.Core/Audio/IAudioClient.cs @@ -1,4 +1,5 @@ -using System; +using System; +using System.Collections.Generic; using System.Threading.Tasks; namespace Discord.Audio @@ -20,6 +21,9 @@ namespace Discord.Audio /// Gets the estimated round-trip latency, in milliseconds, to the voice UDP server. int UdpLatency { get; } + /// Gets the current audio streams. + IReadOnlyDictionary GetStreams(); + Task StopAsync(); Task SetSpeakingAsync(bool value); diff --git a/src/Discord.Net.WebSocket/Audio/AudioClient.cs b/src/Discord.Net.WebSocket/Audio/AudioClient.cs index 2210e019f..3549fb106 100644 --- a/src/Discord.Net.WebSocket/Audio/AudioClient.cs +++ b/src/Discord.Net.WebSocket/Audio/AudioClient.cs @@ -99,6 +99,12 @@ namespace Discord.Audio _token = token; await _connection.StartAsync().ConfigureAwait(false); } + + public IReadOnlyDictionary GetStreams() + { + return _streams.ToDictionary(pair => pair.Key, pair => pair.Value.Reader); + } + public async Task StopAsync() { await _connection.StopAsync().ConfigureAwait(false); @@ -379,7 +385,7 @@ namespace Discord.Audio private async Task RunHeartbeatAsync(int intervalMillis, CancellationToken cancelToken) { - //TODO: Clean this up when Discord's session patch is live + // TODO: Clean this up when Discord's session patch is live try { await _audioLogger.DebugAsync("Heartbeat Started").ConfigureAwait(false); From 913444349465c339f0624ef0ea26715d9e7a1853 Mon Sep 17 00:00:00 2001 From: Paulo Date: Sun, 8 Nov 2020 19:29:15 -0300 Subject: [PATCH 045/212] fix: Crosspost throwing InvalidOperationException (#1671) * Add INewsChannel * Renaming variable to match the new type --- src/Discord.Net.Core/Entities/Channels/INewsChannel.cs | 9 +++++++++ .../Entities/Channels/RestNewsChannel.cs | 2 +- .../Entities/Messages/RestUserMessage.cs | 4 ++-- .../Entities/Channels/SocketNewsChannel.cs | 2 +- .../Entities/Invites/SocketInvite.cs | 2 +- .../Entities/Messages/SocketUserMessage.cs | 4 ++-- 6 files changed, 16 insertions(+), 7 deletions(-) create mode 100644 src/Discord.Net.Core/Entities/Channels/INewsChannel.cs diff --git a/src/Discord.Net.Core/Entities/Channels/INewsChannel.cs b/src/Discord.Net.Core/Entities/Channels/INewsChannel.cs new file mode 100644 index 000000000..a1223b48b --- /dev/null +++ b/src/Discord.Net.Core/Entities/Channels/INewsChannel.cs @@ -0,0 +1,9 @@ +namespace Discord +{ + /// + /// Represents a generic news channel in a guild that can send and receive messages. + /// + public interface INewsChannel : ITextChannel + { + } +} diff --git a/src/Discord.Net.Rest/Entities/Channels/RestNewsChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestNewsChannel.cs index 8a334fae5..fad3358dc 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestNewsChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestNewsChannel.cs @@ -12,7 +12,7 @@ namespace Discord.Rest /// Represents a REST-based news channel in a guild that has the same properties as a . /// [DebuggerDisplay(@"{DebuggerDisplay,nq}")] - public class RestNewsChannel : RestTextChannel + public class RestNewsChannel : RestTextChannel, INewsChannel { internal RestNewsChannel(BaseDiscordClient discord, IGuild guild, ulong id) :base(discord, guild, id) diff --git a/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs b/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs index be955b13d..79df4308d 100644 --- a/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs +++ b/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs @@ -154,10 +154,10 @@ namespace Discord.Rest => MentionUtils.Resolve(this, 0, userHandling, channelHandling, roleHandling, everyoneHandling, emojiHandling); /// - /// This operation may only be called on a channel. + /// This operation may only be called on a channel. public async Task CrosspostAsync(RequestOptions options = null) { - if (!(Channel is RestNewsChannel)) + if (!(Channel is INewsChannel)) { throw new InvalidOperationException("Publishing (crossposting) is only valid in news channels."); } diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketNewsChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketNewsChannel.cs index 815a99ce7..944dd2d7f 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketNewsChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketNewsChannel.cs @@ -15,7 +15,7 @@ namespace Discord.WebSocket /// /// [DebuggerDisplay(@"{DebuggerDisplay,nq}")] - public class SocketNewsChannel : SocketTextChannel + public class SocketNewsChannel : SocketTextChannel, INewsChannel { internal SocketNewsChannel(DiscordSocketClient discord, ulong id, SocketGuild guild) :base(discord, id, guild) diff --git a/src/Discord.Net.WebSocket/Entities/Invites/SocketInvite.cs b/src/Discord.Net.WebSocket/Entities/Invites/SocketInvite.cs index fa8c56599..902f13935 100644 --- a/src/Discord.Net.WebSocket/Entities/Invites/SocketInvite.cs +++ b/src/Discord.Net.WebSocket/Entities/Invites/SocketInvite.cs @@ -34,7 +34,7 @@ namespace Discord.WebSocket case ICategoryChannel categoryChannel: return ChannelType.Category; case IDMChannel dmChannel: return ChannelType.DM; case IGroupChannel groupChannel: return ChannelType.Group; - case SocketNewsChannel socketNewsChannel: return ChannelType.News; + case INewsChannel newsChannel: return ChannelType.News; case ITextChannel textChannel: return ChannelType.Text; default: throw new InvalidOperationException("Invalid channel type."); } diff --git a/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs b/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs index 51b0c2043..da7f8f16b 100644 --- a/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs +++ b/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs @@ -158,10 +158,10 @@ namespace Discord.WebSocket => MentionUtils.Resolve(this, 0, userHandling, channelHandling, roleHandling, everyoneHandling, emojiHandling); /// - /// This operation may only be called on a channel. + /// This operation may only be called on a channel. public async Task CrosspostAsync(RequestOptions options = null) { - if (!(Channel is SocketNewsChannel)) + if (!(Channel is INewsChannel)) { throw new InvalidOperationException("Publishing (crossposting) is only valid in news channels."); } From 05a1f0a709e6970f4302d9954a94b3a88bf01e6c Mon Sep 17 00:00:00 2001 From: Paulo Date: Mon, 9 Nov 2020 12:31:17 -0300 Subject: [PATCH 046/212] fix: Discord sends null when there's no team --- src/Discord.Net.Rest/Entities/RestApplication.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Discord.Net.Rest/Entities/RestApplication.cs b/src/Discord.Net.Rest/Entities/RestApplication.cs index 6c22c0836..d96d837ab 100644 --- a/src/Discord.Net.Rest/Entities/RestApplication.cs +++ b/src/Discord.Net.Rest/Entities/RestApplication.cs @@ -59,7 +59,7 @@ namespace Discord.Rest Flags = model.Flags.Value; //TODO: Do we still need this? if (model.Owner.IsSpecified) Owner = RestUser.Create(Discord, model.Owner.Value); - if (model.Team.IsSpecified) + if (model.Team.IsSpecified && model.Team.Value != null) Team = RestTeam.Create(Discord, model.Team.Value); } From be60d813f77ddfb2f131ae4f290026f3ff2756ad Mon Sep 17 00:00:00 2001 From: Paulo Date: Mon, 9 Nov 2020 15:39:08 -0300 Subject: [PATCH 047/212] fix: Team is nullable, not optional (#1672) --- src/Discord.Net.Rest/API/Common/Application.cs | 2 +- src/Discord.Net.Rest/Entities/RestApplication.cs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Discord.Net.Rest/API/Common/Application.cs b/src/Discord.Net.Rest/API/Common/Application.cs index b80aecd27..aba3e524b 100644 --- a/src/Discord.Net.Rest/API/Common/Application.cs +++ b/src/Discord.Net.Rest/API/Common/Application.cs @@ -20,7 +20,7 @@ namespace Discord.API [JsonProperty("bot_require_code_grant")] public bool BotRequiresCodeGrant { get; set; } [JsonProperty("team")] - public Optional Team { get; set; } + public Team Team { get; set; } [JsonProperty("flags"), Int53] public Optional Flags { get; set; } diff --git a/src/Discord.Net.Rest/Entities/RestApplication.cs b/src/Discord.Net.Rest/Entities/RestApplication.cs index d96d837ab..5c2f872cf 100644 --- a/src/Discord.Net.Rest/Entities/RestApplication.cs +++ b/src/Discord.Net.Rest/Entities/RestApplication.cs @@ -59,8 +59,8 @@ namespace Discord.Rest Flags = model.Flags.Value; //TODO: Do we still need this? if (model.Owner.IsSpecified) Owner = RestUser.Create(Discord, model.Owner.Value); - if (model.Team.IsSpecified && model.Team.Value != null) - Team = RestTeam.Create(Discord, model.Team.Value); + if (model.Team != null) + Team = RestTeam.Create(Discord, model.Team); } /// Unable to update this object from a different application token. From 47ed8064180420d2109e23794270cd4246161ffe Mon Sep 17 00:00:00 2001 From: Paulo Date: Sun, 15 Nov 2020 13:20:08 -0300 Subject: [PATCH 048/212] misc: Change ratelimit messages (#1678) --- src/Discord.Net.Rest/BaseDiscordClient.cs | 6 +++--- src/Discord.Net.Rest/Net/Queue/RequestQueue.cs | 6 +++--- src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs | 4 ++-- src/Discord.Net.Webhook/DiscordWebhookClient.cs | 6 +++--- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/Discord.Net.Rest/BaseDiscordClient.cs b/src/Discord.Net.Rest/BaseDiscordClient.cs index 58b42929a..b641fa1c3 100644 --- a/src/Discord.Net.Rest/BaseDiscordClient.cs +++ b/src/Discord.Net.Rest/BaseDiscordClient.cs @@ -46,12 +46,12 @@ namespace Discord.Rest _restLogger = LogManager.CreateLogger("Rest"); _isFirstLogin = config.DisplayInitialLog; - ApiClient.RequestQueue.RateLimitTriggered += async (id, info) => + ApiClient.RequestQueue.RateLimitTriggered += async (id, info, endpoint) => { if (info == null) - await _restLogger.VerboseAsync($"Preemptive Rate limit triggered: {id?.ToString() ?? "null"}").ConfigureAwait(false); + await _restLogger.VerboseAsync($"Preemptive Rate limit triggered: {endpoint} {(id.IsHashBucket ? $"(Bucket: {id.BucketHash})" : "")}").ConfigureAwait(false); else - await _restLogger.WarningAsync($"Rate limit triggered: {id?.ToString() ?? "null"}").ConfigureAwait(false); + await _restLogger.WarningAsync($"Rate limit triggered: {endpoint} {(id.IsHashBucket ? $"(Bucket: {id.BucketHash})" : "")}").ConfigureAwait(false); }; ApiClient.SentRequest += async (method, endpoint, millis) => await _restLogger.VerboseAsync($"{method} {endpoint}: {millis} ms").ConfigureAwait(false); } diff --git a/src/Discord.Net.Rest/Net/Queue/RequestQueue.cs b/src/Discord.Net.Rest/Net/Queue/RequestQueue.cs index 691ac77c0..127a48cf3 100644 --- a/src/Discord.Net.Rest/Net/Queue/RequestQueue.cs +++ b/src/Discord.Net.Rest/Net/Queue/RequestQueue.cs @@ -12,7 +12,7 @@ namespace Discord.Net.Queue { internal class RequestQueue : IDisposable { - public event Func RateLimitTriggered; + public event Func RateLimitTriggered; private readonly ConcurrentDictionary _buckets; private readonly SemaphoreSlim _tokenLock; @@ -121,9 +121,9 @@ namespace Discord.Net.Queue } return (RequestBucket)obj; } - internal async Task RaiseRateLimitTriggered(BucketId bucketId, RateLimitInfo? info) + internal async Task RaiseRateLimitTriggered(BucketId bucketId, RateLimitInfo? info, string endpoint) { - await RateLimitTriggered(bucketId, info).ConfigureAwait(false); + await RateLimitTriggered(bucketId, info, endpoint).ConfigureAwait(false); } internal (RequestBucket, BucketId) UpdateBucketHash(BucketId id, string discordHash) { diff --git a/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs b/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs index f1471d545..edd55f158 100644 --- a/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs +++ b/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs @@ -84,7 +84,7 @@ namespace Discord.Net.Queue #endif UpdateRateLimit(id, request, info, true); } - await _queue.RaiseRateLimitTriggered(Id, info).ConfigureAwait(false); + await _queue.RaiseRateLimitTriggered(Id, info, $"{request.Method} {request.Endpoint}").ConfigureAwait(false); continue; //Retry case HttpStatusCode.BadGateway: //502 #if DEBUG_LIMITS @@ -187,7 +187,7 @@ namespace Discord.Net.Queue if (!isRateLimited) { isRateLimited = true; - await _queue.RaiseRateLimitTriggered(Id, null).ConfigureAwait(false); + await _queue.RaiseRateLimitTriggered(Id, null, $"{request.Method} {request.Endpoint}").ConfigureAwait(false); } ThrowRetryLimit(request); diff --git a/src/Discord.Net.Webhook/DiscordWebhookClient.cs b/src/Discord.Net.Webhook/DiscordWebhookClient.cs index 9c9bfe958..a6d4ef183 100644 --- a/src/Discord.Net.Webhook/DiscordWebhookClient.cs +++ b/src/Discord.Net.Webhook/DiscordWebhookClient.cs @@ -74,12 +74,12 @@ namespace Discord.Webhook _restLogger = LogManager.CreateLogger("Rest"); - ApiClient.RequestQueue.RateLimitTriggered += async (id, info) => + ApiClient.RequestQueue.RateLimitTriggered += async (id, info, endpoint) => { if (info == null) - await _restLogger.VerboseAsync($"Preemptive Rate limit triggered: {id?.ToString() ?? "null"}").ConfigureAwait(false); + await _restLogger.VerboseAsync($"Preemptive Rate limit triggered: {endpoint} {(id.IsHashBucket ? $"(Bucket: {id.BucketHash})" : "")}").ConfigureAwait(false); else - await _restLogger.WarningAsync($"Rate limit triggered: {id?.ToString() ?? "null"}").ConfigureAwait(false); + await _restLogger.WarningAsync($"Rate limit triggered: {endpoint} {(id.IsHashBucket ? $"(Bucket: {id.BucketHash})" : "")}").ConfigureAwait(false); }; ApiClient.SentRequest += async (method, endpoint, millis) => await _restLogger.VerboseAsync($"{method} {endpoint}: {millis} ms").ConfigureAwait(false); } From 3a1001830bbf699aff3e524a8eb2d55a886227cb Mon Sep 17 00:00:00 2001 From: Paulo Date: Tue, 17 Nov 2020 02:11:02 -0300 Subject: [PATCH 049/212] misc: Missing summary tag --- src/Discord.Net.WebSocket/DiscordSocketConfig.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Discord.Net.WebSocket/DiscordSocketConfig.cs b/src/Discord.Net.WebSocket/DiscordSocketConfig.cs index 11e44d8dc..0e8fbe73f 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketConfig.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketConfig.cs @@ -151,6 +151,7 @@ namespace Discord.WebSocket } private int _maxWaitForGuildAvailable = 10000; + /// /// Gets or sets gateway intents to limit what events are sent from Discord. Allows for more granular control than the property. /// /// From 04389a4f3e7120d70b6c6f7c21fcec3355b1b28e Mon Sep 17 00:00:00 2001 From: Paulo Date: Tue, 17 Nov 2020 05:11:25 -0300 Subject: [PATCH 050/212] fix: Emoji url encode (#1681) --- .../Entities/Messages/MessageHelper.cs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs b/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs index d6a718b3a..619ddc876 100644 --- a/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs +++ b/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs @@ -65,12 +65,12 @@ namespace Discord.Rest public static async Task AddReactionAsync(IMessage msg, IEmote emote, BaseDiscordClient client, RequestOptions options) { - await client.ApiClient.AddReactionAsync(msg.Channel.Id, msg.Id, emote is Emote e ? $"{e.Name}:{e.Id}" : emote.Name, options).ConfigureAwait(false); + await client.ApiClient.AddReactionAsync(msg.Channel.Id, msg.Id, emote is Emote e ? $"{e.Name}:{e.Id}" : UrlEncode(emote.Name), options).ConfigureAwait(false); } public static async Task RemoveReactionAsync(IMessage msg, ulong userId, IEmote emote, BaseDiscordClient client, RequestOptions options) { - await client.ApiClient.RemoveReactionAsync(msg.Channel.Id, msg.Id, userId, emote is Emote e ? $"{e.Name}:{e.Id}" : emote.Name, options).ConfigureAwait(false); + await client.ApiClient.RemoveReactionAsync(msg.Channel.Id, msg.Id, userId, emote is Emote e ? $"{e.Name}:{e.Id}" : UrlEncode(emote.Name), options).ConfigureAwait(false); } public static async Task RemoveAllReactionsAsync(IMessage msg, BaseDiscordClient client, RequestOptions options) @@ -80,14 +80,14 @@ namespace Discord.Rest public static async Task RemoveAllReactionsForEmoteAsync(IMessage msg, IEmote emote, BaseDiscordClient client, RequestOptions options) { - await client.ApiClient.RemoveAllReactionsForEmoteAsync(msg.Channel.Id, msg.Id, emote is Emote e ? $"{e.Name}:{e.Id}" : emote.Name, options).ConfigureAwait(false); + await client.ApiClient.RemoveAllReactionsForEmoteAsync(msg.Channel.Id, msg.Id, emote is Emote e ? $"{e.Name}:{e.Id}" : UrlEncode(emote.Name), options).ConfigureAwait(false); } public static IAsyncEnumerable> GetReactionUsersAsync(IMessage msg, IEmote emote, int? limit, BaseDiscordClient client, RequestOptions options) { Preconditions.NotNull(emote, nameof(emote)); - var emoji = (emote is Emote e ? $"{e.Name}:{e.Id}" : emote.Name); + var emoji = (emote is Emote e ? $"{e.Name}:{e.Id}" : UrlEncode(emote.Name)); return new PagedAsyncEnumerable( DiscordConfig.MaxUserReactionsPerBatch, @@ -114,7 +114,15 @@ namespace Discord.Rest }, count: limit ); + } + private static string UrlEncode(string text) + { +#if NET461 + return System.Net.WebUtility.UrlEncode(text); +#else + return System.Web.HttpUtility.UrlEncode(text); +#endif } public static async Task PinAsync(IMessage msg, BaseDiscordClient client, From ec212b175dc17c2341afacfa2f269a08427c3b43 Mon Sep 17 00:00:00 2001 From: Paulo Date: Tue, 17 Nov 2020 05:23:45 -0300 Subject: [PATCH 051/212] feature: Add missing properties to Guild and deprecate GuildEmbed (#1573) * Add missing properties to Guild, related methods, and deprecate GuildEmbed endpoints - Add missing guild properties: `discovery_splash`, `widget_enabled`, `widget_channel_id`, `rules_channel_id`, `max_presences`, `max_presences`, `max_members`, `public_updates_channel_id`, `max_video_channel_users`, `approximate_member_count`, `approximate_presence_count` - Update guild properties: `embed_enabled`, `embed_channel_id` - Add `GetGuildDiscoverySplashUrl` to `CDN` - Add classes related to the guild widget - Add `withCounts` parameter to `GetGuild(s)Async` - Make GuildEmbed related methods obsolete with a message redirecting to widget ones * Change xml docs and PremiumSubscriptionCount type * Changed some xml docs --- src/Discord.Net.Core/CDN.cs | 12 +- .../Entities/Guilds/GuildWidgetProperties.cs | 21 ++ .../Entities/Guilds/IGuild.cs | 199 +++++++++++++---- src/Discord.Net.Core/Entities/IUpdateable.cs | 1 + src/Discord.Net.Rest/API/Common/Guild.cs | 26 ++- .../API/Common/GuildWidget.cs | 13 ++ .../API/Rest/ModifyGuildWidgetParams.cs | 14 ++ src/Discord.Net.Rest/ClientHelper.cs | 18 +- src/Discord.Net.Rest/DiscordRestApiClient.cs | 30 ++- src/Discord.Net.Rest/DiscordRestClient.cs | 12 +- .../Entities/Guilds/GuildHelper.cs | 22 ++ .../Entities/Guilds/RestGuild.cs | 200 +++++++++++++++--- .../Entities/Guilds/RestGuildWidget.cs | 25 +++ .../Entities/Guilds/SocketGuild.cs | 147 +++++++++++-- 14 files changed, 644 insertions(+), 96 deletions(-) create mode 100644 src/Discord.Net.Core/Entities/Guilds/GuildWidgetProperties.cs create mode 100644 src/Discord.Net.Rest/API/Common/GuildWidget.cs create mode 100644 src/Discord.Net.Rest/API/Rest/ModifyGuildWidgetParams.cs create mode 100644 src/Discord.Net.Rest/Entities/Guilds/RestGuildWidget.cs diff --git a/src/Discord.Net.Core/CDN.cs b/src/Discord.Net.Core/CDN.cs index 799b037ed..e1e8e5e1a 100644 --- a/src/Discord.Net.Core/CDN.cs +++ b/src/Discord.Net.Core/CDN.cs @@ -73,11 +73,21 @@ namespace Discord /// The guild snowflake identifier. /// The splash icon identifier. /// - /// A URL pointing to the guild's icon. + /// A URL pointing to the guild's splash. /// public static string GetGuildSplashUrl(ulong guildId, string splashId) => splashId != null ? $"{DiscordConfig.CDNUrl}splashes/{guildId}/{splashId}.jpg" : null; /// + /// Returns a guild discovery splash URL. + /// + /// The guild snowflake identifier. + /// The discovery splash icon identifier. + /// + /// A URL pointing to the guild's discovery splash. + /// + public static string GetGuildDiscoverySplashUrl(ulong guildId, string discoverySplashId) + => discoverySplashId != null ? $"{DiscordConfig.CDNUrl}discovery-splashes/{guildId}/{discoverySplashId}.jpg" : null; + /// /// Returns a channel icon URL. /// /// The channel snowflake identifier. diff --git a/src/Discord.Net.Core/Entities/Guilds/GuildWidgetProperties.cs b/src/Discord.Net.Core/Entities/Guilds/GuildWidgetProperties.cs new file mode 100644 index 000000000..842bb7f3e --- /dev/null +++ b/src/Discord.Net.Core/Entities/Guilds/GuildWidgetProperties.cs @@ -0,0 +1,21 @@ +namespace Discord +{ + /// + /// Provides properties that are used to modify the widget of an with the specified changes. + /// + public class GuildWidgetProperties + { + /// + /// Sets whether the widget should be enabled. + /// + public Optional Enabled { get; set; } + /// + /// Sets the channel that the invite should place its users in, if not . + /// + public Optional Channel { get; set; } + /// + /// Sets the channel that the invite should place its users in, if not . + /// + public Optional ChannelId { get; set; } + } +} diff --git a/src/Discord.Net.Core/Entities/Guilds/IGuild.cs b/src/Discord.Net.Core/Entities/Guilds/IGuild.cs index 8392bcd58..6283508e5 100644 --- a/src/Discord.Net.Core/Entities/Guilds/IGuild.cs +++ b/src/Discord.Net.Core/Entities/Guilds/IGuild.cs @@ -23,7 +23,7 @@ namespace Discord /// automatically moved to the AFK voice channel. /// /// - /// An representing the amount of time in seconds for a user to be marked as inactive + /// An representing the amount of time in seconds for a user to be marked as inactive /// and moved into the AFK voice channel. /// int AFKTimeout { get; } @@ -31,10 +31,17 @@ namespace Discord /// Gets a value that indicates whether this guild is embeddable (i.e. can use widget). /// /// - /// true if this guild can be embedded via widgets; otherwise false. + /// if this guild has a widget enabled; otherwise . /// bool IsEmbeddable { get; } /// + /// Gets a value that indicates whether this guild has the widget enabled. + /// + /// + /// if this guild has a widget enabled; otherwise . + /// + bool IsWidgetEnabled { get; } + /// /// Gets the default message notifications for users who haven't explicitly set their notification settings. /// DefaultMessageNotifications DefaultMessageNotifications { get; } @@ -64,31 +71,45 @@ namespace Discord /// Gets the ID of this guild's icon. /// /// - /// An identifier for the splash image; null if none is set. + /// An identifier for the splash image; if none is set. /// string IconId { get; } /// /// Gets the URL of this guild's icon. /// /// - /// A URL pointing to the guild's icon; null if none is set. + /// A URL pointing to the guild's icon; if none is set. /// string IconUrl { get; } /// /// Gets the ID of this guild's splash image. /// /// - /// An identifier for the splash image; null if none is set. + /// An identifier for the splash image; if none is set. /// string SplashId { get; } /// /// Gets the URL of this guild's splash image. /// /// - /// A URL pointing to the guild's splash image; null if none is set. + /// A URL pointing to the guild's splash image; if none is set. /// string SplashUrl { get; } /// + /// Gets the ID of this guild's discovery splash image. + /// + /// + /// An identifier for the discovery splash image; if none is set. + /// + string DiscoverySplashId { get; } + /// + /// Gets the URL of this guild's discovery splash image. + /// + /// + /// A URL pointing to the guild's discovery splash image; if none is set. + /// + string DiscoverySplashUrl { get; } + /// /// Determines if this guild is currently connected and ready to be used. /// /// @@ -98,7 +119,7 @@ namespace Discord /// This boolean is used to determine if the guild is currently connected to the WebSocket and is ready to be used/accessed. /// /// - /// true if this guild is currently connected and ready to be used; otherwise false. + /// true if this guild is currently connected and ready to be used; otherwise . /// bool Available { get; } @@ -106,7 +127,7 @@ namespace Discord /// Gets the ID of the AFK voice channel for this guild. /// /// - /// A representing the snowflake identifier of the AFK voice channel; null if + /// A representing the snowflake identifier of the AFK voice channel; if /// none is set. /// ulong? AFKChannelId { get; } @@ -121,7 +142,7 @@ namespace Discord /// /// /// - /// A representing the snowflake identifier of the default text channel; 0 if + /// A representing the snowflake identifier of the default text channel; 0 if /// none can be found. /// ulong DefaultChannelId { get; } @@ -129,30 +150,54 @@ namespace Discord /// Gets the ID of the widget embed channel of this guild. /// /// - /// A representing the snowflake identifier of the embedded channel found within the - /// widget settings of this guild; null if none is set. + /// A representing the snowflake identifier of the embedded channel found within the + /// widget settings of this guild; if none is set. /// ulong? EmbedChannelId { get; } /// + /// Gets the ID of the channel assigned to the widget of this guild. + /// + /// + /// A representing the snowflake identifier of the channel assigned to the widget found + /// within the widget settings of this guild; if none is set. + /// + ulong? WidgetChannelId { get; } + /// /// Gets the ID of the channel where randomized welcome messages are sent. /// /// - /// A representing the snowflake identifier of the system channel where randomized - /// welcome messages are sent; null if none is set. + /// A representing the snowflake identifier of the system channel where randomized + /// welcome messages are sent; if none is set. /// ulong? SystemChannelId { get; } /// + /// Gets the ID of the channel with the rules. + /// + /// + /// A representing the snowflake identifier of the channel that contains the rules; + /// if none is set. + /// + ulong? RulesChannelId { get; } + /// + /// Gets the ID of the channel where admins and moderators of Community guilds receive notices from Discord. + /// + /// + /// A representing the snowflake identifier of the channel where admins and moderators + /// of Community guilds receive notices from Discord; if none is set. + /// + ulong? PublicUpdatesChannelId { get; } + /// /// Gets the ID of the user that owns this guild. /// /// - /// A representing the snowflake identifier of the user that owns this guild. + /// A representing the snowflake identifier of the user that owns this guild. /// ulong OwnerId { get; } /// /// Gets the application ID of the guild creator if it is bot-created. /// /// - /// A representing the snowflake identifier of the application ID that created this guild, or null if it was not bot-created. + /// A representing the snowflake identifier of the application ID that created this guild, or if it was not bot-created. /// ulong? ApplicationId { get; } /// @@ -208,21 +253,21 @@ namespace Discord /// Gets the identifier for this guilds banner image. /// /// - /// An identifier for the banner image; null if none is set. + /// An identifier for the banner image; if none is set. /// string BannerId { get; } /// /// Gets the URL of this guild's banner image. /// /// - /// A URL pointing to the guild's banner image; null if none is set. + /// A URL pointing to the guild's banner image; if none is set. /// string BannerUrl { get; } /// /// Gets the code for this guild's vanity invite URL. /// /// - /// A string containing the vanity invite code for this guild; null if none is set. + /// A string containing the vanity invite code for this guild; if none is set. /// string VanityURLCode { get; } /// @@ -236,7 +281,7 @@ namespace Discord /// Gets the description for the guild. /// /// - /// The description for the guild; null if none is set. + /// The description for the guild; if none is set. /// string Description { get; } /// @@ -246,9 +291,50 @@ namespace Discord /// This is the number of users who have boosted this guild. /// /// - /// The number of premium subscribers of this guild. + /// The number of premium subscribers of this guild; if not available. /// int PremiumSubscriptionCount { get; } + /// + /// Gets the maximum number of presences for the guild. + /// + /// + /// The maximum number of presences for the guild. + /// + int? MaxPresences { get; } + /// + /// Gets the maximum number of members for the guild. + /// + /// + /// The maximum number of members for the guild. + /// + int? MaxMembers { get; } + /// + /// Gets the maximum amount of users in a video channel. + /// + /// + /// The maximum amount of users in a video channel. + /// + int? MaxVideoChannelUsers { get; } + /// + /// Gets the approximate number of members in this guild. + /// + /// + /// Only available when getting a guild via REST when `with_counts` is true. + /// + /// + /// The approximate number of members in this guild. + /// + int? ApproximateMemberCount { get; } + /// + /// Gets the approximate number of non-offline members in this guild. + /// + /// + /// Only available when getting a guild via REST when `with_counts` is true. + /// + /// + /// The approximate number of non-offline members in this guild. + /// + int? ApproximatePresenceCount { get; } /// /// Gets the preferred locale of this guild in IETF BCP 47 @@ -285,8 +371,18 @@ namespace Discord /// /// A task that represents the asynchronous modification operation. /// + [Obsolete("This endpoint is deprecated, use ModifyWidgetAsync instead.")] Task ModifyEmbedAsync(Action func, RequestOptions options = null); /// + /// Modifies this guild's widget. + /// + /// The delegate containing the properties to modify the guild widget with. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous modification operation. + /// + Task ModifyWidgetAsync(Action func, RequestOptions options = null); + /// /// Bulk-modifies the order of channels in this guild. /// /// The properties used to modify the channel positions with. @@ -336,7 +432,7 @@ namespace Discord /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains a ban object, which - /// contains the user information and the reason for the ban; null if the ban entry cannot be found. + /// contains the user information and the reason for the ban; if the ban entry cannot be found. /// Task GetBanAsync(IUser user, RequestOptions options = null); /// @@ -346,7 +442,7 @@ namespace Discord /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains a ban object, which - /// contains the user information and the reason for the ban; null if the ban entry cannot be found. + /// contains the user information and the reason for the ban; if the ban entry cannot be found. /// Task GetBanAsync(ulong userId, RequestOptions options = null); /// @@ -410,7 +506,7 @@ namespace Discord /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains the generic channel - /// associated with the specified ; null if none is found. + /// associated with the specified ; if none is found. /// Task GetChannelAsync(ulong id, CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); /// @@ -431,7 +527,7 @@ namespace Discord /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains the text channel - /// associated with the specified ; null if none is found. + /// associated with the specified ; if none is found. /// Task GetTextChannelAsync(ulong id, CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); /// @@ -462,7 +558,7 @@ namespace Discord /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains the voice channel associated - /// with the specified ; null if none is found. + /// with the specified ; if none is found. /// Task GetVoiceChannelAsync(ulong id, CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); /// @@ -472,7 +568,7 @@ namespace Discord /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains the voice channel that the - /// AFK users will be moved to after they have idled for too long; null if none is set. + /// AFK users will be moved to after they have idled for too long; if none is set. /// Task GetAFKChannelAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); /// @@ -482,7 +578,7 @@ namespace Discord /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains the text channel where - /// randomized welcome messages will be sent to; null if none is set. + /// randomized welcome messages will be sent to; if none is set. /// Task GetSystemChannelAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); /// @@ -492,7 +588,7 @@ namespace Discord /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains the first viewable text - /// channel in this guild; null if none is found. + /// channel in this guild; if none is found. /// Task GetDefaultChannelAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); /// @@ -502,9 +598,40 @@ namespace Discord /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains the embed channel set - /// within the server's widget settings; null if none is set. + /// within the server's widget settings; if none is set. /// + [Obsolete("This endpoint is deprecated, use GetWidgetChannelAsync instead.")] Task GetEmbedChannelAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); + /// + /// Gets the widget channel (i.e. the channel set in the guild's widget settings) in this guild. + /// + /// The that determines whether the object should be fetched from cache. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains the widget channel set + /// within the server's widget settings; if none is set. + /// + Task GetWidgetChannelAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); + /// + /// Gets the text channel where Community guilds can display rules and/or guidelines. + /// + /// The that determines whether the object should be fetched from cache. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains the text channel + /// where Community guilds can display rules and/or guidelines; if none is set. + /// + Task GetRulesChannelAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); + /// + /// Gets the text channel channel where admins and moderators of Community guilds receive notices from Discord. + /// + /// The that determines whether the object should be fetched from cache. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains the text channel channel where + /// admins and moderators of Community guilds receive notices from Discord; if none is set. + /// + Task GetPublicUpdatesChannelAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); /// /// Creates a new text channel in this guild. @@ -573,7 +700,7 @@ namespace Discord /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains the partial metadata of - /// the vanity invite found within this guild; null if none is found. + /// the vanity invite found within this guild; if none is found. /// Task GetVanityInviteAsync(RequestOptions options = null); @@ -582,7 +709,7 @@ namespace Discord /// /// The snowflake identifier for the role. /// - /// A role that is associated with the specified ; null if none is found. + /// A role that is associated with the specified ; if none is found. /// IRole GetRole(ulong id); /// @@ -624,7 +751,7 @@ namespace Discord /// The OAuth2 access token for the user, requested with the guilds.join scope. /// The delegate containing the properties to be applied to the user upon being added to the guild. /// The options to be used when sending the request. - /// A guild user associated with the specified ; null if the user is already in the guild. + /// A guild user associated with the specified ; if the user is already in the guild. Task AddGuildUserAsync(ulong userId, string accessToken, Action func = null, RequestOptions options = null); /// /// Gets a collection of all users in this guild. @@ -649,7 +776,7 @@ namespace Discord /// /// This method retrieves a user found within this guild. /// - /// This may return null in the WebSocket implementation due to incomplete user collection in + /// This may return in the WebSocket implementation due to incomplete user collection in /// large guilds. /// /// @@ -658,7 +785,7 @@ namespace Discord /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains the guild user - /// associated with the specified ; null if none is found. + /// associated with the specified ; if none is found. /// Task GetUserAsync(ulong id, CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); /// @@ -752,7 +879,7 @@ namespace Discord /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains the webhook with the - /// specified ; null if none is found. + /// specified ; if none is found. /// Task GetWebhookAsync(ulong id, RequestOptions options = null); /// @@ -772,7 +899,7 @@ namespace Discord /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains the emote found with the - /// specified ; null if none is found. + /// specified ; if none is found. /// Task GetEmoteAsync(ulong id, RequestOptions options = null); /// diff --git a/src/Discord.Net.Core/Entities/IUpdateable.cs b/src/Discord.Net.Core/Entities/IUpdateable.cs index 3ae4613f5..d561e57a6 100644 --- a/src/Discord.Net.Core/Entities/IUpdateable.cs +++ b/src/Discord.Net.Core/Entities/IUpdateable.cs @@ -10,6 +10,7 @@ namespace Discord /// /// Updates this object's properties with its current state. /// + /// The options to be used when sending the request. Task UpdateAsync(RequestOptions options = null); } } diff --git a/src/Discord.Net.Rest/API/Common/Guild.cs b/src/Discord.Net.Rest/API/Common/Guild.cs index 56bd841ea..414929a7b 100644 --- a/src/Discord.Net.Rest/API/Common/Guild.cs +++ b/src/Discord.Net.Rest/API/Common/Guild.cs @@ -13,6 +13,8 @@ namespace Discord.API public string Icon { get; set; } [JsonProperty("splash")] public string Splash { get; set; } + [JsonProperty("discovery_splash")] + public string DiscoverySplash { get; set; } [JsonProperty("owner_id")] public ulong OwnerId { get; set; } [JsonProperty("region")] @@ -22,9 +24,9 @@ namespace Discord.API [JsonProperty("afk_timeout")] public int AFKTimeout { get; set; } [JsonProperty("embed_enabled")] - public bool EmbedEnabled { get; set; } + public Optional EmbedEnabled { get; set; } [JsonProperty("embed_channel_id")] - public ulong? EmbedChannelId { get; set; } + public Optional EmbedChannelId { get; set; } [JsonProperty("verification_level")] public VerificationLevel VerificationLevel { get; set; } [JsonProperty("default_message_notifications")] @@ -43,6 +45,10 @@ namespace Discord.API public MfaLevel MfaLevel { get; set; } [JsonProperty("application_id")] public ulong? ApplicationId { get; set; } + [JsonProperty("widget_enabled")] + public Optional WidgetEnabled { get; set; } + [JsonProperty("widget_channel_id")] + public Optional WidgetChannelId { get; set; } [JsonProperty("system_channel_id")] public ulong? SystemChannelId { get; set; } [JsonProperty("premium_tier")] @@ -56,9 +62,23 @@ namespace Discord.API // this value is inverted, flags set will turn OFF features [JsonProperty("system_channel_flags")] public SystemChannelMessageDeny SystemChannelFlags { get; set; } + [JsonProperty("rules_channel_id")] + public ulong? RulesChannelId { get; set; } + [JsonProperty("max_presences")] + public Optional MaxPresences { get; set; } + [JsonProperty("max_members")] + public Optional MaxMembers { get; set; } [JsonProperty("premium_subscription_count")] - public int? PremiumSubscriptionCount { get; set; } + public Optional PremiumSubscriptionCount { get; set; } [JsonProperty("preferred_locale")] public string PreferredLocale { get; set; } + [JsonProperty("public_updates_channel_id")] + public ulong? PublicUpdatesChannelId { get; set; } + [JsonProperty("max_video_channel_users")] + public Optional MaxVideoChannelUsers { get; set; } + [JsonProperty("approximate_member_count")] + public Optional ApproximateMemberCount { get; set; } + [JsonProperty("approximate_presence_count")] + public Optional ApproximatePresenceCount { get; set; } } } diff --git a/src/Discord.Net.Rest/API/Common/GuildWidget.cs b/src/Discord.Net.Rest/API/Common/GuildWidget.cs new file mode 100644 index 000000000..c15ad8aac --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/GuildWidget.cs @@ -0,0 +1,13 @@ +#pragma warning disable CS1591 +using Newtonsoft.Json; + +namespace Discord.API +{ + internal class GuildWidget + { + [JsonProperty("enabled")] + public bool Enabled { get; set; } + [JsonProperty("channel_id")] + public ulong? ChannelId { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Rest/ModifyGuildWidgetParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyGuildWidgetParams.cs new file mode 100644 index 000000000..506f1dfbb --- /dev/null +++ b/src/Discord.Net.Rest/API/Rest/ModifyGuildWidgetParams.cs @@ -0,0 +1,14 @@ +#pragma warning disable CS1591 +using Newtonsoft.Json; + +namespace Discord.API.Rest +{ + [JsonObject(MemberSerialization = MemberSerialization.OptIn)] + internal class ModifyGuildWidgetParams + { + [JsonProperty("enabled")] + public Optional Enabled { get; set; } + [JsonProperty("channel")] + public Optional ChannelId { get; set; } + } +} diff --git a/src/Discord.Net.Rest/ClientHelper.cs b/src/Discord.Net.Rest/ClientHelper.cs index a8f6b58ef..6ebdbcacb 100644 --- a/src/Discord.Net.Rest/ClientHelper.cs +++ b/src/Discord.Net.Rest/ClientHelper.cs @@ -62,9 +62,9 @@ namespace Discord.Rest } public static async Task GetGuildAsync(BaseDiscordClient client, - ulong id, RequestOptions options) + ulong id, bool withCounts, RequestOptions options) { - var model = await client.ApiClient.GetGuildAsync(id, options).ConfigureAwait(false); + var model = await client.ApiClient.GetGuildAsync(id, withCounts, options).ConfigureAwait(false); if (model != null) return RestGuild.Create(client, model); return null; @@ -77,6 +77,14 @@ namespace Discord.Rest return RestGuildEmbed.Create(model); return null; } + public static async Task GetGuildWidgetAsync(BaseDiscordClient client, + ulong id, RequestOptions options) + { + var model = await client.ApiClient.GetGuildWidgetAsync(id, options).ConfigureAwait(false); + if (model != null) + return RestGuildWidget.Create(model); + return null; + } public static IAsyncEnumerable> GetGuildSummariesAsync(BaseDiscordClient client, ulong? fromGuildId, int? limit, RequestOptions options) { @@ -106,13 +114,13 @@ namespace Discord.Rest count: limit ); } - public static async Task> GetGuildsAsync(BaseDiscordClient client, RequestOptions options) + public static async Task> GetGuildsAsync(BaseDiscordClient client, bool withCounts, RequestOptions options) { var summaryModels = await GetGuildSummariesAsync(client, null, null, options).FlattenAsync().ConfigureAwait(false); var guilds = ImmutableArray.CreateBuilder(); foreach (var summaryModel in summaryModels) { - var guildModel = await client.ApiClient.GetGuildAsync(summaryModel.Id).ConfigureAwait(false); + var guildModel = await client.ApiClient.GetGuildAsync(summaryModel.Id, withCounts).ConfigureAwait(false); if (guildModel != null) guilds.Add(RestGuild.Create(client, guildModel)); } @@ -140,7 +148,7 @@ namespace Discord.Rest public static async Task GetGuildUserAsync(BaseDiscordClient client, ulong guildId, ulong id, RequestOptions options) { - var guild = await GetGuildAsync(client, guildId, options).ConfigureAwait(false); + var guild = await GetGuildAsync(client, guildId, false, options).ConfigureAwait(false); if (guild == null) return null; diff --git a/src/Discord.Net.Rest/DiscordRestApiClient.cs b/src/Discord.Net.Rest/DiscordRestApiClient.cs index 27658e7ac..592ad7e92 100644 --- a/src/Discord.Net.Rest/DiscordRestApiClient.cs +++ b/src/Discord.Net.Rest/DiscordRestApiClient.cs @@ -787,7 +787,7 @@ namespace Discord.API } //Guilds - public async Task GetGuildAsync(ulong guildId, RequestOptions options = null) + public async Task GetGuildAsync(ulong guildId, bool withCounts, RequestOptions options = null) { Preconditions.NotEqual(guildId, 0, nameof(guildId)); options = RequestOptions.CreateOrClone(options); @@ -795,7 +795,7 @@ namespace Discord.API try { var ids = new BucketIds(guildId: guildId); - return await SendAsync("GET", () => $"guilds/{guildId}", ids, options: options).ConfigureAwait(false); + return await SendAsync("GET", () => $"guilds/{guildId}?with_counts={(withCounts ? "true" : "false")}", ids, options: options).ConfigureAwait(false); } catch (HttpException ex) when (ex.HttpCode == HttpStatusCode.NotFound) { return null; } } @@ -938,6 +938,32 @@ namespace Discord.API return await SendJsonAsync("PATCH", () => $"guilds/{guildId}/embed", args, ids, options: options).ConfigureAwait(false); } + //Guild Widget + /// must not be equal to zero. + public async Task GetGuildWidgetAsync(ulong guildId, RequestOptions options = null) + { + Preconditions.NotEqual(guildId, 0, nameof(guildId)); + options = RequestOptions.CreateOrClone(options); + + try + { + var ids = new BucketIds(guildId: guildId); + return await SendAsync("GET", () => $"guilds/{guildId}/widget", ids, options: options).ConfigureAwait(false); + } + catch (HttpException ex) when (ex.HttpCode == HttpStatusCode.NotFound) { return null; } + } + /// must not be equal to zero. + /// must not be . + public async Task ModifyGuildWidgetAsync(ulong guildId, Rest.ModifyGuildWidgetParams args, RequestOptions options = null) + { + Preconditions.NotNull(args, nameof(args)); + Preconditions.NotEqual(guildId, 0, nameof(guildId)); + options = RequestOptions.CreateOrClone(options); + + var ids = new BucketIds(guildId: guildId); + return await SendJsonAsync("PATCH", () => $"guilds/{guildId}/widget", args, ids, options: options).ConfigureAwait(false); + } + //Guild Integrations /// must not be equal to zero. public async Task> GetGuildIntegrationsAsync(ulong guildId, RequestOptions options = null) diff --git a/src/Discord.Net.Rest/DiscordRestClient.cs b/src/Discord.Net.Rest/DiscordRestClient.cs index 4c29d1625..bef4e6b2a 100644 --- a/src/Discord.Net.Rest/DiscordRestClient.cs +++ b/src/Discord.Net.Rest/DiscordRestClient.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using System.Collections.Immutable; using System.IO; @@ -76,15 +77,22 @@ namespace Discord.Rest => ClientHelper.GetInviteAsync(this, inviteId, options); public Task GetGuildAsync(ulong id, RequestOptions options = null) - => ClientHelper.GetGuildAsync(this, id, options); + => ClientHelper.GetGuildAsync(this, id, false, options); + public Task GetGuildAsync(ulong id, bool withCounts, RequestOptions options = null) + => ClientHelper.GetGuildAsync(this, id, withCounts, options); + [Obsolete("This endpoint is deprecated, use GetGuildWidgetAsync instead.")] public Task GetGuildEmbedAsync(ulong id, RequestOptions options = null) => ClientHelper.GetGuildEmbedAsync(this, id, options); + public Task GetGuildWidgetAsync(ulong id, RequestOptions options = null) + => ClientHelper.GetGuildWidgetAsync(this, id, options); public IAsyncEnumerable> GetGuildSummariesAsync(RequestOptions options = null) => ClientHelper.GetGuildSummariesAsync(this, null, null, options); public IAsyncEnumerable> GetGuildSummariesAsync(ulong fromGuildId, int limit, RequestOptions options = null) => ClientHelper.GetGuildSummariesAsync(this, fromGuildId, limit, options); public Task> GetGuildsAsync(RequestOptions options = null) - => ClientHelper.GetGuildsAsync(this, options); + => ClientHelper.GetGuildsAsync(this, false, options); + public Task> GetGuildsAsync(bool withCounts, RequestOptions options = null) + => ClientHelper.GetGuildsAsync(this, withCounts, options); public Task CreateGuildAsync(string name, IVoiceRegion region, Stream jpegIcon = null, RequestOptions options = null) => ClientHelper.CreateGuildAsync(this, name, region, jpegIcon, options); diff --git a/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs b/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs index 225c53edf..04ec27930 100644 --- a/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs +++ b/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs @@ -5,6 +5,7 @@ using System.Collections.Immutable; using System.Linq; using System.Threading.Tasks; using EmbedModel = Discord.API.GuildEmbed; +using WidgetModel = Discord.API.GuildWidget; using Model = Discord.API.Guild; using RoleModel = Discord.API.Role; using ImageModel = Discord.API.Image; @@ -99,6 +100,27 @@ namespace Discord.Rest return await client.ApiClient.ModifyGuildEmbedAsync(guild.Id, apiArgs, options).ConfigureAwait(false); } + /// is null. + public static async Task ModifyWidgetAsync(IGuild guild, BaseDiscordClient client, + Action func, RequestOptions options) + { + if (func == null) + throw new ArgumentNullException(nameof(func)); + + var args = new GuildWidgetProperties(); + func(args); + var apiArgs = new API.Rest.ModifyGuildWidgetParams + { + Enabled = args.Enabled + }; + + if (args.Channel.IsSpecified) + apiArgs.ChannelId = args.Channel.Value?.Id; + else if (args.ChannelId.IsSpecified) + apiArgs.ChannelId = args.ChannelId.Value; + + return await client.ApiClient.ModifyGuildWidgetAsync(guild.Id, apiArgs, options).ConfigureAwait(false); + } public static async Task ReorderChannelsAsync(IGuild guild, BaseDiscordClient client, IEnumerable args, RequestOptions options) { diff --git a/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs b/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs index 482eaf556..c1dd39afe 100644 --- a/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs +++ b/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs @@ -7,6 +7,7 @@ using System.Globalization; using System.Linq; using System.Threading.Tasks; using EmbedModel = Discord.API.GuildEmbed; +using WidgetModel = Discord.API.GuildWidget; using Model = Discord.API.Guild; namespace Discord.Rest @@ -28,6 +29,8 @@ namespace Discord.Rest /// public bool IsEmbeddable { get; private set; } /// + public bool IsWidgetEnabled { get; private set; } + /// public VerificationLevel VerificationLevel { get; private set; } /// public MfaLevel MfaLevel { get; private set; } @@ -41,8 +44,14 @@ namespace Discord.Rest /// public ulong? EmbedChannelId { get; private set; } /// + public ulong? WidgetChannelId { get; private set; } + /// public ulong? SystemChannelId { get; private set; } /// + public ulong? RulesChannelId { get; private set; } + /// + public ulong? PublicUpdatesChannelId { get; private set; } + /// public ulong OwnerId { get; private set; } /// public string VoiceRegionId { get; private set; } @@ -50,6 +59,8 @@ namespace Discord.Rest public string IconId { get; private set; } /// public string SplashId { get; private set; } + /// + public string DiscoverySplashId { get; private set; } internal bool Available { get; private set; } /// public ulong? ApplicationId { get; private set; } @@ -67,6 +78,16 @@ namespace Discord.Rest public int PremiumSubscriptionCount { get; private set; } /// public string PreferredLocale { get; private set; } + /// + public int? MaxPresences { get; private set; } + /// + public int? MaxMembers { get; private set; } + /// + public int? MaxVideoChannelUsers { get; private set; } + /// + public int? ApproximateMemberCount { get; private set; } + /// + public int? ApproximatePresenceCount { get; private set; } /// public CultureInfo PreferredCulture { get; private set; } @@ -81,6 +102,8 @@ namespace Discord.Rest /// public string SplashUrl => CDN.GetGuildSplashUrl(Id, SplashId); /// + public string DiscoverySplashUrl => CDN.GetGuildDiscoverySplashUrl(Id, DiscoverySplashId); + /// public string BannerUrl => CDN.GetGuildBannerUrl(Id, BannerId); /// @@ -110,15 +133,24 @@ namespace Discord.Rest internal void Update(Model model) { AFKChannelId = model.AFKChannelId; - EmbedChannelId = model.EmbedChannelId; + if (model.EmbedChannelId.IsSpecified) + EmbedChannelId = model.EmbedChannelId.Value; + if (model.WidgetChannelId.IsSpecified) + WidgetChannelId = model.WidgetChannelId.Value; SystemChannelId = model.SystemChannelId; + RulesChannelId = model.RulesChannelId; + PublicUpdatesChannelId = model.PublicUpdatesChannelId; AFKTimeout = model.AFKTimeout; - IsEmbeddable = model.EmbedEnabled; + if (model.EmbedEnabled.IsSpecified) + IsEmbeddable = model.EmbedEnabled.Value; + if (model.WidgetEnabled.IsSpecified) + IsWidgetEnabled = model.WidgetEnabled.Value; IconId = model.Icon; Name = model.Name; OwnerId = model.OwnerId; VoiceRegionId = model.Region; SplashId = model.Splash; + DiscoverySplashId = model.DiscoverySplash; VerificationLevel = model.VerificationLevel; MfaLevel = model.MfaLevel; DefaultMessageNotifications = model.DefaultMessageNotifications; @@ -129,9 +161,20 @@ namespace Discord.Rest BannerId = model.Banner; SystemChannelFlags = model.SystemChannelFlags; Description = model.Description; - PremiumSubscriptionCount = model.PremiumSubscriptionCount.GetValueOrDefault(); + if (model.PremiumSubscriptionCount.IsSpecified) + PremiumSubscriptionCount = model.PremiumSubscriptionCount.Value; + if (model.MaxPresences.IsSpecified) + MaxPresences = model.MaxPresences.Value ?? 25000; + if (model.MaxMembers.IsSpecified) + MaxMembers = model.MaxMembers.Value; + if (model.MaxVideoChannelUsers.IsSpecified) + MaxVideoChannelUsers = model.MaxVideoChannelUsers.Value; PreferredLocale = model.PreferredLocale; PreferredCulture = new CultureInfo(PreferredLocale); + if (model.ApproximateMemberCount.IsSpecified) + ApproximateMemberCount = model.ApproximateMemberCount.Value; + if (model.ApproximatePresenceCount.IsSpecified) + ApproximatePresenceCount = model.ApproximatePresenceCount.Value; if (model.Emojis != null) { @@ -163,17 +206,36 @@ namespace Discord.Rest EmbedChannelId = model.ChannelId; IsEmbeddable = model.Enabled; } + internal void Update(WidgetModel model) + { + WidgetChannelId = model.ChannelId; + IsWidgetEnabled = model.Enabled; + } //General /// public async Task UpdateAsync(RequestOptions options = null) - => Update(await Discord.ApiClient.GetGuildAsync(Id, options).ConfigureAwait(false)); + => Update(await Discord.ApiClient.GetGuildAsync(Id, false, options).ConfigureAwait(false)); + /// + /// Updates this object's properties with its current state. + /// + /// + /// If true, and + /// will be updated as well. + /// + /// The options to be used when sending the request. + /// + /// If is true, and + /// will be updated as well. + /// + public async Task UpdateAsync(bool withCounts, RequestOptions options = null) + => Update(await Discord.ApiClient.GetGuildAsync(Id, withCounts, options).ConfigureAwait(false)); /// public Task DeleteAsync(RequestOptions options = null) => GuildHelper.DeleteAsync(this, Discord, options); /// - /// is null. + /// is . public async Task ModifyAsync(Action func, RequestOptions options = null) { var model = await GuildHelper.ModifyAsync(this, Discord, func, options).ConfigureAwait(false); @@ -181,7 +243,8 @@ namespace Discord.Rest } /// - /// is null. + /// is . + [Obsolete("This endpoint is deprecated, use ModifyWidgetAsync instead.")] public async Task ModifyEmbedAsync(Action func, RequestOptions options = null) { var model = await GuildHelper.ModifyEmbedAsync(this, Discord, func, options).ConfigureAwait(false); @@ -189,7 +252,15 @@ namespace Discord.Rest } /// - /// is null. + /// is . + public async Task ModifyWidgetAsync(Action func, RequestOptions options = null) + { + var model = await GuildHelper.ModifyWidgetAsync(this, Discord, func, options).ConfigureAwait(false); + Update(model); + } + + /// + /// is . public async Task ReorderChannelsAsync(IEnumerable args, RequestOptions options = null) { var arr = args.ToArray(); @@ -230,7 +301,7 @@ namespace Discord.Rest /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains a ban object, which - /// contains the user information and the reason for the ban; null if the ban entry cannot be found. + /// contains the user information and the reason for the ban; if the ban entry cannot be found. /// public Task GetBanAsync(IUser user, RequestOptions options = null) => GuildHelper.GetBanAsync(this, Discord, user.Id, options); @@ -241,7 +312,7 @@ namespace Discord.Rest /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains a ban object, which - /// contains the user information and the reason for the ban; null if the ban entry cannot be found. + /// contains the user information and the reason for the ban; if the ban entry cannot be found. /// public Task GetBanAsync(ulong userId, RequestOptions options = null) => GuildHelper.GetBanAsync(this, Discord, userId, options); @@ -279,7 +350,7 @@ namespace Discord.Rest /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains the generic channel - /// associated with the specified ; null if none is found. + /// associated with the specified ; if none is found. /// public Task GetChannelAsync(ulong id, RequestOptions options = null) => GuildHelper.GetChannelAsync(this, Discord, id, options); @@ -291,7 +362,7 @@ namespace Discord.Rest /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains the text channel - /// associated with the specified ; null if none is found. + /// associated with the specified ; if none is found. /// public async Task GetTextChannelAsync(ulong id, RequestOptions options = null) { @@ -320,7 +391,7 @@ namespace Discord.Rest /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains the voice channel associated - /// with the specified ; null if none is found. + /// with the specified ; if none is found. /// public async Task GetVoiceChannelAsync(ulong id, RequestOptions options = null) { @@ -362,7 +433,7 @@ namespace Discord.Rest /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains the voice channel that the - /// AFK users will be moved to after they have idled for too long; null if none is set. + /// AFK users will be moved to after they have idled for too long; if none is set. /// public async Task GetAFKChannelAsync(RequestOptions options = null) { @@ -381,7 +452,7 @@ namespace Discord.Rest /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains the first viewable text - /// channel in this guild; null if none is found. + /// channel in this guild; if none is found. /// public async Task GetDefaultChannelAsync(RequestOptions options = null) { @@ -399,8 +470,9 @@ namespace Discord.Rest /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains the embed channel set - /// within the server's widget settings; null if none is set. + /// within the server's widget settings; if none is set. /// + [Obsolete("This endpoint is deprecated, use GetWidgetChannelAsync instead.")] public async Task GetEmbedChannelAsync(RequestOptions options = null) { var embedId = EmbedChannelId; @@ -410,12 +482,28 @@ namespace Discord.Rest } /// - /// Gets the first viewable text channel in this guild. + /// Gets the widget channel (i.e. the channel set in the guild's widget settings) in this guild. /// /// The options to be used when sending the request. /// - /// A task that represents the asynchronous get operation. The task result contains the first viewable text - /// channel in this guild; null if none is found. + /// A task that represents the asynchronous get operation. The task result contains the widget channel set + /// within the server's widget settings; if none is set. + /// + public async Task GetWidgetChannelAsync(RequestOptions options = null) + { + var widgetChannelId = WidgetChannelId; + if (widgetChannelId.HasValue) + return await GuildHelper.GetChannelAsync(this, Discord, widgetChannelId.Value, options).ConfigureAwait(false); + return null; + } + + /// + /// Gets the text channel where guild notices such as welcome messages and boost events are posted. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains the text channel + /// where guild notices such as welcome messages and boost events are poste; if none is found. /// public async Task GetSystemChannelAsync(RequestOptions options = null) { @@ -427,6 +515,45 @@ namespace Discord.Rest } return null; } + + /// + /// Gets the text channel where Community guilds can display rules and/or guidelines. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains the text channel + /// where Community guilds can display rules and/or guidelines; if none is set. + /// + public async Task GetRulesChannelAsync(RequestOptions options = null) + { + var rulesChannelId = RulesChannelId; + if (rulesChannelId.HasValue) + { + var channel = await GuildHelper.GetChannelAsync(this, Discord, rulesChannelId.Value, options).ConfigureAwait(false); + return channel as RestTextChannel; + } + return null; + } + + /// + /// Gets the text channel channel where admins and moderators of Community guilds receive notices from Discord. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains the text channel channel where + /// admins and moderators of Community guilds receive notices from Discord; if none is set. + /// + public async Task GetPublicUpdatesChannelAsync(RequestOptions options = null) + { + var publicUpdatesChannelId = PublicUpdatesChannelId; + if (publicUpdatesChannelId.HasValue) + { + var channel = await GuildHelper.GetChannelAsync(this, Discord, publicUpdatesChannelId.Value, options).ConfigureAwait(false); + return channel as RestTextChannel; + } + return null; + } + /// /// Creates a new text channel in this guild. /// @@ -458,7 +585,7 @@ namespace Discord.Rest /// The name of the new channel. /// The delegate containing the properties to be applied to the channel upon its creation. /// The options to be used when sending the request. - /// is null. + /// is . /// /// The created voice channel. /// @@ -470,7 +597,7 @@ namespace Discord.Rest /// The name of the new channel. /// The delegate containing the properties to be applied to the channel upon its creation. /// The options to be used when sending the request. - /// is null. + /// is . /// /// The created category channel. /// @@ -521,7 +648,7 @@ namespace Discord.Rest /// /// The snowflake identifier for the role. /// - /// A role that is associated with the specified ; null if none is found. + /// A role that is associated with the specified ; if none is found. /// public RestRole GetRole(ulong id) { @@ -585,7 +712,7 @@ namespace Discord.Rest /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains the guild user - /// associated with the specified ; null if none is found. + /// associated with the specified ; if none is found. /// public Task GetUserAsync(ulong id, RequestOptions options = null) => GuildHelper.GetUserAsync(this, Discord, id, options); @@ -675,7 +802,7 @@ namespace Discord.Rest /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains the webhook with the - /// specified ; null if none is found. + /// specified ; if none is found. /// public Task GetWebhookAsync(ulong id, RequestOptions options = null) => GuildHelper.GetWebhookAsync(this, Discord, id, options); @@ -708,7 +835,7 @@ namespace Discord.Rest public Task CreateEmoteAsync(string name, Image image, Optional> roles = default(Optional>), RequestOptions options = null) => GuildHelper.CreateEmoteAsync(this, Discord, name, image, roles, options); /// - /// is null. + /// is . public Task ModifyEmoteAsync(GuildEmote emote, Action func, RequestOptions options = null) => GuildHelper.ModifyEmoteAsync(this, Discord, emote.Id, func, options); /// @@ -808,6 +935,7 @@ namespace Discord.Rest return null; } /// + [Obsolete("This endpoint is deprecated, use GetWidgetChannelAsync instead.")] async Task IGuild.GetEmbedChannelAsync(CacheMode mode, RequestOptions options) { if (mode == CacheMode.AllowDownload) @@ -816,6 +944,14 @@ namespace Discord.Rest return null; } /// + async Task IGuild.GetWidgetChannelAsync(CacheMode mode, RequestOptions options) + { + if (mode == CacheMode.AllowDownload) + return await GetWidgetChannelAsync(options).ConfigureAwait(false); + else + return null; + } + /// async Task IGuild.GetSystemChannelAsync(CacheMode mode, RequestOptions options) { if (mode == CacheMode.AllowDownload) @@ -824,6 +960,22 @@ namespace Discord.Rest return null; } /// + async Task IGuild.GetRulesChannelAsync(CacheMode mode, RequestOptions options) + { + if (mode == CacheMode.AllowDownload) + return await GetRulesChannelAsync(options).ConfigureAwait(false); + else + return null; + } + /// + async Task IGuild.GetPublicUpdatesChannelAsync(CacheMode mode, RequestOptions options) + { + if (mode == CacheMode.AllowDownload) + return await GetPublicUpdatesChannelAsync(options).ConfigureAwait(false); + else + return null; + } + /// async Task IGuild.CreateTextChannelAsync(string name, Action func, RequestOptions options) => await CreateTextChannelAsync(name, func, options).ConfigureAwait(false); /// diff --git a/src/Discord.Net.Rest/Entities/Guilds/RestGuildWidget.cs b/src/Discord.Net.Rest/Entities/Guilds/RestGuildWidget.cs new file mode 100644 index 000000000..065739c57 --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Guilds/RestGuildWidget.cs @@ -0,0 +1,25 @@ +using System.Diagnostics; +using Model = Discord.API.GuildWidget; + +namespace Discord.Rest +{ + [DebuggerDisplay(@"{DebuggerDisplay,nq}")] + public struct RestGuildWidget + { + public bool IsEnabled { get; private set; } + public ulong? ChannelId { get; private set; } + + internal RestGuildWidget(bool isEnabled, ulong? channelId) + { + ChannelId = channelId; + IsEnabled = isEnabled; + } + internal static RestGuildWidget Create(Model model) + { + return new RestGuildWidget(model.Enabled, model.ChannelId); + } + + public override string ToString() => ChannelId?.ToString() ?? "Unknown"; + private string DebuggerDisplay => $"{ChannelId} ({(IsEnabled ? "Enabled" : "Disabled")})"; + } +} diff --git a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs index a08ba06ef..2365ec6a6 100644 --- a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs +++ b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs @@ -48,6 +48,8 @@ namespace Discord.WebSocket /// public bool IsEmbeddable { get; private set; } /// + public bool IsWidgetEnabled { get; private set; } + /// public VerificationLevel VerificationLevel { get; private set; } /// public MfaLevel MfaLevel { get; private set; } @@ -83,7 +85,10 @@ namespace Discord.WebSocket internal ulong? AFKChannelId { get; private set; } internal ulong? EmbedChannelId { get; private set; } + internal ulong? WidgetChannelId { get; private set; } internal ulong? SystemChannelId { get; private set; } + internal ulong? RulesChannelId { get; private set; } + internal ulong? PublicUpdatesChannelId { get; private set; } /// public ulong OwnerId { get; private set; } /// Gets the user that owns this guild. @@ -95,6 +100,8 @@ namespace Discord.WebSocket /// public string SplashId { get; private set; } /// + public string DiscoverySplashId { get; private set; } + /// public PremiumTier PremiumTier { get; private set; } /// public string BannerId { get; private set; } @@ -108,6 +115,12 @@ namespace Discord.WebSocket public int PremiumSubscriptionCount { get; private set; } /// public string PreferredLocale { get; private set; } + /// + public int? MaxPresences { get; private set; } + /// + public int? MaxMembers { get; private set; } + /// + public int? MaxVideoChannelUsers { get; private set; } /// public CultureInfo PreferredCulture { get; private set; } @@ -119,6 +132,8 @@ namespace Discord.WebSocket /// public string SplashUrl => CDN.GetGuildSplashUrl(Id, SplashId); /// + public string DiscoverySplashUrl => CDN.GetGuildDiscoverySplashUrl(Id, DiscoverySplashId); + /// public string BannerUrl => CDN.GetGuildBannerUrl(Id, BannerId); /// Indicates whether the client has all the members downloaded to the local guild cache. public bool HasAllMembers => MemberCount == DownloadedMemberCount;// _downloaderPromise.Task.IsCompleted; @@ -152,7 +167,7 @@ namespace Discord.WebSocket /// /// /// A that the AFK users will be moved to after they have idled for too - /// long; null if none is set. + /// long; if none is set. /// public SocketVoiceChannel AFKChannel { @@ -166,8 +181,9 @@ namespace Discord.WebSocket /// Gets the embed channel (i.e. the channel set in the guild's widget settings) in this guild. /// /// - /// A channel set within the server's widget settings; null if none is set. + /// A channel set within the server's widget settings; if none is set. /// + [Obsolete("This property is deprecated, use WidgetChannel instead.")] public SocketGuildChannel EmbedChannel { get @@ -177,10 +193,24 @@ namespace Discord.WebSocket } } /// + /// Gets the widget channel (i.e. the channel set in the guild's widget settings) in this guild. + /// + /// + /// A channel set within the server's widget settings; if none is set. + /// + public SocketGuildChannel WidgetChannel + { + get + { + var id = WidgetChannelId; + return id.HasValue ? GetChannel(id.Value) : null; + } + } + /// /// Gets the system channel where randomized welcome messages are sent in this guild. /// /// - /// A text channel where randomized welcome messages will be sent to; null if none is set. + /// A text channel where randomized welcome messages will be sent to; if none is set. /// public SocketTextChannel SystemChannel { @@ -191,6 +221,36 @@ namespace Discord.WebSocket } } /// + /// Gets the channel with the guild rules. + /// + /// + /// A text channel with the guild rules; if none is set. + /// + public SocketTextChannel RulesChannel + { + get + { + var id = RulesChannelId; + return id.HasValue ? GetTextChannel(id.Value) : null; + } + } + /// + /// Gets the channel where admins and moderators of Community guilds receive + /// notices from Discord. + /// + /// + /// A text channel where admins and moderators of Community guilds receive + /// notices from Discord; if none is set. + /// + public SocketTextChannel PublicUpdatesChannel + { + get + { + var id = PublicUpdatesChannelId; + return id.HasValue ? GetTextChannel(id.Value) : null; + } + } + /// /// Gets a collection of all text channels in this guild. /// /// @@ -360,15 +420,24 @@ namespace Discord.WebSocket internal void Update(ClientState state, Model model) { AFKChannelId = model.AFKChannelId; - EmbedChannelId = model.EmbedChannelId; + if (model.EmbedChannelId.IsSpecified) + EmbedChannelId = model.EmbedChannelId.Value; + if (model.WidgetChannelId.IsSpecified) + WidgetChannelId = model.WidgetChannelId.Value; SystemChannelId = model.SystemChannelId; + RulesChannelId = model.RulesChannelId; + PublicUpdatesChannelId = model.PublicUpdatesChannelId; AFKTimeout = model.AFKTimeout; - IsEmbeddable = model.EmbedEnabled; + if (model.EmbedEnabled.IsSpecified) + IsEmbeddable = model.EmbedEnabled.Value; + if (model.WidgetEnabled.IsSpecified) + IsWidgetEnabled = model.WidgetEnabled.Value; IconId = model.Icon; Name = model.Name; OwnerId = model.OwnerId; VoiceRegionId = model.Region; SplashId = model.Splash; + DiscoverySplashId = model.DiscoverySplash; VerificationLevel = model.VerificationLevel; MfaLevel = model.MfaLevel; DefaultMessageNotifications = model.DefaultMessageNotifications; @@ -379,7 +448,14 @@ namespace Discord.WebSocket BannerId = model.Banner; SystemChannelFlags = model.SystemChannelFlags; Description = model.Description; - PremiumSubscriptionCount = model.PremiumSubscriptionCount.GetValueOrDefault(); + if (model.PremiumSubscriptionCount.IsSpecified) + PremiumSubscriptionCount = model.PremiumSubscriptionCount.Value; + if (model.MaxPresences.IsSpecified) + MaxPresences = model.MaxPresences.Value ?? 25000; + if (model.MaxMembers.IsSpecified) + MaxMembers = model.MaxMembers.Value; + if (model.MaxVideoChannelUsers.IsSpecified) + MaxVideoChannelUsers = model.MaxVideoChannelUsers.Value; PreferredLocale = model.PreferredLocale; PreferredCulture = PreferredLocale == null ? null : new CultureInfo(PreferredLocale); @@ -447,15 +523,20 @@ namespace Discord.WebSocket => GuildHelper.DeleteAsync(this, Discord, options); /// - /// is null. + /// is . public Task ModifyAsync(Action func, RequestOptions options = null) => GuildHelper.ModifyAsync(this, Discord, func, options); /// - /// is null. + /// is . + [Obsolete("This endpoint is deprecated, use ModifyWidgetAsync instead.")] public Task ModifyEmbedAsync(Action func, RequestOptions options = null) => GuildHelper.ModifyEmbedAsync(this, Discord, func, options); /// + /// is . + public Task ModifyWidgetAsync(Action func, RequestOptions options = null) + => GuildHelper.ModifyWidgetAsync(this, Discord, func, options); + /// public Task ReorderChannelsAsync(IEnumerable args, RequestOptions options = null) => GuildHelper.ReorderChannelsAsync(this, Discord, args, options); /// @@ -485,7 +566,7 @@ namespace Discord.WebSocket /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains a ban object, which - /// contains the user information and the reason for the ban; null if the ban entry cannot be found. + /// contains the user information and the reason for the ban; if the ban entry cannot be found. /// public Task GetBanAsync(IUser user, RequestOptions options = null) => GuildHelper.GetBanAsync(this, Discord, user.Id, options); @@ -496,7 +577,7 @@ namespace Discord.WebSocket /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains a ban object, which - /// contains the user information and the reason for the ban; null if the ban entry cannot be found. + /// contains the user information and the reason for the ban; if the ban entry cannot be found. /// public Task GetBanAsync(ulong userId, RequestOptions options = null) => GuildHelper.GetBanAsync(this, Discord, userId, options); @@ -521,7 +602,7 @@ namespace Discord.WebSocket /// /// The snowflake identifier for the channel. /// - /// A generic channel associated with the specified ; null if none is found. + /// A generic channel associated with the specified ; if none is found. /// public SocketGuildChannel GetChannel(ulong id) { @@ -535,7 +616,7 @@ namespace Discord.WebSocket /// /// The snowflake identifier for the text channel. /// - /// A text channel associated with the specified ; null if none is found. + /// A text channel associated with the specified ; if none is found. /// public SocketTextChannel GetTextChannel(ulong id) => GetChannel(id) as SocketTextChannel; @@ -544,7 +625,7 @@ namespace Discord.WebSocket /// /// The snowflake identifier for the voice channel. /// - /// A voice channel associated with the specified ; null if none is found. + /// A voice channel associated with the specified ; if none is found. /// public SocketVoiceChannel GetVoiceChannel(ulong id) => GetChannel(id) as SocketVoiceChannel; @@ -553,7 +634,7 @@ namespace Discord.WebSocket /// /// The snowflake identifier for the category channel. /// - /// A category channel associated with the specified ; null if none is found. + /// A category channel associated with the specified ; if none is found. /// public SocketCategoryChannel GetCategoryChannel(ulong id) => GetChannel(id) as SocketCategoryChannel; @@ -589,7 +670,7 @@ namespace Discord.WebSocket /// The new name for the voice channel. /// The delegate containing the properties to be applied to the channel upon its creation. /// The options to be used when sending the request. - /// is null. + /// is . /// /// A task that represents the asynchronous creation operation. The task result contains the newly created /// voice channel. @@ -602,7 +683,7 @@ namespace Discord.WebSocket /// The new name for the category. /// The delegate containing the properties to be applied to the channel upon its creation. /// The options to be used when sending the request. - /// is null. + /// is . /// /// A task that represents the asynchronous creation operation. The task result contains the newly created /// category channel. @@ -666,7 +747,7 @@ namespace Discord.WebSocket /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains the partial metadata of - /// the vanity invite found within this guild; null if none is found. + /// the vanity invite found within this guild; if none is found. /// public Task GetVanityInviteAsync(RequestOptions options = null) => GuildHelper.GetVanityInviteAsync(this, Discord, options); @@ -677,7 +758,7 @@ namespace Discord.WebSocket /// /// The snowflake identifier for the role. /// - /// A role that is associated with the specified ; null if none is found. + /// A role that is associated with the specified ; if none is found. /// public SocketRole GetRole(ulong id) { @@ -699,7 +780,7 @@ namespace Discord.WebSocket /// Whether the role is separated from others on the sidebar. /// Whether the role can be mentioned. /// The options to be used when sending the request. - /// is null. + /// is . /// /// A task that represents the asynchronous creation operation. The task result contains the newly created /// role. @@ -731,13 +812,13 @@ namespace Discord.WebSocket /// /// This method retrieves a user found within this guild. /// - /// This may return null in the WebSocket implementation due to incomplete user collection in + /// This may return in the WebSocket implementation due to incomplete user collection in /// large guilds. /// /// /// The snowflake identifier of the user. /// - /// A guild user associated with the specified ; null if none is found. + /// A guild user associated with the specified ; if none is found. /// public SocketGuildUser GetUser(ulong id) { @@ -891,7 +972,7 @@ namespace Discord.WebSocket /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains the webhook with the - /// specified ; null if none is found. + /// specified ; if none is found. /// public Task GetWebhookAsync(ulong id, RequestOptions options = null) => GuildHelper.GetWebhookAsync(this, Discord, id, options); @@ -914,7 +995,7 @@ namespace Discord.WebSocket public Task CreateEmoteAsync(string name, Image image, Optional> roles = default(Optional>), RequestOptions options = null) => GuildHelper.CreateEmoteAsync(this, Discord, name, image, roles, options); /// - /// is null. + /// is . public Task ModifyEmoteAsync(GuildEmote emote, Action func, RequestOptions options = null) => GuildHelper.ModifyEmoteAsync(this, Discord, emote.Id, func, options); /// @@ -1133,11 +1214,21 @@ namespace Discord.WebSocket /// ulong? IGuild.EmbedChannelId => EmbedChannelId; /// + ulong? IGuild.WidgetChannelId => WidgetChannelId; + /// ulong? IGuild.SystemChannelId => SystemChannelId; /// + ulong? IGuild.RulesChannelId => RulesChannelId; + /// + ulong? IGuild.PublicUpdatesChannelId => PublicUpdatesChannelId; + /// IRole IGuild.EveryoneRole => EveryoneRole; /// IReadOnlyCollection IGuild.Roles => Roles; + /// + int? IGuild.ApproximateMemberCount => null; + /// + int? IGuild.ApproximatePresenceCount => null; /// async Task> IGuild.GetBansAsync(RequestOptions options) @@ -1177,12 +1268,22 @@ namespace Discord.WebSocket Task IGuild.GetDefaultChannelAsync(CacheMode mode, RequestOptions options) => Task.FromResult(DefaultChannel); /// + [Obsolete("This method is deprecated, use GetWidgetChannelAsync instead.")] Task IGuild.GetEmbedChannelAsync(CacheMode mode, RequestOptions options) => Task.FromResult(EmbedChannel); /// + Task IGuild.GetWidgetChannelAsync(CacheMode mode, RequestOptions options) + => Task.FromResult(WidgetChannel); + /// Task IGuild.GetSystemChannelAsync(CacheMode mode, RequestOptions options) => Task.FromResult(SystemChannel); /// + Task IGuild.GetRulesChannelAsync(CacheMode mode, RequestOptions options) + => Task.FromResult(RulesChannel); + /// + Task IGuild.GetPublicUpdatesChannelAsync(CacheMode mode, RequestOptions options) + => Task.FromResult(PublicUpdatesChannel); + /// async Task IGuild.CreateTextChannelAsync(string name, Action func, RequestOptions options) => await CreateTextChannelAsync(name, func, options).ConfigureAwait(false); /// From 97e71cd5e5e825e6f0a63eb3bf5a0cd1690fd652 Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 18 Nov 2020 14:52:00 -0300 Subject: [PATCH 052/212] fix: Revert PremiumSubscriptionCount type (#1686) --- src/Discord.Net.Rest/API/Common/Guild.cs | 2 +- src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs | 3 +-- src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs | 3 +-- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/Discord.Net.Rest/API/Common/Guild.cs b/src/Discord.Net.Rest/API/Common/Guild.cs index 414929a7b..46075ce4d 100644 --- a/src/Discord.Net.Rest/API/Common/Guild.cs +++ b/src/Discord.Net.Rest/API/Common/Guild.cs @@ -69,7 +69,7 @@ namespace Discord.API [JsonProperty("max_members")] public Optional MaxMembers { get; set; } [JsonProperty("premium_subscription_count")] - public Optional PremiumSubscriptionCount { get; set; } + public int? PremiumSubscriptionCount { get; set; } [JsonProperty("preferred_locale")] public string PreferredLocale { get; set; } [JsonProperty("public_updates_channel_id")] diff --git a/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs b/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs index c1dd39afe..c74e128a8 100644 --- a/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs +++ b/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs @@ -161,8 +161,7 @@ namespace Discord.Rest BannerId = model.Banner; SystemChannelFlags = model.SystemChannelFlags; Description = model.Description; - if (model.PremiumSubscriptionCount.IsSpecified) - PremiumSubscriptionCount = model.PremiumSubscriptionCount.Value; + PremiumSubscriptionCount = model.PremiumSubscriptionCount.GetValueOrDefault(); if (model.MaxPresences.IsSpecified) MaxPresences = model.MaxPresences.Value ?? 25000; if (model.MaxMembers.IsSpecified) diff --git a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs index 2365ec6a6..ad58a735e 100644 --- a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs +++ b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs @@ -448,8 +448,7 @@ namespace Discord.WebSocket BannerId = model.Banner; SystemChannelFlags = model.SystemChannelFlags; Description = model.Description; - if (model.PremiumSubscriptionCount.IsSpecified) - PremiumSubscriptionCount = model.PremiumSubscriptionCount.Value; + PremiumSubscriptionCount = model.PremiumSubscriptionCount.GetValueOrDefault(); if (model.MaxPresences.IsSpecified) MaxPresences = model.MaxPresences.Value ?? 25000; if (model.MaxMembers.IsSpecified) From ec673e186317cd7449eabf2adf29dc78a5e22b90 Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 18 Nov 2020 23:40:09 -0300 Subject: [PATCH 053/212] feature: Implement gateway ratelimit (#1537) * Implement gateway ratelimit * Remove unused code * Share WebSocketRequestQueue between clients * Add global limit and a way to change gateway limits * Refactoring variable to fit lib standards * Update xml docs * Update xml docs * Move warning to remarks * Remove specific RequestQueue for WebSocket and other changes The only account limit is for identify that is dealt in a different way (exclusive semaphore), so websocket queues can be shared with REST and don't need to be shared between clients anymore. Also added the ratelimit for presence updates. * Add summary to IdentifySemaphoreName * Fix spacing * Add max_concurrency and other fixes - Add session_start_limit to GetBotGatewayResponse - Add GetBotGatewayAsync to IDiscordClient - Add master/slave semaphores to enable concurrency - Not store semaphore name as static - Clone GatewayLimits when cloning the Config * Add missing RequestQueue parameter and wrong nullable * Add RequeueQueue paramater to Webhook * Better xml documentation * Remove GatewayLimits class and other changes - Remove GatewayLimits - Transfer a few properties to DiscordSocketConfig - Remove unnecessary usings * Remove unnecessary using and wording * Remove more unnecessary usings * Change named Semaphores to SemaphoreSlim * Remove unused using * Update branch * Fix merge conflicts and update to new ratelimit * Fixing merge, ignore limit for heartbeat, and dispose * Missed one place and better xml docs. * Wait identify before opening the connection * Only request identify ticket when needed * Move identify control to sharded client * Better description for IdentifyMaxConcurrency * Add lock to InvalidSession --- .../Entities/Gateway/BotGateway.cs | 22 ++++ .../Entities/Gateway/SessionStartLimit.cs | 38 ++++++ src/Discord.Net.Core/IDiscordClient.cs | 10 ++ src/Discord.Net.Core/RequestOptions.cs | 1 + .../API/Common/SessionStartLimit.cs | 16 +++ .../API/Rest/GetBotGatewayResponse.cs | 4 +- src/Discord.Net.Rest/BaseDiscordClient.cs | 4 + src/Discord.Net.Rest/ClientHelper.cs | 17 +++ src/Discord.Net.Rest/DiscordRestClient.cs | 8 +- .../Net/Queue/GatewayBucket.cs | 53 ++++++++ .../Net/Queue/RequestQueue.cs | 38 +++++- .../Net/Queue/RequestQueueBucket.cs | 118 ++++++++++++++++-- .../Net/Queue/Requests/WebSocketRequest.cs | 6 +- .../DiscordShardedClient.cs | 50 ++++++-- .../DiscordSocketApiClient.cs | 11 +- .../DiscordSocketClient.cs | 33 +++-- .../DiscordSocketConfig.cs | 8 ++ 17 files changed, 397 insertions(+), 40 deletions(-) create mode 100644 src/Discord.Net.Core/Entities/Gateway/BotGateway.cs create mode 100644 src/Discord.Net.Core/Entities/Gateway/SessionStartLimit.cs create mode 100644 src/Discord.Net.Rest/API/Common/SessionStartLimit.cs create mode 100644 src/Discord.Net.Rest/Net/Queue/GatewayBucket.cs diff --git a/src/Discord.Net.Core/Entities/Gateway/BotGateway.cs b/src/Discord.Net.Core/Entities/Gateway/BotGateway.cs new file mode 100644 index 000000000..c9be0ac1f --- /dev/null +++ b/src/Discord.Net.Core/Entities/Gateway/BotGateway.cs @@ -0,0 +1,22 @@ +namespace Discord +{ + /// + /// Stores the gateway information related to the current bot. + /// + public class BotGateway + { + /// + /// Gets the WSS URL that can be used for connecting to the gateway. + /// + public string Url { get; internal set; } + /// + /// Gets the recommended number of shards to use when connecting. + /// + public int Shards { get; internal set; } + /// + /// Gets the that contains the information + /// about the current session start limit. + /// + public SessionStartLimit SessionStartLimit { get; internal set; } + } +} diff --git a/src/Discord.Net.Core/Entities/Gateway/SessionStartLimit.cs b/src/Discord.Net.Core/Entities/Gateway/SessionStartLimit.cs new file mode 100644 index 000000000..74ae96af1 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Gateway/SessionStartLimit.cs @@ -0,0 +1,38 @@ +namespace Discord +{ + /// + /// Stores the information related to the gateway identify request. + /// + public class SessionStartLimit + { + /// + /// Gets the total number of session starts the current user is allowed. + /// + /// + /// The maximum amount of session starts the current user is allowed. + /// + public int Total { get; internal set; } + /// + /// Gets the remaining number of session starts the current user is allowed. + /// + /// + /// The remaining amount of session starts the current user is allowed. + /// + public int Remaining { get; internal set; } + /// + /// Gets the number of milliseconds after which the limit resets. + /// + /// + /// The milliseconds until the limit resets back to the . + /// + public int ResetAfter { get; internal set; } + /// + /// Gets the maximum concurrent identify requests in a time window. + /// + /// + /// The maximum concurrent identify requests in a time window, + /// limited to the same rate limit key. + /// + public int MaxConcurrency { get; internal set; } + } +} diff --git a/src/Discord.Net.Core/IDiscordClient.cs b/src/Discord.Net.Core/IDiscordClient.cs index f972cd71d..d7d6d2856 100644 --- a/src/Discord.Net.Core/IDiscordClient.cs +++ b/src/Discord.Net.Core/IDiscordClient.cs @@ -274,5 +274,15 @@ namespace Discord /// that represents the number of shards that should be used with this account. /// Task GetRecommendedShardCountAsync(RequestOptions options = null); + + /// + /// Gets the gateway information related to the bot. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains a + /// that represents the gateway information related to the bot. + /// + Task GetBotGatewayAsync(RequestOptions options = null); } } diff --git a/src/Discord.Net.Core/RequestOptions.cs b/src/Discord.Net.Core/RequestOptions.cs index ad0a4e33f..dbb240273 100644 --- a/src/Discord.Net.Core/RequestOptions.cs +++ b/src/Discord.Net.Core/RequestOptions.cs @@ -61,6 +61,7 @@ namespace Discord internal BucketId BucketId { get; set; } internal bool IsClientBucket { get; set; } internal bool IsReactionBucket { get; set; } + internal bool IsGatewayBucket { get; set; } internal static RequestOptions CreateOrClone(RequestOptions options) { diff --git a/src/Discord.Net.Rest/API/Common/SessionStartLimit.cs b/src/Discord.Net.Rest/API/Common/SessionStartLimit.cs new file mode 100644 index 000000000..29d5ddf85 --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/SessionStartLimit.cs @@ -0,0 +1,16 @@ +using Newtonsoft.Json; + +namespace Discord.API.Rest +{ + internal class SessionStartLimit + { + [JsonProperty("total")] + public int Total { get; set; } + [JsonProperty("remaining")] + public int Remaining { get; set; } + [JsonProperty("reset_after")] + public int ResetAfter { get; set; } + [JsonProperty("max_concurrency")] + public int MaxConcurrency { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Rest/GetBotGatewayResponse.cs b/src/Discord.Net.Rest/API/Rest/GetBotGatewayResponse.cs index 111fcf3db..d3285051b 100644 --- a/src/Discord.Net.Rest/API/Rest/GetBotGatewayResponse.cs +++ b/src/Discord.Net.Rest/API/Rest/GetBotGatewayResponse.cs @@ -1,4 +1,4 @@ -#pragma warning disable CS1591 +#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest @@ -9,5 +9,7 @@ namespace Discord.API.Rest public string Url { get; set; } [JsonProperty("shards")] public int Shards { get; set; } + [JsonProperty("session_start_limit")] + public SessionStartLimit SessionStartLimit { get; set; } } } diff --git a/src/Discord.Net.Rest/BaseDiscordClient.cs b/src/Discord.Net.Rest/BaseDiscordClient.cs index b641fa1c3..68589a4f1 100644 --- a/src/Discord.Net.Rest/BaseDiscordClient.cs +++ b/src/Discord.Net.Rest/BaseDiscordClient.cs @@ -152,6 +152,10 @@ namespace Discord.Rest public Task GetRecommendedShardCountAsync(RequestOptions options = null) => ClientHelper.GetRecommendShardCountAsync(this, options); + /// + public Task GetBotGatewayAsync(RequestOptions options = null) + => ClientHelper.GetBotGatewayAsync(this, options); + //IDiscordClient /// ConnectionState IDiscordClient.ConnectionState => ConnectionState.Disconnected; diff --git a/src/Discord.Net.Rest/ClientHelper.cs b/src/Discord.Net.Rest/ClientHelper.cs index 6ebdbcacb..8910e999a 100644 --- a/src/Discord.Net.Rest/ClientHelper.cs +++ b/src/Discord.Net.Rest/ClientHelper.cs @@ -184,5 +184,22 @@ namespace Discord.Rest var response = await client.ApiClient.GetBotGatewayAsync(options).ConfigureAwait(false); return response.Shards; } + + public static async Task GetBotGatewayAsync(BaseDiscordClient client, RequestOptions options) + { + var response = await client.ApiClient.GetBotGatewayAsync(options).ConfigureAwait(false); + return new BotGateway + { + Url = response.Url, + Shards = response.Shards, + SessionStartLimit = new SessionStartLimit + { + Total = response.SessionStartLimit.Total, + Remaining = response.SessionStartLimit.Remaining, + ResetAfter = response.SessionStartLimit.ResetAfter, + MaxConcurrency = response.SessionStartLimit.MaxConcurrency + } + }; + } } } diff --git a/src/Discord.Net.Rest/DiscordRestClient.cs b/src/Discord.Net.Rest/DiscordRestClient.cs index bef4e6b2a..48c40fdfa 100644 --- a/src/Discord.Net.Rest/DiscordRestClient.cs +++ b/src/Discord.Net.Rest/DiscordRestClient.cs @@ -29,10 +29,10 @@ namespace Discord.Rest internal DiscordRestClient(DiscordRestConfig config, API.DiscordRestApiClient api) : base(config, api) { } private static API.DiscordRestApiClient CreateApiClient(DiscordRestConfig config) - => new API.DiscordRestApiClient(config.RestClientProvider, - DiscordRestConfig.UserAgent, - rateLimitPrecision: config.RateLimitPrecision, - useSystemClock: config.UseSystemClock); + => new API.DiscordRestApiClient(config.RestClientProvider, + DiscordRestConfig.UserAgent, + rateLimitPrecision: config.RateLimitPrecision, + useSystemClock: config.UseSystemClock); internal override void Dispose(bool disposing) { diff --git a/src/Discord.Net.Rest/Net/Queue/GatewayBucket.cs b/src/Discord.Net.Rest/Net/Queue/GatewayBucket.cs new file mode 100644 index 000000000..aa849018a --- /dev/null +++ b/src/Discord.Net.Rest/Net/Queue/GatewayBucket.cs @@ -0,0 +1,53 @@ +using System.Collections.Immutable; + +namespace Discord.Net.Queue +{ + public enum GatewayBucketType + { + Unbucketed = 0, + Identify = 1, + PresenceUpdate = 2, + } + internal struct GatewayBucket + { + private static readonly ImmutableDictionary DefsByType; + private static readonly ImmutableDictionary DefsById; + + static GatewayBucket() + { + var buckets = new[] + { + // Limit is 120/60s, but 3 will be reserved for heartbeats (2 for possible heartbeats in the same timeframe and a possible failure) + new GatewayBucket(GatewayBucketType.Unbucketed, BucketId.Create(null, "", null), 117, 60), + new GatewayBucket(GatewayBucketType.Identify, BucketId.Create(null, "", null), 1, 5), + new GatewayBucket(GatewayBucketType.PresenceUpdate, BucketId.Create(null, "", null), 5, 60), + }; + + var builder = ImmutableDictionary.CreateBuilder(); + foreach (var bucket in buckets) + builder.Add(bucket.Type, bucket); + DefsByType = builder.ToImmutable(); + + var builder2 = ImmutableDictionary.CreateBuilder(); + foreach (var bucket in buckets) + builder2.Add(bucket.Id, bucket); + DefsById = builder2.ToImmutable(); + } + + public static GatewayBucket Get(GatewayBucketType type) => DefsByType[type]; + public static GatewayBucket Get(BucketId id) => DefsById[id]; + + public GatewayBucketType Type { get; } + public BucketId Id { get; } + public int WindowCount { get; set; } + public int WindowSeconds { get; set; } + + public GatewayBucket(GatewayBucketType type, BucketId id, int count, int seconds) + { + Type = type; + Id = id; + WindowCount = count; + WindowSeconds = seconds; + } + } +} diff --git a/src/Discord.Net.Rest/Net/Queue/RequestQueue.cs b/src/Discord.Net.Rest/Net/Queue/RequestQueue.cs index 127a48cf3..2bf8e20b0 100644 --- a/src/Discord.Net.Rest/Net/Queue/RequestQueue.cs +++ b/src/Discord.Net.Rest/Net/Queue/RequestQueue.cs @@ -89,9 +89,18 @@ namespace Discord.Net.Queue } public async Task SendAsync(WebSocketRequest request) { - //TODO: Re-impl websocket buckets - request.CancelToken = _requestCancelToken; - await request.SendAsync().ConfigureAwait(false); + CancellationTokenSource createdTokenSource = null; + if (request.Options.CancelToken.CanBeCanceled) + { + createdTokenSource = CancellationTokenSource.CreateLinkedTokenSource(_requestCancelToken, request.Options.CancelToken); + request.Options.CancelToken = createdTokenSource.Token; + } + else + request.Options.CancelToken = _requestCancelToken; + + var bucket = GetOrCreateBucket(request.Options, request); + await bucket.SendAsync(request).ConfigureAwait(false); + createdTokenSource?.Dispose(); } internal async Task EnterGlobalAsync(int id, RestRequest request) @@ -109,8 +118,23 @@ namespace Discord.Net.Queue { _waitUntil = DateTimeOffset.UtcNow.AddMilliseconds(info.RetryAfter.Value + (info.Lag?.TotalMilliseconds ?? 0.0)); } + internal async Task EnterGlobalAsync(int id, WebSocketRequest request) + { + //If this is a global request (unbucketed), it'll be dealt in EnterAsync + var requestBucket = GatewayBucket.Get(request.Options.BucketId); + if (requestBucket.Type == GatewayBucketType.Unbucketed) + return; + + //It's not a global request, so need to remove one from global (per-session) + var globalBucketType = GatewayBucket.Get(GatewayBucketType.Unbucketed); + var options = RequestOptions.CreateOrClone(request.Options); + options.BucketId = globalBucketType.Id; + var globalRequest = new WebSocketRequest(null, null, false, false, options); + var globalBucket = GetOrCreateBucket(options, globalRequest); + await globalBucket.TriggerAsync(id, globalRequest); + } - private RequestBucket GetOrCreateBucket(RequestOptions options, RestRequest request) + private RequestBucket GetOrCreateBucket(RequestOptions options, IRequest request) { var bucketId = options.BucketId; object obj = _buckets.GetOrAdd(bucketId, x => new RequestBucket(this, request, x)); @@ -137,6 +161,12 @@ namespace Discord.Net.Queue return (null, null); } + public void ClearGatewayBuckets() + { + foreach (var gwBucket in (GatewayBucketType[])Enum.GetValues(typeof(GatewayBucketType))) + _buckets.TryRemove(GatewayBucket.Get(gwBucket).Id, out _); + } + private async Task RunCleanup() { try diff --git a/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs b/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs index edd55f158..3fb45e55d 100644 --- a/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs +++ b/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs @@ -25,7 +25,7 @@ namespace Discord.Net.Queue public int WindowCount { get; private set; } public DateTimeOffset LastAttemptAt { get; private set; } - public RequestBucket(RequestQueue queue, RestRequest request, BucketId id) + public RequestBucket(RequestQueue queue, IRequest request, BucketId id) { _queue = queue; Id = id; @@ -33,7 +33,9 @@ namespace Discord.Net.Queue _lock = new object(); if (request.Options.IsClientBucket) - WindowCount = ClientBucket.Get(Id).WindowCount; + WindowCount = ClientBucket.Get(request.Options.BucketId).WindowCount; + else if (request.Options.IsGatewayBucket) + WindowCount = GatewayBucket.Get(request.Options.BucketId).WindowCount; else WindowCount = 1; //Only allow one request until we get a header back _semaphore = WindowCount; @@ -154,8 +156,68 @@ namespace Discord.Net.Queue } } } + public async Task SendAsync(WebSocketRequest request) + { + int id = Interlocked.Increment(ref nextId); +#if DEBUG_LIMITS + Debug.WriteLine($"[{id}] Start"); +#endif + LastAttemptAt = DateTimeOffset.UtcNow; + while (true) + { + await _queue.EnterGlobalAsync(id, request).ConfigureAwait(false); + await EnterAsync(id, request).ConfigureAwait(false); - private async Task EnterAsync(int id, RestRequest request) +#if DEBUG_LIMITS + Debug.WriteLine($"[{id}] Sending..."); +#endif + try + { + await request.SendAsync().ConfigureAwait(false); + return; + } + catch (TimeoutException) + { +#if DEBUG_LIMITS + Debug.WriteLine($"[{id}] Timeout"); +#endif + if ((request.Options.RetryMode & RetryMode.RetryTimeouts) == 0) + throw; + + await Task.Delay(500).ConfigureAwait(false); + continue; //Retry + } + /*catch (Exception) + { +#if DEBUG_LIMITS + Debug.WriteLine($"[{id}] Error"); +#endif + if ((request.Options.RetryMode & RetryMode.RetryErrors) == 0) + throw; + + await Task.Delay(500); + continue; //Retry + }*/ + finally + { + UpdateRateLimit(id, request, default(RateLimitInfo), false); +#if DEBUG_LIMITS + Debug.WriteLine($"[{id}] Stop"); +#endif + } + } + } + + internal async Task TriggerAsync(int id, IRequest request) + { +#if DEBUG_LIMITS + Debug.WriteLine($"[{id}] Trigger Bucket"); +#endif + await EnterAsync(id, request).ConfigureAwait(false); + UpdateRateLimit(id, request, default(RateLimitInfo), false); + } + + private async Task EnterAsync(int id, IRequest request) { int windowCount; DateTimeOffset? resetAt; @@ -186,8 +248,31 @@ namespace Discord.Net.Queue { if (!isRateLimited) { + bool ignoreRatelimit = false; isRateLimited = true; - await _queue.RaiseRateLimitTriggered(Id, null, $"{request.Method} {request.Endpoint}").ConfigureAwait(false); + switch (request) + { + case RestRequest restRequest: + await _queue.RaiseRateLimitTriggered(Id, null, $"{restRequest.Method} {restRequest.Endpoint}").ConfigureAwait(false); + break; + case WebSocketRequest webSocketRequest: + if (webSocketRequest.IgnoreLimit) + { + ignoreRatelimit = true; + break; + } + await _queue.RaiseRateLimitTriggered(Id, null, Id.Endpoint).ConfigureAwait(false); + break; + default: + throw new InvalidOperationException("Unknown request type"); + } + if (ignoreRatelimit) + { +#if DEBUG_LIMITS + Debug.WriteLine($"[{id}] Ignoring ratelimit"); +#endif + break; + } } ThrowRetryLimit(request); @@ -223,7 +308,7 @@ namespace Discord.Net.Queue } } - private void UpdateRateLimit(int id, RestRequest request, RateLimitInfo info, bool is429, bool redirected = false) + private void UpdateRateLimit(int id, IRequest request, RateLimitInfo info, bool is429, bool redirected = false) { if (WindowCount == 0) return; @@ -316,6 +401,23 @@ namespace Discord.Net.Queue Debug.WriteLine($"[{id}] Client Bucket ({ClientBucket.Get(Id).WindowSeconds * 1000} ms)"); #endif } + else if (request.Options.IsGatewayBucket && request.Options.BucketId != null) + { + resetTick = DateTimeOffset.UtcNow.AddSeconds(GatewayBucket.Get(request.Options.BucketId).WindowSeconds); +#if DEBUG_LIMITS + Debug.WriteLine($"[{id}] Gateway Bucket ({GatewayBucket.Get(request.Options.BucketId).WindowSeconds * 1000} ms)"); +#endif + if (!hasQueuedReset) + { + _resetTick = resetTick; + LastAttemptAt = resetTick.Value; +#if DEBUG_LIMITS + Debug.WriteLine($"[{id}] Reset in {(int)Math.Ceiling((resetTick - DateTimeOffset.UtcNow).Value.TotalMilliseconds)} ms"); +#endif + var _ = QueueReset(id, (int)Math.Ceiling((_resetTick.Value - DateTimeOffset.UtcNow).TotalMilliseconds), request); + } + return; + } if (resetTick == null) { @@ -336,12 +438,12 @@ namespace Discord.Net.Queue if (!hasQueuedReset) { - var _ = QueueReset(id, (int)Math.Ceiling((_resetTick.Value - DateTimeOffset.UtcNow).TotalMilliseconds)); + var _ = QueueReset(id, (int)Math.Ceiling((_resetTick.Value - DateTimeOffset.UtcNow).TotalMilliseconds), request); } } } } - private async Task QueueReset(int id, int millis) + private async Task QueueReset(int id, int millis, IRequest request) { while (true) { @@ -363,7 +465,7 @@ namespace Discord.Net.Queue } } - private void ThrowRetryLimit(RestRequest request) + private void ThrowRetryLimit(IRequest request) { if ((request.Options.RetryMode & RetryMode.RetryRatelimit) == 0) throw new RateLimitedException(request); diff --git a/src/Discord.Net.Rest/Net/Queue/Requests/WebSocketRequest.cs b/src/Discord.Net.Rest/Net/Queue/Requests/WebSocketRequest.cs index 81eb40b31..ebebd7bef 100644 --- a/src/Discord.Net.Rest/Net/Queue/Requests/WebSocketRequest.cs +++ b/src/Discord.Net.Rest/Net/Queue/Requests/WebSocketRequest.cs @@ -9,22 +9,22 @@ namespace Discord.Net.Queue public class WebSocketRequest : IRequest { public IWebSocketClient Client { get; } - public string BucketId { get; } public byte[] Data { get; } public bool IsText { get; } + public bool IgnoreLimit { get; } public DateTimeOffset? TimeoutAt { get; } public TaskCompletionSource Promise { get; } public RequestOptions Options { get; } public CancellationToken CancelToken { get; internal set; } - public WebSocketRequest(IWebSocketClient client, string bucketId, byte[] data, bool isText, RequestOptions options) + public WebSocketRequest(IWebSocketClient client, byte[] data, bool isText, bool ignoreLimit, RequestOptions options) { Preconditions.NotNull(options, nameof(options)); Client = client; - BucketId = bucketId; Data = data; IsText = isText; + IgnoreLimit = ignoreLimit; Options = options; TimeoutAt = options.Timeout.HasValue ? DateTimeOffset.UtcNow.AddMilliseconds(options.Timeout.Value) : (DateTimeOffset?)null; Promise = new TaskCompletionSource(); diff --git a/src/Discord.Net.WebSocket/DiscordShardedClient.cs b/src/Discord.Net.WebSocket/DiscordShardedClient.cs index a8780a7b0..a2c89d4e5 100644 --- a/src/Discord.Net.WebSocket/DiscordShardedClient.cs +++ b/src/Discord.Net.WebSocket/DiscordShardedClient.cs @@ -12,12 +12,14 @@ namespace Discord.WebSocket public partial class DiscordShardedClient : BaseSocketClient, IDiscordClient { private readonly DiscordSocketConfig _baseConfig; - private readonly SemaphoreSlim _connectionGroupLock; private readonly Dictionary _shardIdsToIndex; private readonly bool _automaticShards; private int[] _shardIds; private DiscordSocketClient[] _shards; private int _totalShards; + private SemaphoreSlim[] _identifySemaphores; + private object _semaphoreResetLock; + private Task _semaphoreResetTask; private bool _isDisposed; @@ -62,10 +64,10 @@ namespace Discord.WebSocket if (ids != null && config.TotalShards == null) throw new ArgumentException($"Custom ids are not supported when {nameof(config.TotalShards)} is not specified."); + _semaphoreResetLock = new object(); _shardIdsToIndex = new Dictionary(); config.DisplayInitialLog = false; _baseConfig = config; - _connectionGroupLock = new SemaphoreSlim(1, 1); if (config.TotalShards == null) _automaticShards = true; @@ -74,12 +76,15 @@ namespace Discord.WebSocket _totalShards = config.TotalShards.Value; _shardIds = ids ?? Enumerable.Range(0, _totalShards).ToArray(); _shards = new DiscordSocketClient[_shardIds.Length]; + _identifySemaphores = new SemaphoreSlim[config.IdentifyMaxConcurrency]; + for (int i = 0; i < config.IdentifyMaxConcurrency; i++) + _identifySemaphores[i] = new SemaphoreSlim(1, 1); for (int i = 0; i < _shardIds.Length; i++) { _shardIdsToIndex.Add(_shardIds[i], i); var newConfig = config.Clone(); newConfig.ShardId = _shardIds[i]; - _shards[i] = new DiscordSocketClient(newConfig, _connectionGroupLock, i != 0 ? _shards[0] : null); + _shards[i] = new DiscordSocketClient(newConfig, this, i != 0 ? _shards[0] : null); RegisterEvents(_shards[i], i == 0); } } @@ -88,21 +93,53 @@ namespace Discord.WebSocket => new API.DiscordSocketApiClient(config.RestClientProvider, config.WebSocketProvider, DiscordRestConfig.UserAgent, rateLimitPrecision: config.RateLimitPrecision); + internal async Task AcquireIdentifyLockAsync(int shardId, CancellationToken token) + { + int semaphoreIdx = shardId % _baseConfig.IdentifyMaxConcurrency; + await _identifySemaphores[semaphoreIdx].WaitAsync(token).ConfigureAwait(false); + } + + internal void ReleaseIdentifyLock() + { + lock (_semaphoreResetLock) + { + if (_semaphoreResetTask == null) + _semaphoreResetTask = ResetSemaphoresAsync(); + } + } + + private async Task ResetSemaphoresAsync() + { + await Task.Delay(5000).ConfigureAwait(false); + lock (_semaphoreResetLock) + { + foreach (var semaphore in _identifySemaphores) + if (semaphore.CurrentCount == 0) + semaphore.Release(); + _semaphoreResetTask = null; + } + } + internal override async Task OnLoginAsync(TokenType tokenType, string token) { if (_automaticShards) { - var shardCount = await GetRecommendedShardCountAsync().ConfigureAwait(false); - _shardIds = Enumerable.Range(0, shardCount).ToArray(); + var botGateway = await GetBotGatewayAsync().ConfigureAwait(false); + _shardIds = Enumerable.Range(0, botGateway.Shards).ToArray(); _totalShards = _shardIds.Length; _shards = new DiscordSocketClient[_shardIds.Length]; + int maxConcurrency = botGateway.SessionStartLimit.MaxConcurrency; + _baseConfig.IdentifyMaxConcurrency = maxConcurrency; + _identifySemaphores = new SemaphoreSlim[maxConcurrency]; + for (int i = 0; i < maxConcurrency; i++) + _identifySemaphores[i] = new SemaphoreSlim(1, 1); for (int i = 0; i < _shardIds.Length; i++) { _shardIdsToIndex.Add(_shardIds[i], i); var newConfig = _baseConfig.Clone(); newConfig.ShardId = _shardIds[i]; newConfig.TotalShards = _totalShards; - _shards[i] = new DiscordSocketClient(newConfig, _connectionGroupLock, i != 0 ? _shards[0] : null); + _shards[i] = new DiscordSocketClient(newConfig, this, i != 0 ? _shards[0] : null); RegisterEvents(_shards[i], i == 0); } } @@ -398,7 +435,6 @@ namespace Discord.WebSocket foreach (var client in _shards) client?.Dispose(); } - _connectionGroupLock?.Dispose(); } _isDisposed = true; diff --git a/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs b/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs index 1b21bd666..07ebc87ec 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs @@ -132,6 +132,8 @@ namespace Discord.API if (WebSocketClient == null) throw new NotSupportedException("This client is not configured with WebSocket support."); + RequestQueue.ClearGatewayBuckets(); + //Re-create streams to reset the zlib state _compressed?.Dispose(); _decompressor?.Dispose(); @@ -205,7 +207,11 @@ namespace Discord.API payload = new SocketFrame { Operation = (int)opCode, Payload = payload }; if (payload != null) bytes = Encoding.UTF8.GetBytes(SerializeJson(payload)); - await RequestQueue.SendAsync(new WebSocketRequest(WebSocketClient, null, bytes, true, options)).ConfigureAwait(false); + + options.IsGatewayBucket = true; + if (options.BucketId == null) + options.BucketId = GatewayBucket.Get(GatewayBucketType.Unbucketed).Id; + await RequestQueue.SendAsync(new WebSocketRequest(WebSocketClient, bytes, true, opCode == GatewayOpCode.Heartbeat, options)).ConfigureAwait(false); await _sentGatewayMessageEvent.InvokeAsync(opCode).ConfigureAwait(false); } @@ -225,6 +231,8 @@ namespace Discord.API if (totalShards > 1) msg.ShardingParams = new int[] { shardID, totalShards }; + options.BucketId = GatewayBucket.Get(GatewayBucketType.Identify).Id; + if (gatewayIntents.HasValue) msg.Intents = (int)gatewayIntents.Value; else @@ -258,6 +266,7 @@ namespace Discord.API IsAFK = isAFK, Game = game }; + options.BucketId = GatewayBucket.Get(GatewayBucketType.PresenceUpdate).Id; await SendGatewayAsync(GatewayOpCode.StatusUpdate, args, options: options).ConfigureAwait(false); } public async Task SendRequestMembersAsync(IEnumerable guildIds, RequestOptions options = null) diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index dfdad99fc..d53387afc 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -26,7 +26,7 @@ namespace Discord.WebSocket { private readonly ConcurrentQueue _largeGuilds; private readonly JsonSerializer _serializer; - private readonly SemaphoreSlim _connectionGroupLock; + private readonly DiscordShardedClient _shardedClient; private readonly DiscordSocketClient _parentClient; private readonly ConcurrentQueue _heartbeatTimes; private readonly ConnectionManager _connection; @@ -120,9 +120,9 @@ namespace Discord.WebSocket /// The configuration to be used with the client. #pragma warning disable IDISP004 public DiscordSocketClient(DiscordSocketConfig config) : this(config, CreateApiClient(config), null, null) { } - internal DiscordSocketClient(DiscordSocketConfig config, SemaphoreSlim groupLock, DiscordSocketClient parentClient) : this(config, CreateApiClient(config), groupLock, parentClient) { } + internal DiscordSocketClient(DiscordSocketConfig config, DiscordShardedClient shardedClient, DiscordSocketClient parentClient) : this(config, CreateApiClient(config), shardedClient, parentClient) { } #pragma warning restore IDISP004 - private DiscordSocketClient(DiscordSocketConfig config, API.DiscordSocketApiClient client, SemaphoreSlim groupLock, DiscordSocketClient parentClient) + private DiscordSocketClient(DiscordSocketConfig config, API.DiscordSocketApiClient client, DiscordShardedClient shardedClient, DiscordSocketClient parentClient) : base(config, client) { ShardId = config.ShardId ?? 0; @@ -148,7 +148,7 @@ namespace Discord.WebSocket _connection.Disconnected += (ex, recon) => TimedInvokeAsync(_disconnectedEvent, nameof(Disconnected), ex); _nextAudioId = 1; - _connectionGroupLock = groupLock; + _shardedClient = shardedClient; _parentClient = parentClient; _serializer = new JsonSerializer { ContractResolver = new DiscordContractResolver() }; @@ -229,8 +229,12 @@ namespace Discord.WebSocket private async Task OnConnectingAsync() { - if (_connectionGroupLock != null) - await _connectionGroupLock.WaitAsync(_connection.CancelToken).ConfigureAwait(false); + bool locked = false; + if (_shardedClient != null && _sessionId == null) + { + await _shardedClient.AcquireIdentifyLockAsync(ShardId, _connection.CancelToken).ConfigureAwait(false); + locked = true; + } try { await _gatewayLogger.DebugAsync("Connecting ApiClient").ConfigureAwait(false); @@ -255,11 +259,8 @@ namespace Discord.WebSocket } finally { - if (_connectionGroupLock != null) - { - await Task.Delay(5000).ConfigureAwait(false); - _connectionGroupLock.Release(); - } + if (locked) + _shardedClient.ReleaseIdentifyLock(); } } private async Task OnDisconnectingAsync(Exception ex) @@ -519,7 +520,15 @@ namespace Discord.WebSocket _sessionId = null; _lastSeq = 0; - await ApiClient.SendIdentifyAsync(shardID: ShardId, totalShards: TotalShards, guildSubscriptions: _guildSubscriptions, gatewayIntents: _gatewayIntents).ConfigureAwait(false); + await _shardedClient.AcquireIdentifyLockAsync(ShardId, _connection.CancelToken).ConfigureAwait(false); + try + { + await ApiClient.SendIdentifyAsync(shardID: ShardId, totalShards: TotalShards, guildSubscriptions: _guildSubscriptions, gatewayIntents: _gatewayIntents).ConfigureAwait(false); + } + finally + { + _shardedClient.ReleaseIdentifyLock(); + } } break; case GatewayOpCode.Reconnect: diff --git a/src/Discord.Net.WebSocket/DiscordSocketConfig.cs b/src/Discord.Net.WebSocket/DiscordSocketConfig.cs index 0e8fbe73f..6b0c5ebc4 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketConfig.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketConfig.cs @@ -126,6 +126,14 @@ namespace Discord.WebSocket public bool GuildSubscriptions { get; set; } = true; /// + /// Gets or sets the maximum identify concurrency. + /// + /// + /// This information is provided by Discord. + /// It is only used when using a and auto-sharding is disabled. + /// + public int IdentifyMaxConcurrency { get; set; } = 1; + /// Gets or sets the maximum wait time in milliseconds between GUILD_AVAILABLE events before firing READY. /// /// If zero, READY will fire as soon as it is received and all guilds will be unavailable. From 25d5d36772b5f518a40f8596ee36bb145b733ce2 Mon Sep 17 00:00:00 2001 From: Paulo Date: Sun, 22 Nov 2020 00:42:48 -0300 Subject: [PATCH 054/212] feature: Send presence on Identify payload (#1688) * Send presence on identify * Change CurrentUser presence --- .../API/Gateway/IdentifyParams.cs | 2 + .../API/Gateway/StatusUpdateParams.cs | 6 +-- .../DiscordSocketApiClient.cs | 18 +++++-- .../DiscordSocketClient.cs | 47 ++++++++++++------- 4 files changed, 51 insertions(+), 22 deletions(-) diff --git a/src/Discord.Net.WebSocket/API/Gateway/IdentifyParams.cs b/src/Discord.Net.WebSocket/API/Gateway/IdentifyParams.cs index e3e24491d..92a494b71 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/IdentifyParams.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/IdentifyParams.cs @@ -15,6 +15,8 @@ namespace Discord.API.Gateway public int LargeThreshold { get; set; } [JsonProperty("shard")] public Optional ShardingParams { get; set; } + [JsonProperty("presence")] + public Optional Presence { get; set; } [JsonProperty("guild_subscriptions")] public Optional GuildSubscriptions { get; set; } [JsonProperty("intents")] diff --git a/src/Discord.Net.WebSocket/API/Gateway/StatusUpdateParams.cs b/src/Discord.Net.WebSocket/API/Gateway/StatusUpdateParams.cs index fc0964c17..e685e5e57 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/StatusUpdateParams.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/StatusUpdateParams.cs @@ -1,4 +1,4 @@ -#pragma warning disable CS1591 +#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Gateway @@ -12,7 +12,7 @@ namespace Discord.API.Gateway public long? IdleSince { get; set; } [JsonProperty("afk")] public bool IsAFK { get; set; } - [JsonProperty("game")] - public Game Game { get; set; } + [JsonProperty("activities")] + public Game[] Activities { get; set; } } } diff --git a/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs b/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs index 07ebc87ec..5a926ba26 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs @@ -12,6 +12,7 @@ using System.IO.Compression; using System.Text; using System.Threading; using System.Threading.Tasks; +using GameModel = Discord.API.Game; namespace Discord.API { @@ -215,7 +216,7 @@ namespace Discord.API await _sentGatewayMessageEvent.InvokeAsync(opCode).ConfigureAwait(false); } - public async Task SendIdentifyAsync(int largeThreshold = 100, int shardID = 0, int totalShards = 1, bool guildSubscriptions = true, GatewayIntents? gatewayIntents = null, RequestOptions options = null) + public async Task SendIdentifyAsync(int largeThreshold = 100, int shardID = 0, int totalShards = 1, bool guildSubscriptions = true, GatewayIntents? gatewayIntents = null, (UserStatus, bool, long?, GameModel[])? presence = null, RequestOptions options = null) { options = RequestOptions.CreateOrClone(options); var props = new Dictionary @@ -238,6 +239,17 @@ namespace Discord.API else msg.GuildSubscriptions = guildSubscriptions; + if (presence.HasValue) + { + msg.Presence = new StatusUpdateParams + { + Status = presence.Value.Item1, + IsAFK = presence.Value.Item2, + IdleSince = presence.Value.Item3, + Activities = presence.Value.Item4 + }; + } + await SendGatewayAsync(GatewayOpCode.Identify, msg, options: options).ConfigureAwait(false); } public async Task SendResumeAsync(string sessionId, int lastSeq, RequestOptions options = null) @@ -256,7 +268,7 @@ namespace Discord.API options = RequestOptions.CreateOrClone(options); await SendGatewayAsync(GatewayOpCode.Heartbeat, lastSeq, options: options).ConfigureAwait(false); } - public async Task SendStatusUpdateAsync(UserStatus status, bool isAFK, long? since, Game game, RequestOptions options = null) + public async Task SendStatusUpdateAsync(UserStatus status, bool isAFK, long? since, GameModel[] game, RequestOptions options = null) { options = RequestOptions.CreateOrClone(options); var args = new StatusUpdateParams @@ -264,7 +276,7 @@ namespace Discord.API Status = status, IdleSince = since, IsAFK = isAFK, - Game = game + Activities = game }; options.BucketId = GatewayBucket.Get(GatewayBucketType.PresenceUpdate).Id; await SendGatewayAsync(GatewayOpCode.StatusUpdate, args, options: options).ConfigureAwait(false); diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index d53387afc..26a0d73bd 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -59,7 +59,8 @@ namespace Discord.WebSocket /// public override UserStatus Status { get; protected set; } = UserStatus.Online; /// - public override IActivity Activity { get; protected set; } + public override IActivity Activity { get => _activity.GetValueOrDefault(); protected set => _activity = Optional.Create(value); } + private Optional _activity; //From DiscordSocketConfig internal int TotalShards { get; private set; } @@ -248,14 +249,11 @@ namespace Discord.WebSocket else { await _gatewayLogger.DebugAsync("Identifying").ConfigureAwait(false); - await ApiClient.SendIdentifyAsync(shardID: ShardId, totalShards: TotalShards, guildSubscriptions: _guildSubscriptions, gatewayIntents: _gatewayIntents).ConfigureAwait(false); + await ApiClient.SendIdentifyAsync(shardID: ShardId, totalShards: TotalShards, guildSubscriptions: _guildSubscriptions, gatewayIntents: _gatewayIntents, presence: BuildCurrentStatus()).ConfigureAwait(false); } //Wait for READY await _connection.WaitAsync().ConfigureAwait(false); - - await _gatewayLogger.DebugAsync("Sending Status").ConfigureAwait(false); - await SendStatusAsync().ConfigureAwait(false); } finally { @@ -449,28 +447,44 @@ namespace Discord.WebSocket { if (CurrentUser == null) return; + CurrentUser.Presence = new SocketPresence(Status, Activity, null, null); + + var presence = BuildCurrentStatus(); + + await ApiClient.SendStatusUpdateAsync( + presence.Item1, + presence.Item2, + presence.Item3, + presence.Item4).ConfigureAwait(false); + } + + private (UserStatus, bool, long?, GameModel[]) BuildCurrentStatus() + { var status = Status; var statusSince = _statusSince; - CurrentUser.Presence = new SocketPresence(status, Activity, null, null); + var activity = _activity; - var gameModel = new GameModel(); + GameModel[] gameModels = null; // Discord only accepts rich presence over RPC, don't even bother building a payload - if (Activity is RichGame) - throw new NotSupportedException("Outgoing Rich Presences are not supported via WebSocket."); - if (Activity != null) + if (activity.GetValueOrDefault() != null) { + var gameModel = new GameModel(); + if (activity.Value is RichGame) + throw new NotSupportedException("Outgoing Rich Presences are not supported via WebSocket."); gameModel.Name = Activity.Name; gameModel.Type = Activity.Type; if (Activity is StreamingGame streamGame) gameModel.StreamUrl = streamGame.Url; + gameModels = new[] { gameModel }; } + else if (activity.IsSpecified) + gameModels = new GameModel[0]; - await ApiClient.SendStatusUpdateAsync( - status, - status == UserStatus.AFK, - statusSince != null ? _statusSince.Value.ToUnixTimeMilliseconds() : (long?)null, - gameModel).ConfigureAwait(false); + return (status, + status == UserStatus.AFK, + statusSince != null ? _statusSince.Value.ToUnixTimeMilliseconds() : (long?)null, + gameModels); } private async Task ProcessMessageAsync(GatewayOpCode opCode, int? seq, string type, object payload) @@ -523,7 +537,7 @@ namespace Discord.WebSocket await _shardedClient.AcquireIdentifyLockAsync(ShardId, _connection.CancelToken).ConfigureAwait(false); try { - await ApiClient.SendIdentifyAsync(shardID: ShardId, totalShards: TotalShards, guildSubscriptions: _guildSubscriptions, gatewayIntents: _gatewayIntents).ConfigureAwait(false); + await ApiClient.SendIdentifyAsync(shardID: ShardId, totalShards: TotalShards, guildSubscriptions: _guildSubscriptions, gatewayIntents: _gatewayIntents, presence: BuildCurrentStatus()).ConfigureAwait(false); } finally { @@ -551,6 +565,7 @@ namespace Discord.WebSocket var state = new ClientState(data.Guilds.Length, data.PrivateChannels.Length); var currentUser = SocketSelfUser.Create(this, state, data.User); + currentUser.Presence = new SocketPresence(Status, Activity, null, null); ApiClient.CurrentUserId = currentUser.Id; int unavailableGuilds = 0; for (int i = 0; i < data.Guilds.Length; i++) From e3850e1e8f0f24652f22cc6322329495707ff67f Mon Sep 17 00:00:00 2001 From: Paulo Date: Sun, 22 Nov 2020 00:43:38 -0300 Subject: [PATCH 055/212] feature: Add inline replies (#1659) * Add inline replies * Missed a few things * Change xml docs, IUserMessage, and other changes * Missed one when changing * Fix referencedMessage author --- src/Discord.Net.Commands/ModuleBase.cs | 5 ++-- .../Entities/Channels/IMessageChannel.cs | 9 ++++-- .../Entities/Messages/AllowedMentions.cs | 8 +++++ .../Entities/Messages/IMessage.cs | 6 ++-- .../Entities/Messages/IUserMessage.cs | 9 +++++- .../Entities/Messages/MessageReference.cs | 27 +++++++++++++++-- .../Entities/Messages/MessageType.cs | 7 +++++ .../Entities/Users/IGuildUser.cs | 2 +- .../Extensions/MessageExtensions.cs | 20 +++++++++++++ src/Discord.Net.Rest/API/Common/Message.cs | 2 ++ .../API/Common/MessageReference.cs | 2 +- .../API/Rest/CreateMessageParams.cs | 2 ++ .../API/Rest/UploadFileParams.cs | 1 + .../Entities/Channels/ChannelHelper.cs | 30 ++++++------------- .../Entities/Channels/IRestMessageChannel.cs | 13 ++++---- .../Entities/Channels/RestDMChannel.cs | 24 +++++++-------- .../Entities/Channels/RestGroupChannel.cs | 24 +++++++-------- .../Entities/Channels/RestTextChannel.cs | 24 +++++++-------- .../Entities/Messages/AllowedMentions.cs | 2 ++ .../Entities/Messages/MessageHelper.cs | 13 +++++++- .../Entities/Messages/RestMessage.cs | 4 +-- .../Entities/Messages/RestUserMessage.cs | 14 +++++++-- .../Extensions/EntityExtensions.cs | 10 +++++++ .../Channels/ISocketMessageChannel.cs | 13 ++++---- .../Entities/Channels/SocketDMChannel.cs | 24 +++++++-------- .../Entities/Channels/SocketGroupChannel.cs | 24 +++++++-------- .../Entities/Channels/SocketTextChannel.cs | 24 +++++++-------- .../Entities/Messages/SocketMessage.cs | 4 +-- .../Entities/Messages/SocketUserMessage.cs | 6 ++++ .../MockedEntities/MockedDMChannel.cs | 6 ++-- .../MockedEntities/MockedGroupChannel.cs | 6 ++-- .../MockedEntities/MockedTextChannel.cs | 6 ++-- 32 files changed, 239 insertions(+), 132 deletions(-) diff --git a/src/Discord.Net.Commands/ModuleBase.cs b/src/Discord.Net.Commands/ModuleBase.cs index ec1722c70..6ec2db54d 100644 --- a/src/Discord.Net.Commands/ModuleBase.cs +++ b/src/Discord.Net.Commands/ModuleBase.cs @@ -35,9 +35,10 @@ namespace Discord.Commands /// Specifies if notifications are sent for mentioned users and roles in the . /// If null, all mentioned roles and users will be notified. /// - protected virtual async Task ReplyAsync(string message = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null) + /// The message references to be included. Used to reply to specific messages. + protected virtual async Task ReplyAsync(string message = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null) { - return await Context.Channel.SendMessageAsync(message, isTTS, embed, options, allowedMentions).ConfigureAwait(false); + return await Context.Channel.SendMessageAsync(message, isTTS, embed, options, allowedMentions, messageReference).ConfigureAwait(false); } /// /// The method to execute before executing the command. diff --git a/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs b/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs index 030a278bc..abd20e4f0 100644 --- a/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs +++ b/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs @@ -27,11 +27,12 @@ namespace Discord /// Specifies if notifications are sent for mentioned users and roles in the message . /// If null, all mentioned roles and users will be notified. /// + /// The message references to be included. Used to reply to specific messages. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null); + Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null); /// /// Sends a file to this message channel with an optional caption. /// @@ -63,11 +64,12 @@ namespace Discord /// Specifies if notifications are sent for mentioned users and roles in the message . /// If null, all mentioned roles and users will be notified. /// + /// The message references to be included. Used to reply to specific messages. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null); + Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null); /// /// Sends a file to this message channel with an optional caption. /// @@ -96,11 +98,12 @@ namespace Discord /// Specifies if notifications are sent for mentioned users and roles in the message . /// If null, all mentioned roles and users will be notified. /// + /// The message references to be included. Used to reply to specific messages. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null); + Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null); /// /// Gets a message from this message channel. diff --git a/src/Discord.Net.Core/Entities/Messages/AllowedMentions.cs b/src/Discord.Net.Core/Entities/Messages/AllowedMentions.cs index d52feaa7d..0206ad7b1 100644 --- a/src/Discord.Net.Core/Entities/Messages/AllowedMentions.cs +++ b/src/Discord.Net.Core/Entities/Messages/AllowedMentions.cs @@ -49,6 +49,14 @@ namespace Discord /// public List UserIds { get; set; } = new List(); + /// + /// Gets or sets whether to mention the author of the message you are replying to or not. + /// + /// + /// Specifically for inline replies. + /// + public bool? MentionRepliedUser { get; set; } = null; + /// /// Initializes a new instance of the class. /// diff --git a/src/Discord.Net.Core/Entities/Messages/IMessage.cs b/src/Discord.Net.Core/Entities/Messages/IMessage.cs index b74e333c1..35458d87d 100644 --- a/src/Discord.Net.Core/Entities/Messages/IMessage.cs +++ b/src/Discord.Net.Core/Entities/Messages/IMessage.cs @@ -148,11 +148,11 @@ namespace Discord MessageApplication Application { get; } /// - /// Gets the reference to the original message if it was crossposted. + /// Gets the reference to the original message if it is a crosspost, channel follow add, pin, or reply message. /// /// - /// Sent with Cross-posted messages, meaning they were published from news channels - /// and received by subscriber channels. + /// Sent with cross-posted messages, meaning they were published from news channels + /// and received by subscriber channels, channel follow adds, pins, and message replies. /// /// /// A message's reference, if any is associated. diff --git a/src/Discord.Net.Core/Entities/Messages/IUserMessage.cs b/src/Discord.Net.Core/Entities/Messages/IUserMessage.cs index e2fb25aae..1589e2ae5 100644 --- a/src/Discord.Net.Core/Entities/Messages/IUserMessage.cs +++ b/src/Discord.Net.Core/Entities/Messages/IUserMessage.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using System.Threading.Tasks; namespace Discord @@ -9,6 +8,14 @@ namespace Discord /// public interface IUserMessage : IMessage { + /// + /// Gets the referenced message if it is a crosspost, channel follow add, pin, or reply message. + /// + /// + /// The referenced message, if any is associated and still exists. + /// + IUserMessage ReferencedMessage { get; } + /// /// Modifies this message. /// diff --git a/src/Discord.Net.Core/Entities/Messages/MessageReference.cs b/src/Discord.Net.Core/Entities/Messages/MessageReference.cs index 57a508a7c..029910e56 100644 --- a/src/Discord.Net.Core/Entities/Messages/MessageReference.cs +++ b/src/Discord.Net.Core/Entities/Messages/MessageReference.cs @@ -3,7 +3,7 @@ using System.Diagnostics; namespace Discord { /// - /// Contains the IDs sent from a crossposted message. + /// Contains the IDs sent from a crossposted message or inline reply. /// [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class MessageReference @@ -16,13 +16,36 @@ namespace Discord /// /// Gets the Channel ID of the original message. /// - public ulong ChannelId { get; internal set; } + /// + /// It only will be the default value (zero) if it was instantiated with a in the constructor. + /// + public ulong ChannelId { get => InternalChannelId.GetValueOrDefault(); } + internal Optional InternalChannelId; /// /// Gets the Guild ID of the original message. /// public Optional GuildId { get; internal set; } + /// + /// Initializes a new instance of the class. + /// + /// + /// The ID of the message that will be referenced. Used to reply to specific messages and the only parameter required for it. + /// + /// + /// The ID of the channel that will be referenced. It will be validated if sent. + /// + /// + /// The ID of the guild that will be referenced. It will be validated if sent. + /// + public MessageReference(ulong? messageId = null, ulong? channelId = null, ulong? guildId = null) + { + MessageId = messageId ?? Optional.Create(); + InternalChannelId = channelId ?? Optional.Create(); + GuildId = guildId ?? Optional.Create(); + } + private string DebuggerDisplay => $"Channel ID: ({ChannelId}){(GuildId.IsSpecified ? $", Guild ID: ({GuildId.Value})" : "")}" + $"{(MessageId.IsSpecified ? $", Message ID: ({MessageId.Value})" : "")}"; diff --git a/src/Discord.Net.Core/Entities/Messages/MessageType.cs b/src/Discord.Net.Core/Entities/Messages/MessageType.cs index ee5f4fb4d..ad1f3a3cd 100644 --- a/src/Discord.Net.Core/Entities/Messages/MessageType.cs +++ b/src/Discord.Net.Core/Entities/Messages/MessageType.cs @@ -57,5 +57,12 @@ namespace Discord /// The message for when a news channel subscription is added to a text channel. /// ChannelFollowAdd = 12, + /// + /// The message is an inline reply. + /// + /// + /// Only available in API v8. + /// + Reply = 19, } } diff --git a/src/Discord.Net.Core/Entities/Users/IGuildUser.cs b/src/Discord.Net.Core/Entities/Users/IGuildUser.cs index 92b146e05..0e4004c46 100644 --- a/src/Discord.Net.Core/Entities/Users/IGuildUser.cs +++ b/src/Discord.Net.Core/Entities/Users/IGuildUser.cs @@ -73,7 +73,7 @@ namespace Discord /// /// /// The following example checks if the current user has the ability to send a message with attachment in - /// this channel; if so, uploads a file via . + /// this channel; if so, uploads a file via . /// /// if (currentUser?.GetPermissions(targetChannel)?.AttachFiles) /// await targetChannel.SendFileAsync("fortnite.png"); diff --git a/src/Discord.Net.Core/Extensions/MessageExtensions.cs b/src/Discord.Net.Core/Extensions/MessageExtensions.cs index e44e397fa..b043d7b77 100644 --- a/src/Discord.Net.Core/Extensions/MessageExtensions.cs +++ b/src/Discord.Net.Core/Extensions/MessageExtensions.cs @@ -71,5 +71,25 @@ namespace Discord foreach (var rxn in reactions) await msg.RemoveReactionAsync(rxn, user, options).ConfigureAwait(false); } + + /// + /// Sends an inline reply that references a message. + /// + /// The message to be sent. + /// Determines whether the message should be read aloud by Discord or not. + /// The to be sent. + /// + /// Specifies if notifications are sent for mentioned users and roles in the message . + /// If null, all mentioned roles and users will be notified. + /// + /// The options to be used when sending the request. + /// + /// A task that represents an asynchronous send operation for delivering the message. The task result + /// contains the sent message. + /// + public static async Task ReplyAsync(this IUserMessage msg, string text = null, bool isTTS = false, Embed embed = null, AllowedMentions allowedMentions = null, RequestOptions options = null) + { + return await msg.Channel.SendMessageAsync(text, isTTS, embed, options, allowedMentions, new MessageReference(messageId: msg.Id)).ConfigureAwait(false); + } } } diff --git a/src/Discord.Net.Rest/API/Common/Message.cs b/src/Discord.Net.Rest/API/Common/Message.cs index b4529d457..b781de346 100644 --- a/src/Discord.Net.Rest/API/Common/Message.cs +++ b/src/Discord.Net.Rest/API/Common/Message.cs @@ -56,5 +56,7 @@ namespace Discord.API public Optional Flags { get; set; } [JsonProperty("allowed_mentions")] public Optional AllowedMentions { get; set; } + [JsonProperty("referenced_message")] + public Optional ReferencedMessage { get; set; } } } diff --git a/src/Discord.Net.Rest/API/Common/MessageReference.cs b/src/Discord.Net.Rest/API/Common/MessageReference.cs index 8c0f8fe14..6cc7603e0 100644 --- a/src/Discord.Net.Rest/API/Common/MessageReference.cs +++ b/src/Discord.Net.Rest/API/Common/MessageReference.cs @@ -8,7 +8,7 @@ namespace Discord.API public Optional MessageId { get; set; } [JsonProperty("channel_id")] - public ulong ChannelId { get; set; } + public Optional ChannelId { get; set; } // Optional when sending, always present when receiving [JsonProperty("guild_id")] public Optional GuildId { get; set; } diff --git a/src/Discord.Net.Rest/API/Rest/CreateMessageParams.cs b/src/Discord.Net.Rest/API/Rest/CreateMessageParams.cs index 4b56658d6..e64532864 100644 --- a/src/Discord.Net.Rest/API/Rest/CreateMessageParams.cs +++ b/src/Discord.Net.Rest/API/Rest/CreateMessageParams.cs @@ -17,6 +17,8 @@ namespace Discord.API.Rest public Optional Embed { get; set; } [JsonProperty("allowed_mentions")] public Optional AllowedMentions { get; set; } + [JsonProperty("message_reference")] + public Optional MessageReference { get; set; } public CreateMessageParams(string content) { diff --git a/src/Discord.Net.Rest/API/Rest/UploadFileParams.cs b/src/Discord.Net.Rest/API/Rest/UploadFileParams.cs index 64535e6d7..a7d19b4ef 100644 --- a/src/Discord.Net.Rest/API/Rest/UploadFileParams.cs +++ b/src/Discord.Net.Rest/API/Rest/UploadFileParams.cs @@ -20,6 +20,7 @@ namespace Discord.API.Rest public Optional IsTTS { get; set; } public Optional Embed { get; set; } public Optional AllowedMentions { get; set; } + public Optional MessageReference { get; set; } public bool IsSpoiler { get; set; } = false; public UploadFileParams(Stream file) diff --git a/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs b/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs index 6494f7fb7..c1d0ac294 100644 --- a/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs +++ b/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs @@ -6,7 +6,6 @@ using System.IO; using System.Linq; using System.Threading.Tasks; using Model = Discord.API.Channel; -using UserModel = Discord.API.User; namespace Discord.Rest { @@ -130,7 +129,7 @@ namespace Discord.Rest var model = await client.ApiClient.GetChannelMessageAsync(channel.Id, id, options).ConfigureAwait(false); if (model == null) return null; - var author = GetAuthor(client, guild, model.Author.Value, model.WebhookId.ToNullable()); + var author = MessageHelper.GetAuthor(client, guild, model.Author.Value, model.WebhookId.ToNullable()); return RestMessage.Create(client, channel, author, model); } public static IAsyncEnumerable> GetMessagesAsync(IMessageChannel channel, BaseDiscordClient client, @@ -165,7 +164,7 @@ namespace Discord.Rest var builder = ImmutableArray.CreateBuilder(); foreach (var model in models) { - var author = GetAuthor(client, guild, model.Author.Value, model.WebhookId.ToNullable()); + var author = MessageHelper.GetAuthor(client, guild, model.Author.Value, model.WebhookId.ToNullable()); builder.Add(RestMessage.Create(client, channel, author, model)); } return builder.ToImmutable(); @@ -193,7 +192,7 @@ namespace Discord.Rest var builder = ImmutableArray.CreateBuilder(); foreach (var model in models) { - var author = GetAuthor(client, guild, model.Author.Value, model.WebhookId.ToNullable()); + var author = MessageHelper.GetAuthor(client, guild, model.Author.Value, model.WebhookId.ToNullable()); builder.Add(RestMessage.Create(client, channel, author, model)); } return builder.ToImmutable(); @@ -201,7 +200,7 @@ namespace Discord.Rest /// Message content is too long, length must be less or equal to . public static async Task SendMessageAsync(IMessageChannel channel, BaseDiscordClient client, - string text, bool isTTS, Embed embed, AllowedMentions allowedMentions, RequestOptions options) + string text, bool isTTS, Embed embed, AllowedMentions allowedMentions, MessageReference messageReference, RequestOptions options) { 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."); @@ -222,7 +221,7 @@ namespace Discord.Rest } } - var args = new CreateMessageParams(text) { IsTTS = isTTS, Embed = embed?.ToModel(), AllowedMentions = allowedMentions?.ToModel() }; + var args = new CreateMessageParams(text) { IsTTS = isTTS, Embed = embed?.ToModel(), AllowedMentions = allowedMentions?.ToModel(), MessageReference = messageReference?.ToModel() }; var model = await client.ApiClient.CreateMessageAsync(channel.Id, args, options).ConfigureAwait(false); return RestUserMessage.Create(client, channel, client.CurrentUser, model); } @@ -252,16 +251,16 @@ namespace Discord.Rest /// An I/O error occurred while opening the file. /// Message content is too long, length must be less or equal to . public static async Task SendFileAsync(IMessageChannel channel, BaseDiscordClient client, - string filePath, string text, bool isTTS, Embed embed, AllowedMentions allowedMentions, RequestOptions options, bool isSpoiler) + string filePath, string text, bool isTTS, Embed embed, AllowedMentions allowedMentions, MessageReference messageReference, RequestOptions options, bool isSpoiler) { string filename = Path.GetFileName(filePath); using (var file = File.OpenRead(filePath)) - return await SendFileAsync(channel, client, file, filename, text, isTTS, embed, allowedMentions, options, isSpoiler).ConfigureAwait(false); + return await SendFileAsync(channel, client, file, filename, text, isTTS, embed, allowedMentions, messageReference, options, isSpoiler).ConfigureAwait(false); } /// Message content is too long, length must be less or equal to . public static async Task SendFileAsync(IMessageChannel channel, BaseDiscordClient client, - Stream stream, string filename, string text, bool isTTS, Embed embed, AllowedMentions allowedMentions, RequestOptions options, bool isSpoiler) + Stream stream, string filename, string text, bool isTTS, Embed embed, AllowedMentions allowedMentions, MessageReference messageReference, RequestOptions options, bool isSpoiler) { 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."); @@ -282,7 +281,7 @@ namespace Discord.Rest } } - var args = new UploadFileParams(stream) { Filename = filename, Content = text, IsTTS = isTTS, Embed = embed?.ToModel() ?? Optional.Unspecified, AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, IsSpoiler = isSpoiler }; + var args = new UploadFileParams(stream) { Filename = filename, Content = text, IsTTS = isTTS, Embed = embed?.ToModel() ?? Optional.Unspecified, AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, MessageReference = messageReference?.ToModel() ?? Optional.Unspecified, IsSpoiler = isSpoiler }; var model = await client.ApiClient.UploadFileAsync(channel.Id, args, options).ConfigureAwait(false); return RestUserMessage.Create(client, channel, client.CurrentUser, model); } @@ -450,16 +449,5 @@ namespace Discord.Rest }; await client.ApiClient.ModifyGuildChannelAsync(channel.Id, apiArgs, options).ConfigureAwait(false); } - - //Helpers - private static IUser GetAuthor(BaseDiscordClient client, IGuild guild, UserModel model, ulong? webhookId) - { - IUser author = null; - if (guild != null) - author = guild.GetUserAsync(model.Id, CacheMode.CacheOnly).Result; - if (author == null) - author = RestUser.Create(client, guild, model, webhookId); - return author; - } } } diff --git a/src/Discord.Net.Rest/Entities/Channels/IRestMessageChannel.cs b/src/Discord.Net.Rest/Entities/Channels/IRestMessageChannel.cs index d02b293ef..09404d836 100644 --- a/src/Discord.Net.Rest/Entities/Channels/IRestMessageChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/IRestMessageChannel.cs @@ -24,17 +24,18 @@ namespace Discord.Rest /// Specifies if notifications are sent for mentioned users and roles in the message . /// If null, all mentioned roles and users will be notified. /// + /// The message references to be included. Used to reply to specific messages. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - new Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null); + new Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null); /// /// Sends a file to this message channel with an optional caption. /// /// /// This method follows the same behavior as described in - /// . Please visit + /// . Please visit /// its documentation for more details on this method. /// /// The file path of the file. @@ -47,16 +48,17 @@ namespace Discord.Rest /// Specifies if notifications are sent for mentioned users and roles in the message . /// If null, all mentioned roles and users will be notified. /// + /// The message references to be included. Used to reply to specific messages. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - new Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null); + new Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null); /// /// Sends a file to this message channel with an optional caption. /// /// - /// This method follows the same behavior as described in . + /// This method follows the same behavior as described in . /// Please visit its documentation for more details on this method. /// /// The of the file to be sent. @@ -70,11 +72,12 @@ namespace Discord.Rest /// Specifies if notifications are sent for mentioned users and roles in the message . /// If null, all mentioned roles and users will be notified. /// + /// The message references to be included. Used to reply to specific messages. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - new Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null); + new Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null); /// /// Gets a message from this message channel. diff --git a/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs index 0f29f9d77..d59a10fb5 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs @@ -93,8 +93,8 @@ namespace Discord.Rest /// /// Message content is too long, length must be less or equal to . - public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null) - => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, options); + public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null) + => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, options); /// /// @@ -121,12 +121,12 @@ namespace Discord.Rest /// is in an invalid format. /// An I/O error occurred while opening the file. /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) - => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, options, isSpoiler); + public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) + => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, options, isSpoiler); /// /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) - => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, options, isSpoiler); + public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) + => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, options, isSpoiler); /// public Task DeleteMessageAsync(ulong messageId, RequestOptions options = null) @@ -200,14 +200,14 @@ namespace Discord.Rest async Task> IMessageChannel.GetPinnedMessagesAsync(RequestOptions options) => await GetPinnedMessagesAsync(options).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions) - => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference) + => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions) - => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference) + => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference).ConfigureAwait(false); /// - async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions) - => await SendMessageAsync(text, isTTS, embed, options, allowedMentions).ConfigureAwait(false); + async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference) + => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference).ConfigureAwait(false); //IChannel /// diff --git a/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs index 4361fd281..666d6a4f4 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs @@ -95,8 +95,8 @@ namespace Discord.Rest /// /// Message content is too long, length must be less or equal to . - public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null) - => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, options); + public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null) + => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, options); /// /// @@ -123,12 +123,12 @@ namespace Discord.Rest /// is in an invalid format. /// An I/O error occurred while opening the file. /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) - => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, options, isSpoiler); + public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) + => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, options, isSpoiler); /// /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) - => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, options, isSpoiler); + public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) + => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, options, isSpoiler); /// public Task TriggerTypingAsync(RequestOptions options = null) @@ -178,14 +178,14 @@ namespace Discord.Rest async Task> IMessageChannel.GetPinnedMessagesAsync(RequestOptions options) => await GetPinnedMessagesAsync(options).ConfigureAwait(false); - async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions) - => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference) + => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference).ConfigureAwait(false); - async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions) - => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference) + => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference).ConfigureAwait(false); - async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions) - => await SendMessageAsync(text, isTTS, embed, options, allowedMentions).ConfigureAwait(false); + async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference) + => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference).ConfigureAwait(false); //IAudioChannel /// diff --git a/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs index a85ef4f0b..fdc4b7988 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs @@ -102,8 +102,8 @@ namespace Discord.Rest /// /// Message content is too long, length must be less or equal to . - public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null) - => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, options); + public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null) + => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, options); /// /// @@ -130,13 +130,13 @@ namespace Discord.Rest /// is in an invalid format. /// An I/O error occurred while opening the file. /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) - => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, options, isSpoiler); + public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) + => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, options, isSpoiler); /// /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) - => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, options, isSpoiler); + public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) + => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, options, isSpoiler); /// public Task DeleteMessageAsync(ulong messageId, RequestOptions options = null) @@ -267,15 +267,15 @@ namespace Discord.Rest => await GetPinnedMessagesAsync(options).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions) - => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference) + => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions) - => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference) + => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference).ConfigureAwait(false); /// - async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions) - => await SendMessageAsync(text, isTTS, embed, options, allowedMentions).ConfigureAwait(false); + async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference) + => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference).ConfigureAwait(false); //IGuildChannel /// diff --git a/src/Discord.Net.Rest/Entities/Messages/AllowedMentions.cs b/src/Discord.Net.Rest/Entities/Messages/AllowedMentions.cs index 5ab96032f..8b8870be2 100644 --- a/src/Discord.Net.Rest/Entities/Messages/AllowedMentions.cs +++ b/src/Discord.Net.Rest/Entities/Messages/AllowedMentions.cs @@ -11,5 +11,7 @@ namespace Discord.API public Optional Roles { get; set; } [JsonProperty("users")] public Optional Users { get; set; } + [JsonProperty("replied_user")] + public Optional RepliedUser { get; set; } } } diff --git a/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs b/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs index 619ddc876..b86a5dbf3 100644 --- a/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs +++ b/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs @@ -6,6 +6,7 @@ using System.Linq; using System.Text.RegularExpressions; using System.Threading.Tasks; using Model = Discord.API.Message; +using UserModel = Discord.API.User; namespace Discord.Rest { @@ -290,7 +291,7 @@ namespace Discord.Rest public static MessageSource GetSource(Model msg) { - if (msg.Type != MessageType.Default) + if (msg.Type != MessageType.Default && msg.Type != MessageType.Reply) return MessageSource.System; else if (msg.WebhookId.IsSpecified) return MessageSource.Webhook; @@ -307,5 +308,15 @@ namespace Discord.Rest { await client.ApiClient.CrosspostAsync(channelId, msgId, options).ConfigureAwait(false); } + + public static IUser GetAuthor(BaseDiscordClient client, IGuild guild, UserModel model, ulong? webhookId) + { + IUser author = null; + if (guild != null) + author = guild.GetUserAsync(model.Id, CacheMode.CacheOnly).Result; + if (author == null) + author = RestUser.Create(client, guild, model, webhookId); + return author; + } } } diff --git a/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs b/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs index 2456e65e7..0169c9b8b 100644 --- a/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs +++ b/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs @@ -77,7 +77,7 @@ namespace Discord.Rest } internal static RestMessage Create(BaseDiscordClient discord, IMessageChannel channel, IUser author, Model model) { - if (model.Type == MessageType.Default) + if (model.Type == MessageType.Default || model.Type == MessageType.Reply) return RestUserMessage.Create(discord, channel, author, model); else return RestSystemMessage.Create(discord, channel, author, model); @@ -119,7 +119,7 @@ namespace Discord.Rest Reference = new MessageReference { GuildId = model.Reference.Value.GuildId, - ChannelId = model.Reference.Value.ChannelId, + InternalChannelId = model.Reference.Value.ChannelId, MessageId = model.Reference.Value.MessageId }; } diff --git a/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs b/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs index 79df4308d..2c76a4253 100644 --- a/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs +++ b/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs @@ -15,6 +15,7 @@ namespace Discord.Rest { private bool _isMentioningEveryone, _isTTS, _isPinned, _isSuppressed; private long? _editedTimestampTicks; + private IUserMessage _referencedMessage; private ImmutableArray _attachments = ImmutableArray.Create(); private ImmutableArray _embeds = ImmutableArray.Create(); private ImmutableArray _tags = ImmutableArray.Create(); @@ -43,6 +44,8 @@ namespace Discord.Rest public override IReadOnlyCollection MentionedUsers => _userMentions; /// public override IReadOnlyCollection Tags => _tags; + /// + public IUserMessage ReferencedMessage => _referencedMessage; internal RestUserMessage(BaseDiscordClient discord, ulong id, IMessageChannel channel, IUser author, MessageSource source) : base(discord, id, channel, author, source) @@ -118,14 +121,21 @@ namespace Discord.Rest } } + var guildId = (Channel as IGuildChannel)?.GuildId; + var guild = guildId != null ? (Discord as IDiscordClient).GetGuildAsync(guildId.Value, CacheMode.CacheOnly).Result : null; if (model.Content.IsSpecified) { var text = model.Content.Value; - var guildId = (Channel as IGuildChannel)?.GuildId; - var guild = guildId != null ? (Discord as IDiscordClient).GetGuildAsync(guildId.Value, CacheMode.CacheOnly).Result : null; _tags = MessageHelper.ParseTags(text, null, guild, _userMentions); model.Content = text; } + + if (model.ReferencedMessage.IsSpecified && model.ReferencedMessage.Value != null) + { + var refMsg = model.ReferencedMessage.Value; + IUser refMsgAuthor = MessageHelper.GetAuthor(Discord, guild, refMsg.Author.Value, refMsg.WebhookId.ToNullable()); + _referencedMessage = RestUserMessage.Create(Discord, Channel, refMsgAuthor, refMsg); + } } /// diff --git a/src/Discord.Net.Rest/Extensions/EntityExtensions.cs b/src/Discord.Net.Rest/Extensions/EntityExtensions.cs index abdfc9d4f..8e1b9c6d8 100644 --- a/src/Discord.Net.Rest/Extensions/EntityExtensions.cs +++ b/src/Discord.Net.Rest/Extensions/EntityExtensions.cs @@ -68,6 +68,16 @@ namespace Discord.Rest Parse = entity.AllowedTypes?.EnumerateMentionTypes().ToArray(), Roles = entity.RoleIds?.ToArray(), Users = entity.UserIds?.ToArray(), + RepliedUser = entity.MentionRepliedUser ?? Optional.Create(), + }; + } + public static API.MessageReference ToModel(this MessageReference entity) + { + return new API.MessageReference() + { + ChannelId = entity.InternalChannelId, + GuildId = entity.GuildId, + MessageId = entity.MessageId, }; } public static IEnumerable EnumerateMentionTypes(this AllowedMentionTypes mentionTypes) diff --git a/src/Discord.Net.WebSocket/Entities/Channels/ISocketMessageChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/ISocketMessageChannel.cs index e8511f1f5..b4625f799 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/ISocketMessageChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/ISocketMessageChannel.cs @@ -33,16 +33,17 @@ namespace Discord.WebSocket /// Specifies if notifications are sent for mentioned users and roles in the message . /// If null, all mentioned roles and users will be notified. /// + /// The message references to be included. Used to reply to specific messages. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - new Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null); + new Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null); /// /// Sends a file to this message channel with an optional caption. /// /// - /// This method follows the same behavior as described in . + /// This method follows the same behavior as described in . /// Please visit its documentation for more details on this method. /// /// The file path of the file. @@ -55,16 +56,17 @@ namespace Discord.WebSocket /// Specifies if notifications are sent for mentioned users and roles in the message . /// If null, all mentioned roles and users will be notified. /// + /// The message references to be included. Used to reply to specific messages. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - new Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null); + new Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null); /// /// Sends a file to this message channel with an optional caption. /// /// - /// This method follows the same behavior as described in . + /// This method follows the same behavior as described in . /// Please visit its documentation for more details on this method. /// /// The of the file to be sent. @@ -78,11 +80,12 @@ namespace Discord.WebSocket /// Specifies if notifications are sent for mentioned users and roles in the message . /// If null, all mentioned roles and users will be notified. /// + /// The message references to be included. Used to reply to specific messages. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - new Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null); + new Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null); /// /// Gets a cached message from this channel. diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs index 527685578..c123a9d4e 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs @@ -135,16 +135,16 @@ namespace Discord.WebSocket /// /// Message content is too long, length must be less or equal to . - public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null) - => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, options); + public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null) + => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, options); /// - public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) - => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, options, isSpoiler); + public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) + => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, options, isSpoiler); /// /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) - => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, options, isSpoiler); + public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) + => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, options, isSpoiler); /// public Task DeleteMessageAsync(ulong messageId, RequestOptions options = null) => ChannelHelper.DeleteMessageAsync(this, messageId, Discord, options); @@ -229,14 +229,14 @@ namespace Discord.WebSocket async Task> IMessageChannel.GetPinnedMessagesAsync(RequestOptions options) => await GetPinnedMessagesAsync(options).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions) - => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference) + => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions) - => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference) + => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference).ConfigureAwait(false); /// - async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions) - => await SendMessageAsync(text, isTTS, embed, options, allowedMentions).ConfigureAwait(false); + async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference) + => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference).ConfigureAwait(false); //IChannel /// diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs index b95bbffc1..dc5ac4222 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs @@ -163,15 +163,15 @@ namespace Discord.WebSocket /// /// Message content is too long, length must be less or equal to . - public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null) - => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, options); + public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null) + => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, options); /// - public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) - => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, options, isSpoiler); + public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) + => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, options, isSpoiler); /// - public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) - => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, options, isSpoiler); + public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) + => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, options, isSpoiler); /// public Task DeleteMessageAsync(ulong messageId, RequestOptions options = null) @@ -293,14 +293,14 @@ namespace Discord.WebSocket => await GetPinnedMessagesAsync(options).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions) - => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference) + => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions) - => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference) + => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference).ConfigureAwait(false); /// - async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions) - => await SendMessageAsync(text, isTTS, embed, options, allowedMentions).ConfigureAwait(false); + async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference) + => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference).ConfigureAwait(false); //IAudioChannel /// diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs index e49e3ed37..d7d918f9f 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs @@ -161,17 +161,17 @@ namespace Discord.WebSocket /// /// Message content is too long, length must be less or equal to . - public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null) - => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, options); + public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null) + => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, options); /// - public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) - => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, options, isSpoiler); + public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) + => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, options, isSpoiler); /// /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) - => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, options, isSpoiler); + public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) + => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, options, isSpoiler); /// public Task DeleteMessagesAsync(IEnumerable messages, RequestOptions options = null) @@ -302,14 +302,14 @@ namespace Discord.WebSocket => await GetPinnedMessagesAsync(options).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions) - => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference) + => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions) - => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference) + => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference).ConfigureAwait(false); /// - async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions) - => await SendMessageAsync(text, isTTS, embed, options, allowedMentions).ConfigureAwait(false); + async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference) + => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference).ConfigureAwait(false); // INestedChannel /// diff --git a/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs b/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs index 614bd044b..98fd4af07 100644 --- a/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs +++ b/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs @@ -110,7 +110,7 @@ namespace Discord.WebSocket } internal static SocketMessage Create(DiscordSocketClient discord, ClientState state, SocketUser author, ISocketMessageChannel channel, Model model) { - if (model.Type == MessageType.Default) + if (model.Type == MessageType.Default || model.Type == MessageType.Reply) return SocketUserMessage.Create(discord, state, author, channel, model); else return SocketSystemMessage.Create(discord, state, author, channel, model); @@ -152,7 +152,7 @@ namespace Discord.WebSocket Reference = new MessageReference { GuildId = model.Reference.Value.GuildId, - ChannelId = model.Reference.Value.ChannelId, + InternalChannelId = model.Reference.Value.ChannelId, MessageId = model.Reference.Value.MessageId }; } diff --git a/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs b/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs index da7f8f16b..4f876ed6f 100644 --- a/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs +++ b/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs @@ -17,6 +17,7 @@ namespace Discord.WebSocket { private bool _isMentioningEveryone, _isTTS, _isPinned, _isSuppressed; private long? _editedTimestampTicks; + private IUserMessage _referencedMessage; private ImmutableArray _attachments = ImmutableArray.Create(); private ImmutableArray _embeds = ImmutableArray.Create(); private ImmutableArray _tags = ImmutableArray.Create(); @@ -45,6 +46,8 @@ namespace Discord.WebSocket public override IReadOnlyCollection MentionedRoles => _roleMentions; /// public override IReadOnlyCollection MentionedUsers => _userMentions; + /// + public IUserMessage ReferencedMessage => _referencedMessage; internal SocketUserMessage(DiscordSocketClient discord, ulong id, ISocketMessageChannel channel, SocketUser author, MessageSource source) : base(discord, id, channel, author, source) @@ -131,6 +134,9 @@ namespace Discord.WebSocket _tags = MessageHelper.ParseTags(text, Channel, guild, _userMentions); model.Content = text; } + + if (model.ReferencedMessage.IsSpecified && model.ReferencedMessage.Value != null) + _referencedMessage = RestUserMessage.Create(Discord, Channel, Author, model.ReferencedMessage.Value); } /// diff --git a/test/Discord.Net.Tests.Unit/MockedEntities/MockedDMChannel.cs b/test/Discord.Net.Tests.Unit/MockedEntities/MockedDMChannel.cs index 870c05812..f169fb717 100644 --- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedDMChannel.cs +++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedDMChannel.cs @@ -73,17 +73,17 @@ namespace Discord throw new NotImplementedException(); } - public Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) + public Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) { throw new NotImplementedException(); } - public Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) + public Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) { throw new NotImplementedException(); } - public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null) + public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null) { throw new NotImplementedException(); } diff --git a/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs b/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs index 31df719da..e662d628a 100644 --- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs +++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs @@ -81,17 +81,17 @@ namespace Discord throw new NotImplementedException(); } - public Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) + public Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) { throw new NotImplementedException(); } - public Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) + public Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) { throw new NotImplementedException(); } - public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null) + public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null) { throw new NotImplementedException(); } diff --git a/test/Discord.Net.Tests.Unit/MockedEntities/MockedTextChannel.cs b/test/Discord.Net.Tests.Unit/MockedEntities/MockedTextChannel.cs index a95a91f5c..fbaaf9a18 100644 --- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedTextChannel.cs +++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedTextChannel.cs @@ -167,17 +167,17 @@ namespace Discord throw new NotImplementedException(); } - public Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) + public Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) { throw new NotImplementedException(); } - public Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) + public Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) { throw new NotImplementedException(); } - public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null) + public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null) { throw new NotImplementedException(); } From 521391690300aadbd624187279d9a27b5c3880c2 Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 25 Nov 2020 14:27:26 -0300 Subject: [PATCH 056/212] fix: Possible NullReferenceException when receiving InvalidSession (#1695) --- .../DiscordSocketClient.cs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 26a0d73bd..8fa09e8f6 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -534,15 +534,20 @@ namespace Discord.WebSocket _sessionId = null; _lastSeq = 0; - await _shardedClient.AcquireIdentifyLockAsync(ShardId, _connection.CancelToken).ConfigureAwait(false); - try + if (_shardedClient != null) { - await ApiClient.SendIdentifyAsync(shardID: ShardId, totalShards: TotalShards, guildSubscriptions: _guildSubscriptions, gatewayIntents: _gatewayIntents, presence: BuildCurrentStatus()).ConfigureAwait(false); - } - finally - { - _shardedClient.ReleaseIdentifyLock(); + await _shardedClient.AcquireIdentifyLockAsync(ShardId, _connection.CancelToken).ConfigureAwait(false); + try + { + await ApiClient.SendIdentifyAsync(shardID: ShardId, totalShards: TotalShards, guildSubscriptions: _guildSubscriptions, gatewayIntents: _gatewayIntents, presence: BuildCurrentStatus()).ConfigureAwait(false); + } + finally + { + _shardedClient.ReleaseIdentifyLock(); + } } + else + await ApiClient.SendIdentifyAsync(shardID: ShardId, totalShards: TotalShards, guildSubscriptions: _guildSubscriptions, gatewayIntents: _gatewayIntents, presence: BuildCurrentStatus()).ConfigureAwait(false); } break; case GatewayOpCode.Reconnect: From 5ed01a30b6c25da65e5c401bf6b7ed8fbb939926 Mon Sep 17 00:00:00 2001 From: Paulo Date: Thu, 26 Nov 2020 14:30:58 -0300 Subject: [PATCH 057/212] fix: UserMentions throwing NullRef --- .../Entities/Messages/SocketUserMessage.cs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs b/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs index 4f876ed6f..6d8581291 100644 --- a/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs +++ b/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs @@ -118,11 +118,14 @@ namespace Discord.WebSocket for (int i = 0; i < value.Length; i++) { var val = value[i]; - var guildUser = guild.GetUser(val.Id); - if (guildUser != null) - newMentions.Add(guildUser); - else if (val.Object != null) - newMentions.Add(SocketUnknownUser.Create(Discord, state, val.Object)); + if (val.Object != null) + { + var user = Channel.GetUserAsync(val.Object.Id, CacheMode.CacheOnly).GetAwaiter().GetResult() as SocketUser; + if (user != null) + newMentions.Add(user); + else + newMentions.Add(SocketUnknownUser.Create(Discord, state, val.Object)); + } } _userMentions = newMentions.ToImmutable(); } From 574b503e9e87caee54c6df8143ada14268f4dcbb Mon Sep 17 00:00:00 2001 From: roridev Date: Fri, 27 Nov 2020 13:38:00 -0300 Subject: [PATCH 058/212] Moves CalculateScore function to outer scope. --- src/Discord.Net.Commands/CommandService.cs | 37 +++++++++++----------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/src/Discord.Net.Commands/CommandService.cs b/src/Discord.Net.Commands/CommandService.cs index 1d4b0e15a..15f0c866d 100644 --- a/src/Discord.Net.Commands/CommandService.cs +++ b/src/Discord.Net.Commands/CommandService.cs @@ -511,7 +511,6 @@ namespace Discord.Commands await _commandExecutedEvent.InvokeAsync(Optional.Create(), context, searchResult).ConfigureAwait(false); return searchResult; } - var commands = searchResult.Commands; var preconditionResults = new Dictionary(); @@ -559,24 +558,6 @@ namespace Discord.Commands parseResultsDict[pair.Key] = parseResult; } - // Calculates the 'score' of a command given a parse result - float CalculateScore(CommandMatch match, ParseResult parseResult) - { - float argValuesScore = 0, paramValuesScore = 0; - - if (match.Command.Parameters.Count > 0) - { - var argValuesSum = parseResult.ArgValues?.Sum(x => x.Values.OrderByDescending(y => y.Score).FirstOrDefault().Score) ?? 0; - var paramValuesSum = parseResult.ParamValues?.Sum(x => x.Values.OrderByDescending(y => y.Score).FirstOrDefault().Score) ?? 0; - - argValuesScore = argValuesSum / match.Command.Parameters.Count; - paramValuesScore = paramValuesSum / match.Command.Parameters.Count; - } - - var totalArgsScore = (argValuesScore + paramValuesScore) / 2; - return match.Command.Priority + totalArgsScore * 0.99f; - } - //Order the parse results by their score so that we choose the most likely result to execute var parseResults = parseResultsDict .OrderByDescending(x => CalculateScore(x.Key, x.Value)); @@ -603,6 +584,24 @@ namespace Discord.Commands return result; } + // Calculates the 'score' of a command given a parse result + float CalculateScore(CommandMatch match, ParseResult parseResult) + { + float argValuesScore = 0, paramValuesScore = 0; + + if (match.Command.Parameters.Count > 0) + { + var argValuesSum = parseResult.ArgValues?.Sum(x => x.Values.OrderByDescending(y => y.Score).FirstOrDefault().Score) ?? 0; + var paramValuesSum = parseResult.ParamValues?.Sum(x => x.Values.OrderByDescending(y => y.Score).FirstOrDefault().Score) ?? 0; + + argValuesScore = argValuesSum / match.Command.Parameters.Count; + paramValuesScore = paramValuesSum / match.Command.Parameters.Count; + } + + var totalArgsScore = (argValuesScore + paramValuesScore) / 2; + return match.Command.Priority + totalArgsScore * 0.99f; + } + protected virtual void Dispose(bool disposing) { if (!_isDisposed) From 7955a0909043b964875796142bcfc5d9997e4798 Mon Sep 17 00:00:00 2001 From: roridev Date: Fri, 27 Nov 2020 13:52:53 -0300 Subject: [PATCH 059/212] Creates ValidateAndGetBestMatch function This function will validate all commands from a SearchResult and return the result of said validation, along with the command matched, if a valid match was found. --- src/Discord.Net.Commands/CommandService.cs | 77 ++++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/src/Discord.Net.Commands/CommandService.cs b/src/Discord.Net.Commands/CommandService.cs index 15f0c866d..be83b955f 100644 --- a/src/Discord.Net.Commands/CommandService.cs +++ b/src/Discord.Net.Commands/CommandService.cs @@ -602,6 +602,83 @@ namespace Discord.Commands return match.Command.Priority + totalArgsScore * 0.99f; } + /// + /// Validates and gets the best from a specified + /// + /// The SearchResult. + /// The context of the command. + /// The service provider to be used on the command's dependency injection. + /// The handling mode when multiple command matches are found. + /// A task that represents the asynchronous validation operation. The task result contains the result of the + /// command validation and the command matched, if a match was found. + public async Task<(IResult, Optional)> ValidateAndGetBestMatch(SearchResult matches, ICommandContext context, IServiceProvider provider, MultiMatchHandling multiMatchHandling = MultiMatchHandling.Exception) + { + if (!matches.IsSuccess) + return (matches, Optional.Create()); + + var commands = matches.Commands; + var preconditionResults = new Dictionary(); + + foreach (var command in commands) + { + preconditionResults[command] = await command.CheckPreconditionsAsync(context, provider); + } + + var successfulPreconditions = preconditionResults + .Where(x => x.Value.IsSuccess) + .ToArray(); + + if (successfulPreconditions.Length == 0) + { + var bestCandidate = preconditionResults + .OrderByDescending(x => x.Key.Command.Priority) + .FirstOrDefault(x => !x.Value.IsSuccess); + + return (bestCandidate.Value, bestCandidate.Key); + } + + var parseResults = new Dictionary(); + + foreach (var pair in successfulPreconditions) + { + var parseResult = await pair.Key.ParseAsync(context, matches, pair.Value, provider).ConfigureAwait(false); + + if (parseResult.Error == CommandError.MultipleMatches) + { + IReadOnlyList argList, paramList; + switch (multiMatchHandling) + { + case MultiMatchHandling.Best: + argList = parseResult.ArgValues.Select(x => x.Values.OrderByDescending(y => y.Score).First()).ToImmutableArray(); + paramList = parseResult.ParamValues.Select(x => x.Values.OrderByDescending(y => y.Score).First()).ToImmutableArray(); + parseResult = ParseResult.FromSuccess(argList, paramList); + break; + } + } + + parseResults[pair.Key] = parseResult; + } + + var weightedParseResults = parseResults + .OrderByDescending(x => CalculateScore(x.Key, x.Value)); + + var successfulParses = weightedParseResults + .Where(x => x.Value.IsSuccess) + .ToArray(); + + if(successfulParses.Length == 0) + { + var bestMatch = parseResults + .FirstOrDefault(x => !x.Value.IsSuccess); + + return (bestMatch.Value, bestMatch.Key); + } + + var chosenOverload = successfulParses[0]; + + return (chosenOverload.Value, chosenOverload.Key); + } + protected virtual void Dispose(bool disposing) { if (!_isDisposed) From c455b5033123825c639d8f18e52033b69b5595ba Mon Sep 17 00:00:00 2001 From: roridev Date: Fri, 27 Nov 2020 14:10:39 -0300 Subject: [PATCH 060/212] Make use of new ValidateAndGetBestMatch api on ExecuteAsync --- src/Discord.Net.Commands/CommandService.cs | 80 ++++------------------ 1 file changed, 12 insertions(+), 68 deletions(-) diff --git a/src/Discord.Net.Commands/CommandService.cs b/src/Discord.Net.Commands/CommandService.cs index be83b955f..6fbf0a9bd 100644 --- a/src/Discord.Net.Commands/CommandService.cs +++ b/src/Discord.Net.Commands/CommandService.cs @@ -506,82 +506,26 @@ namespace Discord.Commands services = services ?? EmptyServiceProvider.Instance; var searchResult = Search(input); - if (!searchResult.IsSuccess) - { - await _commandExecutedEvent.InvokeAsync(Optional.Create(), context, searchResult).ConfigureAwait(false); - return searchResult; - } - var commands = searchResult.Commands; - var preconditionResults = new Dictionary(); - - foreach (var match in commands) - { - preconditionResults[match] = await match.Command.CheckPreconditionsAsync(context, services).ConfigureAwait(false); - } - - var successfulPreconditions = preconditionResults - .Where(x => x.Value.IsSuccess) - .ToArray(); + //Since ValidateAndGetBestMatch is deterministic on the return type, we can use pattern matching on the type for infering the code flow. + var (validationResult, commandMatch) = await ValidateAndGetBestMatch(searchResult, context, services, multiMatchHandling); - if (successfulPreconditions.Length == 0) + if(validationResult is SearchResult) { - //All preconditions failed, return the one from the highest priority command - var bestCandidate = preconditionResults - .OrderByDescending(x => x.Key.Command.Priority) - .FirstOrDefault(x => !x.Value.IsSuccess); - - await _commandExecutedEvent.InvokeAsync(bestCandidate.Key.Command, context, bestCandidate.Value).ConfigureAwait(false); - return bestCandidate.Value; + await _commandExecutedEvent.InvokeAsync(Optional.Create(), context, searchResult).ConfigureAwait(false); } - - //If we get this far, at least one precondition was successful. - - var parseResultsDict = new Dictionary(); - foreach (var pair in successfulPreconditions) + else if(validationResult is not ParseResult parseResult) { - var parseResult = await pair.Key.ParseAsync(context, searchResult, pair.Value, services).ConfigureAwait(false); - - if (parseResult.Error == CommandError.MultipleMatches) - { - IReadOnlyList argList, paramList; - switch (multiMatchHandling) - { - case MultiMatchHandling.Best: - argList = parseResult.ArgValues.Select(x => x.Values.OrderByDescending(y => y.Score).First()).ToImmutableArray(); - paramList = parseResult.ParamValues.Select(x => x.Values.OrderByDescending(y => y.Score).First()).ToImmutableArray(); - parseResult = ParseResult.FromSuccess(argList, paramList); - break; - } - } - - parseResultsDict[pair.Key] = parseResult; + await _commandExecutedEvent.InvokeAsync(commandMatch.Value.Command,context,validationResult).ConfigureAwait(false); } - - //Order the parse results by their score so that we choose the most likely result to execute - var parseResults = parseResultsDict - .OrderByDescending(x => CalculateScore(x.Key, x.Value)); - - var successfulParses = parseResults - .Where(x => x.Value.IsSuccess) - .ToArray(); - - if (successfulParses.Length == 0) + else { - //All parses failed, return the one from the highest priority command, using score as a tie breaker - var bestMatch = parseResults - .FirstOrDefault(x => !x.Value.IsSuccess); - - await _commandExecutedEvent.InvokeAsync(bestMatch.Key.Command, context, bestMatch.Value).ConfigureAwait(false); - return bestMatch.Value; + var result = await commandMatch.Value.Command.ExecuteAsync(context, parseResult, services).ConfigureAwait(false); + if (!result.IsSuccess && !(result is RuntimeResult || result is ExecuteResult)) // succesful results raise the event in CommandInfo#ExecuteInternalAsync (have to raise it there b/c deffered execution) + await _commandExecutedEvent.InvokeAsync(commandMatch.Value.Command, context, result); + return result; } - - //If we get this far, at least one parse was successful. Execute the most likely overload. - var chosenOverload = successfulParses[0]; - var result = await chosenOverload.Key.ExecuteAsync(context, chosenOverload.Value, services).ConfigureAwait(false); - if (!result.IsSuccess && !(result is RuntimeResult || result is ExecuteResult)) // succesful results raise the event in CommandInfo#ExecuteInternalAsync (have to raise it there b/c deffered execution) - await _commandExecutedEvent.InvokeAsync(chosenOverload.Key.Command, context, result); - return result; + return validationResult; } // Calculates the 'score' of a command given a parse result From 56d16397f7da77df31b6e1e2a1fd1a318c081cfd Mon Sep 17 00:00:00 2001 From: roridev Date: Fri, 27 Nov 2020 18:42:23 -0300 Subject: [PATCH 061/212] Fixes Azure linux build failing due to a CS8652. --- src/Discord.Net.Commands/CommandService.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Discord.Net.Commands/CommandService.cs b/src/Discord.Net.Commands/CommandService.cs index 6fbf0a9bd..f54072811 100644 --- a/src/Discord.Net.Commands/CommandService.cs +++ b/src/Discord.Net.Commands/CommandService.cs @@ -514,17 +514,17 @@ namespace Discord.Commands { await _commandExecutedEvent.InvokeAsync(Optional.Create(), context, searchResult).ConfigureAwait(false); } - else if(validationResult is not ParseResult parseResult) - { - await _commandExecutedEvent.InvokeAsync(commandMatch.Value.Command,context,validationResult).ConfigureAwait(false); - } - else + else if(validationResult is ParseResult parseResult) { var result = await commandMatch.Value.Command.ExecuteAsync(context, parseResult, services).ConfigureAwait(false); if (!result.IsSuccess && !(result is RuntimeResult || result is ExecuteResult)) // succesful results raise the event in CommandInfo#ExecuteInternalAsync (have to raise it there b/c deffered execution) await _commandExecutedEvent.InvokeAsync(commandMatch.Value.Command, context, result); return result; } + else + { + await _commandExecutedEvent.InvokeAsync(commandMatch.Value.Command, context, validationResult).ConfigureAwait(false); + } return validationResult; } From 1e9b252e642e560abd5e1a319c80ba3c66cf304c Mon Sep 17 00:00:00 2001 From: Paulo Date: Sun, 29 Nov 2020 21:18:52 -0300 Subject: [PATCH 062/212] fix: Wrong author for SocketUserMessage.ReferencedMessage --- .../Entities/Messages/SocketUserMessage.cs | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs b/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs index 6d8581291..bea0f45eb 100644 --- a/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs +++ b/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs @@ -139,7 +139,29 @@ namespace Discord.WebSocket } if (model.ReferencedMessage.IsSpecified && model.ReferencedMessage.Value != null) - _referencedMessage = RestUserMessage.Create(Discord, Channel, Author, model.ReferencedMessage.Value); + { + var refMsg = model.ReferencedMessage.Value; + ulong? webhookId = refMsg.WebhookId.ToNullable(); + SocketUser refMsgAuthor = null; + if (refMsg.Author.IsSpecified) + { + if (guild != null) + { + if (webhookId != null) + refMsgAuthor = SocketWebhookUser.Create(guild, state, refMsg.Author.Value, webhookId.Value); + else + refMsgAuthor = guild.GetUser(refMsg.Author.Value.Id); + } + else + refMsgAuthor = (Channel as SocketChannel).GetUser(refMsg.Author.Value.Id); + if (refMsgAuthor == null) + refMsgAuthor = SocketUnknownUser.Create(Discord, state, refMsg.Author.Value); + } + else + // Message author wasn't specified in the payload, so create a completely anonymous unknown user + refMsgAuthor = new SocketUnknownUser(Discord, id: 0); + _referencedMessage = SocketUserMessage.Create(Discord, state, refMsgAuthor, Channel, refMsg); + } } /// From 9d7cb39faabd087c835515e63ab6ce53e2202991 Mon Sep 17 00:00:00 2001 From: Paulo Date: Tue, 1 Dec 2020 02:47:20 -0300 Subject: [PATCH 063/212] fix: Rollback Activities to Game (#1702) --- .../API/Gateway/StatusUpdateParams.cs | 4 +-- .../DiscordSocketApiClient.cs | 8 ++--- .../DiscordSocketClient.cs | 30 +++++++++++-------- 3 files changed, 23 insertions(+), 19 deletions(-) diff --git a/src/Discord.Net.WebSocket/API/Gateway/StatusUpdateParams.cs b/src/Discord.Net.WebSocket/API/Gateway/StatusUpdateParams.cs index e685e5e57..5fec8b4bd 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/StatusUpdateParams.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/StatusUpdateParams.cs @@ -12,7 +12,7 @@ namespace Discord.API.Gateway public long? IdleSince { get; set; } [JsonProperty("afk")] public bool IsAFK { get; set; } - [JsonProperty("activities")] - public Game[] Activities { get; set; } + [JsonProperty("game")] + public Game Game { get; set; } } } diff --git a/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs b/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs index 5a926ba26..d14a314d6 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs @@ -216,7 +216,7 @@ namespace Discord.API await _sentGatewayMessageEvent.InvokeAsync(opCode).ConfigureAwait(false); } - public async Task SendIdentifyAsync(int largeThreshold = 100, int shardID = 0, int totalShards = 1, bool guildSubscriptions = true, GatewayIntents? gatewayIntents = null, (UserStatus, bool, long?, GameModel[])? presence = null, RequestOptions options = null) + public async Task SendIdentifyAsync(int largeThreshold = 100, int shardID = 0, int totalShards = 1, bool guildSubscriptions = true, GatewayIntents? gatewayIntents = null, (UserStatus, bool, long?, GameModel)? presence = null, RequestOptions options = null) { options = RequestOptions.CreateOrClone(options); var props = new Dictionary @@ -246,7 +246,7 @@ namespace Discord.API Status = presence.Value.Item1, IsAFK = presence.Value.Item2, IdleSince = presence.Value.Item3, - Activities = presence.Value.Item4 + Game = presence.Value.Item4, }; } @@ -268,7 +268,7 @@ namespace Discord.API options = RequestOptions.CreateOrClone(options); await SendGatewayAsync(GatewayOpCode.Heartbeat, lastSeq, options: options).ConfigureAwait(false); } - public async Task SendStatusUpdateAsync(UserStatus status, bool isAFK, long? since, GameModel[] game, RequestOptions options = null) + public async Task SendStatusUpdateAsync(UserStatus status, bool isAFK, long? since, GameModel game, RequestOptions options = null) { options = RequestOptions.CreateOrClone(options); var args = new StatusUpdateParams @@ -276,7 +276,7 @@ namespace Discord.API Status = status, IdleSince = since, IsAFK = isAFK, - Activities = game + Game = game }; options.BucketId = GatewayBucket.Get(GatewayBucketType.PresenceUpdate).Id; await SendGatewayAsync(GatewayOpCode.StatusUpdate, args, options: options).ConfigureAwait(false); diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 8fa09e8f6..0a2123ef2 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -57,7 +57,8 @@ namespace Discord.WebSocket /// public override int Latency { get; protected set; } /// - public override UserStatus Status { get; protected set; } = UserStatus.Online; + public override UserStatus Status { get => _status ?? UserStatus.Online; protected set => _status = value; } + private UserStatus? _status; /// public override IActivity Activity { get => _activity.GetValueOrDefault(); protected set => _activity = Optional.Create(value); } private Optional _activity; @@ -449,22 +450,25 @@ namespace Discord.WebSocket return; CurrentUser.Presence = new SocketPresence(Status, Activity, null, null); - var presence = BuildCurrentStatus(); + var presence = BuildCurrentStatus() ?? (UserStatus.Online, false, null, null); await ApiClient.SendStatusUpdateAsync( - presence.Item1, - presence.Item2, - presence.Item3, - presence.Item4).ConfigureAwait(false); + status: presence.Item1, + isAFK: presence.Item2, + since: presence.Item3, + game: presence.Item4).ConfigureAwait(false); } - private (UserStatus, bool, long?, GameModel[]) BuildCurrentStatus() + private (UserStatus, bool, long?, GameModel)? BuildCurrentStatus() { - var status = Status; + var status = _status; var statusSince = _statusSince; var activity = _activity; - GameModel[] gameModels = null; + if (status == null && !activity.IsSpecified) + return null; + + GameModel game = null; // Discord only accepts rich presence over RPC, don't even bother building a payload if (activity.GetValueOrDefault() != null) @@ -476,15 +480,15 @@ namespace Discord.WebSocket gameModel.Type = Activity.Type; if (Activity is StreamingGame streamGame) gameModel.StreamUrl = streamGame.Url; - gameModels = new[] { gameModel }; + game = gameModel; } else if (activity.IsSpecified) - gameModels = new GameModel[0]; + game = null; - return (status, + return (status ?? UserStatus.Online, status == UserStatus.AFK, statusSince != null ? _statusSince.Value.ToUnixTimeMilliseconds() : (long?)null, - gameModels); + game); } private async Task ProcessMessageAsync(GatewayOpCode opCode, int? seq, string type, object payload) From e385c40fc7b3106fd8ee09ec9feb4f2b89514224 Mon Sep 17 00:00:00 2001 From: Joel Liechti <52202086+Joelius300@users.noreply.github.com> Date: Mon, 14 Dec 2020 04:42:04 +0100 Subject: [PATCH 064/212] docs: Update summary of SocketVoiceChannel.Users (#1714) The inherited summary incorrectly stated that all users who _see_ the channel are returned when in reality only the ones _connected_ are. --- .../Entities/Channels/SocketVoiceChannel.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs index 9fff6c207..bf4a63c9f 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs @@ -34,7 +34,12 @@ namespace Discord.WebSocket public Task SyncPermissionsAsync(RequestOptions options = null) => ChannelHelper.SyncPermissionsAsync(this, Discord, options); - /// + /// + /// Gets a collection of users that are currently connected to this voice channel. + /// + /// + /// A read-only collection of users that are currently connected to this voice channel. + /// public override IReadOnlyCollection Users => Guild.Users.Where(x => x.VoiceChannel?.Id == Id).ToImmutableArray(); From aacfea05ea6739b3eccde3fee87b87159457cff0 Mon Sep 17 00:00:00 2001 From: vrachv <52053491+vrachv@users.noreply.github.com> Date: Mon, 14 Dec 2020 06:54:31 +0300 Subject: [PATCH 065/212] feature: Add max bitrate value to SocketGuild * Update SocketGuild.cs * Fix returns value docs Signed-off-by: Still Hsu Co-authored-by: Still Hsu --- .../Entities/Guilds/SocketGuild.cs | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs index ad58a735e..2f098844f 100644 --- a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs +++ b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs @@ -178,6 +178,26 @@ namespace Discord.WebSocket } } /// + /// Gets the max bitrate for voice channels in this guild. + /// + /// + /// A representing the maximum bitrate value allowed by Discord in this guild. + /// + public int MaxBitrate + { + get + { + var maxBitrate = PremiumTier switch + { + PremiumTier.Tier1 => 128000, + PremiumTier.Tier2 => 256000, + PremiumTier.Tier3 => 384000, + _ => 96000, + }; + return maxBitrate; + } + } + /// /// Gets the embed channel (i.e. the channel set in the guild's widget settings) in this guild. /// /// From 47f571ef1c883a9c3ba20e30ffeb4aa04c9a1c70 Mon Sep 17 00:00:00 2001 From: Daniel Baynton <49287178+230Daniel@users.noreply.github.com> Date: Mon, 14 Dec 2020 03:55:03 +0000 Subject: [PATCH 066/212] fix: SocketGuild.HasAllMembers is false if a user left a guild (#1683) * Fix: HasAllMembers is false if a user left * Fix: Correct boolean logic --- src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs index 2f098844f..e9e535998 100644 --- a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs +++ b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs @@ -136,7 +136,7 @@ namespace Discord.WebSocket /// public string BannerUrl => CDN.GetGuildBannerUrl(Id, BannerId); /// Indicates whether the client has all the members downloaded to the local guild cache. - public bool HasAllMembers => MemberCount == DownloadedMemberCount;// _downloaderPromise.Task.IsCompleted; + public bool HasAllMembers => MemberCount <= DownloadedMemberCount;// _downloaderPromise.Task.IsCompleted; /// Indicates whether the guild cache is synced to this guild. public bool IsSynced => _syncPromise.Task.IsCompleted; public Task SyncPromise => _syncPromise.Task; From 857ef77b41967148ee9f2dfb866b75062795625c Mon Sep 17 00:00:00 2001 From: Still Hsu <5843208+Still34@users.noreply.github.com> Date: Wed, 6 May 2020 09:26:15 +0800 Subject: [PATCH 067/212] Add new method of role ID copy Signed-off-by: Still Hsu <5843208+Still34@users.noreply.github.com> --- docs/faq/basics/getting-started.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/faq/basics/getting-started.md b/docs/faq/basics/getting-started.md index f38d2cea7..e254226d0 100644 --- a/docs/faq/basics/getting-started.md +++ b/docs/faq/basics/getting-started.md @@ -74,6 +74,9 @@ it will return the user ID of the aforementioned user. Several common ways to do this: -1. Make the role mentionable and mention the role, and escape it +1. (Easiest) Right click on the role either in the Server Settings + or in the user's role list. + ![Roles](images/role-copy.png) +2. Make the role mentionable and mention the role, and escape it using the `\` character in front. -2. Inspect the roles collection within the guild via your debugger. \ No newline at end of file +3. Inspect the roles collection within the guild via your debugger. \ No newline at end of file From 38f6186cd04434a3f8abbecbc58ccb847d2973fd Mon Sep 17 00:00:00 2001 From: Still Hsu <5843208+Still34@users.noreply.github.com> Date: Wed, 6 May 2020 09:27:26 +0800 Subject: [PATCH 068/212] Add missing asset Signed-off-by: Still Hsu <5843208+Still34@users.noreply.github.com> --- docs/faq/basics/images/role-copy.png | Bin 0 -> 16091 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/faq/basics/images/role-copy.png diff --git a/docs/faq/basics/images/role-copy.png b/docs/faq/basics/images/role-copy.png new file mode 100644 index 0000000000000000000000000000000000000000..1dbc2982f460a6bee2e6128cc60577efc714ac05 GIT binary patch literal 16091 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 literal 0 HcmV?d00001 From 9ea3291ef14a9c1f1a7604d47a4856aaacccaa2a Mon Sep 17 00:00:00 2001 From: Still Hsu <5843208+Still34@users.noreply.github.com> Date: Fri, 22 May 2020 11:29:25 +0800 Subject: [PATCH 069/212] Resolve inheritdocs warning --- src/Discord.Net.Rest/Entities/Messages/Attachment.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Discord.Net.Rest/Entities/Messages/Attachment.cs b/src/Discord.Net.Rest/Entities/Messages/Attachment.cs index abe049180..1cd73518a 100644 --- a/src/Discord.Net.Rest/Entities/Messages/Attachment.cs +++ b/src/Discord.Net.Rest/Entities/Messages/Attachment.cs @@ -3,7 +3,7 @@ using Model = Discord.API.Attachment; namespace Discord { - /// + /// [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class Attachment : IAttachment { From 62539f039109976ea64c52ec7a8df055b47e31e4 Mon Sep 17 00:00:00 2001 From: Still Hsu <5843208+Still34@users.noreply.github.com> Date: Fri, 22 May 2020 11:42:29 +0800 Subject: [PATCH 070/212] Move bulk deletes remarks from to --- .../DiscordSocketConfig.cs | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/Discord.Net.WebSocket/DiscordSocketConfig.cs b/src/Discord.Net.WebSocket/DiscordSocketConfig.cs index 6b0c5ebc4..c374d9e0d 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketConfig.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketConfig.cs @@ -109,14 +109,18 @@ namespace Discord.WebSocket /// /// Gets or sets the behavior for on bulk deletes. - /// - /// If true, the event will not be raised for bulk deletes, and - /// only the will be raised. - /// - /// If false, both events will be raised. - /// - /// If unset, both events will be raised, but a warning will be raised the first time a bulk delete event is received. /// + /// + /// + /// If true, the event will not be raised for bulk + /// deletes, and only the will be raised. If false + /// , both events will be raised. + /// + /// + /// If unset, both events will be raised, but a warning will be raised the first time a bulk delete event is + /// received. + /// + /// public bool? ExclusiveBulkDelete { get; set; } = null; /// From 13a41f875478a04738e64438aaa2508a25903df7 Mon Sep 17 00:00:00 2001 From: Still Hsu <5843208+Still34@users.noreply.github.com> Date: Fri, 22 May 2020 11:44:27 +0800 Subject: [PATCH 071/212] Mark null as a specific langword in summary --- src/Discord.Net.WebSocket/DiscordSocketConfig.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Discord.Net.WebSocket/DiscordSocketConfig.cs b/src/Discord.Net.WebSocket/DiscordSocketConfig.cs index c374d9e0d..8392105f0 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketConfig.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketConfig.cs @@ -102,8 +102,8 @@ namespace Discord.WebSocket /// public bool AlwaysDownloadUsers { get; set; } = false; /// - /// Gets or sets the timeout for event handlers, in milliseconds, after which a warning will be logged. Null - /// disables this check. + /// Gets or sets the timeout for event handlers, in milliseconds, after which a warning will be logged. + /// nulldisables this check. /// public int? HandlerTimeout { get; set; } = 3000; From 833ee42a1fd3cbdfe2e27af49cc1c904df7eb862 Mon Sep 17 00:00:00 2001 From: Still Hsu <5843208+Still34@users.noreply.github.com> Date: Fri, 22 May 2020 11:51:51 +0800 Subject: [PATCH 072/212] Cleanup GatewayReconnectException docs --- .../GatewayReconnectException.cs | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/Discord.Net.WebSocket/GatewayReconnectException.cs b/src/Discord.Net.WebSocket/GatewayReconnectException.cs index 1a8024558..c5b15e007 100644 --- a/src/Discord.Net.WebSocket/GatewayReconnectException.cs +++ b/src/Discord.Net.WebSocket/GatewayReconnectException.cs @@ -3,18 +3,15 @@ using System; namespace Discord.WebSocket { /// - /// An exception thrown when the gateway client has been requested to - /// reconnect. + /// The exception thrown when the gateway client has been requested to reconnect. /// public class GatewayReconnectException : Exception { /// - /// Creates a new instance of the - /// type. + /// Initializes a new instance of the class with the reconnection + /// message. /// - /// - /// The reason why the gateway has been requested to reconnect. - /// + /// The reason why the gateway has been requested to reconnect. public GatewayReconnectException(string message) : base(message) { } From 28a6f97d628a2b5f1afec6c42aa03ad8731f9ea1 Mon Sep 17 00:00:00 2001 From: Still Hsu <5843208+Still34@users.noreply.github.com> Date: Sun, 2 Aug 2020 23:25:34 +0800 Subject: [PATCH 073/212] Update Docfx.Plugins.LastModified to v1.2.4 Signed-off-by: Still Hsu <5843208+Still34@users.noreply.github.com> --- .../plugins/LastModifiedPostProcessor.dll | Bin 12288 -> 12288 bytes .../last-modified/plugins/LibGit2Sharp.dll | Bin 420864 -> 424448 bytes .../plugins/LibGit2Sharp.dll.config | 6 +++--- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/_template/last-modified/plugins/LastModifiedPostProcessor.dll b/docs/_template/last-modified/plugins/LastModifiedPostProcessor.dll index dd790e55eb6bb8c90b332cbc725c122308a65836..ccb2b0e3718efef6eacea25b3f1a0a7afdbe0bd3 100644 GIT binary patch delta 235 zcmZojXh@jQ!Lpv?e(%PfJA8~RlQa31nJpNYCinBJGD=V0%5M$gZT`$3D=09LgHLXq ztcvfN_eXBt7OD^2oS=A$S;R!ofPsOFk%84v&q&XNfkBRuL2|N!xD*>h!#oI6lCggB zJ#p#DQ&cTjOwII+CSO$5XJcTHpEqyPWEQmm0q;G_)IW+(_G$Yj9Nwe4TYPegT8{!$ zFvblk2vV(b^QdZF0QdfY WV^$LeJqCl#f_g5Dn;G@~GXelq&`4PT delta 235 zcmZojXh@jQ!Lm>`;myXLJA91HlQa31nKc-=CinBJGD=O}%5M$gZT`$3D=6TizeCp&lODEoS=A$S;Sb+fPsOFk%84v&q&XhfkBRuL2|N!xD*>h!vY9XlBuC# z@;!0s$&*zrSWOJ{3=JlqSJh|n?`v5wnMEx?;C-_pQ%lw~-x+IfF(eea+?<@E)}sIw z+zS%~s#eHUnOmiuYnQb)BD`j^fO;JxCo=;R10w?i1M}wT8nH}_#+$!t^)oUWPj1yQ VW;JHeV=&k(sOQ4CnNjaQBLLP6Nap|m diff --git a/docs/_template/last-modified/plugins/LibGit2Sharp.dll b/docs/_template/last-modified/plugins/LibGit2Sharp.dll index 82f214846eed7e2e2b651ebdf5d079ed20a913a5..31651507274c76c4e538cd3078fb7c4f79daa7f6 100644 GIT binary patch literal 424448 zcmd44d4L>Mx&K{LRbAcFvm~9F^h_p@3Co0Hx+jDnAs`|MA|eR5U_gWbf)bGmU4WQQ z4+8>j2?Fkl2m!e+SKJjh#Qk0uh@hy50ln_~f?mCP$KU7soT~1gNl@>-?;r0#`aI`3 z+jE}toaa1et>aI<)(bq(3;FlAzj@vrxcWQXe*gZ@48eor9~<;O*!$Hz?&vx0t9v}- z`RAp}H#U;zHO_qD^0Uvp;DY3$wc;y(qRsaT-o}S|ytVHRy#z{Bz{vGA09!1IScpjYWL8g7L=soQeudK$%`My&fttvsgQuC@e zsj9^V1?M?5+AX)IDjCMqK~1(oHHD`X?6__Kh)Rwy0K}pkVSwiitqQ!qKqC!YNl)wd zqH+|p?kISnD=B>rsJ>#<`Z%a!xOvaO3m=Z}gQnKU9A>*>gAz^16KP@RX;g|S|~l@b@$|P;^tu@X3aF6CiH{k@#gb`i_zx3*d0x-w6NrGg{VVP zXnAsF22^KzV9C&`g7*@m#PfFBdL*4}qB{Kv1YkBgOYQswl5Cq8$xvr^P@@^@xgFG! z40TQiHI|{y?Vy%ssOPm&DaDp&R1MTrdK8`(9WawzXjH#HoK6pyDm#UvymljU+AMj| z#7Judd6*as6NbDf-VClanqi&-CIww??UrGVZ)0``Qzq4uz|;?oHjm-o{GE`WJ0mab zFFo8BWTEjl3$()hbe!gQ39lB@qsel7I3{Vi`fxwdo}6W}bbclS%0!{_GwGd|Nmz*D z4P`GH3M*l}06xWkpe93w>QGeMw-Q#O_yr0r`c30gQw*pS(|yP~VUQ_TqLFn&Q6;Jr z4*J@T{z_OcR>C2lUu5w#MZVh_159Lm+)ATcwgdpQ5ElJ}HG@Wks{md1|*~ zi5=4t7mz9d z`=lHrV6_%HIGm&dD?)N2XnBN8PLk&mzZv%6xez(^NiBqKzx#v2uLjh{S&WW({PV#rxR<3;Us77(}qhL+*v6h%3=JL@2!m?(5{)IVrC zEDQQaFfkRan0_}c77Wk!q>xrFN6FK1`nm_VA_?61w%F@k)*jy=sXQs20MBIxRniS6 z1BKR|l7S#Z0A3&gp!jlpy6D;lcKR+tC#FVLOn(YsHo72>GBKkN7x8K$7UGjh==-zL z`J_#sg(qFdPYc-%;capb=;3%Re5(7ylg=L`zfwV~eKDdOztDM_N|L}mbfBM{Y3ZKr ze9hBv{q&`ZNIiyD`Of|X_Afq=pZW^l;v^0A=I0PQxh+&nwn33xo_v&8MutT|*3M8w zq(WsTo5(MnrQ8WW@q5Voo76-!EMTksgyey6⩔2{OK~enp1#+l==uJ^J14AV%GbPu? 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%0DNuN=qWh4LMlRSe)%h=$ z>c~E|!EMNmjTZBSrJG58bjwWA$?bqMK=+8Ik`|9Lryzb^;1}#W3H8NZ!+M=qg7YXg z2mTv!@24)agSj&`@mm@=1^*t9GFm9jm7kik5g!cBwC%V}4{XP6dZ3%MriWt5n_Dd= z=AW<81i{BaEPV~l3BAQ~;|9$Q#p%g}qcLj?E_(~#v>iRAUKCGgTP&$(jWxim%t=}~ z+gC?<+#%_!QxEU*Ku_5^2bZ6d1Z+u9_~k2do80EN1L8M6K;3*wL~m}_!_sx% z-!l{6%G&_M@plLEmQ|D6FoDghSv91pcDHIaA9pgXQ%)~Bwtc`OD(6js)6O~HA3X!Y z82ZB|TNXlMAL_G0;~m-z{HuWS?TI}mtlQgov!=d!c3msD+l5KJYOPp>i%ck;%iPJ( zj9vXydKap%R64_G8BP}}ERs@=b(90U7Rh5#M-&r5o|o}uq7Vbivu1Fr>Urj0P*2>c`y92-70V}ZvH{bR5AEvVWqg#M@R8~c z#x?4cqh~KkkDnz7`E>kV`mx-ViHi`+zE4s$-IlVl&#>LeM;uS{`>eJ;+8=q|_Pa@a zYRooiM*(Z3b%*Bh12p*|M6I~x)Fco1=A&PcfWLYi1@h_)>q@|V=?9hH64$hu2d5hiV}y^ZD%WPZr66t5DVzb#~qAtFD8`WvA$+6I@7 z$wocT#S^t7l>A84@f;j0Y37p&L~Wkjj(b$N$^+Kkc=tlhcz2U&7u;h6b6o({Wzv#- z#2N`@LJ{2WrOmqV$U~ja3B$Jwhc>p4O&+8Q^21)f3cDXf&wyuwCihJeA4^O_@3)=p zV_SjR%=&uH#)(b`tm0NEQLGM00Z&$UQ(sd(JxJCAknFyt)C*z%DSQmB5AD{oE=lZ2 z{+c`eq>b?pYk|4$Wh6Q_i`T}iZI0v1!(e_SSNa`kBa8I&ZvK2on5Is9o;>ae)neXX ze(MED9S43jNySU9$+hw@4@IM#MapV63wl;=nK9pNmL*GvlaZemiLb> z?;qs7fXgws{(&W}5W#uxg3La@e$bQSw`=-YFWgk;Mg1_)8(O)CG;UJmXw*DVfN{Ts z;^f6QovE>aif?tt;_nRX?CBJ`HHH!Ge^g%-Uh`B zTB%E`jK?zyCU~-+s*_B4_~U8Sx&Nr#1@~_`MfbcMEY0wA6mHS+5TjKB=jy&h=Anq_ zn0SDB0C2kQ0pr*V?g8cj(3t|vla`1+0Pn-zME~OL zn81e?OyC_qRb5zbW1fO%eRzU6uk95)p^%7cRA9;y@c3!%m?yR{6_R4I_Z)v&JLX9( zOoe#N{_)e>u~xRQ6ymW4#?NTSI=O|V5RWx?{LFT&Q(9OG@mTZ6&uYgywS}b+kF_AT zJ0*B|JLYLEOogPFWiZcf$9!1}Qz3?FbEYa=|ALrFx6(l02UD-+Md2Xza+sfbXSTeY z(Wg*O=uf3lg>sGyN8LfMY;cU5DE+XnD&!W?oDXX*`2UxdBztr{3SP7& znTf;xbUF)#uEronoj=CWjk2vu9jn}Vd>~ftDb#nfqt`k*vIueNyW==4Rfow1vnSx? zl=k?l_9i-AO|+ABafP^xnXVh0b{E$5We#yhQRLi|72>HTPkKjgRZnWS?WWu%^SodD zLXrC9e6c6~nnWA@jXj`*v#^h;>QQ1YRD$Sp__1g(RNsql%sR{A2rdilPoZ}S+MD1m zn4p)XA)jaqkuFOb^2uyU^Hb=3g3d@%8r(evf2s{UGX;M}U>@y=hjKNDJf9xw-jeYOwCRn$D`qM4d! zEx65z4+}Abqk?k4>(R{vfMZ?{FwcPrr%*P?DZo4cMpJ-!Bu6=jminUB1IL99c)q~xf{VJx z8=>D@h#G&8xey740^GjzqY8UHVTW!%zT9pdI7S63LA31uP@9k+|%EqBx3|R zo>ub!K%V0P=AqW#3iE3FrhIM%G@)?N(2-AZGSL&7ksf!@{U2 zG%W9;PxFguLbG>B&ouI;{F#t!I-fp9!N)i)s9QR9OQtT$+{-=VY60qO3X*GN!{VR+ zVNr}Wwsg^#S<$0|DHpov_7xqXk12K06T@IzLSEqZB89;1tpad4WMi!TPi_ts4f}b)p6tCLwIFyIELG8sH+2jxnw?V^Kpn-Sz>_QyI zFAFz4{!?|!mJ}nc*t8XSyjXR;c)apxG2eGYdAMZ3 z>8-l2G?OUV!z(%nt6v7QAfbH!@)^i^c7sZHA98~uxFvk>j?HSYK6WtlQg6tN;K@Tv zI;b;BS}%a;V|ridL==> zRlQaKSQabWu(vNa8}m0d&Msw1B?<<93ONc*d; zcC{GRu4lzxuy*y>5lmXxSWZ6Scuh^Zjd^2vxp)oqJbAa1H`~zL1E8U=N^8bQprMsd z)m;tP`$ZLX?k52A05~oMm?!NDxG!zZ;d?>9{?Rjb23otB@lfw!rAqw-qGlhd)fLdH6IRt>rhEi_Pc4c}&w9Gx4?E_+-0k7#;Gj_)xLP#8*( z*C;Z^1hA^_W4{r=Xm6Q~OkJJri^OYi%O4%FR#D0>q9hv_+V=e9VYy>(_j@N3n%+!$ zG`@IPmF-cL?V_Y?7rtQG6w)l4KEk?wH@a+woGqIHT4igzNZHQa=(63SvfVUQ>tt)o zy@~|eZxLThA8&P1X>6%-i)O$+>6Phly1qG#&I5((kmt)OHZG9E^AoSZ)o>M9uCU}P zT&{(SC4E>+!3RX~cH_vlQ?jIzOS0tI8A%Ymmn0AtES}}PSt-Ci zX(*a9(fh!&%aokuMR%khi5}o)3?PqeyLAK_w}WA(HIvup_H4&U5R3~JJvy_|zqxB? zcpmt*bdUAngxd8qN+KTEgDz=-1`^PvEzq0r9N0?Y&8@)Tem0Iy2{ z<^ga;3NR0V*QWsUq+Lw&>*uM<$7teaZ@UsydfQcUijAw~(A(DFvNkw&9DM7CVfEmw3)#v=Nnvq9H~h-!X_lIDl9jaDUS$}4(B@}Uf(SL$OW zPdw>EXEA{(w!6z9MrW1hBP|Ntx70nh8-D{xjI~!;0{$yvwA=Fb6`>?MK5sEckihHB zTVIEEVM z8DVzqr3~g&i4h~Tx3d1NMr-|Y!l%>$@69b-?$;3MI8d8%|vdzvH7I8 zVEp3OaH(z$MNadd;G);Zp4aYe6y2Pki# zE}Y1qdUM+!;LG1;Y~!uaky$30Vxy;2l+A*{-=8cCe~W_!x}}LfuTg%ly0#`_^8mOn z1(*lG{VBja06vuh%maJ;YcdGjFZp%v5=UI=*BE+E+2W#JYVO;mV{)J=)7^|$Q{w|l zi4@JP1*V(swX-l?ZeOOz1-to2&#K;JE1WFFv$)ysU&tk~nVwi9Wa$*p!u{$95q}eh zPP=FwRC|6~?Rl-WXR$G1?I}U@8`Yq+U&Z}h5!kN%1J};+HU5L#0^)v0ZEFGOY3O7> zHOx4MNiQApb30GCTTO{O((RElad#A(%|pXH4e$>ujsU#z8a*#cWCb&$6hUFe6zt3L zZu0o9%5t5RCEvJ2WeMwY3T`oo=?4qK)%3jhol5g<^peKI)P5RD*{@gGVS#vT%yqM%Y3Kdg5n4O5lJnM=8SeEb z8%mVRpZ%tkf-plS@VkrA48>x@L;}<0)%-F<8~XT}yQUk)k9ykjx0Eb@@pa#CuZM&b zU56~zUdz_cZV+@AYOMXKU)LzkW`-%bb;!=rI#WGR!jKdHE2s_jBT=bEvyt#frouBB zWhzp-xUbK~#_~Kj0~5W$R)y!?Y|?gb0CgCfwhuG9z2Ty~b^WMUIbRWE;yOJ&LLeENqGEusA_!GcQ^K8-Nw&9sdi3w zqtk{Rp9y#V2(%ZxLXd zu@Ikre2UfROW?Mx`hMTIBzNFz(>1?4_ugr_+z+5Hep50RT*@R6-@u3LTd;5E`ss<( zXjgf`-5jwk-MqXYw|g$Pc*pXB_wcSM0~{uFJ9dLTQawDWkS*pU0a zYCqp3UA4G5gGlWBnRwJn9Qkmm9I$^jrE7 za`tz?E~QO=sQJ~MM#uI-s6wj76_~bO-o2SL;oEi3|JZ#0S_Tbg!h=iR5p5&M`z>07 zc&Odh@sj->7wt-FT`)3Bpg*W9Ma;!QL)k4R@Aw3MkQcRH+tb5rzRzryd+7zfePEsx z#q?hsbgmPf(XmYEg>&2uMw2Z(mf9p%(x=s(>)yntB^mL7q;ZJm5EfRLWw%yCy~Uhq=Wu&$5BW7LQ2E#0EY zfsKD9X0u;uJg#aw9$m+GdTJ2)N!Jnimggse9D-5JY(4qvvhI9PSA^(wMBO@(o_-5j zQ|YNP$=eIm6^w#&X5%90E-bGULwhOui2mVXABQ%S{tlnt4a(@7|6AIYl&WkyRhdN7 z+j!4F>Y0;z=BJ*ysb^m5sd~?%V6ftS4C-d#jF$@aCYt^8Bl5Cca_4T+)N9z0JRNLf zMz3M#Ng(tZcA5l2uVI%-AoLn`odiO!VYhaWS7OjJ&3hA&*e8Z!)wmz!l8f#Gwa?I2 zLG9xyM-#6AADtw1ug;O#r3kq> z@3CW<2(%iB)+&uH+5)ff z8L7hBvbH`~lpW=y9M7laDAX42np9QceCFI>bWh(S4*>i)%#A;pi>@W*$5|`0pKQxA zpSE83wYIG;P{;PP^t&UeAz$J`bRhmkBh!U8HGt-vdC>VR^$mCPl9V`iwW?QY z^NOi`fR{mdyrbqMc*XIzYML2C5%n#2)`xd#QreXXb7(>#wQZClf}jyN<~8j}TAI?? z_h~lo-GF&b8)kdnKbhCe`)%!c-`&bvA#HiDZA)=-xtn9G;NIAVxH@0kEv*xF3Xia- z%12+*?)wPvHmJYeO`7$0ZCg54R!*^UKhc=BuBrFE-$*m-eeYy+^-hbf6J(E4bOq77 z%66%6Hqiq9VA*zI5 z*T|q{k(Sv-HO)8cN&Kgxje8Lw=Hm}hnV_m~Ti1_o02||(26!|6=_4^_ac;yni(9Dp}qPVC-`L@W=@APp|J;Vqbe43B>PEq+1jz`UrV-VZQz)RNPSV zwnS&`NE+1NyqwjMosW8q|DZz#STUct)0^bb`%lmQA>D)IbEi^IKWnyO^iJ}rj4b9N z{;l}Xi*WD4%|}N;3HFUuS-@@sR<@pH4FLALfsB2HGUV1*mp04bTPAuBfvvf*E4TB0 zo|bcxZc@lLV`P(%=`|b$Z9j*$e62ZewoeTUlHp&qsX_Lyxm}?N)FxMi1wI2mf25r; zC=o#aE#_*Z{|l8p!~P9K?*| zMskJpEcIMcQtZXpFv$}mzFn1ZK@i`8+faQ5@%!XeA5PeHw6PSBkKRu}KKcN^RzppG z9=bJ$AaTk468hs$sBdHMqHz<`gii!XH)p*%-FQL?7aQM_lXw4w#dJ6F)A)|E@ZWFc zTed##Vz=u~r>SMD@(gu87Sc-m7k(Pw&cuI{5;;kDNdj*X;A8>dhMFPrK1lIy1xmEKTN=c@@w@7^@j(k3;j#j>-;43WcO-inxCY^?CKu+9eCpU zV`7Zs44MHNEsTr43P$p(`S~rpEcoIUcKuPX=Sy@;sHuj6okqr5(o zVm!Yik?2(E29Z)TdF(OJ_MB*YAffG@EE2S*uBz`tgpl`D7TLjRr8VueX#`^NI+j|g5tZtolyRB*E$oinCQ~l zmn2LwmV6ADkTdz1W8zEyG4XTt!@1*i1TMpsKFxWmpW(SyLCN9O+XSgpHDUZ(=vrvZ z1Ga_T6pW(Xu)HuZJSUmxA3$CkOrGOG&q*0yHM4Oy_5LrS>)Zj&SJCr7(v^vMf8g$? za->fGY1}q-dX(oC=0i+*e)zWdvp{(C5!=#U(LMT<2VC0(dgm3D+>p6NTU8(|tifd~C5t`e8hd_EYd_$jDgfE1NDY zd(X(UO)L3oXd*e)&6gBgJRN$Xx)%&T@Gu}4*!9&OW?vI+C6fOO$RUUxBG{dR+%3__ zQH}LE9dssr%t)@KYiZ+86b)|b&vJ^5zo?)qu{w+EwIk{Zakr~TRD?b#jr$t8#7I+h zI#^evQMhQi(Jw@Cbp!A(1@1Ei3s}>@eN*4tjsKA-jNrR9XiZkJCFT6R%4u0(iS|x% zUW7X5`*DrD>{cMX2T{t+PGpCYcQ7E^(#X3HzGxy|{#eRYH}(66WuC0)6QT;C*VjdB zo2G{#zP#!3XEio_egE3+{j~BPCbae8*EC_=qiH4nq$Ug%SIs&}di_^{{d&X}Jog99 zn_nlY^g2-4l3oWYRxC^U%^Wd#0Icbw%I98ksJdI(Ly?y5Axeh-NA~Mt+>sEy!F4f)-yzv@7*g}d5YjaNB+=r+!c9DV=N>=&tS1EM#C_h~ojzt$RTr{}GbdTokHT+3s%@S3dnx;G|>=~L+Nmqw3n!2(=G<(-_ zCOs@SmYcn&&x^CeYV@>`M7`v5dr~iO1B^X&<4XK(UngvF3q$i7m{}=w7Dl^ELv?w% zOeiNTxet>ed9~!=t-MOPCEKOtD&~$QefAc}51Lh)w-H3#-q3x3bVe&kqCQ3CCz=;G zGIldcHZQJu;rnZEZpVXsp0{K&a(9qAyPTg=viQ?vAWevo=rj1#m4B>SXghzrjo{4r zqj;jl(9aH~Cw?sHgQx?l526UDb9y=SxyL8&;4BKr}w(@jla=-m|Xs@{>|*6 zPr3Geh37QA>Xc@UH5ajv29ah8KdQw0OTPLy)uk7$V?Jpur+U*GpQS+6%E%(eX3;Ca z(^~}$OK;DI@4isy$yJBcb0q9v!M#83M0|_e>4tL6*&;&7UYBA%dHmhlOR!3{bEGRQ zy~T9qOZ_W2vn29wF+h-z(D;vv!E~56!?nYe**13bVr#rDiZOo)0&53nKr5#)i9x0( zHAA}(FyWiv(CL6Sevmv-gI1!U+k>viBxzrHx0k*&FBEgfllJqXaWtP#lV{?5NCZA9;(dYA zYU2;$`b#0xIJGWn#|q2kFMsTv(o(SZy8ZzzdG3NTr{pV$xeHcP`;Gm*6fO@<#4wz% zmcrxuPgr$!5PzQhhHuMfG9X@oazx5GdHku0$iNWQ?weEIKII|%8Py8yM;_Lcr6t9D zc-`2aka@cOMAV_pgc#?A=nKkgaWKaFRc|Eq)x$N4AZ|Nw@1;9neY3hJ_Qkv=b|$c! zc%xmlgEN89AX*MgXz`~{SZ0~6KGK8br|YPqG0Z)VOt<0(R=>-B7S3KiEn&u1lU#C) zq}EQdZL8}hp~pigr*EQS&R(3|CL}^b!P@_y)W_^j_eaXoRi^ICwF5w_jC7Ujb1|l6 zxA!XJ@NESQVMkx2JYx&S(Hi!Q`}^^%51-Je{SrY#6AGE$fz65N%Y3h<%GBzIs!DeY zMhh^N&F^JFby@RcUksOgMU^#exZusE92itrEenI$=PaEzocAF0+1;r(n3NtasO^ZT zLMClKC4&7c)!yU@7os!s-g_APtFwSxrGlokD7*cO9}(??&yV}!d@C(Z^i_lZJ%N9F z68v8Y{5zB2e@@`vodo}D0{`A5_+JwE_b0*sl)#^y1pi|K|G^~qzZ3XVli<%K@E^9p zC)B3Hhvu2rUri^9Ipwan+v&`*ic*Nz>r`lk+D-j6$eoi;IRfR@LPO(uIJr`hML!Wg6)&+AXKt;5b1~pvH zaUw}pUDi<=&RsvEu9$Cd|6W#IxV{h5BfFL7LhrxmC-Kk0tAxeIJp|?LE=*Yeq_D@T zi}cpnFH|d!s-e3Yf|uPLR6=wqW2SRt6HJofnI6^^T_QST#TR)+QAuSC<;lvo$E7>c7EWfP9f zU0e?9iaf%ZpJXQ+T)9Zj&|9{+E{z{o+4>`-q?Mro@60i0LTxmBPr3vRE*VFzT5+dS zzDB1SA#Z@eB_7lzY}Pmh$xXhUEXxd!2Urur1dr2VFj^QX_YIGC2r-CHR``+m!g8rC z*{NbQNS(sCUz*nw_ev*kzlp&j59&jmQ+xAJCL7OC8te*$t6hQIXm@pq>hPX6;afHn zmgQA}TLnIMd!kcuP41j`caZ1EG_Pzjd}J^>!-v}JD%H_`cFog8vF#sUs|**%ufmxy z=-lyc1=`%b6Mbud_G~Vip32sm+_TRMt;wN#wNgGNXs)+LqglCE_kIFSi+pR!*D{0p9~^OD9YGO!Y3nGDw(w+zjIDrTPB z%{`YIvZb0d5yXAENt~MRzE)Ve;Y(cw7g(^9s3|ygk0F@1PFa8(r?jw^akN6g-TPJg zW_!Ckle#+{OshNdToKgI0Kke1y9vfcdfve*jzkp#YJc=WpHzS2Odykp;Vl*SExHzS zKH7`Y>+yE44^yA13&b0_gxiL(8XqIgO^zz1@DqIpcy^yemrLflfn4_@zi0Vy{9UkE z4ZbHQ(BVmiMS&v|o@D0~q!J?*uZUM38Rl`IKy)yAt z)ysxBAI#!>UpQ&QV(0L2$-GXRk#kow#f?tKvj&d`b9(3VR1bzR?$O9Qj3TMM`y0Pd zoqNfF;kEVKKPyo9?fv%e2Hv3GKHo}8{eOGXn@0bSAD}}F4bE&-8Jk1ZMn6skTXJyD znh6^NeCN#~jS#S>BS$s{>k6^WP;!M^-$wLoJWZk}jkPTlwjs@n47>r&Teec#u+Be} zt#jQo&(yiEvJK;WI2&h&Y#i10j;-t%+OpH*=N*N~{!mh=l}Uk*7ij!xx<%szyxa;z zz3)3r>oEs0sLqp@hp8fCxQUAUs9?t1UqJl_ntzhbZH4#Tt3mnQY;@;M=art0h_jl? z+wD1baF+c&7Rw%NSHwc0@Ief!NzWgl!rl(R%=k-aT>>;C(t;rlaq8A3We z*j1UK60gyq2EBl6lLpo2g{@Dk8{`u9FNhKNR~i>9I7WD1X-t@xgRV*gJF-a{aLWyS z6dRYxDa4$6RT?}zpi2t^MO&hn(zsNBx_*<>_Dev+1Z@Up3e1LR^Y5|KnEt3I*1NiL zh&U)j45^f(XA$sf>Ko~_?Eu$>=~3a(yoiNO8V-iP4*YVXsVJbk3vVLY>$`|`B8 zCux|(*3yr&ww9!~@k4c94(%%LW8@TlmZ@u2abySs(!T*{CY;{`9koS^cwK%zq1fN% zY31(`Z4pR=^rx|JV$HcYir$D<2hqFTRwv7;lTn^WXnsTwfxhnSS*37nFad8XoZid_ z>M75W^E%GORsYd%MMim~i&tQNhu4z8|9kvnzxFS}Frg-zC{L}Qn?ysZFGFN|+~Aj( z18D8d_+$L}#R^wT4~t4}8GjG**TtXy3BG`KnS;9{ZnuE^6a07lZNVQelGvLrcm``r9Ae1NlqS*S(HsfFq1y-Bo|X_B!Ok!Y5yd>MKZ^9wol6%HK%? zj2;;vfnx7r$Ap*{W8)w3(0h#do{hgkXiYUsjLg0={!lyWxk5#B393Te$2C*s?NJZi zUrBN(jX&HT?bV8gh>vIrA%~}w1H!(__~+VDYeIeAP!;0tvK;(;5ay6vGL?irAD_Y=m|eLka9E5eI81dYXR?Hm~QE?KcVlV=rbBeI?VuVRdc6 zhZ)V95HcVuN^PrYFdwJW8_gcApB9i2XXk;iE`VJ!N}6cIZy0ujahaT;M>Z*|S53@J zC_XG3L#3^~n`EN<@F7IiSYzv3AVdH3IJ?t|FYMT1ZArD7OrC9-DSoLM zJqG=Zxg--d)-P6oj!a@&U)laMrc3ncyj#eGjP{eH2%TQY!St*-JRh-Du8giIL|fTB z=iPk7p0+YH7A(?habpTu=-qt8u9FEkp%xxN4{F^7huK+(Mua%syZMMsWu>dkh+L-; zIg>AUH$!gx^X36T~snd_N2M8&6}2a)JMXaH~rUa5#miFH*>>$ zG^%%boj_>r!rb*V{Irj)N;Yq7p84>>{XT|S_P0qPU2at~Wu)x|(g>q~--unIdXXq# zl~rAI3}5f3*5qO!>OuWjN7i(1*GHWe-4(-ErDUrRW1=%tjPns~`0 zbg190xsZu*v|KP(;sg)z-^cF-$6q^NfAM<2WMRq;tBoZU@6q3Pj*wG5NvJ7nRA>Jj3p z731tmu)W_6hp!Lf0kUe$;U|cf6W*9BZ+bE_j}M<`l{`CD?jYU-Ao(c{JygHcjrOy9 zfYW9DLy1tV5FJpaT9D@h7!B49Nnvmhf4qR7XdyrFhYB=7V(7SOL_@SWKM3u^XbU{~Xo%lL?fy6IyJmmR*OeRC!m}Z%%tJDDcLsbc zk3^q|GwR%PbQ0{F{|bjg#sPPlLOVkDdjN|@%He?foqX;O{F=;z9%Hh3nd~Eqy=+kNsrCz5X(iiV?0S(H% zoSs_$ez|k2ZcCNDc7M~)`=yNfQ%bd?_vhu*wMgr@t@OBgKJ2o!2~bxf!N%M+^b z$Ei49fZDYrKIq&iSfP~$`)q~2f#h0D3o#l4gBt58-WDy!yNKaO8x(AR&n-!BN39b0 zW?o6%jBaK3|#Erf1`mzT#X!yub$>1;*McR`wJg#JJRa2)n)kM#|N6DS^YTLUOzkVQ=4%B zsMcLO-02Xe6M*XQ_5UTpIjYG$YYP?mY+_jo{vPEu(8iuD84o5S=$vb^lS*v~_y+Mu z_*HinaTkSdM=0UYb!pj7Fs83NtZWfFEkdacx#W0hsxp1usE7I^UDUC3o}L(9G|>nu zB?3LQh^v~p)}4l~+)Gc%Ne#;Wz5eyNqH0FtcoQIf&@G{R9y_1t_54kJ^)PS6~eOzg0WsbuAR};(WDK=X-Hk$&^XmQU^!d4&2 z+dg`7x*q=@Q{b0OAD1^bd*bzsO4(5R6^tlHg1?p%KgXzSVBe#V54_CTN#M*t{twvk z&Qv>o-etv>D#N0G?R%I+dGWBWD7VF*X^!cF-Lb4HpJ`w#pWjSQb^NzLYy*t}5jN08 zC95okCKN(OL7GvYPnt8H!>D`rA5|7gF!r$@1P-~w0rk^wnM;c~jXfUn?BST@NkTiD z?ZT_1#4kE5kNZ~59#_)B|MCU!b8I=cNx~QG8@T@v;-;n1?0V@;s6()hc?li5{u4(+ z(EuFZ=Dt4-B>hPV(4Puv5@~MYlMoi>FksYU)z5z1cRm+_+gZRe>fpZ@7fXZxTwdtw zS~tJsyJP+1%tChlwSmf1vPOit<;fjK<+1D3dGsm|GWeg<9@*OSOcZ&RimW^&yE%+; zkaiyUMs-DhYGJKaaD8b7w6kJO{%(Hq?)_Vjs_C}U<+kOJ#m#~48X-b0(G$HerR&uX{CU$%5-Sz~j zQZ%QtJB)YHM2UfsB`lKmL=(5pP{*|~AG#8Gl!o7-q*JtJ9JrDrfJHk*z6hP&1-trg2U=J?5d8zzbY0f(r&rg0n%QI)##6?Br!l3wlzwIiH4nVR zW(I{g_Ov7J9)6^PHU9f{)@&UX%hop7NV$&`;&-u}@XYpHs*tDF3p|MT6yjGc59>DTDa`7q&Z_XJXh%;a zc~rE*qoNgFR+q(K9u;kkSzcIoEprn8rT#lr|EcU0l`DH2{b^hsx#^#H0nK?7)nuMp zL-bGZ#r*xAKib1LPy(kpDK^%pC&9&EYyoW9BzOrp8vVIlGH}TNTI*WU2T?qqmv*tx zuWRYNy$Ns~)LVDoH2X1M9|!u7yc<;fC*WEsxW>A8V`Lt!c_nmLYe;6tw$54nyxo!O z==DY2H?Z?kpWgyyk&d;6%^b8|Tu%DPn3MU}dLxn}E;fbeDf(jdvX*S7NNVif{QB9P zE};Y#T9bzLyEPf#t2N>&ej02*7?dRoEKLq%vtQ_#KD7lj-kqgF17?cTnqw=>)snHL z`j+0F=9uDGq53qhZrZ?S@|(xNM~AoHEl#QQ{H)qXd}xB%+@pVH}ARoxV+m^uNJv5u#O>u_>avOrS+7L9{4r1{b0iyn`cD@}K>0QtGtyHIW zpNUcCJ;@0c9M-&2n?IfV;jJKMfr>woJ`3OK>eI07X;H^Wy1BL;madx(X%R?OWO6Qh zkxN(~PlKbq`F^i*3hNU9W7zLXm!1e1CEcf5y2-odPI(6tApf+N;fyc08D(HIumrqx zl^D?6uX^5s@XakeC6fu$lgZ|(xvC`i0lZc&$N8PDOKcelCb5i zFsvT=p5nGift;JBux+P+Z8rsM`zDNK+R_`pg(fSwMa=+}bqM;HOM2pcsXCoA?1w9J zdi&$X2k_(W*X;Z$evGBs)U#B`2gOnqaj3JvG);V+`rOW^ot5wZ&i6_TzWi?{dru7tM*EpNYW-!wM7ZqZ&gX6>A! zK62_6yWfYn^q;9)N}0*V931R4uduxq}5koKev%V@RGEb%ziz zd`|xSx0Bpx=>E(I^Big>igdA0=5 zH&aHVOD4sxbsV@MQ6AS5CH_EdZR230hpT0%-=e)wJfi-R7>MscmTKogbM<;X0@Qgu>@iYbd;~-f=UW>Sj?kYI?@ma;Ezt2zkosX!R#tNyR4@*Er)l*2h$n(I zy+fQ<-*AWL1KgY0^pxzkY`^ijG(>ZaTWo3g`0k`M69(}nP(s6|vgT}FgDToepVc$} zJu50h)VWiXx)@fij;Hb=!Ir1{W%@$CYhML-x;_!MShO?v@RhAPN)tO1s86h!$XSY| zwVNyKxg|-tUM{>um}cANq>`)d>@=iR$*Y>6G@DllVl+3ic_pA0<*(9LihWKqKJ^xu z{z#PYLspb14No>H(5Zfb4oxDbOY0-A`Z{+KHa2X}qb-vvvklFwQxq9=Z3enp6Ks72 zov#;^HO$DnI@pP*pj#TS2N7{=?!V^jyo-Ho>v9Pz>33kh?@Srzycdg8 zw7u8X*?bC6c|lqx`sOZa-}LVeXK{7!XfmeicmcF$@$z20cK%ej^ESYJ&15uMTw*=< zS_LHAMyu=NiTiijJU{-2b{RogGJ>O+a)u@p;yx`d^j>}{ey#|)k>=N_83DyzO~TeF zur&Qg4r3HH5&zhjEZX@i`(^UM{&rSy(b39BA(?y%#a2%4qO?S$r+cNy;&WK_V9$0M z3lL&%IW`QDp+lP&?G2Y5UZ~!?l7!l7J#d$k zs9#~$ZQ@s$7htX_cUsrWc29Z9Qf{vUy`KWv4ECl>fwb00#!5vbYj0DG-aD<}ZrGqa zOa%uw%ab=5)lQ0=93*u0=E|+j0Y=$LfL3dXzKUa23A$$>=w4hY4gOgo@8`6jHTT4p ze9EI&2h%>AHyax}XY#5fLn5;?aW|@LlSW3@)YYY-k<{0W+!l$g{eUxrZFco}rXsAj zkf!+By(l;A*6WppnpW|}7ie#y{V1I58wjh6Kgc)^{RPm`+TjP~&YhDSGUwMIzL>_@ z^6WM0dAAJ>^sk{ez^S2h2B+rt`;voc4NG_-pD~^5N)m6eKz^hbD_HoXGtT^r}5?d73 zh2qQY<>0%KhU5}S-CUh!NjG_^x{31IfxKQK8izVZi)f&X@%U+Fq@z^5_SMwJ(@e(4 zDoa;~moFsyhHFWvuhUoa)fKX zl)q+`$$1OzS5&>bUio!-t|d)Sv`b#LM^eV@zUHmX?EB+B6_ib6KW=h2_ibr#T33?8 z?rG`xCK9f@Da9%oOPuh?-2SOFc}4CaG}nIjt`wiz9aW~jEwy&G^_L}t^|B7VBgOaq zYVOo{?v@rBb?D_VQ>5o^ZNu|+6sN!|xOX-Y;ow9}-n|ybT|P%zLzg=5WhSbnOX8E zBDoF)+$Yvqbs~A}KIEMQRtRK>7YKGI(q5za*{hJV8v082PC7F87H9h&Hay#|35exY z!g)KTah;@K?dNqu_D$N^vhE@bM&z00+ze0WMR0Y;^LpsmPjuAY$Gl?qu?w|ZQj@9n zdJ9^SZWSY)z1aHMFsMOqaM5G1B|dw9YUEd#OfyU;OV*g*F0b}t^M%Q+p(wp*X+4gM z7MTr=@~r>9&To-Bww|s%o915rI`6M#2u|v-n=G62sQ7^0Dck<-Wy`n9meNQ)C%KQhX>MR!pSSvs_LrPjO|fRf?77?1bXcwZ;jrRpkC2}0T4&Qk0q%|z zm)@1)=5wRqqHo?4pG0qv40I(fJjcm6;yF&ioh%C76Gc7}%TDREagakFFLw}W=}ynf zB{a<0g$~agxI5GQnc=@lLv^kz<9h;M>pk0YZsAs@K4Npd%6_n=m+%+vgQUTcb4e${ z*`?RY!%p!-gsZ>$A@<=kM~%vl=)-eETKhOoY}S!K`!2eVrufYo@@ti3;%b9rT@&A= zD4MB0mPSb%Al1`I>pwYH|9Fa*CJnK70n_&OZn;gOKapZ;?(=iiA#HW=$rOR4w$LoW zz~52>|6T>8vMfRJ$(nSZGN20X7lKs*AD_y8e3}n`+6z6O5xQj2Ifj(% z+n4k~U3~7+*b(n1@4dcS7oPtryZ~8zB(C^x=Y)y4c9%g0jButCE#;4#m3HA zj2%xL>SzoiyW{ocG}^k#BF4=(7&q&Xrm2plaV1?4)>HI^{5ohdwqzW9ji`2}HZ3_) z6H}{BqR+C#KOKJyKG+|NQ4a)ma@Q$B|Hndw`BHtJ2ZSfh>3tm&_|;owb<*sf^aYtn59QPzuY{$Yy(^qY7FKzlsC#|PIvU8qmiGL*Vi(?DNp)H$fr!w7~Zay@j zkeT@@*JU<_J!y`!Yj2`9QaOD3*qf&y=`~%|=_5Vmj+>LyN}lLmd`9yPqa<`cPjTT0IJTU8h?kD#fdzg|G$MY{PK3dJ*$!iNHd20- zCT~2rFZah#3BenZeb~VW2uq z_8-z^kgf?`^SMkehM{#@Wn7_f7&hfWSGTNw4|1jCevBhclc_UISbRFF)%zbnZZT=n zDR6%jsI@lyiBG>RX!3HK3+>NYw5t2dWHk3YkRg-(XjoWo|4AYUJOdFm0T}j@8j1npln~QJr-9yB|AIWMv&d0iI#D-!xSDuT?b3UWk<5s1#K^pSU=zS5wQKE%@&P40T4r!zkTlXKJw&TDaW?O-+T*{&l^8`2A&bmNDs z(0)=9*Htz|QeU6Z!f~BV6t6qI2VpCTpXhF;jq3N+bk{EMO^~ezkmi)VNY(6XZ199p z((g*S#hLxK){&D*Kdw^@ts@uVY8^o@s}iGq)wYg2toih`WZ)&ct!_~)eQ(4@gMZSU ziD2+o%Y!*MY+46~5oQxu9X_)yTEWdwymPdmO%9pa4Dt1^dF>Qmhc;mIt_KV{z&{t; zRbDILun6Que`e0?Y zk3r$u?mC4m*Z{Jy2}zUKOi834n`b|^&__aD)eR|TBD~jLRkG95+v-|N+ibTe#cRgR zyDd`~4JBFJ@x(oYxL*Guo%|CO?$!}n>o~;A-jE@=G$ns}_QI+`$@#?W+>*Wh`k?nY zc0V*-D@wT&|4(T^*Lkarq{5#m&CYGTZ;OUK4^L_E=b~qBP!H*pl2|jcqo<-9PV+3; z%sN>$E165Wb6lFNP_!Hkr?oWiM$(9$?|N|=*=UNqQF}DHjh%~)5lel@J{Idk<1sMZ zXJiS;el27PA(cLigFd~OXGf*m-&s=cwLnzpTCyR7Y^{W3{&QOeC0)1mX}gU}x|l9zmh0))83uC1g#Kj0 z*~K#SmPf;C{CC>{cz%3O@XrRn$3v?R_a#L4 z0~|7U7n!(w$W1G8PhqTPJL~s$;t^IsPs$7XgM+<9IOV(QTt0tXwmRa^XNiHrD+ZyIzJoi zJHU~Hy;A|ZHw5~1W(l-&5x7~ed3Oi}W9j>w)<4#n?FyyYZSvt2R?jage=@%N(6sV4 zYW!)fQ9b%SNZ?LT{U1gWzMns;e*On-Uee}H_Aa6Wo$1`G(t6ka%OW3c<)|*v_G_!s zSULWg%nz)a-=EPXh-G8>1?HbHx6Mv|{@E=_@d#4Xg~{~$sN@?Nl5)(uBNG7hq_WL( zvULkj^-@sMB3MnbK>El>ry;s(Y&^h0xRJ_rS+e$CjvL0WAs0yX;)ji=u=nX8~KUe!q231Z_K8v7_D?`N*DcW zOBdB^(!Gh_#@qQ3y*J~=@8Bo8g`Y|3zCD|+VhkUT-Q7PkS4GU7m8|ej{b_sZCsuy8 zpT~&Btx9t0n{%>GIk^L+<9KMq_n*xee1p$(&z5OJb{2g57IW_=pYzDay^Hj@%&@+S z_->kMy-rBSKE6%FJ$^Por|b906{#+Xao$Z(^d1YZPYTBpUR(G@lft_vg`Y7gd`4UN zgf3`cHPh4w79a$?c-3~DwY?8#JWkWP6ZlE`8jr9L1pT`hobe0}CMzl#qZ;p0np`B8 z>o1ba7vE2d@WKqg@jbdoex}FJ0~bmlDpT3XZE}sTrPQC-xhTL-eSuD|OWYSyQ+XZI zeG!1`Bpyb@ZX}21*>k!w z-@Ts@rkT9^fKUpJJ47~fLc#cZv~hdl18F54E)GgxqkgAyzl8ZQs0)``JV>qhLBKp| zOhvGG_|8XVyicidW!~H~gX*e&_Z14>^2j8ajlJ&N8z}Q@$S-g9TD!a4G0L}ldI9fO ziPRZ{rS7hx`xZB zEZNsfS|i(Y=SY1_(KF0SVba`-4hd+w;?ea*2r?1)?{%vOGw*A14-KH(SH zo+SH|9dg@8e!i2Gu!`74R=!shy4kT95%3uP@Qg>m>m)S3z>K*N3)qM#;xQ{DR0P}4%PlKfE9Ci9RWonnbt22R!(5a=vewkPu7``l{|&bBLGCf z?DG3H4vq6oj21sm<`V{8S?!PSqOB(G1Sft%@DB)kSuie$+nJe=6byE$&tZZbHh2&L z^9+^M%PbE3wIY$ihcYRAP^l&<{NzPaP@KT+Z7Em+sC(&SJO7b)`(%UmZ425@Un^r3 zazgo4tG;YXQ|jh-Q&6U*4=W2yitiD0w;*|Xq2PW`LDg@x&h+5wUr=>_1-yYwBTgO+vW#UoYGUq}oyFP?<{hJs~>*fQa54tA49h57yl}+cy?*WMdIe-dM!b zHWu-ojYZsdW9#wejZJZ4V-femd3`$rnqKf5t+?5uJ=5;u_<1&v4}G_7V)}` zMLalLm~^9&x+{bFreM_Xrs%#ze^K0?n}_3V?`E+5oCL%PvcStxVsXO$UG4=CdY zvKf5pBG({6`e%dD0TE;sq)nnA+h=%)DF8WgY!4Zi&I(c zzCm3yME8=m87@|}UO<(xq%H!+5^K(Z8N9qqE$UWhD=PP-?-wk=W^ri}o;3}OwR2Z_e<=Ue-d~b`tx8MzEY*t@jD`i| zf28<3%f!8mTxHqv8MeG;y)kSkqCE#8D%=@bPGv>y4a&)Hpr{oK`>n!APwmbQKQ~Uh z`|R^o_Z?b)d?z}QskrQjXMK3OI?bo3-=PVGxJM{rv>6pz8R-inNJGHk(=J6PgPUwQ zf0Au}GW2}w_PGVedcO5Y?pBjH)Wj=^<*rm|Pt!iu0#0oY;N>in%1Mc*5ou5#y3hIxifreQ~~72OB3sPy1(q^S9#`%pH_ z+Q+{Qb+NV2H&aYrD3`aHC^6qpO!&$dMDh7{a{u!KU}pCdsca#@5>!WWhLaZinxOtf zD^v4M&a_!244`ib_bKWyADsdp6fN+~kgpXU6#6#dwOx+neJ%^n+;FDS?^FZP_p%KX z57;!DkC$tR&dp~&=9HSMA9#jfH z&!%uZ^VjzoMvL;b8z@ZT2laD8{bd$)U;ohXxE`2w$Eb=I$6plIud`T?eRV?io8+<- zuEn*-Y4t&O4%ghrlt%2YDfVwB#lAI(eOuzbNABYI8^V2V67DAwoKMOnaUP^ha)JyV zLNp++6t;j5B*2GSz+^cd4(h)pd0p{c96zPpem5yM+3#*vHB%Z=_(HrJRow*6;x3_d z-|ZZ$j*3yC&QViABUQHUx@nF-0jvaUj2rTW@sIq_e^wd(8AvlNN`Q8N^#i2d=5o@k zs`!O)|1t^Jh}(=y>xi;j1ToJ44k9bW^EeUW=2jR>(mwzO^?&kw#LuhU5{-tnC zqvM#o=~~J*p|#q}nhH#W3Y*@WcZhK+qsv?0h-H`;))TtwI9aSJtXeX=r{Kk=OVRTC ze;9iY_^OKLeSFTnxhI7LLJRGUA=FC?gx-5eLg*c(1W@T02_kq2Bvh%=L8<|jCLI(+ z=}kcd6i|>*6j8B(h$smEXJ+@DdlKL8@BiY*%$;XvXJ=<;>uG~3c!a^bTJcgIm!FH` z(hZ2?L8=O#f}L^J?5sm>kN+zC zlUrTB^xlGP;buraH>wll`wbl5Qj1rUdGKDbK2jqytD7s-cL_;poHNK-I|NP6>Y?`8 zs)u7H-1@7kXXdD$%r{cMvNU3eRll;7zRs#&kgT^ROWRz>tb5H}u(Pv5ILgh@BzIw` z)g+}{!Kp2zMRhA=Mdolf;v7!qwFutSNL5-X8`!TsfJ{NT9`9e!h{I0yBKM4foxYyoeGjLy${YJa|L2v|~BjI+|uL0F(ld%-tP}P@D?W!kG z9&TrjOMY&1sv|BPE$NYBa+yKF2*dj*taPOiSBNhN>cU?rVDk3~9A|fU5;2EDwbXHmGwZl zBDM|R12H}vJ5Z!+8F5)_)nVab*zWb;Y_t(gDNO z*J+~$hZIT0tElkxM|^$}msqgn%qrsO)Xp#26qLR#<4bJ{Z?4+Fg{L%%bg;%3wb%V$ z?5LH^ju7elVubNO7=gN~al8hFH?i!fK}GEQq+HS$Xa5iWh{@J}TqxYx7qh5fd8;qR zQh^#OPWY^spQoPlKj_bI`u;&M<_tX@d$AN!E)aVdTjd`@Ef+U&JU8((s?Eb0sKG#t z0wNfw!$5HbkN-xjC z)_w)61GPBR2Q+c1g;}PuQ>LT(AVZ}v^;Mk$SZ5aEWkt3Hd=j=&2srG{@Yj1BGc(FN z0h0a=0B3pF?u21^uTb!w-~Qa<5EkpJ@|A+z~=I9UnJ6ap`(BD ztAwo@sdY{%c>Hy4M}J*pgaxUakKSmm#6MX`z zU5z84Q{Ylh^Pf-gC+!R;2Bm!l!sjE*`p)8y+jovryyrOq+dDhKhZ`X+9JRD@x9zeZ9mXid@qFE zTG)&<<0iSnS~j};t-z?i1zi5-!nBaTE%7(C2DTjDQ+&u|wKno6aLP#D9l_(wxcrIu z>kGmieW|J0a8C8#!O}Ptn^9P#Gvn@o0D}j9157^*9JW|5EJ~aOCvhoa_<5JVEvr_g z+dol-)_`69Wck|$e;rkbOHE{-wF7Ev?d|rRhuO1mTI4D$f4whZWyZa&7TX2-9dEm= z>SIl>-Z857ZJnUYE&CytzcYTT?Hd0wQ)_bm!06Ehpv(I;+@97AKQV2}wXQ0lN*4?8 zos4|@m|3`5G~sugX%>!iW#y%;+<1N))_?8tc4VU82N*-xiUdOixhOvs^s3*yPQ-Z; z;g%!xN7kDwSUyk6lDLjapW=VKoPnakuHyM-aurMy>-^o>Mt@KI_2M7|_bL|f-b5`b zmUM-rb>*}|B3LNwYQaD@D8UgSseCV&MzGb{&IT!96azloB^Z|0n>EDzBPuGSy8O)h zuwDp@fGigss!sOg)Gn=$NIzE66XTRrj+gN^Q6J(VYIEu!H;kBz&efT6%T)^kl2uD9# zVjU%0tk&NSbb;OWF;A)$cKJExB>Jl5az%;#uCNNhQK{`f%t-l=|mpYK^G1OTP^mh!8 z((f@CVkmO^FdUk*@M;-D_T~a&s*9WLWfDHbpw{QLD1TC5ea`nzERu4w7iga&NP%X> zf~Ic}G)KwmD_re_)ana0ko{yV9%jwH{=zMUsL%gfFV0ERKpf`Q=*7|uW<13vaX>c(rqI-pAezV)8Q#1m%92cz7+=TW*# zF+MaRd?y<;+n9po`4!jNo?t3j-m0T|7fmC+E}`0tFZ9>K)Do5zkt-%#9Rje6xa->a z@xmL~%gllKSs1ia+px9W5#0c;G4Klm&vLl)o|w}J}-abZ^M zhXoOWCJ7Ul=9Z z486W@PbE{W^?iG)k{;M+jDX#5h|mAu1}FW?;My9|TOh~Q!w)K?vDLW0)=`I^_DVAMoU$E?dunTcH7RCKfahb|d*MXaDqzc1P40K^2RRJ$E(1U?d9G7vaV*sST z%)hM_07i&xr@L4Ky@GV#Tv*}ud2z_XXEA}12kB$}TY6mT1lA4Xv+3qhibowD!e%u= zu<#OO9fP3jnZ~6~;fx4|Y#Be+GN*;=lWJTYL1P5@alVd;eH?z`ZGE^Dg%>IEg{zZF z-%Qqr@yMZ1ja+u6+q&h8ZTRLJq`YI07aI~?1}2|$XWkd^kwPhGwiGl6e+zi=Tw-7m zW#znxPuW3|@2oQ`{YNn_|71Y^iTINmg-pIKNGz`fJM-_rJ(*J=WQ`qIN9c7Fqx`ms zIK1t>S{U)n{01tByN7uE0m3gafP`2lHh0FnKi`!DVoDu2^WmgrgGLo zlCw})R%2U>WQuU%Lba%K2|qkUzC}2=>RMGLtVg&6wfb1Xbu{ISiq{?o4yZZ~w~QBK zcoo4}?3=T=e8(z6SgU!kTAzVr?^a%h2Ntq3f$4?pY|hQ^BnhHXC==(}@FS;V!!id1 zGao(-6jvKNrh;jbFDh*w@CprrU4H)I^1qJ1m@{j@85Ij*nK_HmLL!U@7j-U?Ro+m! z_;0YU2{KjP&0WpU*&Ou{R@Pd4R=Lu)ORa_2?7&(`>urC7j6$g@0er`!{0AV!&I5ye|K8{Pp!l{k(DbgK=vQ>s{g0 zi!qG_Ft+(WN1w3EgLNx8cZwti2AWmQ%zRhOYL>zc->m*HtAEoe@oyvJMz-u^U5Ldf zI~n@z>y1;Hxu%C)ehSJq2LZO0^~R;1;xgWHmVqjK>XgNa!P`jpKae38!#RfB4RCVm zsT@-415y~@vq{CJp67Bl0Jd!?gG+;{9h7X)p!r1_N^=+<1M;69AfAD()Z&OWVbU;J#E4AAd;P z<=@6X?XQWa?PdWC!culvVHGR>-_{n^)@IeUOx51w-E!R> zPo6$?dAU(5geZ!=ZvpYRntiTud*|Hyehi24|8hWq%JEzz4Jz%zbCI-_0Sz55oV?H<+? zcM2oH?ZeeaT-XhqnI*Y>Bj8?_e-Dz?cl@luPVP^t4g0Vfhkf56r^|mEf3x4A_B{}F zLz?dg{LJwbxmuSLrUDh!`Zq3hI4?mDpfuY!3^RYoYE2%1@O{ah6xeA#oN5Y8+8&>c zI>!loalZ}^0hXB~U4C5d4O1UXzABvumv+K@$65O3zY~8#qU^h5t?TmJ{K(N5J`4Gd zAYYmCAGrKKL-4<6$2}5A6M4QK9VX&Ajlh*%WVf|TY3ftgWgN%rxOU2?zqocO=i0dD z7gm0-%a6;8c!843&p2PPgC<;2<0Ra0fgf(Z0v49W7&;?M%UjqU@((x$*H7iy5QAh} zj5hRQxoDQ*1>@gH!x@{b7ttw0R0t!}Bb}M&Sg!vM95C_(GrWM`F8>{lk$=#o<%vZl zA@2|117;Ri-#e0ryR7EH{PGi0Fuw%h>RtNJ{M$;as?>X*KqYQG3oJg>^#JvCHx31U zH1A&&q076KAo=Tk%+~Yv!n+JLRR_ahmNVn$6AmzMFoTO+M)@$eV;Vs4S<}FuY#z@6 zfi*X$=2&y*M@|0gnmdRt!`HZ2hW^6&@b%Z+!G-E=0f=$`AP9yDDQ?_jF4X@Jf2BJ~ z6>%#Hc&{7x_+szR&oT3W#qzSd#| zld(K2JTFFh46!^KeT@j>QuE@b1Myrcgv_)DfDlPs78dJ8ta2+%#iu(^TMnGOTx;w8 z0T-oF-Z>PGD#>}^xpOLx+FBJ_apwzUXuZ#5G3sAf_}HW`|mC2PsJ5Bxfb&T)a8GQzw-4WT#teMcmx%r zk~rC0TbZnGo5RYIGvM|xTyqR_#LQD<(@O^f7o>B<45#LZnd0od|F%za%e^o-FhR_4 zKEzB2HfVz}`AmQ_rJ!*p%5eGdne!kWDERJqkhf0uKw(jQX~WOL-nz~JDXXI?)QfkU zm}zJ#Zfusf8k>JtIPCJWncUdVu(@b#9w&IuHDgAgeZ?eINqz|$mQin8kbi9)a5UTzgBrs_?>#$F7J-BJou3_XixhJ;dh__OaCU;k9$u=e-TiZ zzbO7%`itRrYL=}(0)x7(V>rG=k7S$#VWFyi!227HRosjz z|J2?ycbGh~7*jkxa^#y>0gVjlj9nxydxgE4J69m7DA19U14(#OBU~JfOiMZC??6hh zof6UoDMRr`s|&YN#&OF1KuUz2Qn)Kp=Hide6Dlb&15nT|PKxSgCAo5Yp7B;g#iC=X z_^N}Z6-Qn9sqR>&_;|+{4BgLoYal5mmnBm|WK26x*&I9`M}Us7w9-OzrIisHl2%S= zXd3n>NDsI3R}enJ<|{JqPQ$SP-!qDXFm=yph>Hjp(DN22{80Ceda+hOq_AYnfGA&0 zm?@91no+)5_^p$}-p@mmk!jd!+j~I;5DF&h~P{PQHffT;98c1>Z+2uM@XpSUq1)Wqb zM-n%HPD;#?#BHIII^;;=hS5oQg`G0P4 zGreuW<&sJVYkdo|yP|5K!pp4`b*_lBVfiPyV~Rf`pD`09uHv>5Jdr-WG0c+3K^o!5 z6LScPOsxldN~d#*_Y78fs%fn##7!XT;|8T$6;DSQeb0AvsrLmG0>{sq$AqgObeS>X zt~rBxsD>^--#TJTi-%?eaAhW*G`z7^dRA3X40e8tGR{1UG38u1Gc}1LM$S-l_idN~ zK*fTy-#s#U2L&lfVuLqqYm{T_S+VLZ`?pr?ZjD%ok&$U(zjOl67JK5|n+H+=83OD8&u zDWCVDC0lh#Yz}%IeD|f`n-2B$V`2PrkzsUux+W$RM}G9TQH@{7!KJUk|8HQ(M4%Jm zo}L!Kc?mF>Pc48i2E|Q0B8%+}`-R>H9f7pIID6}l-w>h8z+c4wtdo!Ac%QZa|D*3v zIsA{iITxu^?1rfD%Xo|15&o4h+WPg-{?!>rWET%%E~N{Q;eU8nEOPkXlpOZ2_ov|d zt)itQ@~U4e@M|pUZqh(#QCLCy*KPbdIgV4WK~CwLVe8AVu?;ph(8k6gugcLDc2qpe zT82YT{i=)95@@3^Dv4jmc5-U7>y|Blqs>%(Pucd($8nyrwE22$U!`uj|FC}jeA7yO zfToSdt5Zz+E3fry2ehz(?JR-&Ca)L&s3R-iWe(eQVp&6<$=Sr(wOSM{q%+)BN}*eYM!C z(QLcEd6B9top0-lEo^CdZ0AUTeJYyFAu4q>o&1R8Ul_&d8imoe45A3}c)~7A%Yso> z>l0c=wcBCaFJm!fD4TzT?>UA{TCDBMWmsjH)M&e9!6(qCv|NQg6<6EsGK#FV1!?aWP{rBGjZOcAWa&vMgP0M^1P>3tIxssvfm5 zIjP7=PP4F>=@xeEfQ6MoX$D%%q=&Fi<$WFPrhY{qw0@0WVAZ2cU!skhI7cJfmOOTx zHn%NJe8tLp7pwjDlvREDTekGUP^L<|Wa}FS|0!%QN>jg%08@F_<90NKZL{NL zf$fdBAFR~MkF8%X?k9TSC(32~g1YiQSpTk-S_>nl>Y+cw0#(M$NmlBM-7PHcOY7HG zyWFpAtGwF!FxvOGioY=Gm}&i*29I$}hS9X)R&++-LXK+bk$0`qCPIsf@o5*WxSFlK zksBvkmhV4%$;$EMV@u0YXjb}0VDwcUI$g~AHAQPNsmY6$oX>8piO^hgA^RoCu2DIA z9EyPdSYIw<8fwJJBeBdHN$fRRy<&rKPSIf=R`nMlk*EHfFlS~5jM&j?#jB%WSk&F$w~x$;w4K^nqd zrRP7?2=gyy)PEF`iElr)01`=a&sj3X8G)XT6%^asgA{hw1-z& zCIR16c|-Kv>}ct!MXTW8NLqr6PD)QRAndV%w#Qn~TaxRtUH2BWQIOJzGG$L|jWj)F zA#DYTq>G1GCm!3WSpb##XsNKqr?~VtJw48s%6g=dLlAq?fAI^ge{!vGIR^xrTi{# zcdyo*LcdcK5UicMTYBzO5s_(VN5Y?sK+l41N+yN=p=SiCGhZR4U`u&d24rg5kzg2= zM9(^}mCH05x-wAKySm4v;EUf)MbDRAESWq;Hy3;33yoAU3K;!dndtFrVJ5c@R`tdJ zK|a_0f|2K?tY%oruuKY&7hF6VuhacKg`$kXlB=}txmfiYL!|VWVOHrDlJJ*>6f#DL zOg>yqSDK3&GX;4Ce-%>PSS837n5mFb#%4hhY?;!=PC*vgGL?)^TpTU2c5K8M=fuJ+ zyIyg|B|-Msb&oSHORljx*D#7R$jy45#Z1bjk22y6)6G8o#U3}}jBq!%`%=42PC#{*|E>6SA8Jd%75xOe9LHHl$6rfu2nK$8chvsXCX6K$1~nb zV$_hbM(ch$7czCEtm1Y*ZD!OL%@^zlZv}+yIkjJD&ZM?RE3`r+h1+9qCq^K1&+Y|X zj5bnMOoHdLs&#rAZ6()DJ6A8Gn;{;!%@IEMGfO4|2)EAajsfJ3Aa@p9$VB6jXnwfGLM9uYpit;(^tD2w zjVVTC5J$^hdz6@p$C|nBCo`;EuNj2|nW9JaJ$MSSj36`YQGK>iIf#AuvF)F^MqSbT zv8{Qo(O8gKHZtF6A$pqFt^9`3S&-N5I9z6Q7i6ZrmRMo*h8_$K_I&ZCks>mqZLhuq zgd=n2BC8hbjNwxH8G8m9tCYWLh@ zMzA0u6)l;MjR-+9?6OW7MLg`E3tCSmW~LaCxn{@eIUwwxWP4?G!KflKS8Y96Mg!3^ z#*V{lMr)DTV6XkYVWfB@b+zZg+eQzOIe5mh@V3z#dLnT?XpN$GjKQ7^Am7{GcxoJ$ zTzghoxt3Mms5zPp4t+d}q6k zyDzrqrfRM>CilU@I-;VDYOc0YR$Y5uuA!0RHd05BNUCC&-dM|2)9sZ>tz7+0j>89c zl{db0C2OSlJxBWbb5onIHd% zE_B@z%~85dGikBwwjlTPXp>1RG!kmpB2y!NJ!)mrc0nTPn)V?Xd$i2y6IQ)Gbp0;& z#CBCkbJqclMEVsHM+aRGMdo)s`js*cx}FO1#ID6LmnWFLF~yFb&k>Cbb>DF<5u4X&WCW09f@C<5l~U8I_89e(D>ImT z+yuJ?e*?l})QY#1g`6_EKvkac!@J#bwXWYj!M=1Wjz7HEx0W&(Kk2^PN65RS|J>n1U(9Q>Z%vQF;)*_f7N-x9+YB7AiLZXdl+~cJ5vv%oa zfp9IJLH|;T=g-sF%oT5(8!k)EuFS_T7$KE<`A%opZq^$l66p~59-AkpcmFE-^ZKP`CUERvjMw&*Z>Ri#rBp~dc zj<$cMXqm!aT6$({WW?tdGFKxd?XnhXJ$>v}UZ#=Dwtx0&WQhY=A@z!|>$TVYrr2{A z=dG%hkGt1My~g#oNwZg+ zgliV^vqnzXrT-3uHAm{2rr>c}mCHcHDLvsqZ;MPvZD9&UYUJ@#tMmdv??_qSWm>rk z1+9~Mt;YUB#YRye+!pAcTJwK2@)OQLR9THV7wj2od#o4B0Ew`pWkAq+k>S@%aV|tu z&=x6cv(^)h9mrNe7Ha=Q8!u_(ZLDOJJ*gULVk7AqiMEkRjG%O%?dKU>TqNBh1&KvThDm zGMF!dK9XFCSOchBE{{U4Rw#TX9nU9H z)&x7E8hTENOds3kCP3Kcg%6bGOlslzRFIK&EfRsS&E+0jHuu!XmsKs~InNp8u`w3X z%Y$#+a|`O(Gn0CIz7UzO?U8MOMyA+3WspYZVZEySGXx0hX=d9ql4aoeMfMywS|ev{ zWQ^y6lohN!7Hz!hxhN5SdbiS?LTNyFzNnW^Aw-is*F@$}UQ1@O=XwaQ3f{7jDV}e{ zo(nqaGHJT!2lNZfkw>gtbAWJfdbHC*7J9mdu@9@-ZL!GHQ;?$exM3knDym%3hJ}RN zvy6qb`8}u1h8J@pM_$c|T*}Ca+}0yNpsd>;<&-&$oq}o$tMptGaw5b3Rj*20bILUM z7jic>r_9Fhb0WzDaw1i6g(bT^`77i^F3rn{eD|-ilCI~JN%Q4I*4pu7)qOHn_<_>7 zm51t4B86Cnk#bs33N7~Z3ghSL?XPl9ZF!9unJ;lBI>V)ct-T=yMXrXg%r$ZpRsxzZuC|5^aS_YD~7r;w%Q9uGcZ z2V`j90PmeohdiyF(^fkjD-^?FE_V$kkbp2@aX=xPXCE8W+jG6x!o?PLQsUN^-R|EabRng2)`k2+99a=%i<&$b6f}LQZ++NPd#slo*Q<(KJ%;)oKz{HX&Vk(V9Ls_H`8AJ2OFKzO(yjC$o(p zaHH1T#cY=&S6{P-$VAwEd5HOZ4w<3mi_%`}?DiUl_Zo2v29Ocvh#bgByv8(p>%45f zB4q`}u~*Dj1qsCJ7;{{XTw~4gIgnS)$&xG3I)3xD95QL<43U{(*K2|~TaZ8>OgCQ_ zBoGN1<~%_HeQ=_=K#&u*=O>v91?g4L^6C_GagJOw%$0&97P4e!nyUrLC~P6~&2kWRDwb&67D~-ZDQCnSkftHa``lg{lO4=&%~xrkMs_=pUqxn?1NmK$KOD%P zg1qTK9tm>VfjkupciA)SKGU6>OTRkDDt*7{5#-?901_%lD+dxGNT=5WGI<60*?|-k z=ry=_7db(2a+PlNC)zKZk~5e6|h?8fH^34_HpchISew9G*Qc>&@ppV?zPAejQzX% zcgh@_n`f(^ZJAT%t9a%zlJ4l);TQVM94}>c)U(x9AnAgPcOa9ctS_+R;D2L{&&=0y z^D1tg?Vr!g8G^jxK;{VYYI&85HP091b%)GiLEbADkXa_kLI<)+kUUTjIkr?GxM+@6&=WNL7sCU zp9tb|AZG-*S{Abghha-HMj^`Bm!;BQGvm8(dS6O14bC;M#&Lw`KAN*A--pEmI)4z96S;nS#L$1(|2dLj9$T($w)7MaP8MW{jZ_Zq zAjoDLsTSNVhn||j&jKOpFih#WN_B#J=ZJ(l!Tm(fQ#~T3P`%*ibLeRp{9=w=je-Z| z>6HG{3e1f`ozmxP`kAJD&phMD`z!jvYDFJbRR< zo`3;;w?5I5QU?9dj_4ft+rXJxa%ZyP@$?hUK)*oxddOV`E!IlWsHS+v4E*oV&-nc& zioe&4%Z;VHw}@`lkEQM3D%yPm(XZf-eM)q{zG-eN%lW#de}0?jALM_%y`nSQ;EEgU z^J&@&dRc#8p|P}PES?u>5R0!`7!(RxDjhH8Y*3O|e*u*HBkElgxWy-B;432y0_9B| zjA!B+bWLA-Ska*u6m36I(K9%$DA}M4%|~>V1>J{JD5lH6FDX@q_-u{+R}=NG;Lw{~ zou~@*zEM@tE436gHGa8<;x}o2d`-o-)woej@jvxZw1?!6rQ0}3ua5d`L;Kcol(%95 zUd4>^Twf}>{F0(?B0uA6&|exlqZ04oyAFHwLe@;;SW22_IrJmW_VH)%$pd*avG_BPE z?+b+9>AF83gZ*p4x2UJ=o-l=IJ?hy@({`E;*R-@ygNCFKeNrZ#Uf+dh=aIiV>dpS| zg!pb0W>CKtxONj3uyYLTYZlfuy`rYm{EFwNa~SX9Wg1JH_7fdK`N4=!rfU$NhZ?By zP*t{IVAL7Q&xQA9rCI(987rsAwKaVs zL-B*qFT)!K4~i-KI@{Iti+hGlS{gCXTjd7tPm-n6h4^8)+775qCD{&_{_NrN7uzb=k7 zsA4-VCqG@#AsPULQ?RhcMBD@=GV*pz{7tQKlBPt7PQ^Bo%L)8KY$;LIC%g%P>)-xKB}D_0dJDX`VD%F zIAi*)P;0zUa-K#3{~go*I|RS7{u`RVrula@|BmpMo|?q{>MZ1We9HrUOHuCvpnsyh zi#YVFc`VTWoG(wKuIYcEzcO93Ptlv>6fKE%W4!1DMN`qA^E8U3uTJ6qEa^nxNhy<#VScz; z-=tr@VQSE`kgEjw1nK7iy}XX71iieDV9M(VrtJ_N1V%ulPKg#%uZ$#&=Gy zGoNWJMPdub>%aHWuag?7IO&XX7s4OhzjEvGZYAQ7<0>EGZ*i>EuVN__?bI9XWW_PZ z^$XxV$Ume}hx7q@{4l(nzf<}$;X9;%1pBWB#nZc>Wih^+d+=TaUH;fcQPdytusAm0 zZ+^aT66(!&>oVmhJ(=>o!;@fd4~!poLu2VsN4(zw{A|s~z@FLQgE3CTZ$m(CI{eG+{xQZuP9Ft)HR{9ZZ-I`Lbofis4N~hXgO()W7E0vL zIj&d4e9ZcuK^(n@^wDU~eW2|?4}!L6hBqES?;!a96Yy8HpOxRsP}k>?Kd1~1&@{3# z`=tyu5gPDMU$pBN@CS8PbksMBrc6|H!6v39b$c81s43A`C~pdE^hj$h`Fw9URx+K6%T3*grJwsJkLmq9ZyZg3p%e(8Jo zf#ZnxJM&&(JeFo`V`{})DLc-}btC$%U@Qe~#XKFQ@>h%j0A4@0RV86xEIEkxR z`V#SW9p&urt;+c^6;EHGe2!m^BPahS@J|mBJ$CfBAow*`{tAyPu~hUjuLEMK%LQHs#1cOP^d9s+!uZhweDYTu7udIeKL}cNwu*}v5uZs& zFNyYT2desOpgktX6BUFVOU5h8<7z>aUjud&1)ZX))jumq9L3TrlU2P>Y3e~+T*Z9I z?N9>wHVsvFzl*r92)@?W*k6I(@e|bmWj}>^)x6LM{JM{c5L+NL$wvZBTdn^SYL8_cdQebzEM-r{eLRDcCVuKH9irxa$LkCzK=H!v}Yys z+bd|#o6yhn0_KM+jsN@p@VX=4bjV+aJoihc-R?3qXpbIG3MF8@0=@z0J<#)*x7|$) zdH@;;YM|fpe7LPC-ZKr}lSot?)DOxyHBo+>1byY2#L_LSVGU->CSh+QcM& zN(k#eiuDS$&n;SEzNp`%YkD6|s|pR&pXci)Nayte(>>P|?RG-ZQD_gw2cX|Kfqfa6 zCz+Pz`4aRuy$`C*^+tOS&@`{6zoMR)-)(yi-@|?!`p(VNRP$d8Z%|Xj5wAlt-&eG# z_QL@9k@4x8c16C{D1W`oI|2Q_B3>R~zFo6lQC=@F&+7$V&sBxJ?BCBZf3!#bS6dTx z0sRYnPtfgXpWaOZ`q)2RU~ePDRTl@&{^}3BGsY#RJ&?|HUo}Nth)d>MYWkbT(AkX#;L;8$|it>JodEQ?QLwsDC%>(5PoBRnWhEnsr^?> zGlfTLKU@C(0_&J1rBwM-VUIOFTJfyb39+Bofz{I>lj(MPB!w;NMFFJj8)NKAPj{E@>iEPojIrFDu{ zJEG{z9hnC7@_E`G$h`$SnHE61Fx`T2o9T7+19oI{g&l zh4C4%kLeZ7SApGo9Obi}Cy>4d=}dq9T~R(iV4lw%m~y>Opgo6Roxts8t>3Nnhgy#W z>J{4=`zz$*csmV04?{UT|Igl}&a)ofz+({1yyo>* zl?DcV)r{j5>vfEStmjKDS6|Di@>RT-YFdp>!Ol2GxmI~qWqohZ3$1W2*)-sPUT?=V zRqJo2br8>NAL;Rs=LKsW*BJHR@Pj&6R{aU%^gOI%np*9Ec~tseEIr5TK4duqtZt|Vj53lyI}l5c}%Bj zI@3|^f#Mh!*e}m0+P0LUk4h+7x}>5XmS$?oxx*sR$)^Xx(L3Pdb$Zq?m3|%L=|+d$BVhMt*j+P5 zQ7lQon{rOF19UjnflT?_%<$kpT__IY69sXF+ zib4bWzw%-o1ij(Qr9O6k{sP=5$e$doD1QKh`Bz{s(>(Ae)15^X9ac=y8)X#jrD8e&T%RcXCA5Fb1}5DrkGC=b|0bT-6(;dBU|)bgulXIPv0nq<0siFl zwtp%5yn+2b_~?a-uc&EWP5H^OEaW>RdJNio9{V%&+wn=*Z-Mp){TZ|n+T$+d_-RkJ zZwSg^`rg-Ar-1$d`n{uFSEC<2f}dVkpy*4Q?);SbfF7NX4kABpHlxjmBlZWMhqGM0 z3}yFl*va)+sq5QK^RqQy<$#Lk=9*5JsqDLmda|8f;2!AzdB38wP);cL+s}z!JDwij zXB_ePSkX`4P?YBt#z&#wGyQv@qNfPg%b3IY+2%=UK#Se%NsX@z1mh;*seQ#4FRKh-0P` zH2;j|dm~;MKZgX?M|+$@oJFN6KbKL|_U|y1TLN}X)O0ue%X~%H zTLStUWBtVAFu!|`$I*ARKDLk3`3);PUR&jD&Ek1jjpv-s`)N*hqaI8L^v5|D@MW6j zx~uv@AK1F=mlMbz&h+J)&2O{;0z+Tsy6oSvj<_p(y1?YBpWmw2S7Af0J6;(+N1P1~cK z_-29ezYpYVBK;`hk7;?t7t`;MpJ`9T1=GtqJ)cg$tNC*}Js<32xebUPrd~}aYx+0J zXS@jPWm;GAWsj?x@E@P=a(h(lsAw-uf7kc{_>bq;WJU#{Y$GH#Wk`%T5$>&HdppVayS|Gh`ZxwGFFzzHd z{P+RdI|*_;pEA85>0Q%bKdAUG>nh6cY2oy^3W^#o*3&ip1Ha<=9f!>4(dm5Mi}_~P z6}_k_pQ|#?=dDaf?^X1`Vnz8q6O0dxSCrqC!91_`netn}nDTm`Dc>i+l&|wJho zGfwfo#iSNrU_FfVl@}0?nAdrpr)JhUWMF;5*YOaqktw&a4{2sbZby9e2kne@7zp~o zQ|#YC>%#vdLAz|i`Wbrp{Bay8?_YRad#)U;FjnqsPd%^5^A5%Q}v zO~Clf{h<>4&h$RUQKk{l!!!eaVtQh%qPewxUMF+E?Wd_#K3^|qJNSAzQ@&o#^ck(U zo~BQ`D}ATql)b-cx?NLioX=j5!1(dy$GD#W_2BV??c?i1O!YWHr!?PcFZ_UWuW6s~ zbs(%ikZ+bFPDf!JnTK}0UR=?8nh(V|#(16*OapP<6X}bA--17xW@4OM>`31NJ=1`1 zE~)5HjK9nuE23xu#$VWNk2h~4eHPNMM=LrK>ssd5VSHtp06Um2*6IBt!9WvrsL2*neufTraX=?<$WYm9$%Oyp?s#ng<@Z?P zaf-*)FQIoi{D19l>|;RtVqSb3^yiV-&w%ptcUwWvV0_vI%Kd&XXsbs=`#}ezf3Y6# z1YG9@|I=K>UtOl?Ux<^Fz!Um1A4OR=C7x}+arvLZFI?WIklWl*<>Pe#^V3ld>;HX> znt#in-Ff}N`OYJq^IZZx3HmiCmv;j+dwCeQ#;ShA>yPhHp5`N&$2!2ahv$JiNaynl zrc0|awfv^$CFaY(A8c1&_?IbPM_{@xUQugYNrWGq<4g8&#H4crRlmBb>HC-;x!*6m z$J8zR!!H`SB`%ncMmqOHYd zelOHf)C;}L@2IXQkF(4hiA6As zUch=2vUlTRO+Sj?z{9Tzi2DfWC%#xG^ZlYYWiq@rt+6 z&rx=+L%Z;J*aY(h)7y6y&hejwd>sGnw4ToYMUQ1C`v>RR^6pxWhr_cmpFw`Rj#pl1 z_r~}z=r2&k^DtO!<5n@^(6(Uk?J#=hsa6 zz9FX19appp<`?GQ$WXMe<|{o^{1fQs^peoaw3eomPAY!jL`AFpspzdfisrAu6yK(R z-Q4cOepTzx%8%8)UsKyoK3^RU{X7mZ&nkzeV}e!2g4BZyx9a z&{d$*&k}6{J<%C@gD`1bAleQ7B--cqlDJ+4+O$+G9Y_D?`xIN(;&qdCJvq?+?9UHi zcg;?U#@|x(Z}^4rx@EZD9nzZ?mtWKM4&I z+=F%KU9>x&_h+Ji@w%1QlfNPkW?&tL^#r}B>Ck+*4vBJKE<#ki1;$yl3&)GPFF@g? zTSUq3x)gD~j-GBPx~4)Ypst|7lJ1yY?uT?=!g2KGe8 zVRr?Ws!s{=v#I@U(sINRj|vZTTai7~yXL5Tf zx&1o-5y=0?;QB?;ig2vAAjj?TVq>d40zAIvg?Nf3-ha5zes2vzzd`%t`Z%EX3iKp~ z;5rTHTIl^jm-7HTx+gsXO+|e?Eo+i{7Utzukef;NWyeo%f6`3UG>=)pSC9*22;%iXeTITw=+u)UW+Z^53gwOzcPy!o>l#|^X-)}OYW z^J`;$13i3Qm+8FfOtDUc{X?)%nU3+NF!Xa=L_6$ZdrLrmOp`%O_is$QeZkbE;#)EQflk7DipQlUny%KA?c{!8 zQLez4{~;fbOKI9q6Jhr@*gXw24Stvpisc8bh8|0=>IViDMm+HS2y4(jeEqH%#yRHI z^+A(5VLT`hWYC-FpB*tSE*EOhYRp4CPA(IQ`>Rm?#+C+ELV$18cI-vDVHgMZgL1!O zIzGRmzeA4sKcW=fRY=iFg%w?)X(-yA<$gmwPQiZOUtbMU{=Nu&65_31^C;Smcxw#G z{h$RXum4K_CyGqa=Ahiql7Mr3w$pN*n=3t6pvM~D*x%Ptj-o34mafl_+JA3gTu}3r zO8*u4dHlVP^tOL0zo_{jFb*rbvERYG`2=#@UanTz{U6*)wGZE4*|-4i14nvW_=ndy z>bh=r`PGn9?WOYNh5Wsa>b&=7p}5~0dbmBE?YtWOisOLgRl2%wDyo&LPq9{N{91-_ zipRxe7!MatWxuO@!CJ03>>Y-AlI^zYrS7XxdP+kNkAJL(`%!twz155FA64nqb$wUa z{xs<*)*n_ms~Ri0I?%)ZZJ5Jf?Z7+ZmFF#v*I!ZJYVYAZ0O!+jLaqBNO)7={$k(Hj z;Fr$G&+*y^b_8!k{{&r)aeEX~UEg6Hs8LSQe?Cz3Tn|NW zXH_VH3I@FufS?{=bj3bzDj082FaQeauf%IxfFNAS%J>uQU z&-pHMKCO@WidD1oFXZ5Nf`1?Fv%P{z9M`Krna@>G@eedVO7p!yIsFICp9OUzU#^5$ zIX~rfl4>X1S2c+3?T}sqb};4r6{la9xR0fanl9t{2l#wVJHuam-$U#93Xj;VXpE*m z{;l|P0~GE2NKtDa@c{A6`hLbZ#rHMl*Lo~{3RiyN_AXV0=Rq~jjneDlf(dFKE1FP- zA~BDYM*YI!|MH-Ge*njUAM1c*y$+}h`4xz->Iv9OAu^-Tz+Z92Uo_!q$M)#=^P`v)3f zbV#R<1YZo_So%b#Z+nPcZTVbuUZ6;07fO4?Q-V%kBkd7S9dx>CkE+x|r>pj;N&|#f<*iSsMng(E?WsY0b)EfdVl}!m zp$5%WeCQ~&=U=Xxv{d+vkcr?u_!d;APCxrDr`MtlI{gRm9;!tUkTrsRtP_@aP)rc`VyK_h08X339aa%=68LBSt%ib!pgGz4Pz1b>i9ZWKH;Z^{D}J8M|x4s z{|Wvt@Fg{G;IyY7B~k^=M}mKvkVw@v|4kOBCsBRP-vj?NA&FXO{wD1C%hj6NX#N-Q z9%@ZpH6Mfc`OB3|y)|C}yoZwMMaAp!pbhzixBStDUJ+jTBPg*A?G*la=x1Yid}&7q zHP0_)9B8zoPZe)eT7unYVmrFy;0u5+h|!kgx#4|o-}Y3}!AB>yr}_@QRAL8e>EJ6Q zcBH<-&!Zt&9oI|Gnt zkNDlHSRYd{*t<5OKW)+cE5Z+;lfq}v+5tEXNPM223V+<-{_;}d3-q5#oZsp%FHkAr zkK^`rJpGCE$_{>F;y|kF;AbWdrtS`YQQ|P#qxrRnPrQAZjym|2i7!z|9G7?8;PkbL zsq~!159IPj(Le{kC~-7xbMPAy$I^!metV*y2I7>B^}RjNh3QDKr z!e@l2@hpRG3U9@02K^+w^7qGy8PpYV!|^ch5mv#8lc>Muk7#~`=BH!)>YFf$(uBA4 zO`<8nTlyx^b}j!8;uqgpq>nWpmBIW}I9pn# zVLY#rw2Z=QvVLp5@+K8<@c7;#MLYPB37J&Z!KdX}OYy=he@)KwHq{ee)n{eGI%=up zLvmfjsY%jCYODEJ@QuND6aKrqthFLZw-E+=BL8m4oUCQ2+c1C-wpg& z&F@A1dM9nB49%YfKLGp;;ctYtd4m3&w1w6w-U$8_{TciRN?y+=Tj+2O{u9NA^c>9d z(H1(d`4_=^XbW8t-inv4^o{VU{-cw&(qFYXef`@JE^MX-vnQbc2YgfXZ_CUyQrDw?|?5xyC_-n z@1ehc;o41|HGd3zB)){%OY_T)bN=_}dChMFUyR1efH8O%|G~r<6$pt5q>f8-Be4!f9T-fOxi~cYO_C8 z`lh7)l#rAUnQNSg~HFHsKvPJAn7#i(dm45+HXl` z==-`#-*b!5KU;rJgX<|?#_!e_>179Bxb>Ivv_0F$>9MV^&_+jkrPkMIkAtt%`UV}X z&-&)kCl_!U)A|)&XpgCE%X z9-hom`5#FBKk$T3fPba+pLEH=S8Dw?ee2*Swtg&cvEcg5M1AJ9eo8Bvs{G6^Ywa>l zHfMew-FykBPWWipea-jGz*V`{!A3$0m0tD@T&-&zW(*eI>ObMeDB)HA2}%q%Hn(JX zYrT`(*r)joy*PgJ7$-Hq_^#qFXujq+#oyF?o_)N3$YcDf`RRKU|5)=+dSEz&Fx-Jp9{_iW{vop9KDCLUE(L@RLGT-b4RRjx~De^!_3rYdo*{aUvgU4A=5E zM81UK*Xd)P^7v4~n56kx;EPcSW0vsq=vTDL|n8_8bdF9-itayjFfB&Yu>7?l(s z;=jfAS1@X5egXJmRKaMd`H=58y`s@l^U>goQAMMj=JTO_2O5=(ZkjIxz8F<9`fC1} zcky&ba-1MrNAMa-?8xu9J;P4 zuKC^Q50Mmaye0f%ng5R^S2aF!@Mn^%8J8XW<>VU1EeHQ?axLRG2mgC=U88nur~eun zjdSq56d$tW1kaBRjpsGL9=wMd8pAa|P|_P2qc!iB^hU-6&ELj;*WISEF-`Liz=wjL ztNCZJE*fYwF_vn+I{0GL#K_eAnx&|Jo2JGF&2IxA1%8L-dtqHY&}e3Sp!t`;7sKtK zM})V=pXSDC;Z?jww`p#)Pv-h(P^H^M<6{$z+HDkHZwl5^ZIX-=!Y?Ks&*Iy(HqJZv z+HI1Js}8<#o3_UH4nDC>2jjl*$Bp;>IDc!?#Yk?;`oA-F`glFt)p%C;<3`bMaMx!< zS7V@q@7boCu}kw07jk+JO^UI{!B20~&nVTN^&K}}fj^eE8DO+@@T=QAZ}8intn~G5UNrm;en*=@#w-WF zzs*o%i-SMjW|(o%!Jlp8Gro23U$q%&JaF*ewi#`BIt0qQ*Jg~tPrqB`yW9GWQVu>} z+ccx5@bl6_06MWyYP07wu_8j!mIt}J8c&m zgN3)ozs1H#;WKFFFG{@2%;~CT7Dd*6+ zmVOu?3wC~Mu4NFlasJJ-xKe*b`{TE*^DGHCJ-Z)WXes{B^b0MssM+~iJ#?Yv2kLTb z!X6m)Gjy?K5BkYP=5q8T^hsvS&n>oGrDplN7ekj=$kza2`vsP-TWWbm&GL1^u%&Q{ zl6Z+u@^!+n1%gnyv3!!&X{GQ?vff|AwuyOhWg(0;3Ryt+vcU z+n~K{1YSX%FStOwIk?n|t{=T#wgZ<_8}((iJr27~%oL zc38;MJ90nG>c<|71LWyReP!#r$5M+rUuWyP$MP=5+4}Caw7@u9-@TTPsEz%#&(ejO z?Vq?|``{pxze9@4CdelaJ75|7pXm=;+^G)s3TSpHovrIsf zd}}Uv3Oe^&vcC>lW}|0;8wiIii_yYpvj591tI^HC3bfOu=;#}y{9(&3^jF{p!ePrH zbpKyS{D|cQIsn{2IAXa#&9;Bgz@wI*sEvHwam#(`a-HQHk6Rv67YouE=(P?zZi(_E z`^(s$rz}a-Y<@XSPg(M)i-npS;Oi#CPFwb&KfVj2I>4VmzlOBuM`NMCKJ1Le+2jMm z&RHgzd}`PQ%Pft z{|QeqhdYQ4!2+GF#~-U4EGCSK6(+jm&-@u1oRK!Pr*~Djs4e7 zoJ-A?H_)Y>D20*rG0w-%Vh!qYYprn7-gXw>riOeY*h%OtHpDpF-(AG!=mpcs^j*X@ zIQ??4lh8%%jPXpUXOWh!;wKm%4{jiI6~CY^(i5Sb_HyYa4n^mKM}oc3bE07snoD;v z5WN(f4vs{RI}fe6OAj#-Jqug}9?gvTxt?M^HQRoR&{Ld%(~qfw(KjwV#bWdX@D%WD zbZ?m7ESFy5BJ?ou0`O{d@Ff`a@A8Sb8Jz)M1Kx%HaveO+bm=XYp+msi!6(p9C&T&Z z(nmaxu2BrF2KYMqU^cuRH_`M78vaee#OdL_9nwuk6inU zf1_8^`3(?-2wI;kI};(l;W|JR(d28DwOt2^4(Pw3ovZCSRD6fpc)sZ>Hm7F&r>3rM zVh4<~{*$}dhnn@DTDiK5&S=tqYUS!Fx>M&1j&Qy2;OZ@|LGOj@eOFf>(LIW+AGA;4 z4z2-WU#LgKq2Rg=1H}sTU*OMNgTz*`ByRM_Lc}0y<9rGcBdJ;Y;v|HKrPR>hT}1Y0 zsJQDt@lf#sv%b2B#KXkv)cN{0u#*rb-lb;sbC7Ge*dO}gW7_t|hueipDtxS$^jTOD9 z%dG?9d`xnU69cL9b#HJwI1=NNp}naT9gIWom zi1CeZKT#JY0}Riz#5vT)`X`BtsoDOK2PTPYaeCH&OA&YcXZjTJfXVW}6tRlB z+lpDNHH-%V zj~$*VzF@}tflN_@^MKrsljrw~T(iX5)W-clw)h@3tIsQ4v&GhEQlD44=89c$`e#{W zee%Wr)JA_bUv#CuWi5lZU^lzwi+FoJ+zSy2RU$4p_<74v0?ifD} z^?tkSSn&&Lwtx46{iu!k6^a$i!T?y_P=`XXKePkn{-tOxj9zms6o)elHQ@Sx0=xv> z0({B!E3u4OpSA$L2IN{KwoGB=bHVpq$BAvxO~%33?;OU7!_i&9-PLj88tSRSU>YAU z-eGZ};sWGfUB`?4Q|bJKtI%G(0=t{6xJ?lCG#392;*M@#i>cI81>$$yCW%uq-o65! zf4O}lZa{wyZsqo^cpdFL5Aro`lf`OuEF7PY-HOEr=)YSLPZ6J@`^_hwD*jDv)aPlU zK8mal+uvQ>rirtu%dI=1oeFZEAugiM*AIfj!K*Ree*=ln6gOjhI5-@<3*+p0>MXGg z`RZ)(JjPGc_-yey#@X}MIpS~3y5R@ZMt^FKNY);%RJLkb|Nb@0 z$IcO-o2G9GS%%Nk$@E3~RXATN#d+coG;6=+i5}Di!l@uZ7~(chjHE6Rj)UF6S=7e< zn=cl!>1lhG({#Q#jk?_OR=FVfxh)XyqZ@)@Ot|x+w5^*=P?gHzV?zT)kL|tx;en9T0mWgN4oja2DdYSkmnvAc> zhUqPE-6Z#)#D#9l#fHqnnnUmvXSWri3pLBC1jr;QzVl2joxWg}rKztXvY&F^5 zm0}q+XN&^0qO= zt&Jgnu-$EgSeH6qXae)!3!cD?_tTrjrEGc&DIe~GdXll)hu zcv#$z@xQ@N!eQ|k#z{V`QamD_#rO;wKO$aXaoql+;xE)}`*rZHF3gfM5`3s^9 zc{6f;bfx7lh&JkS>-V($MX@%<*V6JA#YPyv59iBIZdGDSjQ>T?pDM8(i{tUUBz{88 zj;EjdW${alv*US1^rmLVGsOLh7>p*zGsOLx7)Na!&l}u>Du8=@<< zaXfE`QRQFrr5@z9-{V?9i{YUXfHa*RE7J(mA8^`xY@fEdk zKK&@l(2q6l-<^aXMVraV&bP%nCTBbTBsQgH>s#pfv)G!Nt?xYNUqmuDSYL%bf4uh} z&l-IHKVCBUfnnQ#_GEn9L+-`UZWg=$>vx{P_y&_RkHXjcO(x^-7Mr}FOb}L@yauLU zXR^Eko)4J346Xw^OzsK&+6zg1wh_1Ka9>v9 z@ecRmDS|N9WEIwL(Z5y}N5IKc5EWKn4IkVo)kuH)c5960<}@!TS`kz(_4fOq%|hP@0?3p zOip(GP}*y9wqqOVD77*FkEC&yaav|Bisr0J} zcRjjDov4lN?Jo5)`A?7T(h6!eUKa90(gx}RojiYf<+#l=fqM%0~Da zhG#G7D8}c59l>WY-eVHnUwD2ZUB>t@a6|ANX5kP_-^{bOqb1m!2V8O=>v?j@nQX>k1@{1hxL?p37!J3u;z9s+J443Ms(b6>;x z=IJcmLC*w#2ELDG`UoAW*jf} zrSvhI9{10eQg@S`;0ffXCMP=&mIj-g?Ko8Oq&Dj3a4E=S_$?tRlA6`mfu63?R_byq z8z1cnxl6@J|xoOEww=(0XGo5rOxQmJ@9_A%1pD-A_|0B#`oN?z2)`i_tSsoDOC_Z%UmQM2)k8J_-9Hg&#E#xv%C zi!jdWdw}#U##wz2kY-RD`!7&hKy559P+CsSmiLusptRfM@7;o=>(p%dlRbl_YHGIp z67cUBXXCv_O3yH^!TrhiZX+caG7Nw0{%D?Oh@?~J>uurs`xW?q)W-USO7%>35<;c- zOip$VliHY^?HD0-p*HGUl+>5nXb)qgFHLdyeu?C6isv+qmu66xTUQ@}-y-!)kd`o8 zW*>yN1;Kkv-r<=j-8T7{XR`F%Qr!t;d-H|sQ{e?<&opTXb+J$@n2di+m)263 zTgdpw+n%GP?Iz#%%#;q9{L(W=I%Bfpl`p+Oldt+M9{811VR=ues6*YUB9MmCl>&B+Qkro1E-CPr7Szw&McnPio`%elNYEHjeLNN&AK@ zGKB$DTb{ZHGkJg;R^C+c$RZ8%?ZTvtiGSX_SqE(Cv$aW?*IwKN3dZ2Z@1$rIy| z&|jz&*GK^v9|d+2)<_W;_h?7vzg9}XIC(Fi5S&5H?uRCMt&?W6>G6JHqqKsW-7n1Y z+9dseadyA3Svp9~?iUt%ZI&v~->vf6Ce5KXu6Ns{#Vl^ULbrdLv;o}}&W|lHeFb%aKK&?jr|-z}+5LyZ z;BC@ElXrVSI%=jB{@nUgx9;YGZ$&lM*oA^c3{3 zAU+;FxfMKL@~)JYp!>Im=Skk@rS{OyknLaPDhM^bFGz)Gk}s<7T_vqBxtaGRDQFs- zo|ON{`-+rjau@Hb(tMNqcwd(`Q0EI|`hniJq*^8amiP9)BXvR7h4wz!yILAczALRT`D^b7QpgN8zmPb%|MGq!k*@}k?IGUe{al)izP|wOx4d6Uwcx&% z#A{{1*HXOymSRml?JdYLxs|^Kq2fZ*G@cHpIhM>wW$wFT^-;YoE8}4RhJ_kKuaP z)2Ft4ZyxhQXg3G>)Riss|FxS>J=p>6`yAf4@M$22q7%U>K8@sE)cFFLUxCki@&?#1 zm zHESQ%`gD{lsM+~4Na-ZESVE>}?OCZ$XSt)vJAJyy!>L*MLq1*QDr#09e!p36xs;SI z&|i0h@pC@i<&UU~^tSEcYXIP$X!g9RyZjk-iEt}H5H3L6kGfcJgyVL@r>8uQ+Q=t< zB2TAg?ddD8-tuCMv-Y%)yaCOgAN7&9Q5Ols0dgPt7wTf+XSi0Rxk0Y zeg%5pAISS(;d0h0GXJT<>Ku5!=o>Ddp*Gsr2>B8<8{cSw-&&|P#TWWU$j_PthPVP-z1Unyo?Z7u)4o27dhd4nlG{p;D6Xp4)c%f^Oyp8&nWg46h z79m+aL|s7d=bgY+=xpeJ9rR6+tC{tNzmxZMQ|0IAw&=IuxRUeHB?#J6-&DCKHJpza zuaEK1!Ew&1ax)gE{VOLSP414*+P$9Cq2>n5r_7Nl;22gtWTj_Ms4i>LV4H5 zfA_D$h_B?6)W-h(O1{A2bpO_Y_#JAte;bV`lI2abyfqB!`wMZL?128hD|0PsqrWyz z?n!Ozzi~3WvIl?0{u?I`rZ)O-<7Ib~;r&$E-{fTH337zV*^Xb!Nz`n63mw0aGpX73 z&U5}wE;3DT5vIuBGV6oRlK1bX$R%j@{@oOL0Xp~$e9d*lRCzf%8Qd1U0nNrcO_R5w z*?6aE@_sZM?=)RLie}@Trpss1??FH0g;*kAMt=@ggcA8SI%Ow(Z(zg>`8V_ga1Zcf zbgfJ9gE}K-%CFGvzyrX_X0m^a^qEyKzF@>G*@oT(b_c(MRtq5CK4P}q2uT;{w5oljW%#r(`S6(FT?HqX+HQWEm5Rdpz`MGiePOo^9`aD-o zr_R^k2E+ZMoQH9C|29t^k8yVYHcu|5X7g_;%$Jv&oHJsfTw(IW5liG2rDT5?>%Ua? zdBeffY<@XSm&%FM`9epyzn?N$aQodbt9<7QAo7dO37Ei~sSQwC5Y-QuJRBnB^TLo-g!+ z>nQx@p4<$50$&@A72Tpmen*~HdaVBy@+4}b{#3}*s9Aj(;8!7Ur!Kc{ zr^olSyq`K>KLPe}J}n=^IBCz_{LaW{smrV+-{%9qg7M|_c%PMTV|))d&iSl-59926 zGw0;T7-!#`IVZoSHrB6FR`!tN!PYOxuTp-Gy4*^}KgIZ6ls}}-*DrySz#TEp@{Lt; zPmHsCW0l;W`e2P3ZOQq1Ngj;xT3{#PlI%fk)Q`)uKQ*)u-$vB*U&)1uBF*VzsJinXrI%;;mGQsb*yvyY2em}`Q_LA}?LS88O zUc=Awr_|+EIiIvocjaN|@A8=a(3VW*DD;XH=22)doNUis-d|+nukXq^7*B)iEQuE} zV?OAvJdK*&zbx|mMP7t)cK`CLyq=ofkF50jRo;ds`Jk14_vA91p55O(kSnOC>K{XY zd#J+$`5d|?`Z8KZ-$Flm$)>+cZCsxp$jUylzl`y959B7)M!xBR>`iUduLp7vwb5Qa zkQ1m`erU7b?{Wq+ecrOe@1eYq+UQ?AlviM!^p_7oyp+0Fh=TV2q~9a?swsZe@2R|R zzW{$MKUD4aQm!!hf!`~+%H(H$|HyYt7X3wKF!W1}@^*h!@iw`xzpjLu+|0j*l4$Zr z{&wZ2$vymQD)&t8?_W!Kj%MSH>L?!^WXmHS=3iGCY&cR7JpJn_-X;h8H&o;@oF3xU zeoYi7lOOoKr!+MAkY5X>mC0BAS}92;$N9HWvQ19+|45lcT_6;|`pg{iv2qvVnYUm( zr+){f`606Wd?Ap!vofB#+(P1>{@s)lCdc{rRH{rq(B1DZ%C2KH`L`;*51V^WZVLrKh~iUqu_AS9JS?P6>%#YoVHVsHswox1HS*o&++E`wya+TVcU#fD4n$52b zly7*7&d+*%Cb?frQ<|eMFK2FpX79JBDV@-)Kb)rYqGt2!6p*HPQ5(xkR|0W*c^)}l z=}Ij6@b~b&gn)EqG&;_U#f#7<=QB@5$0U;LU%Il8*|G)NjhVJ|WgYq;b%wGFeI3r1 z&jUs)$Iut4$0$|Q#{S7vey29pH&b~|&9-MyK&BFOn(Uuq;rc$fUkS)oW>d5M9~O|S ztf4mcf38wWZOlJcIZbWMKUb-uX7f*k@-p1VL4Cyc4f2&v)W-d3zVaD$zChkDZy@9= z5!B^YHhy=kl8R>U1C3Sk(RZek{Wn&bi6-y+j0qU4EJdGz?a2eLMgNYzg#K(li|c2} z`V|NnaC|<8>4T_^{!D=qNnLKel~0aOp|YRa*#1K0I<-;X3zceWw*A{(3YF(3PYn1< z@jgeFNBg_Q0Y%ChW`Ue%GXusc`zlF1Ul_R=zCH?mh+ee`zKR|&QR#G^#rr{fP~PEN zB@x{Orr#V;tSmu)2Hq7gRjERY;Ie=jihO~UC+~w+1k6zuqMH=M_^E(}iql0F4~O{e zfF;URYUB7WSME@=?aOJpTzN#z`Xj#vtWbn1QocYS@A>=@uu|zo&A#vTB4D*rh%SYG zv=+ElSwn5queC}k#z}vrCdBWVTt9HV((MwNKYL!~By3VV4a4=kX5eOpyf;PT;AVka zl&RFl@!F=WXBHx$z5g{}o3f4C*uL$`K5Djo9|dk#`d=pVV@`0}sgzOY3vWaH+2XZZ zak@g{`9gEBpWAL_5;}~=_b659G#cNdxL+mHms`pEXx#$$DsgD`e%n5!2>oz6xnAv8 z7NAM}?Gt!FS&p{A{G7pC(4;>12|TFmM!VDaLFG8LalcTeoHN-8t`k>HPIf+|RGXab zcvyKz&Gt{B<5A_M$?%0pMZ89~hwUHNz~f3|>T+vDAvr%!D(|CrqT8X#_cdNXyel*I z-%l!^Q?u)nPv9xV4dd*3bXp0bX4j*jz|%?;np}^90?#UG)W-3yR2EVj*Plw|DYdab zDizChvi{6YLZ#wha&+K%r7ktwzU07*%AFfzdiH#LbYPX@aGMyOC-flK|0{|+b-qvy z*Zso4t4ba<%MX7Ycug5kT}}H#BL-emD$t8Fp%r$&rd&d^@t4;W=?&g<7ivw>ck4>H_-cr1OqWjCj#(UmYLQVe5{f?4ovgq-Xl4r8r<7Z_uHM}n} z6~?~?{-QjlhVMtUCeP3BDZ{JD{0js!|0RL<75!&svfPb<50!eHS13nXX9_-v*C}K*?8I3YMUp-`EaiS-(Ly(NDV@h<+ToKr>=R*;tA9p z)FaQBUBNwrI;(lli3{|1;l6Z0P*-&u+N%`44+ySc7V1~P`^ey+7i9WsOG{{1Hh6SX zi%s6@(Oq3gT_9YXLiR@wbrZTT%*P3Q2~FO=`8=SfdLJDQwg|n{f2gZ1YX7l-{nT#gYv8%?b6|bZ zo^{FiaTWqMb@WS_!zc-e9#xF zFLjAfBNM(y1CBR&Mv$|bZSta^FV(47zALl~8-j+Zt4;CkLBrL3=ni@0`+XkjbCZt* zd8yiKviuT(#4Ce*)pyY3{J0+EuQoUNZcv~)n7UYiPvZ%Xf<~$%F;32p*Fm9bBK1^Z z<19h21xKov&~3hk=heZ{>Rl}VE|hN+9H%zRd9mZAH8cVe2*YFN$v9w ziBA>k!}-!9I7RhGAE5D3YAkh$KNjYzeM!Oj>I^h# zKXQT#)$h^dd>I#9q^?1e`A-j?pl(Hz^J_`)B=rEA)bGu~->Emzq(1Hno~%BgHu_sr z)aTUf`dS`5MGc2qO!`M`eDX9kp4xcdWty6f@yGDLQk<^lV%!Sv3pxqY;V~*J&%Q@l zqE5#6!dP;DQKHVm_#!y3BP}!3?=ijs+(4M2uEO|$jwC))-GxqD&U_MGYXRiXf@i8X z(d>S4rurwf(Z86fzBJiMn5jyzo<@Ho*?E>~GdbIFj#`J>=x@zao0<&2Iir3+&GuJI zaBq_7f88-^=1FGvWemRtsU!`uv_&uA?jXajRR*tBe?|8J-v&Qo#^(v^)K}ES!gnsv z-w$4=W#60Vs^jt z-pEq*IWx__elT*2s^}zc+|O)LZPew~_HaMb3F5WUzoFknZ|TP3EzrxdncJe*L473U zJEOOEV*UjEMHlAJ(W~KlK&Bsp{&qXF2U^DI{n4XfKSWx#sFBph^=v~#ntgwEi`t6XIKO{T+f%dp+I!>=>KD|;_h+}ML#g3=AkbciJ8x6HFixJ| zIFH<}24egocqllM+E||*Y9_Nj1KO8Lafe!fUJrH>cBqrk;alL>D@X2Br=fGfA>euF znc(D+yVRxVP2fWCIn0359s&7OTl~5y}_j;_o#=_uHb#((`d_8(thk!tI&18 z4TQbwEwq*e@3)WKr~ZPj3%)dTpZX_y=uY@P$H@KaOSCWe8d!RZ9v{6%8JYh9wFbHg zxPfp$twqhh|DQycZ~oO+eT^|8=@ZyRz>{T1EfF!OVC=?!LR@L_o+dLmrE z$@I0*LF<{{L&yBg+@88fU*!$Ydtv%+=mX&H;C|?4;JzW1>OgcC@E2fL^jc{DUWn&a zU-W*kBAi!4&{kIxzo5pT$#(=5;ewiq9zf$4)hx6RjbBv1LZ7GeuTsB3|4!#$rIw&q z!+q@w@sc_py%Vemm(=CdMtgBtT~A%0AO3@kU%RYsMV|-PZFpJT$I1)MilP35Tv7Ym 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 literal 420864 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ð5*Vm-Kq!5N%d}4>@{s>Q{&W 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

O;L2IJJhT3$$~BpJ{RP&aDmP@V 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

1s~1;+#@2Dc0D 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

f$cJ6e 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 - - + + + From d761846638981d4406a938174eaab8e4f6ada165 Mon Sep 17 00:00:00 2001 From: Still Hsu <5843208+Still34@users.noreply.github.com> Date: Sun, 2 Aug 2020 23:26:27 +0800 Subject: [PATCH 074/212] Add updated libraries for LastModified Signed-off-by: Still Hsu <5843208+Still34@users.noreply.github.com> --- .../plugins/lib/alpine-x64/libgit2-ef5a385.so | Bin 0 -> 1545648 bytes .../lib/alpine.3.9-x64/libgit2-ef5a385.so | Bin 0 -> 1523400 bytes .../lib/debian-arm64/libgit2-ef5a385.so | Bin 0 -> 1311544 bytes .../lib/debian.9-x64/libgit2-ef5a385.so | Bin 0 -> 1523696 bytes .../plugins/lib/fedora-x64/libgit2-ef5a385.so | Bin 0 -> 1241048 bytes .../plugins/lib/linux-x64/libgit2-ef5a385.so | Bin 0 -> 1521701 bytes .../plugins/lib/osx/libgit2-ef5a385.dylib | Bin 0 -> 2098584 bytes .../plugins/lib/rhel-x64/libgit2-ef5a385.so | Bin 0 -> 1471527 bytes .../lib/ubuntu.16.04-arm64/libgit2-ef5a385.so | Bin 0 -> 1346760 bytes .../lib/ubuntu.18.04-x64/libgit2-ef5a385.so | Bin 0 -> 1564280 bytes .../plugins/lib/win32/x64/git2-ef5a385.dll | Bin 0 -> 1238016 bytes .../plugins/lib/win32/x86/git2-ef5a385.dll | Bin 0 -> 971264 bytes 12 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/_template/last-modified/plugins/lib/alpine-x64/libgit2-ef5a385.so create mode 100644 docs/_template/last-modified/plugins/lib/alpine.3.9-x64/libgit2-ef5a385.so create mode 100644 docs/_template/last-modified/plugins/lib/debian-arm64/libgit2-ef5a385.so create mode 100644 docs/_template/last-modified/plugins/lib/debian.9-x64/libgit2-ef5a385.so create mode 100644 docs/_template/last-modified/plugins/lib/fedora-x64/libgit2-ef5a385.so create mode 100644 docs/_template/last-modified/plugins/lib/linux-x64/libgit2-ef5a385.so create mode 100644 docs/_template/last-modified/plugins/lib/osx/libgit2-ef5a385.dylib create mode 100644 docs/_template/last-modified/plugins/lib/rhel-x64/libgit2-ef5a385.so create mode 100644 docs/_template/last-modified/plugins/lib/ubuntu.16.04-arm64/libgit2-ef5a385.so create mode 100644 docs/_template/last-modified/plugins/lib/ubuntu.18.04-x64/libgit2-ef5a385.so create mode 100644 docs/_template/last-modified/plugins/lib/win32/x64/git2-ef5a385.dll create mode 100644 docs/_template/last-modified/plugins/lib/win32/x86/git2-ef5a385.dll diff --git a/docs/_template/last-modified/plugins/lib/alpine-x64/libgit2-ef5a385.so b/docs/_template/last-modified/plugins/lib/alpine-x64/libgit2-ef5a385.so new file mode 100644 index 0000000000000000000000000000000000000000..793f4483a549d956c4fb0e7e88976bcc09fdbb5d GIT binary patch literal 1545648 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�U2^m|kOCOFj2=-Hy~GN^P4)uN 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 IgQO#1Q2N&I(b7`NvcW%Adbn>fc-`f7cL=M9ka% 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�VeO;xc|$Z78G8fmFOW>6KAQbgzH6sr?T;oKd9;&*CSV zxW7z8!udY*h6wt%Ooly%tTZaERYM5+k2@b+RDoZe(zGMIE@ASC%96k4)LjVWXI(#Q$Af|i&usx0aw}!i0HX6qJg+y2|<`_)L$-M)j9rj~%rW5JV>P|e|sMP3${vLqL!?}cHq*r{ti zch0zp8mg;x0I=f z>szgathlzZgdqYF zBo+)rbG^+xavbQL5K9NgQtlhP{D08&+^O`SaO1h!hKp5r@K&ji64UBHX7(mP()6er z^~YnAePD$0D}sd865EO3Ppk6HWilyLTv<0YO;5+0xzp)sVkMU8X`H`F51_H^{5@Gp zEoP>2fa_Ev&Ys=ly#$Y1QJ*!m2a}$3%W{<4*L2sy2W}M0fF~|9w4WOgmkWzEoZumm z(lDFG6fCw@#?^^7wZdVgQf1X2hE`C zavkA1n!Y%}o4vefZNs^7;vOTA7peT@Q8)sO=gdAv!EI)GrsWm&hcsP(gv7o`XZ?Ai z{hSb95%b2Zw@MsN&2Ni#-ql0{=;3Z@><45gGGT|JKjWAe@DNXosmt%UZPthr8iHuk zh$ByEn7KgPp+ljOz;n((!bM<&NP#);cp#%Mz`kzX9-PPQUTa@()CwY4&Y=P^KDGSX z2Rq?8R5DpsOIGc)jf!a%6rMK@5D4+UrmhA>sFki0yD#;UwTQro+eNCLYdaIC7D^_v z3J0qRIH5@G#=vg3*g`?yCbnRVf6K!qDg{S+$=>ASyzO{;Wl}%T`fc@++*Cnf+vJ@B znOG1Aww9itXJNJ^JmOxn0Y2PyZlqJ51ddc}-xcJC;SK@6C(o zX?gO6`Xcy-X0fhBFZmPYd&roLS2|Iy>#vOK#Mm!S^OmAa!Lc2ol9`A!b)MiQKcypj zWd~w0GyyDrVt2jW9jc+c;dt%8L0wr?3G$H5M}#Q~*?j1jnazo_GM!59(MXd7B9#L@ zCmKRR>CO0<-k}2P;mz2rC*~m1RlB)aAYm<}xpn^>03YQ)ph>I_9?-H>`xZoXebE8< zc%oe9KAYz?^%c+R!i@q#^byWv2`RXwRr#1oH=CP|VQPW$7)J&QAEl2H1j9tMa1Sk$dtw14vDrW3)LI8Ld$*p0I<(6ZVjqb zo^^k`o>RA%!%j$sJm|>XoeN+#q!_TOzqX)8uY-+W%qgT;QXsuKgb{U=-|$3N}^R zjv6(J)X<701$9OenbC=jZ+uj-RixG4qD(Nvk23r0v(J94yhshuX~-wQl9iV>c!&k;#T<-EZN4(*n%lmEsH?TBJyASdoJJaOysPrIBoME>*+F@pvLCIDF*{Z4X)3X_dZWa>KsOk&LV ziIkjh=~seZQTZJ3pPx8f+}`pAUnp$q<0ncDP@b3WphPlXzs!!JUZe*_o8cam8@hN; z3)$1i9M?Ja@Wa~w*eYou+#T0>#i)KPk7Z2=6a^~OW2z5`t5zLRg8q%c1gij>drsu9 zH+(7_1NsuGfuNn7%=xZh@$Y|O}sOUKEYg|Ms-eqN~=!&6$j-H zfl&t4Hd~!~p(7LgXc-<$7VfF<)I;vkGN+fWdCfO;J#85smcI4n%-Ym0;t|_w`+m$`i6usJi~0*%sm$L?n=0Z=E2H8hy}=KKSnOfV zAPC_G;GDgL+#-i3qoQX|Fb1Rw4v>a`#ARKmA>fqdA1#yKW1{+SFT0FR&EEZo`I~B; ze0M6zq}Yt@RU5qQ3V_;kEyjtigJd&abUw9N;AH&Zj=hbKktprBMvG}c+R1k{|PH%Rm+^7jg0 zCRp|pHz^G1vW2;$X0H^T$QwV~*n-#c6yK&mY5ij>A`hjaB2p#`IFQ9x1?j zq=C9@J<@0i8bWP9wvW;xBdZyJ1ffpj}u7Fb;&6tZ*oaa9%OH|s0NHmExtrJPqm|ih{D1)j`fn{* z?>Hv9fDfvYUQ2h9YvZ)%sChtN8fNBVyObfpXQ)h?y9$*Fdy-bSTe80WOWV8Hac8_szGVB1(CSSI%oq95|B91MG%QzK47eiP6=t(n1S4F-1FY6!A z$MJ!?ZYd5^Gmfr`#yJYnJLiS~c{_@BASDkrAacre{EML2AXaTVnbNwuy&k}9J=f4x<>SXZ(6 zN$%?XABMXVu8Q5iqN{W&=O$z>j|ZIS#eDH`$o&%604m)D_(^e1F>E*`C} zdD$EJH=e(Cf&EO4NYMj~t!ytxQ@eIv9)+~n7^TQm78YAl^_`c;_-Zj(FoND|yGTGl z|1~b=U2_|0`w&CuL<*fN&;!APn5}GgK0TNB?5{+65OX}AcYVFKQ6J~cHjS)aN=U6}uUT@LX5x2MR{E!Z7IHYiqU!k8&Gb^Acnkfy4Dx7g=B7Bu;(>D+Bbtdt&gvU4h&{V4 zGk-;0onA(?8PESrb7Qk5h#nZv4XMu`Q=uuOz7i{j_Hf5)bOg#Y^pgFdeL7sqMfX;G zM+b5t)|hm++HfGB3da09h_xg{rJmX0dgd5-_&T<+I9ZbIjC=7{+k=(EBN;CJVn4Gh?S_wz!Lg!~cq}{q(Sq zuf+#BzSj8N9r#*d!1l3XzsBC!3;4IV+lN-I<8J>kgcXC4{r|w@a?3j3y!v(+KvnMA zxeT4XBn77^j5=cvi^<{NNC*k!<=!s-?5=ixsAF)MHM)xe-M)Gs{nvJg6`zgpUllvU za$VrWJWa*N%W+%@(=VQ_a*I+(Te$1riJq<9>@ z>wme%91gm4KQX4F8&wJNV&0w-P|~ckT>8;cl{#I=b)jqjlK~dejup}2i?7}4Gl=T+HNK4J6Qfb8&Po=>K55lzXV*;XT3(*GD`*E( zoA3W_m(bEE`UI9}cZ2-r*=a6gFi#+hnwo`Wv^1R={_OF z!g6lHIYvs5dmFlCJgBu=eCr!tr#vy^Px?4J;X*Rt8(K>`kK&S@t?eP~Y;IEDjrE@9 z>};#~EP<&+7?a4kqg@HiDTXa@8NE|lL$NZYciN^bV^i=4R9EcL#VO368cpqye)W^w zsnOu`u##}UhcLT6Z`=Oi6i{xH|M5U#fIe?pZzrvU_LMhE^5MZ6GJ`{?!0A0D%-R#w z3-0AZ|6s6|A@9*tG34IUSU=|ePbxulkAsN;X&NB#n? zbw{Dp0!6VBUiN>7H2@Uv!*W8+x5#f8XT{~O`5$fL<4-f4nZ~e-+$Qvs(emTB6i*ha zJFyS57Z8mXl1t~s^D$Ew2=9F=PrM7Z#Dlny-&S2*;a$Ty-SiTX(oV^|eGo6?CDf9I zyVY6S++iD*13R`trjii?_AIMt_aR0e~MGJ)Imf)`W>`7<2*&kwHG z;m2IRAP=F0d}*B4fSN<;4_Z)n{Rc1I2gvo^cNl1D4F-hNAA^L|0Hj{_x3ScA^FPd0 zoK}XduvD2xC{4(w?d`uS!ZBabu3(;QpueI87LAk}nWctn+HAEjuw&+SF6t!Q^Ri zI-5M0PHBT8=Ka@rmZy#7Ds98t%j*84Wd8d&e%#+u*08cY)iMDZEVM{%p;bw1F3bJ$a7$~{Sl8*%=|_tbKZ}jj zQ0GoQaEnjwPa$oR;0cJhh*u8C>nX4SStQwu>`FBEDNTDd^>eyJ-u z0NtPi)KN(?P8qUIsi?N;r4c+=!6Ar`9Xib8%My9a08?xIse9SlAv?>aSPl-hE|A9s zXEgj>r&K2d=OYd@yIz&@1w z1!)e20lOZi^$9*Cxo|{uc}i4Jj>LDGGTNKDS`I&8=XcN0vQu0y-4U%yT}r%HEkaV? zm2YlyiSO^}mL1anwCs5QEH`qC-wJ#u>PDsHm`kEl3HY2C%}M5I;j$w&EL?JI^k3R; zp}N}tdl6vl4Fb@E1;}2SN4M?SLRhnwHts%QKIKltEHH^d7nsFXh=I#i5aR(vn6cQc zAYSt@@Gu~)AeM8f)$$QiryuMDrlkdhcQ>RUD4Up0*2iPLCu$Xur2layNR{TY`h@)h zO=77{ts~s*=50cYFAB}k?V8Kr2s$hh&rX6_DbOK^8li@&U$t}j*5xj5 zn?^>YJ4$jp3m!u8MRC%a+rL#~(-LD$U^OOU(q{5wx!D`|K`KeGC33TcRQ_dO23)t%>1|oKr$X`?D$*<^(!r|S}$&|S9{kB3t>DmiYz+F&9n@Y1IJHyvw&-M|=~HljfB8)3sXx$}>P|aSgQuj{+Y5zdqbb zE4y_KFQZQHi7dp7pea>lbH=j}QGX;mEkO;#sK3nPhV0Op?1$j{GHxwF*ItNbrcXgUiAHB1+UH3fI`0jdVonhB3Pa z$Lw&XXs`8W?e3V}uT@`#L~ZmR*tIxui3>5ny1F7*Cj_Jt+NG+#2B~3 z@1?&*g<5F~D#o$utj9&BcPLEn$M%UCZ$6?_iR*3htNM%UZSp7oy)W0BVLd5vy-of~ zY@a)Fy)i0O7%=1zaXoaI%q{AIv9)|On%JpDHWP2Av+%&x{Yy`&WP4ubN-IABr@R+Z zDY3q!^iH6||K@i`$e}u8ecMiRtgq3a2ZS8!n-=xb)s}S{>~HWi_`;*c+&5Xx$YQ8tbyB2LfMkCr#cZ@ zQg&P1;LHl0bfUxv2i{p?goyEEeYAoRMpGBcW}@=4r#Lp~ny}9C&gMLv$DMKcYP9^vYu)6dv zxRI1-=bN0{@?YDswKw=J&IDoh>w#Q_fZ8AoasH@}x4P#1#gv1_Z$0SHs-Cp7&a9)u zAz#?!U;aLP;cg&p9ru5%YA4tvh?#Ek2YtZ%t9kG2ITiK?nbhCM3W0W2VeFisE!eV! zne~$xUdf_<6x!!n{y&Zv#sUl1J!*<4);6wJ|90F~7LV{rB0re>uD$zr*PZv9Cuw&x zb+9oUw7IdN`E6fmc7) z5DBB$&rtr&mT&&%#SWU@e1Yj0q4mso^gW-_n`^e1<+)!w_Xg0Y-|urGZ;QQk8b|8_ z9L{?ELqD+T7|O|S-0C`M&LP6AA|8aMuUTc5J4>bX=jfBFVNNyvuQ7W`g)}#>lKz~? zS6jU8Hho}Q#uQdG7Zk^1;i%^cMGHg-!Cd8-=EdlXj=QE{pM_~S^D?oz4h;Bk(a4Gj znj}h@an-tHek>{^L1EykjVAQ)@HHl&wWO9^j6Gs1Fw}$Vf<;Q^=Tc`RiQ8rLDmsCh`)1L?~#!O`wsbHpe3**7peKv`io{kE+vsLkD z>s$ph{UNlZ+r%nO++tKP)0Oo_W?E1yK$ku{9kRyhkhXwhr|N)jI%bL*Cmph#KnKQ1 zFUH=|6Ek}$d{q2XF`SHx{^>+F?r#`z;de~TeiX>*(Wzex709dMpihb&?-weNoBW&K zcf9j1XYc%^M2Aj|JT_D#kA;06iyG;+@ie1ip>~odl)rd38svA^t zbC5F!b#HY+mXdOJTqzoWlO=v)1!o#r`>FgHnLPQ#p5ha@c~~qD~eL_-J1s zpZj3pea3Ny{-qzmo}#pDt;c##fh4otsQg}LUvgKPHI&X~-Wo0wL_9aH#$UCw7*8Nu zGBO;0{*@-69_cs}qMt_>wRiN|J6k2S9_eTaIe}TK{X;i_aQO;b^geHdAAhl80}Owo zFX^ggccG2WlW@L>#ViNg8sde^Tr|R9k5V>-AmF%-} zezB%G4CNmYqTzmL1ux9`2%Jz@6$}aZ@^f!!|uJpWF-TzE5AV z%=K7uvs8g;2j%fP`{^g4{gi`V5NJ3Zc0)SngcuZb`JFF`F1IecYG)04=;5E#R4u7P z2mdr(_9J&?6^aSv2F!m`bP1|Mm)&?iESjb7IW9xwkwQm*cAekaP7MCuA>2L=S*JxF z?3>VLqG_eV_YY}EG(GFh{GH2DIG`binOlibh^&5iX|MDj-V8m-^=%&t0#qaO!uR{F zsBS=5+aq)?yg7y}N*IYJb9V@b`~!Q0Ab4bSxeW&V&lLkr%;TeFA^o@KO})W)Yh`*B zAL%c*jO)(l)pFRT-|Af+4foVVUr?3psb6czQ5f~fdo{!l*fp%`5LfkGtHbBLcVI0& zEfw_Ihp%jp{|mk{ACxZg6{x4K%nRJPH>{C|ajqx(9D*Qttt>y7su`SaF7lmIKW2JA z#dqNNXTMS8_}Dz)`R4kOKQZEXKg_2mr@ezJ<2%6*VLrmXe~xbx`f!D~lxNts+!1qw zp_Lxr@YKzCPUE25>5XQE{zA5I0p1Bijd>Y zlvQbws!S4ZtzVWBiLBO`d<_n@S_GD#VyB?t__+ z8fcrfPJSHIdBt$i+jm57+L0^r?ZSZFzfh*PH@1D6-n`6ghAQg|bocrzCA!0>rKoE` zZ@~m;tW00=+*U2{>-?ua(WJ=IS=XM_%7blTk_w7)!_LVQW zHKtoa;w~bFmpN3pTo^H+&ZJ8s_w>S5H9)v9^eN(bFNyOu6fj0)^qJVWWUkbvw}@=; z1`%1nGS-EgGC?!`L7REl`IVGP7L`7tfcE-hE_d&=Z#h?WtTYETQdOa+Sx){@M6NLB zsP?O9Wa}3g_L#KjCH1-VZ-l!D9ebwAk?;7&j#o^9FG=g|!*Jza(}#Z_Ij+dRg1#{^i-M1EZjNYefH7llVDKGUl{?7FaS?sTZ-f0Zh+>gwsYuA3 z$2sQAf&PJ=%tZTFF>a)G=D2lzRr_i9tVZBB1|B=Ao{vVn>&8VzSqfs}=!cerq2)Lb z4}JjVDfW7;sSD#GshFhyq@ASkk89|;h4KqkK8!a}pgdY&seB{*`;vgtTw=TzRS!q}nN!(dk~o0vTdujtVistFyi(z;@EZs`rcfxn2D9%&A0o z;r>nB-ammtKONYGcI9#@&HB)I?v0)=l;+1K@Fkm*8s2`6wUwM*V!cnJi@w5f(M4*` zYi4nPR#oDq?SrJ9I4-)}pG64F5dTW&X+GAd->270U;YcyUig%cdf|k@s6+ z==}F(=n>HXAM$L9|RD341OF+Y0Zp{!i$e>sk24(H#eaqxI0^%%VxPm?S@EqcR% zZ&(-Y0lzp7msE%ftRp4YkCJdmMt* z4gX@80iCA@Ue`RnZ{HO&@)}jcKRWV5MBYdue+5rq&O4k9YkwGL2lq0;>^A+mT_?th z{=TMZ;Vy)tDg{a2$0dC3)O z7!!1r+A`L?R;0N8s!YjovaWR_L{vdhLo(Q(?d)>%L5~_+lVyCu;yoOmT^_ z`Md8aO7l^1_V73c`MLI0IZmqzOFHRK@4NL&-YRAAr}PspS>^A7H3&a<<9ad?W=~BRmiPRTw{Ujq~& zk@*&XJk{de*HSfh|I}Gy#}W|o)FNHwZ?e~1KFGVo*s-aWk}+|j#!;-No#R;OJ8HTv z%-=@!c(ce}i~qc$F2-{`VZBuLbo}6+Qe8vzP44-)oy_(3!oZ-B9<_y$7F*CkGnuDS z|LHn2cI;8@`}7>)@TwR_-Mg><*rQShQ~d#@x)-q5R;s1_8Po7+%lbQZe=ifKgYko( zFO~=Ae8mZz%B!${KAv$HDtxEYl5d4t<@}`%A-8IW*Y3d3V$A&7ku1acqJb|K%1%d5 z&ZZ~Y6oDKXd)p$m^gEW#>&HP9if$iFQF&HUbfk*17Ne`|8G2}r*1<6&NKj3xoZISdxuensM|2IoP(mn|lR%8lszLL=A&NmHn#=~Ne6=KoI z%;|eVqRDi+lGf(!>u60jeFzTL>Hju>(D+^R-e(XTe*M&7MCWDlEMOqK{eqb!q>sC+ z35@Q%OuOFFgL$Xt|rCLXV~sjR)tT(hT9c zro)`ZV1q|V$v#{du&=&*$bEMz-zn$`-$jex4fL{0=|;~=|FW00dg`QTl?yY(*5WYy(HEGAkrJETRWU@q2`kp-r)N6 zAaTc+G>~?Lq7#sX5tC`i896vlRTz5vHuxiwjw^PS`@_DjU7e1)L~ac>lKWu{r zf55*SH6CAe2?dgBdiv5wG=GnbLRk(KVV)fzdN)j(^Zs(0nN2f2>y5ukp10;!x*q*S zVE-V&aU*Uymdj`)$>QN3Y!S1N5odrFmmB?UwEbvhp=6?5$uB~lxofN}%P$0_mpRvR zH~IIIOS82!t2YgfZ54(d9aOR@2XcTcCez?$e#*2MletlIh2u*t!pb&s%?YOclp^EU z<~zm#wPM5&k6~?8mpVn*7GVMvB1PPF!x1cQ#3eNOk`^BQV+u!CkYXJEb@oWS!0&4=xrd==iW=%oAISMaMxwa**ly75c=( zquqHU1r{`GODDYr5ax1KtF)ITSaztd0oH{(LuV!k3Pa!7_?Zy(vJdb@a5QZc^#*jX z8dVm^1EZ{eYDWJhx-ma&6!(E!5x?#Hoz~OZWCM+A{STj!VWwjbYPHSxcl`zCwAwMa zL_Ojc`7ty-*q<+DZKW)V3b0dI#L-Ws{%QUQGv1co)kpiBM+PBvXIR5t*WL&#+$gq~ z6`Ko9TVPHj)(nKr7Y=ysO;88DFCrNQNFsb{`srv((4{(MNA=X|HNO$ZgRN2j*e$RV ztPt-fD&bE7%|WY-+b6+hThS^t!CJJzEC_p<-AsbM?qv+2=|O`5$2uW?R92D|Im5(y z=&T~$RurK>rRQ3T=6{MY1wbD!84ADT^2|koWAS_c6-?#4AFlUPM67duZrenAOGc;` zMar<2pqn~>kH0%-`(0mj0&j}HL1fIk27llNXM;5-BUUF5ld)(AORRq|4{NuP*ocr~g$3&8_}7`BjH&{gyCQ zf|GUB-A}Fk<%aQug-xn)9W&&B{QOT+~sQEOcO` zf|?Rdo8%B(HY)%A#~B)3(y9~9h5X$24`Y?c2yemJ7ddz2?fjHd1O&9tH4%%`?9 zi!V{K&VSH~rB<8qhPb{R=c>whQy|xxsVDKUN;V7G$iqF`i{N5?t>c|Eft=aizQ4Ye zm#^`V8kjE#GP#bXz1fNyCOZM!vv+f+IJVeLr66q+e({4vNiNv>)ni3| zb9`-cejJMq>@KIk2BDrBe}Ci79lLq=oy^{KOI26fFcBk$`Vu9!?@a$1=$(HWg^TO3 z@l-HmGu!ExMlkja$sad4ySjb1{Le(LBfDAOU)OEMzOuX^sDD}G%581UEluPeYh_m| z{q|(2cv+Qf@!R5si$OXD*B3hhg*&wt#{xG&lz56OR%gH{oKinHv9d*J1c_Of0*Jl0 zt&aUwc8Dx?3tK~m&Hh*36G)V=-ih9$8Zrz;l>(Q#*aG9(kludKzsh!;jZLa%Nn9Vm z(~f@vWnCL+52x_J>_BXM;-5~nCM~H!dPNMXV9w!GO4a+HUmJddBuk+pUr@epoJsK; zAZfA5I)4ckICTgr4$tc4*0=A)EL1w&+15zUdVeWwK0J@KP4F$=znOams&)Q3Gv4ml zRWvxK)4+2!M-mK1K-s`ofoGZe$rJ?zoS`Vf2URX+=zhJ}kqf&`6A?>FwJU(Cjv23?AS7>WP zU0BAcux$5qOuH}B#9;rcocRz?Y15wjLwgby>ShT%D$stgVh@trS6Ddwqc*=LW;Nf} zbE{uqQqgwG`j+{Ne0Z|Kt_ZV<)J0^1P9RW1%D$x62W}HWxNS=0UUv}Nyxkzy^peCA zE+W9*RR6%VuOe?eK3X(DO@kRrtmnKD@%quID>r?Qa{rZI z!{Go~gEl-Z2;Eb!4gsOV4-h4RK!bsg#w7SG_kZ*xv|KuW<=R>fBV#N_6%%w1d^I^}JoI7Vy`uIphN*(>1{H*02#|3p+Zh=wa!;VNv;h$l5+z;Fm-M3%rC?vp;GCbgIE4Ca% z{(*LMu4z>}iz(LQ2WdTLRE=#ur&uPPhR=Gr?dg!bSEQceK*h93Zu6w2{(#)F+{*N; zgVGzl&JTC;?t7l=mYELElWKJ_xs(^v+d3rS6cfR}xR z4BX8*w>0X27eq0e5?=EfaiT~4KN!k~ZZhf16>U%7vyE5Fjs?u+zn_LH zPi7^)qF-#q_!^Xq_qWlVj`Y*tP_8C)|h;9$Lkv9mMfuXTL#Ud95D z$O&|>vNk7#q_?OdwObfFQ2FT#Eag;8XN`)V-XDH? zKY6YB`g&77bom6yBA(wzR;pHW;~_?QoZ#f%Obm#)@w_NEq;cdt z;?4XVId(8BWXt^?mAIH{oo!zo*4Yx}-V9X=`q`OJtc_*l3%*sa`v#iTC>!bW#cm%e zVzi`}`6e^q^u$)A+>*`ef8i>6-RtkUvfS&(s|6BF)g9U*O~n#T+ttq~KJ)Zbw@;Ac z&1@rK9Tw|9dG%KKVLQF;^;fPc_BKvj6RYf^nt0*LHq|y>wXxRE-YAHwLQSGoD0@?> z!u}N%PAgXEj#g&A;_9T92j^-GRC|1}TEAHB5=+p}RU}H)-m$9O&o7s%-9Qmy7o%Gy z^B18&4>I^=R}+VArMTjC%UUvEG2RZ}8I$TA&=okm5x za%K$svYN?Ff7EYfR^4NmwAMtS^hY}_u&1mH9z7QkpRWaMz;Ea`;{Sun&#&+Btc#L( zZ!CKw^;s(~k)Yj`23xE5x@BJW85(j8^O{3IdNHy)RLb-1EE9@>6uuQ#d@HvvEiH$u-?+j;-0-$BH+0jvaJZ`&U(W4U<~9DxT0;3LQ0s zTXO&Hz5}b4Zu@eXDV5^yqw?|vFnHAPH{Z&##mgL^PUP(@W}u@QjCXYk(bAn+yBL6B z>XV>r&YxJ6td>Gs;uLJ)hp7ZD)ffYW9a5%~WL5t91^hem1)UPnfB@PCGJ->`NYuW~{FhZiwN>Qy zER;OZeAgPPev`abt#V@d8-&s6SGT7>?3db$N5AywWgDzQZc-tP$sXwq+xhjfdy*Nh zKfxHE?TR99{FQXPsk%Oq>-J{84G6RfH`GZ=?LPGl$6eRzO}@JRn9i{~;T^Y}#}J2N zc!ojktzb}1aED-M_`zF&&u}>yO?C)}GM*!F?yx`#dlFUtGi1>j;6$MvWSQ=eMTk<YLrMK@DqVZ|0^7Jq3pX%8l$sE70p`v0PjUx0L$r zW|mUCYg5+3=@i$~1U)G+(Gubl%`D&x14dBXZI%*6Mob)`$@NUOi?>|D^RL64C9578 zhmM3*zcBb6Rg&7v<~@-gvU5B)WE|Rm4MES_Hx-XZVJo14-5#68AP=Lwwr6Vmo1fIO z&g;qoR4pqa<&~XOoiA}PMz1B((BzJLg0W=ldg$<5lgiDYT4y zO`fOiU8doVu&b%NyyIv7Bdcs$qehcJ#6!({j5!tCdBJ*cRfz$ z@RU4om#WxF1Qm@fP<;qzhNHS7{wElKiBvNoc1FiEZN5z4x?ZYJ4UR23l%lbR^e=U* zv=n&%N*d54?)j|)*guEWiO9AJShasK=&><( z@-H@3`H>kOc$ufj*s=a%$Jf#E^*7UT#-)z0_*BQI3qYDShYR#;dK^Kht!rlgz=a?| zdMVe8y#!XWz8-b?8m()D(!F1GD1Dh26-M6Jiet41+nyRq_i7XQ&&4{g0z)w?g50TL zAVTb+F?7S97UAx!MM?(y(+u-yjkdq2mT2^Rn&`PM#ET?nl*s$xH%e%zp*Ym=uOM)- z#i!{~s9*=u1;V;!uVotz`h#c+D54&TCUeijM27Ji(%RDVb?w)~YjDpuve4lq{nruq z>ya}O#KPur^sfTmsc)9(E}4(VadJ+*QiS$;;B(ETWy)LSdenZSgSsQWnlG>~N;lXW zqxzm(>B2DB_jp$pXBW`L`W5q*JS!kL!h<5e^cS%U{dW=&`NsalQ=|vMX5eoNHoJ== zk$btsDwq|qiqz3W(qSgv)~U_HsI7mNX^$(S%n;W!QnNVyiQq0|0+jL`N8KEyxH=Vv zg^w<{sW|O5_JP;c$qS*ujUx;Va(WIf;vavnhl=*&;(83ZG2?AQI|?z$9eXkXG=IQ+>( zj_B$S%N9k<6Y${p!Z5 z-I9T}NroRS+-o#on5>pm;e>n(<|pJHcfd^I_hLW40G*k!*gb=kCb~+5U5*;RKgJoN z{Y#ZbFx9kTVTav4V^yka{!h^v7*UM`ls2>(xO@&X3I*hV;bjzVHh71BitrRzqTz7D zVZI;w?wdrE(|^Q7_X(KBUp6}x3OZH`Sv~6fzbtgawRk4XB#Uv|v3ShigDoyrMV~e1 zap9Q9g=4%VplLxf>9D@Zq5V)yk;8NnVk>wloGBq6d{0BtM{qm@az1aJ?FfJ zl5+FW35AFNp-WuA1_;=&;h-W=q}c_p8*l2=WH?foLWbY;fI7}7g53>J&G@YKv9B%+ zP&S;tv<|#4483MGWQ(uyjJKr-vl~8bqezUM-FW`0iKatUkcIQn9NAs;&tQavY#z*q z`O7CRe22QJax7KahviZ@fIO*E%-CeN&{trIx%48recsnK{(U(RboiJc26>M$B9IfTQda zPRQ546$3;Ol#y3kfc4}SHjQvJp=$|lNfVMt(U&e zs@?+%^)jnWo3fZ6oKQbbyJ=qLZZeCVN#+{VpX?N)sk7^+;G5GZvk~;RPq7J(PyMt; z1632_Y2v@FiO*XT7xZc3o307jBd9vybVi9D654{ZL*9o_nVuGFH5T7Wyr9=nkL-l^ z@EKM5tQ z`H5}8;6Cl+DR1pB+F9+7uW0{-iuR8#HT}I$HO*Z-NYF%X=S1#YT2+N=b-d2>>uA4g z^&iF-a3eH-Er04gW`ju`6<-;xWgw{IQ4NR@EsL*ILOFHztI3@lvHfg^VmaM|V)&Ef ze683MXlWa?h7yVnbzY^Tg1m)0sY*+Vj-ErLAHcaf;`z}ydb#9|y>MO7JuEu1DX}#2 zA|ZSV|19p;Ji8yF5~NpC=lt`g4*FlTv-*4GcDA3@uS(uh*mk&2oK@{rHQ(`OUj|vk z@}~_pA|qt^tT$Pz@K6!t2zW#oFs=u!xy`!H&D1R+3F1*l5psVHz5zbQ+`?RB@dX~o zal_$xu`z8m-ppNjvp*%BzhtsR*s+W~-GrOZk#I-DGpVC+0j_zxYND6c`xEkq zMq>GPD}NujEzo`2flku!`25-5CMs5ITQWaveWGxATbwhUfW_{&wAXsr2Dh(ae&}r81e`u9R~=U{D`^hGX*dIBqXKa0&iRo zsMLb~h*(uE@FDWhGyqY5f#};np|F70D4!l9sRjw6HD3Bi>(29npTH{U?XEEb!S&ql zD3mNAP*(9JoAbX=H7%SF$u0s6m2g|xFTyKt<}&h&`T+EcF8Jol*bE3Wb9tPtLq9$Q z6&tLNNP`1N=xs-8+9wD-B3P*GMC!0rsV`5OlgQ(n0u2tLi-__ms9Uv~r)1M>TE9|> zQ8;F!@Yi{qx*$&_Es%O~;rl*hg(fISRcM0Fo>R$Z)T7{9XV0)Z0=kQDQyWaYna>Cm zXHh+RhRIG+0&n|OPQuCA^WmxUoOC<%)fh1nvTNHnI*dv^p{^s^+B^K;v(12nN_t71cYP&$;KFYJw4bTGm(Mg-bblI0e+<@HoWU zh*QP7ZKfAG0dPd1~8Ce06l;Hm9?6b)&NgKTNZg z*G72g5-jmDL!p8s8V+$1C%~n#heNcuk{nk!{6kr)dV7c&%sPw!r)H~Jks|gO_OBBo zEvWGuoAc+PWW1glT*l~j{A#i4zzO0_E85p`3DDqp)3!@@Nj7zR>0?woEI9ZPk<=>S z(exZ!!t2?zUzOUQEeup64r=pn@Ouzw(wvq3WKRojHf(CqYW4%9^jO7fO@^_SQpOUj^IFhr{a(;WdDR;U5Aaqr5 zBVU*1D}DJy7W3Eqg9;&6X!nr6igx{LYX_FdHORAQ3+g3 z&Z+!}OYSfsz93c8h+d>L`h@(Dy<_-Ldq&OCCDcWqjMvm_z!n}uo|1z1}62}}xSrnh}~MkuBD zI+dmqT@TR-6{+Jc%faV1t;#*>{Uiyp^LY4WO`CIn^L}z9k6azN9AD zAOgd1P=jP!4ofGMY})3fM_Ip4o)BDZjJgx>A%1rpv<)>;_;LMQy%q$*aW`LSqZ;kE zagUKY5RsI^rWZR?J$7Jlqn&Ofj)P~#khQ_^?+qCT`+qXz+J83W8Y(ZUiopjUaglQ; z@<$^e5-Z1>F3PW=V8R{yE`4zep3i*IinE@S&Ysm;2pe7pXHgkAXb&(S^wWStR=v`o z`bm5S_d-g=*8FGYZSC#J`$yf01H_<;8vO@&5&VEz5AC#l>>cZYv@n3Vx&${nVx%-! zPNsepznC_12tzvC#uGBbf-+4|+RF@q<;3&T(fgi>kNJH29)Wgqr3W`1`Yd;O@la@k zt*wJWUe+U|1eNexKvVQ{oX(NyinP}?kdn#5c{p!=7jdhuu=GRgdaE^u?89}A$@Diu z-9qpm7$Qk4V~u9Ysp}a~n;@|We-pFW*8Xv?d}+MQ&%zHTAn@8>7e=<(;w+}#r#rOM zeuR=3Nv4=^)o7>KXi0RqM5ew|3I3#)ce$jc=Y;8m;w+(QYW%d{LHp*Jw!(jKfKxr% zs@mU(7j81#mKQ~ZpEfHl|A>^i4x}!%^Mi9$ZFnS#>JFwldQBs#S0=@_9xDfh^?27D zTh9%ClR_5-Z`Mr4`XK*T^$evSyg#j;WpC3nggj2$7Iyx$hMZ4parsj`Jk>cXJZpvn zO;AIQeVdzi;v!qlF_!EF@^BL}lvEop`#gdWwMNKOq1F`l0UU-qEHRW4q<&I;&tp#|0P5yG=fC6@bj^_^tNf=j?@{}(_L`|UH}7me&g zBiOy&gnf>OiV5?-)X&f_xL6Hq4Y{{L==eI+Vy2JHv&rHiD1pZ_QSzTFSa4Xv*7Ugj zvKXYyggt>u@1^gen$|*U0MH7z=3%yX6RU&5i+Vh1HJyPU!{0?!LYg&hk6&BUgaXF+noH2xL?dBS7UvJzZ zxSa`hdZE$XWym?~MbMoBdbiIGCXpd-1Ms9do%@`F)}=zP5OFOMGGGSi!I|XyAKtd3 zKdMZn=F^6EXGunKEEc$?|Ix4L(9P{u~+V;h*zHv<$n1FGbO+Vn7-Xc}?+syl%P z0fti9Du2N>)mqWDKed?Q($Xe>-F9%E_x_0ap@pNwzZJx1u3Ak$9Ph)vGh_-M#}anx zUH^PnX9{NRoYj%vNaJPxVwMPW^Ey-SXf?GLhC09^R*ySvZlHe#jraTrO+NM~;^XW^ zr3#DR>&O1Sy*D_Alyx(>Kz%KY8gn;=Sm?V5JN_^gI!?te{Vnq_NBjAk6FC_0c6OQ? zB>341k)8m!Yt>`sWN@grpqt7e|K)h@Np)53B6PK0U4>n6+Mv-N%RN<+(bsV@SV&Rh z?|O$j_H(wKG#F-8l}{SHeXDv=mWR@x=#jIYuhRKQ^=q^Yfk5cZ5)$<3RfEiaOtSUr z_W%R$YJ&3|X!L)!8%soE(dTu=gpJNZV`x1hGVY1bu`M}cjcZlj#YXLn7sk#MKV&`6 zy2kiU{%d~QGEM$j7>fz7@xF=!2v!pqc9Ec$-Qyn3So=uvZET6=BC+*Nuk#7zJ?W!& zBnwBL|G4ASwI#dlpH9JKJcKeF$cgoy?kw{2^bNeUR*S7j*Z?bHu~*l1>q4QqlX!vj zS$47$ne7t&Kga`Oa-;t~8+C@l-@9F-;0PNie7Ma{&Tqd2^sPLmS^7R^3wXmIrw@WF zbY_#k6E?P<+x+=AW5p^QdHrMIaI8JL9~I~$^!_vEAh=lg`0B5P3A+ChUt&Af_%XQo zXF3A-(Na}GW3hq;CHim+wh}+xgg@f0aJNlbDCh{9zU2FPqh~0caBjj8SVXXA9;R6+t=if8#3gGP?ENX4~}! zE-J!pFLmlhzgB5$$aB7mveyW*?sze!LoiAraem8+e8~ zmwvmm$YYoLBmYyVH)`+F;CfFptm}(3B_s*X0PAd;{R?TqsmI08oi6{Isnibg6>^nl+~plDl&qHP-6XmHGCtpW$I8^9Of;+l!(OpihMJ?Vi}0 zW`O=ym_BfwaYq@hnRi0C_T1vHzePZG^0Hz*{aM#O;!)_$x>Y02quzaDr|F-@0U#z@ z4PbaJo(;;WTWb5PEO=T%JfiuIg)69)>g?3x~1!!J>tj;%$wEM~}mV8|wo{cCYvbU^uy zzY(TcqzlQv!fvnK&UT2Qk_(+xJgRh~4b`H0RUndEb}%=E0T-->w1ox~v_!O+m{3ei zv;=@?G)|_)IjNO;sP!Mf%o$!=W-^PHZBD~;CF=YiHObq9U`$?@od;lqZMH6!?l48Q zphf5(QhR@_xc;(+TM%5R$)}~I&I{?Wvrm|cD3Hl4(HDw138PL4vD8nV|bNl%XeUP z8TxCgrHbXp)v)0C2ZaAqz6)eOd}wdF((_k;0}O1-G1dLrcP-x=8{F|SUdk2tm3})e zFCxH;?Wizx@Z-|*wE8fGK#MoiFyeTEfCi>8S73_Ms(DdsNI=4vlK;k^#0yWUA6>@r z0pNIixqm#Js%T&IxUe6)Ou|muzh_=el?4x3BGhzLXWoM&eztXc+Ik}R;* zQMkxmTaheGjVBA2BVIT9pTDlZ^e?-Ke)#*++&jMRp11n@*t1G@?Cw?_Nz^&9MWqu)p~pxnq8upIUj?=iq8F$O&Yb?IvS8UF@yVe$4q zaEU4Y+b+TVMA!0hVZZ~AKwm_jB7wFzq{CFcG&LJLsOf1qwn>rKcyoouC$|e?r+(xn(2sf)k)VV?JZ(s zlUZNVxQ>%1jqHq0-6h`ioHu)&ybmDAI(IH5-OW38m>;ri?A?nRt=^aY={JDpnR?w% zKyL=AR{KnjOj36aCI=Prq=$!BEo!nhN1bq+VmP0UZHaMb>ZkB2aXM?+|NU`2JNxW{ zdYM15Yb|5SM4owjou_&quo3y|5SRH(eFv{tma1iHnX9Kv{T2LV*YbQT39pNYetah> zWw#BgLCDC7Kl15OZf-t*V6(cfEQv(XLL5LWQE&MQ}jH~ianWez2rRg!^CsIeeaQ7;`EnMDVi$oaz z#m!x()K6~iYOcSqxeNQfP7Ad87yVxHRc8g-n!Wp!?cJvm-hC7%_hJsLsJ{H&8>~@T zy$-@u;tG@s^Pvh`J=oT=)iw@XFFvYPpS$CQscl@1#e)NNVM0W(|Khvi<~HS*!uzy+ zmu#AEGvLk23WiYN6EsZhB|kqry*mkS97?dF;dF|E>W!_puSw#eB-F}|Af zc8834q3zCddaP4l9sNbKK&`bCQOIC zwYK7wFrZkhp(5Q_kse)`W2u(}cvu*_@dmp)oX;zJkA>dmHgs zoP^nz16t-lJkh`eS+KZkMgXm>(x1O8dtTub?#!giR{}o4RoZ-!D4feQv%m6`(+O8} zT%OEr!YinqP=F3>FY#0kafj>}hX$WM+m=clk} zngTayV<)PM(N*O;MS$6N5?=EMAOSzmpaXJj*uMz<1nc+jz_DUA{??zD^l1%6D;zKL zZQ*9RLq|SOCy9jF{GgV>512SH69owSF}|AyE&n}Boh_zx`4s>4Fn_fFR^GG-`+$$< z2uAnKllt_4iDLiu@In3dZ?cCUn}jdf2r;;N*_*_ri;^aep0UaMs{F9>}T5`69pCZpZtIipu35 z_wS%6{7bCs!e%COvX>n}Z!|}v?VPOtoF+tEa;ca3nj{&lC=Q>T{YTK1gf6KndvRIJ z{@ml{f#tvZldZZ&x!S&c2ik$@ZlKQ&$u+WAlz8qD|5T=*1k0P3`~>OXtLzm^^AiX; zs>ys^x2&0+Y&(}@cAoW#SS$gZ~N1q0S6gneC>S(ds$WhOeV$>w39 zV~W4gr-divmoi6O&xw$p#jd?xK4!nYI@8^LyGe}`nNI5PGI0_bd`s?c>QMGlYUs&2 z`#tWr11QvfgWApB!yCT;QE&$dn|IcnqjB&j3;<&PTvDMzv;Y!CRE^_~k2|Zpo+15$S z{mHa{7VWEPZSlMD!t+E2uz_G9issQa`5iUEPjDH)E@xs``-&26ch3a~E(%=0kr%xW z$2TDo{E{lm^hkZbpgs+2BGrpa1UFiv8R{@CKfQQ^Qi%TGPom`z{{N;zKD>WPA-|P+ z9e;!P#g1*IQB={*Dc@;c@DIJ_Ke3W~!X$cns9;5=?GozpmvWXLH!dFhjxQ>Z)1P6;`TZ+C?hPhk|3i(STP!n}!4?(=**u9@ zdSi8J-z{m=MHB@p)TvldK5c54mpz|ihC8r7J5QqHJRrB`N4n4y{qnrPp3RKH=Cd9O z9KctYb6&1;&#+QAWcb@$gF&W#J+G){EMQQthPXqmP|BU%m^g-!A6@6*BISEb2i8Yn8h*Ch=h)CcadT~D(E8N;l{OjBf- zbu!sNr;YwmGcX}?p8r=)_H^9`C(zlf6QJ1OWo9&9h@tqe@Y2m7Ly!j0C4N%k_d&MI z@5dp@B}lS6Q$8eASiTkvuA-SoQ-`EM+Lf@m(Mlq{6$hYTUu&Tmx_l>={=_F%HFycX zHoJ`YZD{9qE)pm;&~+E1_Wyo_0BnlwzI>wHPJgEYD0S&FY zS_}fWPXDocK$_f&;7&@~AvKKOT84!3=WKStzwP)#bAFEMP3G?sw&U@L|1$~PA5ve# zk|rz4CAcDCc&f)Gk6s!=<(^CC-qQi2H#iFeKG?Zcr-JFk#yehm4V6d*L-q1G@*a_| z-mA^|36qogiE+Gw+h^tPGSzEK>d*1~jT_WB!C8qv@c>*`&3=e&pJxBS#XP`^4u!>1 z7*efY&shO(G6qgPY(E^?aSsgl6fxYwsMOCfwlz>|te2A*-NL|$z##Pl;Ix6QJiH(y zqW^dfPCoP{<#1ax$=6&`xxP!*1%u6j4XAB_aH>U44hozuk;PFsA6M^lwZZE`Hn+kG zxJR-#wuIjG1}7q35QQJf&Q}=Kc|_R~Xz%?Ox%N0XRE5Go8i)SK%za+wdU~Db2xSxj z8Xuf2#3N8FnzY5+Xd~uJo8Orgq+(~r&YFIrgjXaOZ@pj{D>sSs0$~DMYIp=yg#hVDWfcFl+ zi=j~d+U06Gnh1KpF|0>#+gb}JG@RaI;e|H&hg(IlbI$Z~?@>uGpMOSnb4Yn4jxO88f$at_C}Yq^xQB__6CylL;~^kFzID} z|2e*CdSATsSZB*qAb){sv=aL{|Hibm>aq1W2#$bu6RcqxKpzgg2|nYKBaR~uo@VsuM)bn6;Y?&ub$^Va{-DRAAqE$xu* zKPucIh3&Z$T&%YB6&yP+UXh3)f((^VO`+&N@FtTr&K9c|iE?ZFw^DG@`v> zq`?}_oDx6L%YBvegUpSs7WXC1(JAVw@!y2nR8ObsS^WzUOehB*2p@!?{vYk($MwSM z(qdPnjrpGe#m2Ah2t`6*{_i0;c4i=^AFg+7ae*54kQNAo zO8D>aL9)d^?{c787;#)h*K{VRNFea4BFA&sPliCQzdmfzQH29{@S?3fqa}F6xoTe3 zc{30H?~eA$COO{zY?~W|vmk z^mewxAF{8^)%(ZwwL-?ib@fvHlezPy^Z!|VgeBg4-VICP@7~Xr?fYcB!2Q!r?{_8Z zr&;b(mdoR1V)YhJw@$uD?D6gf4zsN#2l2v9^>dZULtGDrXgsu)*NgOd8$~!+2X=Ef z8}DPbi=Omm*BZEW`eLWbVL@7P|AuSan0|>>Xk<5M1E(?gD+sp2Gbz_vvnr#IK3`IdI9qMb_ZvBFPn z5xsGKYGQolGtIkyrQ|cTr6>`vrK|=KX+;TY3@g^*Vzs8OyR1I)uaAFPdJKDlHN{?7 z2fdjeW5}!MQb+YW=bWE|6kM!;2#Uo0ce7D%ieafB0ujzm6WU_GRO!nxsmcP8l z_om}v4B3vbwiSPda+xZ9CLB~1Z|=T_QKe?{OS*P ze>h32T)7?Vk@I&4VtOi7@N=OJelh@=*6HrDe2g~F^6|vmY5*^fyHV2178Y;zvVZXYeF3eeo0bz6#7;E(!^6U z27Blr^ItG3+ex_`KF}J>;jv8rx^L#Q>3_1`*qX-qkzz1(l|ErXG5SbW*e+#Q$oL?5Q((QqPvZk@Ke|0K%=q+S|=wkS{t&*YMvV43=@6~f51 z*3Z|iey6ZH$vaVM$ETJ$TS23ek{-40KVVDA(z-N%U^tT%>(Vv)>Ypj<;rKDnl-C;| zXSXISY(MVg^Pw|?S`1V%=c;?_wo+2(eu%zf!(KeQV%Xx);jq8c#jsB{_%N*sEnDk< zGv%QBTV^RCojCX<1#EVL^TDP*6cucR#u8X*teI0Pn-Mz>oB4P)%}g@rx_J#|Yw$%> zQiuGGD=D)IbFW)m{E3!a>OuP9e~(U;78RAqVax4cJ~qW2{ND(F=zKGYhM35$bw^H; za#eqOa)nzLhbCp(v6~#~=m+$GVpL2t6cfgeKHFt8UM$n5M2fhYt5btwTVmDKY{`-% zui(Zwpsh>h)=_zzWIFzdtVbkhI*!x32pKW~zv}XiP+o)Oz3V^b^7fOJ8e1h)mdH6@ zSBs&t)gSSkxE1n9x^A7>0v-jQO&j;S!&HNRA1SI}uYld#(#k*d;4C=^SKhCL`TT`=3j1l#X0wX_OlN)CkB7!>s^0_%Q(PX-?idkQevmr zRA95T*$`j(VGqaA&k)4rygb-H6M1H{;kSjUh<~i5(Em%YXEp}g9k}5sj^+N$OYD5b zDIBl(iyIAhJ3Ql$5&G*$&;Oz9OyHv~kN=-QB2j`H6*S(dMjHe)sHusFW+l;$293o7 z1r@cm)DvMNQ9Oc4G~0ERR&8x-TYHMuwjQktDh4^#s(2q*0WY34DtK{-nE(4T&-c5# z3E2Mrc`5rnp6~O_GtbOCGxN+d&tliLxj$2W zwQCmixn+9tI2vL zW|roR^BsO~;8X!hY(Hi*V;Jc?#!A5R(k?;iEE;D0VHrPp@hY#kv@X@d#2T#(F-4Ad zCoT1R>U0>T=CTSO%{5zJO@E%6x=%Qt_*;>K+wW3Q)e`nLxv!v2$bg-Z!Qvt}+cEp} zM6P2eCkcaZ_xcJRSX{&Vnw3yAP0B|HH74h(ix`fP_C;KvU3Kps$aRXzo!&UgibUGdYBPDA z(1UcdxT^CK!s5FT&~&0`0c*q^Ja-Sai6ZYaWRNVW&LzA(|5VA8j`Fu{Dv-E_ERJJJEo9 z8jezz(`Q?My&s`56|7=FQZ}{K`i55W1;at}^Ob7R)+tdeRgw5v#4ANpJmW6A#)}`X z$*FxvGe!rgitpV?!F$gA0nd%RqOn>P8XwT_rAK=4q^>kwg z5{!*x2zwcoU?9>iqYr`N&h<;)?GJEoK{`h7wts=GiZ;JwW_5pVk~WzlCW4t<7iIJ- zcbj2*aA*=biiwrNb+=(rgoh;EiHC+6a=7+@PsY8OnT#VHy9iNRoLXdd;4Q7Rp`)o- z@EmmZaQuY_=>bXWDyREo(_%%N1bnh-jj|Tr?|;Q(>u$Yfml_G5d92d}SZZ+R5nI!J z`YfyhiPqbG47MbX7r6^A5tQ-6SyAQykXohXMfwKX*a$OX(7v?8=GFKR>K$}WP_HYY z%CW5I#yFrul`f+uV*IE6TF~6`nxJXfJ6tjvb5THMpD>tNdzGTbvUSgHHY)6X-lZq! z>RaqDk>{DK%^KQp9_Pn%cN-Hk7KaV&&N*nRQXj?IkDBhI0zfO=30@Vt#|Hh3bt8@@1(hsO{K<^=^8}+n}%_~;c z1r1jBcQX2>Exkq5LDgmj+<2U_I^6Q_|PYRV@G``tO>U zX+5Qzbw6s z%_~f=kU-pr0?<-gY1^{n3()=2Pw+knaGA*HyXim7#79dWX3it#7-;1iN)0*s_9D3H zYw7l!pTp^WI@T;WTc{UL7BOc%MepGJ`dG4<@mW1Kv5^#(fr0rrwv@&V*UAGp&qcLG z8LH)|vhPB$xd$uFg0rI2h(28q?6GqfK8PG!;uikE``ZOCye$ziCkBNH;>|J+hKL$j z84^`Ozm-CoE~<5r12dKZMP(VRh_M|?MQT+<7cpHR*g5uCyrgUrUt;dL)!y&Zu>!>o zTU9DvUc4|0ZxQTsa`|v?10mOjySKgwBH<&QwlN&?u9a0f7=>6$Mx!c*DA;fA?n4LC zvuZsPm#E;dPML`&ty(l`P`1+j{Csd{HmloxZ75ONEBVgi@J>`gB$mzGF`1Il)5a$2 zQS;1<1b`3SA^(8}5{oH6{)|ZHo>p~S)AJhFi90K3vM~4gGCV%P^N)og`ir{h!(Ha= z$dfvN8!n=33c_8OI#sILcI}Mp0#{%YkoklK*CeijduT5;R4HD5$- z_)I9S`C{4*4JmI&lmkMM}ylvkCXOjZVAk!M|cMq-)Z zR+A^UWz-;fP9ivxvaNAn7-NHwmLU?YL&9OZ;&{)OQi!G)S_@CR1P>dZ)3|blNZ$$G z#CW4y8>m#_AIkl$3rvAKJ;U@H#E~8b=b2NxHoWDRA>Z;nMxWd!k%5#Jj z`lk^ojB=>y#U|eSt3#;8P;ZV}93*(TEn`oos#aYZ$df>n48>j7{ntQ$o~vOnBW;bl zFBOh&$G?yeVVBW;r69$Ux3yB%+w%;Z<3@iRQ7%;w-$!qSI8~Uw5oIVf=-`Vz8dg#` z1{&=*oMR_m;`bLXmY;+CWOj}=L6a&(&DrBL+>8H~Lcs_HC2zLss#aVib!3Shndoj> zmRqLfQXQYZ-SfSku~Spg8vg{*;+2ks7h z=@o4Bod+lMxRrn3oIz6hU12Ohg}Z#A0-4oLqvknvE&U_~#0-A-$*qE(J)?L;{QMvK zXVa$z<+Qmm(ylxW7De)eb+_=3bXP@1>FGTw>gJv;;z5o!)_kf2wZ=fUH|`;81I4?s zX6-bx{2Ig5tc~388+#FFt=sd^diUj-%t&+TGE?Z+tmCFHrh{ZxXKtTV3){vI4z$qK z?!)o4hr+m%{5Wjkl^^H$-5G>P-Ab)!iow#qS5<9Y$N_Iyr)TMbLL+9J#phuMCi)iZ zayu2{S!7^_e%asLkl1J|{W($_nIe(By6u~MNtA+ekuegxK)=n$HPozXNUWT;Z9^(r z*-+Cp^^CDK^DpPFmb>{=8!ar&PK$ruZ9=J_D%m;km$y4n+1uFbEWZcRAvNgh3ycD0 z76;*7&H9TY16?&;3gJx;W59F#R|sF~&BIC(t68r|{bSe)xn$}wb1Nw9h6Vk}b^cj@sk(}%$j!&lwwOchmlUVR%}^(qAr=>>kG1PoAzPc+N3ZS}h9cqaL&rdoxhmE+ zy8QZKOz}}ptbgW)VH|^%(YIpB!hGJvlEYt*p~J?K$BJ*`{d$&ZYQQjx_Q`PoHymFjSiX42H6jPfI6Hq?Lkog}W(gC>0uAJ(Xd zdhwP*^RHXXTb@L&yH6KvrBc1_kEf%|C+3r6w+uPfArD0?d3+i9S;;*~EJ$Ng(a^-I zuXi!{N0OZk5@i%aMpjDnU8d@i7gm_d{tIr#VxBf8&nrV7McNlwg%e80BKnY`gyQ8h zAyO;iijS?lRtPKfH1V8?X1t#Yxy6RVSac^TdIP>E(s69!rTF)>c26oZUX4vWL;0~C zI9OP2BJN6%BwlrU+ZR0Q=rT>CF;dT{BisS8F+stz1ZBs2B!lMW9B!l&`dmNnf|TU( z3fFFbolC*ELBB-qtmT*3S@v=OO;G~F5!Ew;|5&0P%z=9@O86h^Y`rUNlF+}=oXQ#f z+0s}XBD~C8C}PM_3o`VI91jG2X4JFORKcp12;#k`M=)V-1BaAho{Z1mA; zoYZ*uf%?0#_xtMQ1P<#Rsd{(bO1-yPyH@Xf%D5@M-d%mYAGYSy`=x>1a#>jCe||`v zyKGTsyq<-2!MWct)K})~yZd;9^H;g`{n^*|9pKmEKKxtkKIK$E_@cObZ<_)%;(9END<% z-f%y8Kq!l!FJ=BLEo-Ev>;QHj1g&9j*ZhD9iUAAUA3EvwGV3U=ic!*kQllTEsYVWh z*GPQg7PB=qLG<$Iiv>X`I=|0ivOxClMrsS)!rFM-<9_rfH24=nf5H7~4JijNJj&Z1 z7t`x`b}c=hUT66?Or(|?-A}uY+CD1DnIzCfu;1q}{Ue?_U+@Tc6I~Z52CBH0Vpq9N zBN{U5b=;&PNfH*0s_L)z$-*zL8J0Kg%2;xbwc=`eJ^DqSxGIpwiLrP?j|5jYfK1S5 zIY~!fsrUQgf#~B5aLpGpa3wYYX5o(|M}>3jLp{ruj4|b@`>&bt6u$7Nvk)0L3?4^E z?r~Lr1SLN+eZFcY?*n{2ZulzI%bD)7lhJhKX50cLfc)7$3<3u{w97vP^TladOTekZ zuVQqjh9u0b_Ga`wSJR){j`KKt+?OW!NH|==D|t?!qBz?&VKbUn_ridl3KMjw`=QKwPSr{0T3Jz;`}p@(_IAqO>T1W~bu<6V zI=?KwS>BhIz#!|+IVx|d^tz+*z%l0ymmEuyE|_>UdoYX#oLQv@-ZHZD5R;Rc3_kYz z6>XI&p<>!TgT2ip>276d%ce^?reBWl!;7&vs5G5w|1*AHcbTnzg%kBklnpsm(2NSt z=+Nd(NI90gu*hA3z6BO9k-=8t9)${Y_UMuR_FlVH7@}cUC4R{x2)PgdIrh&!y51hK zjG0s(zwHd)Bc3Re)9hkk;rw`f+SXk~*^>`U7_q%SnbYg7{fjd-J$!}6{V#t-Dh$B0^pg5zt1o7? zUtHe3i7HKO$at7`uPEF(c31{}K6#hQ%^S$?PF7{ySi2B54TPAo0 zpP}@!9K!XMDx>GVx z{WO3oa{YV#@sN4Qt`=bJ@{oy&F0?V_do*Teof;Q@9=YKJUS_J8&s(cPvCdQx4Xdc2 zRQg`tLg$T%Zj7RbuGApRD4pA-8dFt&KTG+Uw9`#nIO~fd?R%-_chVJ}Xx~}!&LnJ(Tz8Y6;MzHAtf&WqNz|7i zPnOi@!TNcq$?1Pko0n(W89R!`wd~Lojo82I=GO8|3jWDf=X<1$gH^_BTuF@kE2Mfif7@01mmqw<0Q(lKew|~P0uj3AwKE;~3ovPjbFDS#eS&&+0!bHH<#58P%u=W8~ zMGZ5%FgfTP1u@}%EOFXGrvfw+gUj6*gb%csgd~y7Q0zNYY%!*3U1-VUHMf@)LKO4J zM*La5OBFseogK`9L-K(MQa{#nj*+Krs?t$hY;x@ANscQcTL<6;HeIb~U*i!I2}hIl zW$`1UG+(Bi`5Ga4>IAk_Z>+SsCn0W3o)<9_0(q~u2cZ?FcjBM(XL%i8{BN_p zx)&KgFgSNomj=gHpjgXE9}IhB!&o}? zp)W4a{Ko$eHNl6~~mOO8_W<6K*I?ziw|;vmZ?zi(o^pv&tEAG2$>5 z|1=Ui^C+!@20Y$_e!^&Z>CdbhZ!d}+OYJmm_Z@V=SzbSSEu$Y1Y&R#uM@*OIuVdQj zz`b=RKTWY zR9Mwo!hZT#UvF(*r2X%_gtasosnS?bX^YlxR0Xv!jNH&+RoKn6?Hb@@z+X0XDz!ER zwSM5@L9LVX;&BNc6fD&^#n*Uz6KPv2u#{Ly6f(Xin}pSymduh!^N*M&g~=SJhv`qL zdRki$X;ah<{tcM5Nm&;Vgth6Y5q>LQiHWO&=abVjdOa@-o|mTQP=`AXyk_;0obk23 zNTc{%d&F2QeKyc32s{{@crIsjGn$14!dmCzTV@%}JGEh%rto5Xcrhuwm>gbA@fYpo zt-9b(3p2uu{&YRdU)r^#r~dT(PP@`|W-9dC6~h9LWC~;>=iFbRa_QAXWxws7GmmMc zQ{DG+?C-snZz874BqGe85(nXj4e%V{2ncQdFoA15+Kv$)fqXOrzwU z`aUh>ysmIdq>1p3xr!=dsZ$8RU^`Y`Q0HH)G4wz_63i+(8Gh$yiklJC7QPtou25|r zHmk^H(@E|D7!I>wB9g*t>av>rgoC6mW$w9?NA7^2!tlLN?ef3@t)wwh z{~=zQTB*pRl;LofX!SPn`zRmSEj-&9)LhweON@`H?6f|B=n7p+MYomgLb|$QU9anwyObco^2+>ewtCqUXQS?a~ zNSd|Z9NFRRyU}l4OjSz?pW{b=>C=B(ke9({=&wl*Fpcd)3UDOM@{vz<7x{TDu?)nr z9c+la1Q?(*%3?JwWz)8i_`#(_+Kj|}$>&!alY^e82{}k7H718V$~EV=k4+YQ)sRHd z>5513OAvdsWxY?S-jk@e$?C<2#J`W$Bgs4c5{j8WsBOe&7Y)nHAK7JYA3)wiVA5g0j&$hc zK@^JHNls7xb?F#x;!ndBpl1yq4G?Jey;=E;-{Y5%y$n*<)kDjv(LbgInTYB8?kEVt z%FS`%2_Lc3+y8_2!X0ykj?+slXgLdGrvYdcA#~YcUW6?G4#^M5eDomdcCp`(tR0qy zP73c32IM13OAU(mFpDH(IMt@g~9@3nE4AsQ!c}4 zAxNX`Ypc;5B0zD&g*2LaV5Jb$4KTDrz|9V{)UmvUBrLS1qeJTRx^EH)8&Jl&+d=Ga zPRe-39tG7s?wgy5I{J~YF8j9anI8An<@tFQGUkrvD}P={Xo^>=uSkXQ-!sX%$J(|F zoATp(3fDZIaAx{uJ_+ViOpboz0zqr3v0Umdp>Bn1rkU(_r)9tM(SVG?0x)gn zyL#|Jl?_G5Z*3?FSF1)TZAudJc!*=sZX$@=U&3 z9Z{t4U#3l$Ch(*a!^Fdf8&CgE&u0SB9 ze^Hz1cc`9#?Zzgst*{w%=-Y1E9O$X|>8RZm{H72DjNXH5gyuO$_@meVm^T;vf;USF zb*(>t9A_pUTPVnNN(#1g;ae0lRQ!^%co-LQFH{`fJg|FOfQR@6tb!U2J`HhjJUCcI z+aUT3zR2=ZLlS>wz|n0Z>Ujqu3d-Gk#GGv%6VLjgmTY7t1^ye!N3Q%1>)#Pv=QSsI zy1Sm<^mFT*uB~s1LXecqwjWELCU;`ZXV-2Q>rVpcnpY#g)j4Old0O>Jjy}d=K!Jbf z-;GE@R$FN1Ms+HAp!??`o?<4NJ@|2aM;QcCfm2VTvNW_^T#?_HyjbEtK6-5a*BN;n z6uW9~W}Jrpr<63*ymswQXt`Hy-%#^%w?+|G4>inct~Fx6z}y`MhjQ{t#(c zH3JMRDbUbXUqLj< zaRd_&D$sr66qaHSY#6#kY`HB;S4rK_4T=5?OYLY@^%5Hz`h()OUSWed^pcq0 z(0?q$^nB#z{h0`kPYwPqS%4xp?y6a#h7&ulgvQbXxiff#pH8d`r1TfLxRCsFXTN2L zNUYblslqN`#2WF-7>5X=zaOC>hV&&ywymHG!B+KyMw_n0>F#eok^ekBmI7X`7=;?I zruJMbBq97tM~XI^e<1!pA5Optlp4M1hkE&mTYf7nl2}3TYLv#rTk@1b{$Bs0 z`Qp4HwfFHYTCBR_3BK@a9mRaq{ZtNqQdJ9&&&VNPrU)Rr|D1&{l$SnPJ6CoOCXRZpRm{aA-N*ZF6zT3%7kT(GdlOx^gb4k`d<537 zZ@@KXPCRzGXxG-ruE*J(OT6O^(#*hvZE$PE0d%K*;kWP#Imqr1IdxL3!Z1Rq`gm#H z*I2`&rEWP_auK`~JmI{W;HtzuVefj}!+HX=|FAbV+U~tf6h(rpkF9c`&RnQr4<~F+ zbWk=8eUbMli((8HVVNF%bdY^f z66sKuEfSj6#wSM}zR}X&%sU)l8dFCMj68ft`Ch!1A3gD=E5-9>I>#=8Fu_`;A5R&; zL%)i(btB;Av>y7B`&-Q>A0DYPUDmfZ8&Xs9-L1TUz5aYI>{SD{@W%>5E^B=}jxHxf z+W&1&J!wSRb-H1!#?uDpWCeG3QZG65gFCfCo>uM{w7#U~K00y}7A-oCs4G zq;hgcXZlCEifYQ8Wq??@!9h7CjnufTq#f0lr*a#8IpDp&9(Y*~W}K>?<61EaxlBF3 z4dY>d^Np%MRadF}Wtsj4Jnr|!{P{4dE(X-c5eJwYeC1XhivQHBu_zQ@!2zdJLzZ8t z@?aj+Mt-p*^0WE1)z8O&Oqs(~Cc`|G*{*jPB2Gpp*&3DQB+9I+>s61!Og8W+WGi!g z8E^edPb2kfW63K^TnP($=tbrNDDpZe@q?$#Asta(utHgzGi!t~tFfAQ8xjhHzkGX* zLbV->@(aFcta;bGrq%MAUe_V4<0Y=PUrVie;=wRhO}8RI$MD&rsXyRO5uo*|Wa_Cw zS=({DFJ&8R-dEXrRXDY}!8f*OS|QJ;54FO?&r9Q3hsGhHq!8GG{VHhD_KMf~d2^sU z6>T}I4+OTw*|w*KmG>3yR2HwK1`LVizs@~&#o_@>-%BtmHZ*^MQBf%kZf_MG78Kpl z7wuIpwdciW!S5^*_l&FMheIdpfrU64yCuY&vCQ0(g{;0Ldt1S6X?VM&UY$@?mHKu` zeWl&Dd1WJGEuBxi2YEZ@Ky%k(Szs_7TZTFj!<96XFe4sDj(s84|1j9Er%3?}Es!iN0G8Wx!Fa?MuE->@( zC|hkEx;ZxVL$}ZVqJbG$1>*oNhM?|0$~_AY#)e*KOY&0F?0nGP-xtM(v0|G#^f0$_ zKh;2bb(T%_tp6xhjg!4=5d2@C0$q>O0phiJM;s78LdSVU=3U(rnYY~C0VUQfXg;HX zGa;gpc~_P9xCD>dalSOaMDDk%{ftbq^!2YZA#?8bLwl6BFOMHW1!TSNiI;ggb>sNz zhy&vfS1*V^7&M^w%^&y?Q&=rQEbFE38N>R4vK>!E1iXyg8Q+U{V>Eu`L9x_Ct+uX! zdr4?6`3Olb#giMXK5mB0Lc4L8a>}8dkY{3@d(V8+@m-KCw-cXX5{l={`W=&1jfkDl z1`e^oqfPz>3(M=+-&!D2Z;ksS>tqUjZ2uKa%sWc$pyU4SyP#awB5An&IwgM4cYpwQ zJYh0Ygyw1;2=62HzZjpS45$-gLzlt$4f*VcWI|J+5e8m!R7;~f08Cj!>hgSdkbgQ% z%Sc6v^MCFPS!u82MHj=DDkj@!Nqrg61b!0X<8?sQB5Ew7Q(0u{Efj*N$LDBNX%Te|kAhXyQXQMnlm5zPvpV1Tm0B|*WA7jle3GNZXcIlL zs*{g{nJD@M?|R(#u4XEd6NNQnT)^FL`sZoIJGd(jG~wp;e?GsE&o%8RSo%rZ@j?C+ z+ns7`AgasqH|57~S$^@imJjU<_)uD~M`Z8&|(L)&ISpHJm zafgaQvg~eJbBl-4^O^oMzl z_VWkU)MBOLSVV6k4l6Z$8+WLw+P1SYeY_cFKeL*c*e%#SaFhf88dqfM_!3t_eI!5X z*Zh#4es(x_;)Y-g=n~iIE4p28zo_tU5m!PSKxW|+O`KdU^Rm|bL7ue<_Q4HQp8%O( z)ZrY5!9CLD@r@;l0sW0eb{@^5=Z&l!-Og`c2_Os13+Hf+%ngGg+ctbnoB_OQyLF>n z$X(*&C$UL1=AuntCF5Zoc_c|82?M&bL55Ei`DYr7o%f~hYCflaOf0V#EByw~p?X-l zxUT%zJa=Rrx4>Hl5!=+gND!6rah^MPU!l3>1We;d`}?X7(Z1=f z#EV3^{nbXLFGE9LjIpNyI&F`>E5X67#>=2XHx9>v##g}T{+1*C%MzEct6X-cT%_YF zfzX@XMK>^3G?4}YP4pqa3RTjZXwR$B@zK+}@6foZoSr4pO_a?o_hGc>wX@C+GWyU- z;M3CMnD3|qk%WTH)5q|S`~3l0e^-8+ug8r&k8`TOJU+Dtr1DX%km7Tg0%Pw%uEyK% ztg4nO>#OQsU1rF^D40lNqDhU-eEHM6TDAwNIA+90D>Mfig0!Az{s)F#N>#BbRcKhn z%>=|O^oo`1f$t)UPRPm=Pphm)0I>z8JsSWW6VPZt0Ri@+OaXm}2RbIt2=TXCj!-Y7 z7K0xQ{k2E+>4&B=x6u=X`T@o@8|)JF!zUOz-57C;epJwpm}k1&{WWx-THkgL?ya`2 zxV8HsS8Cn#@>Sjy9J4koFN-0yUDwVeP!?Inrap-)!i&WJK1vUupc&&S-c$T022A$X zq{}2=JfiFv83w6K)snyUvpQ*5%wGJtOT#KO&#DTA^Y|(}0OCtyD2QtfIeF z(Q=jlyh0FEWJj4ReU@g6NhOvBpxv;6}Hf=LMAC!f+9w*(m@x>9zNVz(>e zQk0}874~F6&J(Sf7rQSRv#^ZTy^GzunJ2j;8R@v5hC_;!P!7()lv8CHwQbF_xI?1r5JWC8mMGtL&D-^ z&~ByZuA4VhAkO?~DLEjENdPuX>!?g=3!uJ0qGpDj?b5ooF?6GF4l`ofXEB*cQdDyw6@u)+sz18cApXy9@I23sA-x=IH;*wHPvQos{Qtw?#kBmIj{((y>n_Zc^Avp z6#Mp?2>lOX`ZTEN8A^vRnGiy7LzwH-yQXiiX{T&Wi>;=X8DT9=>e={gE#tqvmS;(a z8sO-6zLsHPkMXL3T#um2s`-rEx`X?<-nj<9DpTHH!z-q1p@_LJa} z6cc1M9qkVxBber%clQ=#mK|@YY6C&ci)ab!+<2S5SiSDVV?OXiEr4Cbp-uIwF;(^9 zp#Uh_j`jrMxRAEu44Bl^Iq3_Er@M~+#!^IBClPc1Yuk#INGoCC#dxMEFT&6K(8z`fqiJf!yl)|diNx0@q zv+6*vypGgf>aM>{Nh;U|Rr)AEA;m|uHxA2dxjQ{EoEMDx*;g})GY06;vHZA_9ls`Q zd&KD!C6vYHh{q}4W9w_~N$BkSAigpazw{FGgxS-ndo4YmWrPx)lYYF!PbA;~*&~0g zEOXG)n7r4Ht;@lAyJhhM?Z~)Eg4oqrpCx&)kV%82Oz*Q`IobW3h0G~<%qbLZO#P{R zB_BZX`gpQFHY?j5Tq8dCP{A|)prloUGoO#+^JH*FQ>t(S{sj7cndPpP;V#A9((z2O z>ZrFx7sM(7$CSoMy<--0zo$I1Qt-5&i3VlH$a~bR`QV`dz$vlRW96-U994b{K=W0% z+cO?8SLLi5Y34`wamVCTea5yy)ib$J)lsY3*Pz;GQA_lZ0@anNUC;EV+GSYj&-4nW zRp&^l8Un8KD-7@jLG4e`lUUNn%&GP}`7-*5ckqU=>zV#k`)q$1)?V#?l2iNJVeN&4 zn+f)lg4*xY*VKL=ztKnNP!8;Rra#sGh`$VLuXV$7Y9~E_hkZ~``x}5M*j0mS@8UQ5 z2rqML*E9X8_ND$ZtUczQTa(4iUVLYm857igj%rU8KCRTjRIZPsmJ896JFbFcnxdzO z0haN`eGZ_IMv(7iKfaYNwWrMi&D)vbDV=G!q&%dk+7`E$OO42LOUxc1&R6ZIHjyKQ z(IlXCuRnKxNY5>kC0Lp)lKN{fuCHFFgf~OY?E9w&>JwTs4r-|qG+Ij30j8=_z?@CH z{`JnPL&!G{dfPQ4!|075wch;;DI0?AHc0Q|O&8@|H#e3Pr?IeCmy0r8uEA5N;;KH= z<(K8QL=x8a=`#DWbGkeaEyn|BUB>ugdv_W#`1USuqP73h<%?)Hr^~amUA_)iUv8J5 z9G(T+6$V|tPhH-?gk@cx1{3Ct@-~?+A7gUNmI;YD8 znJ$kDFr?};T^9YR%V_Prx?J6>%dhVc0%%>Xwk~gL-1lvSJ;XvJfPL$PeSL=Rjj%g` zDIn}SFjI27{1#3O^-^HFy#p$rrJEhOu~D9nAkXP?zf6}W1sGEGnJ$a|)MYHxUR|#2 z)#dj~!Y=<%yv*_qgxv}`efucy1A_f99=tVPz9mBhJH=90mA3@_y|=t~e?PK$HaJY` zpn$|%)!%)%vHo@=B{Ka@e3I$zWriK9&h#}B^c5W^r?2?Ta#(m%Bmg_oc{qqP@7a1? z^de_wG5}7$NYjBnN*^YBC)KJZi9=9YN`5V5Z?xx?)6ZfI&EAbA0mz+igsT%CCvrtE zT2MAn=d@-v&~&dQZbzafwH}C9Qj2};Rg>F&lFo&t-jOe2H5Hyev?#BKZ4VratmSDr zm)zlE+qQ*e#M{%TRVS5vLEyug?9xU;Qdm~l)g7kXWOO%6Ce^H=ow-n|Q;u~Ze;u^9 zROtU>K!{zs`FU_7k?9h_jme&?f*WJeOM{y`RqWj0#whue;KnF97TkzV-KgNERW}FP zjWAdqTupJi1y_?@30LWTOoIeYDM~rRoIA$5Y#);58QEd|(@ZfP(aD%?E6h z=(k1x)1!Ek^*?I7m(j2ilCK>YexCT4?xc4E)%srJW1X2?~e>a_Sc7rqsl20B|*Hg(E2Tf#TQYRO`4?sj3P68V6h9?3syrS{uexgy)j z-Z+N{^&+0-f9ZQ1iGt0mj>u5B|thb1^XwGYg9X5Vkmr|Bd4$8AEN$X(yY z9v6djFVlLW5@YzblQq?D3Xo*DT9s-P3F({ z4NT@7i&^P=EPy8K3O{03^(oSMqnd#?E0_il*sg#cN?O;7&~Ver-b*Y7MA1B7@|C$ocmiX| zjLo@*LV0eI@oO+&cIi8LU=<+-_`27hJFYO0vMq5_03~I-71l&2q|0r{aIJlig0mOZ?OK%(;iElgXf}1H1JpH*- z5XQMN9PACRHl{Lk5Zd5|gG%>!fHyUe!NGVSP~&Ane;02891!7_LkCCq5Bp+tK<2v8 zPU9GX|AK=nLHmElL7Dp?q!k0h~?Q z;2<>04F?r&PJlNxkio&pK%mA;`{1Cg7Y>f>7xv{c@dB<~QurAi{LQ4pxADT|pxxu3 zCYIVNFO<4>LRv8}I1Vf&%^V`w$Q+)FfSTPs0tCOiDxio~-CW9zA>f35y@((*(G3A* z?h!*8wP$*Ns)+~u@O^qu&_WIc)aHl1u-=!d_hr`m4Gjdvde zS559MyXv#$!CU|bBdoXF^Pu5aN~6JWKz_Q@pPT>9x&W&U>b0KB9G<&5eB2A!{x$o( zGsM>m*?+P(3x}zrZgY&|>QKNZ|B*?q{(U)v`;kvHtL6VhMk0 z>Z*-*z@@%_sE#=p`dtPUCuJ~{n%2+#;_DDay%^9}@tSno5_evPW``IHO8giDUWwkE zi>bNDCV02JzVf|x<=q%V5GW0Fey=8NeD(H@jlgpXb95 zT5|hS;FfIqU;Qa{x4`Y52dzKI^+257gR3#OKOZ7q)AwRD2mX+%4MTeM=Ynzc=iN+y zbNW*of)PoS%O5aa{s8)8^XS(4(-VHsa&pf2Y~$8{751l>nvgR-Wo`j7&i97|K0zCu z#sZ(X*RU{hyR?hCt?C zatDSL_15`vI#S`jLUQDE#M%h;o$dQ{UzNpz&NPe=Z~F+gM_ zF-snSCFT(bG~BIq4^l|l;eqK48NPyeZBa!LmZ&rLqYRDlw zLS3nLN8_=r9N;IitcnLgcP#TPXjKPl&ihK16Lg7?|E>=P=HuZ@xq|rTspT z)9M`G3gZkuZ#E5pz@ouQ0;^4+Yh1EOvnkK^6KdQ=%+wFniE94ib{fdjuYH^+k~{`Jb-~BVXjbRd0^m#`mToLoYWk&6$KPY@XHDpZ02+rNZ50TBLuv zrD)>ZzgoN=I~rX0U)|a8Q&8WZgkLy`Whhn(AF$fNwz)RhqXa|Kv+jafvBc8ILyZHV z)25!*jR(c|sEa%_e@yEU{qkCdlGPzz)LDF(qzhXu7Uz?gTql}Oe>&FoO~vAZ!$1ci z?Ih@c&OV3O>pR|SCJeS7`u+s@L0Vj*k~B6xDyc59l61qF!Lj|j`t%V#?S9$ENW;zv z<^piieYY*iEzXg}-9L8|QF(ItPw~sK#0HCBeg)q646muwCPzPIp&u^Q=ZQ%H)|-^7CMHzcRrgRHe^xpALZTXkOZeH_IB)m<~lOWAt{ z@yq-z5YAs8jfqdC_QxM13SH6JDUh+-N<>pIAUiOlQZ9M~M>i3@w$eX@n z>^#V*a5n*z8vH~oS+MN$1+*7w*Xep08R_OQz9t69sF4EH)=`L!c7u6H=Wq~!y9+Wn zx7PA{Ujtg+K0;3s_bXhZf7-&+vD;*xe$PK8h24o z?9(rfveqWqM8>Eo34$_zKbWde>@wITH962*kgZN zka#AS-hKI(k*q$J)rKXE4E(Sdw9KT*H4 zJMar>2!nr3J@5Ye0E|HG{*9&fSVpm)ah#6OviI7y`ZDrwS>oz8pMKr81q6JKK1km2 zH9h0Xm^_qO-x9P3CF%rK)tMa6LV7L@gnPW6^jw&gJ>3t0V&2;@T5^$g-qY=k-}o&d zo3%6a3uG%&)ng>`#Fc~NMKv2E9ZOWz!N^a;#qYWExHxJbaM7XL)R2KX6ebrJO#1(@ zlJM~o_fISrWLZ6$$|>kFC;;c7j;@F$#+9C*7&AB!ZqGdfQc{O5)4oFsk!2sG#ZkZQ z-rZG+0qXN6BwUcz$@rBzC|s8F)b|rSoU$zt2@8)40q%i1WGnMoRU&*&_6vJ+yWWTd z!H-S!-M`AvV}@SX8q-VvQc!T)M)tBW5z~el5N1h4uAc%LSUlByRAPIG& zmr5Opbl$J>ZJWLuxxs9()VO?w(&Jj~yYqnul~(x+A2!x3QeNW%QZ6luTqlXalWE)I zh8aS}(5}dJUr^BYB7frULUUTTfW%Nlw{W00iH%x+P*AouyDQ23a!Jr%(qVXtyD&T!BBnTD)vAD7uVcCk;ubMJD=b7 zRloQU{>^W`RSPN*z?0oK8@{7$o4<)49C@N?aJ1%?_)w9`-PoWE)7(b}WXO2k(E%B! zFJ~wvr!9wjda~|FeOoKKPY+ZmhD(usY|TJ(sI{+xXy2JfKL{=lRh@Q985Rs zNiSvV)z;sUUF=S*&U4G6+S!n658A%pU75lV6uBm0RzHYBc>UT|Zi;j?gAVe8p`YC@ zW1SQT?c(QX+t=U3lw|xOOv_2>RX{F$D<5_0Y~HIs9Ut)2Tz6~SrcW^<5=%(79O-yP zk88T)vVYu*SnsAqx$3ZfJ0}s9(adnu+Ej2?UL%dKxub0Z`C5|Ms+Zv(pz7{F%1)J| zaE(i4T5G;A)6(QjOV43Wv~Bn%+>eP0=N^@X!Qt2o-2GgUnYQC2wXg*gx7ersBRBtq z*Yx)4W_lX$^n*mgU*Dw`|&#&q|IZUO5UoD#tpKI(GEFx72icnLG~*2l287B`O4 z90&3~`ozbKOZQEoK4LhT&Z7VUkI`3f5^T(_^)>}Nwc(HSTJf<&E$0=nRH0)3G1f*! z)_V@?BmRRaF4uoTB2s2RZG?E)mJ2XyY-1q71#)UY)V=*By~w@-9rj8Kr)jAZ$C;P0 zjPMNiPYX3_IZ*7ry~v=<{T_O*S=3C3^hL-%2L3*RUKmu<2S0QN;~lYrCWXr1_jjf4 zSFF2<%Ck10q*L<4agDvGeZ_0R)=YIUYyc%oVr*g-Dq=LEjfwbBMZun|{zT%=tr&Be&ha28@<&c+5 zH=Zx!IbA4d+wk4U&B{Y!v;>Jw9~Qap$FNv>Ee`{FaL+K3R=O*n55P@91t=ES4(R$z}?LOmeX5VCEWKd7b!riIVdg%L~@c&ySZRmdZ)Rs%bp*qzHm5SQiSjU0CqZ|FH}AKzVH&tP4L&S2Ox1 z$6ebN?OuCf-!?V3T6P$jEgp$&y7EYj{$C-e$U@MWe#m&+qbmBiCMg#~;-{bX&xMKx z^J(Ec39uX!C$K55z!Dy%f3A`P-O-GpItnY3GJ|6&QW2US!*t`;+KP9}UTvGciT`EP#PWjp zov_*Ad4ZY*@1HQrj;FcF{TbXCo^|MMUi#E`fz{8S22uK7%xrd_ew2AONB*P-;$F$U z|1~b3-1|{D1aj^zN;AFgooxLw*wUwD>Yvc3{=fGAK0T^W{mW4ea_cWpbwAIk-yVFK z4&m2)ms37{e4qN4!wtFbXY{FG3Tpa$IrZCv+cNe4x=;Pxy}wV-=u`jhyw6VW%;y_o z$)jS)7>jRBvASgKq{ifl715qmfjr5W={PQ@>@3ISwXrQ7m)Q#O2aJ#PKQ^W#LP%|7 zM}$m0NXLWdPRD~x{f@6wX>ndbq!zhSIupyka6EK}*HV->Fr!~5PbebqPh#oNWi>Cv z`+dHk_1faR=ItU69aHS-)9jU;{q54fyv%-?W|TuBc`AY?XSbeIFNhjPqeLxI+N*R~O{cBA03Sz`&(*$U3GIKFzctcv5BCkU z+dzgT5|BdIL17`CBw#oskQ{yWTTJWVd^^Z2vMUH)w+Rw9U#}X;+S8pF-R9Pc^1}2Ho1Z@ijF#jzy|Y74M(ViL^6YWqG&RK9M&Sp& zkPLg*ai?@jD6VC$O2DUv%=sETB<2I^$gX*{D$cyUE#S6oI4W|(EFK8d#0OsUxt)nF zmKe@BNk%Hou*fPnr=`@L^Ea<7d18Sm6jbK`^Ya}tajh`rH+gZ{ZIU|xjGz$1&lg$?V)LMXWO#J zwVXFw_1PvHbsN3|4-JMd!{0OsRTaC1cUy)dyy+Y+U_B3~>(dAd5iUZvvL(W#Ep`X@ zxR3d)`%$m&meWg5KT8e?iR(T9cxGc3fWKwlT<`Khr1G=C>2UjcELpex)j}hSN8d#g zxQrY6(Xx*=8?LES^!}5s5#=MXi2S$RF8?jq{B?oF$%$3N=%%HFXNZoamBfli#m8>> za-99IXZoAbx3wD@t>dMrSr;HXM}&*1cY4ncv;1jFUZ>;U;>~q_wWQ4bfNEiAw;>qW z*MpIjQCN+a%|`axaAb2Bx-rAh39Y*5fLZqouqYv#!^!95a5BA{Lpves{`lY!yU!?} zc2$CR9`7e+-rOJBYrH?+e`^FVB2(gKHxs33md$2~=WIQLVPF}9#k9)Euw2q7&_)Nn znn$6x@zt1s{{4P*Ga4Fgr?|U;^jAzl`}Up~A{`0gGIxbS>mNU01sgW1gtDdBGC5XL z%nY7dU5LFt_ylY-=%Q5dA6jZL4eS_F?+3xN?v&KVT5124bxQTM#*ISqc4z&;ZlEGv z&J$(KMCl3kj|c0GUnoV?YIuLP07!h0Lloip$?o`{=_r6mXA$fV7|gdU!RtXk9>mW3 z4_<&s$2z{}WoeKd>rS#`ouz&pc%{)dM%Po;0=&F_jubBPCQL;aH^0EpH|Q*EcstKC zqFpHsw&F3M|*aGh4AIXCm4Pg3yP%-e9fZh z;<`N%Ec=^8@la?5bl}_a7vP_W_MBFmj)SOhe)!JHfWt6oVUTwY+N^>qW}KFeQC9T$ z`}LID3n0VuNFSkO`T(JP`&E7Ci%_4^g#U^bFu(N}zV@f2QE{Nxe08twnu@$g`+g9$ zh^GuKtSoBoUz8{%x`eZsGq(g2VuH>?|wH?NXw>yctFiu@=>+V52fskWbx zY^2)#2Wv%CNR8)56Y_4e)kKNlby3CzFpOEo*|TL-5R24pa>Md)jsjOHeTXHtA5!Qu!Ox3aTAS5aGovDM{oi=p(6*>Z>SOwDL~=&H`uAq9a@ZM(_U19} zG>F5+Vo17Yd3uFT&Uu;D6b@DUCFE$xY5qRwyl}f=I$5t$;%d%G{3D4_!LJZ=$(JAo z$a*7216&sAm<}AixpW0>2JN)X;Bb_Q(RrwhJ?Rp`lA2gPNx?Bpt-`l$FNw}up;tJ8 zCZN&~Q4{2fSmTc89$@#N<-q01bSypKo#9aRzI+uB;5b5PKK3-YH3AF?&r@5xDbVk? zMsS-UxcIgZUZmp|z-}A`%G(YXe4sQ$d+++1A6BWU@1%F4n7a$LBd9-zzkC{Vi!SVA zw6q61WyE0BTCdhwd5UCgrK|eWb*I0~<5FnTpN6J3yoiMtP2q)&TBKdcjfC`CjGH=5-$`) zCjm@-J46k=#5pCGIlvr3W2^gk$0@rTLU4|u@Meef|V{SV;sDeOXF2dY`;U2Fr8(1 z_h#LvswRDEyemI!z`Oeo-P{v>WCiF4s~ZagtcqG{mFC8pv+b_Ygz)|vCA!~Y(R7z> zJjH<{2@%MDGVL25Owq;I#QP$@Nv=?Hc&ch=Ygs{K2#ilx;HRaDO1JuTd;6iul;G`4 z_V#3IO;t_*gc&pdbw&lcA!zCkPe=Wt(uu$wH7hk;XO|}1loZ_kjdsCy)*kcvF8=g6 zk7{UALx!z|WIBP><`z$=Bi0oVx?#kFo|2jbfh-U{Ph79~o|aK)6(xMS?313Jd2&Cw zpO4f6e#>qRi8EQD>aPW=Hia-`?P`5KYl9rq+L`E0>g7P@uU^Q^7la+4f+k)K^>UQ* zaq$7kowZgs4b)Ervbk>>=v7nJfEFpBj8S0W#E*?7hBYwhmeeJt6)hf9%vc2Jlg(;y z_j*X1G~bpSS_s+pZ%j-o@&`=i(7FYY=8FuzxSt4{7r1s zsTETX06h}`Uepu%b6(mH6p0W;3EBMExTBDK1>_xio*_^A%$EMXenrg79{ z43rBgLBwVW_EK{2;>J-I@a!~wC3j2B(&lvJp=2wBC0BC=k+6u{xpW0Z;DfeR`ECG< zHB#~a&L_$*S)uK@#ZjZuNXH*kQL6BP{Orgs2IV%gJyI)q4?Jvgf=1vn!= zcFUkW03s_zaiO50)7z*m#9)l??V>5X=q(r}6_NIc#>mYpRTRa%7GB%)!vR$O&b)*4 zOlmEvx{JLdu@mV$ik3|#yZu}9^V(6-_tFzSofOO-_Ccu|Kz22KFwQ>UwIV&MNiBV3 zy`qb-D4D{F>r#{RXOTBfev9{ahjk#ugMFstbn939#@_=g#T<`X*!tCh@k?BRYKZ|2)SaOAS!WjW-VQj&yK6^NN8W66~xCAG@QJnTvW>JxQ8u4X$5Mjs++k` zq@6Q4270P$#Wffr!;M)bBoLi?vsC%o^hIK=R8?`eAuO039v6|i@%!L}N#)ezUVWAL zf)?Ic0n3*LvhQ>z2K_+cL|LHJhCH@;0w`#|`s*vb_~t@9r64QduCC8QV@Saytir zJW2l>!KRY6NPz5OeEXo`s_?QLKsp$ztN<}UuGhDTQ2;?hkmcJU90Fp|0Un5i72;SE zsTpMfU%3|wx2;3h1&@U*r&~N-LVkZG7Gq58H)m1zm1s=R(^zJ)EP6d@9PQ+qR5asxujE z9>sH#oQ}P*83iQH#yf=p45B_aY>5H@ns*0F1@OW{9j!done8jT*>+i{-N9pjM6|pC zk(gX@0{}nqdiPE4EI`}Rzh7cn&)UfR0c|e7qwAW1pXbc?ZPym%HGd*?&gOGdFx#%J z;8D zl+(HEJMBgxNUSfttERKaY+1w_kjnE{;<}f38S|*5NpdXymWf`L4G&~lY}9z>TA8fi znb4ELi({kC;K|AQ;QuDaZomg2Id(ChNLH5WSi(WkZXxCT`py0CrzkgijKqud)he?xz!(djhR{R{u-SBSx5 z@eCtC&bcBZ2HnD4k$_#$!mrm!p;#~BcfWmnxIX@i>;FtI{lVlO>mNC*Fypo2{9=5% z1`1{Fs`BAv^2bZeV!1~!b67Ajl|+*#lgn zm|C>>nH#lX8iegQ3KSEnSv%$y5`(h7-5`D|gIVgrS@<^gn*6qF0fh>?a)V zir+Lp&+usS)Y7)Ez9D{^GvKxnMiR%Arg!He&=WcIYMzaZ+ts(&J_j^3FvnC_3V|0v zBVnC;Jy#Z!ySra11R5V6qr^fzk5#!X$wH&xi*TL=9^EdtFlzoOz9yZ?-bCyzYqw(}r_?Xqhy?WC1=Nvdke9 zndHVpH*e&)OM>xW-U^)(98839?Dc_Azc&8ZVwKXCL1Kv`%4H%)+Q)%`Sn`B2cFw^k z#-AgX*N=P;{yrg9{66Txg}E^Qxa8n%TdyR}Wo%<|x3S4-m8ix3Tp=-ltRTQ`R8GSq z$~lx{Y|RfVF0TOb37LWo$+2Zyt1SND*ik>MnEDHqlWWNkdoLH5VZZnc;oPx2(k?Y^ zNz)3 zH6z%_2+ou3Y3?oB@GB=v8ez*4ZBSzYiL<2{ipfpTQ1RTK3dBskNU`li1FUN$j-3?k z*%?xANE{o>{rpU8sc`CY4rEH~-LT}?3L#cjbb%0@IJOe8SHN2?iCQh()nC>^2ka}X zo_j{2Ag%htTM*e~ynMbD)A2V@0Yu_<{)wMm#Dp+Iv7}F#Tl<*YhC||S3c&fUdiOowb;=;mU+1iFGV8L z4r^$e&&tuld?QfNQ~Cn<%kI)2bEV-xCFv1`=nG5pG4&~5;Gbf}#S1g>c8VW(MV=!f z$F$qQ9iG?>=3Qg|F=esj@tom125iT?7sOE!PDa!i z=MoM1{p*IUuc3s{_4oP?p?CCgTTl1G@nsWPMOtcN8Yh^au3(=qdvnr@cVCahrfNi9 zbvI=C<0IH6!FKT@$$QwCx;CF^DfN%QY*3oJ{-YTiWUpT3;gUOi=+4}I0yeo~AeJW(I` zP4E5!vr5i!%dj^J8PaR)376&1Vy#sXe`(llVZ@*rArt(x@{lrd5HJDb%X= z-t_HFroCo%&>mZ>hR48D_R(#$=0BSHOnaA)D{S6TuJ3Mp0v@ zRWCiZ6fNRk65Zfo1cD3gorx#XvC`fkmWq2QAW!y665VSIOOQ z%&eDW#w&HH-T^(-2JedORpd;{q6gAqa!3h%H&Gm{3NnTz8`MYa4 zQq}??KZ&t{*%4Plpy$XgFfkyYbL1`KEgyik?@l-~l)C`3y9eY-00|}6UI1d)?(Pc5 z*Wx_`{;(k}axG5^ST}M3)20$&h|H>C===7b!E6D){8&b$>@g67bYSd{{nr91zEdC!!EvZe zl9HZSJ#VOn@Z?3NYwh@=5%2E&G$dBq&b)A8_MPo83|i={=bzM&mtL^4Prj5PbbsK_ z92L}>Ej0L~FXQ+L>-m*lSMu6?m|1AwdDEbcv`^w4X&`jUrF-^Kvzl}8YyPav@+sS< zQ2n1#9A4W;lY@=4?8@wga13krrzbqZAA?}om<8KlP0wKA7ktOcpdswcjqYt0A#@E# zmvT;PGFIA<7@HS)A~rah*uFt}JWKhqb_WOhY&JwXqF#aTZSYFLy6is9gKON~)-;Vq z+HcZ;C68yxOf%(5hpP;@)+$l&bC8l3T~8_jM&f?>X|2?Ddw>lH(<{eKpm^(+_K z`qwVwF51>Z2+iqSN&1!A@V@Qdgw(9Z^vR0aiGf<@(7Y2}vW@iCh9&jqS_JA_(G-riRxVcDirKj<>L7u%s`gLdAa$nc%BBE=yCsHCL;O&X7*dM~2$7 z`Nj|p!gEpFb|n)e%x|WB{P=Ihbo?;0?SB>28Q^2;KMfa=j@x*i-o!sycn#L>S2JLD zKLf=7kGMC1kFvb_zY|C#RP>G-G_9zirfpEvq=J$Hnt=pnbfQ#LaBFE@N~^6DCJ?t8 zmzs3)tLu52{6_u+R1l2##y*UAo;3V-7dXpvRzF74&a@lg@-R7j*IV`+ zbcI$-MnKz;@wZwpyxHa-#sp;AC+F(1AU*HR`7aethq%_()`=}T==|d5NbQ@`576ng zh|W1b2Qu(x+JS_01!u7oo9}j4{*w8i(vFpdO1i%-d&(J`h=o+L&DiQc_nZ;2A^Ts{ zAyG36_zTIn>>zeR_WLx6?_m`m_L8^Bm&L2zdrIUQ`?Ai5z^WG50Ji#XvFq!+M|f*- z{+KM8(r+tUXeh!3zQnP0Bi^i~hIkJ@XRwd(2gD;tHp_<&-VfMc2!aH1W|Lo+RaQ!4 zb-BTdOGT!Y_p4et7z8uarTY%iw4{jI?|%m#{wWKHTAn=MjU54><5V?;Rq z5_xvhq_ag@DOT)S?$jeny1Y^Oc}T>B|0ARw#M7N8X7vTz_Lx-e`RyB4L5dQ7#S($a&HM4ln&tgwYWm=+!UZ9@N%iLl8&_!@q z=F-3Ku*j{>-(~g2bpMG!05;c;KRvN}K@ouH1zEWLX1ObO%drXtDyhKv_Q%!a-SN8*nx!WRExJ4!%Xx zSAl-JAt;4MmU82~We+H`Goe>fO?T60vj=e7{e@~tKEO@>4`|B=_mQQ>An1PP1YNg5_2bueci}%q)^RYo z={`fK&=P3^Pl%ahPVT0Qt)|{qn!-{qV_A%RYnFyhnsq%$sstJSAy6!I1dDH&S^o1RHY8mGs)^hkv`a+N8mzMCe#~nS5VNj$<>Y*ic z18)H?i=38l3g`R~wH(_z2StIj3duwL8OwnMla;2BU8N0PYag+_o~Ci;Gc+>K=?OEf z^VmgBL2z=*q?oCBPC-CN&03^mQ9JRLQx3dD3y?%!#V&`E6L&HNk@axq;bf=L*`D(L z99!tRfvKlIP4?8)K;9l40RQ~L# zPt>YeV<1iqh}|2g0IZ2=Sq4N?0luD90ich3MJslK$^Az)HX3o~4quqMB#`^>@;)=( z@X^V8Ovizm(z%wwd2VpqSME9E-*5_q|P z3F9$+(A^(RzjaWDLtY7@VPY0LV&lRH{`6GN>_J1DbU^8F*J);j7Gi_ZahB#E{M>ar zEJp?wFxPZ6eb-sHqUWK1rD{02JG)1{np&N!{Iw5gKti1Jp60s(jJwO6OBss|r6q#z z^5BQo)CSxl$$u^M_}hcRn+1|h@y`qY5x%FRs8Wol>C8y&+l+f!-$**tOkS6%-)*dI zpU$s3ezi~i_M&D=MU$K(dBIePGEqG~mx?+gvaduq>Ei3Cq!mCm zl~B+$j8c0*t@Bs@2@Zv5IsR;p#-)qTRN>m9O7`7o8x@PnDOiI&;|2fChd>z)mO|8} zAnsd5>T{F68Hc|F9R~Ja;jj214H2ri!oOTK0D%_O?Se=NNcOs5MW3=+zU7zM9P0|q zRGhv(>_2jbOvO*kqiet8WW2-a;wi6c4(qWq$nv)j`HZ!GKh3GfD&jUWuDFR0E#Imj zc?JOE3T2esrm{>YZw-%IuI*D;5rZ>>uT$V^JDNVoJZc|X_?PY{_rh#RrWHT)2%Gse z(b|tWP*Q*wD?Q`{Ubmc5&~#8n!*zVKWyDbhG$%U)>fj*s=C@|(pV;?RLEG+4?luPh zS05B9Sokz_uSb4Zog!k37vftdp;rw$S|mgLBy>2%1ZA3i)B7s8o zrv-oFCs}M-U`Ls2c33vinl%|6eD!~IZ(e*&4*qMg+5+=WU+DpJ{CgeY%-8{+fsid4 zp6N%)RZd>oG2j;oQC?KXr+~DAO?HnpfwJVXsiuQ>)dAa2I|?pDGt{imgDLSKn%`%+ z%zs|nTD?q--lMxG0F5XfJh6bE@ImRJw)d z_KkfIMVG{%9T!et9+s&PYaI9S9wskU^A$q>61OGl8qZm{=JVyqJ`0T3;)+9XWf_a> zTzpN_0}he5)#+YehVyNXQniqyaBlqBQYD_z2$RC<6ad zF~?MH>~7Cq*ex~w&HtnGe%SZI$&bz%FT%WD0R_r!n!582D)(4IkyUEWUAzv@BpEg5 z&Al<3!-JN`u9F_#j2_-+B4_VTX5!tEhEJT!>@)G7u5G2T#0+*P;#Gi9+b1!$&SZ<rE#D8&)QbE>D<&g!&=ugo#M@JKw-b`lyL1QZ4D#%)wiu-q>?=} zT%s$s8+flo5Tm~yuI-q5@}jS6tjcc#o1lgGvclv!!#exr;HP)H3r$vD--{(?T9yzZ zD}UU0G319+M}>PI*#jlYDUZhWLsWm}H>m0ImTP*Q&~&LczqdDkJa&Yk-m*Rg-r}PD zyv1dQwr?ovySh2tRzzN0hOt2pTVVmQ96*Ngv(x8u3n{q^w0 z&$JcwYg$e47&NwtLm3M8X{x{u%x14Vx8fxGJe9#?pLhNfe=Pf z?|07)@_Qb?16^W%Hos>JFv{Ei1?R(3Cxz2T9KZIMd~!%+4~PvPdiw3~Gob=DM$V5F^5&m| zbXpzXaD5nPhYOb{)_BRuv`>*<-t13lfFiweMfMMhoau`6_GasBK1E2q5VUe|P~;?6 zq{y2+-xVp!75Q>dbhB|}BhX$V|LFm8l^ut6o=%(TJjU&Q^YZFTsAx{dfx&(}U z=_z8q5E2IYz>&AJ}Q5pRBDVf%)X zMXjZyN($SPt9EWw?w1$+LULCXC0Dm^C?*q3yVrUH`w)q3i&y4iiG>FPvYH)e%4+$t zQtuqIsl zsyFLTdLbEwO9i!h$=%?Gv^u9TSB29f23aK6=TWp|FtT4|c#toRxzzth02YOQM(MVs znKaHj{V0%3u&jy){hAG{zLHeWXxEhCBy+z?C7mkaM@2~ObRO#TVkR1To?v41%ojq$ zS*Wd+!NmocC<_PP5z_PpEQ55Sm_{;e0aeZrK68|<_RyoA$Zb&Vy&<3fuWf8nw@`dh zU)C*i3}qML$}h-N=t&BBh8VG~MdEmwetHtm%V31*vOF%CU8)N%7i2!v6P%+U^Da+M zi6>@m<%y-bIoo&qxh{V;T@nmYp4-Z8^^cP6g7Y=;l~vxX zlf+BnD|>sh2J0zpR(Zps_5Nk3ZX$m4Os{Q_KAU@2mVinA53$0Fl)jCXN>~FGqDTp` z)2I&Fg9x|&T8xMGY$Yg9$Nqu8atiOuVkoMrE-F^m_v$)9;QcVM9}F#PRAR5I zsF2$Ok+4pK+Up2@z{luE9m_^t3s7_Vjc%jUdW6#>A6g*df8Vd&YQY6*v9mhqMkTv! zyV2S#R1)u!txgZ&Nb*qrj0+_X%Ur-m@$b}wZJL}d(R=QRC32@dSfYT?u~#7@T9+DS zdu=Nz7)i}l%}Dw|x7_RfrH{IWnpdxdBE~b^8yIVdW2C$|@Qxc4Cg?M_5QD5_g&?EEG6 z8+8>Ye#m5;@HFYBY_L_Q@gKL1+Mm14xps}5n zKL|VM7Xc^p4Yh8g9mQzfZs#sIPgb9GZ*Js`fAjBxd?($T*_j`dz(dgcdrs0C1W?jQy|(AUvS|8IyN+{F0acP6xMux(?qYEzYgSltNyYf1 zEEjq=ZU>#c`8QbkCg7_X3q}FDIrX*J=8l_uEUkFk6at=yGg21U=6x!#rOJN+x({M#z+Y!>%Gw7-wGw@oVVclA9z)PDq- zA&Uuta3*{FBR79aqNI9^K9AlaB)g$fYoFsmimA9%b!R>;Jjqk>a{R`dpRh&p=6_^5 zRr~uTg)5WWP^-4>rB**0kAFe}27!nct2O%*;z^~hwhdwOm0fmA9b{l=vf+c+OEPkpzW9czV*r3PX?i0d9 zT-y0K{D2k`Eh-hDeuj{vJb%vXM4$=lc_vWut-HT8$1buB(ow1ya>QQV| zE6l#_|L#^8FsJ_B>r@H=G!Fs~JN%unu7Dr^XY+sh-_QRSx%u0*&E50=FI&+snm-0B zoBt_$&fiSDU<*=z-w-%yoGemG>U`mE_5px_-2nJ4bY^R=YdM&|dw$OU=Pv_)LoUB0 zF=$aNBScGuQxENh2*V5!<}CmBfROvz=~OEW5lE>>VsGLfUWl-+rN}SP)6&65QonT4 z+U)GorVqxfroX#K@3Sh>E@l9j+Q>qWU``K&1N){|-|?uwr~g)hd*TQ4eVM zMV0)mmYrEWRhWv_GpMWS1Yj2gbeSJl1D|j+BS??D_Cc&0+$vec-2CzHD@v;KasPjQ zfrTpRibxTejG^qkIC)`e3Ke*rXWmwh2LvkEPL6{^Kzi_Y3};C-AYJDmi0U-lor zQ-BR8-|^c1tPiPQIM~k5YC`kx5vr~Ce?PnjY(MlziUxtn7s2+3kiiyz2(Z;+3^rXZ zxuWTyy+EoCo|6g#J<2-~(4%jus_U}Md^yAP_nT_~J@x?s^g{>GUhe_W6`c$H^KQ?x zpLfGkz^uSZwh#WaZD~FrQ;%r&Jy?`eCk-b}<9{LtKC!9h-#ffqplXgyMRROQ2sMN4 zfGG95-^v3Y25A3taMr*_yuiYkZiOj(OJV_57x>x}Cpa6Tbo-&n1yQ)X@l*Wn%hH{=j z*x{iOiUBBtMTCum!_r4>=VIS67VGa$3_Q|GCrK+E2Zs2!<5Ll!CuN~KN&AO!flQ!~ zKMgLbozocWw)i#f&%e7wcO@gekHY|gwt50@2&Rm3qyV!PN-IXKhQv~q zqRvZl)feVARXm=is5k~Q7By%) zr5ty7t#?yPU8B(YW%M3k<|VYM(6}kmx}@=%#l5p|^!A z!?mBAr|U4Y6JDj-wVzKr$Z}gm3SWrUc6qZd<}LAx{;$$`@&n*q^{$S1T?znyj3SBE z0fj*3qqkX49_x&O%d-i8!8ln;kvgJ?GKZif&kZeM=v^6)XWH(3Q0z|$Rd7SK@GlV2 zh~Wic|JyKS8I5=mBPxk<0dO^w!j=9*bvuk$f`EYaitfS{EO=TFr_=yTcMSkn6c5Ff~4!(S( zNWW_TTYn7pT3*{M;YGStT917r6y&Bq!~0L*1^x)-P@uJPf5NYw87@lsz5LEzqMX
lO;rT%?JCbVDH;c|VNkIhHBJE5NdQ7v0LZ`PPfi39th$%30S;rs3Z&svHUL#j z-EP{(Dl$i6==ol5LXX>on#ZZD!=cD<>bJH&u(AO;|L!Q+0$H9sHimr;x*0g%{N-Nj zI*0>SvPT8s*k-d~>J?Sp3m(hePfj5N$J9g3_ER zx76=-Qm`#iOSrJlf*oefxKYA;CV|nDvs0+{-)Sf;K)TqWz}S8qCHSOCS)?Z8Vm(|& zL+L_NeC)>gpov9>L| z09;KYv^RPeco?&4de~502tD;j{EPSUsvHwT6{#3=(KdvsS$as->XP)alY@*K@LE-Gw!vbSPe zPS7<5<8Td|31nrWw^}`+b;|;^>xF&p6ORk{$YsSOp|hAX@67z0hgEY= zPZtqN(c#6{!z8@@=URczr8#>Zr>L7VkHhH$d76vgNa~JL+!R+g`|FMcFQEgDRF5l9 z)m4OXA0!F(phE>yxa%CYJN?Jmn%#Li!Ui!uxMr?u_HPcFxz++e>dF_52b##aXIOnR z4d?*(HRZAnFy-+N6BX#Zm>m8(Gn}4=!ZyCV$2}m&@@vKsQtZFhYN3fXpdcxwmQ3y2 zB_Y#Z)3t5&1PmcTx$MD#;RVj`=Ik%Jd|0t`etau0R ztHt1mw9$0&Umjxna=i65^s~GAxKUdQ9`QM{tK$6rR1qviM@4F%o_ZO-a0@7}|NH)r z;c7vMdoOsX5RMy?n{ld=rl%ZiCXGjh-vQ*rH!;)|#7PfO7~=$$tv5Pv-fGK#lP)5i zNyoH1gZYM2tv2l8CY7fl%WiMcP<29kn~gb4B#RPOq^%s?B-Zghnyl{pz2r?$pDSU# z*~)Jpym&&aIK1{M;Zd+C5>B?N zOgQ;FkzuX_U4-GrnsVQrWJVKSy(=S~*w*g}HP(5vUw=IapDsSGyH6dy@32`?0s&=h z1&=NI%YUr*5?bmqPpDr&8`7;Z4~sUOK56#IPr(G?ZG|+Q{QOWTFT@@Dj?rG@vVfSl zFKFuDd7&gN`9Q+M-84uE63K!a<+~JP!!rLu?14mitrL@W2WNMK0&d;&&8QaMRiU*F z&Pz)Nk-o4$MzhX#hrfUG?}JOTN_p}fMNo*W3(?_7$Mt)lM_`XlK)Rg3Xi~gX4~pR_ zmC9Dqd7z_X6C!po&$MQxYeBqi^4AX)9+Dd%^+XG`?DI9v;f}Z#QvdNNEYg2Gw%7ya zmXp81Z{{c~agixFP5Z+<2xc-`^*6!20{Cm_{>fK~gJ09^-~V+gri;hkuRU2dP`1Z> zjc6DCP93KEU;jIlO$l7%Iq71LdUO>B7_=V5IZAMs*i^K5u2njuN@KU(fi5&a^Ec{MJxWx7PQTgi04*dvE?y%71!&MP>pLJG-CL?~~cdW$Dq* zuk4gqaiYoW{WnOlI^nKMCutqse&@V6*%gFzt#F1`?AcaE1uHnkWakC z-*_dSCkJ38zQhpOORVG)|gT{}y$BPd9-9 z7?*?Iuch}K99ng@vol52J5_ZGRWsMZKK+y6oQ_Xq`DOeAwrYgqyRckAy@XNsTqDD0 zAgK>IG|sJ*e-NDo4n76iZ#UNxJ5BI!L^so@PWr|b{fB=hOY1q~Te#(mRpiO7 z)QEKoKlkfL(s->&oEh(6;b`^`ez^z=Iim9~CbdK_UE}LGAyX%{hFy^55}51FAKQ!# zt2w@*Fut*H&}#0_NR62it{pqYWuHu)F~!{ry>nf-_RJ|>beW@zo$K6Rx8Dl#55BDU z8oS*pn!5ikdQ@J&!FCu}*6ivh94>0TgO^<9YzZU!+o#x7vfAo1lja2F@XO{#2n-P- zhEs#rMQXRij>=YKQy@R*8{8BGPZ*Z1XaW4Sug&PtEYUAm+x2(!$=isSGa&Qv-vW6X zN#0v|m)fUzHeXeb^L3&}?tDvf?n5#zxe~H;o(It)$7XzGafj_xU>Z6@jvR0uRd^gs z79;_ohyPLv$Mya9z-)5_p;xfK56|q_KoNfl*BQ|gr;8zGhuO)ws!ZCpcK_~c@u$N1 zhXv!2wV~%|su+#ZrbBzT86gR`++ayRHeU+uu;u=Fw3DL`F&$3W<57KCHZf~`QxDDq zR{Mv#DRO#~2skLNBG{5GzDp~Ue|KmTq0+jOa=E|#8sV?gm+k)3e@f{{K94n(ZrA`^ zNHhPIp2FgJ>qS6DQvO_YTfjpqY(>~=`mg!@{$!F4Ph1g^b!gUrt|V~8mGWB*1(RGi zkC$Mcm=(-tFvgzt1E*WK@UU=diO41o8i{O_Si1O)KTD_uvMNX9#!2auEK0|lY198r z%!E=Y;|d4Y=hVTaPX;k3{em+eYif4*KX?}6WiP$TddseuT~x&zfZ478$eMtr^@s*0 zZ_blHWq-`Y_4e~s?fyM|(4z$@@X&sbELEU=!duOoqtwVPr`ot`Sf7-v^Gr59|V zg8w28G+KHy^J7FsB-I3$g){iGPO=lNu?k7Pv-xByrjv^Cj%I)Ri$w*Q5t1$wv07OS zum61Wp7@vDuW3Q-46E?sF1pRbLL6j3f}_mt;u=LnR_oL4Qw%shIH(*bIE_ z#sAu4>mX(wFr@4qMPB0ALNF{nxfvo`y^H%I_$kyEolSZ{DCM(D^{PDl+aWan^ zU9~BG-yyb!*u~I-7*^7T)%>+c@<>N8CEZfs2P{Wvo`#DSxFsAnD^x+CSJ)2cwA2V+ z8FBm%XgoUn9#P8Fchve5&!JYN?3|ywrbe1E9u21&2lkhw|Ia3e*?IbbErydf>HhD| z-D5=%Re8Bm*@iO3=DQt_EunW~wx#v}2J-P>K6Z`Mj=*I=jHah(k&Xo{i&cR|lA%%K z)gqaVE?s-E1%Z7hEDPN|Ky%rZQri~pb(-23u6KQlU;;P|9jO4w~UwDWu(I>3fRW}9O#k{R-IN2K&29;&!x(j-q|3$J6cS2g`yYzAU+d!`` zcboN6_ou@C;Ce#{F=(l}!G3Gce1($KBZEyG*0`?N38~(T|A(TEetP-=YHU%D-=TBI*DOsPrDUPEP&%SyD%6jI*;jw*N$a{P5q*&8RaC%96sdv*w;ej?5QtY zT0d}IsJ1Y z%J}noH?dtCTLHzbz994+1T^{MJ6B6i!_K$l&nGL72nGV`sE4Vs{c6VoRLnK9UjRlj|B7dArS_ zfeQxLcJeB|p_dc@VyvMb#3vKwaBwd#@e}MA9GI)DSYW2bwHtP>4h>w|kn9tRlghp@ za|YiH236ota(%k2pmwb{djfCMmw%qz{Nm=mFC{m(Z|>#(6uCbo?oVmomtfZM&(H|^ zgO!(gTbCv`Zx4INEZgp#SNz~l`xI>VCc3|2Z}95c)vVlLFMa?XS_pF0Z;mO5f96Sd z1tsdLz1eF4V<<_^n$QB#X{dcm5lnM+3S*~`9^pp9HbsQt$asRXr=`o3k){B*6RW@8 z2+02)gdf8FKb$?TH|tXR0v=VUApKMnd=b9Yv%dWrSznU*Z5z!p0_aHk?A8L-D%DGi z6@S0C*ZLALYecgsZ$tsCa8i8jruyWLzPlPzW&dbQ4fzNd(_S>WI+|Pq-GX?#2G*>u zuUS3N&k~7|^V>&qtmlyW6vwx$^BMwOcv*)hqUj!aNGX zYv14ba%kYTdRCE{;)j@hwD2|+>t7Iz{1ARa2fb~~k;3JX!uIgmO_9`zkrbIg4{1!2 z?~~bgPc9Q zoE#t@x9!Yw`45wCCfC2XrSF^n30AFx!uP=u8aA$9< zx;nWpth$u4`^2jKf0~a~Ptn&NSmor>e~4E)qSX!h|CjM_gKYABOWm^wgLvTi%!)(hfrPD+JR0YDtNA zCn_ygj;h*SGdTGHk|`apvIA==BFbm&41P&Y>hY>51ZOGXVXz+hW!9sc?6cjisK1?m zR@_1bd9fVtQPb$o2aKN+cv@gSBvP)n48V$eFL&iAQoUypzE;@5pX9Q_rIF;b@eN19 zr*$y0U7uj)x8|63W(+gV2TiSMipBT*;uzUh2ZLz(TP6ONVHe}RpbH(Ca$UTP>MB`ji_#N*hp4jCi$8Rp zDlhS|u@ykLNBIio^G@sDkhnZ*ofpx~o&eo@GUPDy803%t2 zxf$7%N@`|Cu*lu|%@>UJ(!F|*ooJ`1_G1jX0zn1J zF5rDvhP;sOYnrb%+{|sf;s~knUR|Kr&qiOx)OzSg>^IHl%8oO2!g$?I-)c}LVh26% zqCn5vJy6O~sAiezdD|NXzE+=H-Fft7bEV%MApH&v$iE1Isn z6`9z81+G5%tkd%dOYGhBwb~W2f#&HCuia4JcU34^R2jdrh&v4P_jwoCAcN$$dG@57 zej58xRyQ5rCB0O-Thzv!(@n`e{cPvg9DkjcRZCZ+madF_-Hm!#{lGP$+81MklB?7G zr0St^#+}O9E7=}$G>%`bO?L-yfTHxzcY&lD(zl z>$gkCndGX|rGP4$?6q85g97U&Z#<^-vdP4qtUWL(4N!2_&iENt)8Ot6|EeF!#5Qsn zhNg(JW!t#D`DYiCJE82b)-}z?VyER`?~5PKEA(z_*Bv?SZ}(ceF;r4kP09!IPP0o1 za#J8U`~UYW_NM8fbNE9>81Wr{%wt4?QOb}NdmyFmJ+Mzf=QM%d}nAZU1xT@aep9>)O4w(v*Kmi{bd^O!=i5P2fl5#f;m> zpf_`x_W=#@nP9&42T)W=AC?os(?Kw?Vu}eBEh>m_^7uPqSY6vSpGRw-X&c=&7430H ztehkgR7&^%0qrdH6@X0fUTwWKU}h=#6HcGYB(JZ+N_x-_u{P}pEi7YDL?+s#w%6>q z;G)dV$$WW6i6ddn+s*Zud54`EzlmODp!?B5G<|08m1BFI00eAs?3rwE8#TDH(zdaM zMnr9g1@kE*f5D6KjZ7n>l4Ygww^g!VNvQ4YP*JBsfrYkE<*)55rd_(Zm* z{+go|T00T9QTFoX_5K+Q$_;#7Fh9Zjvqe9pCQJT83voh&^lW?E;uGfPVnmk5kk{FU zI{e}u4dv}Wh2Fyj+>=NNV@;W>90Tg-gUI;uA@NsTeh0>xmG#GV(T_00jm6;);;8Jx zJ_St2{dV>ni>Kpcy7_lFZNvD`De=7dgRw71QUlB@P=cGi_aH75o)IylAwd_|BUbpU zuyVRsubP%?kFEMr(=qVXV`Xf33rjTS$FDRd2V1(AJ;Ocf3S2xx=f>Q4g7ai@S11Mm z@b2xdm~oM!PB>{Or&H|vm`D06)UF^2>j&+C9pj z-=n;1eF`M2`V!8Z%%ZFAne+ioQtecTC_Lz2 zn5Pf9{zR*%1`>F2y!mI4xuPiXOw$w8iYA{Qwkp=)&0nqj72Wr*W$#rr&WB}1@bUXN z&?r5>fySJXS^OPaCce>fYC+Q>$|J!_HEp+9F-O@q_>&h;lDYg+R=HdLgwDn?{P+#T z?n$dU2j=vx>-xyc|JmXSpl&;atZ|s_Z>&DF;6MtZFda;}MJlscR!Y+JtC%8!uw}*S zb$v!S-sMd{QWxM_3G7JJEJ$7sDM5l32~)60pK#+0+8u7+RLq98I9$m6DVGowvl5i8 zdEJbyozLa)4SGMen`x(y`-C&j;nb;n8^9c1>}mhX+ILLORi!2jfbF-Q$lewnVyV}* zbCQ{#B(Pmd61DWm*ClSgNn;M)r=|N%@*Xd|OjcMO8k0k&z-ucOOq8rP{u#Cuk6%KR zV?xQ!MsM*DFT@3ajmdv{i7kAIq^`rbwq#wn{hi{(8ikR?{-QLP9cl^&-Yc3ujlJwS zB_UD`^^wNU#dxJ*E`o}`MS*a7RAG2z7qMITC`z!iWShJgS5flioo~^$3_B$*XcB|smX|aSZ@Ht#@3@EeOi(jr8D5#QbS=RPBw0*F(eNI8+#XB%Oc}tek zIw@9YaVjknc`>+GhzP09ujk++AnaV{eCfdAGF>|Be;t-v{;(8pSqX0{-b$v_(z%A?lS(5^;MZ)nN%prq|%iK%bv!jE+DHXxP;Bf z3WnZ2w^#_QDb+Z+Q{mI;N026SubI3($<2gx%a@jFfir`p+@ot}Zq=w$4FhDUlkM7# zHFGVmyIFzbx5PiT8AWC9FCpJ<5(6mL2qyb1H~+SyoxS`QDN4QQ$1X)s5o5!xW6Ad} zn=7%@`$Q!n+K%ia9D|mIE2&Jns0D}doDZUfo48A;%wHRPmLrMJqNQ|MOE}dVFWuY^ z{7193iB7EbXUvlr`=ao($rpC(d%*eCIkLZhMGJ-qP51B1dYH~+%+0w}{&V|#iq;5n z`v1uOe!zGC@7mvk_*b_^^{G?$TqaJ@H60^A8FpsWfFY&^c&(Pb2y)D$MZ*Ujip5P@ z7K(2rp7Z12+|bw}J2&)!U|Rc`H%n<3Y)4L<1aVgWW#{3lJiD^2e&Fup+RlTJKp_l6 z^@abaANWb_Yq3jpi(4t#%hQ7oXa5pS7ikYknfH!N70u+96HNBKnufFITBVZZT=uHy zm-@;Q*g_GW_jbP?WN%$cANaL-AG=e=KV6VADpgbRwzEBMPBu`&7 zkWcIZZz4MO@E=s*KbWO3`MpiwHHe*fXRqXIn7-F0Uz6$E{uH@CCGJmY-?hX)#XrIH zoyHPvM#|T6rtinjcScJ4n{TANSoZmJ@pB1`l%JUC8zYEJ-@Q2#m3&i%9Z`rgd~cc# z4`PfEj5B-_;_oG1z?uS0I>YycInqNyP}&G1Dy)XuE6vhS|waDs@E zy`~-9Sj$BKI~izB{_tkn0g?2WBC_3jv)Nc zlD{RIJSox}8x4urmEJyCWg1)r`*$f;4hXMruW0QH-fUrE7(kbJ@q-N^F===9{p3Hv zmKY1V2e!tfawPNmKi~^Uk?b{{JKph^2z9(!%OUulsPYhR@=@gvXLqAY-M*JU z=TJFOsFDEJAYk*S{BQAPmlq$20b~z+IfhsNJA9dQ07#NKgnytx$gfJgyq@iy_%}N> zPTI_op-j>g4RaT{dQ=Kg0ZVsyt0 z#;2u69B=fqRNOoEy$Cia1;>=)*7!`IIW0M0SGWHLU!c55@i9e({3GYhmtjm40zDadMxM3x6nAE$?sj*M>{e<*+*61TroQmK z`hg#ZYPZIIn)CzK6HX6k)wohcvz_$}AL$ePM(jKjPE9RO`e>YP+mFauX^~C--;iuN zl!`4tlF4hmMT?V~TAC`7qq(r&YuKVba~(F_#Cd%(^we{gM=kDHOtPd@`9a<&MyUHN zXGMp*)E*d@NrPMV z@>E`?ze}_+FPvTh1UU~gWSIz@H6Oezgvu8}nP`0#M}!&H8B@&g#gvn@~mvrO@J8@CgE#zWZGZpP1- zbsP`_-^1}@N@V(gjy;P&S{0eIATu(Vb{1xSp;)GL@ucha?MeZZb=6skOOMTJ4*V|Y zcBPoW{SH90_nDiq!qcGlA2#@nFKF<9T!TN6BLieH=w|2tGx?o5f0CPiaKgt+Jj>W3 z+&|p2bOoiK+DB+XKAr&Bbi zejo%fE6dwx&Jb=?GG+&Ybmg2Ob3qICU{#sP49^}O@_)Vy` zhrXvUuH=x)2ErweHwT0mh1Be_fQ@MdwCl}Nv)w+C3ocF1Zcto_JDeXV*{=Xj?MPwI zqyw=ZLn;j|q-lTJnANm5qiG*9H>YQJ)}r<{3nkyIPgfo;#ST6liobg#cJWB>>rukq zPMw_GCT87qB0O&emk&zQX73D_;n*5l_FD)+)3W=;{=8Q;^yYHf57i!p#e)Y^S!fl7 zrSHm`rOA^+a?4~CF5bn}l}`ojH-4vX0S zWj+rEQro|5@&6pv($`m(H4NNUPgbGcF@k?adl`U?F9rY; zfa3&9*(|_euB)aIoHl5J*`1r+%wV06-%Y!jW&U(TYwJ?=$aaP=u{#ilTA@*?vXZr% zaU&7nWY>TbHdT8hHcSI6`e|-|GSb15?1(xU>R$q0NZp#+22L zExUf0A>Xwpakp&knN>3eO&!d=wH4vo2^BMrm|8(!wL2F9pf2y1OTAIc^88(9XU((! zy8WExU*N1OTRQfa05GIN8(u!W z1t}4%jMJgRc2<5NHzEXOm98)p|FjS1p=8=jT{KbGcekFPArb#Hodd24fWSEQ=nrwe zvD+GE9R>$*ZA@vriEb>G3;yw<&Ni$`eOy@Wk-^{3NHcL5? zV*_fQp-EARa=95be_w44b5Y|Q;TpxQ0IqZ-2SxR<`R}s5$NrpofJw~_r)CfZsS_u} z-oNl|kqxJIy<{cx6uvXPOcQy9IYcBVIZ(;(t$wQg``COa zv+Wm>+ZCUINAN9l&FpG4-w_O(L%%z?LVNasL87AKE9gAPW>ntX!dODU95Xb1OAFT!nZ^P^ahphFL?0zi5bnS>Fqt;JUFTIF8h&P&d} z1@9*t((&HE7!$e%8Ag@x$DHGS)N%Kk9|^wHVbAvm>kIIlWHJ9M)!9TF9S`I5;9t!V zG-V9cIh3<0hco3=)tIRB9^<%l%kHm!+yCm5pIC>JXm!UEpL8YHx!enVB_ugny2Av+bM_AL8hkUTZ;qz_IwV zbWF5DFVg*fu4`i2-^O-Y7M%ZWnKbDiTr~o3Qp-yx^Q?nbh`-fM??A!_-Vu&}I9c?o zQ{8J~$p6!z)-X#lYFIe#Pv&TT)5ZwFFffg8pglt4{#KAj*!bTJy&;vb;WWbFr#CV- z4FxC2)su)%tlQC1)bx|k!pZbl^GwZ-&J(ixWn5{6(b|Mv`Hn@Y+4z`($o5h5FddOcE<_1gO|w2njOlO-ETUf zglDAt-53EPonH?0E!=hLrm=R}wAxYL{A)`lsi)W`^|UcsxGEA9Urx`E28N#G`g$HdNui> z9iwRNZ3B;i#tqlOwDXxf`hf$<=QUT0&prf{YTBG9Z-Fsx#L1D`ZQktvf~>OR2p8_Q zF1Q+Olq$vgJAQ=#axa?xDSoLkoXbv)qL-yj2X_t*^e}l7RBM3EnxODJs0QDf-UUM8 z)LCHpnx@A=L>p*g0%AMw!|yxaGd`ci1EE3ZO(>@|TXfztJ@otE?~Wt+{1z8S(v20_ zf|(Z_Kd@uS`?``UzNCDAK;$Ll;R|uf6K;pN{=}@1$(Q``-!j}ci-F8){Qr#1un_!q z?>ogeU~tt>?A(MRx7Q`MG?DqfYSnh{!c-LvU*;WuKxsptf~nux?j01@n{X;s!JpKv zBI^3&`_4OYt41OA8yo6BD6S>P;~cGB9C!E8?wXKIOqrPv+rD2xk}Ko=K1{o_kF5`a z5OFswC+@I4oC}@QNzBPJtZA9Rsqhb)prDxinN(>e&(gS?Nrh%&S2K0vi`_+H*C_iR zjY2b%{si+0wn#HSSfHUQyWh2y%?hIDF3gNEx-$r<`B`7RLWb=MCvT{1QPEVLV{%G< zn24*S$Xsl6AM_Gy*rJ3|bNbOWQ5#8eRC7sQDEYWv_~nXh zC7@eWqL!#Oi3Nk{1RR7$stWywPEnIrh}5rxgt}sf`lmc3ot9tdv|qJn_nFJ!8cG>n zfr@b!yMeo~CRPBHAOBE5L3wWg7;gB6e07mQ#3K^pQCF__k<^?Lv3!{M?d=g|%>U)G z#EV{{oo`VjZ(Qgi6Zo)jZ%pFRL7iEBsb&qqGn`@E8FQ3YrAQB=2yplllCI$#?6*Dm z31VA6b-!Woqa=bxpBwYx5#nkY?^Bb(gx)`_V9fe%gC>=<1{WFhVT7RV?9BoCY-5-9 zaQjj>==OoDqP5$-TR7pqyfCraYrQC-^g3l^n;cDz8`h|}%5_*b8){yUq|P7q6j;f` zUysF1K1EZbhlLixeL0xCG&U}Z`Hk%(CXmMD(+UD1J4Xv2ff##KUAI)=|4M=CvXV5W zF3Hgi$C|aAB~33!0b8kpIXFDaMUY}?&%x3%Vre%wrp|)pb;9!A)WBMQWaD+HAE{mL z&Cvnc=%96Ki})qt$Wr$@7S#I+76YujgCT^$(pCBkOs3ER%J99GyEF<>jZ>*MeXXSm zH*Xt*gi#J!6|T(?!?pr!;>3%>f3&*TppO-M=7buE9Zgjbs8JTG#rWjHg@lrIQHCL$ z&|Y+$Qrr@*G52w!ID5krgNG62SpK<3uZ!!N{@f(-1z^UuPLdtaU^ZZ(*6H{ml zi_U}0Q%@RcXA^UUy~MBdm7T-}Yx_3)tR!9BD%1}b(evJ{v1++?oAQTRE-r7@P`zO% zb!DxipgOU)ZEApn)ag4XLxdy-o#;PMZD%(9ohPVV!^BAMIlg^cA3nB$yvFv+A2i&N zc3n8$Tn%mCYa=lcd^U?Rd|Ww+b+O3Gpim*84TI!a^eG~kDy~dm{i4ZN!#j7d1tOg6 z)o6;urje3pDpVRyT~!VOhtpHLV&Mp(OXSnhI>bLLG?F?kU39o2_*_MTNI8G^?eo73q8U7|EjzdS-_uxjvLVpEvyCH@HM7?Q}v0TxUt z*RN6`7Ki2yF}(+t!662H6yEufNz|+YvoZ$7p98cYn{X{xU_u_#4+;-@krkam3@C>) z8UqPaPDpui82l@ly2*ND8A@1&t0BH{{2Dzf9Wcq;U^mcqFZ*GrdxNP<7LXwnnr935 zWWdP7C4SdEG9@(6byFjWA84|gLJ@jH-P^|eBI!8}UCgKz_WyRA;%(Vh!`cGlLAtol zCB|jpqC%g@vD6NbM_ejwkfnb$4LWG2b`WK^3DsaS*CD;9BeAtte`*-GmM)%uv8d!p z6Fs7oU|a%Mbt9Y%lS8a>iVkD|c8*DlF(gCf8M%>FxJ5mQWn@-q5nuG(vHA444>IRb zBp7Js2e69B@W*#Ckf~o4Y*|1pNc)Fh0_bH#UiS|d!X?;xIY!D5BgtQClKvrXr2QD_ z!XIfV(*1XxBMJ`YnHzl-bJR$~UMpwW!C#5tfI&PZW~GkFH@Ah9$I={Q#{z)IzJH9d z*b-rEB>uDn0Aycq$^kzPG3X*&_8RT zy|zCXPVwU7zetdRF@=CI^Bk{p`$E7;Jpy-u>F`nI-mHJAQo8u7)=zFtG81_Hlp8PF-bFIv{UKQ_pq50dA6-&eZzcRIV~r zESO5PA#W-rP27cyr#x)aSORGnHrgs?n&{ozA3>C4h(QdceJ1!XNR4djn!Q8g2~gPo z(ok%I!!&g6$J?{&0ji2I7W7I0M8Fuoz8Q}79*^3SM$=a|W7JPy8IGoZP_B4DtZZga zNTpg-JT(pezB%gBjcRrMUn?7h;ug~jq}lr48l)NWJ1r9@hVk|U&FXtE$?)^J5>`WVTR5;%M2U` zQ`$dbmNRf<4?iv6Gu~VKgN58tXtRfBJpJuH?#xEk#yHFw7xOj>a0lBZ-2EMKS#8Iq zNQt|7iTBYC>Qk*H%ocr(v?^ZW>%1bX&+9q}RLA&V3HN@=%#f)wD+q(Hfi{Mx3s5L$ zlthvvUbTc(qV@Q)$?bNK@k&|_}BhuWI}T=1176!db4UI7m#se$0INM4w4uyhv{^dMlc6P zW#36<5 zCa2yPP5()B6;0nK8med4IDj=#sB%J1J-L87z9xft3xg;~J*Jg3Z=aM)4&0>AwE*_S z=M*MhESvMM^)-H*mi!{sP*vx16fvvUrN*-5+jZ#lgFs?0@pno_hSxPmy|EnuV8XTk zYI@Z^UdZShQ{$Q&Qxm5|Qgv_#E>wJr!)=j4J7^w-aU0oeQzfy7$>>Go^g`*i~SQ)g94Z@Mg7asnmK(+^fI9M2Rsz0PQLR25YF2g+S!5C`PPmNq6Q zPH9YzYj$>>#`FwSgBj=~GuXRtisT_za!95B9vZd|9HlF@2H_Ofv9?a3k4SoKIc0@? z{9wdY!2+r}||W_e7s1{l2 zLmru%j5`-kIv-8J4xOeR6UT6;0$^}+Hj8@~*YSO2Yc=bMk__piWUxetD4kF07eq|F zqhZFCVl8)&-}nqHB;v?WBDb}OF%WC6K=Z34ApXt}I5K1*@R31(B@bKXQHlW3%)J_J zdgvKZ#EzIK2Gf_Xg^hB)?>wj4Xe8zs&in+r@K^QYOy91;q_HAzPHV9DfK{R5hZcyq z7aG0O`4uF2cC*bW_Ktqm&=2Ptja~o5^)pue7+^Y++`?VWfc!^LbmcdIUlRlx*iSK< z*!AX1ssUdQ7R>=lzjTek-PoK`Tzm6Jm!a3qD~yq+481Z3MdEF})`^B zd=<*#a;d(7nkl#0ismP4UT;h<9!AHVHQo3d-_^V6$Vh6j1_ZqQ8(s{?up)Lz zOJiA~<=kBu@i_|T8$w?P)PxBRbkxA7YmDs#71>-Mh`#QGFXc4a2=kN@$p zJG%Uq?w2}QVf@*fKWfrE0t?>-NjMJMs*n?{aU&@&&_^Q5xvo5P$+bb&%V_HAYBclM zmGM=*+D1*n2R7Ckkl&Ojor#gu1T?rcu_O5&Y8yMr|26$Xd~N?lf%tU=WM0v}%j$JB z7?ta42eD*s_1(l`$2WXt6%Sf(d9;44O0fwb&!isZ&Ep-EZyP;H&b4kD%>4Z=w;mmR z=$@o#_!3&^wxFXA{1SZ6{^s;owcdB$>G)R9W|q&5bd0s{mSSly{CANTJrJL$i!4m* z=t?jx;BPqfqiQ9_rHII^wr zRFEoz9Bf}t^hbT=Pa+E8=|92ESNfyPHv5&`nK=swjrF)Zz;zbrM>t)e)cgp>U${bvT|nqO&U zu?$)fcrq&Tv;I7qrFR(Qjc3ESm~n}gG zFVWtTGS&W3*oz#Lr5OnW!>P-wb07`Cor7!^?pr`duXQ71&CFIk=|K(;l|>z3>=E7Z zOF@6H=njXE4qufBai!CzIR7+W+?ja2!5+j-)ty)<+PeOzS3(?64 z-E7-!pTxXnmVG*qr~E(x^@koUc6bHnz%UE~{L;)fY$=+mEt-L)^1oUUEK~E**-(da z7wS;*L3Y`bx??9hkGIdtTP&MUusGcd@cWZttiU?do*hB~dg%Lk6ic3GwOnnrL~ z_x8?Qmv2(5TRyN+Q!jS6lAHFo)W>Dnafx<2`Y<=cqkY11)Fd#iQiInbq)0mFd_%Yn zPclj$Jub9ZWMrVT2&yX-K}FcqR{xEV-jj28_7jJs5WH9MJN9NC0;wlMB!YT87uBag+jFj)P_;k&73i+@XZvwbOV9}Pm3@SD0D z)7c_+bHoAVsH0pI&@np99N;pJGBQt7j`)jo@t|+Jsb}I+qkv{MR;#35_8#oufw`7I zkcVJ$jp@f+gw{^~I}hYVXff2C{tbEqkHG>7o^@Vm$i)Z+s|sodGajo!vQ?)T2dy^w zj~$VNnGO-UPg;Jy`*&n=kkUO)Ir>z8Bj}H4tvfP;iTukQ4YtT)p*`5=K6z&z5pDKA zLZ$}8JKi86mT@gwr{NVm)4v|gz$c9#}@PET|($9ugeMV@NZs?2ikT}Lh zC>v$%Xk3Pe2R|nYM9dr0l7C;ogTnqFc*;D;CNGf7>EegZ=nf0~T_`{`(O`gXuzgM< z&}byxDujc0OmK;Ry?3ueyb3|RO8VI$_vIm8Md#%?d!KChS{jY2#Q*L6IUKym^lA$U zM7RkHPdGe>g>^kXs&2Vox+#Z;1NE8J9H!VyeJ%ALW=LS-jhXM^FKSF(7cBoi*8X#U zwi#%=HWwgiYcGAt|4H!vFk{AA`+gV@)jrq(Jp3(a?fMCLiz@xC80GAj5Mzx#Y5DDD zqbn7VfNFD9%q-5Ok6k&zszqd|W&Htp4ck zTi8LE4mnwf#+AXYjzrZ}XcIm3!eMNPmarMoK6C=hm5OW2$@Qb<`lA!>Kjm#S^#>Os zS60XQ>2%TDMU&wJjp<69jhp;CC52PtOCmtOOlFM=RA;{y0VY1Q!fPv}iMTb4X$Vut zCVv1FPp%vMci+;PWp8lYz04n1IIX^)h&cX)#UibYYp+}oyGGbiYVkq--}-BCUTZxg>lwUb zVMxWSa9$YFo)JhlRuF+S80%fvo>54T2zp&X^pWP?s`%r}=4yY3hSeQVWP3}Q7P3)A zcB5*yJ~4Ay0WvE5;%1@H^(bBjh z@ML+_huFCRr2NO0vCX!H2v!srB-T)#@#!Y7VEF@Y2GMLQym)~LGJ|vgi)dgvNpL)>Gt$*7O zBUc7&{oWPWs?DR29{SP_6N9*g&)Fz@|t~m>|>U`Wkyc}9oK3ad~5sJ66 zO{8*_CM^dN2jG-3r1dM>Qy0c2Mbkfqm6}~-W|_EY47*@!xppQ*(spf*vB`CPl;5>~LXltI=0NiSGBCjh%3*grEW}i=&519{&WtqKo@c3MhoS zUJk^7QW7EAp*HaNLMnIBUoW#;e>Q{!ku(R!_A^x-9nG(?myq=WoA z+NU(82EW1H+-*qjq_#Gs|IJ?%6!!f%^>1gmwzo%N;`UM7x&9(3cop9oIfr0D6}rvV z3XV}hXJ)uAD5xuP8&l^~kVL%CfLK=0%n75d#rt@tuJyMubvgyv9iGFFP|N9)deL6U zihVn1k9)2$6-C%GKcg*Yg}YSB8Vya#7On{jKLrrNsc)N^;+#OFA+IUj7Mf%V=D!r; zF-*Z8cvcAs^IyVjCL_kPniJx*mjXD5j8FlwnuPqNo`aMHfduf`A0nO`uYAB^g~b|Uu^nfb84PUJ)oJ!3U9{Xmu=iN8e&R*$8)Y# zG3(suD>V8lFL9u2aP*|^29=s@pKXnvNOSo62;IigXM z{GmZBS7%%C65r>M%471zv11>V0n#om3(;bX?5^D3RmR?tg9`MpSI-zxo(L+-^5iJP zT~V^!n^gcCOBrdTZkIJcL^{qkB!gBvl9BoL{5J#YY9>Aa;Jp1T2ueC*38-KdF+sLK( zSizPBEU^0vg5P38nF{{lHyzlrWZr^R+wU>%w^%phHCA1-CR0jr$G|${k-)H!c@Ka@ zIzq0(9Dexs9cEVGZh0bGq2uwogKy>syBJIA7kjW$7psTuTs9+Psf%+gb#@+0y-_UH ziJ2W;xP&%2P0WAg9k<~3nsrEO`AhwFBN8_G7jZ?9F<17QcVogf<|h)EO*=|8dSM5W`nC5#cx;{A~F1r4r54Q))mC+>@}K2d4ulf;Vk zqlK#aQY{XRjAEf#zi_Ik^0d@|Z8G}EZu>Vn6`!mJG||*G@JYf@Ucvf6R=sC?wT&0+ zoiK?cO;!`JC^ZFv$_UG7!(HF5vl$|+%($Q*q($#G zfDQ``pw0e~xaSPi_@!BTEpHaW3JtSmMpwu}`kBCJvJXg4aMiPr9_A&=%B;b0G+33j zma%IUkii83`9UtZ+y{^s?(ZORfpjruwFi)Y{fYzf2tG6RDuCPtCFV@bH`?071VCFl zgKw38anNdU&?;jH${2j>gI3>HQyQ|txBK{-4t)#8!pve{qt)f`k;(wrkY zBeE=TvjE)^0+GK6dE2S0@VhKb!Cnt2>s1b@227R-yBT&{0ri68_5$h(|FSPRke*}= zHb86Uz1feF!dPfGfG+_wl`T)B1zmAt>@;`m}FN3w$B} z7VTkmlKL!^D?;?O;A6S{Q*Eahj^t}o194dru)`aXo8vJ zs4aWuc_TOy$!;4kmF5nuF~8DC?aR|@0=v-ZsS7`5HrJQ{KZI<4xsrjM)FKgTU!H20 zh2e$YYD9E{MXBcr@?Bo*TSEMqPwxVQddTt?p_FDJc^(S%1I0J!;^88!8;!{iqN%~8 z@OIKfBan=dxLZmU!MbA5>a4KQ_UQh<3*hFN`6>e5Fy3tPavc7&WVhTVnG(L__QUF* z-(42QkGzSm>YW4ZhR@nY?;E0dR&e*RoW%$Y@! ze+38KzAISUWC!D8uPd6!vEg4HN#EZ?|GI2$wy(}x+&HXY)&M_eu&km_R<DRsx#X(?eve@&#k3=tUW$;`9*8oVt&A~<;!4=U>+mF68c;97*^lIEGjkr zY&Ys{#3ejo-?$e^jm>gEq)Gue!kYm1B%rdK56<*mxVEO=0|9?j><0ZUjV${S!`eoF z+>36^6?`!SEGkjsS2_fImq|v6@XyK-5b%Bfh@i180t$=m5b%A!IB4o6-iz~HpFMV+ zlN&gi|2^NkWk8PaT@NY<0j2O|5yFWK)W0vnKd<#%tm!VSkvI;q&8%~~XB%J0H**-w zuG9a=!DiS?UI8nGPr#etC1OuCU71rfKId;Yp2dm=A2Stvillyw2`d})x?AYb23+)? zp69wpA(fwYy|f8#s-kap68uAdYVb+tABFV#i*r~ zKd0}sJCDj)JGeX3#S0tF9eUtD|KO`-4QC$B!-dU_uIhK`NBU8VamOGYQPkbr z{)5-aEbbbop5MZ6j`KU;$dFLHYj^DUfTw52_56aFB>rlCX3YN!Yx&(-BzBN6hoY(p ztOh!ql`xvmb0kdtU6L?Xjgv%y!~dj|P{v@UxT$P}l`&S@I6-r!lV@2ubMQTqGxY>m z>L6q0=8IkHhjd78H;=v{Uadc3XW3Fq%gC0Q8QFr-hSvS-;e~)Ukq}>pNd|$p#<@5K{b!Dp9^v-RfBy7SBc`|6E0#7F7S-Jn6g{(vLfx0}4#RI~f z`k+G>zHTL6@-2Ld1Ih$5S$#Lu)Uvwlb_@dk65tB7So+c*+OT>IViWzr`SW~VpK@f% zO7jpM)YPIlSgxN(?h~L=J_-HNn{BfCSz-RriC26QY_C~?(bo!pKQ4mnC|_3oH~Dg8 z(Bj4-F|cDdD+j(Zdk3GE>r=>ye?$2UUmUhmh#{pk(OHdmD#)RC0e!i?Q}ayw{-tIk zWZc8N=}*rY3G-B)-ETW7SG>R{n!^IwqKY1-7&1lz=Je~c0!CAvIfw-14>#YsvG3+J z?oSW&koW_98bNzhi_yxH*@L}3NKvI>FC2Cc2_&Z#K>PCIKL){ur0SRLEE#&>IiwmI zs3|KMo`VLm+p(&7g!%dHPCPJi2Fr#Krcr4K2&4rRD`p)bDKT2i0t&R##Z=4jCa%_O zJ5P2HyZH_0nyoXOK5`Ts-9adcN&@7To$t8@RSa^-KyIwXYHc1-kri|Y&vY4LS_5640$+Ad2}eCdfmd2-|0hAx?T zjhOS>H}J|hh<^Nrwc&m{-0wiul6xwe~TAW;Z2Qz#}xl{qUL3hClGHbcG6v5#i z1=zT#XOs;P^!>sBD>_yvb3k{8z|XWdV(n7tP%NMUziGC0bKe))@4*E98@9S~#X^ON zAw6;#s@z-`+CX(%pdL9-c(it7Z{1j;-2vk3E zs57q}{W3by1M8P@3rw073$Q3=zaYt08b~*hNW}CA?|x{pl=&oS)W>zMsX(6)?hRmHaz(yJ&9`Lb3b*D6Jmkt4fig~k9!L03tg(D{ z#6i38**{N{`-7Wi9Ala(#aW^=F<#KT7ZJkD+Cl@XeaMrTkpg?@_ZdTTq{ypg->#0x zXJn+vqsWyUvGJHyD+8f2+U&c{Ns-ZzNQM6%hT70yPvXON)oNHsQU7^Fp`?pjE%>*< z(jk=o&k>H6VXgKEQCnsKjr!G}P%6sPAKd6zc3c++?Q)hP8Fo-E@jEOV3BJ#@-vgHY z)b1R+7f0Fi;rtNAN~tjOf;<)q2}tvMn@6f`hI7AvK5xC!&gV6`Onau77J8KdH|>}; zWL|mFOoG!hOsfWKNub0|Gx|5IJ?)HspzTt)6i~pb9zn{(>VFRBR+uvakz_fyh8KSl z0~Lr<{~`FR10x>aXE%(<3VS8OerHCUHr+AeXgigNPDYr2C{2tgeyeC38`>-E(O^jn zc^m9Z4%UWDz!$Y?Dzd>Caf7`=JN|HzX+ijl3SY5Vk58$X_~XPAKQ5jL6EWNCrw=? z-Hf`OSyI_P;ra_&8|fGVn*tg_}1(c2zn4>2j3X zW}}G)N2`wB`9dw7top*vX!U36V5e19?%BhRTeUrq6xq%wX;_z-HK@UiC+Dqn-U(gb z4N~^#Rb6kOFR_=OH3$_B>&wleO%5^`A!->R0BSbtKHSAumqt>S&Wbx=xdhlw`D%lj zv=mcpjsO5f*iI~@@|&;ac$SxF;4!|rfYm1t*5G6N@HSYc;DN$dv59X0Sh`1~(G}*$ z&_g(X@R334X@2qD2F;8F0<5(mjC_XIW(+;o8GLmdJSma zxS%ru5~MCclD%vdUgLbtSMiyVB$~rvV06UTl<-dONxW( zbRDd-GNFwvuqyD_xsFSREI{%)KPH4`zL$84VWjNF>R$P=$?~R=n@s#0h!Fo5ZaAd5 zugxDJDC{9PPMG`jNoVVpm`Uq4*t2yHM^ndHKGETX%~s}kO^1rqP?Isnw;LDA0z&{{ zFUqI8)tq4tz(afrsoM`uEy!EMusZ( z6YDARmARYxGF91gd%v(%dC6m_z(1aUOe>sY`OiOGuhri|S)g)Jy#>(|m09z1Q+8ZuTxXef7qZdv&gREi+Wr4X5|&q^W|#bYCmAnDTk% ztzg-8jwO6`lO4LRGyG6xlO-I-B6RHNiNrUV7DS=u|A#CT7S6BDoq-Y6Nz2ceMIEM& zM+$2ERNyPHI}^B`rtM%v|NM0uL2_cpB@KrH<702jnk0G<#;8c2Hj-_@8*5?{DPjl zTLqFZDb!qO9$*LpCvKPUySqhAf#3I$NA^L1AY*5HpWj@Kx4B+9(sM;FX7HD^rU*0t zd{!s6=W5f{L~hXPXlNB2!op_7c^9;|X5`f__y1|W-7dv*c3PvE?){HF2^vu$FALqS z*`hsl=OfpFf0#4SZ*Dt4Au;F*8rGd!8Kqw+2P_1Ux$7>cPCg-mPdmsb2Wj`ZG%LU) zO3X&1Ox%!|JiH~Y;|^rVGp*0KHP<+oU43(;@O-^n#+`0IfJ%1m4zU`E*Cfx}KvyU+ zd%}&PyC2((SYRY=@OJB+-h;&^q@H#wuEx)4Px>m7D85!b2=ZMY%QxaOep z&8pl{7O8&;QdhcE(HN-(a2-9j=c}X1K4oo3J2_$-n@(17$-V)DmzeiH5#6J|h&3Z$ z2Rxy9Co6Kj#@T8j9^8+bsV{b_>RJc;wEbfS^}F}()ZO;Tj1Z|dyq}evzosewFw6C7 zuf^hvxGjY+DisJ)f^e4ovCogN^tXM3x? z1;OvaT;}>4&M&p;CtGPlT>l+16Hin~n9_*v96oWu8-cTsNetAYT4~SbxK?LrXkpN! ztc|t>Ccx7_-=Yp)u(69Bhh_G)@LIt`AS9g3b%d=peHqKJRb~Nr418^_rkRHiknC5CUcfxI$vrw#Fbt=M(SB0(K4nRMTzY-i{{o6K1WF(2#I`X_Y; zqzXN11_%^46;l*m8GUFTddJ|r2BdbQj<9O1uZavktbj)*@gi^9H^NDBek47#WWYN$ zntkl~QqISvwzD-YhhWqF(+%iW8;2%0c}>-fQ*CNe$-GNWkF^g?9cQjY4d8}MFL4a@ zBjcI6>{XM}K}g9<9Un>dDl_}S=MhekQ(q)KRR?Tp(>D}o_H64Gj9Zep*n`U4gkPQd zSv1~KU{)|E)DX*WrJW_rT7ZHcibN0TfnSQu5IK<9P$b2|N+?aS4qSagauxcM{~$@w zO|Z{0gE#u60zZX^speX$LCFkiGB>H3bIFA>T1mc_u$RMJ{(he+3;F{!cp$WMY>(>n zG%)c)-HDdJOk79=s<*wV3xrOhdruc5g6uvu$-0r8)lLo_=i89)+$J!Og6-xphRW|u zGu5fd1!fb<7mFgsq$HX?r$|U-2=lzeOXP5U|MnK!_vJmh=K1ZUhV$=`bissl!Qyg_ zsbb*8nq2-xF8_Mv*O{K6(}N*OI{kh(*J-r^^-r&$)0d&&nU8!8lwEJR3Kpw^+iZgk zWVY*THVCm}w~q-2E|m9CPlcBDnPB+Dtdkf9weJThfR`h19GdnI(c*W81sc z#x={K|5mSYjml41q&9-Jw3UCg=_guAk{Wcz6mdY3IA=}nE>cV%aKSBKy2iGWO;phR zZ#yhke5v=;kYYO-9;n(+U=!MF)F~`QMT3b7tUI?Ey_%0=r04lmgGs)?x{;d(hN-%8 zk=H1_O6f&b%$ad6J=V*mA-D3(NS9VOu_krNND$i7?2SfB>AK4V1P!9cr>|LU=4!(& zzPUX%yf%F)x9;8OHWB4Kw5-j-QGYZgN;&6Og2VvKP9HdLgT1Vl$3li^a-ic814-#3 zAU98>2cF(NBZn1A?vZ1+w^Ms#dwrofcEyJFmLXcNXyH};qNT};Rl(J^f+|sOBr8Aa zo|5bs6G;v!_Lq?(tACl)R;SSwlN?D8{u7kN`Mizh=;I*nP zyzoN})-~(=9if>sv3skIYj_?TJlC6B2X7WpvS{}jpMuCZxL-sl4ge}Bv+L#?i(n3g z<*>9EH~SFX(PNS$foSsc&Ce2O1^Ql_Dkz(cYbX#|h5XLPcMu_H$;)uMfOM9=D}T0G z^9a*`IrE7f(&I<4avg|Y&^B%+=X_ROk?LDQ85sro*Y;f(={(AX!We~sxss7r2E}bt z&xfD4Sx!ax;fwZ#gA%a`;ijcS>%A0dcSJH$Y}dS8xIphD{*wH4fU28olx+H`f4x&O1=^=@+Q{FU5f#r3VNUbh8=s3LfL?BFc_#9wVtB*~@`?a6gy z>l$AX!xam0WS%i%tJ^@s(axVxyP*s|Yf_g~)Xac=Be|!)`m` zUrdh7|Dqt0zpg6L?j@JGJQ(vHba^l(1$laed0upRu=43>7xfV0KFG6om}jQTQ{W}e zc6k6R$g_W#=Wds$&`bQ(9xIA4r!{+jI$>cdK%wuEV$G6};toZFI%;3auScDvRkofa#pc>Gv=-B5Er%MvndXA@r8bvA%y`Y1E!o5lq!5Fy`5%P&|x_ z1$n6YylNqu^Ujf^WX%dwL&d}MFQdA)m+d+jO(&=Jd#GL64kX(PVw|@70zK?S=>%;r zg#20kqNcN~J+%5o$)C3Svfss4ZB5yCTo3d7I;yn%>+X*7C0~N~B7GkfzT3wA5?;gh z)q8&+31$S!iU|EZr1_i~B;%B?mHSLM%pNyExwx-^bQpe--P^fdyBNcpP|sVctqFzS zaxypxP6*r)WSy<7$?DOj^*G7ux}I8xTZ?y%9jE+!I|}NTxw2nq@BPrhmpUC*BEDhQ zVE-a}-oKVmbq?5VEIyh9R(y4FZR+s`J*M`nMx&JM{|m1=lL3PV!oOJ=vcmsqUXkg6 z?ElLA7OfV(Wnsc$TV-V-UYi_W{<20YN&F#ZWpinzCIb8xmzb#doY=LgA&C2xk^FtM z?cJCADtF{h92YxCPO4|9x%i^uP$FmT(P#xCq_&SUe%`C>ap>A4HX2kF5T=Pqa=Hjx zWoFzWEzOpU{v4EJ9RA(jMbvEZcqrajWFdQd+qB&H3EbUM?Eh=zW~ifqc5SS&>SS=A z*>|JPs+EcOT`(Dmr1tJ0(y$Q5Cl^Wh_EAAEaR&H^riNzmI);QCyz0C5%lZVE{o4HO z;Vfp4<|`;dc=QDU9BU_@j^fg>SDnLr7s3r7F4sI5(Cx;d_3U6wqAc;y$Dz=9i4rm+ zmP=6W@rDFx>0cK`yxK2QH#M?=W(7d%F=YeZNpjr^p$jW51e3<)d$&yx?W%92fxI;QNkPc8BcSlSpjVkPp2eZdr8cFu#pvdr% z>7G$;{(D1A7|maFQo7(JA+I_$sK8vyT2xx^K>CnumYulNn!g$Nu^&hwq6hKLy?o;) z=Y$F(9YOH|W-YXcedXR7Zm08 zPeDcz|EysvWi7L=8;8Pc0}eqLoAEv-UVg|*$sdUP_&;?#?UqCayW z;3S*KA1s|VUA+~moiI#FZdEkd zRlmhaf-N_wf=KFt@aUGCh;1B^ed*)wj&4=uS(pEHcCTxdIZUQ^DY}czUoo0#b8Q66 z4NYnC^I|b<%`Qde&5tq*k3H6{wj?omN@o3mM_6t0(cu1(Tgx66Sls`seDre+ui~9z zz0}(mRU2HY>HN(9<_#^l4{hO};F4 zyy<;;x8nzPimV{DPE~S)liNUrX}jObRP-W*fzvWaWVK9Gea0uFW&RzZ;IzybPrKJL z*SS1snIl}D-DsKbyF6%_N4Pw@(K4mS(iU2#W;oi~jg}d}gO>Rj2qe#Lv`n`{w1tVH z+2z@dmO0I}g_bG%5%qMkDX2z{k=%6_n*i>zJ*(|BIO}+_&=3gI4acF$nkSBhHLVdG>MyuK~3!s z>}dBpb;w_BSI{}--TJM{yh~mYN^L#|nH?{2S33;dffEkgoZ*B=f&xL_X@8*|e>w%6 zo@h-gZ4X!5Nb5QJ<~&#~SKqYyMUK8X&+4C9eRG~RNV587^*l{|{!qH<+Oa+M56re} z_0L1Y?_A?EsCu5&?DH4+dy>pe^8Qz1==8vUVF(VEmBAPcJ`@ZucYZZdkdD)q#iw16n=O4a}O(Kf)F~qTNRg7E-Sb7ByZewk-jrsXAN0j?4K9j=L(j4pS8iV;UGvQT-uc! z0;3{7%ef!e&N3JO?O|_6NGu1-&?^G1u*Y|O^YDPwxOt5~1J9Br4XPFa_b|U!WJRc^ z-bxV(FN&7da>=4aANQ!)5&a5XuT!f+fwF~AlRA|0^n$=V(iGA{IaFWiVbtoX?VnfJ8fI3 zwvhglBj7+f1P2P4graIJgI=Kg4DYg2eo_>y{^>`d1q$+k_{GZ+Sf7G1BEgax*8 zvp4l)TW2WB%*}5~o+4;X**%wH@3 zUgJ+K=)t^$QTx5rh$1dpeUp9Pl4xHiD540YWz-a*76E1U7^~j@)lF6eIeeI4aK$!& zk|L#@Q>8uU1~N)cU%R!hoxt1-;fB-y3ks0n0{!=VV32U5K7Q$>S&)(n2V; zErqweDEZG<=Qk($f8*C(@_ddmh5M4C8|WF*@n5&xQ0Q;T)@Ez*#{*ITC!1t`CrW4a zwZhrt$B&)~F_6aME$WkaYtu%AMjrrxY=rG8DJ~uSvLg)~NKS+Tw}oiY&U=Mf@wt`mGICvdrG|TH|F@ z=wHD*-+T*Sx8-ph3AxDuwN#rQXy>m13hznYpM|fqvkx-9)n0VOqR+ zZzq2>`0|#Bb`DtN1jj<&bhb+w*3ZSJ@G9(>%lC?J@YK(B+6LrA@*Rs?gqkQ)Q9t(o`10v3jpMNd1Y3}4TY}{YS+MkQj2#>(X^!FOa z&^3QC{HXbVBXpW%n9W<@+G+*a_0FiX6tv%7!<0I?2n$Ltv*i|6J~)GaGC#Aas_T=3 zxRrsOST<&Sf?9#}ybJtUOG5u;7cGr-04~(%^932FUtFhgEOR$OMN-dODM!1CxG0@X z++9p%VCBe}8~XAC*5%A!r0cw^nDVeuDL!N4t7M9#o>2ulCA?CWv0*6Uh|~`wskurw z!_EeoEpa{T&+XCgrwxKWLFWpxoug0_ndJ87Rm<IozU%ke-r032gzqvrqctu$EImQ`9)}f&8STI%^YOh)QbToA{@_ba4 z=6Zg7g|PtzkA2ISX;Ehmc%_5?we?q*|D26Bx;rGZkw{_TQ*tVc*hrEE$Qt=e;Oji$ zq@P_V%`g=KQ5l#!lmu0ru&Ro;6*LTf`kTI5Pz?HE-3TP;FTU)OSDU{LG3ZT|y#|Ozkrb(XS6Va|pXS-b zfya|L2d$P$SD1%jakcf!>+(46MM|u&y5Y3?PSn@a7H*MDJ*SKG)#>w8sIp}OTvPb1 zuc`r9n=?T9G4HlkQ!62&c(m>2+GeRt^~DIQlB{b)Y*IjqSXiH-m>t<;F=>W(TxLjt zgZF}Y$|8+nNZG8*%w{Tf7&a&W7Ym)-rV}=A=e{~Wo z`_1J8HdeFp6)EvMPQTIQFsrMM=HVK1(0|m0x@)*q#`681XG#v#pU%608n7|iGEG_? zfBEJc46$VHHavMunST^@ftU?nWX0_ny|y!5*owr86b3t)+A zvmYfpf~{Di8qT{F{iN65=}KW z@d9O7Urlv#2#py zlbufnEC+5HNy?eqocJ$|2L{;sd!wlfN~}>_u9(^U)v3CX(u+pO))QEb>j|)BOS$`u zT^4q4;F*u!2l*)H#pbMRrV47bJ4KOnTvmE%Cner(y0M2AM-EtClRl=Zdj1!kYdfPy zF;5(pZ9jd?@5#o5LY+F%w*;**hL?3`xDvy%7A2dbA$)mb2+ilAeL}{uvH3ThyB5GwLkb_YEayKhDo5~ z_TVX$)b^fto1|)OdafNhZs?JZ&|LkaYtz^xl&pH}ZS4^z=X*`3lG%Im17vA5zN0+W z6N?QSLf)-62Gz-(ljA+A%u5^vL@>(yPl#uHS!uf0nNY%eMN}QlU&0pFo@O{;L9I=H zqcq-K5jGD{<3Bb-U&MoPlD4l}4rt__3@YNfo))jvKv z#T2Z{+w}Gc!$;oqE9CQ;pD;t|a+NR4$(Rd-l|IytT5J)~xJg}Lrh63@6oaqg-QQ}f zvHWmMnJv8v3r){R{>Nr&i#iZH5dqWF|3#S3dy;iAjo56O5JC26n^XC`MlBWngKh2x z-~{!9uLm$w14x!=gL#8dO&6SGweJ|E$#f zn)hULv>WH6?DlAS;B_D}v|XORXNbyvG&*)hx**DSA2D>hih|6Mstm8cPf?{E--Cg1 z_C_*7m6E7!z9N3j_<8mu2Z{?~ep~D~_G8gqV*MgXBzN+J2(I5r9XL1(Th)!F=FzT5 z1LEsJG03YS9B()eg{n#>@ATkK&v(fS??b{tWKIQ{(61U`SL@we_{l6NBFP<|i;8Ti ztUNm_k~$gl`Zj_*(NIgI^NppEzDpuWz0vHEYBo-@YV$nBpUeai6ecvB@bo#@xZjBp_UiOf`_Y>s4tf}p^$X9cmS@RobdIy(^qkomw;A>0be&vFO(^wV z?h-fs^ZEA9$g6tJ*UAfRS>$jWUXy2mX&UUS(bl{xFQ}e&fmG*#ykd=q z!`COK>?M(t);+^m{theUF3i}`@s;`BtfJW7r=(+f?ddZ%HEab>4O>cM-I_dmzT)7>3 zXxTGlnemL0apTDa`LQ3%T6mPQMbpnWXr!frv}QF39d`gec@5>&(b}52eUv-AIoDM? zBbvHhT9gG^^M=f2HI`hThenw7;>4@zA*~l6wXTuQ4{ZjL##ico6iI#{ldINcZu`FO0+3mrJ?G3K;4fdu4mYu$dshd% zBK2z3?iPig+jZgM78`G2uSnDp(X61uC|UBkT_=grLj^p+Sod8R&m4D!|UF$sTi)R=UTa1xwNiz zXyTQ+tA-|)$JqL&m7%(_$2wSuUW?#p_FxLQYjsVmo7Nu4>Y)I-T%TmbNp=>mcEI!j z4%500b>R%ut9*BTvHvSZ)m$-KOE%7d-0IfBh~xT&IqTm@YP#qf;S|Wj%3Jh4@nl$# zWht9w;fjfEE1tC!g!X#h_#dkST+a_v7pCMq^M|fXT}(YJ=<3!LEE{_q{zu{qhOm;zPI5@5Nki4w4rkRQTXtS$pvrs=k7q;8?d)l1^ zi%g?`LAx+ub8NP2DQoYr-K_kL?ehU0`kU^3?{cQS>jS){3+|-8sgcyQ-1^>#R5l6p z2|tT;Zn{r>IN>&t*7$y8Y}I?Z7yU1=jobS7q|*$cLlN_9bK80=hjLM!?tRHs7QH_J zg0Pz>bqUbhwjgKx+W%AmX=V9cT`0Cfd#yLWE9zZi^UXc%q!o-WK7Dz0*oCJTQ%)#Z z$?3?9xX^qBm1h$o={XJRM&%}Lzqv8gj;`+#z3K1rpp~R`B8@1Op)qyOp&G<*EY6Fu znkxL|N^$;;C3E)Go|>x|P3RT_B*@54@ZZL1q6;-x8Yqe*_ z1c4Qf_b~PxG5eN6&|VJ`1N^0X?hBufU+VR6^SOKX;uqU|@SnT?1}rwvbP(U+(M)-v z%33!g=_5ycBDBnFC7ZR+&9#)pfj|}H55u2mNq;=H+J`Xf443#pkeFj!*n|OotS=$-aBJMEqh4KRPVy05OGu>cbIOlJ}|TsT0xQ4 z*USNuk{r>&+Es&ePI4(4HpK|#tZ{aXR@qfb8lfb;jnUgU`^LjH;X}C|%+V)lQJ-8` z%eq86=tcEsbLWlJATA5Kv}}yDmKQBpd3Df_&Y{38c87WDCMpQT@z*VyC|QKOG?xh-bn zqMJYcV<&q)t3Xy3Q&pZ`lmF?*FdxEv#pJEj*CP%Sgjv#)?VpT-kb8tcQjIWuoUCqLp1I-Zu7GWs3b9J zhV$QT*gBYt;Pao6^40cEMxI1cu5a27oc5L=cL~)mX-XKAkKqE74C?-J6tT+10zTp#M@}c&&xYwU zBGcBwyP(q_kFEBBI%Ip8VJ{Bc5D4LGI!K&xNF15@U!g#1-}qJzY2B=WtK6Zn9x}#` z{-0H8Z2`IM0t zLjiQ57awCWHbVr+S%;o#qViKL?du~?V0fXR_U5fAo8Jl%i)O|l6kc>4S33_=E#nI# zmFp+Y4*H1w|8GM7q4#}Ax5lVOLX^HEMP=~nhjMy1=Ti5r-hF!`{N^8GN4tTq!p<2v z)eLu89}BYzN&fo`82&bIrmQaX?)jLT1gEL^Zd(wyMMip)1oIhw&_ts-Rx1Ik+oh&j zA#uV~O_g3;{-Tl8olEs2-j_eC<^5#J=1cc%Knyfx_}}gY!v8%Z=_yvft6Y2?zVZIV zVQ~5!n}X~6w7)X=aJx=NqV2BZPWza;%OWNGAj4o57yj3lrK?14MV85e9#p?rM0NgkjI5dQxX9zk>p#eX zB(0$(t`_wda;MtUAD`5w{`@a&1MYl^8^ieOaUJ+`H2V?LrFzUPt{WGL-&_Pri52&) zmzbs|xb#u8K18fP!~$^;2Y|RqgL27pJTW6JJ`Kv=40u zWax)_OY*!%1tGQb7q>&ebfYttk)-h&*FlBgVO+<_I$`@UoZRdSzY=?dSW!cMSY>0` z%FzlcAsq9}?>EZ$nOywy3%w?7Way4LqDhUapw6mjx~@MZ%ZDeo;I3bNmhR9i zsy@??-@@ zKkdd1dsMMysJXl|7L74}H^zt3gHkR-!m+5g?wv#;-0UP5Ft#z*Y={u7rF=MwR#DkCv(7)vX^3MtmpDA65FjLFe$4DUBrGj&z&vCGJp;$_24shTK;aUs^C=jblN7 znA~f0-&$ta5>cS?C%JU95JQFp*|qK-)n5tAxb>%d|B?$-nTSq3r%Rr_M)e1qwzd1G z@HxN|+Kv!n4rZE=VskUS$gXe0ks>kBZ|@RI0{&C{_}VpeH?7`del)Yg{^{$QX0+;+ zf4RCA>@3^WO6q1zVY%MpWWeMl+--$|%m%ikQ3CL}U2GFKD6y49!aK>;cFK|neCJK= zji{;3-{DQ|X=RRl2|DR1UAWJ?_!4XvsOjF`Yk@C;i$!Ez2|g-RFUFTtw@j1FJ8>ZqEhEk?E z)x$jxdBgKJL@PIp-;)iG!PJIX;4fq+$(#PDt;B}Y`W2;XlUJ66Q2=HDiY)ile__?V z(QYQ_^{2ejFGaUr@7-K@^hBI)bPONgfFLRWqg}Wi2V`$wG#4%KiWEb#zjE(EZkw!> zD)ZxSwX`|GqE@b<=DnxY14;}}Pb(3O>1pMlWO(|)YxrSnA9?x(o)?BUtuNWKsF934 zzpT{Y@B-mfCl?S$iK5u)BxRA7GO%UKPeRF$Z4v*Jx^%_yP|D$&%`%1=DP26yUNR zkd46BpH{jK^mO51Mkkt_R;&`KY5(D8CgMXPJevBAs!N?xzHvS>Ng5_CsOr?sh+Lfa z8dWMX<%UuxT|3#gn}fG+X=utP5~|$Mr{`7f`3s(PSz^*Q=F7L+@~JuGA$G#%z@7~B z17UmkQwtwuz&$)&&cATf57?vDi4 z8S&Om=v@9}M4QdWRRcla7>E*3QXRkT1%5hN+P#e@<8#-2b?P@74yMsP8Os_TOTC1~ zIGVamrL?+6$zj2|!6r^CRU%~8^gAB3ZL&V%{iHb(ESdE|_rLPt6@6H`-n$UCekZmM z{$G$N4A=e+nHtvsr&S0xnO|5{Lqyp4LyL9v6YS%)$^QNgwl@u+8bBr?2|=QLLEbes zAi(`bE5*T!gr4pU*Owl+gW{dx>o;Rxi%*h{pd&tk^f^@{778CEPvbOsk&1(!P$nnJ zGWtX$IlRPID8A62Cp8ofBeT3OTs5Og{5t^0jZ^i;VWdHzAX+wsBt zj>uaeuJzBO6jW~qqPebnI1sV97W?bH;=&&+!5R5ku#p4Ld?7jVwjXcJXBrf?Us>;s ze#K8J8|$+r8lA}7U)k?V^nD56oBa{)d%EyFZMOr4KNz5#U&aK8)e*nH1E9>bKWso~ z78l;XnD&p!ZQt47HfmWkV57pH658@Tdoq$~tH??nYtShulewi7S*l$II4Z(7Z(ov= zn2?gI_`v@CzPFZDDZMY5a&+@V*=BfTK(p7kXPNo+qZ`_T9b#E}&f|5gceQGjb>w`M z$MgebPl05<@_|~Zt<>vVOJL=zIQXTT0awh?{A7MeSuXK~keN3ZC}j^8S_st$4v-k2!U!E{zHTS#}JS?>0&yva?soR7fQ#E-d%nN-3VAAh~;Z>KIWL*CCx z4fUwmwRS5RXLhc;SV8esrxVb1C#wzB9Y|;VK?BJ=`H09ACzU53>?Crm%t_-|A0#m~ ztID=w$3MugAVt6~RTpk88%G8wz|tg`@qCz~_!Cb^;}i6d&+ zZzZPLcmo^}b7sL;L*B-RDbHjge#x0k?7mGpF4BR}gTe6U+;p;9V$;dC^CL+_8rb9w3 zB~n!CRPg!ab2H*+&2~myda7o``I-?ab!VFLoDjSRX#92b)$Q-E9$lM67kl;6+LTidq}4^(){P_w;R|8y z^_;C1_2F*7iT4;!nHfy0aN)6*MGVj7de%dK`;c7F9xJQY|2p->KWr12B);zF{#-bX zWX$|^g%}J*FEk(h&U)o!=>Z$nXf@6n*Fta%Ak_*K)ZSNeL@YZUSdMl9Ygd@0y;hh} zsL3*12!g<+BY@yMAjsK2RQt8br68x*q3WE>3LuBw`HsjzAx1!38 z5Yzr_Swr?mXTtO<^q^eSf}_hgUGRN4ntgwcJ&SEi_{_DceuJGvuBFG-2PL30VOm&vLVgekj?F5>jCa9)H z*pkn_2+7?esLxLAOTTcNd+$lRus#^y8&wXmm*Y=>!9r0IYESsvGVtNW|G*1}m6!6u zjqAob9;cNdT?dPNjMzk}HV0g~%|=ukfuz%^p~OEVY14(B7qK2rQkL~_`&}Ej7BdfCur}M|6D8zEJuDv39KbWaM+TMxe1pgy`WZ8XVnLahVutOJE=Ou=?7%7afMtK%@a73@VzwruKOQUyzt{sGdjL$lT7Dgn@Quomda^lVh0u1AA+} zOI;i9oFByJ&;~G?;n(J9I4@8e^;*U&2${6PSpyFJrK|yHhU@~{h$O5q`25wUNcj%d zfMQt#+Q;Tt14>QFXR-#|WrrAsAWL!KH5@^|hK zm0pSM9ZB72*Gm0mE5)h2?i8!yt}w@;g1M9t^6EKNC#$v4AtD3PrGd&Y;}tNvDH1jg zy`a=f94}?yrtEj~?w{*AT)2{-XD<)p&Y&mfSbmItzzrF&m9+s?j|__6yV#8#Te zeAsS^>9=1V0jh99e&))YLH=9>t59I?g_I z>FB>Sb!O)KQ^EIaci2xky$YUAom_!#8M~~yq2l1WGZYf#1@h)i7&+jbwgaUn;0xZ1 z&DMisXE$s;U;A#_8NtuP!$0d&y)Y$KF1_xX(EpQtS@xTQOh2%t)7Ndn?XzIwXXME^ z)P(t!Rr|Stu~4UHv>lIVM&vRlNdi|%0!L!UX+bnX3!*VzU*-d^?*nBG0PFRA)E>h1 z`nrSNUf*Z!I?C(&Vp%iaJ4^$(x<%57vR2XwjS@+&ocBZfX!(X&ni-&o1ZK?wsWMho zHIo@7iG6IBf!1JmZ0d>vL&`#P;9Wb-kCOj3Mzos*zQrh-z6y;~J}%|8sjJYZ1{UEy z+=5T0+B;brYBcxt&d{2@|0$-a|FPl@70TtvFhAKg3WGK{n#6?gwRsK~@6=fZ2&}Vpg0upazP9g|k@(ihxbYTGJVO&y zRHwz*wA(LQ`Gz-jEj5v%(_EXq=_`4|j$=N$T{GU0;w3emOTe4|o|O*RWl}?WvL^VW z|ENuMPi}zV$$s9MaRDqxyQ7n~;sU`cYOt5oyL(Bd{;5 z=sh?@uDU{IU2zd6=2KiZB^mJ=na!<#~x}P0{I^vcts3OpM5nNRp-3eN-Q;)7z>dmn^r}2dLJ2mdOVh|KyDe zJA3yu6Qi^fk+wMn(jfApOD10j45#ZHib$a%lG1trSL3aw@^&4|RFtcxKMH&bjM0Ik zN?e&Hk>B02VSY*zYN~tCfvKvBEkMC5{|K2%6r>rRpn);w5%PI2pI>%Z!!}}iZl~t- zka>gl_om5TIz8ke9;e%Vr?z4A#2-Ma=qJ9paN@ZkwSEltq1Jm@fdO9z55jPNbH^Q` zed5G5*@s+L3L9*!yMT%>s?QM-cD{Rt_{R3IqK0()BO21W+uU$=QUB@Vu(#ZBN<{ca zK#7_4a|qe?XIPY4A3-<&hv_37#6-Fm#QvGKSJqCdp%&8F5-3L4^>M~aaGl&oimKWB zH~3v4RIIIXm-hZjdtf3R)SEdM6SkXr+J3(>`2L~TDvhgGB#99#`Bqz#`Dt356rS%* zUx-lO;HXr`4|G_5RR=!8AJ<$69+2T@A|+~QAdnI(%&~9U^y4F`Uc@-udg;XeQKp&t z7cK=~eV2_*R#R9LPtFMhe4||aOlD1sk2;B?;jUY=SRu8&X>Pw&vk_mj^DXdNAen|N z#IU@8mV9rZm5{hrWbmC!StHoNofO$v;Ovh(zkqOSn z{$bI(r{H|UtV#*a20DwYY#<%hz6FZr%VQuU(|*S%-;<>Hm9Nb0JCaN9D(itCon zFm&G7|;gtu`2r*2_7-OGN&#=0mM66 z3aAbrHPAj2&ZHvzLEP0YlS<43OKrS`fzL=CA*2o=7#_);Pu4FCdS;#JSX1_4#>lbf zW%Zry8aVM0)5vL69e7EL16D(qa8Rsbz;cUE@8w>uCS&6{=_aK~F$#7*^} zLeK6cN76&KBM8eT9yOeK8-evr_~2CaK0dX z?hei>bI&vfX8_}GS{#g52}WCQz~=`#J~=yp@oQV7T_MQk({8~_F0AXSBngq{^kG)tqTS~(|(*3c2~e@rc5PK%>c(1n>M21$pj9~-Z~BCoD+Y)x|96+91u z%7#;!-Ur!G9zmCX|7R;2F8M|^UB759dD^YtkLlmY7CT}9vz};)8EbXLFI@Z-go_GY#H)QMwht(y=2|xE@JOl9c4~4Jo-gL2NjAX8_z0^PdA%e*H`^DJ ziEYDU?nS#nTP)728zc>DB;2pxK4>&icAUg|Zsy4@R_g|2@s8HeU|UAwYt27bl}`S> z+PnTq#>35r^Gt1`qx}0H_qRa(V{`V&@9pmtd?h;e_v)K=>2J@Vzcte4a{7DeVXnVN z-0J!(`SQQ+@9hul(%&EwarUDhjHos*sf z>waNs7Px-ibXTUIHCit{P^NyaFqbCPPdAnDS_s>9v^22tCYD_D>VOx_c;W z_P_7niu=NL)xW1Fcknl~GFZWfB!)Qzao!VscQyI#M)H1In>?n>e9P7Inn*+8+hSHu zRAXL~T%BvvxaTEz$PMqtX4lbY?g%^THQMt|^y;mHUGMIlz6CnqLfJ%_6eIIIWmMHg zw)gn#9b?aCb({mtwYeayz)8_u6o9awKp@0E&2OKl=2w_wGR?;@{8<|C67v4i$CCp% zJm83=E~pY9Qp>bu)F|(u2&xi40X7cH>uXAw!q!L9j0$toHo>rsCk z%RD()ce=J4w`QztTw^{YdoOGu%Mz!+6|0PYB5tATNw&eELA>3YxSMbwL4{p1)`a@i-D0a6IdC$k{ry(j$b!g zv%+^&`rd3C)+2 z!^6=-dT0UXLdVa~od4unGo6kNYF~2Q7rd#hVaj*i2euh=8Ev%P@91T~a_c$YcDs4& z#$D_eRximO-OY(Np>w<6fH96(O)fF97d5jjEQlPXu;!p`xlYk!II|Oz zEn{DariXQ@tuzxKV34{`m_kcu)6$$CRH7cFF+yr^E<;|O)Ns?$?cKdbnTDfW2E+-` zWEs&CmRR|hKJrJ=zE}xV63cj7aBp-JvjC=nl4$(95-)KfbSw{5Q-=u{@~pg|sO}@8 zXkgy1%QJZ|D@aP+>$tOD$vEz@ECT7L3pmy_t~fQir$S{U4)la(oO3prGiJ*-c883# z3ccYqb+_L(nVEc`BfUn^5n)=Hk0DKYj@GcoCu0O}Eay?5{tdH|)ITqVlh?_td7EQi zG<8lz!%dy&ZsK6N9^cljHdTiA)vc`XqN#~8@g4twodTX<3*5hw#%Btv3 zjcz$-rcHbYu7{@*Wf2mI2jeA{@2P~p+Id#QleioeK=&efjX&ZEpwqt!W*1m#{hz$X zMoNTJu%@D)aL(B@-Qx!R8BQ&_(ic)XQ*myK57WZ|%WYday`Bn}^2vL5k3vwKscdJbwvB1{&Fd1-Dm`QOd6L(xMZ`6dnrbI%b zrSW0D=#Q_&PP>mMvwEc)=g)Abm1~wlK;khR`@99l@1gya-J$NCZj14_#nMtio zHECQ*tjtQCUI9yV_NJW+b{Wrwzm@!XD;OfY7|gYp9(9t3XRq;F7&%3iJ&=5jQReR) z$wU<4-j0hS_cO@kv_vt$miHQUIb_%`Yi=_n*oRG=Thpkws)Wu~&tKV@Me06=Eu7_a zL&#mrH!pr9Zc4^VXS zG>EpH;NQt1rD6rT#%9EjVxCK*ho9U(zU6RUOI|pUT4LSeTaIMwD&9P(sdLK^yRD2# zs-$H|0Spt~z8Q@-K1}9(6MIgbyt+bY@w?K&aQ;hO(DU%~%X(IKzM!Z&b!EZfN0e1} zz7lfYh@VL@p@hLcf@gpPPqRjXy(&!h?AQ%>$9z3YH}}jMS$29g;a)g*CTV*6US#7P z)_sU~o=TBlda`z$_z`9K+&<8gC@rNxrh(UQH~?9cYCaOZw(`}|>s}T|!7=r8p9P}Z z41VQNo5gQU)5x+zOzQ*@?8GV%{rQ9PpV<`cJh@_aovo+$N@$_BFD^CX32x1lX;E&` zY`b(wfYapV1=hwT#6w`kHBI}l>6F21pJ$!$g2pC+)qt?Q#tL5i`W!slz&XMI2sz(t z9LZCvXPH8~NA(CA2r?Mo3>JS2eDTdkdWolmv^j(6KUgZ(sJ>)}mb^-|N7XcD)f&Si z$}+>q__-l-L#Sh9+4;r^&o}5iQ~6aN1Lbn+%K07;t=-h!0chdKRL_NkIZ^+q*I>6> z-!>5&!QhtP_sz5TcIR&;&05K*`Qu=?%~AZv?IWbGc!?hLNsOT^QEvMX`-Ckxyo-B6 z)(OWy%z^CI5&J$I3umR%la5(M&!4b4l>fox(A)LzwvU`NI-Bnq>hH$xXr{lq|5In_ z!u5tFO^aqnu3*0Ga9|8B!pal*hNF?qainroQVnsi?Bq1mwy!zMbO#3ibv8~q$Yr-_ z{#DR>NotGUh|v2MlA3@84!wsz;MQ(S$&xwYJmE)Rb|xuIBOzuVlza!X$|%fA>I-kG zJH)A;!#N=PEql~iqTkQU#n0R#iue+rZhozvBjFQbz#>X0Qlif-&z#B_w7c(0^h@~e z>MMhe&BedAGVqk&xem6Hg)J>DPDK>@vxBPyHSp>ZMZ`Z#A=%3IaEeH8= ztsRmM?Q4aXY5yG8K4(yx8@BdSj2?yFBN|!1*tfW{0l+tw4@vM6=TI`pka(wVH2^&K zn+yPF1_0c@%>jUm-AJ<6=xM1n&e64`ck3V1mjqjIGVk!^1Rsi6x)THxnArn z#(r#k5}OiZyyr&^8k-z-g;pBv?SemY$S6SB$_-;@l8r-)vGZi^CYVk1@N@b{^Uo=- zo>FUXqO4k9?OpA#UhVBgfFBl@1hi0I+`A9<>(?{LmUCRaL#cN&^{(cXJA8@jQMW%< z%VHbclqi;SuI3o(J3w->>h@?7Uy){~BNe0apOWL4`+t;6`Z! z8%CC{{rA6>qzlm+;ZBzXVJ5g@6qSm}F2O@>-)2@V%*vneYUa{iNBRC$9XCPGUV^WgO$vU5*D9v46zD;(=p{ENJgkvB?&Bq{%S z=y!CR9NTWUXxWz>P(pI6YW+DmP3$r&>@EN(ajArKAnYWk^(R)6eAb_yl|_HPZomkz z{@!htJTi`2|Kc*s53X(BTZUiAZHZn>(-&V!Ar>w7ee za2{04->X~rr@FBm0Kq`wr{EFkKab=T7ET5W1D5;0=SMdrwkZ1NA4yasSg<1Z|^Uv*b@ z(Ee9*`(q$5p!szUo`pC-+OC@4{*o=8P+xQQyMMWDOMAd`yRPs|_wGzFXIo{vAZu8~ zhF4&>s_jY>5sUx-o%WudUW{d6ck>c^^HQ50hfS3u{HzfcY61MzHX{BDL+otbdpe>0kuTvDXqN(wb@&>}b=( znHF&K+@-kK4+Tsr`*Wr;N9Ec@H@(KnbX(OiUd^r^OBmKi>R@dFcH5{B`Cc^n7F%ds z@G7xQqZ&3N6D@Mnnp|JKM1P+BtNDj~ZV0vg;rbbr`}RA(;So+>bep{uNcPk9BFdxxHWAH<7+;)8q2np3d-72=c7y#5%p7LUs4} z6X-Ti_EXz5QF)escJ6B5(8)hux2>(d;9T}WQ9#sp5c37TSTj_+63EnB|tmys#*ot>OM zmx}@V3Nh({Q|4z5z|19u^Dj?vx}~Q+T8Jhu7uH;T*6Dm#ubFh=18GE5BRBZ$&Q~VZ z!<)qjZqq$S!`Z+r0p`G&R(`i;*hDbJ@1DPA=aG&3yc&ZWg~6q=erCuW0O& zR|Nq(c)gkr{FA{slns(jxM1N=_jSJ!l1@{a$53>t6#19T6%_vSoraInb?Mh%Fx z;A;R!uN7O~I%X$-2StC|y_dsJZv8J9=bR5{fR=Hg-xe~(9}?o@&tfN;p|D(*iC+<+ zz{FkK>iDUz6)U??(m6R@};A10_v&L{c>x9ivC2{8tk#n9%{C!@?-=lWN-z@kdmzcKO7}A=&ys#_p$MHX(2-?DgCzB+M z6|&htX}mxPJ<+|{9R8`in4>Oovs{+HWTZbDN8DnRGDT+RpwyT7^*@TFyoQ_d+xx}# zXe)JcZO~r*>Uvvhif?VNTRWgxTaHyIstY3Nlc2!O?Xk9ooAyE|t%jTV=J-V$oaSF5 zZ|XmZ)8cGu-_(O#Sbkrnx=!^6^1g$Wt-EKYVbDJPV%@XtFi8946SzLCPg~Ww{?6X4 zu7P9Y{u2)$@J_?z{Np+8g&ve2JU8bzHw@aZpVd*kp$o!&Qm!4^ZF(fNpEs*hrpj>x zUTL^NRn8}BBQYECsqdB_QI(zgy}*d(agXj&i@wUG6OIAcPVFM3ecQO*S0m1x-j&qi z9ippVxHob~0B3hWSmn}4^5o))D}s9j>>*RU6#k_5UF0)oais-Xm%SoyR+kKXV+fqu zaC83g)!yBUhUb4qK>UV5o%_W`TC>MfYTw=y`EoxV%?zZArhExu>3>zSCvz!@c6J`M zX_ui4OO$5>IqzzLI_v(*n#3G9QdQJnF<>Jt)F!{IJGiac(uX&z2M!0%4%j%TUzKrjUxIbq|A2%po6RHNj$XI+l|HG?80$+^O%nX!4)_O;BcLd})LR&2wit*NHKF zb5p!_3?)B+E{v!uOi_*MsIXt*5AI_iNcEMqsjgUU`d1}3#xB5glBM_Rrv40tH|v`G zx>Gpa*RQU|jtE5G)?4)K&AOKTMdqgDQu}#tE`ca+sLv-}c_csf2?aYTNIVrsxEZGI zscOa)AKv8rHe>M+p08l2rmQYz#hs&|C(4RQ0K;tE4`37ryb_M%gmDdndi0Yu=ihdy zq!p}0q-eDM!pKBZeb_j$@h(y&%%$)W@haK1TxC*cZXx)ePWr0y%t1fAuWn|WRuE_~ zGyDiWLoU#BB>xq~=QSzj@pwh2*s*4ced_fRsBDiNhM@l2|KsgV;G?e2|KABD5ET4I z1&w=bqXq>HN-7c5L=u_NL}NikL8VnGF0~XU8U!_v3@{zX(z?|CYOAfSwX1eRL90PF ztyOU?Rx2PbXN(FiAWAX!{dvxJmVn;>{k`seU0#~`F6Voe=RD`x&vPJ`1P03sA|>eu zXvk{uiIz`$x^D{c`|l`CJq7t|?d#09dFYm%PrQ?@e;wtbsA4jRBis|--8VYApHl_}dchzf$!q;tH2j!mDLIqNPD|ahqh;eMvnLsEyr7nJ^`oa}ce$%f3 zIQxqm(^po0PGs0b$#P0*sd2Dw*D?Wsb5cDg5j58R_xjnfi&qDajO+`-9@hF=W9^Pd z4x@tWU%->q7h_>V-#+z(S?|Mw7}+nmW|=#L<#;?8+;;4;*HL6PQBR)%FVzK)Y<1UJ z)w6!ZGAp-r=P5ycf2CDz5@pyQ3TD@1zEpmG7!|;lqnN$9l_SyZtOziWH zOXAgfj;3crFl)}?3s+}F za1TF2kNX*F)C|=v+u&ztWuF00+YG&OhAN+Rcewui#%oO%d;5D$mS0bPz9bif^X1{Y zwH=}PVTeP-{re70$P&UjF#9Q(45+>|*ROm*F1P*s2fy0h(|xO9VSawI^ASrLkJ_PN zMhxfL16>+)UJ7WVsgq$`Zl*O8bZ(+b(&TB86M`0>!+Bbmw_b=5SoWUixdJfQNLb(V zVsm=nAw;Dv92z9v;-e;UzwV;8gU7bdIiA%wu={Gt*SC*3!d0HvrY>OQ*uwrD zpBJlrRf7+1icoOGdnQ&d(w6ZuaI4(?0^0zDUWsVR8bCC{UG7!~$Xpk{OibjJASneV z)50HkX7}AjNUrdo>5J0%9G}_eXiE5v{O@VGq-);qo6GDY;`6}WO6|i{M!xneyfRON z4F0pl{<8EJN&jx9WBpXOa(r{=Hve7dq6DnEo#cr3l93&>T0~ce~SQJ z+H3#6Ke7|%){Al8&d6aw2cIFOv+Y=c|3+{I>Pr^Lf zh*qz-V1Jjv24C`_DqlnniwqDD@{o+2@u(-*)#| zhue;Dx0$kC%+3T-;|Jr1OSFG>bn89s zvxm?>nOhVa+Ri61n-&~KaU6Df-_|FBJS;vQHuBU&i@bI<`CcbZ<9im1r{8AP=w6V! zcPXitz@&3Nwfp6L2_N`%`u_E{yn_g~V&K8Va=PTpcVf*rg)-uw?Q{C~!29kKolm~) z^@4>_$sS{TW-r^)o32@Ztt{YP^n1nKMiuTGkT4`g$Q~c#G}xaX_iD?QFlX0w>NfVN zcS}2ZDuV?-QTNh=?wCUw-=65j#Y>_^kN2!!gu@j2^E15DVeRe&>VEKJJ~mQ-Ka={sLX^oC^6)qL zb>Fju`mKE@Ennm&eOpjqfRf8o3~@*^Lu7#S*l^#oo=TTdDFi+{zVlVD#wQ_H<;(Z8 zNqWqRy__v}oQi3f{+vF_Z7#QRH_cLYxpKR!oQ9h%H|TL+uF1;fn%($Q%4y8mazpO& z<<9F}-$N=#v9O$NEZITkr;nLQ5=UM{@YW}8pJ^an(b^f4F)ru?(DT8;cEOx9mW=`@0LHcJL4+PhH57yw-ytcIs??T<{~4 zXZih$`w?s=E6+_ZS}pkhAIH}&R{sU#+jim?k8jcWJCE<_Q+F9(yXQCg@g0fEZxhA% zt_L14i~sHT9)NX(<2!r2a%CZ}OFync0PQt#XackWmfY&}O&!us$N=N(~>=|gScjkCwr zMAY~pmFp|`#d$D`LMoG;eqmDyGNRVQ%tdAN$?PdOS6P^OTS}0SLnXAQWcK44da6a`5>{1^Ea920W>eAJ zNv8|&h59J=zMyk|GK_B(XA@Ok_rdYF)aE2B^IQH`K#bF#5;Lkawq zrc>R2ZmwOyLEy@6{8xI#U3|`rLET4AT@=GLq}xO4W%P}2?jGdjVt+dzd_80HLrh7; zw)LR6V1JTT(+m{PVNQ%-f_yI14*zZc^n@Vs7hPOiM8|)_71qVRM5MG|+vk|3pkZ_7 zR-TP`1%>yPzclI{-|39qfr8guPKdL|g{j6rVwuS2SpNER=6!$u-@N+BPgN zUu5-XZy&PsA%R$0u(-Calcjntcz_pUAI_BwIxpvj1At=5Cu7MEV#&w5hb^if#ray_ z<+-eq0Ei&-WmqTqQs-Ycay*rNDS^AL9X<6K!gX1&%Hyj9|D95jn`&PUI*;O_S;vZ} z+lrc#D`P{SBJ8OBWT=CddcE!9>JAoxiV-Q!ZACGxPhNg}oJE94+Pblx4Hpt^H^)AC zJ7`zcuqU%`1@jKqU2+vcCw8P|@Iy`)P*g(b2HWILIo?z6|4~6W@R{k#8=`W!qz`&_ zdcVkN>5<1Y6}?S%idEdX!K1ej4cHTphVxA@bhIyQyLO$9_8NyPY;CZhnW~y)}rE7q~9ue+mxdTKvzebj6@q~%8XKn5xFxf?x-)jkQ~somUqRJdM) z#d`~q32mv6MLF>YE(GFuT;NaK&+=eC_Kc-x6&c8X%>yPe@gsgkvgeKd6kgi>Lth^` zTbogozs5^fUT1R97Z~8`7~tl32b~EzuVo#oy&%!3rrK-q%a7(thyV&khdwT!6+^K_ zv?;ql>MtTnGV>y~SuZC~{!V_8-*oMmP0pxl*#U%xhTDmVa*mUghz>G zEb@%(yauiOdWjZ&P8i0FJ-ZL~Z0W`*yP&B2t$+0+m3aYo+J1v`&)g_OWH$Fid~4$c1WXq zCH@=t23n%2X$pQZyVl!oO(V~kkYwm65ACJxlt53E9vO6A$*f9OOnP1N0&c@Y*gd_# znii^Xd-5tLk*qx7)1J(BO$L%UNPg(Ia|+f&QUcryL{+&vaju#MCl%FP-5Is#j`y97 z5B2(_3`$;~{26P7+8+I&Bq9yO-9#;xsmt4T{$u&1px6*@8OhnOP|aA}@radX7Fg$A z1if;coewnuAURBsO@9=7y8o1mg(>;HX%0jH(%Ob-NU3ear#HPVPEs39SHk1 zKS9=yHWoh`z{V$%8ts0IjffleH&n4tl-zg?$%`wv3(eG7d(ac!RoErhUf!=~VI_?C z;wuF|KA$~E~lrPD?YVpGSPTCB5rAK;FEn+k5B$%Nk4tp z@ouz06T`$O?0=gB&OnuAmxC&bO2G;^5Doi2wH_jER zS~7NUb+vn=(fhXyS@)Nb$s=o!L)JcD`&9NL?HBkARCRkH56CJ7Nxx>8NP0gb>8Ry& z>CMXshAw)0$-hb@Z@kkq^erC*9d!0rspKkc#BBMIJR9n(QgV`aufqLw(w6XGELNiS z+{iTP@r*5C?vIlV<>R$lgh4{68ZN|jEW{vjFb}jsg2Z61Y}=T-)_>FbPvd-UG%cjG z?R2b9CS;SehkM~Yd-oG5i=q# zkl@{K-0n$t_s@O%pV6Q#)47m;_b?Jc|-c{0yk#>8R|FxG_r*PS^a7lH#8KV?~rcGI4ya)I;(d zSym(VBXWr(R6O|0oNim))yFc|a=M*(CAj2%ExU1nbM#zZ@8WdZzk8PO4NyLQoOq1< zZL9FNeJp?5ssevoEj#+XM|3BDTR^Wy_D_DHzin04-*$ynp7*!?9Y7ivC&5X2Tvl8o-GA>C0XcRHeb)hvoEL+g}3fLA;&Z zx_MQE6m;RE*7p>B)4RR`{RMnsvqiArJd}VWYHG<{gN8=P%*;;HuZv(IB5-heQ;Iag z)A1Hf!9Vy%5N5`(j!*lFB0bk9*TkDC z-|<frD!wC(Wwi)Mx$UGo)KGz%hGM9RDfLePykS zQGE9<>Ud{F`)8%Wf+k+1TZ%e9D~+E_lpV>g_m=c1b5TcEpXlw~<-O)}LSLyKo%`tZ zJJs!^gj=wiuD6vcE{8G7qQQwDWkmb0zIF9bFp0GszR>kLUfKN0W^^yuwdm8Uod z|JNaC!2hJv(oKT@o}kbH$P?t%9$>WdI73p-64R?z$O{n$%s|cov@3iU`5OBPzVWLB z+q2{&Zs#M25g>Nnc`wKw-?5|QhGPx9pN=BU837N&YS*+@L_2o$XJ-}-DPCESJ&NM3 zUD@^e1=^m~A1t2PKYh+K?Vt6%WQM$u%SsuUqdIP%s zJKTsdeS-z-D3}K}2L}QW;5%qcMUa@IcNX7~wQZrO=zWNv;daeB5#CR~nO`P565%q* zyZ~bc-@uZia#(T*olT!@SW;VnC8e5r!;-!5*JyEv_@P5#v-q)5*S+y0=p5&}%z6qE zIuu&|p4@smQZK{)5@r2Md!MBbvE-Js$2Ukxdhv^7jrxxD711QA_i!u^j+3o>pPmZ# zq%+Z5m)8Xe1b!~sgTxkHtmY`u$*i`mt4o8#b}r^_jF5L=?)C`RGR}AG=o|d#v5GZ> zr9+GA+pmkjyBG0keXtmCybd!T7bI>7AM~*YvDO)S+t+R;v|dUj#qkS*2PRYwo;vsS z$mXeYKa1SedWMcMuc`g8B+|V{IA6;1_n-JdVBDO8B5uyt4Ee?!Ok|Jyj&3ma{aYtY z-`d3)ON(Hl!+WsV$t4f&^%4NsI*mBP!YC90a_e|UpJ09wUx5KdQ$iDlG}RNX^(^|& z#rk$f-}t?Zqp|Op6XJJ*T|c4tOBWRs-`$G04)KMK_U_6tC%{B}-G3-7{MsyE_x!N# zpfgIT+^3_t(Wl4xPp>Zg^ltk!+YW{HP+{8Zr^1?{`9=}aHDe1uyV8Gll(nISQ+mxI znu?%P(Fl54tQK`vkt$olFC#22tYT=`=@(d2`D%g%D{P^vs*YS$8o#PyMt;TX%w^p8 zdBw1JDH>;Gbu785IY~?_b_65Z4a%$awmU8%(6rSPJ5n9JJyx_LHgvV$;ShXZqOsrQ z5MaO}@pX2~M_@<&xpPONt8Alf<>d?>XaL3VE^(;qT|wdqy0HX2&KkzBF>G>+%>jv_ zUVU82ADEe^$FSL1M@l?LwB-7!Dz4FfthfBBmRZYW?nC9#LaRp1HN6`h&fRb)QEL>a z_T|m>9v>~=dKKYk28ZU<)Uu}9H)reMX_|#@B(>}IAwPFQV>B=yh41hTSkeuG6A0~^7cTT+|_&D zPR#Z1`rN!JT8UK>B-T*_vu08eU$zvwB4v;}Tp_7Rklb_Zv%W%;1h9Zl4UfEFbRO`%!WKU!A zzrh1fbi55PFDR;?`-U8qFgGkwJqn!ac$@9q@AF{r)J5`Q95CjPtH+EP6F(vN{$Z3H zb7Z_4>OE}CSK?KR@OL#?v3GRpH8|WIsZ4@P%t~g%M0BL3c9>yHF->#e(BxQ;n& zs;p>azJ_QZ=qIQamD)S5tQ6fHjI{f`96gi;{qv=^6M62tkJF=qbQf%2MP4pV`oFW1BHatJ_^L9! z;=|nuhY=i@9`e;}w|c%_7hT;b(+GJ98}+r{)X9ymMZ^jX05Id z49EB5(a~oxu?#8bC_#LUv0a031KYIwWHdeODSd>LBhhD6EL~UBls=a!Lm2ADr^wVY zYP`?O-eCd>u0P4UCQJqP7SQ$d}_W-)mLm?0hwIM^}R){ zv#h2dp*ZfQi`suq8qPI$1rqR?tZ36t zf#~gg0rnt2(^Kp3uANnWNH`Lq!HKTA;8u#!P3y3A-iDFdm*ujsj#flh`}#g*UNhpD zt^etK{ZM}kQ#N3HN&PT3HBynQzpWkNT{;Po(_TAt3KCxYYw=)5OAq04_x`% zL*SlbzzsV81DVH5duWh&UM#`GgF_sxlbSYG+*v?jggRU$XpACtnwBN6ta|klQSBD{ z+{)BrLR#EVWGO>l<}nu5L@U3UfAS}!69#vKIEhI>go0Ku7*cn>74;v0P{;t%ik+So z+Q&qWVJtyHEo82;nl-r06I|xTQHXx|aWE$IBWvM{rZh+>>w~qzI3hNVJ$a&W%;Psx z%%5Gx!G?Qa-g_LNOE?a$!f|9LHeROQwt*_ ze^2)Zo2EkE+%MjY`qQ(ZvR}6SH|V@aOF%yBpz|lXWS4^+DjVJ8y}W-kVQYlLvlkl> zpc@o=I*Q^{!DXLF_nzT;N8uno4#}&$!yP$h#5M23SRR|{qO~8yPiIf~dq=?UQN@qJ?Mahce>I$` z%mK6eMhg4|aFuxfnD;qD%XKXy5?eVeWkLLvJA=0h+^Nftw5`r!p^XE51zS${+)MblRkMzorsE+n~RT-@nN(?4*!b#A0m zvAm{q<$GMhrG_~YYI>IU4iA#cKY6}mBjOMWO04!O#Gq5luDZ^(Q-lct|5>#kf_|@*OeD^bB7^w9#CvN$A zM0)M$dOVX0zuz~KT!v>ONDLRy==r@B@k`;L1KLN!K-W+sJw`NK$tqYG%w;iBc5O)Ze7Nr9oQ4U6Hb&Q6=H>LjL*tbfVVP+B*vPKDS8zEl=rML zy`!>~G|G*owgGsxI%WR8&<@}iqV(-S1Ev}r=3T;1cG@xx#zyN5GIZY{qu%%sFfh{4!4V6(hNxkaWadNO=BsF1fJfAexOGY!b(3U?oLG&k5 z+=zaT*00j173_WF3qmJH+040T_sJ$wM@Fh^PM%c1`qUP+)s#G*Tv1^8Izsf^wa4zT zxeONGKqDQaNqu)A^`tuPqA2~|+E6(eoAxoVkVF@G))w(tlN2Q0DWSR4kZ#?on<s388~IC&PWYgpW_ocC;VPiB=M~%+2Gpg0pr9D9^X5f>I@U8zwR|Ssa&I^ zZ;jZB#`X4$eas?_7Uvhy^RGt-5Oh+;7JoRZd>rh-ZBBlo?ZIiF*s)^+TfhX)Y(w$A znfi;y39>#{JCj`}@K!|PSMaLAUQL#mI@-ZAHi!xT2UB zyBzr~Qu8uB3Xujl3WwjhNXxP0;tTsmOpWk#LQD#|$KALv$NQF0spow`=LLKW|Le!T z+C$?9*nD=ZAU)KIVBQH3`pg!SrW-VkXP0JqNLi1^Js90n;vLdu`ipt&hGp}ikUjy@ zHZrL*TsQsj9he-0#Jx0@qd(aR3FA`0Gg#B{%5_m>{`{r3HiR%+h0(Oc}d*JukrBx401WR zA^GK?7T?QCbW$|8UJQ#u~A7BMaCPZ0bqT? zD#FglGuZj@UYxR8?0~Z+nwnncK89G?^2GL)ID!g|5tzd!l>c{HabwnG;xrys6R&I= z@x+LpdgBz)R7;)f`_2Dqph<-+XXN7uOHQbqh6_UZKShLSKiW9ri6)N2aC^Q_p(17? z^9`$*v6umDER&^?nf)s&``1tPMD{PzEnosW?18aL+jm20F3)1WCqfe#EK`Sf$oxf~ zA3lpE$CbvC-!a3Rv-ws>#fDs-^Rno+4%v5?z);0TJ|w5urveM~gmr(&XPv z;*G1>Q%1m=gH??J^F$quoP7yN?EYbM@~!R{+_(23ybVY~@Jc%2 z9z&aSlw(2KD(t)--}xvgn>mTjhw`xG&^z?3h3>HVzKU!0x0eP~747J8LFYoDQ)*nb z-vq&wkZ=}Fa_58#?Sgai1H3^UZxzGF2DZ*X!5gTSZc`2En(s3)2tcLhnFdno@q~az z@*hOgUzd53m_g)~^1OZ1{CCRe#lpsrH*#%#>Qt{M{g8*)Gwx;A$1STfSBT@&e_BgK zsrV6z0MXR&-}fCFft?TJ|I%ox=4@`o-pjgEp1uOJfw9y{I`ZpJ1oA0gMn?~d%~0x4 zQz$kQAndzi1*$}~N&B8ud#m^IVBTb!kyWJ|q*41^Qx`Sr2#xyS*3}Tn(w_Kl0opC9 zFB7wlGMsZ*Q@E7h*4&jzg`p7&bpOEU2`ogGr()>XsnD@md}TWj{2XNFSaZfttR9mu zay5}Uk@8jrETz~iDstLNCpk$q+1{m)ZVjsMWBD?T^#ZYLxiu*yBeyBD_VUEOktKY^ z_3-9%VSh|2|0C7_$4niC8l_AhtcvB5!rGCaKik;!&+%+iW7A{DyDhye98uB}zh0DE z#<~a@J!WViZA8VSGUH%+U#G{dyN&4Dy1Wk|B}H9YrR7af%nEiYL1Ujo2&;3y`ig|c z)=CS(WoIsyY_x_)33E0`QD&g~)6gASODta24Zg#{-WWu-ycI3do|e0wy>_wx_*l`W z2plH!C8PHWoC3uH&@DpVM$d;~j*&Vw(Vagys{jq=JJ!T`WAX~nA5Jb*fO@b~n5|2i zK{a|Up{)h_&j8bZ`oZeyWpncQ`qkrFL=&5mCu>6I9=JuK)&!KBQHb8A+_dvrOEE~C z%OjMV&d;m(DOstXkWnfR@fylWwUKm17jST^Y1)}61{$S_Em}>swsav5&T1>J)NfPr z5>|Kmno{;$3Pg3$^j|C6c`@MM3nx^fb;c{FW#o-#rPrs%d2*bh=bx+rW@=zMLee)S zRncNyQz~dket?d-;pA9w_Y*VrHc2$Acr*?82j_Q5@xay}uj2zwO_WHAV$DuK*|$bF zB9dZrl1MrpIlx)X**Bg0@Fpk!=?e&by8)oX@~Gq6tX&p#EJj=xIViO)c-K{PbKBz# zBAOami2?4zSn7g_&8bU?BAQ9u!W<+p##x~`FOUDNp#H`xc+wfEF`I*g9Pi|ziCRZ{p0h}0OtFe}d|*&~|y zt5H!^VeplU>K4EYA1X5g+acV9eB1(XMz;c>Z;JlzurJ{Y#)M8rRF>$3nBC4#PRwpQ zhh`hqY(|HPn4BUz+)m{sk2lejL=6Af2V!9|KRU3b@SK~|%64UZVw4d^;q6 z{*k$fx8P+#6BPwbJQX&PHPhWge915JFg%#onI(nwhxM=?bG5`zH^?cvfc?zjP?GC% z?_2kfz$`Ol(D?)vT4}LKlTR>kvcbPA^Le(PjMwvdkRb7lI`B7>#X5nCUqRKj&2RKL z^cGjh1K*La6yznV1<1S%;l$4dS zjN;sE0H&r?lxgBKd zJ^)$n8oHCsJ-ck;cEb?fg$pc5{DVe?8XVp>4c2yjjn_}8f3(|kUj~}D;>djYe`Cb) z*3B=s;fxnbv1(L{EM~&p>*-3UD`jSIU2pmzh>>|yZ_>lxA4z{g{_=ggDg>wZJ(+X) zWAbe7$&ngWdicZo!jSvyx{UnzyRyB^ogoyXVcWSn-WTd7|04|z2+S^3XTL;2%V?`Y zt|5goxn-r~f0XufGYFJ|7!{hOHHbGZtPuMy(ZOFSogD)Q2GBR~r%gM}=V<^l)p#O891827Y` zEH93*({pVAdwQ--eXb-ka#b{0auT0+uW;-7?V=x;e`Bf4no9nll#jbK@5*=6LK^aE zHGN24AzJRuP3lK+D5Z`sYdxCDBJ#(>RsEU%STTHZsrnQ4Cf%|&njCUJ6?H%2&Z0Mq zvZvc4W&rm?K(?jyH4l?$>JXulQt+*7{cut&6#1m?czjIlD-g5&$>T>fwU>O^Bxl+3 z(ejU$FH(L{;Fg1NG|kB_wI5zHAljD@mfDwQfDeLf>sx+ijb|@6tY`-)5%i5O4k4)h zB=q~#5*MJ&Qe;#ExiGm?|LS1gEqqLVL1i}>TW*Hcc|0*lBTz|RepZXCw%bmw<(ri= zF5ylm*Rn&ncKM8R!m=C~wa)#Dvcv$ZY@=$MK?sz!v~p$%&#xJ3g^_HeHnyo^h!is! z&X3MP3R77JySuf;LIcmQZG1v-q`P3g`P0)A@z-wL77gyh4Y03ZO8~)X?DBr{nnT&x z%X)lCAqzuajwX4UZs=#>ULpQRYcIk)@+#VMQ!w^h#LcpCXm$AvHXfC1IA&;MX(K>@ zuK)cw4jPmIpk&s{MKz@~HuP0~@S^ZvBUH1?R~yQW(e#DZtITDPDqXg@CXr#-V_iEnvK9LRjgvuMnj2&jgZ%H&`9ZEdHaked5_=Ca9i;&qX!mU%kF(>O ztnoe3y~sVbgYi9~$h=oCLq=o*qKu>g|GqC+{9fSg1;O*iccZvFG>0jH&lhYHD#;%)}{QP9^xtY_RI zMO%7KSyfz>6RMUkIz3%HO#A=;osDxexV#2jT7k z^-2%0XEc!=0$5!RVA$;pKc;5! zA-rN9Ud=nh>#uB~&MuZk)j4?Kj$yIv3@=5vnnh9Yn&{y*Qt-Nd`^P<;;}!0RG(I7z z>`{^Z*d#;1JOISA--{*^Hx9;Lyibh>%}jG6#NC0f?cs@SV^3M{e>&3 z_9>52qH!alwNK6XN_Ow&Gwz?P;@&9b>G)~shT$x-Wiww8py~*&B|jL+S^*TAcNVkG z0JFY#R31`OkI6!+HkMLw%dU_rt_*Fjp}vxZ*U^I48K3P8uU+uV{Mi;C0CI_YYJVIN zIe=AePi5b`y&OO$aN+~U-`lfIu9Ih|3r$JaRJ1vmcPWpR#|mB*%$ukiDM*576IOzu-ov~L`A zeD&%8m zdlJHn$)x6D=8-^|m(-2gr)KWKbk%6Of_cmJNN4PPh_A-I$AVR|b%aO%eRJ(NW{=~H zFnh#;u}W9C&WOZ0Oy#3P^Hceg;n}Gq<**7XZ`H)oCUWG6a83jnSho|)GrKc!d3s=; zY#;}4GmjxByV=|50fI^ISe~3bKniK)(@#vKtnf^SY@Ms?-8~+%F;Y7ea_g7Lo`#)e zpsaLtBcAIes(oz zsNo~yUIp++T!?$?CL2iWWpaLAJIM(p=^lifO3s&}l_WZX|0ZF!?>8U_J%~I)w`Xm1 ze}n{ej4FkF}OmY~u9?E@sOngk!P-oQ5i)?j}?&sod^%H0q2C#*3 zJ+FcvyS7^>Gm!mDTUiBagkr=|j?$7i=4Agzv6FvZ<3K`e~% zyvV>|xEKl%-nP33(H)U6_i7k$aRo6A#c@RF_u_2BIm*oTz4Vm=f0mcV!zk2Yq6!NA zlV4N1r}v_sAh}I8ztUj-VJgzm)f3D+i7TYyWFLu+m*Wm0s)H|a5r*Qk)gbFgG({|_ zY8YG@%qJ&4p?yP#z1f1 z3Lhws5Awut0&Zp%osq0`*&f7dSI-=OMym4jSn@sEiI0n>FY6=5aF5W=>eyj*-0-kE z45hJ%L&8R3uY*yVAO*XSrUnKQ7VLh}_tRhnHltBQSzPCqae7m#m>JRcKxG1sA&y~M zB=W-=EoHP3cd{Pdfl!IsQ2bctAr^k&d{`Dt5P9pkisJa!tcB72XAIBTwx zr?{l*p69r^=|Q{MLAqirx;K7H27(tEgShHXY6 zxv4R1&3a1#3C||FZXojhY`}Zq7FvWCRPL{ZwsVdQ(Zlz;-?aM4+?A@%C>C(UE8S0L z@t=h~YG)$Ic7+_GWno)jw1*I?O+Bg51vm-fML5|*s?=N3amH1Vq-@3nGLcCiI+eTC zGfuV8WA~G-5&?H2mzdyJjDj%KMPNJWLGzA~5v%6VdrG|V$jv`B+;-o+O8U5|P#>?wNy{x%5+ZgeOk0VEBYQT+#G(D3-6e5}>GJ zA#|<4`fcJ+-Jt^{hKymWztbK4 z@y_y(=rIOXNf@Lieg)7@jHZ6HkXCw8p(yJyUGm@|vRI)nAQkkoqt;QLHGa1;Iv<#+AL7Zc0uLajHMQ|^C6UXZ49e!S)_G+OddL{|7Gqg#AQDHSYp*eWy?@NlH|`$rJaq5xizQ0!)E?BqRHaQ?m+ox zSFmCIO^mV>I5QQ06G}gli1O>%FNRYY`u`tZ$J=7*t17f+4urPh!o?sOP2JzcHzb+m zuk7vBP3b}7nUi|6aYd6P26SoWTzz>!Wo$@s_?d0Vsi$L>r!F=nmgcOig(^InF>i4KcIBb6`;_v0-hk%g}DRB>hNh2UZ6*)PniXdTt3fNiS3D{({}+KPnZw-K+BR9(sm{OSEGc2dcU)vSl|yn zh$f=ol1R2_WEhYPr3i;`4Oo#F41qXvDyK!_=fgt-!O3q%nOr$-<~YeVe7lJWUh5i8 z)1scWzWx!0$iQzj$7pUTHzaZAo-cp?+!Y#9ftL#d1|4sI&}OtvZg$W-===ybrvf=+ z>FY|}{D^wPFoK2hYt*Oyrb-xcsXG7!QcwIQlRxkk7Nb$3ut<@I}gL0n_=5sbX zR!4jS+gQ4}ZbVm>={F^ZA+>=`P038wj+Z)1VNs7Mo=CF#0QMhoUJTx`C=(h@)zSBf zVBRa7eVUq56-!-3f>#M4dwF_MpKfG5u0^+=d1!NL%nIN|>~*z!0a>1DTThI1aV&lP zNVm6y`}FWD44mj6*nyQq z4U`rEX*L+w;}6$Xbzw(2hJmNzM`*JJh#Sq7?)`Uwqp zmDWVi3Gbs%z<~NkH6=fVOu07v6;K7isPmun8K`vL$8V67k;htdFMMPSuI*gmdbKTd zzoDzA1*E&Kl#gB4`&K4ccpZK zCpS<*rjBQMd4v6;pl5{}>HDAThojKeLb_&^>h%1Q_>Ri3-X}-H3G?U0=HFNg2dRbE z2#L(Xph8jJtoe7u@1}5Ra`rS`xVttAyoNg3=@U&}$^JGU>pw+D(oL?c>Yk8Wr*kT& zxHBMzYDecVta25Y7c4q+;TW4W1^glc46vcV_7<83%0x_Ye`D4J=xNeTr?`D^Ep}`x zj{nAJT!XTPzaLG}d>D3H=01i#qKL+i(pP2fMUXk)@UO8ugBQ3V^zJXV?^R;11uelC5XYY?@JgFYbsomlZqaRjOcr*=GgfJB(l{q5wdf4+R zz`&(>W#!!1Y@sVuNU^?p4oZLS+-9{MB&K`Z%N&rylln)tfYI*PwcuVQpGaQNQcuL? z!d(wufUA3|d@o$RM&-{}6X}`*vbBYEP13uywB-Ku4w_MDCdLQ$sD!LY{A#uck|Bf; zSkaH}eG2Ksd=-II%seZWx~*N;sL@Du=5ruJF^7Z+f8x)%R&jF(Ta7Xpw^sV>#p~$` zJu3P!*^Ai`>eh?`^>g_pCMCV4r~bm_KAZ7V#y^q&kCW17r`195XAeQ4e=SCz5#)EN&gvOGcA~oX5*5|CZ&OPzKf4UR_}X*!QO?T5 z|37$WB%>@Z=%aHj3rQ^b>5_fue=jjgB8SANw=n>ai8j>hp+nk8r`QLJpyszt_pK9R zwHso|^)m;?(sQMK#%jA}e1l{VSM#9VKUg-SWvQ+#Wx_M=&bPeoe@pg+s=+=4c6gXg zMD|JP|5f{W{r|R{{{OYC{{NWt|F;YEe>9!^a1GxqSUyM-!j<)l9R!}vT!hs)HDRZDf(P&b<;Rn`75SfLb-ZM``PQLjEJ z(Mt8cXRcvAzxx%nfQ*roDamI`nj-Hemeqf`yAOEpWZ(7r*H&-gMWp5&5P@gzyJ$a* za~3fHxjapsHsN4Iy5#7+Se0porC>KV07?!s0M=zMs_a72sylVPhO>d3XJNYGb*|&1 zZ9s^4_h8}U`jX+Gyu~Z0yP-^H_~w1yr2PIa*XIT_RP90s%xF|ZT6@Ju(bZ&dbH_q( z?X$Mon8KjjO=w7xzS;cjE(QMn<%K#Gq|@wq2>30?KkP4Qjrh$ge$z;~J3LpMjqm6U zA}Z_Yi)r-kcEBiNH;5(%kB)LM;2(Jx?oMDFRqidM5pkKToF?T)gIjK1*tZZQ?%@lt zTu?5M^`|bvUl%{XD^2N|2lj!|OX>pyZ$1v<`E$;{f@zaO-cnaL1P$A|p9}Tc>&oC0 zRV-?MZ-S^KB_#?$?-`sd%Uon{+o{mtjsIeLl{+7{pmJk)DN8Vd1A3D%^Ddg|UhHOp z%Q^kf<4c&o8jpajs8y0Dw5DLOvkFx)zj&s->ESiIDcwd1KZRNeWSVxbfEvgG91Zzi ze0R8`wg?|V!)74C%yy0Fb__0H_8JgID*9 z?)NOL!u`QwHCx~kOHL6`(nBT>fz-%cm@X*_h?f&N@ahHLb>@73=^f(3$!RQn2GLhU z+w6bdUh<*1Se^ih-@;*`KlRBM)z*@`eM27+z5PgewsxAtq;%L#duSK3RuoO00fgwr z`S9+>PB!rqsgvy6x=$>5ur--C`WW9tSCPm)kbqePrhf}SV4y0i6O6i_^4(iy(D6ucuOT3i`8ITrY+U^KX$U3{42u^RO zzNVztyyJDjP`_(77XyoF_RgPK4WHH_kVm~Qx|&?xx{nM?OO$D>0qucRwe0%sJz8^b zyMKvu@#GofVDZX{(58{bdf^#+^dd{k-L)*x0(`+<$5Db_zA__>8Mm|#eA@2t{MC(g zsTXiMD<|^8xW+bZflmM4z$hq0Ra6%(*^4r}@KDp@u(uWdAwZ%QN*nN$8b39^f}TW2 z&o9#tZw#8cFm5z+kLa@XCDFd~C8uy;Lo@89IGQ@n7&Q)UcM;kaq;KJ`^*K}z`_CL~ zJ8NI_j~CfvE6(`|R|sK)g|qFUc<;~GeJm9xSRi`=uM+Ed)s%j?vYPSAoknw0r1Fk> zSzJK-1=2HHG=ZhD^!!B{TPgc zJO0EhG0v=@t&WE_bKNIM>`pDJ3883J;VMGqtIF*YURAq+;T7lkiVKN%xZ8C_-|F1c;I@vg z6^60~y!gpXk=OWs4QuWSA$0*SL0<^bq6(;Io~o~Aqk@vqlP&TFTDsX-)Kz_t#H-Vqv13rJViSju77S~sQoMi*t- z3tNTco#XuD#C>|HB{HIGi4;&6j-61^q%2yS_)5qmqJ@jveyc#th{?Mq44cAV?n>7% zDj1vs!e0mwaWs?>T@A^N?hi+9&&n?{8K04xvk5j+g2@SJ?wYfOe3YBBB!}Amk_XJ# z?fm!|!>ME4g)zPFZvK|-qg~$iD~-T-<^9NU)~_E5T`^R`cy;!)%=(+$H(B0#8!Vh| z(`)^C#(LgL+@x;rLoyPu3`Y9AEc2i2{H1H2Wu6L#_S{eu@x!RfRUxWp`I{HKE%3;@ zDN_rKn2lZ_(GYTxx>M9k2GkM6x)vElDAr=T?{=q|+_Sa2UcK3m63G!qBcp+eb-T@7v5`4G1=*o zZ>lZKT7U{UvMD)`?O1;`RBlTBzOst?MYHSlXNneMJ0I@KdMbEoE2k=ZQJuXQmA!~& zFIut})3O)S{e@qS+3Q8R;NMP+42R+-cX4P(9WC0QIxdzz*ESATxbNlFr#sd6JY9-F z7DB};p*IK_cTsyZwKpiAv)t`()XNmJi|l*QI%Jxo+(D+-+DqltGp)@%4pleGDs^>t z&pZP)^C8-`#sCo|2-&9W&aH?>?|)Pu22i?PDpt)8LYUXEfbfk#!a#@k!6k>v`boN{q6e%dsPq z(D!v`UYrLhLY~lu$D2}qmPy_fbV4_bxh~XOE7BA+bTuKybg8)706d}?i%gXfa4eti ztdqNs6TPnAJx2%XA0>xEk6X=t|EyhB0O>UXL9)ty3>d}shy7c>Z@WrWDRVt-l^WLmROdj;2`Vjw~JY;#L*WiEeWqdG=K^Fj~|>+sR#I z%NOFCxtkA1Jdv5jkBuMM$;QvG`wo&p<`mv|2$aDc5bH8OlL}%m`5fwDSA=G|x!7#6 zjAa(`+8ZR-^f&QkI+N zUF>2XGfD+tI1r$V9Y(`nZDx$LPA;&MsS4T2F3Z}<{DWmPCN9-gXeYbo`K+Bx4|7bf zwT2m0?+W4_lCqZ-`Eh zmMUQ{=yw{eLE(7_C>zV;C&rS)h#>Jwwak|m2ZUU#u@g8n^L}DEbM{Q{#=VDC(Y;#o zRH#1Y^vz6)R|WAvDB{RLumx?L-z6Ks*7*@SRjM6GUbPStOQno$)h>&FJy?9R3Ph78 zHh27^bfMjMyxynv)SNW_k(IEpu%|hQOawT}oOuO{EtYzn-ATU4&T;F0CD&hRQ?<+T zLIv1U!MOiVoTbi}Y1B`IZ7Zhtbci>yK#V<1K=ncJDR-A|FzIxm@>k@TLzUb3tRA=B zpygBURx(qj+sM=_-A3^Y(bQk6)p-+g|KiJ^DRJLcakZX93MWXi_u~F0Tkvi8fF3e7 zDl^)T!)EK;hVfEF+6FZt+vmn_&BJL2x(`ij5~XwDRh2s_ln1Nb$na{EJ2JegbJZ_> zZ1$i`(uhwxE#*g8fxLb)v0=3M6AimU-5urLMHXdz$qI--_dHL{fq9*Mo4i@w&P)=q zO4m&7o0q#wDzb977xz;Gj;0@FYoeY3eE0^-WD_Os^X(_TJVsYOR% zDI&^~UoM(^q$Kte5rw?FaM6xOw7^jOW{9Px7EA1ojs9z;;VHc@v)*%2p1r8ZUR3!D zztKLJr%XLDTnlU~73FtNkq9B=xJTM6oV~yae;#h<@Wr0I5CqHgrrb8uyOnvN!SBlO z-&MILWZgm*&LT#`T)pjjnLE5m8uo>twvI@#V)yV9AxCiYs0I!y8RgeJJR3UsZc)F; z<*2DO?{l%VzF6d(zIdHhT<4GP;r~sphOJFJzwJQZofA|Kiv)3TmAekGg!Wc(?LR`O z^$vKMX+=xv$bV&fP+?bhWHpxq&EjI#U`EkfbqPag>LSr)ZcdeWdYVI5e=K(`m;2M7J-!Rd5~UIKe6q&SPJ6=v*&JOrKq1(F>)Q*lS`f~ z7}c*?Cz-E<56A~9<)%{J_@uk?X)t}0Jd`WQ%i zE1xOtN^(1gzHl8)eZR#}$}BD9QWn*b+Faz8b^ z^Y()Z3<}Zo=`Bm8%DC}H=Gua-tVGsI{3<2N1)hwj!syEnVfDHzcTp?|P%-StxC(NV zy7dyMboHd{J~+uS-&e!*?};8XcG^eZA2KfA$uh`Y<{ZFg{=kRCnceT(?3e~9i{0C5 zAzE@sJA#MwN_T*$MxLLEK8QG=xnNPFxdNbKN#gofCV%e>@O!@srmiU0Oto$|eo zB+2L1gV|fIyRz3niK?dQHt3wlf|ATSQ50Gl2EOASckPSV@Dcr|M^iToM6AQ_d|na> z9Yg3gau{9uvaFcF!dDrmriH?+ICs)CoqE7&w)WVMgVUvGYkY}n^2QZbOjU7Hml1(pgr?H0bIop1-)VD-cD7WwniU>drbw`CL$JJ@ zx5p8dQGbr|byq=)#0abPNsGH?l`lP=Z>!zVkQB7J9@fpo^C^c`6D%A`mx&n~R-}U+ zix|WAXtOD~J3J{xZjFB*bSlb{mweNdo?hgf z8tm9sg_nsJlA>SAJ-J0FLMP1ta$hJ4+z>uQ`Q7UNCwzFhJhZ*E*KG{h z^#Qfd4~J6ItyFfYeA!CKE}<`34(_Do3@RNi$kfe7=F&Ak*utBGzlSArTCW=F(j`eT>P z(-#(9*o)8pTcT#%wbpEF+DNNXXACg2Sdf5nWfv+g0;61X)cqUnL6x7U*EBx8DfLSu zD6V3qMoV|HjmVFdI<9^~Q#vKe>1nyx_Bl*#qU*wog2didOGfp#VLNx;uts1LPb~C@fELe+mr*)7%2+5vnzZLfg_zTuN22u5&*X2C!H3C3ov1 z9+0Q=#+6b<_iwFzO|V~|cZY&hwfiwwg3%AcHOvHb+R;DA^F8iKj7%aBOlWpWhWuxn zN41`8j|?7vT9U)mWH;F<3}jQK-Qz?9NJKbiUZu-!8+c{C$vnlapj(K~3xqql`2A>l zflw`fpIR`z*L`|{2tncdvcmhV##*yG)LKg|m2!iIvYpbxM#($cu5Mtb6JU@srfPbKg zA_V=dB?(A7M1m<(=038k8_o8VXfo65gz;19+}SKYPK)b1>qX zEgzRemh3^>AKlZ6C=T4(7fQ@Uk4D#2Un-tZY2WsXls1u3FOJW*sDmj50OF^=t(j^a zk^6kZRx+ZRZ5b?W3WizOFuY@ zKD)E?ruH#bIvm0U1${WMun%$iKo7E$ZHCm{!Y{L(D03&}JMp10AkFl7g`F@=Nk6E` zb!*T!Lx9`ao9gJ+b`MjKsUqmyLNWEfB4sAKj%}O=r}rJ(2$R=-mJUbuw8dPw@eiA2 zREQm2?4u9bZNP&LV=F@L6#3sjrO9uDMTHCIcVtHG?1~3V!MaH1X;_5uyZY7hwJ7v2 z^Nc<0v>VWBET_AI564|a*yv-~4Mex>vAw7MQP8F*Ll)|ScqDsf=$h%G9=^YF4yVID z;vOU0Ce{27C})>h$1}vAQ;}sjvvQS2+t5`id)mFkDd5bJ@Wns#nKAKimwU zFstqhIRJM^nGT?%SmJlYPtiPWMr6`jD0gq^3LpJz5~3c2iE8m3x?0GKuO*tCD@LP1 zLrfWY#u;+S>4kr9Utb7RXiuv1u#&mzX|69(`f|^uzAq{Bn%Y{L#bgNx)%mi6PW4?5 zS5=iOp?I$AyQ%9zLiTvE`wI0vx+EjGrAuaJ;Em}a2Z9`?1jSaHqg0TLB_9!*n5iz8$SsoodxiZQIMyx+<|8fie!obrtKc_G7GX-L9a`EMcw`7sI(Q^d> z8q<{eP~|Q}Z~?375f%bHs&HdpXLRgPxw|>}-+B-$^9@3@o01!Kn_O)Pa#fl-Hqz}A zZQSd4>Fz^74_BoU6KGm~v@$mn*r(=BXE5$KggZZZLv=-|L-`e5NPL2@WRqoiLX@E` zFAs^IlYg|p|GDMM4GA1bBdcOrGZj5{Qj5}_ljMG z`%FK1zHz_z>N#iyUs+Sout6y=51vT$gmg@BVbnyWsq`y-b7fT*fzj}ezpomDv#vKC)j6;wnT(N$km1qtc zKGq1PtG^+3mAi`&v2fup3l>_uCpJVk2SHb01sPVkbq{9W|AEi6CN3y^JsmmNf9~}Q zzIp_qgPwbF#hqyqeaJ1ut7R`UKDf?()i^+qxZAKF-fW2WzUvPA)OMmsx`(NukuKgl2j@oke#_7p{mF^X=BE_a3#xzRzv*kDCrrLc2 zifwNugR=w*49Y4ro%;&>Wca1{9J*hT-bp)UGzrNW6%u0<&L5(_UUb9AigvS>lP-DO!h6gbAT& z21rTM;I>Mhw@G*v6al^&Wf4_7xYK^~Mpa~KyM!>#N`6mdb9K)D)geM0B*ZVQf8bL% zuXpFFO!_L(Xp@c9no$zQy#FL!@XsQ_8tP2@Q`owa&vjoEzqh9sV zJ>k)=DJ^mifE<3)#wy$q^p3QiatLxxt=aWXyy9}fY1I;f1k?jPM#7yM{d@WW+w zqn^fN|Jc&`9-cciTETOT?}$h#C-(~Yi^n2W%8T%qQ9Nu)|4#TW99%=4d5tv>+dqecU}0+Pp$fr{;y+#OPOZMH@EL8vwqF&3)FLc z^?z98)HmGf69rd{BUNcasp>a>u;$;Q`&l6L$rW91WxU`){+}G3NwNidX6UzQPHthQ zlzBI{?9Gyo?5_HqNd^n3mPkYj(1r8SfMV%Z@^cI$Aqw%6_i0A6;{KpNyzRTt z3v^dMFDR?qlc~08^k2&O;WPqpV-h?^yT@4(9R2YJgVTvOeoJ6{DMas6c1G_tioZkS zs_CckcBvODmiqPAc9qcao(Jd?{4|P<9ZKcqV|P^hZ7t$Q$YVzSnz2uSw=o%x?impuf5lIGFVt;?~q1}%tx8N%xVsyHa?S` zR6t5^3_dOrHapSiPUu{y`8P1jZlXA&&-T#XX4KU_%M7J>o__kZsu6y0q4)^n2om!J z4Ux_aWY5!arn2rg65EWIfszNmmE&PO?pKh)kUa$pe`w<not(B`Oa{^L^Zi=l6V_~F*Q21F+0qn6B@On~Rt zHr~t-)sP;v;SF0o&rS*BL%{NpMW{X`Hqh&%zGJWdT=05`UjKvFF>G@!nJc9qq=$U& z>sfO#^}uXFP4_Mbk1U~FPv&x_%ANSI`JEX%YK#(8YAd|BB%KHAj2yQK{Y;}tq)>%h;XTI!h1_L$D= z{bhM1ehp7JDr!1ERgw5*{E%|^oBWVkY7#%uNPGf6Es=OLKkUgnm7gh*_{scCi^NCq zGd)5`X2)z!N7^mg@lZQeM@STwYSd19(!nNI_q4F;$o-S=cAe-ShC?7_JA>Wddp_%V zup4k$2nh2A`1cY>(0?zoVvuzFwJIk3=>Dr=f8lz(p`6S`Z0PTb_w8A~XlMJQGG~%O zWP4$s(&H|EKUHoKNHwWJZAm>AAoXiAoHjbs!|8l96x96qwiCjNjP<#A+GMOd=zz9Qi*P zexnq(8zq&N~94dq-2Y z+Q4LJ-rj6-DnQ^!&(yMB@o{I5H@YPZvrhKs7{aoScZw3vT|YRgEM=@%Arz)(uOD=@ zaUS8D(bWG%+ndMNJ>`G=NhJiW8?+QPVg#u*K}d;_v`O8N(rQs_Yf!aLr@g6AC6$}% zbzN#VGnS6Ajlmd9M_altYFEpYBE^iJD=1UiYE^#E*ZX`v_ujN-e&638KaYpzb3dQ6 zzR!C<@AEz!tm{fCsZ+s9w;7&Hd|!C7nlworfAjUVy5F>J!=5*`I=C;htMj6gpIHx_ zr2~5tP+DdSP}Vm0%rlyIVlFyp=0SEUZCjqKEFP%M&Wp-_Zhct-ttX2)95DSX)Mfvv zeodyn{~gW#_9;sgPq-uKlY=s0B>v{{gk9nVr%yr7|Ba$vJCuv_O!(5t^Hv-Tm1eX${^ ztEDH~6!3Vog-$)b5tP%H{E&UqYuI56X-wd8|djM@pgx7P_gX94668zf~P0pFd3zpe1 z%ia5$6!2@CqsbTbp3sdiUT1*F+ma=1kMTzTDRJ;t7nGK_9J7y4n?j=Ku@?qaT>4d2 z5MLSbl-4D{W0G`aC_mD6u@u49g`>N8TA(|Xp-7}_Y+=R?1 zs#@wT`rhBCF(R{cI9)lBXhYc#C!x=oZbnj!hSa(FZXp(IZOgU!=SJdJ@hxd{!T%e( zmd%ye8B8G3dJF=`JP@m08;(P@vo&Q~CX|&lrY7|DW~xOiNQdeFAnKp|Z)E9cX9z9L zojsstrbaW1YdZ7NBh?=CivzQ=X|hnRxvyKnCJJt}n?pTO-&>+(1?j6OZSl!HS5g%J z*WY}}{@hEuQ_$;b_v#<5SDbvY%V~CFd!ZsBq>g_2fPLYXWd`Hd3K#?A1>B4HVPx_- z7=+(GTPnQzQ3k_(%EnZ7AC~{Zrujv7UIZa zTXOs5zIZuY{*lm;QI%c3;pu_YGTk)VQrtLjl|QpM2PoU?E}0&`m}c{c-K?P*_>|Zr z)!ftN5fo)FfLFfVq{5(zfPfnO?EYZ-+XF{Ged+Y+ADNAN1RdM=k9gS_O9~oYB`s{#AEigXc#pm)MD#%(8dJwkqT`vzZLQ*!y_i*Pr=`jS!HhJ0jxBlq z*&;i*d>KyvT?}6$9}8cwgW6FO?tPNBb)aXJ;SUJf^r4gk>Qrv{$Rk!WWw7sQzeY4t zOc?qMp~_4d>;T&x71iEP^YOthN4wkauWA*4y8T_G$JWQS7=!|4h#G0uB>7jBL(?{M zvLC(X_IcF!pZC`W=kGbTYKpxUc+!`~(36kqPZz${EWV}?$5i2?%K$dat%x%AP#iv# z*#i!5zIu+wL)5>-jUe`?e`@r7uz#(cJ${W2n;4@9H|qjLSn3$m1N;oPRR#7Mbk#RL z%oshZ+|&5g#Uz>mn_yhSy*L5LaKx{2Q-kl`@uCo1;5E`pS}{3bFAK^XVQt{BJ#mO_ z=S<#zwG%*{@>ll@)iw&Smi+ivqKi6#nEaL$3ZTQ#{q9 zd+tP5J>w^0=iM-%Yi8;gtvVk>Rv=ALt|DS#?!Q-kQb7FHwLB)9t$CP`sKh-p*fzc_ zp+gDrwZbU3CwHDuq```KhtLN@>=pS(4I(<0c$761N%UaKAzw^Y_G5?~qX=!;>(^|6 zKhB~^XZl|dwWnwQ`#TZ&yobuGv_!i0q^mk2VKwiV{f?m=gQ-y=x z#27o25>jBniXt9!Ff8$Ji5oZjZ{~$qz+p`R;7~v1!)t?7AzGG8!Sk-FH)o7V6O)sd z!u+BXEnjao?}Fwf4W5%K9IZq8095;zj=#Cpe-h0g6|?In`Wcj19H;=wP5d&X)0^e0 zBgH z=|3I?O#SC6iwb4-i-+>?wb5EMd_7nXk@!u*b9sVV!4FT?T*m+~_CexWs*2wW^}-WR zaw@KJ+wiS1^<3#Rng~6Z#Nf^D%Wt(&B1(D&C6IGf_EPlnAive{jrWM#5k1X)gnwAy zX`5;K(e3woPkz+Z?or-{Ome!prdGSHUSu8k*74kW#`RUK_iVOn?9I~OsUqQ>tKAi9 zFbH2n&{n%A`4&wb`^$GTUf+);v5Im1#wTg&$*BTj$WB_87otop54gc9cdg+U`)SQ2 zzJ)S8#XNS>MuLU3%@&D&M{V2qjKtHyczyuy1*LEK`}4^+M9nY-VMz{C@OoKlTr~s! z?K{DMHBg<^wcK_(57wqlJ5CsOJY?lP3bn`f50}V&frdc$Xpn9M+X?BRqRq^C6}QJ9 zv~~}bwrI4FJaUk**i~)~bh7zQ=&zt{+s?hk#h#_9BAN>MfxzKTYP7A6HuGzkW+i51 zhyGcP)~fv7mQDJUj#?&tF=u1vb#C^r*hOb|@?DL|&o?<$BS~LvP1gh{XyZx^t=5{J znKQ6R{9@R!-=_T|H7w~=&<^7Xx!h4h#nQBF@EMKs5l%@Ei&3KO%lJ@nEI~zdub{8C zfoiIn*9hft|CCVvAkeF7=cIYW*KUQtAzwBj4Tn4GlF&x-z7%Zd>#$B-3CZO(qV&R-x*Sv=Nh>DiIAl2 zrGt(MKHN2d59R*DcKSeGI;-&%HLPv7lmFU7U;D8bfxQmItI(u{66MmUS=A~eT7mZv zOoVYpb8vPl`Zi7?e4Fi$yV_9^bAURhpNd{<6G@+4wng|t1N0h zIhuH%9_r8^MldqAcaON{Wd*_AA%s|-h#(uG2K1W zv7xgACBHId^*^x47tB1sem9@e%{;xx|D9<<&^p~`s2DXVkLK|4vE$#9}sAsuTka1sC_9+|H*&-aU>SRwz zK|(|X#EhP4$y*yGzb7pe=yU0_A^8uZ0N7yB3>X+9c)nY8s~LL`qZGxZIRBMQ5r3I} zo`C#Fqe!v3!Y6xoOu`3472;N}ZptdF*PJ}^QbIJ#XtZ zW852rB^0t%FLpmZY;s|E^4X`YX0J%l}JzjF0I@EUm8;G2id`R{B*Mcr##tal`oxH(_ zCUtC@DQNUX>MEM>VM@jNvF4E&n+~QuGS%Z>52u<~CG`Hc8}O)2%=Y}pIyNGoFCN<&S@Nwu&(J>*zHw z)VnNCvnd?&=8LqziJbi`oEF;2PmRGTy}2Fa9d-jh_}o$3^TRWU+)s0klR!iT~3Ko~c)Sgx|e z!!IMlhtc7~nDD_k2)Db!P#Tk$meeM1c!EzD0yHuv64!O8kk_ERI2jd&^Mi|#ILd4@ zk222^3U8g)nm(ZAhr_Pyh4;JR?N1uozHLk_ZR*wfNl9a*ex zvhkV0^4d+ZPljoa0H09D4y?azCoOije{DRbt%H$gOml4kaA!ji{kG}OR0Rk!lpF4q zy#$-(2f0ye+$cuTnDit5&nw;`*Z)H`7<(4qT8Vbmc2F|GuidO}$|Bu#FV8}S?zh|0 z`uxbo^jzXEq&lLPy&)lUA9^{-IDvhUyZXy+jANa<{$^^*ZyY5~f>QFi2w&hwqCVUkF`uHE#nZag*yb1H zc{(WQ-L8d_zVkvM9TF-ubWvem`g0g%Xvb)U&wbp3YVBRppgY~iKD00aBkN4-F661t zGw;0gY#xJpK|c$r!Denro~9a!-$wy6P43_!T}X9*KKhj3@s9$tWP0RJKLD}YId!4!2L9Lnm?)zN7eTUrbon|4%WYqBx06uMuG;iJdnFZ<*Lk_cQrnk zZVJ}Jrr+^`yX>~j>@OIjogE2+x^y!XjpoQIuk3Gn(SyM=a=>6r+zhM?v;T3Shr*Ox zDD=4OCHVwgR+s;my9kG|e3H%F<%&cuJJzhrgCvcAyyIusJA3zGM#yl#*DAKBB&ca; zQA5hRpHsayErF*)mw)<}-S#I#d5|6l9Ncfv+e|Cl-2Pc_^1VzYXrSgx_t954|g4wZl)pkHbItn-8%m3u)-- zYIp6ERSlMp{-fp?zm;6Vd-1XIjG!oX`(QBu%*25pjtLcGsuOYA8ap;xEOLV&C;jdy z3-wL*>kR|F{pare$YAVBDQGk(>qEGbu|AqkgO3Z{a?Fk_eg^SLf$ONo*0tE}f(~m2 zB{Tm8j8tZ*1)3a8cb?Smc9U+F{}})3jPu!q5r#J?ksMfkgR1xq3btO}pP?YXr-WHK z7|k&-(}D`PTFJB^yQx9AAEltFCWg0OMd0=5@U_=D09TE;=4NyLK+?#<8wLN!H2&w;MACJ9fZa@~SqsSr#wKRCL&=Dq)#YQNH z5j66eKb-7DvC_GTN41W7~m53ICBd>s1I$*^ZSn z40a=@N-C{$!}%+XxjD0jb%~Xcwj(vdEkv^Pg1$e^c+h6us|PF+!Pa@ILO>cAO*sxp zBTms9_F(M`;9Fiha5aM=8M4bGy+Zl5vP7idv|5~k@DT)SpUV=9ZpFJllayfh>-`mS;p-ee}xluCg+ zb!A^XP^CSsfIA`hv^$?rA&)<0Q0h0Qa6Q^7jbtmR68G7TFV)*d;@$LjyQW<_4$HxB z-IN@9kp0NPo_=*B8`_I#9{&f_vc@LenavaXT;qG~KEH z@>n;OiqZ^89RDxEbJA;2SWJR|b1i&J-(W9l81%;c*dS#rr~(M})`#YN!1 zPoTqLyU*S2-g`BrRWoSa2*Uh7DlGzQz};>(dS!k z@~Y$Me1mdEP7+c;JCVc)-q_(VG+4{=kK%f2jUQ(EO*@eVSS=xci~b|xKwiM#$+>^=)f`2eglU`CYy4cB7eBI zq$RJ?k1~6~J$bj*l%(Tg;S#iJmyzmCTw2V=sE5T;H z3h?(E{-#&j*g#?6yT9~=;_Y_q;H^TMge}n5M-cS`sA#n2}=YLsPU@YjAFi#sMruPNh%UgkvL!)v(aO z#!@yZ!oa`tP*8I(&&r`k=21pF9n(GkVNic#P~nIszUxO+s1bc{B-imLpHu8!f#55K zlm3YJ?%By1f3fJ{e-VSkHM^l>awy^};2RZ15SMY-Gt%$mVoGq@ML9`Rm5cs?Mv#MV zVr0b<_Fb_}c=g3AhW+uwSaz-z*_@g#z1=IJpQ*=?ng;&TQxkX6ykhS?HBA}}HT~YV z*S4MTj47YM{$@x`V41Ca@y6iz8Q(vc5}fgA;G^p!T`{1X$n}SS>j9iYJf85E0FUof zTglDv_;P(ky@+4QS3}~(LgHv@bcn>VCI0yzLt+wEqdr6vc<<73D+G3~i!vgOyoSFn z36W<9BsVXwhO)!JoMl2oqZ7-g<-h6Z`jF+{Uu*FXn}~mS2m7?9ivXxHHT9gog4Au6&9?|Zntobr4~c@(*fyC^1+G{*1xKjihKDx0vq6JtB^v48?LXp*VH z+M^Jeza6J>&!x?vh}5~Dr9_82lD5((Lu~9XK+3r9`;?B~M+$g}1stw(J@I~nsu7ND z$z?y-yX+f)*I_fY03lDdco#SRP3#%nfi;x^7jr^MBbcEA5!$jl<=$PbdNmmOqQe498#WAaJkxTyPk!83n}4wGl~XlC#e6SkMO&Bg!EzfVC6?AfZl5tX(^h1O#y0k zcc($B@WSrt!vK!S?d0E|R+p(>9RNr7%V9aS91}Rs>I^{ zW!*X!x}C4f$mbc2Sb|<@{Yi3~Aj!99m&;j_>eYR^p+}XOTwM?ZslwtkK3*0agpb6h zic*#S^TjC)i;vBG#CgMO7VzUO#j}>Q*fpHwoj%`MrOGePldirik%499buuO@v9cV>wUvb#>)bsc2wH$P@(TRx*V4S{oOA{Q_46FG{NVIrc6 zEFOXmJ*=E}h}8NG_+4Hl*3RpfslxPQ_&e}C46aGb2Ohq!%>TRE4zY}lh) z(BBsOatZ05wQY0S~>eSc=7e;0fGtX`WY2R{{y>U=OP5r2phw)y%8 zc_os*g}rFOHftR{X#rA&`vMHM9Rga#!VRhU4cH1`U1GAY0 zgACQt5jG)Nh$hMx@{2A4&imA%E&t?Qv?QGoEoo>`pVo3&u`lSQEG?bP6)&0+r_#w0@hw?vNBTaPl$;t~> zRYeRdB5@rpmzv@heJo_o)!{7YVUq^ZRh7%(!zIY|VZ?k--iBfl?&X|uwJA!+ILv|| zB2&I#EPkrf`%BbsZ;Ux|gZA|@qPguFKq9Z+d>^}(iKp{x65!`8#+*H_j>9k(F|7D7 zLk!CCTN}A!QMwN49FCK?+NTXs+z=vbrOJQJ*8ru{X)B4o;MODs#CDf_P3`G+OgXzl z%Gj6Qr`KNuQLwAh_+p5kXxoAZAm#>*k^_7XSFQXYYCc+QVtDL0+JR%C^Z&8QGl^)SsoiL z*N%cz>*UfyyZX&WhJ6-=v-m~RzcqM=3Y?#idv5Ut6tVPrdbfGePwaBAogAk-skfwh zV*x}T&zl{v=2f2l`sj_~|q*0%*S)6=GSsfCfW;0hi>>e>7oBK3jx>54^QeN_s-2W9{wVg+}T$eZPm8E-sxIsKK(FnbIuEjpNICgowJ+t zWiygo0eesbjwOrH$>Hts($RdE6-EeY&(exzK2GPw2gPSikbC*Pg>CJH_e}%6@a`_k zOjREIn3s7?FL>NO2Q>K^;XN52cEIS?fkz4&%N5>I6yN4%I$^lT@_&l%6Fv<@_u@$W zTy;m~QCAs9i%j{QxMHes^&iEekKO*yjBbmG1UreuHQF9&o0J#1>TgxuaC5ZBsZV4# zuhhj*HhY38OtXTLE<5b)HQz^gqe34eZImq$%M{l|;sa<@c)@Ov;*p}sdky#)P<<>e z#CY77YHiX&ty-vG*N(u93gk@?KdW2zjNcOf_ZJWI{8=96H-R*vo*}1^;kQOJSfhde zkH#t6alO|Mq%jn`fxq=qad9)}jKZDC^R3;F-L_3*_Qm?fwI1 zru$kk_!qcPY4roWX0`P=oFOHD;yfyUAj{RD^D4d{a0jv5tnZD(_xJMJaVn-TsW0A+R%e?J z-xXg~tZ=X3cOj^?X}k0fyuw~wga_Y$ckRD}N%nJ*$=Z1h-^$_go<87(c#AVr3O+;I zb=PAk@M^Z0_+scB7&YL8o@I|eH1=CBl{hkxyI$M*#5saNk>jCQNYou_RhwER0gGx| zsw0Pn_gDLY_{3yxBtr$xe`Y;&PNP6mnCm{6C((IFsb&sl^$aj;J!ex0WdO4T#2m~D z@qn&cuIZ6?XzX`B1}~U%$32?!f^ny1=likyTrZj2yW|CCzMbyhNGqGgBKLs=S3mgj zJcZyz2ENAoMxC*KxgpXYC$T1YlF8zxyE>+Xt-9Os96+h{_nR{H?>}iy>qM+oOv|XY z#vWMVa<|L#9@USub+{u)g?F|t;0#XywYyud^AyTztDGb^ED(J>h!f@gFYLV%L8K}l zsz#f7@gLT3+kN^#*~{Zzo2tPt!Zo}>Bc@H=3B09Oyo|O@QFf5sYB1SC&R?Rs9uhK} z(pMM}2K3AQKldr=OqW5Yy>mY^TjeTYKQcSvMb~EL@`X4pR9o)K_w>A1_rYnfW9XiV zG(4V*54Cd;5S?z}94PPKCWu8jOht^}u|VVQO4vpeSvQd{x7wxsV*dJA z{CjE04Z$21J4r7Ls7kIUdC4+sdfjbaOBoB~!k2P`-*A_qPbB^efizT8*15kcqMQ0 zi&|IqsSs1_>xWW%4iM_(PUHt>OK!Kj{TYW@1iAt(8aAG~*E$KpTrDd2b7L&+Zq!>D z#v&s)@b3)%DD!qKZ!KbpYUXiT<*xrv=Bp)b@h4ik@5cZIf(4OyNwCsv*kA~r~NXFExr#Q%#hlh2MN%j{7nuhBJwp7zuG>Mbn#RkJnNsp4m{?N-%f6O z5!{gV&^wPTMtVkgv6l!`dZ!;nyPB#6Uq3$>dGmSU`pDb+H&L)BgwK&D1Q23NquZoM z8`_2VUwIyQ*9G!!{}(;n|4OxV4c+AEZ!E_>dX2^aLIT>Kq@=HNpN(OSG_XZ>5;c?` zT0VC@<$sV?#g7SrNB3>L{1-0+e#fV$uV9p%B-bP)^czyoS(rX&_$>uYIV*;sQv&J2 zmnE_N#SD>z{B>&kI@_so>$?7sWwAfyOWj8z|Kaabrop0JFRBqU(CBafdi!FFW zy1+(^udu>^3nf{Ux-7N6M96q-RLjNQF#l4cELD)0I`_YO~*P zEHyu6zURD1+ZZ5WCOXd-=-Ct5T2fVXi>9JnXZuDZ{+Y4H!pgf%9=?08#%J+Z!-0v( z!;$uYJRIz{{+nmv_1g%>S%k?H_n7>TQs)KKHO8<03$s6L2$sd8`I=6Z8)1qm3}omiCNx?_2yMfYGX zkb?y{5c9`p=Taz|djdqo<+fM>d$RCKB5m`Sl+3_*y;{T}foPOz&6_lzWJj%qh`7{1 zH&UYn`}B{efsca-@E2ukw9%QoptO(Ekr-dYb^ zMcU36yM$8=3OIz2NbSNYsubs<&<=F9Dj0@w0=z#BA|YSll(s-$O;P zNkM!K)@ircOy9~0O?)*(albLaOr~GWR6V(4gQ`(?xIH0lk~Lmd9YP^nj+v~2N*B2| z*birh>GNQG8T-3%r#rgpQ(2@3ww_wNJ~dKsmWeRfH8o{uVVPcP^ls(O(x+kvX`-b} z6qMaGtt-l!F4a68=KE17k5)N1E5q#CXe{I~G7Rn$H{fnt_|&pXbifvwNalvljz0zC zXWP42$8OthX1eBM)hkgoLOM793nHe)3>-t#|M$*du{1;YoWGnz*^OaJojg9QIRlr7? z&o^)ay&)A~*d@Nfwi6k&Mz#A@UZoz1O1*>LSp%k0KdY5SCSD23SlWelckji<56Jk> zc+&IvCo8{O_@)+{`76N0j==FG-C&g*Bifo~46k_3=|205pH~@-BctW+!w;7T%;LRg zY8j=(-jyS&+{_!i63eb!m!+N0PAoDh68}~#+$*sf{0XD8zBVN%seh$5@mh!z?g?5` z#?L7V5f21H{A<8a+j^~Bt&c*xnnEd4VDzWnpVgIKG*|1!XF-kkSZ2-q^((Wm)IpCN zSPm4&W;h3$@;*QPd$7*kkBu(zd?e}Fm@0e}`Aogc@LrqjCwuf}lYRHbV6yYOPWGIO z7$zJ>PQ}~gK53ilRrh+@R{LSg@}yO{r)a(o0a7B?UL`mre#yAfM>3yaUD^M zGY}I6Oj|R)i4N1fwX`|X=-@4+Q9UGq3D7emjpAUA-+`M5SkE=22u)_+1%0{up8>dS z0&c4Ew%;3_xX1tO5$7SCHW|cufFGd<3FfqW0;E!A^BJq8HgVtxUFXQO7p7X9xAR$~c@@?nV7-HTu|z`A z^qZ;&Zhk`-Y2|)pNm>|XdbDOL*XtJWy?J}O0KcO(v4?In?AEe_VlJ<83QasAvsU?PrN90R%4cZ4AvLgiOO_O9r<|UU4v?xmbSm=xYPNDE z7Eds_5-JcVUABE5SR8 za6C8I5rj6&q}-}jMcN|45acb{9f=tjCsk@C65m!|F;32a_)yQvL7877=%oU_ilQUw z7neV3Q1XfYYNUMaHV%`KA`tzXvKbqtx4M&Nzk(*sMv;rj+bB<%7ekU)f}!?wnI^p} zmYQ(_FaM7_YKDpbMY2t9p_*~v|7n}FX)axC69b;NPRiXQkcK2pHKWQ{3@oIqle@4T zUHu3Z&@A@SF!>a9d$UPnQ@D>&W@-h-$w<|TWNN*v^-6rCiZvE^-EmxYeQMm1r)^=W zynU`8l2+ELxwkN(^c0vW4j@5|J`HK-qTH}DkF z4+k`D64QW?nJZ_qAd&{Ze0f7Bw#wONt3W`5t8EF~jUN+?&Yp1aK3OBBNeEla{dsgo zm;<%VUt3~jS^$qtLCE^!t-xj1KY9|okM9|kdj>{d80)zgJCODCWzh z+pT0s9d8-`6{QyIZfb?|K?$GnNj)I1#ukgdirwCP7X;IXq+4|mDW@*2oTSjc z=SVwZdzu5DcCuEmKdrkQam3F*;K6@0->hr%gP4jmA()nmA5L+1Sy1-ZIUkzECWrbD zZSv?DGKBc7T?z(N#;KyO+@`aD30g~&S#fom)oBn_tk*f? z#Qd;9&m7;ORq!O?w1QQUJLjS8?LBV_5!|+o@0ULkmkE94dl zrMIyudEs)&&4F-n{TVMM7nx2dt*Vyss?Df7N+aJoz>xA#yZJ;442p?*iY7V|i<*|G zc#Vq=;R7j;I^9X9o0jZ8=kI2^R>1a!ny~*G!E?C#)w6yYgF*56@^H}JaQD2NI;Lk` zPow5(ujrHl^8g>xSMbiJt~Wh2rtkHJ+4i>Cet?PvaaTdqebIf=WUR~a-)kdx#%V=L zWPrY-*h21mhmvPMPi2N&g}qaBeQ@7qbaVxf{cBIJ{c#v7)Q> z$zl{zJ(k=Qun?6!R}PrNn^IJf?lMF%5}6rQi&Z%LZvSH4!cr zB*Y|!qDC{EbZuE)i_o%Mp@dezeuDx2VhK1_sw4B?}9*M>K!l zJTLy((Pn?r6T~b3J~Y^Gp})S@mF3OY*`V92Qm8L3p^ae#PfbzhN_xrecPaih$WMG7 z_s`P|qHh%==D`NLTRMO911JT`1 zn-wdj>h_b8X!4-t+VqbmCziRFPtj~Amizgw)}MxcXP1^;`A!46S+TqN@ooqcY)Si) ztgivWI*jCPi_VpS9J9RJw?vc2x%3|eoIqb%vw*&LrSBlWwx2II(zkvIm9FZ-0gB+n zeP(JGvpM3AGl)IA_a9>ES>>XPmD7|-WPU7z?*dOjf-nS*+jU+vk}v9y$cr_c8X&Ps zw%6_!CSlPD6-(VCB#@%l!=lLo!glDDEP^$Rj}-f(H|x3=)9;MPsPn9VxsNk_$Jh36@JKOeeA`pG?iNc#P<1v&Pn zenT1#mqtl;l@5nf4aO%hw`y{*Hi~Y{r6F;PM$N$LAiu+A|MJH>?4lUZaXBV6*PM z#{92cU+%oTHU0G*xx&#XZU{c0U9o}zVF;u1`4-uk^d-pj)C6+VySbIxJ0 zHTQCA0yV6&w66q&!8d~A_!G>WW}KTv(o!M+AYuQ5?imc zL=1kthDN4uQ+-IRSx21TU|iLQM&e8Kw**<%**X4#XyOM9>5lpUPpZ$F*jRmZELweB ztd5i4hr~|e-ItzUst<@oBh!a)-%>+=Rx4I?fTlU}M);NZ#*@2FEW?J^E^NV{LnOHA zNz)@OKOBl4ABml*gCQF^Sl&^Ug?Qun>t`RJ^-~nv2KOZ9V&aR|Pd5o0>%XWalT!bd z>SOX^BTh)2eN4W#0oz+Y?^Y9;z1H1|sI>^n>t-_Q6(nfa@_K)w>-h(kS22U0y=G2V zz|2wgClA2BCFctr=S8*`p44yqd2B}i$n?5nI$PZ#)%oL}AQM4;Y=l{RG6;6AgBpn4 zi@&To)0t3e$efl9yNxew`C&xUehsNp^VJR)lX!U=na(XM^Yc@`om12D({AHeQ7ZPS zVK3Z1GaQMb#7mFihv~;y@z{M*5NT`Rk$hAqrmi_QuOkx5LtT2ZBz9?JdU0y3Z?mIi z!-&}DYY7i!)A9E^)*9L%^71x0NzM(HnT0Al)L1p{HcFyd25X8+UpZKJ7zT^sr> z9(yLg#x`oNy|jUAx(5_#W;1K7naX)_Nq|)};yoY(in-qgBn_YouDYLCwA@#trZ%Js zb^(s#{-R~a-UXj3R!9@+SZKd<=kvWzv$zxRO-b74Oo_R`CvI&*FAJtr$yjVk{!&lP zh?`!1W=115BT_}Ib*D%+r6v?JE5SlSryU8R3@+Vyj{yAKy{_%Cu2VX2vnd69B%Ig7 znpf`n3_BIO2{Fu;#P{x6iM(Jgr`hrhW~j_%QOwQ=&A7-w+iO&-SRS`9B3Bp2N~O55 zI77j}O@46*&>VXtzsBybUFsW-moQl=$S;7t-3zccc%t{23yWZWB(?Q`Xsmq_SS z2qo>~a9>R7G<1J~j%}P{Pt<_xEqLdksNL@JO>4L8%}V&I#$#1XsCKPVvMJf|PL?ls zygyY(^Dk8=rW7lNBG!mT{O&jjwXMX{H&=2=4eoVPP(#fP2}y>k;-iyVC+d3@34`a^ZDejxo87h)zp+>iG7V$^1cBT_%# ztez~r4^@Gt-J+=x=m_oZVAcn7b6X*)l~giA9y9U~mIln53eY2qxto5fuAom&pQgsq z=5~xGr#@!S%VLG;xxWf>2IbuM5+s6`#x4EVSKVC8S5pHy0uwfMGd==Eu>*Ho=7PtrBbA7DItDfxmyW4RfkPa{_ z(98=0D*%>^?J@01TRHId2+lfwoT57j{yTZ+ z{el?xU(j0X#!sH7US6bbx!YB&Qx3jNd^$P$2Qx=5$dYKy!5^1Am9mie0nyf~yr$=p z%|$HeX_HvcROPN~3i1-~vr?bm#)*b|B-s)RIv$?0JNqt`3;6m=gg0To5U8ggs(wr|78iE1oE2V zotY)v)#JtH>v()-9WQBAm7ksG$xzT1^Ni-M<5c>o{@4dm&iA>ui3f6FOt-x8JR- z-?U);o($J-On>G#?9_^79yvGqWTmZNl0R_`(AJ5e-$(oOd$fGsqODRkdK7=%@+)i$JE$ig&Nx&fckWT^b$G5W zc|mC(ZF3c;Co(_5rK_He+q1i?WioZlD|tEG>wT|to4Q*UssA*Z)MaC<-AyO0@2psh zS;vnWPU8*A-z1x_K8gaJDtzxU#ArYA+Qf%3pjz}j)7I;NMfccYrn1*r{<%Zq=Gzuiy6DNc??1cukzlTV5NFOkT)K-7!tL6i?TlVzaZ+im#5Z z0!jKUXBv^|$3)^cP$YG_Y3Ezlv~-SW+9#SCf_g4}uiu-}p}Xkj9n#G|$Fw;Z`PA0g zbc`l`KA>cV-(4Ea@Q%49tN=-Q*R4P=-XpK+4B=^3H?uQVHF<7DrA!MJsbhxVuI^(G zNwtpMuirv<6qd?^uFh;n%#xWxJo5%A+5S@fjvWA54gmjKi2Qbg+u^@8W+`bDUvsWk%TggS!mHgx3nOI}k z2G(`dpn3ibp1nWV@XV0HW0?>vgDjEw)|ebWgDZdgM)uuxPo`huyWr@rVz9}#RG0I! zj!{&sNRQ)tD8Ie_{;sJFKZ))WFN-yCgG?8t!6*6beTnRnpSxlqxG&}k_Ef~Xn)~Q} z($45HzPOX?r zAU>;q;Y~2Gf4JGlda0k)x5N)J=j*v|X%NmdbfHOKMqypiL^VQxosLB1%r0J9#W#4^ zNOToR;yyFQ=8Uy3bR9>?8OgOlQ16HjN_5UDY-jN6UCbESll6R9C))&`jOIXKS<_L3w+No$Qgt~mxs^gf zlFh|#h{R=LQO66SV?8|UcBp2(y4W+`-}XkGN_z z)kUH!g&swQ#G+;R{eFjaMdG5aNX*s?&ZG;_yx?O1*lI&L_u5H@O6()T?~;T43Q;3P+F|zxnk(2zsJz+++ZaBES;IDy~52!wI(E|F2iR&=(x}HgH+{=v4xl+K|~ob91WZcQvthS5?ooz_u#8Lm~S2PBzGxbzTfmv z$&;p|1fDwZgUoq}R{%(P7yg5a3%x~dc@4Eq`|8@6lY{6Za7>V?=e==oHw)si0Hto3 zS49=P+DPtBdAw8=V6)l%wR<3_ZTTpfcyBi`tX&Y)?(JSKS8dXxJ{{C932L7g)K-2N z^v2s5&pdF z8A*?Lu*;DqNs`*r_^Bjch$SGS{0Pd=kVZ_FyIFL}F3-cEBVx*t(KLEqT%5OUKm4CmB9Q`7iXMh?UhB)%qYyG-FN`~&tG%LjMu{-CJ)ARg+4FR5#p z82_{}9H>>l*JcWp^)c64r0pAho3v2i%n_kk`h*=F5kjFZGJW5b`oZ| zw{TSy1A|VUD6K&Z3%$$goaJU+^SIu^jT$k$pz?bx+BO6FL3;n2G= zTQshkzFzg?XY<*O_z+4i(V_F&A+@L1C%F40jh=|N57vykaTo#85h7$f zYi+YU5!L!sz6bF$CeE!#?_srm-5(Cfbb3`1eRJ&jxOSBB!3Oo7`%9U=Cl*-{awKsf zfa&<1yOX|5zKN~W4yi||KO@{j^5V+P;Rk%zzCwO%KOo(CX_m6rTpPez#>Ios_S~(;|l3)v-Nlo z*8E@BqnoYA-Irw7pRF|lgo#r2{RYCbr5vF1+kq` zdNy{8+&TBGR9#-Dy#DCx8@t8!I77E#Sk_Trs$d^MrQ?cHDjRL5* zS$UIVpQCh}y#v3O$!BiVpUr|7hCXJ(5F_!2@!m<3V%Ja6Lhe-XTY8wq`-$M(;mpDG zu-(O1?Ntj)p-SbZ4SnoNf=bJS66NkEWT#bnIP>bnpi)&(se_eMPv>g{G+X7ChLx6Q zUhNW8stGDh4=P;|l&Eocgq6r{Z0*#zPxkY}>pcTL3r(Z3ee5pd(2I1k?uzKuxd)O0 z`|_pU7Fgqv#B0gz3tX;I975%P%_QsJvr+k{iaNUlmNrQ)p)vCR#eGL@&?zM z&!hJAQ|%nXw;IgJ>pj6_)yA*b^wF>0?lYdGUv50mk4T&?nxpOQtYw$85+{7Ne&rrVqT!T8HoQnzKv=`xUrjBy3b&FkDp)WEogoWGl>Q0FC0h|{MAiX1V2=(dA{L}BNP2*qmX*+ga`Ur-ppA^^60Tgy$ z!A-l!Bd;F@@mPws*&E~J zd@r|OjIhKVf|V@do~{~()~_N??MZVgaw*0KgWzaGVibNJ=2jG$tat=Etv-u;MMyDi z?WQWPQGrO^dKOr5HXGcxhbVZt`5fQy`F&`(ZAI*m)(JX?e3N?QZqN&|9DdT30f+B6 zDGP6}5z3c^>&3DfKaN8*`(2Iud&5o<5`$bXLy*497Wkb;EPq&4Mn!D85Q2*4=!Sm1 zrL?y$Fm3?q5B1yt#k72|@q@I&EkHP<#*RcrpTsMW>M{O8uqjozaWDR$D5l$4c()Uf z{J-qq{~j*`V6uz-#B^?iB)j?zGScyvw3?Px&d}HF*kC{vTE;x;Jb~lddo7Kx7Sa+LG2Z9Syt`s7JRq% zzP$8*&o>({RGWC0#rmF>b1gMvFj7E8x!5e8a*c!|aUwhD5Eb1$jK4;%AaP7C>``7Z zG7=QTdNriZmON{B3!qdn`oE|SWYCIqZAjT>5)?86jD$KCyK2ZVu>d1#%AYAn8$ZR) zw(Y1o5!gC+5YmB&A5oQ?8c!mmgb8(`i*# z!rp0Jsh@wLld+e6mxj80Us`9HpzjBnf!@AHFwn&5HuTl*Jd7NO?Te8jw#sMqCow+^ zpsgFniJE%rxP@UE2+DnhFQuWTDzEQaVP{oPvIciCVj)A%w(!UQQzqw3fSlL7L*h-L zJ9D#k-7IW*f;D)RcvJBzAj)hNbUWo#+BT>(YN|_iEie8q=Rcg?UpUo;n>Sa?Z8@63 z7T$ldT!=EHw4W=1Q6dD1(h=_^a`-hk{54X)M%ynQ#^@mu?{8c>RywlQ#%B>;F&T32 zxx4#l?-BtwOCu+ScgS&tI(!G6OGMYcpdCjO00igVxOV@%jy*#8Iw*O~N8if zlLGd7x-g7EJ;h&r78*8#%SRZeOuW=|B`$+0^c$iwJ3N6t0+>e9QTeHb*t&Q&mYA@2 z!}eI;nSLIs3hj9&UqZQu&h0v&C&u^zrL_+t-2hV@Z$~t-b^073-_W zun>ujZt6wiEvUk&0oz;16r76B+x?`^R?Ogt~&_ps{iZbsJj=@zbcc~(rPy^{GJ-npd2zSz+3Y~0x} z*K5Cp{jHfL%#%bTt!udjOB)ZH1|`09=kKFk?{8XH=BIkH>0aNvb>*gQ-<(q4TQ_kX z2p`9On0+)gWn_%n4QAeNA))hi@&9lxT%;{#f4_{3)NsUK(6-V$saW)^X)EbWE2%lDD1+m!Ei_-h1MitLtKq?j`dU`%f`p|jR42W@K433jBQ3lG0GIXPP{?7b1t&7=tr#ti&~fP!J$ zvPhdUkO0fs+S820-{#jWJ=#IC<2^70y4bb?TiYOwE$PR09t|_QEOav0NNIFA98LCP z#avSB$M(#|)U(d+^j_GqrYW=hcg_W2-i?-llyheY0c8j<{taiU8>ovT9=7zw>AzvZ z1a#c`QvRUSh56ubdLVBz@>Gabh6psklXKGI0TS~wNcZ6(0n)unPt2db&rsj-$<{VN zuUu~(leN%fy*u+#?R`$E#WEf4T@sg^pdevli1lwPTr|;cGdk-Wasf;HbF zh&ryJGS-97Pz!AG1SKrS`jAln5D9R;Oi|0G4{UzEEc{;lzrSx2>T{dd=fXxfaXz1e z@z5Xl(_F_^l$zdE@{mJy@7~Z=?boujX#AVEr%I|%N}k;Mcm7}Nhx#HX4Fu{nT2IQ!!1`|69jY^i0~s$cKT;9;9* zg2%8O0(h);?|bK?hev(yf=K*sAkzq|XiREjo&38L*58x)o0;e-#a$=bpWop`+ijwY z-0Q`gO>_`4Gn{BG&*4PdHPLC5j;5NB`bNq*z~2QB`1wQ`Qpd+#?Bh>RHFMx`$*BJY z4_DZ2e3skme3P`3e-Vjq1gz7g0SnVHs%UF}d~7AJ2pNbSw?Zrz$%Z7v#CUY$n9_rYaZK8_l@O zdI-K|gRgcY_(8LIG#l*)lEo65@1L=z8B1}x6E%RUx6qW{S5UfRf!nSpayuixAlHow z$$Ss5B8du7L_#8A^9#8hUNh~80P>hc1fFg2qkgNqsSngzau&WCMmI;g zhI<2J@_E_r9q+i?cQ(&5!`-_Z=T+5h^0-d!uq5;mXovDD;2)WIh-(g#Y@Wz&1ls_% zy_=Y)Y;J4aZGFD)JhNh1+uSp*>Rz#o+cU66Qp1*gC!UdbGqeZApUE$riEqRovEr0aPT8u0B%tIe&OzROFI* zksU{^jO;k@8xE_Dof+--a_qQhs`@nnwJurkN|gB9d7l@UdPGF?F$InJKh-7{)Z_Yy zH1v6;zHMowq3)Q1hVv=8L-d|#Vj$tH?~+`M-Sc^$7DVTLLX8cBQavNlCFGsR>XnHT zpiqUS7dP}<)`URc1oU2~*NVB!zxk-HPVPwCTY~iFj&Ah-rFIJ(%-QpIw(nbiWGUyS z>gImeF>@;T@_sewovJ=%#t~{F)$5OBu9;n+XBMtV2N)AxEtETdiu7OzypC=9aPj=o zRjg(4hO&BY`0n2m7`u>R4nI?zsVI`@FH*6Ta_MR&nWYc(sRuq_{he6DN)>;;$GMq>XST&0bv8lu{ceTHZP zv+Ykv9kCTri&dKcF`V06LIySF-eX8;^mGo^MjDIVDq+r9uf;?K{p#Xwf&Izx^!3!e zPj#32x^E2@3n6V@?+yhQ2l^z{4LOWpYHWO={AMl;^SUDUC`J)|?X13Z&OO&3Vfo*i zn77WRDKhB*d5|*vMf5jgUlvOg$OIZ01T+o+>XKK`I(HfDyZ&gRER$CjW$!vC+M27B zmT(zKO_*sRc5Z!SI{J)UUUi8LQu9hy%Rp#8mePJlO=u(M#el$hF`&0QXtabu^NynL zF1Zi{_)boD@HZ!?!3T_tt(hFoKvW9HIKt3O33ahHllA5m*BjeC)kBFs5kUui=QY(u z`>l#5J|D;FVCAG(Ja$;L-#Q&f9muaGV+Z={**A6%!^O%nf~e^r23uuvhxpJ`k9Qg+ z+bSo$P~a0ZxX;fHx26_Hws%!K2-W<0rcd0iOFWywe;nfp;Q#7L2LHsG*+l<9kYASJ zQoXWYu09i-a_0DjO0ce+9!7xeIa7D=GK>UGWDYUQccGMeen`~Wg&-&L* zzR*Pe6ggp{srnkK;fbLdh9ugG8x?&2*uGC39ej5u1@9N@ed~nbOy*V|iHr#0$(6h) zK)vo96zGMf@tu$?SQ(ifCESfJh`Iix8`qvKQPKd9>i(Fx@D+nYe%~WX4P}?O%fB>~ z9gGe)km~F)fYGRO+trmuYNrhB?XIyAHSga*CV|F&=MRtE!1kEwPk6V=Knw6OM>Wyb zML*7+@K=Yz@o&oUa%znV24tNvSj;}<{48G3EPY0kH_ThA*lfi5ba0DKz5JfcemLk%Cm&8k3^o##;C@fw& zg+?IHRAIlPgodb{?vXa_K}Mz=&MHPz@zQUo1Lj?kPvj@1DP;>=$~DBg%^%dHk@Ks3ql=MO)34y7S%rdD3ksl)HU*HxBt0mM-jH`v-?Z*IXXcEp`B$b3dN) zsl@$Dbm%U!YU9dz-WPk3 zyklE-JR)r}RP_*_Xrt4XSnGlU3p!Hs58yaq2=RX+3WJsu_QnX`*Rh(Ybs=z6xna1! zTG#)GADOZ+WH3gl*bX+=OCtz`A`-VtLz1=S2)0Q4dWqy@!$`C}Qz=zpOy`??O6Ybz z{VZ`Gjg%g5@czmt!aEDN8|J5V3TLX@_|rPddRQOY%_0C6=76hD&=f>Iu7G^eenL9o zC3w+-!Ao#Uzrsty6WIeOxs4ow**(gA0c8RX#Yd{RB2C&J(Sr@JIy1oAAbqXdOqLdO z$M_K9XLx?3ZG^=1q=llb910KZELtnBSZknn|DXxrTqc-}3SprI`PF%b>WLw|On<;X z#Df4PecC7ZBwt{94xhX|Eb5Yf9UfOP62m^^m`5;fVb`73JnF9GWn>qWaRRVqY9*G; z=)o-4Ji-T#+ePl4-*l)2?EQ33Yq@&o;g?Vlt<^LD8<=PBlHD~C*{d*1%8a!>Quk99v>W~6!P{9z6894{C` zLCUw&7(@!kmqY#;Tcw+^wR?D^I^6 zWCc%8FY}#rn~#X4V|e0 z`O#zIHcxcVvF#pQ=bRnR@_bqq&l7*jXR_(Da9?Y`F}q^r$Qc1p(xt3pHy5?`A)IDtVBDbFLy;-dvwaoe^XBm_ z9+i@~O;L&N72G#m+&DLVE_$KD61EGc)WLzc47+hd!4xr@6ZvZZT*vHPk8Yj{irt^i z2r>81aP{<)>jmB#@csDWF8ZG-e&*}PEY!g)b_bh=G-ABj8&idsXB8JY_hZW|L?bD9tQkp+4(4=iCq5gUbF+OJ{(AlTb?=|zyfohPT3l2=cOQAG zu=hd8Mj!yPQ~?oFI%@1ecp8cC1rJN^1SlhI2LZB%BpzSBz_IIx>w%l!>PPAU*Drn^ z@Ob-Vu@%?;cQo1dJdNQNQIWDpTai&@y$VJX1*MVrzbOSU<^C#<9gI(v72i(;c-Qyq z;6#J8;xcx4g%P4P*Tv&)k6AnR+P%O!`HSV6hesi%G8*R$CE5(#ERF3U(O)LLu~_GD z-jaK5i4x-YlH_l-wv^p&StR}(!)@T$19>X(1FEmMzc1XECWDbOSTf^wS7(T?_x)^^ z;jy~2ElApXFzXWQBW*vbgDvBvz4NZepz=Zl^Kmu^5>BKFM;>dKavum|SXw*B&{Po0 z;_6X@i0v8$svr+E6JW?efTCDmp$VyW09^@ZE{g`)@+_$h<{g=G7*i@{C^eXrZ zt6}#+-LYm}XZkc+3gzJvYsktiw%6WXbSqGqSwr-7z8MY8^*K*YsW!-*|3pC^r@qoMrke z%4PgnMxW`4g0;~Zg!<4yHjn}T4{vV*A7yp@{|87UDllzs=U0b!)YF$7fEP`uA+;Ax%irg_`uqfb0{_oGZ&oeU# zwEca*|KI5m6`Nn8=jcB$y zwqI@hT4;6;QN*%uM6<_unvFqz=17qxS{+jmZt1<-1Z)VX)-0w2vQ*0?22_h9+410H zj%txhwB~6}*IQ)))y~k^shMHs==MQ->GS8)?ak|%4XY=l+XJkw(d8Uf2@csA-4+TQ z@wsC?ZPuP?ec^y%9jEL? zzY9J69s~W3hki9v&~LzvTJ{3XeD4GL)oG}Jd;yPK@d3n$PUI{15ML%ozBeG?WO`DW zou@Er6&h6-8j&bdBJ&BT9MbQ*?a*(Xp>LBuM)T-*hP@8xcYAb6o1^QMOKV_2zqbxB z2tDvW*Lk8 zW@w`lYuNAa#TR!IwVDAz;=~*+%x141gQ5BkAie>a`}H`>N^MT+l4qBfX@)AP5yV>q z&eq^-9azcOA=i17rNU%D!X_BVOFH=u{_5s^&rYS#RLTN9-4rKW?uAqq&;=7!-=U0E z2kP40s87wNQ6rSG9Rbca5Hk!@Eavv2dv|5Wafo!{bk*BHL_3v9g%OM-&NMp09Oj}u zyhQ@TSDrayl)h&PDwL<}k_bERO6LT=w+{k*^kdhfyL(fS&U>MJJgJvE$B7jOHa*9Kbn_*GA}L4 z&|g>U$O8Y`-Y*K$RKGMxB1LXvOA-_cqUq`*RvWZ#c4_9Ze25vq>=B9FMP}DD--1Ys zZpbzM2SUI5xtIo4T`p3GpSfp-3%-q&I(9drAa(`Ot|F$NC~W&6yb{KpD~ykVWk{Th z+|Xl8xm`M)`Cy*Bl}J^UNIRy!Ij49Uthe?hsgq8OU2iK$;5m4gIY# z);sQvIe3)wSR0Tt4VbNagy5kW8mWYp8Ahm6U z|Hk}o!v}h6b>xQqtgC=hzR@qJJ(RtXCE78Biu zg$B>@#CA7hm01%2xh%LE>j-G6TtKCX7z|6M5?KwUoV%GI4aL|>+znz(F0xC(F@67t zvi&maiV_LwimHIkN_el%B68r5@wm5-7s_dV?<6mHQn?f29$%vtX(fPT95`~(fb^Sz zvm)2Op?--wokN+rv^RHX|KV{1e_gVFc@1_=oe*og*scH9Y8ah1cZo3NHTMy2PfZui zaDCi7_Z2n?1u<{=8PI40oWTx3^=L(vLIsbewk`*xFiTm^DG+ISR~f@uHvC{`W2U{l zIhexojH3F2fPPblwgB)lH}>1r;&s##n;~|4lNF*P?g*3sEHc)sNVAT;xZ~(p*i2hq zeE4+HraQue7eH**v9;cLCU%etvpCIjR~TyruE}EsSGDe@V64j=fCU4!% z(OLcvWCA=`CVaKdU@-F)e)1%PM7iSyOB+bcW)TdH1zB8mDzEjY^rJp$>Ho%sV+Xqf zep)XXTpI_fJj=RF`hCyyF7+mlcbQ(}mj?z~`9&c@$h)?I#$j)7>92Mly=5lsmTOc6 z%)4H$KWH9s?hka(2NwI0U^>7(i75${Er4aDm|TDiAj%Q2&V4aBXj(_ zz91Im_RqFH^rse#s~dD-dHuL5V@22uk4p7-E)n(o+pA`pxe8Z69ZFTZ6W_t0+8wl- z*u1h~lhk9{0FI`nxANouOuWlFdZC+j*8TztO!t0;k>V=p!!5!##*oiA+E^uMQYOWE zSO1el3}D*$J2g{3<5@9YwKm>oDYlrVBBHR)bPe*Qib2wtf_`k;|OHuSB56PIZj(;1I%IqV{((0 zX&O#DJ<`J6=Cm@<5k~+Kt7s|${hYi zQ-$R+HjBqc;-B$SAC2lEes#AR9Qbq-Kam@5;QwRN zgTLd4UZ5lnPkucdsWvr)MR9!PQK`Wd?tpd`j2%%o=mBB+QR#h_EBm;8*xsK?LK!h{ zSI9`YiREp$ObZiEAH_kL%id)yfm~*M6zqWw!%?Gy;!V_XS(=f0JwIN^UIm#-$&fe1 z>lFosO$ANx0QV~hI&&Z7pIr~>wc?C$L+5v*Nr6>=La1Wv4KEk@cLgMu21#}L{$(|H`0}+oe6_|aY?>5JJ>5!1ts3=exY9N7kxzbs*^J#_R+#hYnSEu%h0=;jzVV_5{%pttLDh^spX2N(l)#}7p-`r|IN!ue&X={>PMly2*Tv+)1 z0z`t%XIWSbm2ZiTbFdZ*)Bm(Ym`;J3ku@hrl21@7vpN5H($8!!&J8|RWLAj>k7`?; zAMZJunkm$kenUK-BdfL2ZEiu&6TA-Ws$J|g0l&s=fef9vbc>aU#%H#YfMv++2t8HW z6Nv#~qB=}O!^DU%Q6DBcQ=#f<^q+D9dL;3@cqS^NVs0SPbNRw9#&?e@PW`4>@>Qux z(k;A9O;q>l(o>Bn({{U;eXLUntTIgqEh5cF$>#6TjS?56LMmk$OxqQJ5y;RZrEYLZ)ke8^jnynI{QZ_V)JQh69Mh&Gf@VZ+Ojj>{S(z? zj-V~mC)6HS56Z1fSXb;0sWHIZfRSf@Tx?f=m?ili>sc{L4T^r$&<~b1PcOBpP0aU) zrSSYcyZ8#ZXtJ=}`vhqpGqFtNQ~k?BR~C2DD}D*aSFNC?>AX@HDJ~7#L%Ya26KOd@ zf-+0z@PQW>Up~qAi^U2)bzymNTb~?%uS;K09gR;HO3+8U`c19Js_5{RwU#2Ea zCCf3X!T+iy46^vyH?IqF9Y78~uL>^5@q!rsE8R(2h~*xIB63j3AJ9VvT`+Ro?l64_ zdoW_AZ2!*PwLpWpVzI}L%ph2b&$Dwf~|+rf`;uf^7qR1r*_aqrIGlTyknoEB)?Ca_&$9k1o`u?LTrj86sIqw zoP95~-h}Io@Cq$#sTKikY`*iFptIJXbGGnG%La4Q;Rezn{r;MYIl#_oLfwvtc=8H8 z5u++`^N`)5^W%D`u>Q)+o@OS-glN`vRFcfpLY-Kr7uxehdWi7eh|k-@-Zsgn+7$sA!^X1=sTBV z=*a1xo%r{NuKc^}c``YQyW4GHZ0Ipc@$9BQ4**8N`$xj|1N%u3zjckyav<62EL(JF z>Jf>FdHf!JZf5znOUx`UXjTZCN@Q7nN%+P9EtXIgNgM;7MAN?&k2Vf`BG0wy8^xGw zQn$D8Gc5H;6FW{!GLY+fx{U-)V3F zJkorivd24x1@U-*QN?^*Qh*m7E?o#Ge$2qpCNuAWlFk;)w0!cjCNa933r6#RoK-zta z@)Xpy2AgYU0ME?NR+5UxS_eRwmv)hfPXu&X28(ozJchUZRswWwFcxIK^g>61w4mI3 zABs?N((el?>Ca%T=@-~!GdhUs`F8I&wv@d$yAB*z+;)@O_cLj1dFwy)7fGB%JJ~P? zaYH~RlZP&S~M^)7#DsWA{B6o*s@a)R%uuf5N zuVSOxOs-dPoYfM8?6+225#$M%^p2&v-*C5sdvl<4Yo?a-`r5&U{6UN7wOR?c-~_WIpCxNz84GK{{@p{z|0Qk`okqAhLQ5q?)%O8dJXmvL z8OW3T(3LZ>e6GeUb7wEe9V=vNY_)qr%s+h%oJvPX-qOH1_(V65m!nw;reS+%Z>0R( zCx#UE;DGMBjJ#Ldd+ybx`TQ(>;{y7c^`A}MD5j&sW*(nYH;P>q0id!44oA3JmO6m@d!=p9G6*=H@-05fsasXx24o~>bu|RymoWncbnr*{4^Sl zW`rM&Y$5QRYIi0)L(;3cj0ss3(deJY*_8iQ5+GAvHFYQ3AxPTFUAbKPIsrW3aOV+~ z08xzFWSCF3HUma9e350@(liZ^8p$u+?dU4uL=IXewzt9^$gd_;aLC{GpjvU>dV_`J zRTyc2V>IJ-KvQjdIwx;|Uz=d|#_~pQ_W=23>WFicTVFsbWbncJ!ny1S)NRK1$o0{V z8j~?L>$)oq^JL_t;?7^35C5G1jm~NLfIX}folhvxi=Q_2Gf-+^293%r0jNvd+O;0k z?dlq!2K^Vi%YGwJ6V3SqIkmE>RCS_t%-plu-JH(^Nqlw=Vhgo<>?Hoj{*k5zZK=l2 zBY*wQfiS?W0Cc>=9lMWAC++S7C`540ooJAK{XVrG55qYI=P|t~BvA?){$hus0{7+D zm}2L&Js0vtiAwtJ?q6x<$H=fnZFgnqt5f+WRsPRbK3HiOZqd09X@2lpsk#wtviX^= z8DWx~CJFr58!6^!jbJ5R|G(N0{~yfaKM2$n|M%Ju|9{aH|HC{1{(syB{}n^vxPBii?zgOG zxowfn+Xmo|&VI-{wn$eN-wGYPuny9x^)(NS#i_GKnwe90!A6FLd%_r8tM=C2jN}X62)%e z{&-A4&kY)QA+~yP*9RH2=)2OCO<1hxQ=w^$^e^SfsNa2yJTD5_&f}ZiE6}>cvw+53 zJ5kv<^3)|i#i99<1;Qoj1InHGDA8+10^q;KUZ#e?r4UEF?OP(Ie-vJ#S%f93YR;NW~?#@J01K_~ha_oEBWym#vFgzeeE_m9;WRS>DrBG|)?Qf4EiDZPg~x5( z^5L;)-wojL-FpE%q*v$r|3(L0K9YAM#&P*e;i@?kH;5D@pxJ_%*HDkHt>9W&@51cigr)r*NUH0o~V?}T};q;bU`i{g^ z*_;~@&9}D0+711%Dz=a(kROsdANj*pfS-$s;(_(T&D%B57rARxtJey2CGVXIhcsFa_AF1!#G?V15AyrBo5cvRHw`6`@w;gS`d#A7^hsjdzRO@I3h} zLLNpuVpwc)dtpJ_ww>s2ba~16i-LChF9P@L(&hi86xGiwbWcM6EQap}1E?B*1B?Sw z#bKz@J-wY!yWu&^p7uR;Acg8jd`L063& zhk}ZQ0NZG?osG_Q?kYrO%%e+;6Ll7nBh7ZgHY+0M-zO93=iZ!nx$A6BOnXx!Lj9pc zJ_cVOiR#*oy3_-&0FfB-bAQaUD_n>Fnv{v?G#^RhBphqDF#GHr_A5^%nyz;Bv7a*Q zvi2`>M}49yuUMQpmPtn+!iZ!xtRRZx5;yQ|jVO|Q9Meoj9*^EGa@Y zSDfvOnm65(zHGhf8~??6_W5{W{*o*_GMQ@ci?|zDjl5Cm{+&akQUf{NzYu1yCx-rh zr6Jx$60cI+(Cud=QJnN*SJtJ^3~Yf7*McZ@Y1`3^rjM4vEYkct3NYmXgxXzC_OO_h z{wRcjT-v~*&zoI{x}iIASr@fXb-W@uy&dfB<<9ydkk8{`%rs=wYMlNkf+@J|K2Lve zzn}UT_dDy_oV{$`P9guxo@Yw;zNZ6z@jf6JKpdvfvUX24r`JzKkA(0Izz_!V6;b9y z&I)23+HsARANTMw>hSGWO6l(`rq;xlv#p7>vo^kROZqvS=syr`y6;IOP`=)Fhat#m zLbrr#!qa5oPA(6|h29O>w!6(SO~RKhhf$S7!7$ol*AsH*9T5|Ghqt3U(XCcILUvci z%|qUJG!639)T4_E-}A8D&32_8Re+L=@8&fd?i+i+uwz$r;94{niT`;qyabd?;@sz^H=o! z_j?pf>udd}+E<`S5~HD{t(8FEFS^nH5LV{;6Y@(0H<{W#uy`i#=twp=m&ZE2BOu%} zU9^n)H9I58VTt-MQ5`0tmH_WYxYrHd?DrQ6Fzj7}n{K?V9BkP}T1LWYaq1dMr7yg% z)iB++5kOct0XrN|6goNbBLj`;_BaL?}M z<*a#D^qTNIzxzY*{xA0arHOPqJjx#rK25Su!@?u}vO|vu_V!BLX+fqN*r8?y5AUTJ zTq`l z)e4_=c~o8Up;o##-+~qJT+q-*T2w{TuhZ;7*t=460hQxnKm7pii!b z4uu^!fe!e7C0-=IIzTT=+3&YwfzKk&((vTjaz#xX5OiY~ez_{9p*VrHes6o3--*M5 zPT&huO-JPSSm556WgWSWj$|S8{M+h?;5ex2jTeHBaKjijx@zcpJG7sE+?%-6?GFp} zu!z;OWSn6=)-n2O-+7yi;PAy(Go}8lb&rAIqVq}cJNY)X(2J~WWWG&<=;wx8$!_*P ztpfF&BE&oPJzun0UeDJr$n|{7u;-D)6)aM8yq=}lcYHj$SU8F2f#90N!z@$LgM=HF zGqy%MmMQ9|`h_8yyhgRGg%a10CZ+k4@G+L@yPmdH&jg7k;1PxKGwJuLwsjwV+8mfc zHuu<@-p8nUp^%1(2Wa!9KgtkPw2)YR>8iIj6;_xtR;k+_JrMGt!cv?RDdRDWM(9X~ zyBb+n@>?b4cBiX`O?G3b^|ez+)Az2U6iicH#)e+>{CA8s=>D9yJob&1^oQg$1omm< z5or;LF=z|`U%x?X@oSKJ`esh&E%s9L&pmZyBz`QTf3hd=Sd5 z0%gW&ZB~jt7kD>Af{G1H)cmeVwr_ zhP{U=<0iAuKf?o-JjT z6*p&H*lmJ&Jwy$eTJj^m$nWS2L|*ggG0svz$;?TTIo5x~zL`$n(%fp)31-AR`fp$gF+Bhj;n3~`-AwWODNwr074S#c|s)HpwhWdE8{+P46r`0@Dv^2hS(WR?} zMw)QBhKW}}DqU6|tu^xXD9bX^WrIX_w#Mijqv)+teJs-o18g+1K5vJ8Z23{>MFqsK zxv+c$E7ExezrymI{6KN;V|xvAy05o+t)b*-7&x;6PL3;fZ?HLyD6xPjb2Ii6HKZ@; zDR%Vk3?M{&dsL`B*-mcj>HhZOT4|%njQBH=O55GkH#~(OAqHjqk!s7__wNS{HlCtf zS5l7Y{b&S81oUANBF&!y4fig~OlA*W1$1Ly=IhHe zzO>!u=|lS!@|=A5Rna9;5LmUgBoi@+Cw;RATb6v6hbMmH60tjuV~_H}@-dg=Ki=+s zzhid}f8y=v=#x2x38foQmNCGMIZJIg=ctKHJlyf@ z*FEfhsonuQ<_d&?{0F^|WsMU-Ty?C4U#)b{Gd~5xBFC@4u^~CtPPh%Hr*?O8xnEMQg8n$jbIONyC`HL~*IJ9f16fkzt zdZp|ALeSeQ-p^c04F;bIx6OQj@q0Vt1;T&caFV2>DeIuNL*~b%bTbe269obFcx= zNv(-G4xqnI60{^DD4x$1!Dpovr$B#756DYbXVU?*b0eTal)RJ0U1PQp!TDvj2j%Qv zKyKC*wkAx2*(fnyFx3$ zrfI*#HP7|4d=0;#U5POCLzOi6sqgBM{*>Nmudc81a@`-T!54jl>AsskWvlNt^o<(> z>yi&z>1gsE8;|?MOV%x1y~4b`Sl*;2P=9PFfK9-#cQo6=H~leb>V>ou{kg_@9v&6J zP@8xu%o{`R-R6eT9X87Qz~yjs;rdpun;)lALMP|YJWNtU!c+<&FHzpA+IYawt{pH^ z)nXK51U%x2v48`t=Fti+l&<U)1_AQ_5Gsu6SF6FUDAwib%Z1=9I z1ytYl?lD9+RTa0Y2tnmehWje~NTLU5t+vOIMfu0N)0Cq6_hhupW`l5#1+O3A*KC4behJxtIoGk?5pZ%blH0^+`sQH9F|3F?fDd6_w`5`1k@u9M zvEkIJc1qlkAXV%J1}*jr-i&dVlLGHbVg8ZkB;I^=TOC^R47Ni=WJyQ zQf9Q2HADRe{;rld(Gt?zfj{|aiE5B9qS%cifP(GazAedxGhPkfz9l<-F4>|BGJ;5yc;YG^$hs9)p;)TMOM7uSb+YEM97dTK~jSV03#b?Z$7KZ(qyQY7htZjmc>H^1cjQ|zuMB}BT? z-bfgjY||1=5&@UA#ZO9>h>kPwtj+b$uXOG}83xi-V}A&c%KG8%Ev8wz*^#-GBF29* zEu`G%2y*dPIx>H=nGyr(p6$uH7ky7w@vA&f26;Rj_9CC)BuTPZGt&=B7Rd@rMWNxAupCLgy&TJP@guZ+J<%}cM#OaC_!Bj_1DMeVZnBKb}bj%P}d)|s;iMf5r6 zdBCc(VbB040Y*Rp9)G%NPq{o2?mA#$7)(dXX;rXc=sJt#z!b4;>S25HUke0qR#Iai@XsDy+)b zZuaqo9#SD4-T>u4Tw9on&`uxDSAI1lbL80AscblvSdzSzYeXKhOU^-U4|>*MY!~<; zvsJr8xPc(}K=3!ZV=F+G(d>r;jxhe=;n+v zx@=Z-BNRse$)|hJc|QSInBQfB#nno)XGgZb&34~fKB781JHqu3)e>9|u!)GY=rmS< zVR&#``61o{4=G~jS0@=*RMa3DPt@={zxq?U)lw`lHG5?Teu-5hlfXUjO-;hX26rz7 zcIu!8QsEk=sFya+TUvi4(KX%a8H2S77|WP|O}_K1MwwsC51pQ!g&)-)7MM~k3RWcD z*L~~pA?iMV%=5`IcgpihNgh^c>U33^Y6NGHogX*Ks!cy3s@B*R1!GfsX^;->p@z+U^FMIA{a$@mMvG70^`n?4iqe%f2eo zg6yHeZtz9-nl(YHV%@rsrj4K2 z?^-vS-^`*Mf7M*jBnuk0m7NJ>AhOBKh2@9qR}Mct5#%Fj^C(#R^I%9p*8b;~vUx#-FdyTlkVw=WYjDsuh`8a?Zb78-nK5D5gWA-gk941P_L`9gW zv;>%~0t3Rg)k>%aA&~o(8Q~&{TX?{d5IetVP=Wl$2>iOjo$+Ts#rNwY&s#hqxmttM zg=XzKmkiD0`sfap6l^!EANq{ImGA41r{Zbs%$o1JE=&vklG9ZOtjZ$9bi;?S9p888 z4u+kXM<%4t6@c6PiuV_W%kR63U-4loFwx!dBvbo(N81hHk-S}iqQUcLZQ$ZhP@8;X zIB`$nUsdLrpWvEca(IXvh-?VTQd-P`JMge_o4uylj~x+}aYAkdc0gO0ntWFqcBO=bo{?Bhjk+VJtYO)A#K^NX-3IR;+j8)Jk!Ed2G+ohs|48$Wqy)QcZ;DvAGh6c3-Tg$T^V_n= z))FqkyV*?mYCu^RqiY2(#KKwI3XWahF*IGT+g694^?4+bWPTB#BZ(#w1iI~+ofPKo ztVFAMGRs_6242OEwDAo-q%QemL+`eMfxa>L5Uy)OuZ=w01MqxPn_N7cTf)*Oc0?!q z&=Dyp7=NPbxvE=iE3T2~MwS_r_pcgON~|cx&!jGL_)^K?>T6aGuS+hCG~4FUCz~R_84!+Jbd2J{v`#j<@_EH91?eXY;;X(TSSP$ z^z|L<*RNl@@RtjAYvM2F6sNu9Pfbm%%tL3_rcdh5mE@73KNQTWjW6j@yJvfBm&2Q0 z9K17t*uOS?WQU@`=!h@Nwb3^+6Qj?$bDsURAKqyk!K4B4Bj7? zf&_jAt;Ms+OvExRNrNzAL~hXaC%WgV*y5sR=}+^^o$#99Vab2kE@7hyix?33HQ7dL z8=N^NPOZab_y|Q6Bn8HS-Z+%U{&^IdC?7*XP$FGa`hj0wMgl)$eDz_X(I*n+O-k@5 ziS7=c1i7`@$bVy_ME;o=e4QG6bstV;V^4SSh%$Eo=kV^v11r+PmI+}DR%x{!5ntLX zzOLJLE7>*Um$%7T+kIRU|Du@7AJ)EuEJUv>q1&_orFfqS@J9~9eeI1t~wNb@{$*QLC;itr*s+HM7_3JMM_sFrT|8~{1A zph?Mn=%dMa>U@Nt&IsczAMldZ@|^gO-D1bkl8wMTM;j*5rbMOQn|vh_|G_9$WsiGK ztEnHjU8A8kbVYVr0~sGx3; z9|cz~@PgH*5?fqz1!=#ILQx#SLX)81lV?kXo6=ggfZ#s~4ovFS(*A|qgG(;%zOY*m zbc3u7xE6}q>4^0vBE1h~DHC!{-+#Rek_^O4bS0gKYb&T9CBhmS$`c>Q$|M9~Ft0lG zYgROLXYkAYe(m=P`riu?2u?b>e5}CI>v4$=OI)FT(=XaQy0s9A@AzaxPI$o9#$6-L zjq2Wnxx)E829T2nO;%IIXJI*mv=WCI9j$O%*$^yXNFcFSxQMOLI^D)>?qq_;VBWWrYRP zBqX^p*o}}-F5uS@V$=~L<-913T%s+Vcbb~`TYuF~#-(1I#Go$#= z?f-Bf73J_v=jYk*^v1z2I2DV{FST<^gO<%+8vA_!Yh1_o(Tu!;y&B9 z0PIo5NI1MwNVRR#0IwuxOtyW}EHN}}3L&WBQFGjshk~Bz%EfQF)VnIRqENTMp-gbT z{|{a)>R=y&ofXILtu;s(RuC?@=^3(uX*XDUXS3MyGBYh_mY#o`dX!9 zu={pb9T)VLhzzQ%WYPNz#2b2uGFjBPS#s^7K;Czs{lPc4d9F|ah1z}>z?=FO_;wy- za;esR3f{H-*`$mdytV!fOU~2!$9XlmXcCWLZ7t*U2PN`mfc-Y0W|v@o>5exft(tRD zA@^4;5QA8DhbBSco^WL3cLtUVPJWv^7tt1px+7pSW5_L%}{o2goziNFS z;a>;)e`CVjW0i0(j2DWpNX~H)SsAbmmARrIRqcMXX=!(>`NaZIcl+uN7;2Ph$y_K} zUg5rfS{;wHd_!ei`rSYbd#M>YZw(y=UCc+&qlKS*J}G;_{nVrNc!gU+<#yC+CiTRg zXVtoJx$%oY&P27@_z-R|vtn{itWtOoRhQFMCsA*33U0-8+AVO`S^be?78&{2Oo~wJ z-9ci;qVkvB<`gFAX~PU^=o^f1TR+0&t|Gcaq{jQz4td(`t;ZsLxc`qxzB&H`^Vj{3 z0Bm4FF;tO<35oJ`bjL)Ts()ybH==H6+WaJE=Qml1(!rwVwq+5K+VK|aKP-IJo5FGh zZ11Dhh})Jw7r_ul@H4kVMl7GhdB_|n$u%>jFUjyz=4Q1D+6{*axBEh`vV!*JSCX#! zmz8wQ;%t`433D})ya{CfdO!YI{v2^5fhzwN_GLB+@mx7x!~paDcUy~t;CGFIeA9&F zE}zG*zQ|t~0;@}V`}ZB0Q|WMy-mG@@c&ppR4DhB{>qg!YwAHW`?ys>vK^%-rPqqMh za&c-dr4k`!83M!R%&Hk)RZU&k&q(vPMv_Gjyn)>%?Ok2pUY0ks)ILDaX3D56OIMnc zYS+UminKfcsl@D2aIv<#M~XPF5epP4M$6MTWE_5r<<+CtiGoO z7UQikDgJH|>7?@_RJ!U{Re{;urTr|l~SfAv(C ztAYdgYp=x8iOV)RW(*|x2SQ-bQE@^EE_BACj7&ha`kCz(<5;nX9y@q!IBS~bJ8bs_ z+I1~qtJ!E6RnPI>`=#D}tHo(+3*(HWtG^6J>Bm)z~=l~ zYwnESE0rHD!5G0W1^IY*S~WPcRA8|bH9=QR^*V{RmO$t?CJRE54Px7aXuKY62CfL&-C=q35@Kbih5m z?-%pg^*KSiKKP(U64#NxEXa61n8`WRK~%xa*yLCwh;K48Tv56M5EO{!D0s#5wS)$S%GOr!YU!yd~Gu zhXyf~Jr6oSpQ>$gxaM`DIugBCq>MbwFG%^^Cw`OUBVz&XE{6pd6-6iOzrNFBY2JLA zAj?G;iod|s$vQ5MiXWLW$6fk6n&YY4$DI9O#*-hil<71Zk#)Y~Ha_}Ux&eN$&n=ZC zh9TtI;#KiYxi?j8llg}8AT)SJVNkV@w0d|y3ivBLcWdo9Fv=6^Xtx+2xwmpOq2Qv!RB_-d0Yt<%CWx)=o(A#0v+EPp~>)PAm%uQgCh^{BI5}@pJYPkENq*=0qGOAh&W&+O>C|G5 zO=r*FBdjGCMU$5luZl*VB61Si)hE&UN7_V1(Jb7_@Yc3h-QN&ZI6rwj+Z#XWf?upe z8}HgaLhDuW9^Hi6`JHSyo!*rQE}FcAFu_;^{cAwarr|BrIfISrXl!kJ-h|1n{oA5b z|6Y*kMuWQ1^`VdA!a4jF{^a4}<&00aItGX+gu0UAx%^$@)8#lFY>p9QY0oVnBjZ z1tyHAS#*mePhr@mD(1##Uo%JYAt$GRPdS1yIPR7Y$6~j_Y7gP~DhNiyZ8xfyMpkXh z+}X%Uw(rsfKdG(@e%?i8x&CZ`pQ6WaVSJNj!uVtiO3l0jNWf&|i&P2Unf4|!0_#G* zkMNUWH_DbQCdw;5VsROrEb)B-g^2?yxOn>>Ok{NTJ3vA zQ$;m8!FO7_dZ|MoGU`T`rLBz2ap_pxD3J1u#}Goandk1?g&H*dMdO$@`hSG?x_NqoliCxu~0Kqfa8*3%0mbizYRrW1n=>2+JlUm*Jf{2(X>9(7WJ%`|q_R;z_1#(aq5H|fOq@lCL zzqF6&H*+mS9uX_De2d&AK9(LK@*ZZD^Yq~PBeoBd9^Rq9++iXsaQ^i9y>8?=h_UFv zmzcnispO_Dlssj|peeWOjk>;SvN_$?rHjfmBk8JM?+Pp*f(gt_0VV-6ADyXnhTb77 ze&Mb>NjevC&+4>xxD>0GAT!>c{&^E~B8Ct`MjiUupOQlth86A`33O3=~svz=rZrs<6E6S=TTz;GB@?I^vVa=&L1E_JzXo z09?6k^x}T6x@ERu#5h^EVhSagT%4Lc3!3x7&PwbD}N+OQgAn=rFrX2I^%sa}6Gw$wX!6p5l< z8_k{Rtm$~)*WIiTaTX9{AoXAVU}g}{+4a-Hz`{^&quS8a;eNhbD2QCu$W};~DkBNP zcy!df$N(9RbrYau2wjoK&w*9uUEa9kZV`rvg|FWbGYW0@NrZv;=N`2^T*KElu|aaL z$-156Kd#jta3^tVTaOIJXWh7|oIg-k+CFqE(rT-T2ii;bo!cs+BK+Xu|JL#`pcTyW zN<+YY$duq?Y#-Twp^h5*vH?P#==+e9_muOb8_AhIbhi;|cb>(dA@U6N->MxK>r?qQ?#h&iTykAf4D?*Wvd7qMaf9q=H;Z{gh3$ifu2U*WW>cwv$2-{*gkV)MNu zBu|_JH)gLCPX>(NlV`<$>@&TOa!#3@c)MX9uOo?O%gQG7T6cR~ScB^(uY6Ofy17WE zuf{NMg@Rd{FQzz!HU*0WKa^XVcLKenF~fKJllta7KUnK9yg+ zdsHv@Q~F7tEN}-3+o9@u_OSel)vd)_)Lw1Ym(U+RaGQ>ynTS`7K>Ug%h*HaW4DF*@ zePVV4Sk@3I{IyZ~Vm%Q}Mur6=g6oa7j7d>o~XLUd8$Dz}(5Ff6yJ zmAhZO{{z#zIfw`WhXTFda)|o z3^dH~1GDdE{jp&38@JZ|;c34KQnrybJ}V3`(`9b^>xJFDKR8yr+h4(hz)Mse_l>Qs z+?K^?RU)1|YbXYp0|4(cp+|M<~lwU--n=KB&ugD8Yr>^cx*#V1#& zFmq7qUb>PuD`OUUq{RJ|C&~6lN~&XZ|Lb+@I@Xwtvs=S9>;qv>KyW`CTGNu^3W5bH zCxIln$zp4DsH*_N*p|2jO+xoz{!40X^~84%)35vPQ?BoRIn&@#jrj=d;qC5%q&Hz| zWxyW(B80*ak_F_XGvluJ+g`Hq_iKHLmmTi=ciGt4o0Ra*y>7ZAW7VEQ@Jx0XX0(;Tl@lG|{m11~9C% z5(fkEJayj*0w3FG51Q2O-ZVjwXFIfCJVOAiOP+^*&;1IP@ic*^MA(85&6drN+&^O< zhS@t*caaxHFUYF~e~QxG)x#p?8nRhZog)wG-5=oFU62%C1=~{zkTjGR z-8ixmJMZnR{4Zc$i*?P@mzP7I*8H6L7vz!TdYc_Ow&Cn}R6g@sp>iYf%T!Y#km2ch zgHtdqrx&|Z|7P(2eV1uD=rO&Hw2T)Nh1vu*mbrG2W@e9#%*=am5dmpm$s(z}GqWJ* z9Qc>J<I)}dUcHNibgVZ96N7(%u9!CrsL=LaJ9 zC@?j;A7P3AkD0-xNJavEEmGtL%%D&Mf9yQRb1dO_B;pi^q@_XeM7l5nyc>vb zaJjz6&Xcy0xPdxDWo}DE1 z2v3qJ_oncTAgD6t1luCl#_x41?)J#9@tj|sSOb++}_v+Fy1BvW&^AW*C-=B<&F8C~t!k>E6p=>7uJ1f?Ofeu97Q@ZsFiH;DGt;)Pgu@$(K`=PeX_mj z0a3_$&Of65bTY9=n*XdibHcHQhomW~l5so|5U8$`;&!>#Hi>-ZLGMPsuRV@sv7@mo zJm$9wOomEV)lJ8}=VWvzz94g{s&v)9yhL$0oCy-bdYQ`xl+n${;kxHDZ>AbnpmMjp zX#Mfb^>FgJ39t~(Q<*^$2Qwr~ZRDH;c$BG-()7{_@1kFFM z@BFDNt(NkGt+1CE;bixKk?RZyY+X#jOmdYn&=tFvE-<8PSsrlnCn*+~<&2x}$RHr1 zGmM*G!$;4}i``JDSqNO=?mFM79HNkEuGsCx7r|i{`)zl>u$;&jTabVq6pNMr5k^v* z8VxJ|fE0Gt>>+&B8L(!v&ux#EE3&u}6c-bJT?-}HwU@Qtg^7O+e8t3jXPLNM`2;n> zK$wk;&?dftEDxVXnUIHjo?04|L0+^nCNGAaV$KTO4I8xcIea)+E3AykiYk-k-M`tO z9Yq*-M{93Fefkf)``|I;0j1tzZ53$e+i$y@$*)Py&yw)q)M<2EN60?)H=b`-+cE5{ z+-9?s2&%d|s45m#bpZ*@Ql3b#m%z0beu`k;4KI|QQ5P=@5Rnp(bjnQ!c+JCV1 zw!&TCkcP0=wrh(LRuL3%zczfki5FzV7|E?g`} z04~IO5`MVtL&2uuG!d>o$3G7~|6WghKmA^pST#@7gL@y7nY0{t3*^~Fo(}w_*vg;q zRV#IMf`YgOP)HZ;^asDV8lVI*1Brp)%k#9UX;+d1g1_|71HpCI2?UK-3FqW-Uq*O! zH_ccG`^JO4?<@X+eSV;`>gi5sjao$1Zgvp?Le)S>ofCvSeB6P*gLDUU2NrKUQ&?ad zMCQdCQA8s*td*1RPk;&D4)U0rj2Nnsg9ho|n`S#H_XU5SQ{K3dA#Bil-m4|w3?>^H z_aCpd!R==R)nL-n3eIbcf&zq`AbYs&?HWoD3*@YD?!=dvhK{zyt}y72w|~Fo&2n5L z#9nxvoyFhS7Wf_acuN~_)avd7c$WefLtuXhkLx;TktHP|_PmhycsnB}8ko()(dKUdRKhL*ur( z+tb(=mwSFsQwTc`-~1CsT`mW0bED1^JgDA1g*dH+ZlFm&oPW%xfk+n0>8|vmhiB>YPWvu31l?_&Y$)@|9;skzh-M#0I3&1#)JSF8z#!aL>CMr^8kHv zABVbuwCxLzkItcdar zFxaENzY@T{pT+>qj;6|b>1Wha$v~z~ErdgV7^3eiO-((bfQ3+Y^XQ-ombo_q(YwOU z4pIYLg&CBn$L&NaGnlUD*@ITNVlL|z2zTW}9i&~YMmY@7cW)Z?Euw6x#b2GP7BfGX zjM8La6Uf!wYWI``o1o-3_ifnSZocqK6wa-mTrW{lo4$Ood%*8CCA2{)xn?yuq)z=r zc0aFg!+G>Zaart*@jiEmHCwgo)3zZN9=j-?&YJL>F8y?0o2nu1Tfk}lrJ2`*sw&*K zGCo4}`@p?xlXLya*TWFdO`6X2SN?M8zFRUpTlsZgiM%#ObRxv4vDepb_hefktTRMX zqS~NF!mltSj9&Gr%s#=_D)nT@=tf^`gKn9_Hvtz_?n}cxwJYJ?opPpfG;%GG6g|P; zqup=V6yW^{0#&KoIv8Ia3{yD~tno~1cW=CGY8(51iU734`R4CTK`9mkSyjxM+ZFkiT?!a5VBnWo`v-))5jt$GecNIoFS~G zg;%<->kX#ocZKyACX_e++O|q`uGz8&aOSSR74B^Ahh;WAoTKc{R=Nph_wsO_b&u#J z(+SQK5E3bBV&QVS=Hc8X?q*Z^X^^ULM~YGKuFM@uY9nyomDR^0@Zh>8Y}iCigYCaE zLHgy)a0ySpMsbmUIn#as-SPPS?~r@tWDoi>0sP;gatPVnq=ZvY4U9M+8faT@@em+) zfYiebc_S@SvHZA?qj$+_1Yh#PK5V)hIti^t0)zZ{@dHlwTm4GI-7lQf2N%QX83oJVgJJ-sSiStG&r+ z&owd9PE5qhXw8#=^S_nRX4HERB?~B#u4?_WXaIxIXD<~~oonCDBF^kBW5WYR_*g7+ zQVILR2KhjC^W)`Wa9_(yo2rU8N>xR}OUR+g;C)ZMpKMh(JjDAOgZD`I1@3D9KF#~) z;Qi)$pRjr&&AR=ZZ>tGbKu<0Hg^OC5NHcDr`Zmg!bNzhp`}68}|Ek|gw}ZW`j!bzu z{&M%c{mz#t>yHV$B?`DWgzA297Q-9)B^1rDNyUrg|-@^=BBoLWTz7 zR$XQi`_*DEtP}0-^er@bq#7P|pK;3s&W?%J8UuRl!G3F|X@-^W$WqC@L7QziS-@bBZO z)5h$a!0wKTz;5F(vp&hvS=_d_^c?q@vEnS8B!vi27oGy3;y)H&ey-qj25?$j>lL5? zPGofRFEv1o%L3{kfa3x6h?^Ga45$b40JRghljH!EWWGfI#qNlJ<8%hl_8S0*^NAil z3*BdD8GNL!P2_@W-@6H4Ezp!~ps|IPNIBlK#ur`kyNv^CiMIu>7;ED*e=V}>;(!>6 z5p2K~lRF>~@hDk__GeMr9KDIpvTu)Q$`!IX$XjA8Aq6 zkEHIUJpEw^HeK~l}HXVT)sYp0z8H>1gO9z`3B+T)=&=^T+=^T#wega#X)zyo5g@nt`%_b1w_JYjwb zN`zZLlm(2Dy+-BvpGH$p>l;;%%2aOG&C64SWQ(Sr)B8?Sq!otKE+=T?Aza0S-G&RH zv%Z>dkKbQNB=j}wf+ZBgcDLng*81XTYP$92dV0e-KBe{N=PtL}5UnI01V(c!pxvzh zGx13d))qYQsj1|7Ut9ZX#{)@>cZ zkvBg5c?~r>f5=$<#&$V(A_7~q$Mh%lmQYr;@wugLPY5MC=rLuzY$+#&&QF0#Da#`y zNL|$k*jo9jzs@HiRgeBG-}I(zswJD6m`&Z0O-;?FglQ_9o>Xc`v1sBvb*z;uy%#im z%k5FZK`G-MOLeeG{M*hetn&66xls{JLz;DZ#~(RHl!rdV)SyZ>M`oK@Vhk-A?>0!t zN1|SLJT%$cjl1~j`_$mOI;uaJ?ZZLqdu#CS6@BEd>$YvRUPhW9Ru{R!Ciz|@u^Fr= znhxTcr~NK~dAtPYVutA?LQLi*SV-ur%t8mTW7*KB(qH3c=x()(vb&b(xAVDRBO4gW<|h08*G>4&CW%2X z(%ck0F5n|T;$Ss+_fiWF0_{=_32-}p^{4czFfA&Wpw?1Tn)D4<@n1xf?@OvFb?eM* zCf3YFJ(Jj#(7v}-m+svY&Dhp5>F}rj){p*ntI6kahZI{(u@*!l*GG)tSyGW_r@TTt zY|2T-ukOZ}zK$>ZdD8_g&3f-nV1Z>SyfaGT1KQ+58#dJ6RO>+EWfTFiD*T^=RIz)? zQpiP*2Cu5!`eWHBtP)?N5OjS@wpb!t?8>m%rP*ThDJHld%Yvd)eTB8jeUOX@+XB3@ z+N?!uXhEi8!4%Ep8M*S-AC6+fYoiPbh~vr-CPrF9^I~6^7ro%m=EWy%-V`NW?-UtE ze@cf;SM#dKu6kFI_q{Sq^SwIw9u41-cSM-xdwuYIO!$uPW5YDxn}Y8x;XA%h4AXp{ z8hn2=e8=}E!!+MpgYU0|@A$qTO!Iwd@ZE*)_`WJgM-s;yy7_Bt0G~x#RT#kZJ>>-| zn6A1QlSLikwAP8QpXkOp5e0a!ODSH@EtJND)UuQK1(CL_2r?08{2up!BP=Z@Ltnn# z{iRF!YlHG%s3|-x%B;z&%Ll6f-5IP2abwKJ8aCP@g>@)qwZX%hUnTG`TQftkMV4uQ zrrLM;9c&k>LDu6zU79>MX!5F{NngaaX4#*46Rl1HsUKg9g&&9K)%$vH3hK=|&@6tu zGdyMmmG5o&6Mk;fRrQ_AmAZ$!lzTcTcZ0DMn5dQK@+6JIy>e2gPMx7lbgI>NsJzCctyS({w_oo2)-OFB;T|~3A}EbKC6Zi5!~IrfUQ_$}SnS519!$uv z#z^z|1m(%e+cPDuXZ}iFFMpwCRwI>061uNb;9P3IeSf$^LNybrb>ms=-O^sR6)_Kl znAvqyK1CNQ;Zav3v;L`Mw!SGsEdiBP_BASVvL`b<@2$9*ttZV-(l@`d+@)G?wp#lw z{cvbDTtM#$0k|#2l%uxPAPt|g~G{!8Xi!x0JA<1@yIKNi54THN-VyU4> z)ovCuXsvq+4(^#J*AED|ts$3k(H?&mp!Yj5r>o|?u5}yO|p3+ zFhHP-BzEo*AggOTQIqcb;?~1VGT*Ri(e#jDx;}FgX;&Kddm#OGoAJbo7%q-=>7p+$ zCrZ*s>-hFHMj0F7h03{pnVwT(`n)W4xQ zMiSdFS}~~Akf01KBUy(&Q*RmcRKC?FSJn0K!cpD8d9kyJH#+!`Na7K)$QbpnhCZ3Q zNgJK`xZ1OcN!p!pf0Jm9^_b^xmmDdfoU1IMLf3~G4f=hp8ij*b)TQ`RJ8(fXeOb4L zd!!zWrR{Ar5TXb{F zUZyZ89u-JOy1Q%#OJtMmAy&U!h(ZO%~pRu_9gc zi>sxavApOz3{vSbOOq(}FIoIut@aM$>k7wT6-|%)2~ybpR+*u$-m$=4Y{uJ$Grbih z>93z$;U2MRVbh%$!@(w9vFm<}0M5%zqs&mTLLF$M=tslZ{8LHzhwPZMBnEbh=>U!( zZfBR55E|%q^pikt3GLGy?~oZwH`f<4-IyH)UDZ{8XGjcOwrXvbGsrQ1kikazSpW2R zc@qg~6fJtepVHz~`qQN^Q}xTcNA-d~rJwXk``#M7dnJ6w_XR;Zws~-a(;LOCw?hiS zlbZO7ZjTm460=N^?>*%RL6?KR#4+|(QZEG{FTpfLUt=gL%&BKC{x%VwbNdtp;Uwlu zB=HG@w}_OV2?{BTg%wGR55&wS^$a4Zmk)`_7A5YrRmOT+ZVlvx61Qlzf78Sp0@g$l zf2S_`+V9n&sjG^ob@(QR5*{9l(W51?X!iIp!Gjq@^Q#R9)Wp{#6wt?^$@SYUobbiZ za7rBljxQ^T&;E@&=R0{fVa=9jO{8UaG*tY{xfEJ6q_CTrB2=_E8X1}> zH-NxOs*Sw~It0q#xzug-2Zew$m_{WU9ap$!HZB^-?#xcrow_R=k-3#3xp>nxFS7P> z-sEmP)_$qe0$`IXEwGe-Ws#PlbX$|R z1HXQz4YT@FD=6K(55JnQX2Rvu>lnDLIl?Wv&Crwij5Kq!7e*AERF5R~wXC@T=(gvV z$W7i1HWx4Nq>jd00}*=y)?21b<4hh`7*3tL2)W<78fiHyzvTh$IHbzpOQn4|y3($F zl+%b9*nnsn1CJn|?)zYGRbAl9&tb89j4BB6)u9R+sL5NA(`e!*|=Y%IsJfU;0zL zbrW*e2^XwKJe1X@PsYDtoU;qlR;Zt;A?r-m(ml6q7Dbv{?JXhn>r!Wwny=2h9vaV~ znOh1AUQnESRHW4p*F}acwUt%SE2~R>V_XSVuu9BusVafNIezu0^eUg^y!%O>V+|42 zAj>S}!_edp{aRjHE@pk6uA)Vpi`l%4NWBqxg(vaxc&)!~j5WP9g{ z>a;Mf!>T;J8Y${x*DRqL za)-?KiRC5(ZYR)|xYNJ(Qs6L}&FbYy8nkXq$#15G!^+%2E11)X2K%bEQCQFdqne); zvr?+)znL8j$o>}7ro$wtF-2Tr*9~%w3SbpOTOeF9)m8D?2f4WxXv$`yR?;B-9qH~H zhq?2kL}A*1}{&Vtvj6!7p; zmilQU=r-)c{fYq1ekzjl8Lajn!Eu8}IJe+>Y33HhB43{FOOKD@d2OSR9$7&|N~;Bj zG6rgM3X#UbdHPBy5VE|D-`ba=2DXl{8eZ^4Pq(9 z_?LZX%YI{(Tpv7Y^gLYfYuweGA&!CyL`?X1WL;?pcNCvn$_`qAOQEl~z3&Qx_7uOt zmJaq4iI9p&{#|YIeOwBnLgooyE!9sN9Is11=tUFQRtYcjHI!_`9%A0{*()d{%9Ia~ zuu$++DM;`;0Op~)I>x|dVRnIO#VtER)Qg{#qEa-N@)2p-jWRkWcDUrTiKpUNH;@Py z*Xb=;OH7xN<7W|u2Z`F>sYHg#fgZE6#JC^L<^Ho1tVXurQY zCM^|4%AS$nTL5B8T!gBA^;?zaK1m%6bh1U0$wf~|O^8_i;XJj3~oE{Aa& z&SqO^DIE#7h5UYNd{DQB2e7#`{K5SiD$QKZ+9$ACun1vFZ$`5kHqK%zp0H2-DFR;j00 zAFEyZc5?CR=tE*BJ+Vb_4Hz+8DJUT?wmZ$dYwUE#S^V%$x0rBpYmqy|W;@b+rlcQ` zuh@`QH?)p0lZM>3{~zw&JTS`YivONK0hhv~IL2 zr7o4?1mXe)CJ~;F)6#0KZMCIpTe{oUBA_AxCAd@(l%lq5F5Dpsh#C-=yr1v6&rBwW zZGZ3b&r56OKF@R4bI&>VoO91T_gLyNgjTr0o0uZ+%^lTiuo<(xuzAjz*$*9bOzlRS zb>Uc@p>%r4<+Q9*N!!)Oo}(lcsq*)I=AO~!KU;m$rC2Y^+#G2%=^=08>jo`^#}qcX zSBP<>$|-xhLW_wCzRRzAV&@D>++=`nwgFhS1fgCi`1X9YWWsw)tPYmmbTK^sK2}W{ zxr4qvArCwlSjG1^95T$WOUfUoHWb2W%Wu?5y5BXv$Y2!_S`A+OXoqlTTUv49jeHq{ zn_lCQy2Sl>q)(N)sQ_D}9|Pe_nOZ~f92eBRBOj}Y&jb$3%ljudZd0Ovu z-=TTk_tHca07K(G1EaRoA;o{q&cYgs=VoDQb#@jk*cydG*q3X|Ha+B9-{}tf%SuqY zm)dnAS@}Xh59FgOLlQ;`7<uon=!LTj)Qs@*>1{RiCX?xpSvEgQZ&$Iq$1&3L`3dO_&1a{3#xEUR^akB}kMs3Z<4K|$ zz3m0V^sjfLw?V_RANEXdTUzpF`cCwCU(4sx+aL^;%z48N-RJyUoI(FD^wukDiwo)P z?vO<^8ogCeubMV`JCRP&NPnP`rMLOt?M`oN$e&MdyPB;?Dd?5Zt>0c$ZOu{tw7!GPH)efpxB+>CQv*_Z~Mfuv#=Yz zJuD@NyDzTq4*Pfd{15at6!v0MyJvbE{B}>I*j?et4o`2GT|#>M*_ZO&sqH?X8f=KU zFi^oi73l^;C>KQ~-)5Njb|wjvc_6B!oL`-7iE%02KpCeveLu+(HKVu@0xW1 z*-6a%TC{uVd9XHrLUb1|ysWV;OtJolsS%W&j>dGhNTvMVgf1%sRsEt|a!*0#2 zwxPfQ8cN-r))Cnrn$H70GDq^q^h;@ey(F6Xo4!ss#U{G$qn==e*x zI+@ zcN3cD@`665i>j_dKtVwsgbhb?>%|Zfo-LAy+iZKAf4!x7In=*|uS)7!39HRnt1m0^ z=9$OMDi&=y#-6vjf1j$M-BCV~rpV2*#(I9w2oar3ud_apkb{3HC|1S!xUlHBcqPY6!Q#mT+-o+^ zAKpY~d|%%U8!O+7&iIZ!fvgLc(+6SWI_88;+L3VSojs64Rs}OZ?+G zR-8sm)ZVHsH>`5NwSKr;-RAwG>EV^U8@xD-C%(=vPm8~y=mmF`H&HKo@y$19txH&9 zhN^bGCvEGO(n#{sW;7W4&F=f}YsA0%Gqg8RK4fXZ{_Non`XV(xOvQm<0{{;OQ?~&a5 zt_jKpJl%LF#Hi56L4NgK0_O;gib>O5ZW1?L;$RdC=xxhFG`i`$_QON@ zjGdpV*di@ho+5H+S9A*ZX4`RkP#I1sr11z@wAT(vXwBvF!gJ?5ucBMsl9xHp%bjl|Xd?t^L`hGI=BBTBIFEiiF z8lk-^oiu8zToz5$`H4DUP z#Z1Q;Rb@$oO~y;hOK4w|!2cs55-N$CFHgg}K1}FJUKb_>RwUr1lhNsC_`bqAE)>9- zebyvuk5{g_F&Z!OU)Mxuo@QUO>Wc9b_d|GG=1*poWL<&lzH>EVk7j{}GJmrVRlM(a z)>IRRzV-%YG4{Ej%Ge?kq9;ygQJ;39b02d zGN^}ktDuc9qx(rO#WoA05K6u$6UX#VA{#y^GD3{r-bx)cgF9Hq5+_<79jPBKRWWE| zWpl0NB!^8XiKcguvz7~0>nhQ;8xY0T=|s0#@W+`;%0-OcRKCNUA{f|9Pr;^o$5;xqG*8D>wl9E?w=-2`C$Tq8IrfYD9 z2PL92bX$v!1G&t^a(9Cyaz=7GzewQ%OdXnn2gr7odg}$4m+YH^SKnHps51tXDF0BaV;aOj_EI8$NRexvA2moiYZ`a{fc6QVs*9oH^6Y7P@Khd4CV+#fRG7LyPHWUNT+l zHkx)8owZP~1GZ(0;HD9G=t%%T5kV#Y+IxwyV+Mx!VwtZ)w)Hm6>#*OAHG3A|d5F~% ziP3Dpz)}#q?-(HF14k$J!VDH|`F+@2g_~|rhp#VlqkIROf1dmJh6F8tPpr4+B<@S@ z+^|q+#f9x%1jE7rf9vDkIK)qGnY)IPFgA;@63>&6)2cf>CTrJ18NOx9KS+6%!ce#@ zv&JT)i2{-NG}zhxlP-A|3ui@baA5oG;rb=Wf!?v3@Jsl`0E1HSD&;fZprGz&8B)rp zCyJ@d-Eb>x0N0kz%oY4`i%-O29>#MIPt76H=S+3}KFH*m;7-xyU-c%q3iU}Mu9s{X zdYNMOTv$G~o0aB42_MPb?i6gYvZ=!fKS7iZ*hk_k!b;YLwW`s~4X%%^*inmn>FHo0 zy^N<0V2Sl)nVJM1FL6tc)@zDmVf_ubpHUny;+-{p$Q2i>xx${Cuv(seRHOA9WQvJU zW)!g1U384(r0A@l3uif$UM5ZGMUi%LXGO!gLar){3v!!kXzSxc#mvM;FJuljb0u)J)_ zS#@c}M+jLDpAqhBedEW~A*lJ**%S6{*9FhG<9+jq-q@XPrEARilw$46Y;v7PG9vcA z0{N!jsUBnS#y@q)A$aVGGE)Pc)l z7~SE1#r8v2SGgIDJZzd+e}8g+__iu_TChgfq}qXw%E#@1j?Sk z9vt)Pv~MnIOGx2ELZ6_0F2D6dI~uwExdL!X*t%jLYqP}xX2Fi6RmJAZU~a^07mk-)tL@LmbLp9Y zT$8@Fw{_Fc{Zn-V-fS8=jr;29Waf|j(YiJ|ee1x2Sksxea9&EI#LaU;q=B=@Y}-c? z-+`7_V*Z!?Y@>P0y42*5$BSMj1h|YItQD1qaqc#j+!Q#(Lz%v81^We5>B#W!;U-m* zA=>gMdX8`@obM*n7#_rvPEt6YCsy823D-Pqj-+ zZz%I@cQWJ??-@Gwg(riT_@S}wTD&CM@|2K~FU9QGYdx23ayB(KRh}GexlYBwBNU3q zJh~=Z3)oMq$H`jL*GH?5Mh`0Vx7EXU$xtD)8HK2e-v0wOY(QyHb&sq4^q7L$bpO6h z!2R;yl|pho3qCb|`Jd#nkOT%&b^SSY%oeV$)TJh`MGa|08Vl}o|X z^=9-HlV%ysA*;l#@e|CIV%B|3aSmG(y{vZMZfo6u4b?-3MqAFHPI)&q4-pom&o9XA zMItA!>ebMIEnC;}w_oFTEkjVT)b8m8&8Y}At=pP=kqf^t{GM7wDTVf!=(Jt#z z)%5AqL}gVoZkgZbLp+5P(Y}9feD-0oJ`f#1(!gtn?ojDd`>SBX`grOdb=W z^LiRDW)#Cujy5;Q>XjZ*brBw5a2rTw?R&rGwZ@hn@uTs)#`LGx1{uEnxHbC2#Y0;; zZ)xKn&Z(|X-BV1Zu!OBYy692=NTcp7qQC_+c=zPy9}9%dq<|hvU)1T&GHl4>up3yW zVR7QH!OuX1%)`Jogj*Q8-CcGtqZM~*nFN#fP^(K%^-w#-fb&&8c&PPZ9kExVc%^%| z1h3x%_L0DAcnB|JaJA_h*iJk`CDTP4&tqAI_ab1tWjIm?%bG2qKqvG0)jy>dTS~z4 zRN-!5E(DccKuWtDTk)TYr|&SL&EdOAQkYS3>Jig+*Iey!|3F(*JouW1f^S8_#0Hq8dzT$L;z_4zfbJ(iA)ClZ;wet@`} zxrDNsv~jM7Z2ZXi<5Z81k1;?^%4YhGx4WhRv4E3wOqS~>W6uc!O?pJX6Z41wa*5;- zLGwoJJbvgIl*vVMgfa6@QJ$^3+Rats&wukJX!=s0s5od-Tvmp9VB zA!d^j{EH*tX}*N4vfJpN((5gyQyHe6MO$9f$o<0D@{}Qn^rZBVMb}7fcfHy5l5w<6 z_S5=kOTBS|a95}i6WGeH6#AaHTaOZB@cF`Hso}!eq{h?zeiLTB)WuL-g~vK{tZ7yT z9h~?o))7^3sSvY1wqp&LI{Hf2aA;;4?S|_~_FBDq&RAM+e0lMv04U4K(F)E{6g4OD zqGYJJrlmBrur71^+n^ff)h6F5AVw#sUuGS-%kMX6ZU$_xE9h`PIcNtuz0G9H%0>d( z-4$}O5CG%c=?7^fT~|gmPp2l~b919rd24y2hT?9}UK16&x1=bkH?IHQno{3+cLO@6 zAe@PT1+EoPW_}E@hzUfS5AxXg>;1qyMht`b^u1qmmvwr?7uXAfyF10RS@~sj4k28@RhLj|o4A;Y@^@S!8Uqi)oj-!Dhy3Tp<9M7=n&5uDw+Q z64<|TqmGkBXLZtd9i=nGLyQvrd(Px}6akoBueU+8_AP3HpNN!hRl&_OY*iD49}QmwfN#QMgT=@X-+J-B@u3k-q_Hd%^XOw%iA3|=O!uE&^hiD~13l-lzRZH=0g%(>LkvHe!I#QG)VG0I<2)t!sIT zBL{b+HNHqEa~*b@%{8TYYJv3^xKghkf0@4`tp(pT;i%srq@d3FvZh;loTOklS0QTk zh&2r_$DDDZ8?BZwKww$eTpO)<$(@7pXUwtTV8q0DdMa{5M{TtF-&#RWa zxx8d(aZpdk9FrlnxQXQMXtJsO^xt!w6(1~Ac2(NgzQn44j0dj`tb zt$ib;_C2)!AY%ef|E>MQ{(Jj}?4kWIh_Z+{bz6z+{piQp#^k6CP}hXLpRGYIUmH&B zQ;7`_JxtGCt?h->R4l{ncyDp1agYtkC|djP_9rx(UGUU+&E6@(<_cdnRkj23vGLR? zTE5D<(PErkt>5?Y%Wsh|of-B^iQj_%g{=&fGKOEkS|m0fEJ<$Mn%sp7uYEKr%gwqm zO|rvcer<)2@qCawnf)hG0}J$nCOS!CTF4T?sThW`#eKTK00EbdHgBYCtbqk+tirab2SR8CPca zO&5gueE0iihQm5FQzBgF`=GT6PRsmmaV^^KG@xwMbYHa4?sp5`mdHZM&dhlJxEJKYOs9bu@lnlPK~!u#W3~|4vZ3GCAU!9atkPVC>mB~Fm*>{kM+HlF&(~RAm-%&C^fvajkly@! zsKXx^=8N8JK9sld;|Xe*f8{$YHxw$c(I^7~wcO#Dp5I(5z zxM_mK`896nS!TF>wAnTF_N;Q3A!2t{nP8vEq<3SLtFd%+XO(YL##rU+B*ZG^@sMMc z^{x+czzHbH-&nj0v9IhEpMVmKKwxb3{`JGs*uw0x{wS}BAI&VxKpPW@w zmd_<)^r~39?&6bRH@lTv-I{;ej3#aipJ#>7M2`O){x~5=anY9VX&^aI&a7S&Ly!`O zd;tzwc1ah9?08^W|wdwzZ_$4Azl7z`JF{O%Cb{BV zs$XeN6S9ekmSCF4;bsDxy-;!JDtArZC!RjLPrPzTbjHgvXjFb0ouLad7V4a?D}q@7 zi7n_eg7|3{%4Qf(YpaNwilfcVDwFQ_56h6r#uadX#3HE;=W%tzj){GIERy0EOvf3r z>8rk`;f3#YHrY5YY^#?a>QP#JnyGpeZF{fu6-ftM9AL^lLLV(r;TN{-I63c}`xx);#;%`cFZ zNA|fhLn0jN#!!o2Pd{}(`Af*`aBh|VP^{zZG8BUu)CYcFDDu(yfG$Df;yn6^r#U7j zK{}6$L>8AqKZi5(G%HmGf902qh)jWqHs7E=+E@1_{~_8e)k8(&If+C17~`&R2SWWB z?c>dcY{o)14rIw(oa2)|g@%z<@8QlIc&17`$X-F_WP;wjSHu2ZcL2GfA^pjRL9LqRCTvi0(Z*ORq1} zS(9hf44wUAUFiJij;E-hY(}?H+W5lm56bnn13@P9HAvp*d(EnF{cTH>d!d9L+=v+M zXAp0uPhB;W$V>%i(yp&A^I=y~u8Hn1MJxcXyF*w9^6*#D%$dVJqG6Guh`O(S^H>04 z2GY@sW`M%1p955b4r^8{b#2H^S-Aht^{G8(JmPNp+5_OR?F2ow=avGD9+BeWW_$YGyxjoM@95i;@&d)vAejpL_!<0C-LIgl6>(( z$YSE2WMqkZGp%?i?p3+5qIxf0{KIw)glVrErg?GixIcA?7eAwHPTY(AcX4m;7yV*X zFH*sjW};pfd?cNZ%}o%YXeKd5zmANmk_E_<3ro1=IR*~?5?@`LzcE4FxqOo&G@uAkhuuLXE;v{A#oPF6veai z^uq7D=1J~ZIl8L+?{xLIfB1P~7bTCbX8#ZL^!4+1o1d{4+Wf>|FMFh?;^#wt-bGKp zGUUz4@00!g<-ssdPv3-dhw~GfEo8Hxr(OUT>o%6nZ-0i}opnpG?FEKo5gaRXRRyAu z^i)gs;4*)%5))aIpudlC#&CVU7^^-4=8N5TUu5gDs4jP`0@JP*E#k zmc|G5M@8q=mnAp4S@mV(r;jT;g6;1cOLEcgpF}+bi&wEE%B%+qO5NEXeWFC%o%B_8q^S3a=v4%EkEg1tI@g=t_g*%>J@G#W z9)}rg!JTLggrxYG%0EB^x|WTaMRVv|UO4l_P4TqiF)np4Kd9k0ev88kzguo&j1$A6 znC$MSMG9Kfc%FK)s7h~!az7ZocsGMMn!W{VD;Llp<&K=l%X{DAWiYbQB|&+L?Ohx6 zFW0691|)HZ=Xz;st3tnO=kGg6zFpEWvx%w;8ZNHtSk@!>o1oWlH1*X{A0f4=k%!yV zBJDIB0mCTK4ve62Q`jWQX+Am8OVzry&~hOW;t|@%-SGbQPV}!n?LW=QD_MQk$J4`_ z(G82RVnpZNuAapMY^`$(5|_qPqZlXt$(R`#Q0EHV(&2K2(dIhb;+X707-v+%VU;Kz zdmBoXR)sDdUzwsUC(Da2r{|ltFxPIBsh~M{?pl=4c^q9>j6@sT7wip*M5-trNz7xn zq&79`GkYb^Ewg=$Y2jW;RfKDfnZ~EuLXu{$#PBb>Px9(+`y|hF?UTHrd1s&G{aErz zZNzMoV0fLc|C@W*C#i}w+~xa=FVdmveA9X1u8FkVFH$l)>=yaFk+-FZvB=q}f^Cj# zW2qkrk2;8|*`nGA<^9eVx&egN1z;NVupqjgQZ?@9ZJ)Y+9&9k{@oT^#C(EA@FZm(WD`iW zi7yLHirtMGPVkgAY36c+(5X=GT(s&7`K`_E*%6}?b4707Zmag~@Pv>FgFzFp?H#t5 zthzUzV$;r#U!P=-psxmuIMK-~*khpEgP%@r?2+gV)j#~Cs2;=$$zGE@hZuMv^0Z8n z)FuR*ZKH7U6y63^#om>WHE4WwaL!Q;+`N#9r`X17EFTYJJGw4aRWW#RZR*s;(MK*i zYCN|L^u`Zzd~nfGx};)!W!se3oDrzaGRG#6-D38av&4Th<)ZUy zpnYOGVn?90+@5I_;DF)S%=+z8hQ@ZOQRxcz^b*@Hy}FA9d`q2Nq5;_+M8ZLOY#*^r zy4J{_bS*=&jnd~}0JoO2Q(8Xw9r$(h5q8kl%1=2pe1-eAslhTy z0=Km;HMP`5Xbrq8_LYhfGq;c@mfQk^_zo$H1qO5v0=h;FwZZj61>fYx!rJupRSidn z3U@)~)6lODM!d!Srqw`^0B33@X4eG|`NXTN4~cWV_11?9R;J7%%DXesMMRkL1IVo5 zjUL1;GSBiLJKy8)Y$yIR*)j`M;Cmk;BczMIxeotLO}oPDs*EPk2WK{f*+hS`*g<19 zl*~}_j{nShdmNGd;=$iMRo{6J^(1=dt)8shtg_W&T=*BngHy}h@pQ>!S?bjC_QhSI zndS37G;O`4SG2*qI2_5WcV(KdfHZmMB^k|za-^A*@~NG4QIP+P{*ru~rE_;5qUQ1@ zDoS=98lLswc!yj_u?0#S6N6R61GaSabB4^tdnlH7T6bmr?U z*VsOKqAh`PLbinpErEVBfQI9#Gdo`dYw;#&xWk>jeS2qed1w1~bzbbSKozD>JZjJN zZl)u<)w_;*+kdUrt>wcdDD-5ggy?)isNrTV1wD>u{z1c%zms#)7oSN~V|i-4!348_`)TjL4ruwse58tRT4>w~;@64zxwX$q!Ek?j@<= zCDEDB@*V)IQ2hZIK_5_|Y*z{O2-VGX9#3 z@t}lU7v|?G(5RNgdunIf!(73K;duA3LPo#0jlaoV#BnO1+2pQ59W01MTOQGCO&NDI z?^ZmXIz&KeYY%|}t>4mW5DBz=W>&+La)a6Dv&GZ<{Od4b$NtnGPwf>Cz7U=HFPig1 zN%vd(2IEL6gCEW9`Sq=)xoEub<=dL50lwu*KX6Kgw2_8bsD_9dTTQ0}(b^a_rA#vjap{ zb-G{q=I$dz&*;jS14Rnisp!S6$3|Gt5f5%9zFK8Zz#NgDf*3 z;Ss9ABjIaz6+|+J=U0CO5X(-;)J$IW!OqMFEStG;P0jVgu=OvS$ZJUWLVhj_;i1u| zY)h)>_`{Ej_(9Fh&-Q7q)znb8dVfHzh>E$kewzJU4SJ-DzCgd^Pz{#Zp~JgVsoMBQ8FRET4e|1XPcVKCMv7%&jg3m_%?pGxz5S&*dSJI)zwoS zci;H>mgZ-?4+_g8+ka$EUR#Kfj83IIZmFK6-0ARN)6+8v zpkXP(p1|wah|0W9RsQ3@=&dw4=w*4vJKy?;c(Rquq*FuN5olR~GDlFa?Onx%kouO{ zVs)!T`g~qJZ`I>UnmSNCs^xe}aETpNpKE2w*#54mkZgpKU$rXqs_#KM#;a%i+l#WD z&aCbFzNaQW3{7EjKh|)JPEthX$E}uNb!mqh}Q+d}VTA2J``h4(0&P@%M z$zYWaqEOs^{P@|U(x(nvDB~w`TkORx)xnP1=$}8XE8xCEjHbz*+?z1%l$u~ib>&Bs zxFGV$;$Y2=6?q$adQ}~4%X{PHg;@IXg7#-vzfmW@7GKC(+u2edxm1@dHqlyS_@xa8 z;VW7YN7zhMav*g08B^Nh(Fc}H%ETAsa_=*ne1}@d{?&;C5UNjyCtuV_USc6W&^qZ& zv4TUnqi%#oknZ=r;SwdP$|Sxts~L2(&crZp^p$s9`oz}`(E@a)zljk0f{4NH3~U=I znTT&SRT>mb|B}o6HG$py-^}0mQx8wv?iLNFOl|OTZSX>M@D#EcRhrwh_O#c%1sx%Z zf03>os;+UfFF&C(uA4Z5fDbffz6f~`lwDxa8Puyfe&*|Fc+6Uo3><`Sei!E1>ZXKm z?g1Ph9Sk_m(?GZ*oNc2;Wu)_LTv)df-&Mtv*tFnRPE{8R-%a?6HeUFgubNs#OOOeDW979T+6boEka7#&WZE37^=Me-qNv`h^OD;a4de+GPwZY*U zVBXjyKFpQGobLB6dS?gI^X-|ji!8)OhX6e00uGr94Cxb(VN~Wt|M7xr{Ma7&QvTSm zO-SjH3&+(9ueTgSrjr9fG`yBn4#kOD859>z^xwbE_pXn{iW@Kz-KeG{HL^6Q;flVI z{b$uMgn{LkfZ?HoF4Arj#UnmMPy3tQ`4APfT9u_I(W7(~iWC)7mZ16D&5F2kBw zn{L3J9+%q6_okexqpDcNFpPIU%Mu1=w(~4G_xPM#B*7tgmGcxOoWt^`C*7wN;aN$# zT8EjhwARAiES-EW7Maln>GNNnzENGqQHQ_i!M5!;croNohA{=R#`I@|1t&&ZCO`r^ z*6==aIjOEib#O;!E$lF79|KGJpKhG}=F_?aue(prifPg^g~y|Vt(k=QXu98PWNd#v zH;#Tk(DNc23r>+hrbm3h5+QTn@JwiObAh{x^VZrej#D2ZSKoz4w6vceEZ?y?SP?wa zy6XstZorCbS6nsV#pKR?qu>86O(j1Z7XAJl64x#sUa;JbJefZI$^lvdr$#z2sN$zs zKW#OB?Q5$6ESkuEW9d}pSQ>N3yX|@77k)1|T$liZ*5HQ}a>j#g6?RoT*8{~vj$^CN z?wHOJHI@$e`(ud$BD@RO3fby5z>EfWaQHDKn04+5sB5&0tfRw;jjF#$M3hBdo&BfUqM= zGuM&I;V1aITRh)>*PUwk`phX^lE_=9D)@fU6Z>hEUB?+D?-X7^O|=6!odjOS!OPk( z{AY-m?uC%t#*^=VK+08FqHC8~5DJZ|38xB(l^w#DH4S@^s@h1OREex&Mj8LTEiZUANZ>!E#&A>eBs= zK&gh9mLtLxKu<*jmR!4J_<&ZJTy3;^yCna&iS}MxKX~z1V%#6Oy(See87)g|dPp_B za&O37kbJUC;tq>RWXCJ91t&6_?e~iMyZDFshbS!mdkCTN)M?nA-97Me_F34Ay%BrS zRP5pY1-GvukW|)`B=)Kf)(erA&W_v6bP7+fg&aMyG=B7$QoKSL(v$74K;JsPw>qA> zI3BOucH>_0bRTMXe$tUVP1e(a@yg|s4$x>=>fQ4jw=1^4^?7eU4?R!k2uX3KkS?g_ zqIYClFII5H7Qy`Mf@djTF}j6we;CHVa8oyI=Ul2n znjrAh1wseH#n^VQKbg1GUGwkloiUrm_6_4_qwTMN8gldsKGpt^0Dw})5er5S{*Z0R za6lyt$P{3A+LzeUk!0hB0~A17w67gfgj&L?Z_mo9o|3hz5@m)X+mgKt^3T)7(=#>9 zF8K$2sl>``i?;S=d#7dbw7qRJJ=CX?w-rYkw!|*1OMkP(^eV}&7i|_;qqFW4G*XYw z;m7?I%?JdpmjZMOSI5hw9!U&9-|kI6>`Us-S-e9gAIqlFW<_i1ToJGQy>d=jOQecM zEeprT%-LX^JO4F?%8SZM4c<5M$uP?Eu4qI7=(oxJ@!joGYFx{DsTf6D`WQnK>3H7& zOQnbGI|!`vAkJ()`NQ4Tx7r}QKj1mDw&M<%XKhDpW_wPUU&bQQS5|ejqQj_+4YIMd zsf+8ibhGm@B|bVevx%XMPJdq@c6gWqB(^kX-2#F)vA$z$eN4EXe8PYeZ9bo;!LPNS z(#0?A?Emwc>*84FOTKt1xg;~yR{lceqPKrjm8510m=-CwE;VpXZEDdRJqPd9_Pimk zU76{El@yWIhTm$Lqvu22b=pB83}I?iyf!^;oEAQ0?L-eE`n~*_aG~u0r@KT z7E?EPar>h2vu)ZEe^3kUKL?MMP(z8AO%oZAo68m*2hTL-);E|82P2NT6qz`)Qns7) zkcS8)5n|!v@NEbiSN}>Aid};Uk-yPUh|E~sq zPW>vIIfxpw{D}CCIUoGH>bfr5q~^*i`8vC;8Iyth2oUB(hygB&^z42gry3$#)79F2QeeAh0$^Q z+D!*n2kgp9u1w$3=>81eiJM$(TYPs|pK_XG;2Or`;68`qSs4${tYE9J@Kh>ne^&DL zkYAp#+cY`y1jC`AQ8Ay(EKYIBS)Y~@_WAt|H>AdAPf`!4Os|TRurg-X! zIW*}Kr{%gt;KXqCU{@M&*wpmR);x@wCBS%}s@P>qf%wVCcVXt<$7eC~ZuLyni$=)!5D1u=*st}e4Rfx?p2#E z>|0y8Y|^EipAzntz9P2yxZq^5SUcQm`XsUD$wma1sSNT{m*i-L3vR4!wfI?`Lc zF3yqWjAGuaf7E>-S7F?EcXaPq@;Uk6z0k{fBbx9%7?HJ zQC~bYQ)^OAo(SzX__K)$3lc}fhxyI*l%0yb@r$gj+nB$sUs@bqq%G`X_r)R15=%gF z_Y#vZqCCk?XLcW6=OvQMy1S{#*)cV0MF{AA6(4{!0Y{w?(E3}g=wLZI&K|-z3#byW z6RTr<*drRlB>e4$+;tqpD;qI}&Bs0gEN&qe0cXW==-V&5@!+F)YT!1Bj?ZWa66^On zO=!L)-t$H#)DzmYGlkU`AQP=jJZf@Ju%&Zlwl=|U{zlr!^9Sg{N3-c+QPfRF@TKnD z5=D$23UFoGTq$uEJ_pXh{F>YO0&ay4S)9fi{F*K2@pLv=BmxZTCW|i%IdZHhK`s|qILJ+CS!YdEonc) z^IhNX9*AILfOz|nx%FP-!LD7B8Nqwz*FQIW+bS2klHj#&^0Cb;qb>hnjc@O7c%L4! z*Rfp&pdTF*a-DeUUW*q5x`h_cud`@q{<4dP-AoaQ&MQ1dzWdpD>D(?>A?zlC`J}NE)X6kNGmZRo0ynQG+H7IK=*k8>fBpi z%4+Gw3AT9p4`DbY!XS6u<*Ehy7id?>ojY_$v-wIKmpCq|Yy2Lfjp(dzC`2c!>NcL- zk4*m>@@g*(HbI+(3?!;f%Odh*OTb*;I@*Wj+4Nk8qTtx+%Vd5v=OIN2VJ67ffp_fX z*ekTCwMA!LV)-lrD!1r@8}8ke#`47Mge%eJfy#oxdFTqQzin>zx9xa9wD|x&EYvQY zo$Cza0IYl#3l7MJ?X76ur}7$j!JDGq)kCEZ;m6&21ky4?r+C=3XF5m_J*#+zF;=84Ap`eq}?Dnf?gP$&VB}vS}0T@P)^jY+U#|D<0F#M4_AU{uAVsrf1`yc zI2!ACs#mo6YItZ4)GP}V?T$?{*RY%e>)CWx|CCoJdg#;pD97#_deLI5&r) z`mVmq=^6~!Z%r=OTXF#;mwin=Z2i}a&a&L=+}#}#J*&l^^>ONVOG>ks(#JnD4N#u9G+bzOiK>}w;P_F+nd9Bpav`qU}oPVgqiMVFXhnk zVzOMr|G>G5fPC48!2Wyszdp>OFWeUzFcKA5oz*{aBh$|CUQf>lR-(ID6 zMPL4q9_KjpAk`)pXJ12jIQ&i)fx2NsE`3zocOLjD?$ao9*#zN@zyg>wNFjy(DXrJ~ z*Nt2P9ELpClX&U5lPqEZp$EZz@hRhR5II-3^2T)_PsgQVJ4XI=G|75KX14qCZ;ZuIMGn z$fLP2J$&%B7t6rrkVpTNp6ipAUXe}1ljFu@p#AFduZDy_htHJQ#t-BAJi@OozeJxz z)^;V)>CfgcgWIFbMj79oXt@Z5VR4gy`^gKr+|SrNi9Uji-PE$ywVNPsr1}T@n&tl? z?c-MhF}n+QDB7fDYq4x0@w1inRojkU#~p58WxJY?0Pe@zbL2l({Y#@XXd*$5xXGm0 zi@I3O5Y-3Dh@Qhv%|qbUya{?n|B_pH7Gzyz_%KHg1F=aNZ$FS)q)o6iL^?5aGI(N* zL+TKBa&eD(NL{7*guNwPU1;1Xe~(Ona!#<>;fM?!z~Jg4qkaEdc%O~EPnkktlI z!#tb0RH`x>C#?LKymIxEGx-y@H}mIfTG9m@K>JzrY=ya}|KAwR7Euq>Kn|}#^GWB4w>|yDC8xB&{Lw-?;CE@@+LBpZY?M^y~T~FQZ zK_$(6(yWD8x75H8E%v+u2%8Y|aTnz`QLB+QV>?j~3GYtr4Q_xTBCrJ4j?h);D2eg5Z$rrF6lDEr#i1Id{Lb{); zAHUs{I1N{9cvJGz0_Y*U%N@1NM0!G_GC5uWS>I*l~>uB?{w4g78 z^d;JSohqVCoJX^l$%-Z6qn;OjW7^IXKFRBaLXc?f5{!GC4%Ij)Ol~Gpzcqv3k?*3| zky>=;KP`+^sPVJI)L1uylvvo1@J+ot!QOyRCNi?k=k~G`k&7cFWR2SiW0u`_8^5YB z?rw(|5MMYLct^QFo#SrAy%*T9F!45zwRQ0a^r^Y(bh_X2zF+}*A5^0^`ls|b0Y+)B zah18JK?lhoADWcrGf+GTi~DS)?uYbN*;a<4p6YRb#Heauy;pD9PS&-{GrymgMV7xE z;-M@fPZ%#{fTr$maW_b#4;fm3@%GCGna8Y)?i;FvuWi>kgy0+$>W)qqD}^ zFcZk%>Bq{OsLY)d7C6HScsbAPiYj(~SnNnE_HZZ!h8*wxR^L>imGu1-nrbLW3|Z}X zpRkU9OQ2+`=kQtCG^{YwP&YTMYd)ETjI-!fawq42ZZt78v{d4~evAxm#L#gzw3a!1xtp|&RF;ANVdyWPZ z2j%DwB#zjb-j;y|6f+%e(Nx!e9@@IEjg~MMoprpG$m)DDd`S3Z7hsD!9e$}Sy)8?K zPe=XTP*wP*@kLvf0S)3AbfKWT0ZFc-xm^Iix30h5qUN#JqH4 zUb-nvM+Y>QD+YD`klc+de(K}3w4(LiGDtSULaIr7?`f|YoNHs?eJxq4}D!*D6)!AxL4t(|4||k&@ykTE$xq{i<&tYDfmbN$uyad zDY$C)PG}i8$Hv)sxaP)VD!j|R|ESGEa2ZJE_gVA$Gv!Ioq=dunn($$k9xk&7Rwj2r zn40K*i+(NiZc>JO!v_^29T}F z@PFxcBJwcVbpvm!Rtya7p;Xr@sqU5N%o|w8b)KNePth7Y7I{5mtX_l5r8z& zGlI}ty69-;P4KLsnaq)wggSuRwih$J*=86-_2bg~ zYV)=^gra)lrl3UIEFM8+p+1-1=gz&UEj?t|x3W_79Mwm4otdk;@}&^uF2?AGAcu3K ztFt6wQQO>ip3sywoReEon*Rie(Rk(&JLQ#QKz-e5+=-(e+QbY9AFONrd9bcEqiWWr zv?hnl1+J#;p)!a4mpi=tLO-qe7r|@In&ru!-w{y_OrY2N(Jv&+2P(wEunO7|OS zQ}R(5$zSG$G|QMoxDsX0Qz}3hEPlfuldQtcDeZjq?r^^)rBX6hyuX)bc&#fkbB%oM zQu<1tO5Bk`XjvSWC2qpWZeLH=ww=2+@lDI4qSv5Xng?r}JK2)VTbsKJ8L3W2s9jj@ z(KSM6yu=gkcu5E_)A8}-&`84(sm5aZ@iI4Ff*bR`*)tMk=ypqQ`RP>qt`xi5%`%}* z-TS!UmhX>%UlGwjx?Kr?p6!mNFF4|?dg2fU)PAqKbH0=`yI+AY?1Y|O%dR6k9D)PT zDuK!PUOE_lpF|tWr9$hEBMD&9iaLiYGrR zV3EaNgV;oxh&zEu=G#z%wT!FqH$tHmw5sn*@t;r}5pwX;F8;9UxT!63W|*BULvB{> z&w~qm`D5l7zPN3)r5#<13(S_VI|2*@h=w()8tMLBLcxpUZ;A} z&2`$YzOrxz&a7GgmgG*3BDayj&Y`R(5lfBHDe6RDd|jr}R73y4i!G?aqkPo6>muuk zDZ@j!-hV5v8}}7`rW+Qom?)?%69LJ>Cbh6A0`rS4h`@7W^R;?D5vd~iXr!3E=Lj<3 zf(ZF)5c+gDW|fL0r$!jbawWOkpe{Y)OvX}sW#P=af}M=zq%8j(Km8Wo1qMi+|9PUIN`Nd7AQkmuK|vGG#y2v51|+i= zHe0zuD_3ac3RSMq%4s)uQK8BeS~*gY%oNJy=yl-?Ud0ymu<|{uyso)@qDPh5?V<8L zRK7=(+U0vBb9#RHc>2aFd=pFDjldG5K6oV&sirTPMMj=#4(3vow|c~;FDs@2d+~HE zxq%n0+Gw#C{s8Xu#lc6@BiYKB}WndU~45sEf{7 z=9Mv8k0qBBXMTtzEPP%#o1VlLmDuqCjJ)rP!!(Ekk5!{NXqZD=)NHWW zn?0Vf6~zc7+Pn;TrzUtcb0$>~|7!H`+SHf|B!UZ<*MYz*MMJ5zx{!GfGiZ1$w_kZ4c(fS_u0snu!Uc^&p*LOQ# zGHgmc@8UQ1isR_HboSuI^775=FYG&RPNJ#Xh=&R{z%6o+D^fy%C2!>}XLQ4HTw!A) zU8eP8aY4LtMZ^2B_GlEIo|BD6C?f4Cf*H!=c`Tr6H3Z9(Y(AV@6c z{|=ZW);|j&nwPJIWJ%SOvBq&;gHD;E)zL--y}#-SY%W=_QC&;-+pn`{WYIX%X680z z2BMF?a%}D_7H(c*494{-FcDp~qe&|pH+K|?BgCUMD{9kc55?^5Es(|T++O}D)+=fb z@#^}z%1rN^1e!y z*(s7+$eVp1oiWay0EO`xS3tpzr3Jvex{5yXTdv<|v+P)U8|P`^1pX|#hCd6=;m>@% z>sZ<&QOtgKb-+Qtj-`c(Uby{K2P-<3mJpwBxsH!lcPuR<5ZH5Jx=Qa0{rh6Q?_udS z%hTl3Rf)a!k?QN8n(V1Z_*9%IR`(_~WhdUw&q)tJ8ZuknZMeIx*A%B7@>BePb+oBr znlJ_HV^0u_Lq>yYp&RA~uMzZ<58Y$G7K3SQ>}Vs*)0fG^xA`b&wUrmsp;+>pV?V78 z2rAk}EWLh;)06jd`s+=YP{II=bi2^~3F-r73fqTe`KxaZzf|`XHip2mz>b^d zD*HvtQl;r#NGT-TU6=I4eDy>x3b_M6+}SyQC&SD9h1R?rIwbY6Wq>Xt?t`6V;Cp9g zwq>A#ea7;gdalIMA8h9o_Kkltecdlh`SCf}9g?cewq}Sa<*!NATphnyIqI`H#%2@a zlu+61dQ+ws%3G05*qY@Y;3{q{75DO*fGRJoLN|Kf_`{Im4;cm<;GJW?6Difg1+Unu7H82>QBhQog-GsCmTJ*BREt=n3YpeSQm@#%fQwraVW}S zYgq?KEyc3^m$~^R%Zru;KN35~;dXsME{NG5&NJj~|E{b4ji#q6l6e$yE^ohEMwQ*I zCv4wm_k1%z-oL4X zkUJVU5_=K0pm^Ka;Rw$517La%jHhNue~71kXjc5-Z0r>mvo@VKNalh=;ytI^=bk^v z|BP(s*b;JQr3g)EZzKm*jHw@nA2KCwJ#nUxnO}9pp^S`zXC?LNZ6Zq zE<7Ie#B^czk#bq=ZsX||-|3?jNQ9}|N_~K*68}?XKQ&cq(yT7I_?9wsRP82@jtJ#Z zsG&1)a;oQ|-_e<1N$cjqcT$3)+vqw7j^w^7Ux*k2Q`p z={|?Hy24m$;LPNP!&kjS4LuU`lW+En)?8ZNr;`7IwTVXJ2#_ys84E3=o7=PD>zorV zlOW&43hl6LmpmU`G^(I3J*og((qV#Zb+DlpdA)T*QT2cg)oD&KM^W&wK2;xmRe5pd zNO0EVdh82*+GlVcesTK)`S8oaiwGkIvazYN`&0@WEoc#2fT`ZmIw-F{nHcR zN812n1?M@VEsuKHZy-6~6Y+vI(Rp>{110QMr6i0EU*+aXcpDmRUcvlT2b;x_s+j1W zwZW>{$b*v zOt&`e`AN^{?XS^0 z?KTIS3B+{#lI_v27Oi=pXJmVHtp6oC(~8O!2(G2k9&#SKBs{^U|4Os?~GKBpl#LGG^sxPQbPb_F& znK&wF&EdZyb1W-pU0*a{dAd)J=%NFgS2nZ<%a3%yl60R)mSi^^UYG8FKuzj|>R`*N zEm%An2I-nw>ZNeOw$IC5!=kuqYYYQQ;-9v4PWN`Kjve_yO>lxBz`^$0Zv${OslNNi zR&B;u!T`U`i+Jn$p2VEtBvD<^yH?RCYuV{dv3Fl=c3OiHsN?|=yb{~1aQ|@3E&D?f z@&e7&l8C3{1<^%SAvw`sA!xF-pmihkw7EJxuq3*OkHmOB@|}_C3s2;`6WBK%P8WKB z4Ffa9taZUBFTS(aC;tPQ&3qobl+APIcnu?6^oM7U)uLW1+~>DHZ{bHFLS^v?9ID$M z;*d>a7Z&vcJq)*U=yT2k`RFqhbm&5#@&6rv7SqB1KjF{opnW&|S*dmR|1JDcWCv!i znw`1fHGxA1sfLzu6S<1GZr9-xqrgp|r%gfdL9N1=EagQ-`<0&V#Qe$#2Sx=Y@zytc z)}@D6)TYjKZ?H2X3Vo32h!GjRCSBMc9$s2~~2HyD)`6qPCCyiCjQfCEiQn#sHck}%W?Ad;I# z#!|T>+KhQA66~~T40bUf&7DTWE2e9owDeLDnpZd8f0K5sA0d_(R<4RR2ebgE94M)Lbb4S@^3B78Oik))*7Efxowg=^ zlHAa<;VNYF{)x*?fFMJ#5dk8$*OI{?^B8#Ww+jiTyPMlURU}UyKUCunUJS+Y0WSv6 z6c9Gdr18wr+@_o9rx~IOgGM(iTbF#_4SwD9m&A7vx=+jLE*%XCueW?$m%0Io@I8U; zH*uU)2Eh%V}7&xXjn|nb>X&aMj2t;a?d{L!?9e!DWL-LrXbYIm$t&O@Op@O|Dc ze8{p5Sw%K879r=`cS6twBTEtu+mb!$Xxqr)@T5rF$f5p6ap8C}!%^GFY94s1(obDL zT#UAn6-w6z6}zVw>11Bx)giOn9A0$P)>&V|>ocT6^}0s}M)5)jAO+-lUa+JG)Hp8J;r8Dc+|ZwY@21=(TxilbM6Zhf zU?FXYXSM(fKj40u7-wvW&E+8vM&6GX?KNHW$rC^b7>v_xK`>wm9KgnAixDVoc10!P zYRJS$W4m_POW_IlRIg9`juRT_g@N0>l{RmxE{JY*NB>d~tp+H48gH#>UQFJr_NP!? z@SyqV6FMk;6_+~qv3GXlzKO{MqIkE00XS#b?8v+MpL0}K0cNm&-0K}E7=Kv z2Y5K{VlDyp3E?bk2x(-iJKvYZX(Vp~+}>CZsM(;~37*Quc!z%f19Znk_6XkDKR}b@ zKI0&ar+FLXbecPdO{Br{LaMK04PA7S;mam>L9o5k9`OCqjK23>+8p3yZ+sKlPEW;8 zX`(hZ7Cr_~Oi-$`zLb*{a0vpvM(ANdo-6yM3fca|peIw7)udLtEc|&Kc35zx2<-r_JVV7)ca^uIzB}ML` zU#L-{Mky{j+a9xriOVFen|^M6F&;>&?6N!6hlGVoI@NF;p(GTFl24Xpk-f`bEi7AW zmqp)lE8tzdq-VrE1^qB3F+OuPE7JZzmcQk?o&2#5ebbBMeJ`e4){;o30Y=|NKkomc z?M>jLtgiq6fI)+TPgKy@VvRLwP|=`969Jt_fQcrG3Kn-h$#D}t-D_pMFm&x5G9~xal!oGpL3s?OaR;d{{P>f*Gu!v^W62^v)^;i z{V|YAU7~kJSryMo5Tr)%Kl@FG+dkBKmadDmpIdwmb-K;ve6ZCYxpe2iIl}s3JgVQ2 zn)bQqn(dMA=W40MD*=O8hk}sgbj)L2)0^jMARIaK_E(<$2@a&vogSt9|f z+?HLZm7_uJ+g_!?a-u_(+*HJZFEZSUK;2@$V?=2AX?t8}g-s|_z^trvQ!AxqFqIgB zS0ylNR=Z1Quypa&{uL3dotu?4Y&&nC_41dc|p zb@OLvQ7$MNI{yN}h3Spa%<2p-I-a2i{;9t&o9Iuv1^GI8VdsSBpS3NVkffOqX^gt( z!qI0al;du>&{BGG;pV?)e%aQzDroG*LaFEDNXekQ(D2)mxlWanr6U9@+j;BK^BF}c zp!wKb-enuny>9Rg;@V%O@Hh&aCewG}v$WafI=@Gbo|(!DUPjm)7grKhfC3Vp6{}`F z#)!K{1Z-@S6)lC*AGtB&PjkQpI*QmP0;ki$zj#qLT6%)@ZZkXV$YjW?)m^pL&)}!b zNY#qnhzIoKu_d#oLp)1Uljb#Tsci-et9W z@;1-K8ig#dep-XfbpGMQJA~Fj(^W!CR;xg(wHs;KbNa+!>9q=ck!ZT~&sMHc<;a>` zP*whYb+Yuk*@xy3($IDeSam0jy%Z4dBx30W{1sNzBe%cIVx#^VmcSiNDWJ!$j+Y zNM)AZwo}=_Jl69p4z1BAN@gUDZz!7eRKw@Ht#*lq!S+&WgJD_b{iCT1AfS+68n99? zr}2;}#-Cz})qaXkF=QcqL1v!CoUsMI9p^cFs?GC$*%E|KbMI9K(D&TBvw0r!8!dM1 zT+OqoKs+LZ*fqYTAv8ftCD|>Vxzm2c+^|JBs8H`arZFST9Z)9a z)>(z1St}1jd-$1fGi7|xaVDIMZaUQeSv~df1X}$+hxJ!(S3eRTRGFT|A8#^v^!kO( z;;L0y@JQUUGkEm$vpCRZk;g39?5Z8W{cqplEHc|D#YLPz>2fc-G^>L&DnF|aT@P!Z z?p)0%KBz1{sDDGv&|DgLmImDM$O?p0+uB`nRtz%R4M@<$=>}iFkN)?!w(63;)Gw&8 zVvxljSfQS;zq?CL%j+u!nFT0)l2aaWUM&!uy&;0`i>efV)5HphkJ5w{l$B-KD@=7y za4(m|;O(d~nHwaibneEfjFlCIXCZS?kv?%ls=e4D(jKh`x+gf}b$1YfsEC$e_DVOy zR4X`VhBD$SExx1J(?z>J!{F57pjqv#c&)nvT5NgH<=>3{iD6X{|6iMrOl{q_q7eLK z=^I4Ab(mAsl)wl74$DNSb22ithV+nOpdtHi)yoJN17CuH!>b#9X?Q^En9WiiTwl~* z6z{>}2qluO=o5HE-Pis-fiPzmsI)F#)m|HRsxjFLyczBj;x?$<)zt1Pg<4Bg8S8jq zqUPG_EbxauZ2aJ1im8^gc92>;%#zeD>C z__O|wz^^i3j-Gb)JMcP-3|x9dU?>H=M{d2UOnKO|DdCMRcgqJe=fJ;mTHb;gNuwZO zOJvrvy#05se$USQR{T$gc+|v@{Ox`hZ1=k``?t5B!+hWtw(|xi+nscRuvz)HL$jCI zrw#(z88Mt*#A+?La?O;u#Es;MlQt!OKYy~v-F?Ab=?=G48R9OhyHHwJNih3}Nd2~> zVmDgKBvnXKfmcTpsDwKGQ_yS@Xl8=F@4|Ve=ltjmVvx9I%frVSUh94{X>*(Go>rFt zX?Ijc$bo%>B*Tu%$n1fg`X3!D=zmnuG@kbBCv`qLXbP{Gke(t`v=n$Gs?iKhK`dZ? z07$uO070RC>0w0rVPyItgZFj*O}k3zjzMceyu(4(>h8r@2}ow-dg;5 z@SiqU^g4MK2~0v)e#JU=znA`N`d0yJwKRsAylL3BEmo#e6Pz|NoG)}&-scMzxHBl2 zdKj4d%7zCXohQr_MrVUS4Y35bU{)( z(x%>c@q$uY5<3TlH9i12oUyuBd%Bu#f;ecpO&!SC61ei*sz1xy7c@U%uW1T}v4h8t z{E7Mm@#Z%QTo=f%ily^M-U?Im>2T;LCiri7!wdd(TDMO9au_CmUklK8TgyWNrXp!iE| z%5`7QfOFdO$#z_immdA^*TYG`G%bv>IRD*xeBEy+>+z)t#2wb-v_JjV>rp@bht^{< z4izZ+!`HIbqjS@LT#uvG;Qznt@jIwFdp$M}ISY|FWVAM}2uZ74j6$Cs&&Kycz7PAM z?>Me3+HEJ!a;nxNXOaV9z{AW--NQUULDRM3oeiO<+S>()?SK49VtcCD)Z3FG{tGwF z+_gcIg$&Bag;30Qt0rg>vb|h(PP#|J)E#0Jalu0&55wy-zM?I^u#YE)?k$hAqDHjM zxl$zDo7l7Hgxvce_xaP@^owKb>MX}rBY5pzVMKiwZXS46ebCec^iS<08Zdo6T@-T2 z;~6AJBkMaz4#^u09a++o%4tgdaK4j|Eq}H8nXx`9mx_(zOh1Yaj;)#QG{(>} zhvo;rVmNo~QOGrE>F9iC{1f~99LD4xLhf6;i6Lc83%%}p#*i}3yU1RTzsfS=<+rmg z$)05~JeX<%UO7^6?*MReQMV4tC<>S>yvUQvRF;!d1>K02ui;Tf12qo#=3zy6n;SnP zroFcr!Yy<^9nZ8q6-UHFqjYGT*ZZA$OOp+vKYlrjiu+^Yw{z8rAy+NT=Bih! z!3-6T$Y{TC)yZJ}$P8B%rP<&BL-u}*%{w*H_$ixg-3Llr0H&#j5vU;_70&uz#b=vY z{{#JK|MJpy`rN56fCOWO1hZ~5+E4wQA8GwAF{H#!F9JhopZ%|$;KTD{|2urhzu@2E z!@7t5Ek5iW`#;2ogOA?{KJ>bIr}$9&hyNNM{w$puDZ3*+l%OiZ)%SQY3m=ZefAAmh z;aoNNe-R(H;h6p}@L~E&8|}US+zua3T#?3ynRPqEhe*eGjwh>sFPVHj zsP``xjXiU&p29SS5jco^6}Q{S;JaSm;7HH3rJ4k)O-@|-3-5d0K(XjxKp{MKhb~Qr z2Q1S0hgu0sZ~vygMd{9p$4>`G=%@kGF$*4;r*z&hwGb$G`F_?;9osvKIr+KeqA?L@ zjNc!-BM2eN6<}VPJ57D{b4D46{T!S-&|C{G#6dy*JfLRdB@xnt4tF0Wss z%*U_sy1dH=_WY?mue0YhJooFe*`8O~bLVSSUKtO{yXm9m~-n<&#l!(2Wm(qRJrZ2U8;(bT&dzaB$c8H_p6>~hbJnsgMGf!5w ze-Z>?t8J%SxgXr;@xvRAphf#u?%g09tJQRjEwaBOw}Eo)?X=d7vvzEk+aiNl

public int? ShardId { get; set; } = null; + /// /// Gets or sets the total number of shards for this application. /// @@ -55,9 +56,10 @@ namespace Discord.WebSocket /// disables the message cache entirely. ///
public int MessageCacheSize { get; set; } = 0; + /// /// Gets or sets the max number of users a guild may have for offline users to be included in the READY - /// packet. Max is 250. + /// packet. The maximum value allowed is 250. /// public int LargeThreshold { get; set; } = 250; @@ -65,6 +67,7 @@ namespace Discord.WebSocket /// Gets or sets the provider used to generate new WebSocket connections. ///
public WebSocketProvider WebSocketProvider { get; set; } + /// /// Gets or sets the provider used to generate new UDP sockets. /// @@ -95,15 +98,16 @@ namespace Discord.WebSocket /// traffic. If you are using the command system, the default user TypeReader may fail to find the user /// due to this issue. This may be resolved at v3 of the library. Until then, you may want to consider /// overriding the TypeReader and use - /// + /// /// or /// as a backup. /// /// public bool AlwaysDownloadUsers { get; set; } = false; + /// /// Gets or sets the timeout for event handlers, in milliseconds, after which a warning will be logged. - /// nulldisables this check. + /// Setting this property to nulldisables this check. /// public int? HandlerTimeout { get; set; } = 3000; @@ -151,18 +155,21 @@ namespace Discord.WebSocket /// before firing READY. /// /// Value must be at least 0. - public int MaxWaitBetweenGuildAvailablesBeforeReady { + public int MaxWaitBetweenGuildAvailablesBeforeReady + { get { - return _maxWaitForGuildAvailable; + return this.maxWaitForGuildAvailable; } + set { - Preconditions.AtLeast(value, 0, nameof(MaxWaitBetweenGuildAvailablesBeforeReady)); - _maxWaitForGuildAvailable = value; + Preconditions.AtLeast(value, 0, nameof(this.MaxWaitBetweenGuildAvailablesBeforeReady)); + this.maxWaitForGuildAvailable = value; } } - private int _maxWaitForGuildAvailable = 10000; + + private int maxWaitForGuildAvailable = 10000; /// /// Gets or sets gateway intents to limit what events are sent from Discord. Allows for more granular control than the property. @@ -175,7 +182,7 @@ namespace Discord.WebSocket public GatewayIntents? GatewayIntents { get; set; } /// - /// Initializes a default configuration. + /// Initializes a new instance of the class with the default configuration. /// public DiscordSocketConfig() { From a48e46de522cbe84f8e18e9c587fa6a9701b0c00 Mon Sep 17 00:00:00 2001 From: Still Hsu Date: Mon, 14 Dec 2020 12:25:51 +0800 Subject: [PATCH 080/212] docs: Fix the missing "In This Article" section --- docs/_template/light-dark-theme/partials/affix.tmpl.partial | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/_template/light-dark-theme/partials/affix.tmpl.partial b/docs/_template/light-dark-theme/partials/affix.tmpl.partial index aafcdf05b..b3ce60b5c 100644 --- a/docs/_template/light-dark-theme/partials/affix.tmpl.partial +++ b/docs/_template/light-dark-theme/partials/affix.tmpl.partial @@ -27,7 +27,8 @@ {{/_disableContribution}} From 36de7b25f336e26e954f244ed94f658bf00f66e3 Mon Sep 17 00:00:00 2001 From: Still Hsu Date: Thu, 17 Dec 2020 13:15:19 +0800 Subject: [PATCH 081/212] Temporarily disable StyleCops until all the fixes are impl'd --- StyleAnalyzer.targets | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/StyleAnalyzer.targets b/StyleAnalyzer.targets index bbb90b800..0794cfacb 100644 --- a/StyleAnalyzer.targets +++ b/StyleAnalyzer.targets @@ -1,9 +1,9 @@ - + From dd2e524ff926f88fd1f2f69ef238f1b98e83248b Mon Sep 17 00:00:00 2001 From: Fyers Date: Sat, 19 Dec 2020 15:39:09 +0100 Subject: [PATCH 082/212] fix: Invite and InviteMetadata properties (#1639) * fixes #1495 * keep obsolete properties and return types for compatibility * missing properties for SocketInvite * Restore xml docs and change obsolete message Co-authored-by: Paulo --- .../Entities/Invites/IInvite.cs | 21 +++++++++++++++++++ .../Entities/Invites/IInviteMetadata.cs | 16 +++++--------- src/Discord.Net.Rest/API/Common/Invite.cs | 6 ++++++ .../API/Common/InviteMetadata.cs | 12 ++++------- .../Entities/Invites/RestInvite.cs | 9 ++++++++ .../Entities/Invites/RestInviteMetadata.cs | 20 ++++++------------ .../Entities/Invites/SocketInvite.cs | 5 ++++- 7 files changed, 55 insertions(+), 34 deletions(-) diff --git a/src/Discord.Net.Core/Entities/Invites/IInvite.cs b/src/Discord.Net.Core/Entities/Invites/IInvite.cs index 993f1f047..47ffffacb 100644 --- a/src/Discord.Net.Core/Entities/Invites/IInvite.cs +++ b/src/Discord.Net.Core/Entities/Invites/IInvite.cs @@ -20,6 +20,13 @@ namespace Discord /// string Url { get; } + /// + /// Gets the user that created this invite. + /// + /// + /// A user that created this invite. + /// + IUser Inviter { get; } /// /// Gets the channel this invite is linked to. /// @@ -83,5 +90,19 @@ namespace Discord /// invite points to; null if one cannot be obtained. /// int? MemberCount { get; } + /// + /// Gets the user this invite is linked to via . + /// + /// + /// A user that is linked to this invite. + /// + IUser TargetUser { get; } + /// + /// Gets the type of the linked for this invite. + /// + /// + /// The type of the linked user that is linked to this invite. + /// + TargetUserType TargetUserType { get; } } } diff --git a/src/Discord.Net.Core/Entities/Invites/IInviteMetadata.cs b/src/Discord.Net.Core/Entities/Invites/IInviteMetadata.cs index 471dc377f..c64b3205b 100644 --- a/src/Discord.Net.Core/Entities/Invites/IInviteMetadata.cs +++ b/src/Discord.Net.Core/Entities/Invites/IInviteMetadata.cs @@ -8,28 +8,22 @@ namespace Discord public interface IInviteMetadata : IInvite { /// - /// Gets the user that created this invite. + /// Gets a value that indicates whether the invite is a temporary one. /// /// - /// A user that created this invite. + /// true if users accepting this invite will be removed from the guild when they log off; otherwise + /// false. /// - IUser Inviter { get; } + bool IsTemporary { get; } /// /// Gets a value that indicates whether the invite has been revoked. /// /// /// true if this invite was revoked; otherwise false. /// + [Obsolete("This property doesn't exist anymore and shouldn't be used.")] bool IsRevoked { get; } /// - /// Gets a value that indicates whether the invite is a temporary one. - /// - /// - /// true if users accepting this invite will be removed from the guild when they log off; otherwise - /// false. - /// - bool IsTemporary { get; } - /// /// Gets the time (in seconds) until the invite expires. /// /// diff --git a/src/Discord.Net.Rest/API/Common/Invite.cs b/src/Discord.Net.Rest/API/Common/Invite.cs index 649bc37ec..aba267f34 100644 --- a/src/Discord.Net.Rest/API/Common/Invite.cs +++ b/src/Discord.Net.Rest/API/Common/Invite.cs @@ -11,9 +11,15 @@ namespace Discord.API public Optional Guild { get; set; } [JsonProperty("channel")] public InviteChannel Channel { get; set; } + [JsonProperty("inviter")] + public Optional Inviter { get; set; } [JsonProperty("approximate_presence_count")] public Optional PresenceCount { get; set; } [JsonProperty("approximate_member_count")] public Optional MemberCount { get; set; } + [JsonProperty("target_user")] + public Optional TargetUser { get; set; } + [JsonProperty("target_user_type")] + public Optional TargetUserType { get; set; } } } diff --git a/src/Discord.Net.Rest/API/Common/InviteMetadata.cs b/src/Discord.Net.Rest/API/Common/InviteMetadata.cs index ca019b79b..f818de699 100644 --- a/src/Discord.Net.Rest/API/Common/InviteMetadata.cs +++ b/src/Discord.Net.Rest/API/Common/InviteMetadata.cs @@ -6,19 +6,15 @@ namespace Discord.API { internal class InviteMetadata : Invite { - [JsonProperty("inviter")] - public User Inviter { get; set; } [JsonProperty("uses")] - public Optional Uses { get; set; } + public int Uses { get; set; } [JsonProperty("max_uses")] - public Optional MaxUses { get; set; } + public int MaxUses { get; set; } [JsonProperty("max_age")] - public Optional MaxAge { get; set; } + public int MaxAge { get; set; } [JsonProperty("temporary")] public bool Temporary { get; set; } [JsonProperty("created_at")] - public Optional CreatedAt { get; set; } - [JsonProperty("revoked")] - public bool Revoked { get; set; } + public DateTimeOffset CreatedAt { get; set; } } } diff --git a/src/Discord.Net.Rest/Entities/Invites/RestInvite.cs b/src/Discord.Net.Rest/Entities/Invites/RestInvite.cs index 153eb6c41..95b454c20 100644 --- a/src/Discord.Net.Rest/Entities/Invites/RestInvite.cs +++ b/src/Discord.Net.Rest/Entities/Invites/RestInvite.cs @@ -21,6 +21,12 @@ namespace Discord.Rest public ulong ChannelId { get; private set; } /// public ulong? GuildId { get; private set; } + /// + public IUser Inviter { get; private set; } + /// + public IUser TargetUser { get; private set; } + /// + public TargetUserType TargetUserType { get; private set; } internal IChannel Channel { get; } internal IGuild Guild { get; } @@ -50,6 +56,9 @@ namespace Discord.Rest MemberCount = model.MemberCount.IsSpecified ? model.MemberCount.Value : null; PresenceCount = model.PresenceCount.IsSpecified ? model.PresenceCount.Value : null; ChannelType = (ChannelType)model.Channel.Type; + Inviter = model.Inviter.IsSpecified ? RestUser.Create(Discord, model.Inviter.Value) : null; + TargetUser = model.TargetUser.IsSpecified ? RestUser.Create(Discord, model.TargetUser.Value) : null; + TargetUserType = model.TargetUserType.IsSpecified ? model.TargetUserType.Value : TargetUserType.Undefined; } /// diff --git a/src/Discord.Net.Rest/Entities/Invites/RestInviteMetadata.cs b/src/Discord.Net.Rest/Entities/Invites/RestInviteMetadata.cs index 55acd5f45..07ee5851c 100644 --- a/src/Discord.Net.Rest/Entities/Invites/RestInviteMetadata.cs +++ b/src/Discord.Net.Rest/Entities/Invites/RestInviteMetadata.cs @@ -6,9 +6,10 @@ namespace Discord.Rest /// Represents additional information regarding the REST-based invite object. public class RestInviteMetadata : RestInvite, IInviteMetadata { - private long? _createdAtTicks; + private long _createdAtTicks; /// + [Obsolete("This property doesn't exist anymore and shouldn't be used.")] public bool IsRevoked { get; private set; } /// public bool IsTemporary { get; private set; } @@ -18,10 +19,6 @@ namespace Discord.Rest public int? MaxUses { get; private set; } /// public int? Uses { get; private set; } - /// - /// Gets the user that created this invite. - /// - public RestUser Inviter { get; private set; } /// public DateTimeOffset? CreatedAt => DateTimeUtils.FromTicks(_createdAtTicks); @@ -39,16 +36,11 @@ namespace Discord.Rest internal void Update(Model model) { base.Update(model); - Inviter = model.Inviter != null ? RestUser.Create(Discord, model.Inviter) : null; - IsRevoked = model.Revoked; IsTemporary = model.Temporary; - MaxAge = model.MaxAge.IsSpecified ? model.MaxAge.Value : (int?)null; - MaxUses = model.MaxUses.IsSpecified ? model.MaxUses.Value : (int?)null; - Uses = model.Uses.IsSpecified ? model.Uses.Value : (int?)null; - _createdAtTicks = model.CreatedAt.IsSpecified ? model.CreatedAt.Value.UtcTicks : (long?)null; + MaxAge = model.MaxAge; + MaxUses = model.MaxUses; + Uses = model.Uses; + _createdAtTicks = model.CreatedAt.UtcTicks; } - - /// - IUser IInviteMetadata.Inviter => Inviter; } } diff --git a/src/Discord.Net.WebSocket/Entities/Invites/SocketInvite.cs b/src/Discord.Net.WebSocket/Entities/Invites/SocketInvite.cs index 902f13935..5dc53a833 100644 --- a/src/Discord.Net.WebSocket/Entities/Invites/SocketInvite.cs +++ b/src/Discord.Net.WebSocket/Entities/Invites/SocketInvite.cs @@ -49,6 +49,7 @@ namespace Discord.WebSocket /// int? IInvite.MemberCount => throw new NotImplementedException(); /// + [Obsolete("This property doesn't exist anymore and shouldn't be used.")] bool IInviteMetadata.IsRevoked => throw new NotImplementedException(); /// public bool IsTemporary { get; private set; } @@ -138,6 +139,8 @@ namespace Discord.WebSocket /// IChannel IInvite.Channel => Channel; /// - IUser IInviteMetadata.Inviter => Inviter; + IUser IInvite.Inviter => Inviter; + /// + IUser IInvite.TargetUser => TargetUser; } } From accd3510dfeb64623491580ae2c47fbc815c7da2 Mon Sep 17 00:00:00 2001 From: Still Hsu Date: Sun, 20 Dec 2020 18:46:58 +0900 Subject: [PATCH 083/212] docs: Add alternative documentation link --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9ace4f22e..34a633f72 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,12 @@ An unofficial .NET API Wrapper for the Discord client (https://discord.com). -Check out the [documentation](https://discord.foxbot.me/) or join the [Discord API Chat](https://discord.gg/jkrBmQR). +## Documentation + +- [Stable](https://discord.foxbot.me/) + - Hosted by @foxbot +- [Nightly](https://docs.stillu.cc/) + - [Latest CI repo](https://github.com/discord-net/docs-static) ## Installation ### Stable (NuGet) From a4d32d366d1526562ed3cf074e412161ef5ebe03 Mon Sep 17 00:00:00 2001 From: Paulo Date: Sun, 20 Dec 2020 07:09:44 -0300 Subject: [PATCH 084/212] fix: IMessage.Embeds docs remarks --- src/Discord.Net.Core/Entities/Messages/IMessage.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Discord.Net.Core/Entities/Messages/IMessage.cs b/src/Discord.Net.Core/Entities/Messages/IMessage.cs index 35458d87d..1f3f5b945 100644 --- a/src/Discord.Net.Core/Entities/Messages/IMessage.cs +++ b/src/Discord.Net.Core/Entities/Messages/IMessage.cs @@ -92,10 +92,10 @@ namespace Discord /// Gets all embeds included in this message. /// /// - /// /// This property gets a read-only collection of embeds associated with this message. Depending on the /// message, a sent message may contain one or more embeds. This is usually true when multiple link previews /// are generated; however, only one can be featured. + /// /// /// A read-only collection of embed objects. /// From 4a7f8fec937f296bfdbdf60d4ed924e6897f9a75 Mon Sep 17 00:00:00 2001 From: Paulo Date: Sun, 20 Dec 2020 07:37:32 -0300 Subject: [PATCH 085/212] fix: Move and fix internal AllowedMentions object (#1727) --- .../{Entities/Messages => API/Common}/AllowedMentions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename src/Discord.Net.Rest/{Entities/Messages => API/Common}/AllowedMentions.cs (92%) diff --git a/src/Discord.Net.Rest/Entities/Messages/AllowedMentions.cs b/src/Discord.Net.Rest/API/Common/AllowedMentions.cs similarity index 92% rename from src/Discord.Net.Rest/Entities/Messages/AllowedMentions.cs rename to src/Discord.Net.Rest/API/Common/AllowedMentions.cs index 8b8870be2..7737a464f 100644 --- a/src/Discord.Net.Rest/Entities/Messages/AllowedMentions.cs +++ b/src/Discord.Net.Rest/API/Common/AllowedMentions.cs @@ -2,7 +2,7 @@ using Newtonsoft.Json; namespace Discord.API { - public class AllowedMentions + internal class AllowedMentions { [JsonProperty("parse")] public Optional Parse { get; set; } From 5934c7949a03d492dfc85c94c2c4fc920aaba670 Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 23 Dec 2020 12:46:12 -0300 Subject: [PATCH 086/212] misc: VoiceRegions and related changes (#1720) --- src/Discord.Net.WebSocket/BaseSocketClient.cs | 21 +++++++ .../DiscordShardedClient.cs | 14 +++++ .../DiscordSocketClient.cs | 55 +++++++++++++------ 3 files changed, 73 insertions(+), 17 deletions(-) diff --git a/src/Discord.Net.WebSocket/BaseSocketClient.cs b/src/Discord.Net.WebSocket/BaseSocketClient.cs index 548bb75bf..425889613 100644 --- a/src/Discord.Net.WebSocket/BaseSocketClient.cs +++ b/src/Discord.Net.WebSocket/BaseSocketClient.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using System.IO; using System.Threading.Tasks; @@ -75,6 +76,7 @@ namespace Discord.WebSocket /// /// A read-only collection of voice regions that the user has access to. /// + [Obsolete("This property is obsolete, use the GetVoiceRegionsAsync method instead.")] public abstract IReadOnlyCollection VoiceRegions { get; } internal BaseSocketClient(DiscordSocketConfig config, DiscordRestApiClient client) @@ -169,7 +171,26 @@ namespace Discord.WebSocket /// A REST-based voice region associated with the identifier; null if the voice region is not /// found. /// + [Obsolete("This method is obsolete, use GetVoiceRegionAsync instead.")] public abstract RestVoiceRegion GetVoiceRegion(string id); + /// + /// Gets all voice regions. + /// + /// The options to be used when sending the request. + /// + /// A task that contains a read-only collection of REST-based voice regions. + /// + public abstract ValueTask> GetVoiceRegionsAsync(RequestOptions options = null); + /// + /// Gets a voice region. + /// + /// The identifier of the voice region (e.g. eu-central ). + /// The options to be used when sending the request. + /// + /// A task that contains a REST-based voice region associated with the identifier; null if the + /// voice region is not found. + /// + public abstract ValueTask GetVoiceRegionAsync(string id, RequestOptions options = null); /// public abstract Task StartAsync(); /// diff --git a/src/Discord.Net.WebSocket/DiscordShardedClient.cs b/src/Discord.Net.WebSocket/DiscordShardedClient.cs index a2c89d4e5..4c94b14e8 100644 --- a/src/Discord.Net.WebSocket/DiscordShardedClient.cs +++ b/src/Discord.Net.WebSocket/DiscordShardedClient.cs @@ -37,6 +37,7 @@ namespace Discord.WebSocket public override IReadOnlyCollection PrivateChannels => GetPrivateChannels().ToReadOnlyCollection(GetPrivateChannelCount); public IReadOnlyCollection Shards => _shards; /// + [Obsolete("This property is obsolete, use the GetVoiceRegionsAsync method instead.")] public override IReadOnlyCollection VoiceRegions => _shards[0].VoiceRegions; /// @@ -264,9 +265,22 @@ namespace Discord.WebSocket } /// + [Obsolete("This method is obsolete, use GetVoiceRegionAsync instead.")] public override RestVoiceRegion GetVoiceRegion(string id) => _shards[0].GetVoiceRegion(id); + /// + public override async ValueTask> GetVoiceRegionsAsync(RequestOptions options = null) + { + return await _shards[0].GetVoiceRegionsAsync().ConfigureAwait(false); + } + + /// + public override async ValueTask GetVoiceRegionAsync(string id, RequestOptions options = null) + { + return await _shards[0].GetVoiceRegionAsync(id, options).ConfigureAwait(false); + } + /// /// is public override async Task DownloadUsersAsync(IEnumerable guilds) diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 0a2123ef2..d4c96ab26 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -110,7 +110,8 @@ namespace Discord.WebSocket public IReadOnlyCollection GroupChannels => State.PrivateChannels.OfType().ToImmutableArray(); /// - public override IReadOnlyCollection VoiceRegions => _voiceRegions.ToReadOnlyCollection(); + [Obsolete("This property is obsolete, use the GetVoiceRegionsAsync method instead.")] + public override IReadOnlyCollection VoiceRegions => GetVoiceRegionsAsync().GetAwaiter().GetResult(); /// /// Initializes a new REST/WebSocket-based Discord client. @@ -178,7 +179,6 @@ namespace Discord.WebSocket return Task.Delay(0); }; - _voiceRegions = ImmutableDictionary.Create(); _largeGuilds = new ConcurrentQueue(); } private static API.DiscordSocketApiClient CreateApiClient(DiscordSocketConfig config) @@ -204,13 +204,6 @@ namespace Discord.WebSocket /// internal override async Task OnLoginAsync(TokenType tokenType, string token) { - if (_parentClient == null) - { - var voiceRegions = await ApiClient.GetVoiceRegionsAsync(new RequestOptions { IgnoreState = true, RetryMode = RetryMode.AlwaysRetry }).ConfigureAwait(false); - _voiceRegions = voiceRegions.Select(x => RestVoiceRegion.Create(this, x)).ToImmutableDictionary(x => x.Id); - } - else - _voiceRegions = _parentClient._voiceRegions; await Rest.OnLoginAsync(tokenType, token); } /// @@ -218,7 +211,7 @@ namespace Discord.WebSocket { await StopAsync().ConfigureAwait(false); _applicationInfo = null; - _voiceRegions = ImmutableDictionary.Create(); + _voiceRegions = null; await Rest.OnLogoutAsync(); } @@ -350,11 +343,39 @@ namespace Discord.WebSocket => State.RemoveUser(id); /// + [Obsolete("This method is obsolete, use GetVoiceRegionAsync instead.")] public override RestVoiceRegion GetVoiceRegion(string id) + => GetVoiceRegionAsync(id).GetAwaiter().GetResult(); + + /// + public override async ValueTask> GetVoiceRegionsAsync(RequestOptions options = null) { - if (_voiceRegions.TryGetValue(id, out RestVoiceRegion region)) - return region; - return null; + if (_parentClient == null) + { + if (_voiceRegions == null) + { + options = RequestOptions.CreateOrClone(options); + options.IgnoreState = true; + var voiceRegions = await ApiClient.GetVoiceRegionsAsync(options).ConfigureAwait(false); + _voiceRegions = voiceRegions.Select(x => RestVoiceRegion.Create(this, x)).ToImmutableDictionary(x => x.Id); + } + return _voiceRegions.ToReadOnlyCollection(); + } + return await _parentClient.GetVoiceRegionsAsync().ConfigureAwait(false); + } + + /// + public override async ValueTask GetVoiceRegionAsync(string id, RequestOptions options = null) + { + if (_parentClient == null) + { + if (_voiceRegions == null) + await GetVoiceRegionsAsync().ConfigureAwait(false); + if (_voiceRegions.TryGetValue(id, out RestVoiceRegion region)) + return region; + return null; + } + return await _parentClient.GetVoiceRegionAsync(id, options).ConfigureAwait(false); } /// @@ -2120,11 +2141,11 @@ namespace Discord.WebSocket => Task.FromResult(GetUser(username, discriminator)); /// - Task> IDiscordClient.GetVoiceRegionsAsync(RequestOptions options) - => Task.FromResult>(VoiceRegions); + async Task> IDiscordClient.GetVoiceRegionsAsync(RequestOptions options) + => await GetVoiceRegionsAsync(options).ConfigureAwait(false); /// - Task IDiscordClient.GetVoiceRegionAsync(string id, RequestOptions options) - => Task.FromResult(GetVoiceRegion(id)); + async Task IDiscordClient.GetVoiceRegionAsync(string id, RequestOptions options) + => await GetVoiceRegionAsync(id, options).ConfigureAwait(false); /// async Task IDiscordClient.StartAsync() From 6a62c4770c363710e555c510619986f30b683324 Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 23 Dec 2020 12:46:27 -0300 Subject: [PATCH 087/212] feature: Add role tags (#1721) --- src/Discord.Net.Core/Entities/Roles/IRole.cs | 7 ++++ .../Entities/Roles/RoleTags.cs | 40 +++++++++++++++++++ src/Discord.Net.Rest/API/Common/Role.cs | 4 +- src/Discord.Net.Rest/API/Common/RoleTags.cs | 15 +++++++ .../Entities/Roles/RestRole.cs | 4 ++ .../Extensions/EntityExtensions.cs | 7 ++++ .../Entities/Roles/SocketRole.cs | 4 ++ 7 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 src/Discord.Net.Core/Entities/Roles/RoleTags.cs create mode 100644 src/Discord.Net.Rest/API/Common/RoleTags.cs diff --git a/src/Discord.Net.Core/Entities/Roles/IRole.cs b/src/Discord.Net.Core/Entities/Roles/IRole.cs index 66556fc2c..c02322be9 100644 --- a/src/Discord.Net.Core/Entities/Roles/IRole.cs +++ b/src/Discord.Net.Core/Entities/Roles/IRole.cs @@ -65,6 +65,13 @@ namespace Discord /// An representing the position of the role in the role list of the guild. /// int Position { get; } + /// + /// Gets the tags related to this role. + /// + /// + /// A object containing all tags related to this role. + /// + RoleTags Tags { get; } /// /// Modifies this role. diff --git a/src/Discord.Net.Core/Entities/Roles/RoleTags.cs b/src/Discord.Net.Core/Entities/Roles/RoleTags.cs new file mode 100644 index 000000000..d0cbd3580 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Roles/RoleTags.cs @@ -0,0 +1,40 @@ +namespace Discord +{ + /// + /// Provides tags related to a discord role. + /// + public class RoleTags + { + /// + /// Gets the identifier of the bot that this role belongs to, if it does. + /// + /// + /// A if this role belongs to a bot; otherwise + /// . + /// + public ulong? BotId { get; } + /// + /// Gets the identifier of the integration that this role belongs to, if it does. + /// + /// + /// A if this role belongs to an integration; otherwise + /// . + /// + public ulong? IntegrationId { get; } + /// + /// Gets if this role is the guild's premium subscriber (booster) role. + /// + /// + /// if this role is the guild's premium subscriber role; + /// otherwise . + /// + public bool IsPremiumSubscriberRole { get; } + + internal RoleTags(ulong? botId, ulong? integrationId, bool isPremiumSubscriber) + { + BotId = botId; + IntegrationId = integrationId; + IsPremiumSubscriberRole = isPremiumSubscriber; + } + } +} diff --git a/src/Discord.Net.Rest/API/Common/Role.cs b/src/Discord.Net.Rest/API/Common/Role.cs index 856a8695f..190ae25c0 100644 --- a/src/Discord.Net.Rest/API/Common/Role.cs +++ b/src/Discord.Net.Rest/API/Common/Role.cs @@ -1,4 +1,4 @@ -#pragma warning disable CS1591 +#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API @@ -21,5 +21,7 @@ namespace Discord.API public ulong Permissions { get; set; } [JsonProperty("managed")] public bool Managed { get; set; } + [JsonProperty("tags")] + public Optional Tags { get; set; } } } diff --git a/src/Discord.Net.Rest/API/Common/RoleTags.cs b/src/Discord.Net.Rest/API/Common/RoleTags.cs new file mode 100644 index 000000000..6446f2037 --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/RoleTags.cs @@ -0,0 +1,15 @@ +#pragma warning disable CS1591 +using Newtonsoft.Json; + +namespace Discord.API +{ + internal class RoleTags + { + [JsonProperty("bot_id")] + public Optional BotId { get; set; } + [JsonProperty("integration_id")] + public Optional IntegrationId { get; set; } + [JsonProperty("premium_subscriber")] + public Optional IsPremiumSubscriber { get; set; } + } +} diff --git a/src/Discord.Net.Rest/Entities/Roles/RestRole.cs b/src/Discord.Net.Rest/Entities/Roles/RestRole.cs index 7c1a3aaa2..aa33ae7e5 100644 --- a/src/Discord.Net.Rest/Entities/Roles/RestRole.cs +++ b/src/Discord.Net.Rest/Entities/Roles/RestRole.cs @@ -26,6 +26,8 @@ namespace Discord.Rest public GuildPermissions Permissions { get; private set; } /// public int Position { get; private set; } + /// + public RoleTags Tags { get; private set; } /// public DateTimeOffset CreatedAt => SnowflakeUtils.FromSnowflake(Id); @@ -56,6 +58,8 @@ namespace Discord.Rest Position = model.Position; Color = new Color(model.Color); Permissions = new GuildPermissions(model.Permissions); + if (model.Tags.IsSpecified) + Tags = model.Tags.Value.ToEntity(); } /// diff --git a/src/Discord.Net.Rest/Extensions/EntityExtensions.cs b/src/Discord.Net.Rest/Extensions/EntityExtensions.cs index 8e1b9c6d8..f8676c783 100644 --- a/src/Discord.Net.Rest/Extensions/EntityExtensions.cs +++ b/src/Discord.Net.Rest/Extensions/EntityExtensions.cs @@ -34,6 +34,13 @@ namespace Discord.Rest model.Thumbnail.IsSpecified ? model.Thumbnail.Value.ToEntity() : (EmbedThumbnail?)null, model.Fields.IsSpecified ? model.Fields.Value.Select(x => x.ToEntity()).ToImmutableArray() : ImmutableArray.Create()); } + public static RoleTags ToEntity(this API.RoleTags model) + { + return new RoleTags( + model.BotId.IsSpecified ? model.BotId.Value : null, + model.IntegrationId.IsSpecified ? model.IntegrationId.Value : null, + model.IsPremiumSubscriber.IsSpecified ? true : false); + } public static API.Embed ToModel(this Embed entity) { if (entity == null) return null; diff --git a/src/Discord.Net.WebSocket/Entities/Roles/SocketRole.cs b/src/Discord.Net.WebSocket/Entities/Roles/SocketRole.cs index b5e26ad78..e6aac2c04 100644 --- a/src/Discord.Net.WebSocket/Entities/Roles/SocketRole.cs +++ b/src/Discord.Net.WebSocket/Entities/Roles/SocketRole.cs @@ -36,6 +36,8 @@ namespace Discord.WebSocket public GuildPermissions Permissions { get; private set; } /// public int Position { get; private set; } + /// + public RoleTags Tags { get; private set; } /// public DateTimeOffset CreatedAt => SnowflakeUtils.FromSnowflake(Id); @@ -71,6 +73,8 @@ namespace Discord.WebSocket Position = model.Position; Color = new Color(model.Color); Permissions = new GuildPermissions(model.Permissions); + if (model.Tags.IsSpecified) + Tags = model.Tags.Value.ToEntity(); } /// From c683b2901d5768bb402993765c9c329aa26537eb Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 23 Dec 2020 12:46:42 -0300 Subject: [PATCH 088/212] feature: Add user public flags (#1722) --- src/Discord.Net.Core/Entities/Users/IUser.cs | 10 ++++ .../Entities/Users/UserProperties.cs | 48 +++++++++++++++---- src/Discord.Net.Rest/API/Common/User.cs | 2 + .../Entities/Users/RestUser.cs | 4 ++ .../Entities/Users/SocketUser.cs | 7 +++ 5 files changed, 62 insertions(+), 9 deletions(-) diff --git a/src/Discord.Net.Core/Entities/Users/IUser.cs b/src/Discord.Net.Core/Entities/Users/IUser.cs index c36fb2326..e6008aab6 100644 --- a/src/Discord.Net.Core/Entities/Users/IUser.cs +++ b/src/Discord.Net.Core/Entities/Users/IUser.cs @@ -75,6 +75,16 @@ namespace Discord /// Gets the username for this user. /// string Username { get; } + /// + /// Gets the public flags that are applied to this user's account. + /// + /// + /// This value is determined by bitwise OR-ing values together. + /// + /// + /// The value of public flags for this user. + /// + UserProperties? PublicFlags { get; } /// /// Gets the direct message channel of this user, or create one if it does not already exist. diff --git a/src/Discord.Net.Core/Entities/Users/UserProperties.cs b/src/Discord.Net.Core/Entities/Users/UserProperties.cs index 4f7272daa..b6deb744b 100644 --- a/src/Discord.Net.Core/Entities/Users/UserProperties.cs +++ b/src/Discord.Net.Core/Entities/Users/UserProperties.cs @@ -10,32 +10,62 @@ namespace Discord /// None = 0, /// - /// Flag given to Discord staff. + /// Flag given to users who are a Discord employee. /// - Staff = 0b1, + Staff = 1 << 0, /// - /// Flag given to Discord partners. + /// Flag given to users who are owners of a partnered Discord server. /// - Partner = 0b10, + Partner = 1 << 1, + /// + /// Flag given to users in HypeSquad events. + /// + HypeSquadEvents = 1 << 2, /// /// Flag given to users who have participated in the bug report program. + /// This flag is obsolete, use instead. + /// + [Obsolete("Use BugHunterLevel1 instead.")] + BugHunter = 1 << 3, + /// + /// Flag given to users who have participated in the bug report program and are level 1. /// - BugHunter = 0b1000, + BugHunterLevel1 = 1 << 3, /// /// Flag given to users who are in the HypeSquad House of Bravery. /// - HypeSquadBravery = 0b100_0000, + HypeSquadBravery = 1 << 6, /// /// Flag given to users who are in the HypeSquad House of Brilliance. /// - HypeSquadBrilliance = 0b1000_0000, + HypeSquadBrilliance = 1 << 7, /// /// Flag given to users who are in the HypeSquad House of Balance. /// - HypeSquadBalance = 0b1_0000_0000, + HypeSquadBalance = 1 << 8, /// /// Flag given to users who subscribed to Nitro before games were added. /// - EarlySupporter = 0b10_0000_0000, + EarlySupporter = 1 << 9, + /// + /// Flag given to users who are part of a team. + /// + TeamUser = 1 << 10, + /// + /// Flag given to users who represent Discord (System). + /// + System = 1 << 12, + /// + /// Flag given to users who have participated in the bug report program and are level 2. + /// + BugHunterLevel2 = 1 << 14, + /// + /// Flag given to users who are verified bots. + /// + VerifiedBot = 1 << 16, + /// + /// Flag given to users that developed bots and early verified their accounts. + /// + EarlyVerifiedBotDeveloper = 1 << 17, } } diff --git a/src/Discord.Net.Rest/API/Common/User.cs b/src/Discord.Net.Rest/API/Common/User.cs index 2eff3753d..d1f436afb 100644 --- a/src/Discord.Net.Rest/API/Common/User.cs +++ b/src/Discord.Net.Rest/API/Common/User.cs @@ -29,5 +29,7 @@ namespace Discord.API public Optional PremiumType { get; set; } [JsonProperty("locale")] public Optional Locale { get; set; } + [JsonProperty("public_flags")] + public Optional PublicFlags { get; set; } } } diff --git a/src/Discord.Net.Rest/Entities/Users/RestUser.cs b/src/Discord.Net.Rest/Entities/Users/RestUser.cs index f5becd3ff..131a4ec73 100644 --- a/src/Discord.Net.Rest/Entities/Users/RestUser.cs +++ b/src/Discord.Net.Rest/Entities/Users/RestUser.cs @@ -21,6 +21,8 @@ namespace Discord.Rest public ushort DiscriminatorValue { get; private set; } /// public string AvatarId { get; private set; } + /// + public UserProperties? PublicFlags { get; private set; } /// public DateTimeOffset CreatedAt => SnowflakeUtils.FromSnowflake(Id); @@ -65,6 +67,8 @@ namespace Discord.Rest IsBot = model.Bot.Value; if (model.Username.IsSpecified) Username = model.Username.Value; + if (model.PublicFlags.IsSpecified) + PublicFlags = model.PublicFlags.Value; } /// diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs index 7d3c2d23b..4e6d4b3f8 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs @@ -26,6 +26,8 @@ namespace Discord.WebSocket public abstract string AvatarId { get; internal set; } /// public abstract bool IsWebhook { get; } + /// + public UserProperties? PublicFlags { get; private set; } internal abstract SocketGlobalUser GlobalUser { get; } internal abstract SocketPresence Presence { get; set; } @@ -83,6 +85,11 @@ namespace Discord.WebSocket Username = model.Username.Value; hasChanges = true; } + if (model.PublicFlags.IsSpecified && model.PublicFlags.Value != PublicFlags) + { + PublicFlags = model.PublicFlags.Value; + hasChanges = true; + } return hasChanges; } From 225550dc5ac64cec1a38e5cfc1699bd0db0813ee Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 23 Dec 2020 12:47:20 -0300 Subject: [PATCH 089/212] feature: Add MessageFlags and AllowedMentions to message modify (#1724) * feature: Add MessageFlags and AllowedMentions to Modify * Change exception message --- .../Entities/Messages/IMessage.cs | 11 ++++++ .../Entities/Messages/MessageFlags.cs | 36 +++++++++++++++++++ .../Entities/Messages/MessageProperties.cs | 12 +++++++ .../API/Common/MessageFlags.cs | 10 ------ .../API/Rest/ModifyMessageParams.cs | 6 +++- .../Entities/Messages/MessageHelper.cs | 33 ++++++++++++++--- .../Entities/Messages/RestMessage.cs | 5 +++ .../Entities/Messages/RestUserMessage.cs | 8 ++--- .../Entities/Messages/SocketMessage.cs | 6 ++++ .../Entities/Messages/SocketUserMessage.cs | 8 ++--- 10 files changed, 108 insertions(+), 27 deletions(-) create mode 100644 src/Discord.Net.Core/Entities/Messages/MessageFlags.cs delete mode 100644 src/Discord.Net.Rest/API/Common/MessageFlags.cs diff --git a/src/Discord.Net.Core/Entities/Messages/IMessage.cs b/src/Discord.Net.Core/Entities/Messages/IMessage.cs index 1f3f5b945..80b1ffa68 100644 --- a/src/Discord.Net.Core/Entities/Messages/IMessage.cs +++ b/src/Discord.Net.Core/Entities/Messages/IMessage.cs @@ -164,6 +164,17 @@ namespace Discord /// IReadOnlyDictionary Reactions { get; } + /// + /// Gets the flags related to this message. + /// + /// + /// This value is determined by bitwise OR-ing values together. + /// + /// + /// A message's flags, if any is associated. + /// + MessageFlags? Flags { get; } + /// /// Adds a reaction to this message. /// diff --git a/src/Discord.Net.Core/Entities/Messages/MessageFlags.cs b/src/Discord.Net.Core/Entities/Messages/MessageFlags.cs new file mode 100644 index 000000000..52d0f0e9e --- /dev/null +++ b/src/Discord.Net.Core/Entities/Messages/MessageFlags.cs @@ -0,0 +1,36 @@ +using System; + +namespace Discord +{ + [Flags] + public enum MessageFlags + { + /// + /// Default value for flags, when none are given to a message. + /// + None = 0, + /// + /// Flag given to messages that have been published to subscribed + /// channels (via Channel Following). + /// + Crossposted = 1 << 0, + /// + /// Flag given to messages that originated from a message in another + /// channel (via Channel Following). + /// + IsCrosspost = 1 << 1, + /// + /// Flag given to messages that do not display any embeds. + /// + SuppressEmbeds = 1 << 2, + /// + /// Flag given to messages that the source message for this crosspost + /// has been deleted (via Channel Following). + /// + SourceMessageDeleted = 1 << 3, + /// + /// Flag given to messages that came from the urgent message system. + /// + Urgent = 1 << 4, + } +} diff --git a/src/Discord.Net.Core/Entities/Messages/MessageProperties.cs b/src/Discord.Net.Core/Entities/Messages/MessageProperties.cs index b632d6a18..9504e04cb 100644 --- a/src/Discord.Net.Core/Entities/Messages/MessageProperties.cs +++ b/src/Discord.Net.Core/Entities/Messages/MessageProperties.cs @@ -21,5 +21,17 @@ namespace Discord /// Gets or sets the embed the message should display. /// public Optional Embed { get; set; } + /// + /// Gets or sets the flags of the message. + /// + /// + /// Only can be set/unset and you need to be + /// the author of the message. + /// + public Optional Flags { get; set; } + /// + /// Gets or sets the allowed mentions of the message. + /// + public Optional AllowedMentions { get; set; } } } diff --git a/src/Discord.Net.Rest/API/Common/MessageFlags.cs b/src/Discord.Net.Rest/API/Common/MessageFlags.cs deleted file mode 100644 index ebe4e80ca..000000000 --- a/src/Discord.Net.Rest/API/Common/MessageFlags.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System; - -namespace Discord.API -{ - [Flags] - internal enum MessageFlags : byte // probably safe to constrain this to 8 values, if not, it's internal so who cares - { - Suppressed = 0x04, - } -} diff --git a/src/Discord.Net.Rest/API/Rest/ModifyMessageParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyMessageParams.cs index fdff4de15..3752df3a2 100644 --- a/src/Discord.Net.Rest/API/Rest/ModifyMessageParams.cs +++ b/src/Discord.Net.Rest/API/Rest/ModifyMessageParams.cs @@ -1,4 +1,4 @@ -#pragma warning disable CS1591 +#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest @@ -10,5 +10,9 @@ namespace Discord.API.Rest public Optional Content { get; set; } [JsonProperty("embed")] public Optional Embed { get; set; } + [JsonProperty("flags")] + public Optional Flags { get; set; } + [JsonProperty("allowed_mentions")] + public Optional AllowedMentions { get; set; } } } diff --git a/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs b/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs index b86a5dbf3..e22ae71cd 100644 --- a/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs +++ b/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs @@ -27,21 +27,46 @@ namespace Discord.Rest public static async Task ModifyAsync(IMessage msg, BaseDiscordClient client, Action func, RequestOptions options) { - if (msg.Author.Id != client.CurrentUser.Id) - throw new InvalidOperationException("Only the author of a message may modify the message."); - var args = new MessageProperties(); func(args); + if (msg.Author.Id != client.CurrentUser.Id && (args.Content.IsSpecified || args.Embed.IsSpecified || args.AllowedMentions.IsSpecified)) + throw new InvalidOperationException("Only the author of a message may modify the message content, embed, or allowed mentions."); + bool hasText = args.Content.IsSpecified ? !string.IsNullOrEmpty(args.Content.Value) : !string.IsNullOrEmpty(msg.Content); bool hasEmbed = args.Embed.IsSpecified ? args.Embed.Value != null : msg.Embeds.Any(); if (!hasText && !hasEmbed) Preconditions.NotNullOrEmpty(args.Content.IsSpecified ? args.Content.Value : string.Empty, nameof(args.Content)); + if (args.AllowedMentions.IsSpecified) + { + AllowedMentions allowedMentions = args.AllowedMentions.Value; + 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."); + + // 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.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Users) && + allowedMentions.UserIds != null && allowedMentions.UserIds.Count > 0) + { + throw new ArgumentException("The Users flag is mutually exclusive with the list of User Ids.", nameof(allowedMentions)); + } + + if (allowedMentions.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Roles) && + allowedMentions.RoleIds != null && allowedMentions.RoleIds.Count > 0) + { + throw new ArgumentException("The Roles flag is mutually exclusive with the list of Role Ids.", nameof(allowedMentions)); + } + } + } + var apiArgs = new API.Rest.ModifyMessageParams { Content = args.Content, - Embed = args.Embed.IsSpecified ? args.Embed.Value.ToModel() : Optional.Create() + Embed = args.Embed.IsSpecified ? args.Embed.Value.ToModel() : Optional.Create(), + Flags = args.Flags.IsSpecified ? args.Flags.Value : Optional.Create(), + AllowedMentions = args.AllowedMentions.IsSpecified ? args.AllowedMentions.Value.ToModel() : Optional.Create(), }; return await client.ApiClient.ModifyMessageAsync(msg.Channel.Id, msg.Id, apiArgs, options).ConfigureAwait(false); } diff --git a/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs b/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs index 0169c9b8b..b2a745980 100644 --- a/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs +++ b/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs @@ -67,6 +67,8 @@ namespace Discord.Rest public MessageApplication Application { get; private set; } /// public MessageReference Reference { get; private set; } + /// + public MessageFlags? Flags { get; private set; } internal RestMessage(BaseDiscordClient discord, ulong id, IMessageChannel channel, IUser author, MessageSource source) : base(discord, id) @@ -124,6 +126,9 @@ namespace Discord.Rest }; } + if (model.Flags.IsSpecified) + Flags = model.Flags.Value; + if (model.Reactions.IsSpecified) { var value = model.Reactions.Value; diff --git a/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs b/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs index 2c76a4253..cf025aea1 100644 --- a/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs +++ b/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs @@ -13,7 +13,7 @@ namespace Discord.Rest [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class RestUserMessage : RestMessage, IUserMessage { - private bool _isMentioningEveryone, _isTTS, _isPinned, _isSuppressed; + private bool _isMentioningEveryone, _isTTS, _isPinned; private long? _editedTimestampTicks; private IUserMessage _referencedMessage; private ImmutableArray _attachments = ImmutableArray.Create(); @@ -27,7 +27,7 @@ namespace Discord.Rest /// public override bool IsPinned => _isPinned; /// - public override bool IsSuppressed => _isSuppressed; + public override bool IsSuppressed => Flags.HasValue && Flags.Value.HasFlag(MessageFlags.SuppressEmbeds); /// public override DateTimeOffset? EditedTimestamp => DateTimeUtils.FromTicks(_editedTimestampTicks); /// @@ -70,10 +70,6 @@ namespace Discord.Rest _editedTimestampTicks = model.EditedTimestamp.Value?.UtcTicks; if (model.MentionEveryone.IsSpecified) _isMentioningEveryone = model.MentionEveryone.Value; - if (model.Flags.IsSpecified) - { - _isSuppressed = model.Flags.Value.HasFlag(API.MessageFlags.Suppressed); - } if (model.RoleMentions.IsSpecified) _roleMentionIds = model.RoleMentions.Value.ToImmutableArray(); diff --git a/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs b/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs index 98fd4af07..2ca53cbb9 100644 --- a/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs +++ b/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs @@ -58,6 +58,9 @@ namespace Discord.WebSocket /// public MessageReference Reference { get; private set; } + /// + public MessageFlags? Flags { get; private set; } + /// /// Returns all attachments included in this message. /// @@ -156,6 +159,9 @@ namespace Discord.WebSocket MessageId = model.Reference.Value.MessageId }; } + + if (model.Flags.IsSpecified) + Flags = model.Flags.Value; } /// diff --git a/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs b/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs index bea0f45eb..859b1b80a 100644 --- a/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs +++ b/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs @@ -15,7 +15,7 @@ namespace Discord.WebSocket [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class SocketUserMessage : SocketMessage, IUserMessage { - private bool _isMentioningEveryone, _isTTS, _isPinned, _isSuppressed; + private bool _isMentioningEveryone, _isTTS, _isPinned; private long? _editedTimestampTicks; private IUserMessage _referencedMessage; private ImmutableArray _attachments = ImmutableArray.Create(); @@ -29,7 +29,7 @@ namespace Discord.WebSocket /// public override bool IsPinned => _isPinned; /// - public override bool IsSuppressed => _isSuppressed; + public override bool IsSuppressed => Flags.HasValue && Flags.Value.HasFlag(MessageFlags.SuppressEmbeds); /// public override DateTimeOffset? EditedTimestamp => DateTimeUtils.FromTicks(_editedTimestampTicks); /// @@ -74,10 +74,6 @@ namespace Discord.WebSocket _editedTimestampTicks = model.EditedTimestamp.Value?.UtcTicks; if (model.MentionEveryone.IsSpecified) _isMentioningEveryone = model.MentionEveryone.Value; - if (model.Flags.IsSpecified) - { - _isSuppressed = model.Flags.Value.HasFlag(API.MessageFlags.Suppressed); - } if (model.RoleMentions.IsSpecified) _roleMentions = model.RoleMentions.Value.Select(x => guild.GetRole(x)).ToImmutableArray(); From 8b25c9bbfb88818f0a3eda6ca04ba3c06a4fec43 Mon Sep 17 00:00:00 2001 From: quinchs <49576606+quinchs@users.noreply.github.com> Date: Wed, 23 Dec 2020 11:47:54 -0400 Subject: [PATCH 090/212] feature: Add GuildUser IsPending property (#1731) * Implemented Pending property * Implemented changes --- src/Discord.Net.Core/Entities/Users/IGuildUser.cs | 5 +++++ src/Discord.Net.Rest/API/Common/GuildMember.cs | 2 ++ src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs | 4 ++++ src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs | 2 ++ src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs | 4 ++++ .../Entities/Users/SocketWebhookUser.cs | 2 ++ 6 files changed, 19 insertions(+) diff --git a/src/Discord.Net.Core/Entities/Users/IGuildUser.cs b/src/Discord.Net.Core/Entities/Users/IGuildUser.cs index 0e4004c46..582e9e7a7 100644 --- a/src/Discord.Net.Core/Entities/Users/IGuildUser.cs +++ b/src/Discord.Net.Core/Entities/Users/IGuildUser.cs @@ -68,6 +68,11 @@ namespace Discord /// IReadOnlyCollection RoleIds { get; } + /// + /// Whether the user has passed the guild's Membership Screening requirements. + /// + bool? IsPending { get; } + /// /// Gets the level permissions granted to this user to a given channel. /// diff --git a/src/Discord.Net.Rest/API/Common/GuildMember.cs b/src/Discord.Net.Rest/API/Common/GuildMember.cs index 940eb925a..fc2092d6c 100644 --- a/src/Discord.Net.Rest/API/Common/GuildMember.cs +++ b/src/Discord.Net.Rest/API/Common/GuildMember.cs @@ -18,6 +18,8 @@ namespace Discord.API public Optional Deaf { get; set; } [JsonProperty("mute")] public Optional Mute { get; set; } + [JsonProperty("pending")] + public Optional Pending { get; set; } [JsonProperty("premium_since")] public Optional PremiumSince { get; set; } } diff --git a/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs b/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs index d6a8c2eda..4a6bc1025 100644 --- a/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs +++ b/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs @@ -29,6 +29,8 @@ namespace Discord.Rest public DateTimeOffset? PremiumSince => DateTimeUtils.FromTicks(_premiumSinceTicks); /// public ulong GuildId => Guild.Id; + /// + public bool? IsPending { get; private set; } /// /// Resolving permissions requires the parent guild to be downloaded. @@ -73,6 +75,8 @@ namespace Discord.Rest UpdateRoles(model.Roles.Value); if (model.PremiumSince.IsSpecified) _premiumSinceTicks = model.PremiumSince.Value?.UtcTicks; + if (model.Pending.IsSpecified) + IsPending = model.Pending.Value; } private void UpdateRoles(ulong[] roleIds) { diff --git a/src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs b/src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs index 8462cb8d4..a06916c9b 100644 --- a/src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs +++ b/src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs @@ -52,6 +52,8 @@ namespace Discord.Rest /// string IGuildUser.Nickname => null; /// + bool? IGuildUser.IsPending => null; + /// GuildPermissions IGuildUser.GuildPermissions => GuildPermissions.Webhook; /// diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs index a506a5d7f..c0a681d9d 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs @@ -57,6 +57,8 @@ namespace Discord.WebSocket /// public bool IsStreaming => VoiceState?.IsStreaming ?? false; /// + public bool? IsPending { get; private set; } + /// public DateTimeOffset? JoinedAt => DateTimeUtils.FromTicks(_joinedAtTicks); /// /// Returns a collection of roles that the user possesses. @@ -142,6 +144,8 @@ namespace Discord.WebSocket UpdateRoles(model.Roles.Value); if (model.PremiumSince.IsSpecified) _premiumSinceTicks = model.PremiumSince.Value?.UtcTicks; + if (model.Pending.IsSpecified) + IsPending = model.Pending.Value; } internal void Update(ClientState state, PresenceModel model, bool updatePresence) { diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs index d400e1ae7..5103aa8b3 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs @@ -65,6 +65,8 @@ namespace Discord.WebSocket /// DateTimeOffset? IGuildUser.PremiumSince => null; /// + bool? IGuildUser.IsPending => null; + /// GuildPermissions IGuildUser.GuildPermissions => GuildPermissions.Webhook; /// From 20957016653e2dba1a7a1007f2c684b7c02a6ee8 Mon Sep 17 00:00:00 2001 From: Paulo Date: Thu, 21 Jan 2021 18:08:46 -0300 Subject: [PATCH 091/212] fix: Missing MessageReference when sending files --- src/Discord.Net.Rest/API/Rest/UploadFileParams.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Discord.Net.Rest/API/Rest/UploadFileParams.cs b/src/Discord.Net.Rest/API/Rest/UploadFileParams.cs index a7d19b4ef..dd442a6de 100644 --- a/src/Discord.Net.Rest/API/Rest/UploadFileParams.cs +++ b/src/Discord.Net.Rest/API/Rest/UploadFileParams.cs @@ -49,6 +49,8 @@ namespace Discord.API.Rest payload["allowed_mentions"] = AllowedMentions.Value; if (IsSpoiler) payload["hasSpoiler"] = IsSpoiler.ToString(); + if (MessageReference.IsSpecified) + payload["message_reference"] = MessageReference.Value; var json = new StringBuilder(); using (var text = new StringWriter(json)) From 6bb54577ab15c192cc678fb37150c1e313d0a81a Mon Sep 17 00:00:00 2001 From: Paulo Date: Thu, 28 Jan 2021 19:13:18 -0300 Subject: [PATCH 092/212] meta: 2.3.0 --- CHANGELOG.md | 91 ++++++++++++++++++++++++++++++ Discord.Net.targets | 2 +- src/Discord.Net/Discord.Net.nuspec | 32 +++++------ 3 files changed, 108 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 886754052..7f4041a7a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,96 @@ # Changelog +## [2.3.0] - 2021-01-28 +### Added +- #1491 Add INVITE_CREATE and INVITE_DELETE events (1ab670b) +- #1520 Support reading multiple activities (421a0c1) +- #1521 Allow for inherited commands in modules (a51cdf6) +- #1526 Add Direction.Around to GetMessagesAsync (f2130f8) +- #1537 Implement gateway ratelimit (ec673e1) +- #1544 Add MESSAGE_REACTION_REMOVE_EMOJI and RemoveAllReactionsForEmoteAsync (a89f076) +- #1549 Add GetUsersAsync to SocketGuild (30b5a83) +- #1566 Support Gateway Intents (d5d10d3) +- #1573 Add missing properties to Guild and deprecate GuildEmbed (ec212b1) +- #1581 Add includeRoleIds to PruneUsersAsync (a80e5ff) +- #1588 Add GetStreams to AudioClient (1e012ac) +- #1596 Add missing channel properties (2d80037) +- #1604 Add missing application properties (including Teams) (10fcde0) +- #1619 Add "View Guild Insights" to GuildPermission (2592264) +- #1637 Added CultureInvariant RegexOption to WebhookUrlRegex (e3925a7) +- #1659 Add inline replies (e3850e1) +- #1688 Send presence on Identify payload (25d5d36) +- #1721 Add role tags (6a62c47) +- #1722 Add user public flags (c683b29) +- #1724 Add MessageFlags and AllowedMentions to message modify (225550d) +- #1731 Add GuildUser IsPending property (8b25c9b) +- #1690 Add max bitrate value to SocketGuild (aacfea0) + +### Fixed +- #1244 Missing AddReactions permission for DM channels. (e40ca4a) +- #1469 unsupported property causes an exception (468f826) +- #1525 AllowedMentions and AllowedMentionTypes (3325031) +- #1531 Add AllowedMentions to SendFileAsync (ab32607) +- #1532 GuildEmbed.ChannelId as nullable per API documentation (971d519) +- #1546 Different ratelimits for the same route (implement discord buckets) (2f6c017) +- #1548 Incomplete Ready, DownloadUsersAsync, and optimize AlwaysDownloadUsers (dc8c959) +- #1555 InvalidOperationException at MESSAGE_CREATE (bd4672a) +- #1557 Sending 2 requests instead of 1 to create a Guild role. (5430cc8) +- #1571 Not using the new domain name. (df8a0f7) +- #1578 Trim token before passing it to the authorization header (42ba372) +- #1580 Stop TaskCanceledException from bubbling up (b8fa464) +- #1599 Invite audit log without inviter (b95b95b) +- #1602 Add AllowedMentions to webhooks (bd4516b) +- #1603 Cancel reconnection when 4014 (f396cd9) +- #1608 Voice overwrites and CategoryId remarks (43c8fc0) +- #1614 Check error 404 and return null for GetBanAsync (ae9fff6) +- #1621 Parse mentions from message payload (366ca9a) +- #1622 Do not update overwrite cache locally (3860da0) +- #1623 Invoke UserUpdated from GuildMemberUpdated if needed (3085e88) +- #1624 Handle null PreferredLocale in rare cases (c1d04b4) +- #1639 Invite and InviteMetadata properties (dd2e524) +- #1642 Add missing permissions (4b389f3) +- #1647 handicap member downloading for verified bots (fa5ef5e) +- #1652 Update README.MD to reflect new discord domain (03b831e) +- #1667 Audio stream dispose (a2af985) +- #1671 Crosspost throwing InvalidOperationException (9134443) +- #1672 Team is nullable, not optional (be60d81) +- #1681 Emoji url encode (04389a4) +- #1683 SocketGuild.HasAllMembers is false if a user left a guild (47f571e) +- #1686 Revert PremiumSubscriptionCount type (97e71cd) +- #1695 Possible NullReferenceException when receiving InvalidSession (5213916) +- #1702 Rollback Activities to Game (9d7cb39) +- #1727 Move and fix internal AllowedMentions object (4a7f8fe) +- limit request members batch size (084db25) +- UserMentions throwing NullRef (5ed01a3) +- Wrong author for SocketUserMessage.ReferencedMessage (1e9b252) +- Discord sends null when there's no team (05a1f0a) +- IMessage.Embeds docs remarks (a4d32d3) +- Missing MessageReference when sending files (2095701) + +### Misc +- #1545 MutualGuilds optimization (323a677) +- #1551 Update webhook regex to support discord.com (7585789) +- #1556 Add SearchUsersAsync (57880de) +- #1561 Minor refactor to switch expression (42826df) +- #1576 Updating comments for privileged intents (c42bfa6) +- #1678 Change ratelimit messages (47ed806) +- #1714 Update summary of SocketVoiceChannel.Users (e385c40) +- #1720 VoiceRegions and related changes (5934c79) +- Add updated libraries for LastModified (d761846) +- Add alternative documentation link (accd351) +- Temporarily disable StyleCops until all the fixes are impl'd (36de7b2) +- Remove redundant CreateGuildRoleParams (3df0539) +- Add minor tweaks to DiscordSocketConfig docs strings (2cd1880) +- Fix MaxWaitBetweenGuildAvailablesBeforeReady docs string (e31cdc7) +- Missing summary tag for GatewayIntents (3a10018) +- Add new method of role ID copy (857ef77) +- Resolve inheritdocs for IAttachment (9ea3291) +- Mark null as a specific langword in summary (13a41f8) +- Cleanup GatewayReconnectException docs (833ee42) +- Update Docfx.Plugins.LastModified to v1.2.4 (28a6f97) +- Update framework version for tests to Core 3.1 to comply with LTS (4988a07) +- Move bulk deletes remarks from to (62539f0) + ## [2.2.0] - 2020-04-16 ### Added - #1247 Implement Client Status Support (9da11b4) diff --git a/Discord.Net.targets b/Discord.Net.targets index 9502e91dd..503035b0c 100644 --- a/Discord.Net.targets +++ b/Discord.Net.targets @@ -1,7 +1,7 @@ 2.3.0 - dev + latest Discord.Net Contributors discord;discordapp diff --git a/src/Discord.Net/Discord.Net.nuspec b/src/Discord.Net/Discord.Net.nuspec index 5c5ea4072..c675f2fc5 100644 --- a/src/Discord.Net/Discord.Net.nuspec +++ b/src/Discord.Net/Discord.Net.nuspec @@ -2,7 +2,7 @@ Discord.Net - 2.3.0-dev$suffix$ + 2.3.0$suffix$ Discord.Net Discord.Net Contributors foxbot @@ -14,25 +14,25 @@ https://github.com/RogueException/Discord.Net/raw/dev/docs/marketing/logo/PackageLogo.png - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + From 83e88f4fb961bb78d5446e87e31fff4470f616dc Mon Sep 17 00:00:00 2001 From: Paulo Date: Sat, 30 Jan 2021 23:40:33 -0300 Subject: [PATCH 093/212] meta: Bump version to 2.3.1-dev --- Discord.Net.targets | 4 ++-- src/Discord.Net/Discord.Net.nuspec | 32 +++++++++++++++--------------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/Discord.Net.targets b/Discord.Net.targets index 503035b0c..a7e2c8a51 100644 --- a/Discord.Net.targets +++ b/Discord.Net.targets @@ -1,7 +1,7 @@ - 2.3.0 - + 2.3.1 + dev latest Discord.Net Contributors discord;discordapp diff --git a/src/Discord.Net/Discord.Net.nuspec b/src/Discord.Net/Discord.Net.nuspec index c675f2fc5..494e3ea43 100644 --- a/src/Discord.Net/Discord.Net.nuspec +++ b/src/Discord.Net/Discord.Net.nuspec @@ -2,7 +2,7 @@ Discord.Net - 2.3.0$suffix$ + 2.3.1-dev$suffix$ Discord.Net Discord.Net Contributors foxbot @@ -14,25 +14,25 @@ https://github.com/RogueException/Discord.Net/raw/dev/docs/marketing/logo/PackageLogo.png - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + From 73e5cc2fbcc7c974706165f5cb0703770a0be727 Mon Sep 17 00:00:00 2001 From: Yeba <31899118+yebafan@users.noreply.github.com> Date: Sun, 31 Jan 2021 07:13:09 +0100 Subject: [PATCH 094/212] fix: Deadlock in DiscordShardedClient when Ready is never received (#1761) * fixed a deadlock in DiscordShardedClient during a failed Identify due to InvalidSession * fixed log * Don't wait ready before releasing semaphore Co-authored-by: Paulo --- src/Discord.Net.WebSocket/DiscordSocketClient.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index d4c96ab26..b43db5d98 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -245,15 +245,15 @@ namespace Discord.WebSocket await _gatewayLogger.DebugAsync("Identifying").ConfigureAwait(false); await ApiClient.SendIdentifyAsync(shardID: ShardId, totalShards: TotalShards, guildSubscriptions: _guildSubscriptions, gatewayIntents: _gatewayIntents, presence: BuildCurrentStatus()).ConfigureAwait(false); } - - //Wait for READY - await _connection.WaitAsync().ConfigureAwait(false); } finally { if (locked) _shardedClient.ReleaseIdentifyLock(); } + + //Wait for READY + await _connection.WaitAsync().ConfigureAwait(false); } private async Task OnDisconnectingAsync(Exception ex) { @@ -632,7 +632,7 @@ namespace Discord.WebSocket } else if (_connection.CancelToken.IsCancellationRequested) return; - + if (BaseConfig.AlwaysDownloadUsers) _ = DownloadUsersAsync(Guilds.Where(x => x.IsAvailable && !x.HasAllMembers)); From 0fc713a8977d2474adf03dc83a46d02ffcd295e8 Mon Sep 17 00:00:00 2001 From: Antonio Zdravkov Nikolov Date: Wed, 10 Feb 2021 02:04:32 +0200 Subject: [PATCH 095/212] fix: Private methods aren't added as commands (#1773) Fix breaking change introduced by #1521 --- src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs b/src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs index 28037b0fa..7a752090e 100644 --- a/src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs +++ b/src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs @@ -136,7 +136,7 @@ namespace Discord.Commands builder.Name = typeInfo.Name; // Get all methods (including from inherited members), that are valid commands - var validCommands = typeInfo.GetMethods().Where(IsValidCommandDefinition); + var validCommands = typeInfo.GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).Where(IsValidCommandDefinition); foreach (var method in validCommands) { From 6ac5ea1cbb8fe0e517af9b534bd128fefd212829 Mon Sep 17 00:00:00 2001 From: NeKz Date: Wed, 10 Mar 2021 18:50:48 +0100 Subject: [PATCH 096/212] fix: Add ChannelType property to ChannelInfo audit log (#1786) --- .../Entities/AuditLogs/DataTypes/ChannelInfo.cs | 10 +++++++++- .../AuditLogs/DataTypes/ChannelUpdateAuditLogData.cs | 7 +++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ChannelInfo.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ChannelInfo.cs index 0284b63f5..f50d9eeb3 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ChannelInfo.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ChannelInfo.cs @@ -5,13 +5,14 @@ namespace Discord.Rest /// public struct ChannelInfo { - internal ChannelInfo(string name, string topic, int? rateLimit, bool? nsfw, int? bitrate) + internal ChannelInfo(string name, string topic, int? rateLimit, bool? nsfw, int? bitrate, ChannelType? type) { Name = name; Topic = topic; SlowModeInterval = rateLimit; IsNsfw = nsfw; Bitrate = bitrate; + ChannelType = type; } /// @@ -53,5 +54,12 @@ namespace Discord.Rest /// null if this is not mentioned in this entry. /// public int? Bitrate { get; } + /// + /// Gets the type of this channel. + /// + /// + /// The channel type of this channel; null if not applicable. + /// + public ChannelType? ChannelType { get; } } } diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ChannelUpdateAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ChannelUpdateAuditLogData.cs index fa5233145..b2294f183 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ChannelUpdateAuditLogData.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ChannelUpdateAuditLogData.cs @@ -26,6 +26,7 @@ namespace Discord.Rest var rateLimitPerUserModel = changes.FirstOrDefault(x => x.ChangedProperty == "rate_limit_per_user"); var nsfwModel = changes.FirstOrDefault(x => x.ChangedProperty == "nsfw"); var bitrateModel = changes.FirstOrDefault(x => x.ChangedProperty == "bitrate"); + var typeModel = changes.FirstOrDefault(x => x.ChangedProperty == "type"); string oldName = nameModel?.OldValue?.ToObject(discord.ApiClient.Serializer), newName = nameModel?.NewValue?.ToObject(discord.ApiClient.Serializer); @@ -37,9 +38,11 @@ namespace Discord.Rest newNsfw = nsfwModel?.NewValue?.ToObject(discord.ApiClient.Serializer); int? oldBitrate = bitrateModel?.OldValue?.ToObject(discord.ApiClient.Serializer), newBitrate = bitrateModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + ChannelType? oldType = typeModel?.OldValue?.ToObject(discord.ApiClient.Serializer), + newType = typeModel?.NewValue?.ToObject(discord.ApiClient.Serializer); - var before = new ChannelInfo(oldName, oldTopic, oldRateLimitPerUser, oldNsfw, oldBitrate); - var after = new ChannelInfo(newName, newTopic, newRateLimitPerUser, newNsfw, newBitrate); + var before = new ChannelInfo(oldName, oldTopic, oldRateLimitPerUser, oldNsfw, oldBitrate, oldType); + var after = new ChannelInfo(newName, newTopic, newRateLimitPerUser, newNsfw, newBitrate, newType); return new ChannelUpdateAuditLogData(entry.TargetId.Value, before, after); } From f794163ffa4922f484981a936694e6dd80a1451c Mon Sep 17 00:00:00 2001 From: NeKz Date: Wed, 10 Mar 2021 20:07:19 +0100 Subject: [PATCH 097/212] fix: NullReferenceException in pin/unpin audit logs (#1780) --- .../AuditLogs/DataTypes/MessagePinAuditLogData.cs | 14 ++++++++++---- .../DataTypes/MessageUnpinAuditLogData.cs | 14 ++++++++++---- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MessagePinAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MessagePinAuditLogData.cs index 020171152..be66ac846 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MessagePinAuditLogData.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MessagePinAuditLogData.cs @@ -19,8 +19,14 @@ namespace Discord.Rest internal static MessagePinAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) { - var userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId); - return new MessagePinAuditLogData(entry.Options.MessageId.Value, entry.Options.ChannelId.Value, RestUser.Create(discord, userInfo)); + RestUser user = null; + if (entry.TargetId.HasValue) + { + var userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId); + user = RestUser.Create(discord, userInfo); + } + + return new MessagePinAuditLogData(entry.Options.MessageId.Value, entry.Options.ChannelId.Value, user); } /// @@ -38,10 +44,10 @@ namespace Discord.Rest /// public ulong ChannelId { get; } /// - /// Gets the user of the message that was pinned. + /// Gets the user of the message that was pinned if available. /// /// - /// A user object representing the user that created the pinned message. + /// A user object representing the user that created the pinned message or . /// public IUser Target { get; } } diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MessageUnpinAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MessageUnpinAuditLogData.cs index 1b3ff96f3..b4fa389cc 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MessageUnpinAuditLogData.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MessageUnpinAuditLogData.cs @@ -19,8 +19,14 @@ namespace Discord.Rest internal static MessageUnpinAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) { - var userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId); - return new MessageUnpinAuditLogData(entry.Options.MessageId.Value, entry.Options.ChannelId.Value, RestUser.Create(discord, userInfo)); + RestUser user = null; + if (entry.TargetId.HasValue) + { + var userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId); + user = RestUser.Create(discord, userInfo); + } + + return new MessageUnpinAuditLogData(entry.Options.MessageId.Value, entry.Options.ChannelId.Value, user); } /// @@ -38,10 +44,10 @@ namespace Discord.Rest /// public ulong ChannelId { get; } /// - /// Gets the user of the message that was unpinned. + /// Gets the user of the message that was unpinned if available. /// /// - /// A user object representing the user that created the unpinned message. + /// A user object representing the user that created the unpinned message or . /// public IUser Target { get; } } From 51b7afe2a6daaa07de24e96bb6c7abee7dd8bc10 Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 10 Mar 2021 16:07:31 -0300 Subject: [PATCH 098/212] misc: Add remark regarding CustomStatus as the activity (#1774) * Throw exception with CustomStatus * Add remark instead of exception * Change wording --- src/Discord.Net.WebSocket/BaseSocketClient.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/Discord.Net.WebSocket/BaseSocketClient.cs b/src/Discord.Net.WebSocket/BaseSocketClient.cs index 425889613..36e6c02a9 100644 --- a/src/Discord.Net.WebSocket/BaseSocketClient.cs +++ b/src/Discord.Net.WebSocket/BaseSocketClient.cs @@ -209,6 +209,12 @@ namespace Discord.WebSocket /// The name of the game. /// If streaming, the URL of the stream. Must be a valid Twitch URL. /// The type of the game. + /// + /// + /// Bot accounts cannot set as their activity + /// type and it will have no effect. + /// + /// /// /// A task that represents the asynchronous set operation. /// @@ -222,6 +228,10 @@ namespace Discord.WebSocket /// Discord will only accept setting of name and the type of activity. /// /// + /// Bot accounts cannot set as their activity + /// type and it will have no effect. + /// + /// /// Rich Presence cannot be set via this method or client. Rich Presence is strictly limited to RPC /// clients only. /// From d2518db9a8826dd60ca34ec29775c154825f6150 Mon Sep 17 00:00:00 2001 From: Alex Gravely Date: Wed, 10 Mar 2021 14:22:00 -0500 Subject: [PATCH 099/212] fix: Update Webhook ChannelId from model change (#1791) --- src/Discord.Net.Rest/Entities/Webhooks/RestWebhook.cs | 6 ++++-- .../Entities/Webhooks/RestInternalWebhook.cs | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/Discord.Net.Rest/Entities/Webhooks/RestWebhook.cs b/src/Discord.Net.Rest/Entities/Webhooks/RestWebhook.cs index 1fdc95a63..9baddf003 100644 --- a/src/Discord.Net.Rest/Entities/Webhooks/RestWebhook.cs +++ b/src/Discord.Net.Rest/Entities/Webhooks/RestWebhook.cs @@ -11,11 +11,11 @@ namespace Discord.Rest internal IGuild Guild { get; private set; } internal ITextChannel Channel { get; private set; } - /// - public ulong ChannelId { get; } /// public string Token { get; } + /// + public ulong ChannelId { get; private set; } /// public string Name { get; private set; } /// @@ -56,6 +56,8 @@ namespace Discord.Rest internal void Update(Model model) { + if (ChannelId != model.ChannelId) + ChannelId = model.ChannelId; if (model.Avatar.IsSpecified) AvatarId = model.Avatar.Value; if (model.Creator.IsSpecified) diff --git a/src/Discord.Net.Webhook/Entities/Webhooks/RestInternalWebhook.cs b/src/Discord.Net.Webhook/Entities/Webhooks/RestInternalWebhook.cs index 60cb89ee2..bbb160fcd 100644 --- a/src/Discord.Net.Webhook/Entities/Webhooks/RestInternalWebhook.cs +++ b/src/Discord.Net.Webhook/Entities/Webhooks/RestInternalWebhook.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Diagnostics; using System.Threading.Tasks; using Model = Discord.API.Webhook; @@ -11,9 +11,9 @@ namespace Discord.Webhook private DiscordWebhookClient _client; public ulong Id { get; } - public ulong ChannelId { get; } public string Token { get; } + public ulong ChannelId { get; private set; } public string Name { get; private set; } public string AvatarId { get; private set; } public ulong? GuildId { get; private set; } @@ -36,6 +36,8 @@ namespace Discord.Webhook internal void Update(Model model) { + if (ChannelId != model.ChannelId) + ChannelId = model.ChannelId; if (model.Avatar.IsSpecified) AvatarId = model.Avatar.Value; if (model.GuildId.IsSpecified) From d41aeee4fef3ecdefa04a4230dd78fba87999017 Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 10 Mar 2021 16:50:14 -0300 Subject: [PATCH 100/212] fix: Audit log UserId can be null (#1794) --- src/Discord.Net.Rest/API/Common/AuditLogEntry.cs | 2 +- src/Discord.Net.Rest/Entities/AuditLogs/RestAuditLogEntry.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Discord.Net.Rest/API/Common/AuditLogEntry.cs b/src/Discord.Net.Rest/API/Common/AuditLogEntry.cs index 80d9a9e97..7458a19cb 100644 --- a/src/Discord.Net.Rest/API/Common/AuditLogEntry.cs +++ b/src/Discord.Net.Rest/API/Common/AuditLogEntry.cs @@ -7,7 +7,7 @@ namespace Discord.API [JsonProperty("target_id")] public ulong? TargetId { get; set; } [JsonProperty("user_id")] - public ulong UserId { get; set; } + public ulong? UserId { get; set; } [JsonProperty("changes")] public AuditLogChange[] Changes { get; set; } diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/RestAuditLogEntry.cs b/src/Discord.Net.Rest/Entities/AuditLogs/RestAuditLogEntry.cs index d604077f4..2176eab71 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/RestAuditLogEntry.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/RestAuditLogEntry.cs @@ -22,7 +22,7 @@ namespace Discord.Rest internal static RestAuditLogEntry Create(BaseDiscordClient discord, Model fullLog, EntryModel model) { - var userInfo = fullLog.Users.FirstOrDefault(x => x.Id == model.UserId); + var userInfo = model.UserId != null ? fullLog.Users.FirstOrDefault(x => x.Id == model.UserId) : null; IUser user = null; if (userInfo != null) user = RestUser.Create(discord, userInfo); From 1b64d19c845cb7c612a1c52288c8b44cff605105 Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 10 Mar 2021 16:59:38 -0300 Subject: [PATCH 101/212] meta: 2.3.1 (#1795) --- CHANGELOG.md | 12 +++++++++++ Discord.Net.targets | 2 +- src/Discord.Net/Discord.Net.nuspec | 32 +++++++++++++++--------------- 3 files changed, 29 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f4041a7a..5988f90c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [2.3.1] - 2021-03-10 +### Fixed +- #1761 Deadlock in DiscordShardedClient when Ready is never received (73e5cc2) +- #1773 Private methods aren't added as commands (0fc713a) +- #1780 NullReferenceException in pin/unpin audit logs (f794163) +- #1786 Add ChannelType property to ChannelInfo audit log (6ac5ea1) +- #1791 Update Webhook ChannelId from model change (d2518db) +- #1794 Audit log UserId can be null (d41aeee) + +### Misc +- #1774 Add remark regarding CustomStatus as the activity (51b7afe) + ## [2.3.0] - 2021-01-28 ### Added - #1491 Add INVITE_CREATE and INVITE_DELETE events (1ab670b) diff --git a/Discord.Net.targets b/Discord.Net.targets index a7e2c8a51..82e0d21fa 100644 --- a/Discord.Net.targets +++ b/Discord.Net.targets @@ -1,7 +1,7 @@ 2.3.1 - dev + latest Discord.Net Contributors discord;discordapp diff --git a/src/Discord.Net/Discord.Net.nuspec b/src/Discord.Net/Discord.Net.nuspec index 494e3ea43..db3f29ca7 100644 --- a/src/Discord.Net/Discord.Net.nuspec +++ b/src/Discord.Net/Discord.Net.nuspec @@ -2,7 +2,7 @@ Discord.Net - 2.3.1-dev$suffix$ + 2.3.1$suffix$ Discord.Net Discord.Net Contributors foxbot @@ -14,25 +14,25 @@ https://github.com/RogueException/Discord.Net/raw/dev/docs/marketing/logo/PackageLogo.png - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + From 452f2dca7cd803a160f5a5b5d17de5ffa9b8a579 Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 28 Apr 2021 09:53:14 -0300 Subject: [PATCH 102/212] Remove foxbot.me docs link --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 34a633f72..32e1515af 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,6 @@ An unofficial .NET API Wrapper for the Discord client (https://discord.com). ## Documentation -- [Stable](https://discord.foxbot.me/) - - Hosted by @foxbot - [Nightly](https://docs.stillu.cc/) - [Latest CI repo](https://github.com/discord-net/docs-static) From 86dc89e821fb78b1ec4c3de24d50cc607fbe21af Mon Sep 17 00:00:00 2001 From: PoofImaFox <16710818+PoofImaFox@users.noreply.github.com> Date: Wed, 28 Apr 2021 08:55:57 -0400 Subject: [PATCH 103/212] Fix error in example. (#1807) --- samples/03_sharded_client/Modules/PublicModule.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/03_sharded_client/Modules/PublicModule.cs b/samples/03_sharded_client/Modules/PublicModule.cs index 60e57563a..fad2ba98c 100644 --- a/samples/03_sharded_client/Modules/PublicModule.cs +++ b/samples/03_sharded_client/Modules/PublicModule.cs @@ -9,7 +9,7 @@ namespace _03_sharded_client.Modules [Command("info")] public async Task InfoAsync() { - var msg = $@"Hi {Context.User}! There are currently {Context.Client.Shards} shards! + var msg = $@"Hi {Context.User}! There are currently {Context.Client.Shards.Count} shards! This guild is being served by shard number {Context.Client.GetShardFor(Context.Guild).ShardId}"; await ReplyAsync(msg); } From c21cf48be31df80a285862f79143f884322a29f6 Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 28 Apr 2021 10:03:30 -0300 Subject: [PATCH 104/212] meta: Bump version to 2.4.0-dev (#1827) --- Discord.Net.targets | 4 ++-- src/Discord.Net/Discord.Net.nuspec | 32 +++++++++++++++--------------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/Discord.Net.targets b/Discord.Net.targets index 82e0d21fa..7a48cf2a7 100644 --- a/Discord.Net.targets +++ b/Discord.Net.targets @@ -1,7 +1,7 @@ - 2.3.1 - + 2.4.0 + dev latest Discord.Net Contributors discord;discordapp diff --git a/src/Discord.Net/Discord.Net.nuspec b/src/Discord.Net/Discord.Net.nuspec index db3f29ca7..b0fe17439 100644 --- a/src/Discord.Net/Discord.Net.nuspec +++ b/src/Discord.Net/Discord.Net.nuspec @@ -2,7 +2,7 @@ Discord.Net - 2.3.1$suffix$ + 2.4.0$suffix$ Discord.Net Discord.Net Contributors foxbot @@ -14,25 +14,25 @@ https://github.com/RogueException/Discord.Net/raw/dev/docs/marketing/logo/PackageLogo.png - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + From 91a906397a2c4cbb7cc3cad660867f39557a8236 Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 28 Apr 2021 10:11:28 -0300 Subject: [PATCH 105/212] feature: Add stickers (#1726) --- .../Entities/Messages/IMessage.cs | 8 +++ .../Entities/Messages/ISticker.cs | 67 +++++++++++++++++++ .../Entities/Messages/SticketFormatType.cs | 15 +++++ src/Discord.Net.Rest/API/Common/Message.cs | 2 + src/Discord.Net.Rest/API/Common/Sticker.cs | 25 +++++++ .../Entities/Messages/RestMessage.cs | 4 ++ .../Entities/Messages/RestUserMessage.cs | 17 +++++ .../Entities/Messages/Sticker.cs | 48 +++++++++++++ .../Entities/Messages/SocketMessage.cs | 4 ++ .../Entities/Messages/SocketUserMessage.cs | 17 +++++ 10 files changed, 207 insertions(+) create mode 100644 src/Discord.Net.Core/Entities/Messages/ISticker.cs create mode 100644 src/Discord.Net.Core/Entities/Messages/SticketFormatType.cs create mode 100644 src/Discord.Net.Rest/API/Common/Sticker.cs create mode 100644 src/Discord.Net.Rest/Entities/Messages/Sticker.cs diff --git a/src/Discord.Net.Core/Entities/Messages/IMessage.cs b/src/Discord.Net.Core/Entities/Messages/IMessage.cs index 80b1ffa68..eb135768c 100644 --- a/src/Discord.Net.Core/Entities/Messages/IMessage.cs +++ b/src/Discord.Net.Core/Entities/Messages/IMessage.cs @@ -164,6 +164,14 @@ namespace Discord /// IReadOnlyDictionary Reactions { get; } + /// + /// Gets all stickers included in this message. + /// + /// + /// A read-only collection of sticker objects. + /// + IReadOnlyCollection Stickers { get; } + /// /// Gets the flags related to this message. /// diff --git a/src/Discord.Net.Core/Entities/Messages/ISticker.cs b/src/Discord.Net.Core/Entities/Messages/ISticker.cs new file mode 100644 index 000000000..e7e4405b6 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Messages/ISticker.cs @@ -0,0 +1,67 @@ +using System.Collections.Generic; + +namespace Discord +{ + /// + /// Represents a discord sticker. + /// + public interface ISticker + { + /// + /// Gets the ID of this sticker. + /// + /// + /// A snowflake ID associated with this sticker. + /// + ulong Id { get; } + /// + /// Gets the ID of the pack of this sticker. + /// + /// + /// A snowflake ID associated with the pack of this sticker. + /// + ulong PackId { get; } + /// + /// Gets the name of this sticker. + /// + /// + /// A with the name of this sticker. + /// + string Name { get; } + /// + /// Gets the description of this sticker. + /// + /// + /// A with the description of this sticker. + /// + string Description { get; } + /// + /// Gets the list of tags of this sticker. + /// + /// + /// A read-only list with the tags of this sticker. + /// + IReadOnlyCollection Tags { get; } + /// + /// Gets the asset hash of this sticker. + /// + /// + /// A with the asset hash of this sticker. + /// + string Asset { get; } + /// + /// Gets the preview asset hash of this sticker. + /// + /// + /// A with the preview asset hash of this sticker. + /// + string PreviewAsset { get; } + /// + /// Gets the format type of this sticker. + /// + /// + /// A with the format type of this sticker. + /// + StickerFormatType FormatType { get; } + } +} diff --git a/src/Discord.Net.Core/Entities/Messages/SticketFormatType.cs b/src/Discord.Net.Core/Entities/Messages/SticketFormatType.cs new file mode 100644 index 000000000..d24a38534 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Messages/SticketFormatType.cs @@ -0,0 +1,15 @@ +namespace Discord +{ + /// Defines the types of formats for stickers. + public enum StickerFormatType + { + /// Default value for a sticker format type. + None = 0, + /// The sticker format type is png. + Png = 1, + /// The sticker format type is apng. + Apng = 2, + /// The sticker format type is lottie. + Lottie = 3, + } +} diff --git a/src/Discord.Net.Rest/API/Common/Message.cs b/src/Discord.Net.Rest/API/Common/Message.cs index b781de346..6ea2c29ff 100644 --- a/src/Discord.Net.Rest/API/Common/Message.cs +++ b/src/Discord.Net.Rest/API/Common/Message.cs @@ -58,5 +58,7 @@ namespace Discord.API public Optional AllowedMentions { get; set; } [JsonProperty("referenced_message")] public Optional ReferencedMessage { get; set; } + [JsonProperty("stickers")] + public Optional Stickers { get; set; } } } diff --git a/src/Discord.Net.Rest/API/Common/Sticker.cs b/src/Discord.Net.Rest/API/Common/Sticker.cs new file mode 100644 index 000000000..0d1cac974 --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/Sticker.cs @@ -0,0 +1,25 @@ +#pragma warning disable CS1591 +using Newtonsoft.Json; + +namespace Discord.API +{ + internal class Sticker + { + [JsonProperty("id")] + public ulong Id { get; set; } + [JsonProperty("pack_id")] + public ulong PackId { get; set; } + [JsonProperty("name")] + public string Name { get; set; } + [JsonProperty("description")] + public string Desription { get; set; } + [JsonProperty("tags")] + public Optional Tags { get; set; } + [JsonProperty("asset")] + public string Asset { get; set; } + [JsonProperty("preview_asset")] + public string PreviewAsset { get; set; } + [JsonProperty("format_type")] + public StickerFormatType FormatType { get; set; } + } +} diff --git a/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs b/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs index b2a745980..793e89dff 100644 --- a/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs +++ b/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs @@ -58,6 +58,8 @@ namespace Discord.Rest public virtual IReadOnlyCollection MentionedUsers => ImmutableArray.Create(); /// public virtual IReadOnlyCollection Tags => ImmutableArray.Create(); + /// + public virtual IReadOnlyCollection Stickers => ImmutableArray.Create(); /// public DateTimeOffset Timestamp => DateTimeUtils.FromTicks(_timestampTicks); @@ -173,6 +175,8 @@ namespace Discord.Rest IReadOnlyCollection IMessage.Embeds => Embeds; /// IReadOnlyCollection IMessage.MentionedUserIds => MentionedUsers.Select(x => x.Id).ToImmutableArray(); + /// + IReadOnlyCollection IMessage.Stickers => Stickers; /// public IReadOnlyDictionary Reactions => _reactions.ToDictionary(x => x.Emote, x => new ReactionMetadata { ReactionCount = x.Count, IsMe = x.Me }); diff --git a/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs b/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs index cf025aea1..1274f1fd3 100644 --- a/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs +++ b/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs @@ -21,6 +21,7 @@ namespace Discord.Rest private ImmutableArray _tags = ImmutableArray.Create(); private ImmutableArray _roleMentionIds = ImmutableArray.Create(); private ImmutableArray _userMentions = ImmutableArray.Create(); + private ImmutableArray _stickers = ImmutableArray.Create(); /// public override bool IsTTS => _isTTS; @@ -45,6 +46,8 @@ namespace Discord.Rest /// public override IReadOnlyCollection Tags => _tags; /// + public override IReadOnlyCollection Stickers => _stickers; + /// public IUserMessage ReferencedMessage => _referencedMessage; internal RestUserMessage(BaseDiscordClient discord, ulong id, IMessageChannel channel, IUser author, MessageSource source) @@ -132,6 +135,20 @@ namespace Discord.Rest IUser refMsgAuthor = MessageHelper.GetAuthor(Discord, guild, refMsg.Author.Value, refMsg.WebhookId.ToNullable()); _referencedMessage = RestUserMessage.Create(Discord, Channel, refMsgAuthor, refMsg); } + + if (model.Stickers.IsSpecified) + { + var value = model.Stickers.Value; + if (value.Length > 0) + { + var stickers = ImmutableArray.CreateBuilder(value.Length); + for (int i = 0; i < value.Length; i++) + stickers.Add(Sticker.Create(value[i])); + _stickers = stickers.ToImmutable(); + } + else + _stickers = ImmutableArray.Create(); + } } /// diff --git a/src/Discord.Net.Rest/Entities/Messages/Sticker.cs b/src/Discord.Net.Rest/Entities/Messages/Sticker.cs new file mode 100644 index 000000000..5482bed74 --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Messages/Sticker.cs @@ -0,0 +1,48 @@ +using System.Collections.Generic; +using System.Diagnostics; +using Model = Discord.API.Sticker; + +namespace Discord +{ + /// + [DebuggerDisplay(@"{DebuggerDisplay,nq}")] + public class Sticker : ISticker + { + /// + public ulong Id { get; } + /// + public ulong PackId { get; } + /// + public string Name { get; } + /// + public string Description { get; } + /// + public IReadOnlyCollection Tags { get; } + /// + public string Asset { get; } + /// + public string PreviewAsset { get; } + /// + public StickerFormatType FormatType { get; } + + internal Sticker(ulong id, ulong packId, string name, string description, string[] tags, string asset, string previewAsset, StickerFormatType formatType) + { + Id = id; + PackId = packId; + Name = name; + Description = description; + Tags = tags.ToReadOnlyCollection(); + Asset = asset; + PreviewAsset = previewAsset; + FormatType = formatType; + } + internal static Sticker Create(Model model) + { + return new Sticker(model.Id, model.PackId, model.Name, model.Desription, + model.Tags.IsSpecified ? model.Tags.Value.Split(',') : new string[0], + model.Asset, model.PreviewAsset, model.FormatType); + } + + private string DebuggerDisplay => $"{Name} ({Id})"; + } +} diff --git a/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs b/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs index 2ca53cbb9..8b45d882b 100644 --- a/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs +++ b/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs @@ -99,6 +99,8 @@ namespace Discord.WebSocket /// public virtual IReadOnlyCollection Tags => ImmutableArray.Create(); /// + public virtual IReadOnlyCollection Stickers => ImmutableArray.Create(); + /// public IReadOnlyDictionary Reactions => _reactions.GroupBy(r => r.Emote).ToDictionary(x => x.Key, x => new ReactionMetadata { ReactionCount = x.Count(), IsMe = x.Any(y => y.UserId == Discord.CurrentUser.Id) }); /// @@ -194,6 +196,8 @@ namespace Discord.WebSocket IReadOnlyCollection IMessage.MentionedRoleIds => MentionedRoles.Select(x => x.Id).ToImmutableArray(); /// IReadOnlyCollection IMessage.MentionedUserIds => MentionedUsers.Select(x => x.Id).ToImmutableArray(); + /// + IReadOnlyCollection IMessage.Stickers => Stickers; internal void AddReaction(SocketReaction reaction) { diff --git a/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs b/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs index 859b1b80a..2a8b45ca1 100644 --- a/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs +++ b/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs @@ -23,6 +23,7 @@ namespace Discord.WebSocket private ImmutableArray _tags = ImmutableArray.Create(); private ImmutableArray _roleMentions = ImmutableArray.Create(); private ImmutableArray _userMentions = ImmutableArray.Create(); + private ImmutableArray _stickers = ImmutableArray.Create(); /// public override bool IsTTS => _isTTS; @@ -47,6 +48,8 @@ namespace Discord.WebSocket /// public override IReadOnlyCollection MentionedUsers => _userMentions; /// + public override IReadOnlyCollection Stickers => _stickers; + /// public IUserMessage ReferencedMessage => _referencedMessage; internal SocketUserMessage(DiscordSocketClient discord, ulong id, ISocketMessageChannel channel, SocketUser author, MessageSource source) @@ -158,6 +161,20 @@ namespace Discord.WebSocket refMsgAuthor = new SocketUnknownUser(Discord, id: 0); _referencedMessage = SocketUserMessage.Create(Discord, state, refMsgAuthor, Channel, refMsg); } + + if (model.Stickers.IsSpecified) + { + var value = model.Stickers.Value; + if (value.Length > 0) + { + var stickers = ImmutableArray.CreateBuilder(value.Length); + for (int i = 0; i < value.Length; i++) + stickers.Add(Sticker.Create(value[i])); + _stickers = stickers.ToImmutable(); + } + else + _stickers = ImmutableArray.Create(); + } } /// From f67cd8ea55ccb80caf126fe76466857083da2ce3 Mon Sep 17 00:00:00 2001 From: Desmont <314857+Desmont@users.noreply.github.com> Date: Wed, 28 Apr 2021 15:15:16 +0200 Subject: [PATCH 106/212] feature: Webhook message edit & delete functionality (#1753) * feature: Webhook message edit & delete functionality * PR fixes: Rename Edit* to Modify*; Add more detailed docstrings; Small validation fixes * Fix spacing around docstrings * Make ModifyWebhookMessageParams.Content Optional * Change the Webhook message edit functionality to use a object delegate method instead providing the all parameters Co-authored-by: Desmont --- .../API/Rest/ModifyWebhookMessageParams.cs | 16 ++++++ src/Discord.Net.Rest/DiscordRestApiClient.cs | 37 +++++++++++++ .../DiscordWebhookClient.cs | 29 ++++++++++ .../Messages/WebhookMessageProperties.cs | 26 +++++++++ .../WebhookClientHelper.cs | 54 ++++++++++++++++++- 5 files changed, 161 insertions(+), 1 deletion(-) create mode 100644 src/Discord.Net.Rest/API/Rest/ModifyWebhookMessageParams.cs create mode 100644 src/Discord.Net.Webhook/Entities/Messages/WebhookMessageProperties.cs diff --git a/src/Discord.Net.Rest/API/Rest/ModifyWebhookMessageParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyWebhookMessageParams.cs new file mode 100644 index 000000000..ba8fcbb4e --- /dev/null +++ b/src/Discord.Net.Rest/API/Rest/ModifyWebhookMessageParams.cs @@ -0,0 +1,16 @@ +#pragma warning disable CS1591 +using Newtonsoft.Json; + +namespace Discord.API.Rest +{ + [JsonObject(MemberSerialization = MemberSerialization.OptIn)] + internal class ModifyWebhookMessageParams + { + [JsonProperty("content")] + public Optional Content { get; set; } + [JsonProperty("embeds")] + public Optional Embeds { get; set; } + [JsonProperty("allowed_mentions")] + public Optional AllowedMentions { get; set; } + } +} diff --git a/src/Discord.Net.Rest/DiscordRestApiClient.cs b/src/Discord.Net.Rest/DiscordRestApiClient.cs index 592ad7e92..023652fdf 100644 --- a/src/Discord.Net.Rest/DiscordRestApiClient.cs +++ b/src/Discord.Net.Rest/DiscordRestApiClient.cs @@ -523,6 +523,43 @@ namespace Discord.API var ids = new BucketIds(webhookId: webhookId); return await SendJsonAsync("POST", () => $"webhooks/{webhookId}/{AuthToken}?wait=true", args, ids, clientBucket: ClientBucketType.SendEdit, options: options).ConfigureAwait(false); } + + /// Message content is too long, length must be less or equal to . + /// This operation may only be called with a token. + public async Task ModifyWebhookMessageAsync(ulong webhookId, ulong messageId, ModifyWebhookMessageParams args, RequestOptions options = null) + { + if (AuthTokenType != TokenType.Webhook) + throw new InvalidOperationException($"This operation may only be called with a {nameof(TokenType.Webhook)} token."); + + Preconditions.NotNull(args, nameof(args)); + Preconditions.NotEqual(webhookId, 0, nameof(webhookId)); + Preconditions.NotEqual(messageId, 0, nameof(messageId)); + + if (args.Embeds.IsSpecified) + Preconditions.AtMost(args.Embeds.Value.Length, 10, nameof(args.Embeds), "A max of 10 Embeds are allowed."); + if (args.Content.IsSpecified && args.Content.Value.Length > DiscordConfig.MaxMessageSize) + throw new ArgumentException(message: $"Message content is too long, length must be less or equal to {DiscordConfig.MaxMessageSize}.", paramName: nameof(args.Content)); + options = RequestOptions.CreateOrClone(options); + + var ids = new BucketIds(webhookId: webhookId); + await SendJsonAsync("PATCH", () => $"webhooks/{webhookId}/{AuthToken}/messages/{messageId}", args, ids, clientBucket: ClientBucketType.SendEdit, options: options).ConfigureAwait(false); + } + + /// This operation may only be called with a token. + public async Task DeleteWebhookMessageAsync(ulong webhookId, ulong messageId, RequestOptions options = null) + { + if (AuthTokenType != TokenType.Webhook) + throw new InvalidOperationException($"This operation may only be called with a {nameof(TokenType.Webhook)} token."); + + Preconditions.NotEqual(webhookId, 0, nameof(webhookId)); + Preconditions.NotEqual(messageId, 0, nameof(messageId)); + + options = RequestOptions.CreateOrClone(options); + + var ids = new BucketIds(webhookId: webhookId); + await SendAsync("DELETE", () => $"webhooks/{webhookId}/{AuthToken}/messages/{messageId}", ids, options: options).ConfigureAwait(false); + } + /// Message content is too long, length must be less or equal to . public async Task UploadFileAsync(ulong channelId, UploadFileParams args, RequestOptions options = null) { diff --git a/src/Discord.Net.Webhook/DiscordWebhookClient.cs b/src/Discord.Net.Webhook/DiscordWebhookClient.cs index a6d4ef183..91d077411 100644 --- a/src/Discord.Net.Webhook/DiscordWebhookClient.cs +++ b/src/Discord.Net.Webhook/DiscordWebhookClient.cs @@ -91,6 +91,35 @@ namespace Discord.Webhook string username = null, string avatarUrl = null, RequestOptions options = null, AllowedMentions allowedMentions = null) => WebhookClientHelper.SendMessageAsync(this, text, isTTS, embeds, username, avatarUrl, allowedMentions, options); + /// + /// Modifies a message posted using this webhook. + /// + /// + /// This method can only modify messages that were sent using the same webhook. + /// + /// ID of the modified message. + /// A delegate containing the properties to modify the message with. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous modification operation. + /// + public Task ModifyMessageAsync(ulong messageId, Action func, RequestOptions options = null) + => WebhookClientHelper.ModifyMessageAsync(this, messageId, func, options); + + /// + /// Deletes a message posted using this webhook. + /// + /// + /// This method can only delete messages that were sent using the same webhook. + /// + /// ID of the deleted message. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous deletion operation. + /// + public Task DeleteMessageAsync(ulong messageId, RequestOptions options = null) + => WebhookClientHelper.DeleteMessageAsync(this, messageId, options); + /// Sends a message to the channel for this webhook with an attachment. /// Returns the ID of the created message. public Task SendFileAsync(string filePath, string text, bool isTTS = false, diff --git a/src/Discord.Net.Webhook/Entities/Messages/WebhookMessageProperties.cs b/src/Discord.Net.Webhook/Entities/Messages/WebhookMessageProperties.cs new file mode 100644 index 000000000..dec7b6e3b --- /dev/null +++ b/src/Discord.Net.Webhook/Entities/Messages/WebhookMessageProperties.cs @@ -0,0 +1,26 @@ +using System.Collections.Generic; + +namespace Discord.Webhook +{ + /// + /// Properties that are used to modify an Webhook message with the specified changes. + /// + public class WebhookMessageProperties + { + /// + /// Gets or sets the content of the message. + /// + /// + /// This must be less than the constant defined by . + /// + public Optional Content { get; set; } + /// + /// Gets or sets the embed array that the message should display. + /// + public Optional> Embeds { get; set; } + /// + /// Gets or sets the allowed mentions of the message. + /// + public Optional AllowedMentions { get; set; } + } +} diff --git a/src/Discord.Net.Webhook/WebhookClientHelper.cs b/src/Discord.Net.Webhook/WebhookClientHelper.cs index 4bc2eaca9..886ff234d 100644 --- a/src/Discord.Net.Webhook/WebhookClientHelper.cs +++ b/src/Discord.Net.Webhook/WebhookClientHelper.cs @@ -36,7 +36,59 @@ namespace Discord.Webhook var model = await client.ApiClient.CreateWebhookMessageAsync(client.Webhook.Id, args, options: options).ConfigureAwait(false); return model.Id; } - public static async Task SendFileAsync(DiscordWebhookClient client, string filePath, string text, bool isTTS, + public static async Task ModifyMessageAsync(DiscordWebhookClient client, ulong messageId, + Action func, RequestOptions options) + { + var args = new WebhookMessageProperties(); + func(args); + + if (args.AllowedMentions.IsSpecified) + { + var allowedMentions = args.AllowedMentions.Value; + 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."); + + // check that user flag and user Id list are exclusive, same with role flag and role Id list + if (allowedMentions?.AllowedTypes != null) + { + if (allowedMentions.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Users) && + allowedMentions.UserIds != null && allowedMentions.UserIds.Count > 0) + { + throw new ArgumentException("The Users flag is mutually exclusive with the list of User Ids.", + nameof(allowedMentions)); + } + + if (allowedMentions.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Roles) && + allowedMentions.RoleIds != null && allowedMentions.RoleIds.Count > 0) + { + throw new ArgumentException("The Roles flag is mutually exclusive with the list of Role Ids.", + nameof(allowedMentions)); + } + } + } + + var apiArgs = new ModifyWebhookMessageParams + { + Content = args.Content.IsSpecified ? args.Content.Value : Optional.Create(), + Embeds = + args.Embeds.IsSpecified + ? args.Embeds.Value.Select(embed => embed.ToModel()).ToArray() + : Optional.Create(), + AllowedMentions = args.AllowedMentions.IsSpecified + ? args.AllowedMentions.Value.ToModel() + : Optional.Create() + }; + + await client.ApiClient.ModifyWebhookMessageAsync(client.Webhook.Id, messageId, apiArgs, options) + .ConfigureAwait(false); + } + public static async Task DeleteMessageAsync(DiscordWebhookClient client, ulong messageId, RequestOptions options) + { + await client.ApiClient.DeleteWebhookMessageAsync(client.Webhook.Id, messageId, options).ConfigureAwait(false); + } + public static async Task SendFileAsync(DiscordWebhookClient client, string filePath, string text, bool isTTS, IEnumerable embeds, string username, string avatarUrl, AllowedMentions allowedMentions, RequestOptions options, bool isSpoiler) { string filename = Path.GetFileName(filePath); From 25b04c4a97fc7692b739b0e66d917176922d60c3 Mon Sep 17 00:00:00 2001 From: Yeba <31899118+yebafan@users.noreply.github.com> Date: Wed, 28 Apr 2021 15:48:15 +0200 Subject: [PATCH 107/212] misc: Remove URI check from EmbedBuilder (#1778) `Uri.IsWellFormedUriString()` doesn't return the expected result for specific urls, removed until the DotNet team actually resolves it ( https://github.com/dotnet/runtime/issues/21626 ) --- .../Entities/Messages/EmbedBuilder.cs | 56 ++----------------- .../Extensions/StringExtensions.cs | 10 ---- .../EmbedBuilderTests.cs | 54 ------------------ 3 files changed, 6 insertions(+), 114 deletions(-) delete mode 100644 src/Discord.Net.Core/Extensions/StringExtensions.cs diff --git a/src/Discord.Net.Core/Entities/Messages/EmbedBuilder.cs b/src/Discord.Net.Core/Entities/Messages/EmbedBuilder.cs index 555fd95df..f1238ddcf 100644 --- a/src/Discord.Net.Core/Entities/Messages/EmbedBuilder.cs +++ b/src/Discord.Net.Core/Entities/Messages/EmbedBuilder.cs @@ -12,7 +12,6 @@ namespace Discord { private string _title; private string _description; - private string _url; private EmbedImage? _image; private EmbedThumbnail? _thumbnail; private List _fields; @@ -70,26 +69,14 @@ namespace Discord /// Gets or sets the URL of an . /// Url is not a well-formed . /// The URL of the embed. - public string Url - { - get => _url; - set - { - if (!value.IsNullOrUri()) throw new ArgumentException(message: "Url must be a well-formed URI.", paramName: nameof(Url)); - _url = value; - } - } + public string Url { get; set; } /// Gets or sets the thumbnail URL of an . /// Url is not a well-formed . /// The thumbnail URL of the embed. public string ThumbnailUrl { get => _thumbnail?.Url; - set - { - if (!value.IsNullOrUri()) throw new ArgumentException(message: "Url must be a well-formed URI.", paramName: nameof(ThumbnailUrl)); - _thumbnail = new EmbedThumbnail(value, null, null, null); - } + set => _thumbnail = new EmbedThumbnail(value, null, null, null); } /// Gets or sets the image URL of an . /// Url is not a well-formed . @@ -97,11 +84,7 @@ namespace Discord public string ImageUrl { get => _image?.Url; - set - { - if (!value.IsNullOrUri()) throw new ArgumentException(message: "Url must be a well-formed URI.", paramName: nameof(ImageUrl)); - _image = new EmbedImage(value, null, null, null); - } + set => _image = new EmbedImage(value, null, null, null); } /// Gets or sets the list of of an . @@ -553,8 +536,6 @@ namespace Discord public class EmbedAuthorBuilder { private string _name; - private string _url; - private string _iconUrl; /// /// Gets the maximum author name length allowed by Discord. /// @@ -585,15 +566,7 @@ namespace Discord /// /// The URL of the author field. /// - public string Url - { - get => _url; - set - { - if (!value.IsNullOrUri()) throw new ArgumentException(message: "Url must be a well-formed URI.", paramName: nameof(Url)); - _url = value; - } - } + public string Url { get; set; } /// /// Gets or sets the icon URL of the author field. /// @@ -601,15 +574,7 @@ namespace Discord /// /// The icon URL of the author field. /// - public string IconUrl - { - get => _iconUrl; - set - { - if (!value.IsNullOrUri()) throw new ArgumentException(message: "Url must be a well-formed URI.", paramName: nameof(IconUrl)); - _iconUrl = value; - } - } + public string IconUrl { get; set; } /// /// Sets the name of the author field. @@ -671,7 +636,6 @@ namespace Discord public class EmbedFooterBuilder { private string _text; - private string _iconUrl; /// /// Gets the maximum footer length allowed by Discord. @@ -703,15 +667,7 @@ namespace Discord /// /// The icon URL of the footer field. /// - public string IconUrl - { - get => _iconUrl; - set - { - if (!value.IsNullOrUri()) throw new ArgumentException(message: "Url must be a well-formed URI.", paramName: nameof(IconUrl)); - _iconUrl = value; - } - } + public string IconUrl { get; set; } /// /// Sets the name of the footer field. diff --git a/src/Discord.Net.Core/Extensions/StringExtensions.cs b/src/Discord.Net.Core/Extensions/StringExtensions.cs deleted file mode 100644 index c0ebb2626..000000000 --- a/src/Discord.Net.Core/Extensions/StringExtensions.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System; - -namespace Discord -{ - internal static class StringExtensions - { - public static bool IsNullOrUri(this string url) => - string.IsNullOrEmpty(url) || Uri.IsWellFormedUriString(url, UriKind.Absolute); - } -} diff --git a/test/Discord.Net.Tests.Unit/EmbedBuilderTests.cs b/test/Discord.Net.Tests.Unit/EmbedBuilderTests.cs index 12ec1a0bd..6cfdc83b2 100644 --- a/test/Discord.Net.Tests.Unit/EmbedBuilderTests.cs +++ b/test/Discord.Net.Tests.Unit/EmbedBuilderTests.cs @@ -190,42 +190,6 @@ namespace Discord Assert.Equal(result.ThumbnailUrl, url); } - /// - /// Tests that invalid urls throw an . - /// - /// The url to set. - [Theory] - [InlineData(" ")] - [InlineData("not a url")] - public void Url_Invalid(string url) - { - Assert.Throws(() - => new EmbedBuilder() - .WithUrl(url)); - Assert.Throws(() - => new EmbedBuilder() - .WithImageUrl(url)); - Assert.Throws(() - => new EmbedBuilder() - .WithThumbnailUrl(url)); - - Assert.Throws(() => - { - var b = new EmbedBuilder(); - b.Url = url; - }); - Assert.Throws(() => - { - var b = new EmbedBuilder(); - b.ImageUrl = url; - }); - Assert.Throws(() => - { - var b = new EmbedBuilder(); - b.ThumbnailUrl = url; - }); - } - /// /// Tests the value of the property when there are no fields set. /// @@ -343,24 +307,6 @@ namespace Discord Assert.Equal(name, footer.Text); } /// - /// Tests that invalid URLs throw an . - /// - [Fact] - public void EmbedFooterBuilder_InvalidURL() - { - IEnumerable InvalidUrls() - { - yield return "not a url"; - } - foreach (var url in InvalidUrls()) - { - Assert.Throws(() => - { - new EmbedFooterBuilder().WithIconUrl(url); - }); - } - } - /// /// Tests that invalid text throws an . /// [Fact] From 6aff419edd9aa7df358a51c8a0333727c91f6d05 Mon Sep 17 00:00:00 2001 From: Waterball <46353821+Waterball12@users.noreply.github.com> Date: Wed, 28 Apr 2021 14:50:41 +0100 Subject: [PATCH 108/212] misc: Fix spelling in SnowflakeUtils.FromSnowflake (#1800) ```diff --- geenrated +++ generated ``` --- src/Discord.Net.Core/Utils/SnowflakeUtils.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Discord.Net.Core/Utils/SnowflakeUtils.cs b/src/Discord.Net.Core/Utils/SnowflakeUtils.cs index dd8f8ca66..e52c99376 100644 --- a/src/Discord.Net.Core/Utils/SnowflakeUtils.cs +++ b/src/Discord.Net.Core/Utils/SnowflakeUtils.cs @@ -12,7 +12,7 @@ namespace Discord /// /// The snowflake identifier to resolve. /// - /// A representing the time for when the object is geenrated. + /// A representing the time for when the object is generated. /// public static DateTimeOffset FromSnowflake(ulong value) => DateTimeOffset.FromUnixTimeMilliseconds((long)((value >> 22) + 1420070400000UL)); From 0715d7db9662da182a7218de2a7118af3d62be7e Mon Sep 17 00:00:00 2001 From: Waterball <46353821+Waterball12@users.noreply.github.com> Date: Wed, 28 Apr 2021 14:59:31 +0100 Subject: [PATCH 109/212] Feature: Add missing property to MESSAGE_REACTION_ADD event (#1801) * Add guild member property for reaction * Use the guild member provided by the event when present --- src/Discord.Net.WebSocket/API/Gateway/Reaction.cs | 4 +++- src/Discord.Net.WebSocket/DiscordSocketClient.cs | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/Discord.Net.WebSocket/API/Gateway/Reaction.cs b/src/Discord.Net.WebSocket/API/Gateway/Reaction.cs index 62de456e2..a0a740868 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/Reaction.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/Reaction.cs @@ -1,4 +1,4 @@ -using Newtonsoft.Json; +using Newtonsoft.Json; namespace Discord.API.Gateway { @@ -12,5 +12,7 @@ namespace Discord.API.Gateway public ulong ChannelId { get; set; } [JsonProperty("emoji")] public Emoji Emoji { get; set; } + [JsonProperty("member")] + public Optional Member { get; set; } } } diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index b43db5d98..520f69073 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -1384,6 +1384,14 @@ namespace Discord.WebSocket ? Optional.Create() : Optional.Create(cachedMsg); + if (data.Member.IsSpecified) + { + var guild = (channel as SocketGuildChannel)?.Guild; + + if (guild != null) + user = guild.AddOrUpdateUser(data.Member.Value); + } + var optionalUser = user is null ? Optional.Create() : Optional.Create(user); From df23d57458db65fb3107942000abdd5eaa83fbaf Mon Sep 17 00:00:00 2001 From: NeKz Date: Wed, 28 Apr 2021 16:08:56 +0200 Subject: [PATCH 110/212] feature: Add GetEmotesAsync to IGuild (#1781) --- src/Discord.Net.Core/Entities/Guilds/IGuild.cs | 9 +++++++++ src/Discord.Net.Rest/DiscordRestApiClient.cs | 9 +++++++++ src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs | 5 +++++ src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs | 3 +++ src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs | 3 +++ 5 files changed, 29 insertions(+) diff --git a/src/Discord.Net.Core/Entities/Guilds/IGuild.cs b/src/Discord.Net.Core/Entities/Guilds/IGuild.cs index 6283508e5..36d735157 100644 --- a/src/Discord.Net.Core/Entities/Guilds/IGuild.cs +++ b/src/Discord.Net.Core/Entities/Guilds/IGuild.cs @@ -892,6 +892,15 @@ namespace Discord /// Task> GetWebhooksAsync(RequestOptions options = null); + /// + /// Gets a collection of emotes from this guild. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains a read-only collection + /// of emotes found within the guild. + /// + Task> GetEmotesAsync(RequestOptions options = null); /// /// Gets a specific emote from this guild. /// diff --git a/src/Discord.Net.Rest/DiscordRestApiClient.cs b/src/Discord.Net.Rest/DiscordRestApiClient.cs index 023652fdf..d3e4aa515 100644 --- a/src/Discord.Net.Rest/DiscordRestApiClient.cs +++ b/src/Discord.Net.Rest/DiscordRestApiClient.cs @@ -1280,6 +1280,15 @@ namespace Discord.API } //Guild emoji + public async Task> GetGuildEmotesAsync(ulong guildId, RequestOptions options = null) + { + Preconditions.NotEqual(guildId, 0, nameof(guildId)); + options = RequestOptions.CreateOrClone(options); + + var ids = new BucketIds(guildId: guildId); + return await SendAsync>("GET", () => $"guilds/{guildId}/emojis", ids, options: options).ConfigureAwait(false); + } + public async Task GetGuildEmoteAsync(ulong guildId, ulong emoteId, RequestOptions options = null) { Preconditions.NotEqual(guildId, 0, nameof(guildId)); diff --git a/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs b/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs index 04ec27930..d10d046ee 100644 --- a/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs +++ b/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs @@ -496,6 +496,11 @@ namespace Discord.Rest } //Emotes + public static async Task> GetEmotesAsync(IGuild guild, BaseDiscordClient client, RequestOptions options) + { + var models = await client.ApiClient.GetGuildEmotesAsync(guild.Id, options).ConfigureAwait(false); + return models.Select(x => x.ToEntity()).ToImmutableArray(); + } public static async Task GetEmoteAsync(IGuild guild, BaseDiscordClient client, ulong id, RequestOptions options) { var emote = await client.ApiClient.GetGuildEmoteAsync(guild.Id, id, options).ConfigureAwait(false); diff --git a/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs b/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs index c74e128a8..57918a1e7 100644 --- a/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs +++ b/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs @@ -828,6 +828,9 @@ namespace Discord.Rest //Emotes /// + public Task> GetEmotesAsync(RequestOptions options = null) + => GuildHelper.GetEmotesAsync(this, Discord, options); + /// public Task GetEmoteAsync(ulong id, RequestOptions options = null) => GuildHelper.GetEmoteAsync(this, Discord, id, options); /// diff --git a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs index e9e535998..0e36c6b50 100644 --- a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs +++ b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs @@ -1008,6 +1008,9 @@ namespace Discord.WebSocket //Emotes /// + public Task> GetEmotesAsync(RequestOptions options = null) + => GuildHelper.GetEmotesAsync(this, Discord, options); + /// public Task GetEmoteAsync(ulong id, RequestOptions options = null) => GuildHelper.GetEmoteAsync(this, Discord, id, options); /// From c46daaad19f86d4396c752010ccffc08aa144cee Mon Sep 17 00:00:00 2001 From: Adam Gauthier Date: Wed, 28 Apr 2021 10:30:16 -0400 Subject: [PATCH 111/212] fix: Add type reader when entity type reader exists (#1486) When adding a type reader that replaces a default type reader, CommandService checks that it replaces a type in its default type readers or entity type readers (IMessage, IChannel, IRole, IUser). For entity types, it checks that the target type is the same as the entity type or it implements its type reader. Adding a type reader for a default type reader doesn't make much sense and the original intent was likely to check that the target type is or implements the entity type. --- src/Discord.Net.Commands/CommandService.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Discord.Net.Commands/CommandService.cs b/src/Discord.Net.Commands/CommandService.cs index 1d4b0e15a..8659b0130 100644 --- a/src/Discord.Net.Commands/CommandService.cs +++ b/src/Discord.Net.Commands/CommandService.cs @@ -408,7 +408,7 @@ namespace Discord.Commands var typeInfo = type.GetTypeInfo(); if (typeInfo.IsEnum) return true; - return _entityTypeReaders.Any(x => type == x.EntityType || typeInfo.ImplementedInterfaces.Contains(x.TypeReaderType)); + return _entityTypeReaders.Any(x => type == x.EntityType || typeInfo.ImplementedInterfaces.Contains(x.EntityType)); } internal void AddNullableTypeReader(Type valueType, TypeReader valueTypeReader) { @@ -511,7 +511,7 @@ namespace Discord.Commands await _commandExecutedEvent.InvokeAsync(Optional.Create(), context, searchResult).ConfigureAwait(false); return searchResult; } - + var commands = searchResult.Commands; var preconditionResults = new Dictionary(); From 5b244f215b76ec7c43e2329b72a62ddd6f6e32e2 Mon Sep 17 00:00:00 2001 From: Playwo <38554182+Playwo@users.noreply.github.com> Date: Wed, 28 Apr 2021 16:42:58 +0200 Subject: [PATCH 112/212] feature: Add methods to interact with reactions without a message object (#1828) --- src/Discord.Net.Rest/DiscordRestClient.cs | 8 ++++++++ .../Entities/Messages/MessageHelper.cs | 20 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/Discord.Net.Rest/DiscordRestClient.cs b/src/Discord.Net.Rest/DiscordRestClient.cs index 48c40fdfa..cdf312c3d 100644 --- a/src/Discord.Net.Rest/DiscordRestClient.cs +++ b/src/Discord.Net.Rest/DiscordRestClient.cs @@ -108,6 +108,14 @@ namespace Discord.Rest public Task GetWebhookAsync(ulong id, RequestOptions options = null) => ClientHelper.GetWebhookAsync(this, id, options); + public Task AddReactionAsync(ulong channelId, ulong messageId, IEmote emote, RequestOptions options = null) + => MessageHelper.AddReactionAsync(channelId, messageId, emote, this, options); + public Task RemoveReactionAsync(ulong channelId, ulong messageId, ulong userId, IEmote emote, RequestOptions options = null) + => MessageHelper.RemoveReactionAsync(channelId, messageId, userId, emote, this, options); + public Task RemoveAllReactionsAsync(ulong channelId, ulong messageId, RequestOptions options = null) + => MessageHelper.RemoveAllReactionsAsync(channelId, messageId, this, options); + public Task RemoveAllReactionsForEmoteAsync(ulong channelId, ulong messageId, IEmote emote, RequestOptions options = null) + => MessageHelper.RemoveAllReactionsForEmoteAsync(channelId, messageId, emote, this, options); //IDiscordClient /// async Task IDiscordClient.GetApplicationInfoAsync(RequestOptions options) diff --git a/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs b/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs index e22ae71cd..b2584c8c1 100644 --- a/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs +++ b/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs @@ -89,21 +89,41 @@ namespace Discord.Rest await client.ApiClient.SuppressEmbedAsync(msg.Channel.Id, msg.Id, apiArgs, options).ConfigureAwait(false); } + public static async Task AddReactionAsync(ulong channelId, ulong messageId, IEmote emote, BaseDiscordClient client, RequestOptions options) + { + await client.ApiClient.AddReactionAsync(channelId, messageId, emote is Emote e ? $"{e.Name}:{e.Id}" : UrlEncode(emote.Name), options).ConfigureAwait(false); + } + public static async Task AddReactionAsync(IMessage msg, IEmote emote, BaseDiscordClient client, RequestOptions options) { await client.ApiClient.AddReactionAsync(msg.Channel.Id, msg.Id, emote is Emote e ? $"{e.Name}:{e.Id}" : UrlEncode(emote.Name), options).ConfigureAwait(false); } + public static async Task RemoveReactionAsync(ulong channelId, ulong messageId, ulong userId, IEmote emote, BaseDiscordClient client, RequestOptions options) + { + await client.ApiClient.RemoveReactionAsync(channelId, messageId, userId, emote is Emote e ? $"{e.Name}:{e.Id}" : UrlEncode(emote.Name), options).ConfigureAwait(false); + } + public static async Task RemoveReactionAsync(IMessage msg, ulong userId, IEmote emote, BaseDiscordClient client, RequestOptions options) { await client.ApiClient.RemoveReactionAsync(msg.Channel.Id, msg.Id, userId, emote is Emote e ? $"{e.Name}:{e.Id}" : UrlEncode(emote.Name), options).ConfigureAwait(false); } + public static async Task RemoveAllReactionsAsync(ulong channelId, ulong messageId, BaseDiscordClient client, RequestOptions options) + { + await client.ApiClient.RemoveAllReactionsAsync(channelId, messageId, options).ConfigureAwait(false); + } + public static async Task RemoveAllReactionsAsync(IMessage msg, BaseDiscordClient client, RequestOptions options) { await client.ApiClient.RemoveAllReactionsAsync(msg.Channel.Id, msg.Id, options).ConfigureAwait(false); } + public static async Task RemoveAllReactionsForEmoteAsync(ulong channelId, ulong messageId, IEmote emote, BaseDiscordClient client, RequestOptions options) + { + await client.ApiClient.RemoveAllReactionsForEmoteAsync(channelId, messageId, emote is Emote e ? $"{e.Name}:{e.Id}" : UrlEncode(emote.Name), options).ConfigureAwait(false); + } + public static async Task RemoveAllReactionsForEmoteAsync(IMessage msg, IEmote emote, BaseDiscordClient client, RequestOptions options) { await client.ApiClient.RemoveAllReactionsForEmoteAsync(msg.Channel.Id, msg.Id, emote is Emote e ? $"{e.Name}:{e.Id}" : UrlEncode(emote.Name), options).ConfigureAwait(false); From 365a848f7af43fdb7b15903fea89676c04bf8712 Mon Sep 17 00:00:00 2001 From: Paulo Date: Thu, 29 Apr 2021 11:33:39 -0300 Subject: [PATCH 113/212] (ifcbrk) feature: Add ModifyMessageAsync to IMessageChannel (#1830) --- .../Entities/Channels/IMessageChannel.cs | 15 +++++++ .../Entities/Channels/ChannelHelper.cs | 7 ++++ .../Entities/Channels/RestDMChannel.cs | 4 ++ .../Entities/Channels/RestGroupChannel.cs | 4 ++ .../Entities/Channels/RestTextChannel.cs | 4 ++ .../Entities/Messages/MessageHelper.cs | 42 +++++++++++++++++++ .../Entities/Channels/SocketDMChannel.cs | 4 ++ .../Entities/Channels/SocketGroupChannel.cs | 4 ++ .../Entities/Channels/SocketTextChannel.cs | 4 ++ .../MockedEntities/MockedDMChannel.cs | 5 +++ .../MockedEntities/MockedGroupChannel.cs | 5 +++ .../MockedEntities/MockedTextChannel.cs | 5 +++ 12 files changed, 103 insertions(+) diff --git a/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs b/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs index abd20e4f0..e60eb9c13 100644 --- a/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs +++ b/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs @@ -257,6 +257,21 @@ namespace Discord /// Task DeleteMessageAsync(IMessage message, RequestOptions options = null); + /// + /// Modifies a message. + /// + /// + /// This method modifies this message with the specified properties. To see an example of this + /// method and what properties are available, please refer to . + /// + /// The snowflake identifier of the message that would be changed. + /// A delegate containing the properties to modify the message with. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous modification operation. + /// + Task ModifyMessageAsync(ulong messageId, Action func, RequestOptions options = null); + /// /// Broadcasts the "user is typing" message to all users in this channel, lasting 10 seconds. /// diff --git a/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs b/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs index c1d0ac294..7c4edb43e 100644 --- a/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs +++ b/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs @@ -286,6 +286,13 @@ namespace Discord.Rest return RestUserMessage.Create(client, channel, client.CurrentUser, model); } + public static async Task ModifyMessageAsync(IMessageChannel channel, ulong messageId, Action func, + BaseDiscordClient client, RequestOptions options) + { + var msgModel = await MessageHelper.ModifyAsync(channel.Id, messageId, client, func, options).ConfigureAwait(false); + return RestUserMessage.Create(client, channel, msgModel.Author.IsSpecified ? RestUser.Create(client, msgModel.Author.Value) : client.CurrentUser, msgModel); + } + public static Task DeleteMessageAsync(IMessageChannel channel, ulong messageId, BaseDiscordClient client, RequestOptions options) => MessageHelper.DeleteAsync(channel.Id, messageId, client, options); diff --git a/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs index d59a10fb5..6ccfd204c 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs @@ -135,6 +135,10 @@ namespace Discord.Rest public Task DeleteMessageAsync(IMessage message, RequestOptions options = null) => ChannelHelper.DeleteMessageAsync(this, message.Id, Discord, options); + /// + public async Task ModifyMessageAsync(ulong messageId, Action func, RequestOptions options = null) + => await ChannelHelper.ModifyMessageAsync(this, messageId, func, Discord, options).ConfigureAwait(false); + /// public Task TriggerTypingAsync(RequestOptions options = null) => ChannelHelper.TriggerTypingAsync(this, Discord, options); diff --git a/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs index 666d6a4f4..2b0ab8b42 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs @@ -93,6 +93,10 @@ namespace Discord.Rest public Task DeleteMessageAsync(IMessage message, RequestOptions options = null) => ChannelHelper.DeleteMessageAsync(this, message.Id, Discord, options); + /// + public async Task ModifyMessageAsync(ulong messageId, Action func, RequestOptions options = null) + => await ChannelHelper.ModifyMessageAsync(this, messageId, func, Discord, options).ConfigureAwait(false); + /// /// Message content is too long, length must be less or equal to . public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null) diff --git a/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs index fdc4b7988..c6d0b0509 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs @@ -152,6 +152,10 @@ namespace Discord.Rest public Task DeleteMessagesAsync(IEnumerable messageIds, RequestOptions options = null) => ChannelHelper.DeleteMessagesAsync(this, Discord, messageIds, options); + /// + public async Task ModifyMessageAsync(ulong messageId, Action func, RequestOptions options = null) + => await ChannelHelper.ModifyMessageAsync(this, messageId, func, Discord, options).ConfigureAwait(false); + /// public Task TriggerTypingAsync(RequestOptions options = null) => ChannelHelper.TriggerTypingAsync(this, Discord, options); diff --git a/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs b/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs index b2584c8c1..1bc284836 100644 --- a/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs +++ b/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs @@ -71,6 +71,48 @@ namespace Discord.Rest return await client.ApiClient.ModifyMessageAsync(msg.Channel.Id, msg.Id, apiArgs, options).ConfigureAwait(false); } + public static async Task ModifyAsync(ulong channelId, ulong msgId, BaseDiscordClient client, Action func, + RequestOptions options) + { + var args = new MessageProperties(); + func(args); + + if ((args.Content.IsSpecified && string.IsNullOrEmpty(args.Content.Value)) && (args.Embed.IsSpecified && args.Embed.Value == null)) + Preconditions.NotNullOrEmpty(args.Content.IsSpecified ? args.Content.Value : string.Empty, nameof(args.Content)); + + if (args.AllowedMentions.IsSpecified) + { + AllowedMentions allowedMentions = args.AllowedMentions.Value; + 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."); + + // 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.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Users) && + allowedMentions.UserIds != null && allowedMentions.UserIds.Count > 0) + { + throw new ArgumentException("The Users flag is mutually exclusive with the list of User Ids.", nameof(allowedMentions)); + } + + if (allowedMentions.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Roles) && + allowedMentions.RoleIds != null && allowedMentions.RoleIds.Count > 0) + { + throw new ArgumentException("The Roles flag is mutually exclusive with the list of Role Ids.", nameof(allowedMentions)); + } + } + } + + var apiArgs = new API.Rest.ModifyMessageParams + { + Content = args.Content, + Embed = args.Embed.IsSpecified ? args.Embed.Value.ToModel() : Optional.Create(), + Flags = args.Flags.IsSpecified ? args.Flags.Value : Optional.Create(), + AllowedMentions = args.AllowedMentions.IsSpecified ? args.AllowedMentions.Value.ToModel() : Optional.Create(), + }; + return await client.ApiClient.ModifyMessageAsync(channelId, msgId, apiArgs, options).ConfigureAwait(false); + } + public static Task DeleteAsync(IMessage msg, BaseDiscordClient client, RequestOptions options) => DeleteAsync(msg.Channel.Id, msg.Id, client, options); diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs index c123a9d4e..5de417036 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs @@ -152,6 +152,10 @@ namespace Discord.WebSocket public Task DeleteMessageAsync(IMessage message, RequestOptions options = null) => ChannelHelper.DeleteMessageAsync(this, message.Id, Discord, options); + /// + public async Task ModifyMessageAsync(ulong messageId, Action func, RequestOptions options = null) + => await ChannelHelper.ModifyMessageAsync(this, messageId, func, Discord, options).ConfigureAwait(false); + /// public Task TriggerTypingAsync(RequestOptions options = null) => ChannelHelper.TriggerTypingAsync(this, Discord, options); diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs index dc5ac4222..ab8c76aeb 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs @@ -180,6 +180,10 @@ namespace Discord.WebSocket public Task DeleteMessageAsync(IMessage message, RequestOptions options = null) => ChannelHelper.DeleteMessageAsync(this, message.Id, Discord, options); + /// + public async Task ModifyMessageAsync(ulong messageId, Action func, RequestOptions options = null) + => await ChannelHelper.ModifyMessageAsync(this, messageId, func, Discord, options).ConfigureAwait(false); + /// public Task TriggerTypingAsync(RequestOptions options = null) => ChannelHelper.TriggerTypingAsync(this, Discord, options); diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs index d7d918f9f..71a20c198 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs @@ -180,6 +180,10 @@ namespace Discord.WebSocket public Task DeleteMessagesAsync(IEnumerable messageIds, RequestOptions options = null) => ChannelHelper.DeleteMessagesAsync(this, Discord, messageIds, options); + /// + public async Task ModifyMessageAsync(ulong messageId, Action func, RequestOptions options = null) + => await ChannelHelper.ModifyMessageAsync(this, messageId, func, Discord, options).ConfigureAwait(false); + /// public Task DeleteMessageAsync(ulong messageId, RequestOptions options = null) => ChannelHelper.DeleteMessageAsync(this, messageId, Discord, options); diff --git a/test/Discord.Net.Tests.Unit/MockedEntities/MockedDMChannel.cs b/test/Discord.Net.Tests.Unit/MockedEntities/MockedDMChannel.cs index f169fb717..593b9201a 100644 --- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedDMChannel.cs +++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedDMChannel.cs @@ -33,6 +33,11 @@ namespace Discord throw new NotImplementedException(); } + public Task ModifyMessageAsync(ulong messageId, Action func, RequestOptions options = null) + { + throw new NotImplementedException(); + } + public IDisposable EnterTypingState(RequestOptions options = null) { throw new NotImplementedException(); diff --git a/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs b/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs index e662d628a..6daf6a9c8 100644 --- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs +++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs @@ -31,6 +31,11 @@ namespace Discord throw new NotImplementedException(); } + public Task ModifyMessageAsync(ulong messageId, Action func, RequestOptions options = null) + { + throw new NotImplementedException(); + } + public Task DisconnectAsync() { throw new NotImplementedException(); diff --git a/test/Discord.Net.Tests.Unit/MockedEntities/MockedTextChannel.cs b/test/Discord.Net.Tests.Unit/MockedEntities/MockedTextChannel.cs index fbaaf9a18..51aece5f2 100644 --- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedTextChannel.cs +++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedTextChannel.cs @@ -77,6 +77,11 @@ namespace Discord throw new NotImplementedException(); } + public Task ModifyMessageAsync(ulong messageId, Action func, RequestOptions options = null) + { + throw new NotImplementedException(); + } + public IDisposable EnterTypingState(RequestOptions options = null) { throw new NotImplementedException(); From 4c9910cf71612cdc947f066b4e302788c912bbbc Mon Sep 17 00:00:00 2001 From: Zack Broderson Date: Thu, 29 Apr 2021 10:34:52 -0400 Subject: [PATCH 114/212] (ifcbrk) feature: Add ability to add/remove roles by id (#1757) * Scaffold Add/Remove roles by id. (needs impl & docs) * Add docs * Add implementation * Expose Add/Remove role endpoints * Formatting * Fix wrong method call --- .../Entities/Users/IGuildUser.cs | 37 ++++++++++++++++++- src/Discord.Net.Rest/ClientHelper.cs | 16 +++++--- src/Discord.Net.Rest/DiscordRestClient.cs | 4 ++ .../Entities/Users/RestGuildUser.cs | 20 ++++++++-- .../Entities/Users/RestWebhookUser.cs | 28 +++++++++----- .../Entities/Users/UserHelper.cs | 12 +++--- .../Entities/Users/SocketGuildUser.cs | 22 ++++++++--- .../Entities/Users/SocketWebhookUser.cs | 34 +++++++++++++---- 8 files changed, 134 insertions(+), 39 deletions(-) diff --git a/src/Discord.Net.Core/Entities/Users/IGuildUser.cs b/src/Discord.Net.Core/Entities/Users/IGuildUser.cs index 582e9e7a7..492cb9566 100644 --- a/src/Discord.Net.Core/Entities/Users/IGuildUser.cs +++ b/src/Discord.Net.Core/Entities/Users/IGuildUser.cs @@ -113,7 +113,15 @@ namespace Discord /// A task that represents the asynchronous modification operation. /// Task ModifyAsync(Action func, RequestOptions options = null); - + /// + /// Adds the specified role to this user in the guild. + /// + /// The role to be added to the user. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous role addition operation. + /// + Task AddRoleAsync(ulong roleId, RequestOptions options = null); /// /// Adds the specified role to this user in the guild. /// @@ -124,6 +132,15 @@ namespace Discord /// Task AddRoleAsync(IRole role, RequestOptions options = null); /// + /// Adds the specified to this user in the guild. + /// + /// The roles to be added to the user. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous role addition operation. + /// + Task AddRolesAsync(IEnumerable roleIds, RequestOptions options = null); + /// /// Adds the specified to this user in the guild. /// /// The roles to be added to the user. @@ -133,6 +150,15 @@ namespace Discord /// Task AddRolesAsync(IEnumerable roles, RequestOptions options = null); /// + /// Removes the specified from this user in the guild. + /// + /// The role to be removed from the user. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous role removal operation. + /// + Task RemoveRoleAsync(ulong roleId, RequestOptions options = null); + /// /// Removes the specified from this user in the guild. /// /// The role to be removed from the user. @@ -142,6 +168,15 @@ namespace Discord /// Task RemoveRoleAsync(IRole role, RequestOptions options = null); /// + /// Removes the specified from this user in the guild. + /// + /// The roles to be removed from the user. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous role removal operation. + /// + Task RemoveRolesAsync(IEnumerable roleIds, RequestOptions options = null); + /// /// Removes the specified from this user in the guild. /// /// The roles to be removed from the user. diff --git a/src/Discord.Net.Rest/ClientHelper.cs b/src/Discord.Net.Rest/ClientHelper.cs index 8910e999a..b60c02cab 100644 --- a/src/Discord.Net.Rest/ClientHelper.cs +++ b/src/Discord.Net.Rest/ClientHelper.cs @@ -17,7 +17,7 @@ namespace Discord.Rest return RestApplication.Create(client, model); } - public static async Task GetChannelAsync(BaseDiscordClient client, + public static async Task GetChannelAsync(BaseDiscordClient client, ulong id, RequestOptions options) { var model = await client.ApiClient.GetChannelAsync(id, options).ConfigureAwait(false); @@ -45,13 +45,13 @@ namespace Discord.Rest .Where(x => x.Type == ChannelType.Group) .Select(x => RestGroupChannel.Create(client, x)).ToImmutableArray(); } - + public static async Task> GetConnectionsAsync(BaseDiscordClient client, RequestOptions options) { var models = await client.ApiClient.GetMyConnectionsAsync(options).ConfigureAwait(false); return models.Select(RestConnection.Create).ToImmutableArray(); } - + public static async Task GetInviteAsync(BaseDiscordClient client, string inviteId, RequestOptions options) { @@ -60,7 +60,7 @@ namespace Discord.Rest return RestInviteMetadata.Create(client, null, null, model); return null; } - + public static async Task GetGuildAsync(BaseDiscordClient client, ulong id, bool withCounts, RequestOptions options) { @@ -85,7 +85,7 @@ namespace Discord.Rest return RestGuildWidget.Create(model); return null; } - public static IAsyncEnumerable> GetGuildSummariesAsync(BaseDiscordClient client, + public static IAsyncEnumerable> GetGuildSummariesAsync(BaseDiscordClient client, ulong? fromGuildId, int? limit, RequestOptions options) { return new PagedAsyncEnumerable( @@ -136,7 +136,7 @@ namespace Discord.Rest var model = await client.ApiClient.CreateGuildAsync(args, options).ConfigureAwait(false); return RestGuild.Create(client, model); } - + public static async Task GetUserAsync(BaseDiscordClient client, ulong id, RequestOptions options) { @@ -201,5 +201,9 @@ namespace Discord.Rest } }; } + public static Task AddRoleAsync(BaseDiscordClient client, ulong guildId, ulong userId, ulong roleId, RequestOptions options = null) + => client.ApiClient.AddRoleAsync(guildId, userId, roleId, options); + public static Task RemoveRoleAsync(BaseDiscordClient client, ulong guildId, ulong userId, ulong roleId, RequestOptions options = null) + => client.ApiClient.RemoveRoleAsync(guildId, userId, roleId, options); } } diff --git a/src/Discord.Net.Rest/DiscordRestClient.cs b/src/Discord.Net.Rest/DiscordRestClient.cs index cdf312c3d..7eff7363c 100644 --- a/src/Discord.Net.Rest/DiscordRestClient.cs +++ b/src/Discord.Net.Rest/DiscordRestClient.cs @@ -107,6 +107,10 @@ namespace Discord.Rest => ClientHelper.GetVoiceRegionAsync(this, id, options); public Task GetWebhookAsync(ulong id, RequestOptions options = null) => ClientHelper.GetWebhookAsync(this, id, options); + public Task AddRoleAsync(ulong guildId, ulong userId, ulong roleId) + => ClientHelper.AddRoleAsync(this, guildId, userId, roleId); + public Task RemoveRoleAsync(ulong guildId, ulong userId, ulong roleId) + => ClientHelper.RemoveRoleAsync(this, guildId, userId, roleId); public Task AddReactionAsync(ulong channelId, ulong messageId, IEmote emote, RequestOptions options = null) => MessageHelper.AddReactionAsync(channelId, messageId, emote, this, options); diff --git a/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs b/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs index 4a6bc1025..6e6bbe09c 100644 --- a/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs +++ b/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs @@ -112,17 +112,29 @@ namespace Discord.Rest public Task KickAsync(string reason = null, RequestOptions options = null) => UserHelper.KickAsync(this, Discord, reason, options); /// + public Task AddRoleAsync(ulong roleId, RequestOptions options = null) + => AddRolesAsync(new[] { roleId }, options); + /// public Task AddRoleAsync(IRole role, RequestOptions options = null) - => AddRolesAsync(new[] { role }, options); + => AddRoleAsync(role.Id, options); + /// + public Task AddRolesAsync(IEnumerable roleIds, RequestOptions options = null) + => UserHelper.AddRolesAsync(this, Discord, roleIds, options); /// public Task AddRolesAsync(IEnumerable roles, RequestOptions options = null) - => UserHelper.AddRolesAsync(this, Discord, roles, options); + => AddRolesAsync(roles.Select(x => x.Id), options); + /// + public Task RemoveRoleAsync(ulong roleId, RequestOptions options = null) + => RemoveRolesAsync(new[] { roleId }, options); /// public Task RemoveRoleAsync(IRole role, RequestOptions options = null) - => RemoveRolesAsync(new[] { role }, options); + => RemoveRoleAsync(role.Id, options); + /// + public Task RemoveRolesAsync(IEnumerable roleIds, RequestOptions options = null) + => UserHelper.RemoveRolesAsync(this, Discord, roleIds, options); /// public Task RemoveRolesAsync(IEnumerable roles, RequestOptions options = null) - => UserHelper.RemoveRolesAsync(this, Discord, roles, options); + => RemoveRolesAsync(roles.Select(x => x.Id)); /// /// Resolving permissions requires the parent guild to be downloaded. diff --git a/src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs b/src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs index a06916c9b..2131fec93 100644 --- a/src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs +++ b/src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs @@ -59,27 +59,35 @@ namespace Discord.Rest /// ChannelPermissions IGuildUser.GetPermissions(IGuildChannel channel) => Permissions.ToChannelPerms(channel, GuildPermissions.Webhook.RawValue); /// - Task IGuildUser.KickAsync(string reason, RequestOptions options) => + Task IGuildUser.KickAsync(string reason, RequestOptions options) => throw new NotSupportedException("Webhook users cannot be kicked."); /// - Task IGuildUser.ModifyAsync(Action func, RequestOptions options) => + Task IGuildUser.ModifyAsync(Action func, RequestOptions options) => throw new NotSupportedException("Webhook users cannot be modified."); - /// - Task IGuildUser.AddRoleAsync(IRole role, RequestOptions options) => + Task IGuildUser.AddRoleAsync(ulong role, RequestOptions options) => throw new NotSupportedException("Roles are not supported on webhook users."); - /// - Task IGuildUser.AddRolesAsync(IEnumerable roles, RequestOptions options) => + Task IGuildUser.AddRoleAsync(IRole role, RequestOptions options) => throw new NotSupportedException("Roles are not supported on webhook users."); - /// - Task IGuildUser.RemoveRoleAsync(IRole role, RequestOptions options) => + Task IGuildUser.AddRolesAsync(IEnumerable roles, RequestOptions options) => + throw new NotSupportedException("Roles are not supported on webhook users."); + /// + Task IGuildUser.AddRolesAsync(IEnumerable roles, RequestOptions options) => + throw new NotSupportedException("Roles are not supported on webhook users."); + /// + Task IGuildUser.RemoveRoleAsync(ulong role, RequestOptions options) => + throw new NotSupportedException("Roles are not supported on webhook users."); + /// + Task IGuildUser.RemoveRoleAsync(IRole role, RequestOptions options) => + throw new NotSupportedException("Roles are not supported on webhook users."); + /// + Task IGuildUser.RemoveRolesAsync(IEnumerable roles, RequestOptions options) => throw new NotSupportedException("Roles are not supported on webhook users."); - /// - Task IGuildUser.RemoveRolesAsync(IEnumerable roles, RequestOptions options) => + Task IGuildUser.RemoveRolesAsync(IEnumerable roles, RequestOptions options) => throw new NotSupportedException("Roles are not supported on webhook users."); //IVoiceState diff --git a/src/Discord.Net.Rest/Entities/Users/UserHelper.cs b/src/Discord.Net.Rest/Entities/Users/UserHelper.cs index 58e8cd417..3a19fcfc1 100644 --- a/src/Discord.Net.Rest/Entities/Users/UserHelper.cs +++ b/src/Discord.Net.Rest/Entities/Users/UserHelper.cs @@ -73,16 +73,16 @@ namespace Discord.Rest return RestDMChannel.Create(client, await client.ApiClient.CreateDMChannelAsync(args, options).ConfigureAwait(false)); } - public static async Task AddRolesAsync(IGuildUser user, BaseDiscordClient client, IEnumerable roles, RequestOptions options) + public static async Task AddRolesAsync(IGuildUser user, BaseDiscordClient client, IEnumerable roleIds, RequestOptions options) { - foreach (var role in roles) - await client.ApiClient.AddRoleAsync(user.Guild.Id, user.Id, role.Id, options).ConfigureAwait(false); + foreach (var roleId in roleIds) + await client.ApiClient.AddRoleAsync(user.Guild.Id, user.Id, roleId, options).ConfigureAwait(false); } - public static async Task RemoveRolesAsync(IGuildUser user, BaseDiscordClient client, IEnumerable roles, RequestOptions options) + public static async Task RemoveRolesAsync(IGuildUser user, BaseDiscordClient client, IEnumerable roleIds, RequestOptions options) { - foreach (var role in roles) - await client.ApiClient.RemoveRoleAsync(user.Guild.Id, user.Id, role.Id, options).ConfigureAwait(false); + foreach (var roleId in roleIds) + await client.ApiClient.RemoveRoleAsync(user.Guild.Id, user.Id, roleId, options).ConfigureAwait(false); } } } diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs index c0a681d9d..9263fe642 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs @@ -63,7 +63,7 @@ namespace Discord.WebSocket /// /// Returns a collection of roles that the user possesses. /// - public IReadOnlyCollection Roles + public IReadOnlyCollection Roles => _roleIds.Select(id => Guild.GetRole(id)).Where(x => x != null).ToReadOnlyCollection(() => _roleIds.Length); /// /// Returns the voice channel the user is in, or null if none. @@ -177,17 +177,29 @@ namespace Discord.WebSocket public Task KickAsync(string reason = null, RequestOptions options = null) => UserHelper.KickAsync(this, Discord, reason, options); /// + public Task AddRoleAsync(ulong roleId, RequestOptions options = null) + => AddRolesAsync(new[] { roleId }, options); + /// public Task AddRoleAsync(IRole role, RequestOptions options = null) - => AddRolesAsync(new[] { role }, options); + => AddRoleAsync(role.Id, options); + /// + public Task AddRolesAsync(IEnumerable roleIds, RequestOptions options = null) + => UserHelper.AddRolesAsync(this, Discord, roleIds, options); /// public Task AddRolesAsync(IEnumerable roles, RequestOptions options = null) - => UserHelper.AddRolesAsync(this, Discord, roles, options); + => AddRolesAsync(roles.Select(x => x.Id), options); + /// + public Task RemoveRoleAsync(ulong roleId, RequestOptions options = null) + => RemoveRolesAsync(new[] { roleId }, options); /// public Task RemoveRoleAsync(IRole role, RequestOptions options = null) - => RemoveRolesAsync(new[] { role }, options); + => RemoveRoleAsync(role.Id, options); + /// + public Task RemoveRolesAsync(IEnumerable roleIds, RequestOptions options = null) + => UserHelper.RemoveRolesAsync(this, Discord, roleIds, options); /// public Task RemoveRolesAsync(IEnumerable roles, RequestOptions options = null) - => UserHelper.RemoveRolesAsync(this, Discord, roles, options); + => RemoveRolesAsync(roles.Select(x => x.Id)); /// public ChannelPermissions GetPermissions(IGuildChannel channel) diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs index 5103aa8b3..c22164f95 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs @@ -31,7 +31,7 @@ namespace Discord.WebSocket public override bool IsWebhook => true; /// internal override SocketPresence Presence { get { return new SocketPresence(UserStatus.Offline, null, null, null); } set { } } - internal override SocketGlobalUser GlobalUser => + internal override SocketGlobalUser GlobalUser => throw new NotSupportedException(); internal SocketWebhookUser(SocketGuild guild, ulong id, ulong webhookId) @@ -73,32 +73,52 @@ namespace Discord.WebSocket ChannelPermissions IGuildUser.GetPermissions(IGuildChannel channel) => Permissions.ToChannelPerms(channel, GuildPermissions.Webhook.RawValue); /// /// Webhook users cannot be kicked. - Task IGuildUser.KickAsync(string reason, RequestOptions options) => + Task IGuildUser.KickAsync(string reason, RequestOptions options) => throw new NotSupportedException("Webhook users cannot be kicked."); /// /// Webhook users cannot be modified. - Task IGuildUser.ModifyAsync(Action func, RequestOptions options) => + Task IGuildUser.ModifyAsync(Action func, RequestOptions options) => throw new NotSupportedException("Webhook users cannot be modified."); /// /// Roles are not supported on webhook users. - Task IGuildUser.AddRoleAsync(IRole role, RequestOptions options) => + Task IGuildUser.AddRoleAsync(ulong roleId, RequestOptions options) => throw new NotSupportedException("Roles are not supported on webhook users."); /// /// Roles are not supported on webhook users. - Task IGuildUser.AddRolesAsync(IEnumerable roles, RequestOptions options) => + Task IGuildUser.AddRoleAsync(IRole role, RequestOptions options) => throw new NotSupportedException("Roles are not supported on webhook users."); /// /// Roles are not supported on webhook users. - Task IGuildUser.RemoveRoleAsync(IRole role, RequestOptions options) => + Task IGuildUser.AddRolesAsync(IEnumerable roleIds, RequestOptions options) => throw new NotSupportedException("Roles are not supported on webhook users."); /// /// Roles are not supported on webhook users. - Task IGuildUser.RemoveRolesAsync(IEnumerable roles, RequestOptions options) => + Task IGuildUser.AddRolesAsync(IEnumerable roles, RequestOptions options) => + throw new NotSupportedException("Roles are not supported on webhook users."); + + /// + /// Roles are not supported on webhook users. + Task IGuildUser.RemoveRoleAsync(ulong roleId, RequestOptions options) => + throw new NotSupportedException("Roles are not supported on webhook users."); + + /// + /// Roles are not supported on webhook users. + Task IGuildUser.RemoveRoleAsync(IRole role, RequestOptions options) => + throw new NotSupportedException("Roles are not supported on webhook users."); + + /// + /// Roles are not supported on webhook users. + Task IGuildUser.RemoveRolesAsync(IEnumerable roles, RequestOptions options) => + throw new NotSupportedException("Roles are not supported on webhook users."); + + /// + /// Roles are not supported on webhook users. + Task IGuildUser.RemoveRolesAsync(IEnumerable roles, RequestOptions options) => throw new NotSupportedException("Roles are not supported on webhook users."); //IVoiceState From 8afef8245cfd1f8b56956dd4b4577ed3c6904be5 Mon Sep 17 00:00:00 2001 From: moiph Date: Sat, 8 May 2021 11:45:53 -0700 Subject: [PATCH 115/212] fix: Cached message emoji cleanup at MESSAGE_REACTION_REMOVE_EMOJI (#1835) MESSAGE_REACTION_REMOVE_EMOJI events were triggering REST calls by invoking `RemoveAllReactionsForEmoteAsync` instead of `RemoveReactionsForEmote`, the latter being to handle cached message state cleanup. --- src/Discord.Net.WebSocket/DiscordSocketClient.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 520f69073..e284fd883 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -1482,7 +1482,7 @@ namespace Discord.WebSocket var cacheable = new Cacheable(cachedMsg, data.MessageId, isCached, async () => await channel.GetMessageAsync(data.MessageId).ConfigureAwait(false) as IUserMessage); var emote = data.Emoji.ToIEmote(); - cachedMsg?.RemoveAllReactionsForEmoteAsync(emote); + cachedMsg?.RemoveReactionsForEmote(emote); await TimedInvokeAsync(_reactionsRemovedForEmoteEvent, nameof(ReactionsRemovedForEmote), cacheable, channel, emote).ConfigureAwait(false); } From 4b8d4441c5ca2afe1d40aa0406025b3f7c5127ea Mon Sep 17 00:00:00 2001 From: Max <73736326+Max2408@users.noreply.github.com> Date: Sat, 22 May 2021 23:00:08 +0530 Subject: [PATCH 116/212] feature: Add Discord Certified Moderator user flag (#1844) This pull request adds the Discord Certified Moderator badge flag to the User Flags PR in discord-api-docs: https://github.com/discord/discord-api-docs/pull/2946 --- src/Discord.Net.Core/Entities/Users/UserProperties.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Discord.Net.Core/Entities/Users/UserProperties.cs b/src/Discord.Net.Core/Entities/Users/UserProperties.cs index b6deb744b..21c453dce 100644 --- a/src/Discord.Net.Core/Entities/Users/UserProperties.cs +++ b/src/Discord.Net.Core/Entities/Users/UserProperties.cs @@ -67,5 +67,9 @@ namespace Discord /// Flag given to users that developed bots and early verified their accounts. /// EarlyVerifiedBotDeveloper = 1 << 17, + /// + /// Flag given to users that are discord certified moderators who has give discord's exam. + /// + DiscordCertifiedModerator = 1 << 18, } } From 2ad0f0c2fe4d685442c40e62139c87a3256facdb Mon Sep 17 00:00:00 2001 From: Paulo Date: Sat, 22 May 2021 15:12:57 -0300 Subject: [PATCH 117/212] meta: 2.4.0 (#1845) --- CHANGELOG.md | 19 +++++++++++++++++++ Discord.Net.targets | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5988f90c3..21e37b295 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,24 @@ # Changelog +## [2.4.0] - 2021-05-22 +### Added +- #1726 Add stickers (91a9063) +- #1753 Webhook message edit & delete functionality (f67cd8e) +- #1757 Add ability to add/remove roles by id (4c9910c) +- #1781 Add GetEmotesAsync to IGuild (df23d57) +- #1801 Add missing property to MESSAGE_REACTION_ADD event (0715d7d) +- #1828 Add methods to interact with reactions without a message object (5b244f2) +- #1830 Add ModifyMessageAsync to IMessageChannel (365a848) +- #1844 Add Discord Certified Moderator user flag (4b8d444) + +### Fixed +- #1486 Add type reader when entity type reader exists (c46daaa) +- #1835 Cached message emoji cleanup at MESSAGE_REACTION_REMOVE_EMOJI (8afef82) + +### Misc +- #1778 Remove URI check from EmbedBuilder (25b04c4) +- #1800 Fix spelling in SnowflakeUtils.FromSnowflake (6aff419) + ## [2.3.1] - 2021-03-10 ### Fixed - #1761 Deadlock in DiscordShardedClient when Ready is never received (73e5cc2) diff --git a/Discord.Net.targets b/Discord.Net.targets index 7a48cf2a7..d08d55535 100644 --- a/Discord.Net.targets +++ b/Discord.Net.targets @@ -1,7 +1,7 @@ 2.4.0 - dev + latest Discord.Net Contributors discord;discordapp From 690bc3ff9d808da405b90ea13e0960f4cbc7eb1e Mon Sep 17 00:00:00 2001 From: Paulo Date: Sun, 23 May 2021 13:36:39 -0300 Subject: [PATCH 118/212] meta: Bump version to 3.0.0-dev (#1846) --- Discord.Net.targets | 4 ++-- src/Discord.Net/Discord.Net.nuspec | 32 +++++++++++++++--------------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/Discord.Net.targets b/Discord.Net.targets index d08d55535..febd921d1 100644 --- a/Discord.Net.targets +++ b/Discord.Net.targets @@ -1,7 +1,7 @@ - 2.4.0 - + 3.0.0 + dev latest Discord.Net Contributors discord;discordapp diff --git a/src/Discord.Net/Discord.Net.nuspec b/src/Discord.Net/Discord.Net.nuspec index b0fe17439..e3f0150f9 100644 --- a/src/Discord.Net/Discord.Net.nuspec +++ b/src/Discord.Net/Discord.Net.nuspec @@ -2,7 +2,7 @@ Discord.Net - 2.4.0$suffix$ + 3.0.0-dev$suffix$ Discord.Net Discord.Net Contributors foxbot @@ -14,25 +14,25 @@ https://github.com/RogueException/Discord.Net/raw/dev/docs/marketing/logo/PackageLogo.png - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + From 06a64b78771cca5798051e13141aed2246ccce40 Mon Sep 17 00:00:00 2001 From: Paulo Date: Mon, 24 May 2021 11:39:20 -0300 Subject: [PATCH 119/212] feature: Bump API version to 9 (#1847) * First changes to the config * Lots of changes to fit the new version * Remove PermissionTargetConverter --- src/Discord.Net.Core/DiscordConfig.cs | 16 +----- .../Entities/Guilds/IGuild.cs | 36 -------------- .../Entities/Guilds/PermissionTarget.cs | 4 +- .../Entities/Messages/IUserMessage.cs | 12 ----- .../Entities/Messages/MessageType.cs | 3 -- .../Entities/Permissions/GuildPermissions.cs | 3 ++ .../Permissions/OverwritePermissions.cs | 7 +++ .../Entities/Users/IPresence.cs | 4 -- src/Discord.Net.Core/GatewayIntents.cs | 11 +++++ src/Discord.Net.Core/RateLimitPrecision.cs | 18 ------- src/Discord.Net.Rest/API/Common/Guild.cs | 4 -- src/Discord.Net.Rest/API/Common/GuildEmbed.cs | 13 ----- src/Discord.Net.Rest/API/Common/Overwrite.cs | 4 +- src/Discord.Net.Rest/API/Common/Presence.cs | 2 - src/Discord.Net.Rest/API/Common/Role.cs | 2 +- src/Discord.Net.Rest/API/Common/UserGuild.cs | 4 +- .../Rest/ModifyChannelPermissionsParams.cs | 10 ++-- .../API/Rest/ModifyGuildRoleParams.cs | 4 +- .../API/Rest/SuppressEmbedParams.cs | 11 ----- src/Discord.Net.Rest/ClientHelper.cs | 8 --- src/Discord.Net.Rest/DiscordRestApiClient.cs | 43 +--------------- src/Discord.Net.Rest/DiscordRestClient.cs | 8 +-- .../Entities/Channels/ChannelHelper.cs | 20 ++++---- .../Entities/Guilds/GuildHelper.cs | 35 +++---------- .../Entities/Guilds/RestGuild.cs | 49 ------------------- .../Entities/Guilds/RestGuildEmbed.cs | 25 ---------- .../Entities/Messages/MessageHelper.cs | 9 ---- .../Entities/Messages/RestUserMessage.cs | 3 -- .../Entities/Roles/RoleHelper.cs | 4 +- .../Net/Converters/DiscordContractResolver.cs | 2 - .../Converters/PermissionTargetConverter.cs | 44 ----------------- .../API/Gateway/IdentifyParams.cs | 2 - src/Discord.Net.WebSocket/BaseSocketClient.cs | 1 - .../DiscordShardedClient.cs | 3 +- .../DiscordSocketApiClient.cs | 10 ++-- .../DiscordSocketClient.cs | 21 ++++---- .../DiscordSocketConfig.cs | 11 ++--- .../Entities/Guilds/SocketGuild.cs | 33 ------------- .../Entities/Messages/SocketUserMessage.cs | 3 -- .../Entities/Users/SocketPresence.cs | 10 ++-- .../Entities/Users/SocketUnknownUser.cs | 2 +- .../Entities/Users/SocketUser.cs | 2 - .../Entities/Users/SocketWebhookUser.cs | 2 +- 43 files changed, 82 insertions(+), 436 deletions(-) delete mode 100644 src/Discord.Net.Core/RateLimitPrecision.cs delete mode 100644 src/Discord.Net.Rest/API/Common/GuildEmbed.cs delete mode 100644 src/Discord.Net.Rest/API/Rest/SuppressEmbedParams.cs delete mode 100644 src/Discord.Net.Rest/Entities/Guilds/RestGuildEmbed.cs delete mode 100644 src/Discord.Net.Rest/Net/Converters/PermissionTargetConverter.cs diff --git a/src/Discord.Net.Core/DiscordConfig.cs b/src/Discord.Net.Core/DiscordConfig.cs index 429ad7b0c..da8525644 100644 --- a/src/Discord.Net.Core/DiscordConfig.cs +++ b/src/Discord.Net.Core/DiscordConfig.cs @@ -16,7 +16,7 @@ namespace Discord /// Discord API documentation /// . /// - public const int APIVersion = 6; + public const int APIVersion = 9; /// /// Returns the Voice API version Discord.Net uses. /// @@ -43,7 +43,7 @@ namespace Discord /// /// The user agent used in each Discord.Net request. /// - public static string UserAgent { get; } = $"DiscordBot (https://github.com/RogueException/Discord.Net, v{Version})"; + public static string UserAgent { get; } = $"DiscordBot (https://github.com/discord-net/Discord.Net, v{Version})"; /// /// Returns the base Discord API URL. /// @@ -141,18 +141,6 @@ namespace Discord /// internal bool DisplayInitialLog { get; set; } = true; - /// - /// Gets or sets the level of precision of the rate limit reset response. - /// - /// - /// If set to , this value will be rounded up to the - /// nearest second. - /// - /// - /// The currently set . - /// - public RateLimitPrecision RateLimitPrecision { get; set; } = RateLimitPrecision.Millisecond; - /// /// Gets or sets whether or not rate-limits should use the system clock. /// diff --git a/src/Discord.Net.Core/Entities/Guilds/IGuild.cs b/src/Discord.Net.Core/Entities/Guilds/IGuild.cs index 36d735157..0bbd64786 100644 --- a/src/Discord.Net.Core/Entities/Guilds/IGuild.cs +++ b/src/Discord.Net.Core/Entities/Guilds/IGuild.cs @@ -28,13 +28,6 @@ namespace Discord /// int AFKTimeout { get; } /// - /// Gets a value that indicates whether this guild is embeddable (i.e. can use widget). - /// - /// - /// if this guild has a widget enabled; otherwise . - /// - bool IsEmbeddable { get; } - /// /// Gets a value that indicates whether this guild has the widget enabled. /// /// @@ -147,14 +140,6 @@ namespace Discord /// ulong DefaultChannelId { get; } /// - /// Gets the ID of the widget embed channel of this guild. - /// - /// - /// A representing the snowflake identifier of the embedded channel found within the - /// widget settings of this guild; if none is set. - /// - ulong? EmbedChannelId { get; } - /// /// Gets the ID of the channel assigned to the widget of this guild. /// /// @@ -364,16 +349,6 @@ namespace Discord /// Task ModifyAsync(Action func, RequestOptions options = null); /// - /// Modifies this guild's embed channel. - /// - /// The delegate containing the properties to modify the guild widget with. - /// The options to be used when sending the request. - /// - /// A task that represents the asynchronous modification operation. - /// - [Obsolete("This endpoint is deprecated, use ModifyWidgetAsync instead.")] - Task ModifyEmbedAsync(Action func, RequestOptions options = null); - /// /// Modifies this guild's widget. /// /// The delegate containing the properties to modify the guild widget with. @@ -592,17 +567,6 @@ namespace Discord /// Task GetDefaultChannelAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); /// - /// Gets the embed channel (i.e. the channel set in the guild's widget settings) in this guild. - /// - /// The that determines whether the object should be fetched from cache. - /// The options to be used when sending the request. - /// - /// A task that represents the asynchronous get operation. The task result contains the embed channel set - /// within the server's widget settings; if none is set. - /// - [Obsolete("This endpoint is deprecated, use GetWidgetChannelAsync instead.")] - Task GetEmbedChannelAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); - /// /// Gets the widget channel (i.e. the channel set in the guild's widget settings) in this guild. /// /// The that determines whether the object should be fetched from cache. diff --git a/src/Discord.Net.Core/Entities/Guilds/PermissionTarget.cs b/src/Discord.Net.Core/Entities/Guilds/PermissionTarget.cs index 3da2fb147..fb759e4c5 100644 --- a/src/Discord.Net.Core/Entities/Guilds/PermissionTarget.cs +++ b/src/Discord.Net.Core/Entities/Guilds/PermissionTarget.cs @@ -8,10 +8,10 @@ namespace Discord /// /// The target of the permission is a role. /// - Role, + Role = 0, /// /// The target of the permission is a user. /// - User + User = 1, } } diff --git a/src/Discord.Net.Core/Entities/Messages/IUserMessage.cs b/src/Discord.Net.Core/Entities/Messages/IUserMessage.cs index 1589e2ae5..c2d0e13bc 100644 --- a/src/Discord.Net.Core/Entities/Messages/IUserMessage.cs +++ b/src/Discord.Net.Core/Entities/Messages/IUserMessage.cs @@ -36,18 +36,6 @@ namespace Discord /// Task ModifyAsync(Action func, RequestOptions options = null); /// - /// Modifies the suppression of this message. - /// - /// - /// This method modifies whether or not embeds in this message are suppressed (hidden). - /// - /// Whether or not embeds in this message should be suppressed. - /// The options to be used when sending the request. - /// - /// A task that represents the asynchronous modification operation. - /// - Task ModifySuppressionAsync(bool suppressEmbeds, RequestOptions options = null); - /// /// Adds this message to its channel's pinned messages. /// /// The options to be used when sending the request. diff --git a/src/Discord.Net.Core/Entities/Messages/MessageType.cs b/src/Discord.Net.Core/Entities/Messages/MessageType.cs index ad1f3a3cd..bfe763cad 100644 --- a/src/Discord.Net.Core/Entities/Messages/MessageType.cs +++ b/src/Discord.Net.Core/Entities/Messages/MessageType.cs @@ -60,9 +60,6 @@ namespace Discord /// /// The message is an inline reply. /// - /// - /// Only available in API v8. - /// Reply = 19, } } diff --git a/src/Discord.Net.Core/Entities/Permissions/GuildPermissions.cs b/src/Discord.Net.Core/Entities/Permissions/GuildPermissions.cs index ba6757fc6..ef4e40a11 100644 --- a/src/Discord.Net.Core/Entities/Permissions/GuildPermissions.cs +++ b/src/Discord.Net.Core/Entities/Permissions/GuildPermissions.cs @@ -90,6 +90,9 @@ namespace Discord /// Creates a new with the provided packed value. public GuildPermissions(ulong rawValue) { RawValue = rawValue; } + /// Creates a new with the provided packed value after converting to ulong. + public GuildPermissions(string rawValue) { RawValue = ulong.Parse(rawValue); } + private GuildPermissions(ulong initialValue, bool? createInstantInvite = null, bool? kickMembers = null, diff --git a/src/Discord.Net.Core/Entities/Permissions/OverwritePermissions.cs b/src/Discord.Net.Core/Entities/Permissions/OverwritePermissions.cs index 7876d49ff..6ee79b427 100644 --- a/src/Discord.Net.Core/Entities/Permissions/OverwritePermissions.cs +++ b/src/Discord.Net.Core/Entities/Permissions/OverwritePermissions.cs @@ -93,6 +93,13 @@ namespace Discord DenyValue = denyValue; } + /// Creates a new OverwritePermissions with the provided allow and deny packed values after converting to ulong. + public OverwritePermissions(string allowValue, string denyValue) + { + AllowValue = ulong.Parse(allowValue); + DenyValue = ulong.Parse(denyValue); + } + private OverwritePermissions(ulong allowValue, ulong denyValue, PermValue? createInstantInvite = null, PermValue? manageChannel = null, diff --git a/src/Discord.Net.Core/Entities/Users/IPresence.cs b/src/Discord.Net.Core/Entities/Users/IPresence.cs index a17ac0df2..6972037f0 100644 --- a/src/Discord.Net.Core/Entities/Users/IPresence.cs +++ b/src/Discord.Net.Core/Entities/Users/IPresence.cs @@ -7,10 +7,6 @@ namespace Discord /// public interface IPresence { - /// - /// Gets the activity this user is currently doing. - /// - IActivity Activity { get; } /// /// Gets the current status of this user. /// diff --git a/src/Discord.Net.Core/GatewayIntents.cs b/src/Discord.Net.Core/GatewayIntents.cs index f3dc5ceb9..6976806b2 100644 --- a/src/Discord.Net.Core/GatewayIntents.cs +++ b/src/Discord.Net.Core/GatewayIntents.cs @@ -39,5 +39,16 @@ namespace Discord DirectMessageReactions = 1 << 13, /// This intent includes TYPING_START DirectMessageTyping = 1 << 14, + /// + /// This intent includes all but and + /// that are privileged must be enabled for the application. + /// + AllUnprivileged = Guilds | GuildBans | GuildEmojis | GuildIntegrations | GuildWebhooks | GuildInvites | + GuildVoiceStates | GuildMessages | GuildMessageReactions | GuildMessageTyping | DirectMessages | + DirectMessageReactions | DirectMessageTyping, + /// + /// This intent includes all of them, including privileged ones. + /// + All = AllUnprivileged | GuildMembers | GuildPresences } } diff --git a/src/Discord.Net.Core/RateLimitPrecision.cs b/src/Discord.Net.Core/RateLimitPrecision.cs deleted file mode 100644 index fe3c1b90e..000000000 --- a/src/Discord.Net.Core/RateLimitPrecision.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Discord -{ - /// - /// Specifies the level of precision to request in the rate limit - /// response header. - /// - public enum RateLimitPrecision - { - /// - /// Specifies precision rounded up to the nearest whole second - /// - Second, - /// - /// Specifies precision rounded to the nearest millisecond. - /// - Millisecond - } -} diff --git a/src/Discord.Net.Rest/API/Common/Guild.cs b/src/Discord.Net.Rest/API/Common/Guild.cs index 46075ce4d..bd25c7e1a 100644 --- a/src/Discord.Net.Rest/API/Common/Guild.cs +++ b/src/Discord.Net.Rest/API/Common/Guild.cs @@ -23,10 +23,6 @@ namespace Discord.API public ulong? AFKChannelId { get; set; } [JsonProperty("afk_timeout")] public int AFKTimeout { get; set; } - [JsonProperty("embed_enabled")] - public Optional EmbedEnabled { get; set; } - [JsonProperty("embed_channel_id")] - public Optional EmbedChannelId { get; set; } [JsonProperty("verification_level")] public VerificationLevel VerificationLevel { get; set; } [JsonProperty("default_message_notifications")] diff --git a/src/Discord.Net.Rest/API/Common/GuildEmbed.cs b/src/Discord.Net.Rest/API/Common/GuildEmbed.cs deleted file mode 100644 index d81632181..000000000 --- a/src/Discord.Net.Rest/API/Common/GuildEmbed.cs +++ /dev/null @@ -1,13 +0,0 @@ -#pragma warning disable CS1591 -using Newtonsoft.Json; - -namespace Discord.API -{ - internal class GuildEmbed - { - [JsonProperty("enabled")] - public bool Enabled { get; set; } - [JsonProperty("channel_id")] - public ulong? ChannelId { get; set; } - } -} diff --git a/src/Discord.Net.Rest/API/Common/Overwrite.cs b/src/Discord.Net.Rest/API/Common/Overwrite.cs index 1f3548a1c..3d94b0640 100644 --- a/src/Discord.Net.Rest/API/Common/Overwrite.cs +++ b/src/Discord.Net.Rest/API/Common/Overwrite.cs @@ -10,8 +10,8 @@ namespace Discord.API [JsonProperty("type")] public PermissionTarget TargetType { get; set; } [JsonProperty("deny"), Int53] - public ulong Deny { get; set; } + public string Deny { get; set; } [JsonProperty("allow"), Int53] - public ulong Allow { get; set; } + public string Allow { get; set; } } } diff --git a/src/Discord.Net.Rest/API/Common/Presence.cs b/src/Discord.Net.Rest/API/Common/Presence.cs index b37ad4229..b44e9185d 100644 --- a/src/Discord.Net.Rest/API/Common/Presence.cs +++ b/src/Discord.Net.Rest/API/Common/Presence.cs @@ -13,8 +13,6 @@ namespace Discord.API public Optional GuildId { get; set; } [JsonProperty("status")] public UserStatus Status { get; set; } - [JsonProperty("game")] - public Game Game { get; set; } [JsonProperty("roles")] public Optional Roles { get; set; } diff --git a/src/Discord.Net.Rest/API/Common/Role.cs b/src/Discord.Net.Rest/API/Common/Role.cs index 190ae25c0..c655175da 100644 --- a/src/Discord.Net.Rest/API/Common/Role.cs +++ b/src/Discord.Net.Rest/API/Common/Role.cs @@ -18,7 +18,7 @@ namespace Discord.API [JsonProperty("position")] public int Position { get; set; } [JsonProperty("permissions"), Int53] - public ulong Permissions { get; set; } + public string Permissions { get; set; } [JsonProperty("managed")] public bool Managed { get; set; } [JsonProperty("tags")] diff --git a/src/Discord.Net.Rest/API/Common/UserGuild.cs b/src/Discord.Net.Rest/API/Common/UserGuild.cs index f4f763885..825e9a09a 100644 --- a/src/Discord.Net.Rest/API/Common/UserGuild.cs +++ b/src/Discord.Net.Rest/API/Common/UserGuild.cs @@ -1,4 +1,4 @@ -#pragma warning disable CS1591 +#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API @@ -14,6 +14,6 @@ namespace Discord.API [JsonProperty("owner")] public bool Owner { get; set; } [JsonProperty("permissions"), Int53] - public ulong Permissions { get; set; } + public string Permissions { get; set; } } } diff --git a/src/Discord.Net.Rest/API/Rest/ModifyChannelPermissionsParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyChannelPermissionsParams.cs index 0fe5f7e5a..269111a61 100644 --- a/src/Discord.Net.Rest/API/Rest/ModifyChannelPermissionsParams.cs +++ b/src/Discord.Net.Rest/API/Rest/ModifyChannelPermissionsParams.cs @@ -1,4 +1,4 @@ -#pragma warning disable CS1591 +#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest @@ -7,13 +7,13 @@ namespace Discord.API.Rest internal class ModifyChannelPermissionsParams { [JsonProperty("type")] - public string Type { get; } + public int Type { get; } [JsonProperty("allow")] - public ulong Allow { get; } + public string Allow { get; } [JsonProperty("deny")] - public ulong Deny { get; } + public string Deny { get; } - public ModifyChannelPermissionsParams(string type, ulong allow, ulong deny) + public ModifyChannelPermissionsParams(int type, string allow, string deny) { Type = type; Allow = allow; diff --git a/src/Discord.Net.Rest/API/Rest/ModifyGuildRoleParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyGuildRoleParams.cs index 287e1cafe..8605411c5 100644 --- a/src/Discord.Net.Rest/API/Rest/ModifyGuildRoleParams.cs +++ b/src/Discord.Net.Rest/API/Rest/ModifyGuildRoleParams.cs @@ -1,4 +1,4 @@ -#pragma warning disable CS1591 +#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest @@ -9,7 +9,7 @@ namespace Discord.API.Rest [JsonProperty("name")] public Optional Name { get; set; } [JsonProperty("permissions")] - public Optional Permissions { get; set; } + public Optional Permissions { get; set; } [JsonProperty("color")] public Optional Color { get; set; } [JsonProperty("hoist")] diff --git a/src/Discord.Net.Rest/API/Rest/SuppressEmbedParams.cs b/src/Discord.Net.Rest/API/Rest/SuppressEmbedParams.cs deleted file mode 100644 index 9139627b8..000000000 --- a/src/Discord.Net.Rest/API/Rest/SuppressEmbedParams.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Newtonsoft.Json; - -namespace Discord.API.Rest -{ - [JsonObject(MemberSerialization = MemberSerialization.OptIn)] - internal class SuppressEmbedParams - { - [JsonProperty("suppress")] - public bool Suppressed { get; set; } - } -} diff --git a/src/Discord.Net.Rest/ClientHelper.cs b/src/Discord.Net.Rest/ClientHelper.cs index b60c02cab..3ff8212fe 100644 --- a/src/Discord.Net.Rest/ClientHelper.cs +++ b/src/Discord.Net.Rest/ClientHelper.cs @@ -69,14 +69,6 @@ namespace Discord.Rest return RestGuild.Create(client, model); return null; } - public static async Task GetGuildEmbedAsync(BaseDiscordClient client, - ulong id, RequestOptions options) - { - var model = await client.ApiClient.GetGuildEmbedAsync(id, options).ConfigureAwait(false); - if (model != null) - return RestGuildEmbed.Create(model); - return null; - } public static async Task GetGuildWidgetAsync(BaseDiscordClient client, ulong id, RequestOptions options) { diff --git a/src/Discord.Net.Rest/DiscordRestApiClient.cs b/src/Discord.Net.Rest/DiscordRestApiClient.cs index d3e4aa515..002472e5a 100644 --- a/src/Discord.Net.Rest/DiscordRestApiClient.cs +++ b/src/Discord.Net.Rest/DiscordRestApiClient.cs @@ -45,20 +45,18 @@ namespace Discord.API internal string AuthToken { get; private set; } internal IRestClient RestClient { get; private set; } internal ulong? CurrentUserId { get; set; } - public RateLimitPrecision RateLimitPrecision { get; private set; } internal bool UseSystemClock { get; set; } internal JsonSerializer Serializer => _serializer; /// Unknown OAuth token type. public DiscordRestApiClient(RestClientProvider restClientProvider, string userAgent, RetryMode defaultRetryMode = RetryMode.AlwaysRetry, - JsonSerializer serializer = null, RateLimitPrecision rateLimitPrecision = RateLimitPrecision.Second, bool useSystemClock = true) + JsonSerializer serializer = null, bool useSystemClock = true) { _restClientProvider = restClientProvider; UserAgent = userAgent; DefaultRetryMode = defaultRetryMode; _serializer = serializer ?? new JsonSerializer { ContractResolver = new DiscordContractResolver() }; - RateLimitPrecision = rateLimitPrecision; UseSystemClock = useSystemClock; RequestQueue = new RequestQueue(); @@ -75,7 +73,6 @@ namespace Discord.API RestClient.SetHeader("accept", "*/*"); RestClient.SetHeader("user-agent", UserAgent); RestClient.SetHeader("authorization", GetPrefixedToken(AuthTokenType, AuthToken)); - RestClient.SetHeader("X-RateLimit-Precision", RateLimitPrecision.ToString().ToLower()); } /// Unknown OAuth token type. internal static string GetPrefixedToken(TokenType tokenType, string token) @@ -645,16 +642,6 @@ namespace Discord.API return await SendJsonAsync("PATCH", () => $"channels/{channelId}/messages/{messageId}", args, ids, clientBucket: ClientBucketType.SendEdit, options: options).ConfigureAwait(false); } - public async Task SuppressEmbedAsync(ulong channelId, ulong messageId, Rest.SuppressEmbedParams args, RequestOptions options = null) - { - Preconditions.NotEqual(channelId, 0, nameof(channelId)); - Preconditions.NotEqual(messageId, 0, nameof(messageId)); - options = RequestOptions.CreateOrClone(options); - - var ids = new BucketIds(channelId: channelId); - await SendJsonAsync("POST", () => $"channels/{channelId}/messages/{messageId}/suppress-embeds", args, ids, options: options).ConfigureAwait(false); - } - public async Task AddReactionAsync(ulong channelId, ulong messageId, string emoji, RequestOptions options = null) { Preconditions.NotEqual(channelId, 0, nameof(channelId)); @@ -936,7 +923,7 @@ namespace Discord.API var ids = new BucketIds(guildId: guildId); string reason = string.IsNullOrWhiteSpace(args.Reason) ? "" : $"&reason={Uri.EscapeDataString(args.Reason)}"; - await SendAsync("PUT", () => $"guilds/{guildId}/bans/{userId}?delete-message-days={args.DeleteMessageDays}{reason}", ids, options: options).ConfigureAwait(false); + await SendAsync("PUT", () => $"guilds/{guildId}/bans/{userId}?delete_message_days={args.DeleteMessageDays}{reason}", ids, options: options).ConfigureAwait(false); } /// and must not be equal to zero. public async Task RemoveGuildBanAsync(ulong guildId, ulong userId, RequestOptions options = null) @@ -949,32 +936,6 @@ namespace Discord.API await SendAsync("DELETE", () => $"guilds/{guildId}/bans/{userId}", ids, options: options).ConfigureAwait(false); } - //Guild Embeds - /// must not be equal to zero. - public async Task GetGuildEmbedAsync(ulong guildId, RequestOptions options = null) - { - Preconditions.NotEqual(guildId, 0, nameof(guildId)); - options = RequestOptions.CreateOrClone(options); - - try - { - var ids = new BucketIds(guildId: guildId); - return await SendAsync("GET", () => $"guilds/{guildId}/embed", ids, options: options).ConfigureAwait(false); - } - catch (HttpException ex) when (ex.HttpCode == HttpStatusCode.NotFound) { return null; } - } - /// must not be equal to zero. - /// must not be . - public async Task ModifyGuildEmbedAsync(ulong guildId, Rest.ModifyGuildEmbedParams args, RequestOptions options = null) - { - Preconditions.NotNull(args, nameof(args)); - Preconditions.NotEqual(guildId, 0, nameof(guildId)); - options = RequestOptions.CreateOrClone(options); - - var ids = new BucketIds(guildId: guildId); - return await SendJsonAsync("PATCH", () => $"guilds/{guildId}/embed", args, ids, options: options).ConfigureAwait(false); - } - //Guild Widget /// must not be equal to zero. public async Task GetGuildWidgetAsync(ulong guildId, RequestOptions options = null) diff --git a/src/Discord.Net.Rest/DiscordRestClient.cs b/src/Discord.Net.Rest/DiscordRestClient.cs index 7eff7363c..9cdb8e409 100644 --- a/src/Discord.Net.Rest/DiscordRestClient.cs +++ b/src/Discord.Net.Rest/DiscordRestClient.cs @@ -29,10 +29,7 @@ namespace Discord.Rest internal DiscordRestClient(DiscordRestConfig config, API.DiscordRestApiClient api) : base(config, api) { } private static API.DiscordRestApiClient CreateApiClient(DiscordRestConfig config) - => new API.DiscordRestApiClient(config.RestClientProvider, - DiscordRestConfig.UserAgent, - rateLimitPrecision: config.RateLimitPrecision, - useSystemClock: config.UseSystemClock); + => new API.DiscordRestApiClient(config.RestClientProvider, DiscordRestConfig.UserAgent, useSystemClock: config.UseSystemClock); internal override void Dispose(bool disposing) { @@ -80,9 +77,6 @@ namespace Discord.Rest => ClientHelper.GetGuildAsync(this, id, false, options); public Task GetGuildAsync(ulong id, bool withCounts, RequestOptions options = null) => ClientHelper.GetGuildAsync(this, id, withCounts, options); - [Obsolete("This endpoint is deprecated, use GetGuildWidgetAsync instead.")] - public Task GetGuildEmbedAsync(ulong id, RequestOptions options = null) - => ClientHelper.GetGuildEmbedAsync(this, id, options); public Task GetGuildWidgetAsync(ulong id, RequestOptions options = null) => ClientHelper.GetGuildWidgetAsync(this, id, options); public IAsyncEnumerable> GetGuildSummariesAsync(RequestOptions options = null) diff --git a/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs b/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs index 7c4edb43e..22395ab3a 100644 --- a/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs +++ b/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs @@ -33,8 +33,8 @@ namespace Discord.Rest { TargetId = overwrite.TargetId, TargetType = overwrite.TargetType, - Allow = overwrite.Permissions.AllowValue, - Deny = overwrite.Permissions.DenyValue + Allow = overwrite.Permissions.AllowValue.ToString(), + Deny = overwrite.Permissions.DenyValue.ToString() }).ToArray() : Optional.Create(), }; @@ -59,8 +59,8 @@ namespace Discord.Rest { TargetId = overwrite.TargetId, TargetType = overwrite.TargetType, - Allow = overwrite.Permissions.AllowValue, - Deny = overwrite.Permissions.DenyValue + Allow = overwrite.Permissions.AllowValue.ToString(), + Deny = overwrite.Permissions.DenyValue.ToString() }).ToArray() : Optional.Create(), }; @@ -84,8 +84,8 @@ namespace Discord.Rest { TargetId = overwrite.TargetId, TargetType = overwrite.TargetType, - Allow = overwrite.Permissions.AllowValue, - Deny = overwrite.Permissions.DenyValue + Allow = overwrite.Permissions.AllowValue.ToString(), + Deny = overwrite.Permissions.DenyValue.ToString() }).ToArray() : Optional.Create(), }; @@ -328,13 +328,13 @@ namespace Discord.Rest public static async Task AddPermissionOverwriteAsync(IGuildChannel channel, BaseDiscordClient client, IUser user, OverwritePermissions perms, RequestOptions options) { - var args = new ModifyChannelPermissionsParams("member", perms.AllowValue, perms.DenyValue); + var args = new ModifyChannelPermissionsParams((int)PermissionTarget.User, perms.AllowValue.ToString(), perms.DenyValue.ToString()); await client.ApiClient.ModifyChannelPermissionsAsync(channel.Id, user.Id, args, options).ConfigureAwait(false); } public static async Task AddPermissionOverwriteAsync(IGuildChannel channel, BaseDiscordClient client, IRole role, OverwritePermissions perms, RequestOptions options) { - var args = new ModifyChannelPermissionsParams("role", perms.AllowValue, perms.DenyValue); + var args = new ModifyChannelPermissionsParams((int)PermissionTarget.Role, perms.AllowValue.ToString(), perms.DenyValue.ToString()); await client.ApiClient.ModifyChannelPermissionsAsync(channel.Id, role.Id, args, options).ConfigureAwait(false); } public static async Task RemovePermissionOverwriteAsync(IGuildChannel channel, BaseDiscordClient client, @@ -450,8 +450,8 @@ namespace Discord.Rest { TargetId = overwrite.TargetId, TargetType = overwrite.TargetType, - Allow = overwrite.Permissions.AllowValue, - Deny = overwrite.Permissions.DenyValue + Allow = overwrite.Permissions.AllowValue.ToString(), + Deny = overwrite.Permissions.DenyValue.ToString() }).ToArray() }; await client.ApiClient.ModifyGuildChannelAsync(channel.Id, apiArgs, options).ConfigureAwait(false); diff --git a/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs b/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs index d10d046ee..331c6f615 100644 --- a/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs +++ b/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs @@ -4,7 +4,6 @@ using System.Collections.Generic; using System.Collections.Immutable; using System.Linq; using System.Threading.Tasks; -using EmbedModel = Discord.API.GuildEmbed; using WidgetModel = Discord.API.GuildWidget; using Model = Discord.API.Guild; using RoleModel = Discord.API.Role; @@ -81,26 +80,6 @@ namespace Discord.Rest return await client.ApiClient.ModifyGuildAsync(guild.Id, apiArgs, options).ConfigureAwait(false); } /// is null. - public static async Task ModifyEmbedAsync(IGuild guild, BaseDiscordClient client, - Action func, RequestOptions options) - { - if (func == null) throw new ArgumentNullException(nameof(func)); - - var args = new GuildEmbedProperties(); - func(args); - var apiArgs = new API.Rest.ModifyGuildEmbedParams - { - Enabled = args.Enabled - }; - - if (args.Channel.IsSpecified) - apiArgs.ChannelId = args.Channel.Value?.Id; - else if (args.ChannelId.IsSpecified) - apiArgs.ChannelId = args.ChannelId.Value; - - return await client.ApiClient.ModifyGuildEmbedAsync(guild.Id, apiArgs, options).ConfigureAwait(false); - } - /// is null. public static async Task ModifyWidgetAsync(IGuild guild, BaseDiscordClient client, Action func, RequestOptions options) { @@ -205,8 +184,8 @@ namespace Discord.Rest { TargetId = overwrite.TargetId, TargetType = overwrite.TargetType, - Allow = overwrite.Permissions.AllowValue, - Deny = overwrite.Permissions.DenyValue + Allow = overwrite.Permissions.AllowValue.ToString(), + Deny = overwrite.Permissions.DenyValue.ToString() }).ToArray() : Optional.Create(), }; @@ -233,8 +212,8 @@ namespace Discord.Rest { TargetId = overwrite.TargetId, TargetType = overwrite.TargetType, - Allow = overwrite.Permissions.AllowValue, - Deny = overwrite.Permissions.DenyValue + Allow = overwrite.Permissions.AllowValue.ToString(), + Deny = overwrite.Permissions.DenyValue.ToString() }).ToArray() : Optional.Create(), }; @@ -258,8 +237,8 @@ namespace Discord.Rest { TargetId = overwrite.TargetId, TargetType = overwrite.TargetType, - Allow = overwrite.Permissions.AllowValue, - Deny = overwrite.Permissions.DenyValue + Allow = overwrite.Permissions.AllowValue.ToString(), + Deny = overwrite.Permissions.DenyValue.ToString() }).ToArray() : Optional.Create(), }; @@ -320,7 +299,7 @@ namespace Discord.Rest Hoist = isHoisted, Mentionable = isMentionable, Name = name, - Permissions = permissions?.RawValue ?? Optional.Create() + Permissions = permissions?.RawValue.ToString() ?? Optional.Create() }; var model = await client.ApiClient.CreateGuildRoleAsync(guild.Id, createGuildRoleParams, options).ConfigureAwait(false); diff --git a/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs b/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs index 57918a1e7..980b0c5fb 100644 --- a/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs +++ b/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs @@ -6,7 +6,6 @@ using System.Diagnostics; using System.Globalization; using System.Linq; using System.Threading.Tasks; -using EmbedModel = Discord.API.GuildEmbed; using WidgetModel = Discord.API.GuildWidget; using Model = Discord.API.Guild; @@ -27,8 +26,6 @@ namespace Discord.Rest /// public int AFKTimeout { get; private set; } /// - public bool IsEmbeddable { get; private set; } - /// public bool IsWidgetEnabled { get; private set; } /// public VerificationLevel VerificationLevel { get; private set; } @@ -42,8 +39,6 @@ namespace Discord.Rest /// public ulong? AFKChannelId { get; private set; } /// - public ulong? EmbedChannelId { get; private set; } - /// public ulong? WidgetChannelId { get; private set; } /// public ulong? SystemChannelId { get; private set; } @@ -133,16 +128,12 @@ namespace Discord.Rest internal void Update(Model model) { AFKChannelId = model.AFKChannelId; - if (model.EmbedChannelId.IsSpecified) - EmbedChannelId = model.EmbedChannelId.Value; if (model.WidgetChannelId.IsSpecified) WidgetChannelId = model.WidgetChannelId.Value; SystemChannelId = model.SystemChannelId; RulesChannelId = model.RulesChannelId; PublicUpdatesChannelId = model.PublicUpdatesChannelId; AFKTimeout = model.AFKTimeout; - if (model.EmbedEnabled.IsSpecified) - IsEmbeddable = model.EmbedEnabled.Value; if (model.WidgetEnabled.IsSpecified) IsWidgetEnabled = model.WidgetEnabled.Value; IconId = model.Icon; @@ -200,11 +191,6 @@ namespace Discord.Rest Available = true; } - internal void Update(EmbedModel model) - { - EmbedChannelId = model.ChannelId; - IsEmbeddable = model.Enabled; - } internal void Update(WidgetModel model) { WidgetChannelId = model.ChannelId; @@ -241,15 +227,6 @@ namespace Discord.Rest Update(model); } - /// - /// is . - [Obsolete("This endpoint is deprecated, use ModifyWidgetAsync instead.")] - public async Task ModifyEmbedAsync(Action func, RequestOptions options = null) - { - var model = await GuildHelper.ModifyEmbedAsync(this, Discord, func, options).ConfigureAwait(false); - Update(model); - } - /// /// is . public async Task ModifyWidgetAsync(Action func, RequestOptions options = null) @@ -463,23 +440,6 @@ namespace Discord.Rest .FirstOrDefault(); } - /// - /// Gets the embed channel (i.e. the channel set in the guild's widget settings) in this guild. - /// - /// The options to be used when sending the request. - /// - /// A task that represents the asynchronous get operation. The task result contains the embed channel set - /// within the server's widget settings; if none is set. - /// - [Obsolete("This endpoint is deprecated, use GetWidgetChannelAsync instead.")] - public async Task GetEmbedChannelAsync(RequestOptions options = null) - { - var embedId = EmbedChannelId; - if (embedId.HasValue) - return await GuildHelper.GetChannelAsync(this, Discord, embedId.Value, options).ConfigureAwait(false); - return null; - } - /// /// Gets the widget channel (i.e. the channel set in the guild's widget settings) in this guild. /// @@ -937,15 +897,6 @@ namespace Discord.Rest return null; } /// - [Obsolete("This endpoint is deprecated, use GetWidgetChannelAsync instead.")] - async Task IGuild.GetEmbedChannelAsync(CacheMode mode, RequestOptions options) - { - if (mode == CacheMode.AllowDownload) - return await GetEmbedChannelAsync(options).ConfigureAwait(false); - else - return null; - } - /// async Task IGuild.GetWidgetChannelAsync(CacheMode mode, RequestOptions options) { if (mode == CacheMode.AllowDownload) diff --git a/src/Discord.Net.Rest/Entities/Guilds/RestGuildEmbed.cs b/src/Discord.Net.Rest/Entities/Guilds/RestGuildEmbed.cs deleted file mode 100644 index 41c76eb06..000000000 --- a/src/Discord.Net.Rest/Entities/Guilds/RestGuildEmbed.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.Diagnostics; -using Model = Discord.API.GuildEmbed; - -namespace Discord.Rest -{ - [DebuggerDisplay(@"{DebuggerDisplay,nq}")] - public struct RestGuildEmbed - { - public bool IsEnabled { get; private set; } - public ulong? ChannelId { get; private set; } - - internal RestGuildEmbed(bool isEnabled, ulong? channelId) - { - ChannelId = channelId; - IsEnabled = isEnabled; - } - internal static RestGuildEmbed Create(Model model) - { - return new RestGuildEmbed(model.Enabled, model.ChannelId); - } - - public override string ToString() => ChannelId?.ToString() ?? "Unknown"; - private string DebuggerDisplay => $"{ChannelId} ({(IsEnabled ? "Enabled" : "Disabled")})"; - } -} diff --git a/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs b/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs index 1bc284836..31252466b 100644 --- a/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs +++ b/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs @@ -122,15 +122,6 @@ namespace Discord.Rest await client.ApiClient.DeleteMessageAsync(channelId, msgId, options).ConfigureAwait(false); } - public static async Task SuppressEmbedsAsync(IMessage msg, BaseDiscordClient client, bool suppress, RequestOptions options) - { - var apiArgs = new API.Rest.SuppressEmbedParams - { - Suppressed = suppress - }; - await client.ApiClient.SuppressEmbedAsync(msg.Channel.Id, msg.Id, apiArgs, options).ConfigureAwait(false); - } - public static async Task AddReactionAsync(ulong channelId, ulong messageId, IEmote emote, BaseDiscordClient client, RequestOptions options) { await client.ApiClient.AddReactionAsync(channelId, messageId, emote is Emote e ? $"{e.Name}:{e.Id}" : UrlEncode(emote.Name), options).ConfigureAwait(false); diff --git a/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs b/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs index 1274f1fd3..aa6b44da6 100644 --- a/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs +++ b/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs @@ -164,9 +164,6 @@ namespace Discord.Rest /// public Task UnpinAsync(RequestOptions options = null) => MessageHelper.UnpinAsync(this, Discord, options); - /// - public Task ModifySuppressionAsync(bool suppressEmbeds, RequestOptions options = null) - => MessageHelper.SuppressEmbedsAsync(this, Discord, suppressEmbeds, options); public string Resolve(int startIndex, TagHandling userHandling = TagHandling.Name, TagHandling channelHandling = TagHandling.Name, TagHandling roleHandling = TagHandling.Name, TagHandling everyoneHandling = TagHandling.Ignore, TagHandling emojiHandling = TagHandling.Name) diff --git a/src/Discord.Net.Rest/Entities/Roles/RoleHelper.cs b/src/Discord.Net.Rest/Entities/Roles/RoleHelper.cs index d570f078b..73ab7ca31 100644 --- a/src/Discord.Net.Rest/Entities/Roles/RoleHelper.cs +++ b/src/Discord.Net.Rest/Entities/Roles/RoleHelper.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Threading.Tasks; using Model = Discord.API.Role; using BulkParams = Discord.API.Rest.ModifyGuildRolesParams; @@ -24,7 +24,7 @@ namespace Discord.Rest Hoist = args.Hoist, Mentionable = args.Mentionable, Name = args.Name, - Permissions = args.Permissions.IsSpecified ? args.Permissions.Value.RawValue : Optional.Create() + Permissions = args.Permissions.IsSpecified ? args.Permissions.Value.RawValue.ToString() : Optional.Create() }; var model = await client.ApiClient.ModifyGuildRoleAsync(role.Guild.Id, role.Id, apiArgs, options).ConfigureAwait(false); diff --git a/src/Discord.Net.Rest/Net/Converters/DiscordContractResolver.cs b/src/Discord.Net.Rest/Net/Converters/DiscordContractResolver.cs index a1ed20c6f..931c0c4c9 100644 --- a/src/Discord.Net.Rest/Net/Converters/DiscordContractResolver.cs +++ b/src/Discord.Net.Rest/Net/Converters/DiscordContractResolver.cs @@ -73,8 +73,6 @@ namespace Discord.Net.Converters } //Enums - if (type == typeof(PermissionTarget)) - return PermissionTargetConverter.Instance; if (type == typeof(UserStatus)) return UserStatusConverter.Instance; if (type == typeof(EmbedType)) diff --git a/src/Discord.Net.Rest/Net/Converters/PermissionTargetConverter.cs b/src/Discord.Net.Rest/Net/Converters/PermissionTargetConverter.cs deleted file mode 100644 index de2e379d7..000000000 --- a/src/Discord.Net.Rest/Net/Converters/PermissionTargetConverter.cs +++ /dev/null @@ -1,44 +0,0 @@ -using Newtonsoft.Json; -using System; - -namespace Discord.Net.Converters -{ - internal class PermissionTargetConverter : JsonConverter - { - public static readonly PermissionTargetConverter Instance = new PermissionTargetConverter(); - - public override bool CanConvert(Type objectType) => true; - public override bool CanRead => true; - public override bool CanWrite => true; - - /// Unknown permission target. - public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) - { - switch ((string)reader.Value) - { - case "member": - return PermissionTarget.User; - case "role": - return PermissionTarget.Role; - default: - throw new JsonSerializationException("Unknown permission target."); - } - } - - /// Invalid permission target. - public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) - { - switch ((PermissionTarget)value) - { - case PermissionTarget.User: - writer.WriteValue("member"); - break; - case PermissionTarget.Role: - writer.WriteValue("role"); - break; - default: - throw new JsonSerializationException("Invalid permission target."); - } - } - } -} diff --git a/src/Discord.Net.WebSocket/API/Gateway/IdentifyParams.cs b/src/Discord.Net.WebSocket/API/Gateway/IdentifyParams.cs index 92a494b71..bb54d4cdd 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/IdentifyParams.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/IdentifyParams.cs @@ -17,8 +17,6 @@ namespace Discord.API.Gateway public Optional ShardingParams { get; set; } [JsonProperty("presence")] public Optional Presence { get; set; } - [JsonProperty("guild_subscriptions")] - public Optional GuildSubscriptions { get; set; } [JsonProperty("intents")] public Optional Intents { get; set; } } diff --git a/src/Discord.Net.WebSocket/BaseSocketClient.cs b/src/Discord.Net.WebSocket/BaseSocketClient.cs index 36e6c02a9..1cfcaa1ee 100644 --- a/src/Discord.Net.WebSocket/BaseSocketClient.cs +++ b/src/Discord.Net.WebSocket/BaseSocketClient.cs @@ -83,7 +83,6 @@ namespace Discord.WebSocket : base(config, client) => BaseConfig = config; private static DiscordSocketApiClient CreateApiClient(DiscordSocketConfig config) => new DiscordSocketApiClient(config.RestClientProvider, config.WebSocketProvider, DiscordRestConfig.UserAgent, - rateLimitPrecision: config.RateLimitPrecision, useSystemClock: config.UseSystemClock); /// diff --git a/src/Discord.Net.WebSocket/DiscordShardedClient.cs b/src/Discord.Net.WebSocket/DiscordShardedClient.cs index 4c94b14e8..c406ead62 100644 --- a/src/Discord.Net.WebSocket/DiscordShardedClient.cs +++ b/src/Discord.Net.WebSocket/DiscordShardedClient.cs @@ -91,8 +91,7 @@ namespace Discord.WebSocket } } private static API.DiscordSocketApiClient CreateApiClient(DiscordSocketConfig config) - => new API.DiscordSocketApiClient(config.RestClientProvider, config.WebSocketProvider, DiscordRestConfig.UserAgent, - rateLimitPrecision: config.RateLimitPrecision); + => new API.DiscordSocketApiClient(config.RestClientProvider, config.WebSocketProvider, DiscordRestConfig.UserAgent); internal async Task AcquireIdentifyLockAsync(int shardId, CancellationToken token) { diff --git a/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs b/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs index d14a314d6..d1407da01 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs @@ -40,9 +40,8 @@ namespace Discord.API public DiscordSocketApiClient(RestClientProvider restClientProvider, WebSocketProvider webSocketProvider, string userAgent, string url = null, RetryMode defaultRetryMode = RetryMode.AlwaysRetry, JsonSerializer serializer = null, - RateLimitPrecision rateLimitPrecision = RateLimitPrecision.Second, bool useSystemClock = true) - : base(restClientProvider, userAgent, defaultRetryMode, serializer, rateLimitPrecision, useSystemClock) + : base(restClientProvider, userAgent, defaultRetryMode, serializer, useSystemClock) { _gatewayUrl = url; if (url != null) @@ -216,7 +215,7 @@ namespace Discord.API await _sentGatewayMessageEvent.InvokeAsync(opCode).ConfigureAwait(false); } - public async Task SendIdentifyAsync(int largeThreshold = 100, int shardID = 0, int totalShards = 1, bool guildSubscriptions = true, GatewayIntents? gatewayIntents = null, (UserStatus, bool, long?, GameModel)? presence = null, RequestOptions options = null) + public async Task SendIdentifyAsync(int largeThreshold = 100, int shardID = 0, int totalShards = 1, GatewayIntents gatewayIntents = GatewayIntents.AllUnprivileged, (UserStatus, bool, long?, GameModel)? presence = null, RequestOptions options = null) { options = RequestOptions.CreateOrClone(options); var props = new Dictionary @@ -234,10 +233,7 @@ namespace Discord.API options.BucketId = GatewayBucket.Get(GatewayBucketType.Identify).Id; - if (gatewayIntents.HasValue) - msg.Intents = (int)gatewayIntents.Value; - else - msg.GuildSubscriptions = guildSubscriptions; + msg.Intents = (int)gatewayIntents; if (presence.HasValue) { diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index e284fd883..b8eba1fc4 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -43,8 +43,7 @@ namespace Discord.WebSocket private DateTimeOffset? _statusSince; private RestApplication _applicationInfo; private bool _isDisposed; - private bool _guildSubscriptions; - private GatewayIntents? _gatewayIntents; + private GatewayIntents _gatewayIntents; /// /// Provides access to a REST-only client with a shared state from this client. @@ -140,7 +139,6 @@ namespace Discord.WebSocket State = new ClientState(0, 0); Rest = new DiscordSocketRestClient(config, ApiClient); _heartbeatTimes = new ConcurrentQueue(); - _guildSubscriptions = config.GuildSubscriptions; _gatewayIntents = config.GatewayIntents; _stateLock = new SemaphoreSlim(1, 1); @@ -182,8 +180,7 @@ namespace Discord.WebSocket _largeGuilds = new ConcurrentQueue(); } private static API.DiscordSocketApiClient CreateApiClient(DiscordSocketConfig config) - => new API.DiscordSocketApiClient(config.RestClientProvider, config.WebSocketProvider, DiscordRestConfig.UserAgent, config.GatewayHost, - rateLimitPrecision: config.RateLimitPrecision); + => new API.DiscordSocketApiClient(config.RestClientProvider, config.WebSocketProvider, DiscordRestConfig.UserAgent, config.GatewayHost); /// internal override void Dispose(bool disposing) { @@ -243,7 +240,7 @@ namespace Discord.WebSocket else { await _gatewayLogger.DebugAsync("Identifying").ConfigureAwait(false); - await ApiClient.SendIdentifyAsync(shardID: ShardId, totalShards: TotalShards, guildSubscriptions: _guildSubscriptions, gatewayIntents: _gatewayIntents, presence: BuildCurrentStatus()).ConfigureAwait(false); + await ApiClient.SendIdentifyAsync(shardID: ShardId, totalShards: TotalShards, gatewayIntents: _gatewayIntents, presence: BuildCurrentStatus()).ConfigureAwait(false); } } finally @@ -335,7 +332,7 @@ namespace Discord.WebSocket { var user = SocketGlobalUser.Create(this, state, model); user.GlobalUser.AddRef(); - user.Presence = new SocketPresence(UserStatus.Online, null, null, null); + user.Presence = new SocketPresence(UserStatus.Online, null, null); return user; }); } @@ -469,7 +466,8 @@ namespace Discord.WebSocket { if (CurrentUser == null) return; - CurrentUser.Presence = new SocketPresence(Status, Activity, null, null); + var activities = _activity.IsSpecified ? ImmutableList.Create(_activity.Value) : null; + CurrentUser.Presence = new SocketPresence(Status, null, activities); var presence = BuildCurrentStatus() ?? (UserStatus.Online, false, null, null); @@ -564,7 +562,7 @@ namespace Discord.WebSocket await _shardedClient.AcquireIdentifyLockAsync(ShardId, _connection.CancelToken).ConfigureAwait(false); try { - await ApiClient.SendIdentifyAsync(shardID: ShardId, totalShards: TotalShards, guildSubscriptions: _guildSubscriptions, gatewayIntents: _gatewayIntents, presence: BuildCurrentStatus()).ConfigureAwait(false); + await ApiClient.SendIdentifyAsync(shardID: ShardId, totalShards: TotalShards, gatewayIntents: _gatewayIntents, presence: BuildCurrentStatus()).ConfigureAwait(false); } finally { @@ -572,7 +570,7 @@ namespace Discord.WebSocket } } else - await ApiClient.SendIdentifyAsync(shardID: ShardId, totalShards: TotalShards, guildSubscriptions: _guildSubscriptions, gatewayIntents: _gatewayIntents, presence: BuildCurrentStatus()).ConfigureAwait(false); + await ApiClient.SendIdentifyAsync(shardID: ShardId, totalShards: TotalShards, gatewayIntents: _gatewayIntents, presence: BuildCurrentStatus()).ConfigureAwait(false); } break; case GatewayOpCode.Reconnect: @@ -595,7 +593,8 @@ namespace Discord.WebSocket var state = new ClientState(data.Guilds.Length, data.PrivateChannels.Length); var currentUser = SocketSelfUser.Create(this, state, data.User); - currentUser.Presence = new SocketPresence(Status, Activity, null, null); + var activities = _activity.IsSpecified ? ImmutableList.Create(_activity.Value) : null; + currentUser.Presence = new SocketPresence(Status, null, activities); ApiClient.CurrentUserId = currentUser.Id; int unavailableGuilds = 0; for (int i = 0; i < data.Guilds.Length; i++) diff --git a/src/Discord.Net.WebSocket/DiscordSocketConfig.cs b/src/Discord.Net.WebSocket/DiscordSocketConfig.cs index a45d4f5be..90b746787 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketConfig.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketConfig.cs @@ -127,12 +127,6 @@ namespace Discord.WebSocket /// public bool? ExclusiveBulkDelete { get; set; } = null; - /// - /// Gets or sets enabling dispatching of guild subscription events e.g. presence and typing events. - /// This is not used if are provided. - /// - public bool GuildSubscriptions { get; set; } = true; - /// /// Gets or sets the maximum identify concurrency. /// @@ -172,14 +166,15 @@ namespace Discord.WebSocket private int maxWaitForGuildAvailable = 10000; /// - /// Gets or sets gateway intents to limit what events are sent from Discord. Allows for more granular control than the property. + /// Gets or sets gateway intents to limit what events are sent from Discord. + /// The default is . /// /// /// For more information, please see /// GatewayIntents /// on the official Discord API documentation. /// - public GatewayIntents? GatewayIntents { get; set; } + public GatewayIntents GatewayIntents { get; set; } = GatewayIntents.AllUnprivileged; /// /// Initializes a new instance of the class with the default configuration. diff --git a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs index 0e36c6b50..ed8a6c532 100644 --- a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs +++ b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs @@ -46,8 +46,6 @@ namespace Discord.WebSocket /// public int AFKTimeout { get; private set; } /// - public bool IsEmbeddable { get; private set; } - /// public bool IsWidgetEnabled { get; private set; } /// public VerificationLevel VerificationLevel { get; private set; } @@ -84,7 +82,6 @@ namespace Discord.WebSocket public ulong? ApplicationId { get; internal set; } internal ulong? AFKChannelId { get; private set; } - internal ulong? EmbedChannelId { get; private set; } internal ulong? WidgetChannelId { get; private set; } internal ulong? SystemChannelId { get; private set; } internal ulong? RulesChannelId { get; private set; } @@ -198,21 +195,6 @@ namespace Discord.WebSocket } } /// - /// Gets the embed channel (i.e. the channel set in the guild's widget settings) in this guild. - /// - /// - /// A channel set within the server's widget settings; if none is set. - /// - [Obsolete("This property is deprecated, use WidgetChannel instead.")] - public SocketGuildChannel EmbedChannel - { - get - { - var id = EmbedChannelId; - return id.HasValue ? GetChannel(id.Value) : null; - } - } - /// /// Gets the widget channel (i.e. the channel set in the guild's widget settings) in this guild. /// /// @@ -440,16 +422,12 @@ namespace Discord.WebSocket internal void Update(ClientState state, Model model) { AFKChannelId = model.AFKChannelId; - if (model.EmbedChannelId.IsSpecified) - EmbedChannelId = model.EmbedChannelId.Value; if (model.WidgetChannelId.IsSpecified) WidgetChannelId = model.WidgetChannelId.Value; SystemChannelId = model.SystemChannelId; RulesChannelId = model.RulesChannelId; PublicUpdatesChannelId = model.PublicUpdatesChannelId; AFKTimeout = model.AFKTimeout; - if (model.EmbedEnabled.IsSpecified) - IsEmbeddable = model.EmbedEnabled.Value; if (model.WidgetEnabled.IsSpecified) IsWidgetEnabled = model.WidgetEnabled.Value; IconId = model.Icon; @@ -548,11 +526,6 @@ namespace Discord.WebSocket /// /// is . - [Obsolete("This endpoint is deprecated, use ModifyWidgetAsync instead.")] - public Task ModifyEmbedAsync(Action func, RequestOptions options = null) - => GuildHelper.ModifyEmbedAsync(this, Discord, func, options); - /// - /// is . public Task ModifyWidgetAsync(Action func, RequestOptions options = null) => GuildHelper.ModifyWidgetAsync(this, Discord, func, options); /// @@ -1234,8 +1207,6 @@ namespace Discord.WebSocket /// ulong IGuild.DefaultChannelId => DefaultChannel?.Id ?? 0; /// - ulong? IGuild.EmbedChannelId => EmbedChannelId; - /// ulong? IGuild.WidgetChannelId => WidgetChannelId; /// ulong? IGuild.SystemChannelId => SystemChannelId; @@ -1290,10 +1261,6 @@ namespace Discord.WebSocket Task IGuild.GetDefaultChannelAsync(CacheMode mode, RequestOptions options) => Task.FromResult(DefaultChannel); /// - [Obsolete("This method is deprecated, use GetWidgetChannelAsync instead.")] - Task IGuild.GetEmbedChannelAsync(CacheMode mode, RequestOptions options) - => Task.FromResult(EmbedChannel); - /// Task IGuild.GetWidgetChannelAsync(CacheMode mode, RequestOptions options) => Task.FromResult(WidgetChannel); /// diff --git a/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs b/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs index 2a8b45ca1..597544f4d 100644 --- a/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs +++ b/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs @@ -189,9 +189,6 @@ namespace Discord.WebSocket /// public Task UnpinAsync(RequestOptions options = null) => MessageHelper.UnpinAsync(this, Discord, options); - /// - public Task ModifySuppressionAsync(bool suppressEmbeds, RequestOptions options = null) - => MessageHelper.SuppressEmbedsAsync(this, Discord, suppressEmbeds, options); public string Resolve(int startIndex, TagHandling userHandling = TagHandling.Name, TagHandling channelHandling = TagHandling.Name, TagHandling roleHandling = TagHandling.Name, TagHandling everyoneHandling = TagHandling.Ignore, TagHandling emojiHandling = TagHandling.Name) diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketPresence.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketPresence.cs index 407e14419..fe672a4d6 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketPresence.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketPresence.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Collections.Immutable; using System.Diagnostics; +using System.Linq; using Model = Discord.API.Presence; namespace Discord.WebSocket @@ -15,15 +16,12 @@ namespace Discord.WebSocket /// public UserStatus Status { get; } /// - public IActivity Activity { get; } - /// public IImmutableSet ActiveClients { get; } /// public IImmutableList Activities { get; } - internal SocketPresence(UserStatus status, IActivity activity, IImmutableSet activeClients, IImmutableList activities) + internal SocketPresence(UserStatus status, IImmutableSet activeClients, IImmutableList activities) { Status = status; - Activity = activity; ActiveClients = activeClients ?? ImmutableHashSet.Empty; Activities = activities ?? ImmutableList.Empty; } @@ -31,7 +29,7 @@ namespace Discord.WebSocket { var clients = ConvertClientTypesDict(model.ClientStatus.GetValueOrDefault()); var activities = ConvertActivitiesList(model.Activities); - return new SocketPresence(model.Status, model.Game?.ToEntity(), clients, activities); + return new SocketPresence(model.Status, clients, activities); } /// /// Creates a new containing all of the client types @@ -84,7 +82,7 @@ namespace Discord.WebSocket /// A string that resolves to . /// public override string ToString() => Status.ToString(); - private string DebuggerDisplay => $"{Status}{(Activity != null ? $", {Activity.Name}": "")}"; + private string DebuggerDisplay => $"{Status}{(Activities?.FirstOrDefault()?.Name ?? "")}"; internal SocketPresence Clone() => this; } diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketUnknownUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketUnknownUser.cs index dd2e747b4..840a1c30b 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketUnknownUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketUnknownUser.cs @@ -25,7 +25,7 @@ namespace Discord.WebSocket /// public override bool IsWebhook => false; /// - internal override SocketPresence Presence { get { return new SocketPresence(UserStatus.Offline, null, null, null); } set { } } + internal override SocketPresence Presence { get { return new SocketPresence(UserStatus.Offline, null, null); } set { } } /// /// This field is not supported for an unknown user. internal override SocketGlobalUser GlobalUser => diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs index 4e6d4b3f8..979314be3 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs @@ -38,8 +38,6 @@ namespace Discord.WebSocket /// public string Mention => MentionUtils.MentionUser(Id); /// - public IActivity Activity => Presence.Activity; - /// public UserStatus Status => Presence.Status; /// public IImmutableSet ActiveClients => Presence.ActiveClients ?? ImmutableHashSet.Empty; diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs index c22164f95..404ab116d 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs @@ -30,7 +30,7 @@ namespace Discord.WebSocket /// public override bool IsWebhook => true; /// - internal override SocketPresence Presence { get { return new SocketPresence(UserStatus.Offline, null, null, null); } set { } } + internal override SocketPresence Presence { get { return new SocketPresence(UserStatus.Offline, null, null); } set { } } internal override SocketGlobalUser GlobalUser => throw new NotSupportedException(); From 76a878a3e1eebac02c5aaea474f0fe4e8ca0c572 Mon Sep 17 00:00:00 2001 From: Tsathoggua of Nkai <5774045+tsathoqqua@users.noreply.github.com> Date: Sat, 20 Feb 2021 18:30:06 +0100 Subject: [PATCH 120/212] Update EmbedBuilder.Overwrites.md (#20) Missing "," in the EmbedBuilder code. Do I get the pedantic unlocked now? --- docs/_overwrites/Common/EmbedBuilder.Overwrites.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_overwrites/Common/EmbedBuilder.Overwrites.md b/docs/_overwrites/Common/EmbedBuilder.Overwrites.md index 409a78e94..85c292dd2 100644 --- a/docs/_overwrites/Common/EmbedBuilder.Overwrites.md +++ b/docs/_overwrites/Common/EmbedBuilder.Overwrites.md @@ -28,7 +28,7 @@ public async Task SendRichEmbedAsync() var embed = new EmbedBuilder { // Embed property can be set within object initializer - Title = "Hello world!" + Title = "Hello world!", Description = "I am a description set by initializer." }; // Or with methods From 75b74e1a3f8e5f3078b254c135befac9af8b7c07 Mon Sep 17 00:00:00 2001 From: Joe4evr Date: Mon, 15 Mar 2021 02:48:59 +0100 Subject: [PATCH 121/212] Fix line about PriorityAttribute (#21) Sorting with the highest number first is *de*scending order. --- docs/guides/commands/intro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/commands/intro.md b/docs/guides/commands/intro.md index abe7065c1..14341a32b 100644 --- a/docs/guides/commands/intro.md +++ b/docs/guides/commands/intro.md @@ -134,7 +134,7 @@ If, for whatever reason, you have two commands which are ambiguous to each other, you may use the @Discord.Commands.PriorityAttribute to specify which should be tested before the other. -The `Priority` attributes are sorted in ascending order; the higher +The `Priority` attributes are sorted in descending order; the higher priority will be called first. ### Command Context From 95bae786b8729de2d15fdde5f24b984f68377875 Mon Sep 17 00:00:00 2001 From: Paulo Date: Mon, 24 May 2021 17:19:11 -0300 Subject: [PATCH 122/212] fix: Create DM channel with id and author alone (#1850) * Create DM channel with id and author alone * Unneeded cast --- .../DiscordSocketClient.cs | 83 ++++++++++--------- .../Entities/Channels/SocketDMChannel.cs | 10 +++ 2 files changed, 55 insertions(+), 38 deletions(-) diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index b8eba1fc4..c6e38c1a9 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -1236,56 +1236,63 @@ namespace Discord.WebSocket await _gatewayLogger.DebugAsync("Received Dispatch (MESSAGE_CREATE)").ConfigureAwait(false); var data = (payload as JToken).ToObject(_serializer); - if (State.GetChannel(data.ChannelId) is ISocketMessageChannel channel) + var channel = State.GetChannel(data.ChannelId) as ISocketMessageChannel; + + var guild = (channel as SocketGuildChannel)?.Guild; + if (guild != null && !guild.IsSynced) { - var guild = (channel as SocketGuildChannel)?.Guild; - if (guild != null && !guild.IsSynced) - { - await UnsyncedGuildAsync(type, guild.Id).ConfigureAwait(false); - return; - } + await UnsyncedGuildAsync(type, guild.Id).ConfigureAwait(false); + return; + } - SocketUser author; - if (guild != null) - { - if (data.WebhookId.IsSpecified) - author = SocketWebhookUser.Create(guild, State, data.Author.Value, data.WebhookId.Value); - else - author = guild.GetUser(data.Author.Value.Id); - } + SocketUser author; + if (guild != null) + { + if (data.WebhookId.IsSpecified) + author = SocketWebhookUser.Create(guild, State, data.Author.Value, data.WebhookId.Value); else - author = (channel as SocketChannel).GetUser(data.Author.Value.Id); + author = guild.GetUser(data.Author.Value.Id); + } + else + author = (channel as SocketChannel)?.GetUser(data.Author.Value.Id); - if (author == null) + if (author == null) + { + if (guild != null) { - if (guild != null) + if (data.Member.IsSpecified) // member isn't always included, but use it when we can { - if (data.Member.IsSpecified) // member isn't always included, but use it when we can - { - data.Member.Value.User = data.Author.Value; - author = guild.AddOrUpdateUser(data.Member.Value); - } - else - author = guild.AddOrUpdateUser(data.Author.Value); // user has no guild-specific data + data.Member.Value.User = data.Author.Value; + author = guild.AddOrUpdateUser(data.Member.Value); } - else if (channel is SocketGroupChannel) - author = (channel as SocketGroupChannel).GetOrAddUser(data.Author.Value); else - { - await UnknownChannelUserAsync(type, data.Author.Value.Id, channel.Id).ConfigureAwait(false); - return; - } + author = guild.AddOrUpdateUser(data.Author.Value); // user has no guild-specific data } - - var msg = SocketMessage.Create(this, State, author, channel, data); - SocketChannelHelper.AddMessage(channel, this, msg); - await TimedInvokeAsync(_messageReceivedEvent, nameof(MessageReceived), msg).ConfigureAwait(false); + else if (channel is SocketGroupChannel groupChannel) + author = groupChannel.GetOrAddUser(data.Author.Value); + else + author = State.GetOrAddUser(data.Author.Value.Id, x => SocketGlobalUser.Create(this, State, data.Author.Value)); } - else + + if (channel == null) { - await UnknownChannelAsync(type, data.ChannelId).ConfigureAwait(false); - return; + if (!data.GuildId.IsSpecified) // assume it is a DM + { + var dm = SocketDMChannel.Create(this, State, data.ChannelId, data.Author.Value); + channel = dm; + State.AddChannel(dm); + dm.Recipient.GlobalUser.DMChannel = dm; + } + else + { + await UnknownChannelAsync(type, data.ChannelId).ConfigureAwait(false); + return; + } } + + var msg = SocketMessage.Create(this, State, author, channel, data); + SocketChannelHelper.AddMessage(channel, this, msg); + await TimedInvokeAsync(_messageReceivedEvent, nameof(MessageReceived), msg).ConfigureAwait(false); } break; case "MESSAGE_UPDATE": diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs index 5de417036..7f07d10d0 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs @@ -49,6 +49,16 @@ namespace Discord.WebSocket { Recipient.Update(state, model.Recipients.Value[0]); } + internal static SocketDMChannel Create(DiscordSocketClient discord, ClientState state, ulong channelId, API.User recipient) + { + var entity = new SocketDMChannel(discord, channelId, discord.GetOrCreateUser(state, recipient)); + entity.Update(state, recipient); + return entity; + } + internal void Update(ClientState state, API.User recipient) + { + Recipient.Update(state, recipient); + } /// public Task CloseAsync(RequestOptions options = null) From 7a201e9ff1f580063670dd904a43ca0676a17a1c Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 26 May 2021 17:35:49 -0300 Subject: [PATCH 123/212] feature: Remove DM cache and fix references (#1851) * Remove DM cache and fix references * Move line back to where it was --- src/Discord.Net.Core/Entities/Users/IUser.cs | 6 +- .../Extensions/UserExtensions.cs | 6 +- .../Core/Entities/Users/IUser.Examples.cs | 4 +- .../Entities/Users/RestUser.cs | 8 +-- .../DiscordSocketClient.cs | 60 ++++++++++--------- .../Entities/Channels/SocketDMChannel.cs | 43 ++++++------- .../Entities/Users/SocketGlobalUser.cs | 2 - .../Entities/Users/SocketGroupUser.cs | 2 +- .../Entities/Users/SocketGuildUser.cs | 6 +- .../Entities/Users/SocketUser.cs | 4 +- 10 files changed, 68 insertions(+), 73 deletions(-) diff --git a/src/Discord.Net.Core/Entities/Users/IUser.cs b/src/Discord.Net.Core/Entities/Users/IUser.cs index e6008aab6..9596a8338 100644 --- a/src/Discord.Net.Core/Entities/Users/IUser.cs +++ b/src/Discord.Net.Core/Entities/Users/IUser.cs @@ -87,7 +87,7 @@ namespace Discord UserProperties? PublicFlags { get; } /// - /// Gets the direct message channel of this user, or create one if it does not already exist. + /// Creates the direct message channel of this user. /// /// /// This method is used to obtain or create a channel used to send a direct message. @@ -102,7 +102,7 @@ namespace Discord /// /// The following example attempts to send a direct message to the target user and logs the incident should /// it fail. - /// /// /// The options to be used when sending the request. @@ -110,6 +110,6 @@ namespace Discord /// A task that represents the asynchronous operation for getting or creating a DM channel. The task result /// contains the DM channel associated with this user. /// - Task GetOrCreateDMChannelAsync(RequestOptions options = null); + Task CreateDMChannelAsync(RequestOptions options = null); } } diff --git a/src/Discord.Net.Core/Extensions/UserExtensions.cs b/src/Discord.Net.Core/Extensions/UserExtensions.cs index 90f26828a..3e46308e6 100644 --- a/src/Discord.Net.Core/Extensions/UserExtensions.cs +++ b/src/Discord.Net.Core/Extensions/UserExtensions.cs @@ -42,7 +42,7 @@ namespace Discord RequestOptions options = null, AllowedMentions allowedMentions = null) { - return await (await user.GetOrCreateDMChannelAsync().ConfigureAwait(false)).SendMessageAsync(text, isTTS, embed, options, allowedMentions).ConfigureAwait(false); + return await (await user.CreateDMChannelAsync().ConfigureAwait(false)).SendMessageAsync(text, isTTS, embed, options, allowedMentions).ConfigureAwait(false); } /// @@ -94,7 +94,7 @@ namespace Discord RequestOptions options = null ) { - return await (await user.GetOrCreateDMChannelAsync().ConfigureAwait(false)).SendFileAsync(stream, filename, text, isTTS, embed, options).ConfigureAwait(false); + return await (await user.CreateDMChannelAsync().ConfigureAwait(false)).SendFileAsync(stream, filename, text, isTTS, embed, options).ConfigureAwait(false); } /// @@ -149,7 +149,7 @@ namespace Discord Embed embed = null, RequestOptions options = null) { - return await (await user.GetOrCreateDMChannelAsync().ConfigureAwait(false)).SendFileAsync(filePath, text, isTTS, embed, options).ConfigureAwait(false); + return await (await user.CreateDMChannelAsync().ConfigureAwait(false)).SendFileAsync(filePath, text, isTTS, embed, options).ConfigureAwait(false); } /// diff --git a/src/Discord.Net.Examples/Core/Entities/Users/IUser.Examples.cs b/src/Discord.Net.Examples/Core/Entities/Users/IUser.Examples.cs index 79a90b46d..83daedaa0 100644 --- a/src/Discord.Net.Examples/Core/Entities/Users/IUser.Examples.cs +++ b/src/Discord.Net.Examples/Core/Entities/Users/IUser.Examples.cs @@ -18,11 +18,11 @@ namespace Discord.Net.Examples.Core.Entities.Users #endregion - #region GetOrCreateDMChannelAsync + #region CreateDMChannelAsync public async Task MessageUserAsync(IUser user) { - var channel = await user.GetOrCreateDMChannelAsync(); + var channel = await user.CreateDMChannelAsync(); try { await channel.SendMessageAsync("Awesome stuff!"); diff --git a/src/Discord.Net.Rest/Entities/Users/RestUser.cs b/src/Discord.Net.Rest/Entities/Users/RestUser.cs index 131a4ec73..7bc1447fe 100644 --- a/src/Discord.Net.Rest/Entities/Users/RestUser.cs +++ b/src/Discord.Net.Rest/Entities/Users/RestUser.cs @@ -79,13 +79,13 @@ namespace Discord.Rest } /// - /// Returns a direct message channel to this user, or create one if it does not already exist. + /// Creates a direct message channel to this user. /// /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains a rest DM channel where the user is the recipient. /// - public Task GetOrCreateDMChannelAsync(RequestOptions options = null) + public Task CreateDMChannelAsync(RequestOptions options = null) => UserHelper.CreateDMChannelAsync(this, Discord, options); /// @@ -107,7 +107,7 @@ namespace Discord.Rest //IUser /// - async Task IUser.GetOrCreateDMChannelAsync(RequestOptions options) - => await GetOrCreateDMChannelAsync(options).ConfigureAwait(false); + async Task IUser.CreateDMChannelAsync(RequestOptions options) + => await CreateDMChannelAsync(options).ConfigureAwait(false); } } diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index c6e38c1a9..7a1aaa6d6 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -305,7 +305,7 @@ namespace Discord.WebSocket /// /// Clears cached DM channels from the client. /// - public void PurgeDMChannelCache() => State.PurgeDMChannels(); + public void PurgeDMChannelCache() => RemoveDMChannels(); /// public override SocketUser GetUser(ulong id) @@ -317,14 +317,11 @@ namespace Discord.WebSocket /// Clears cached users from the client. /// public void PurgeUserCache() => State.PurgeUsers(); - internal SocketGlobalUser GetOrCreateUser(ClientState state, Discord.API.User model) + internal SocketGlobalUser GetOrCreateUser(ClientState state, Discord.API.User model, bool cache) { - return state.GetOrAddUser(model.Id, x => - { - var user = SocketGlobalUser.Create(this, state, model); - user.GlobalUser.AddRef(); - return user; - }); + if (cache) + return state.GetOrAddUser(model.Id, x => SocketGlobalUser.Create(this, state, model)); + return state.GetUser(model.Id) ?? SocketGlobalUser.Create(this, state, model); } internal SocketGlobalUser GetOrCreateSelfUser(ClientState state, Discord.API.User model) { @@ -1245,6 +1242,19 @@ namespace Discord.WebSocket return; } + if (channel == null) + { + if (!data.GuildId.IsSpecified) // assume it is a DM + { + channel = CreateDMChannel(data.ChannelId, data.Author.Value, State); + } + else + { + await UnknownChannelAsync(type, data.ChannelId).ConfigureAwait(false); + return; + } + } + SocketUser author; if (guild != null) { @@ -1254,7 +1264,7 @@ namespace Discord.WebSocket author = guild.GetUser(data.Author.Value.Id); } else - author = (channel as SocketChannel)?.GetUser(data.Author.Value.Id); + author = (channel as SocketChannel).GetUser(data.Author.Value.Id); if (author == null) { @@ -1270,22 +1280,9 @@ namespace Discord.WebSocket } else if (channel is SocketGroupChannel groupChannel) author = groupChannel.GetOrAddUser(data.Author.Value); - else - author = State.GetOrAddUser(data.Author.Value.Id, x => SocketGlobalUser.Create(this, State, data.Author.Value)); - } - - if (channel == null) - { - if (!data.GuildId.IsSpecified) // assume it is a DM - { - var dm = SocketDMChannel.Create(this, State, data.ChannelId, data.Author.Value); - channel = dm; - State.AddChannel(dm); - dm.Recipient.GlobalUser.DMChannel = dm; - } else { - await UnknownChannelAsync(type, data.ChannelId).ConfigureAwait(false); + await UnknownChannelUserAsync(type, data.Author.Value.Id, channel.Id).ConfigureAwait(false); return; } } @@ -1944,24 +1941,29 @@ namespace Discord.WebSocket { var channel = SocketChannel.CreatePrivate(this, state, model); state.AddChannel(channel as SocketChannel); - if (channel is SocketDMChannel dm) - dm.Recipient.GlobalUser.DMChannel = dm; - return channel; } + internal SocketDMChannel CreateDMChannel(ulong channelId, API.User model, ClientState state) + { + return SocketDMChannel.Create(this, state, channelId, model); + } internal ISocketPrivateChannel RemovePrivateChannel(ulong id) { var channel = State.RemoveChannel(id) as ISocketPrivateChannel; if (channel != null) { - if (channel is SocketDMChannel dmChannel) - dmChannel.Recipient.GlobalUser.DMChannel = null; - foreach (var recipient in channel.Recipients) recipient.GlobalUser.RemoveRef(this); } return channel; } + internal void RemoveDMChannels() + { + var channels = State.DMChannels; + State.PurgeDMChannels(); + foreach (var channel in channels) + channel.Recipient.GlobalUser.RemoveRef(this); + } private async Task GuildAvailableAsync(SocketGuild guild) { diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs index 7f07d10d0..a42db3b5f 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs @@ -16,15 +16,13 @@ namespace Discord.WebSocket [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class SocketDMChannel : SocketChannel, IDMChannel, ISocketPrivateChannel, ISocketMessageChannel { - private readonly MessageCache _messages; - /// /// Gets the recipient of the channel. /// public SocketUser Recipient { get; } /// - public IReadOnlyCollection CachedMessages => _messages?.Messages ?? ImmutableArray.Create(); + public IReadOnlyCollection CachedMessages => ImmutableArray.Create(); /// /// Gets a collection that is the current logged-in user and the recipient. @@ -35,13 +33,10 @@ namespace Discord.WebSocket : base(discord, id) { Recipient = recipient; - recipient.GlobalUser.AddRef(); - if (Discord.MessageCacheSize > 0) - _messages = new MessageCache(Discord); } internal static SocketDMChannel Create(DiscordSocketClient discord, ClientState state, Model model) { - var entity = new SocketDMChannel(discord, model.Id, discord.GetOrCreateUser(state, model.Recipients.Value[0])); + var entity = new SocketDMChannel(discord, model.Id, discord.GetOrCreateUser(state, model.Recipients.Value[0], false)); entity.Update(state, model); return entity; } @@ -51,7 +46,7 @@ namespace Discord.WebSocket } internal static SocketDMChannel Create(DiscordSocketClient discord, ClientState state, ulong channelId, API.User recipient) { - var entity = new SocketDMChannel(discord, channelId, discord.GetOrCreateUser(state, recipient)); + var entity = new SocketDMChannel(discord, channelId, discord.GetOrCreateUser(state, recipient, false)); entity.Update(state, recipient); return entity; } @@ -67,7 +62,7 @@ namespace Discord.WebSocket //Messages /// public SocketMessage GetCachedMessage(ulong id) - => _messages?.Get(id); + => null; /// /// Gets the message associated with the given . /// @@ -78,10 +73,7 @@ namespace Discord.WebSocket /// public async Task GetMessageAsync(ulong id, RequestOptions options = null) { - IMessage msg = _messages?.Get(id); - if (msg == null) - msg = await ChannelHelper.GetMessageAsync(this, Discord, id, options).ConfigureAwait(false); - return msg; + return await ChannelHelper.GetMessageAsync(this, Discord, id, options).ConfigureAwait(false); } /// @@ -97,7 +89,7 @@ namespace Discord.WebSocket /// Paged collection of messages. /// public IAsyncEnumerable> GetMessagesAsync(int limit = DiscordConfig.MaxMessagesPerBatch, RequestOptions options = null) - => SocketChannelHelper.GetMessagesAsync(this, Discord, _messages, null, Direction.Before, limit, CacheMode.AllowDownload, options); + => ChannelHelper.GetMessagesAsync(this, Discord, null, Direction.Before, limit, options); /// /// Gets a collection of messages in this channel. /// @@ -113,7 +105,7 @@ namespace Discord.WebSocket /// Paged collection of messages. /// public IAsyncEnumerable> GetMessagesAsync(ulong fromMessageId, Direction dir, int limit = DiscordConfig.MaxMessagesPerBatch, RequestOptions options = null) - => SocketChannelHelper.GetMessagesAsync(this, Discord, _messages, fromMessageId, dir, limit, CacheMode.AllowDownload, options); + => ChannelHelper.GetMessagesAsync(this, Discord, fromMessageId, dir, limit, options); /// /// Gets a collection of messages in this channel. /// @@ -129,16 +121,16 @@ namespace Discord.WebSocket /// Paged collection of messages. /// public IAsyncEnumerable> GetMessagesAsync(IMessage fromMessage, Direction dir, int limit = DiscordConfig.MaxMessagesPerBatch, RequestOptions options = null) - => SocketChannelHelper.GetMessagesAsync(this, Discord, _messages, fromMessage.Id, dir, limit, CacheMode.AllowDownload, options); + => ChannelHelper.GetMessagesAsync(this, Discord, fromMessage.Id, dir, limit, options); /// public IReadOnlyCollection GetCachedMessages(int limit = DiscordConfig.MaxMessagesPerBatch) - => SocketChannelHelper.GetCachedMessages(this, Discord, _messages, null, Direction.Before, limit); + => ImmutableArray.Create(); /// public IReadOnlyCollection GetCachedMessages(ulong fromMessageId, Direction dir, int limit = DiscordConfig.MaxMessagesPerBatch) - => SocketChannelHelper.GetCachedMessages(this, Discord, _messages, fromMessageId, dir, limit); + => ImmutableArray.Create(); /// public IReadOnlyCollection GetCachedMessages(IMessage fromMessage, Direction dir, int limit = DiscordConfig.MaxMessagesPerBatch) - => SocketChannelHelper.GetCachedMessages(this, Discord, _messages, fromMessage.Id, dir, limit); + => ImmutableArray.Create(); /// public Task> GetPinnedMessagesAsync(RequestOptions options = null) => ChannelHelper.GetPinnedMessagesAsync(this, Discord, options); @@ -174,9 +166,12 @@ namespace Discord.WebSocket => ChannelHelper.EnterTypingState(this, Discord, options); internal void AddMessage(SocketMessage msg) - => _messages?.Add(msg); + { + } internal SocketMessage RemoveMessage(ulong id) - => _messages?.Remove(id); + { + return null; + } //Users /// @@ -232,13 +227,13 @@ namespace Discord.WebSocket } /// IAsyncEnumerable> IMessageChannel.GetMessagesAsync(int limit, CacheMode mode, RequestOptions options) - => SocketChannelHelper.GetMessagesAsync(this, Discord, _messages, null, Direction.Before, limit, mode, options); + => mode == CacheMode.CacheOnly ? null : GetMessagesAsync(limit, options); /// IAsyncEnumerable> IMessageChannel.GetMessagesAsync(ulong fromMessageId, Direction dir, int limit, CacheMode mode, RequestOptions options) - => SocketChannelHelper.GetMessagesAsync(this, Discord, _messages, fromMessageId, dir, limit, mode, options); + => mode == CacheMode.CacheOnly ? null : GetMessagesAsync(fromMessageId, dir, limit, options); /// IAsyncEnumerable> IMessageChannel.GetMessagesAsync(IMessage fromMessage, Direction dir, int limit, CacheMode mode, RequestOptions options) - => SocketChannelHelper.GetMessagesAsync(this, Discord, _messages, fromMessage.Id, dir, limit, mode, options); + => mode == CacheMode.CacheOnly ? null : GetMessagesAsync(fromMessage.Id, dir, limit, options); /// async Task> IMessageChannel.GetPinnedMessagesAsync(RequestOptions options) => await GetPinnedMessagesAsync(options).ConfigureAwait(false); diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketGlobalUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketGlobalUser.cs index 48de7552a..15c5182fc 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketGlobalUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketGlobalUser.cs @@ -12,7 +12,6 @@ namespace Discord.WebSocket public override string Username { get; internal set; } public override ushort DiscriminatorValue { get; internal set; } public override string AvatarId { get; internal set; } - public SocketDMChannel DMChannel { get; internal set; } internal override SocketPresence Presence { get; set; } public override bool IsWebhook => false; @@ -52,7 +51,6 @@ namespace Discord.WebSocket internal void Update(ClientState state, PresenceModel model) { Presence = SocketPresence.Create(model); - DMChannel = state.DMChannels.FirstOrDefault(x => x.Recipient.Id == Id); } private string DebuggerDisplay => $"{Username}#{Discriminator} ({Id}{(IsBot ? ", Bot" : "")}, Global)"; diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketGroupUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketGroupUser.cs index 676c0a86c..9f66bed12 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketGroupUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketGroupUser.cs @@ -38,7 +38,7 @@ namespace Discord.WebSocket } internal static SocketGroupUser Create(SocketGroupChannel channel, ClientState state, Model model) { - var entity = new SocketGroupUser(channel, channel.Discord.GetOrCreateUser(state, model)); + var entity = new SocketGroupUser(channel, channel.Discord.GetOrCreateUser(state, model, true)); entity.Update(state, model); return entity; } diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs index 9263fe642..6362d4891 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs @@ -116,20 +116,20 @@ namespace Discord.WebSocket } internal static SocketGuildUser Create(SocketGuild guild, ClientState state, UserModel model) { - var entity = new SocketGuildUser(guild, guild.Discord.GetOrCreateUser(state, model)); + var entity = new SocketGuildUser(guild, guild.Discord.GetOrCreateUser(state, model, true)); entity.Update(state, model); entity.UpdateRoles(new ulong[0]); return entity; } internal static SocketGuildUser Create(SocketGuild guild, ClientState state, MemberModel model) { - var entity = new SocketGuildUser(guild, guild.Discord.GetOrCreateUser(state, model.User)); + var entity = new SocketGuildUser(guild, guild.Discord.GetOrCreateUser(state, model.User, true)); entity.Update(state, model); return entity; } internal static SocketGuildUser Create(SocketGuild guild, ClientState state, PresenceModel model) { - var entity = new SocketGuildUser(guild, guild.Discord.GetOrCreateUser(state, model.User)); + var entity = new SocketGuildUser(guild, guild.Discord.GetOrCreateUser(state, model.User, true)); entity.Update(state, model, false); return entity; } diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs index 979314be3..025daf29a 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs @@ -92,8 +92,8 @@ namespace Discord.WebSocket } /// - public async Task GetOrCreateDMChannelAsync(RequestOptions options = null) - => GlobalUser.DMChannel ?? await UserHelper.CreateDMChannelAsync(this, Discord, options).ConfigureAwait(false) as IDMChannel; + public async Task CreateDMChannelAsync(RequestOptions options = null) + => await UserHelper.CreateDMChannelAsync(this, Discord, options).ConfigureAwait(false); /// public string GetAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128) From ed8e57320a4a6d082aaabcc3b15fa07199c52316 Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 26 May 2021 17:59:14 -0300 Subject: [PATCH 124/212] feature: Remove obsolete sync voice regions methods and properties (#1848) --- src/Discord.Net.WebSocket/BaseSocketClient.cs | 30 +++++-------------- .../DiscordShardedClient.cs | 20 +++++-------- .../DiscordSocketClient.cs | 8 ----- 3 files changed, 16 insertions(+), 42 deletions(-) diff --git a/src/Discord.Net.WebSocket/BaseSocketClient.cs b/src/Discord.Net.WebSocket/BaseSocketClient.cs index 1cfcaa1ee..b1b430178 100644 --- a/src/Discord.Net.WebSocket/BaseSocketClient.cs +++ b/src/Discord.Net.WebSocket/BaseSocketClient.cs @@ -70,14 +70,6 @@ namespace Discord.WebSocket /// A read-only collection of private channels that the user currently partakes in. /// public abstract IReadOnlyCollection PrivateChannels { get; } - /// - /// Gets a collection of available voice regions. - /// - /// - /// A read-only collection of voice regions that the user has access to. - /// - [Obsolete("This property is obsolete, use the GetVoiceRegionsAsync method instead.")] - public abstract IReadOnlyCollection VoiceRegions { get; } internal BaseSocketClient(DiscordSocketConfig config, DiscordRestApiClient client) : base(config, client) => BaseConfig = config; @@ -163,16 +155,6 @@ namespace Discord.WebSocket /// public abstract SocketGuild GetGuild(ulong id); /// - /// Gets a voice region. - /// - /// The identifier of the voice region (e.g. eu-central ). - /// - /// A REST-based voice region associated with the identifier; null if the voice region is not - /// found. - /// - [Obsolete("This method is obsolete, use GetVoiceRegionAsync instead.")] - public abstract RestVoiceRegion GetVoiceRegion(string id); - /// /// Gets all voice regions. /// /// The options to be used when sending the request. @@ -326,10 +308,14 @@ namespace Discord.WebSocket => Task.FromResult(GetUser(username, discriminator)); /// - Task IDiscordClient.GetVoiceRegionAsync(string id, RequestOptions options) - => Task.FromResult(GetVoiceRegion(id)); + async Task IDiscordClient.GetVoiceRegionAsync(string id, RequestOptions options) + { + return await GetVoiceRegionAsync(id).ConfigureAwait(false); + } /// - Task> IDiscordClient.GetVoiceRegionsAsync(RequestOptions options) - => Task.FromResult>(VoiceRegions); + async Task> IDiscordClient.GetVoiceRegionsAsync(RequestOptions options) + { + return await GetVoiceRegionsAsync().ConfigureAwait(false); + } } } diff --git a/src/Discord.Net.WebSocket/DiscordShardedClient.cs b/src/Discord.Net.WebSocket/DiscordShardedClient.cs index c406ead62..ea50a571e 100644 --- a/src/Discord.Net.WebSocket/DiscordShardedClient.cs +++ b/src/Discord.Net.WebSocket/DiscordShardedClient.cs @@ -36,9 +36,6 @@ namespace Discord.WebSocket /// public override IReadOnlyCollection PrivateChannels => GetPrivateChannels().ToReadOnlyCollection(GetPrivateChannelCount); public IReadOnlyCollection Shards => _shards; - /// - [Obsolete("This property is obsolete, use the GetVoiceRegionsAsync method instead.")] - public override IReadOnlyCollection VoiceRegions => _shards[0].VoiceRegions; /// /// Provides access to a REST-only client with a shared state from this client. @@ -263,11 +260,6 @@ namespace Discord.WebSocket return null; } - /// - [Obsolete("This method is obsolete, use GetVoiceRegionAsync instead.")] - public override RestVoiceRegion GetVoiceRegion(string id) - => _shards[0].GetVoiceRegion(id); - /// public override async ValueTask> GetVoiceRegionsAsync(RequestOptions options = null) { @@ -431,11 +423,15 @@ namespace Discord.WebSocket => Task.FromResult(GetUser(username, discriminator)); /// - Task> IDiscordClient.GetVoiceRegionsAsync(RequestOptions options) - => Task.FromResult>(VoiceRegions); + async Task> IDiscordClient.GetVoiceRegionsAsync(RequestOptions options) + { + return await GetVoiceRegionsAsync().ConfigureAwait(false); + } /// - Task IDiscordClient.GetVoiceRegionAsync(string id, RequestOptions options) - => Task.FromResult(GetVoiceRegion(id)); + async Task IDiscordClient.GetVoiceRegionAsync(string id, RequestOptions options) + { + return await GetVoiceRegionAsync(id).ConfigureAwait(false); + } internal override void Dispose(bool disposing) { diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 7a1aaa6d6..d4ca6329d 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -108,9 +108,6 @@ namespace Discord.WebSocket /// public IReadOnlyCollection GroupChannels => State.PrivateChannels.OfType().ToImmutableArray(); - /// - [Obsolete("This property is obsolete, use the GetVoiceRegionsAsync method instead.")] - public override IReadOnlyCollection VoiceRegions => GetVoiceRegionsAsync().GetAwaiter().GetResult(); /// /// Initializes a new REST/WebSocket-based Discord client. @@ -336,11 +333,6 @@ namespace Discord.WebSocket internal void RemoveUser(ulong id) => State.RemoveUser(id); - /// - [Obsolete("This method is obsolete, use GetVoiceRegionAsync instead.")] - public override RestVoiceRegion GetVoiceRegion(string id) - => GetVoiceRegionAsync(id).GetAwaiter().GetResult(); - /// public override async ValueTask> GetVoiceRegionsAsync(RequestOptions options = null) { From 70aab6c4f651fe53d6b24d334fef7b30ff5a8105 Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 26 May 2021 18:42:35 -0300 Subject: [PATCH 125/212] fix: Remove obsolete methods and properties (#1849) * Remove obsolete methods and properties * Remove rest of GuildEmbed * Remove TokenType.User * Changes regarding the removal of the user tokentype --- .../Entities/Guilds/GuildEmbedProperties.cs | 21 ------------------- .../Entities/Guilds/IGuild.cs | 15 ------------- .../Entities/Invites/IInviteMetadata.cs | 8 ------- .../Entities/Permissions/ChannelPermission.cs | 5 ----- .../Permissions/ChannelPermissions.cs | 3 --- .../Entities/Permissions/GuildPermission.cs | 2 -- .../Entities/Permissions/GuildPermissions.cs | 3 --- .../Permissions/OverwritePermissions.cs | 3 --- .../Entities/Users/UserProperties.cs | 6 ------ src/Discord.Net.Core/TokenType.cs | 2 -- src/Discord.Net.Rest/DiscordRestApiClient.cs | 1 - .../Entities/Guilds/RestGuild.cs | 2 -- .../Entities/Invites/RestInviteMetadata.cs | 3 --- .../Entities/Guilds/SocketGuild.cs | 2 -- .../Entities/Invites/SocketInvite.cs | 3 --- .../Discord.Net.Tests.Unit/TokenUtilsTests.cs | 2 -- 16 files changed, 81 deletions(-) delete mode 100644 src/Discord.Net.Core/Entities/Guilds/GuildEmbedProperties.cs diff --git a/src/Discord.Net.Core/Entities/Guilds/GuildEmbedProperties.cs b/src/Discord.Net.Core/Entities/Guilds/GuildEmbedProperties.cs deleted file mode 100644 index 34473e93c..000000000 --- a/src/Discord.Net.Core/Entities/Guilds/GuildEmbedProperties.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace Discord -{ - /// - /// Provides properties that are used to modify the widget of an with the specified changes. - /// - public class GuildEmbedProperties - { - /// - /// Sets whether the widget should be enabled. - /// - public Optional Enabled { get; set; } - /// - /// Sets the channel that the invite should place its users in, if not null. - /// - public Optional Channel { get; set; } - /// - /// Sets the channel the invite should place its users in, if not null. - /// - public Optional ChannelId { get; set; } - } -} diff --git a/src/Discord.Net.Core/Entities/Guilds/IGuild.cs b/src/Discord.Net.Core/Entities/Guilds/IGuild.cs index 0bbd64786..b8fd858df 100644 --- a/src/Discord.Net.Core/Entities/Guilds/IGuild.cs +++ b/src/Discord.Net.Core/Entities/Guilds/IGuild.cs @@ -125,21 +125,6 @@ namespace Discord /// ulong? AFKChannelId { get; } /// - /// Gets the ID of the default channel for this guild. - /// - /// - /// This property retrieves the snowflake identifier of the first viewable text channel for this guild. - /// - /// This channel does not guarantee the user can send message to it, as it only looks for the first viewable - /// text channel. - /// - /// - /// - /// A representing the snowflake identifier of the default text channel; 0 if - /// none can be found. - /// - ulong DefaultChannelId { get; } - /// /// Gets the ID of the channel assigned to the widget of this guild. /// /// diff --git a/src/Discord.Net.Core/Entities/Invites/IInviteMetadata.cs b/src/Discord.Net.Core/Entities/Invites/IInviteMetadata.cs index c64b3205b..c2580c853 100644 --- a/src/Discord.Net.Core/Entities/Invites/IInviteMetadata.cs +++ b/src/Discord.Net.Core/Entities/Invites/IInviteMetadata.cs @@ -16,14 +16,6 @@ namespace Discord /// bool IsTemporary { get; } /// - /// Gets a value that indicates whether the invite has been revoked. - /// - /// - /// true if this invite was revoked; otherwise false. - /// - [Obsolete("This property doesn't exist anymore and shouldn't be used.")] - bool IsRevoked { get; } - /// /// Gets the time (in seconds) until the invite expires. /// /// diff --git a/src/Discord.Net.Core/Entities/Permissions/ChannelPermission.cs b/src/Discord.Net.Core/Entities/Permissions/ChannelPermission.cs index e1f78373e..bf08887bd 100644 --- a/src/Discord.Net.Core/Entities/Permissions/ChannelPermission.cs +++ b/src/Discord.Net.Core/Entities/Permissions/ChannelPermission.cs @@ -22,11 +22,6 @@ namespace Discord /// AddReactions = 0x00_00_00_40, /// - /// Allows for reading of messages. This flag is obsolete, use instead. - /// - [Obsolete("Use ViewChannel instead.")] - ReadMessages = ViewChannel, - /// /// Allows guild members to view a channel, which includes reading messages in text channels. /// ViewChannel = 0x00_00_04_00, diff --git a/src/Discord.Net.Core/Entities/Permissions/ChannelPermissions.cs b/src/Discord.Net.Core/Entities/Permissions/ChannelPermissions.cs index ed675b5f3..d774cc51d 100644 --- a/src/Discord.Net.Core/Entities/Permissions/ChannelPermissions.cs +++ b/src/Discord.Net.Core/Entities/Permissions/ChannelPermissions.cs @@ -45,9 +45,6 @@ namespace Discord /// If true, a user may add reactions. public bool AddReactions => Permissions.GetValue(RawValue, ChannelPermission.AddReactions); - /// If true, a user may join channels. - [Obsolete("Use ViewChannel instead.")] - public bool ReadMessages => ViewChannel; /// If true, a user may view channels. public bool ViewChannel => Permissions.GetValue(RawValue, ChannelPermission.ViewChannel); diff --git a/src/Discord.Net.Core/Entities/Permissions/GuildPermission.cs b/src/Discord.Net.Core/Entities/Permissions/GuildPermission.cs index 645b67489..31bd6164a 100644 --- a/src/Discord.Net.Core/Entities/Permissions/GuildPermission.cs +++ b/src/Discord.Net.Core/Entities/Permissions/GuildPermission.cs @@ -65,8 +65,6 @@ namespace Discord /// Allows for viewing of audit logs. /// ViewAuditLog = 0x00_00_00_80, - [Obsolete("Use ViewChannel instead.")] - ReadMessages = ViewChannel, ViewChannel = 0x00_00_04_00, SendMessages = 0x00_00_08_00, /// diff --git a/src/Discord.Net.Core/Entities/Permissions/GuildPermissions.cs b/src/Discord.Net.Core/Entities/Permissions/GuildPermissions.cs index ef4e40a11..b03c0e1a8 100644 --- a/src/Discord.Net.Core/Entities/Permissions/GuildPermissions.cs +++ b/src/Discord.Net.Core/Entities/Permissions/GuildPermissions.cs @@ -37,9 +37,6 @@ namespace Discord /// If true, a user may view the guild insights. public bool ViewGuildInsights => Permissions.GetValue(RawValue, GuildPermission.ViewGuildInsights); - /// If True, a user may join channels. - [Obsolete("Use ViewChannel instead.")] - public bool ReadMessages => ViewChannel; /// If True, a user may view channels. public bool ViewChannel => Permissions.GetValue(RawValue, GuildPermission.ViewChannel); /// If True, a user may send messages. diff --git a/src/Discord.Net.Core/Entities/Permissions/OverwritePermissions.cs b/src/Discord.Net.Core/Entities/Permissions/OverwritePermissions.cs index 6ee79b427..4f144c74b 100644 --- a/src/Discord.Net.Core/Entities/Permissions/OverwritePermissions.cs +++ b/src/Discord.Net.Core/Entities/Permissions/OverwritePermissions.cs @@ -43,9 +43,6 @@ namespace Discord /// If Allowed, a user may add reactions. public PermValue AddReactions => Permissions.GetValue(AllowValue, DenyValue, ChannelPermission.AddReactions); /// If Allowed, a user may join channels. - [Obsolete("Use ViewChannel instead.")] - public PermValue ReadMessages => ViewChannel; - /// If Allowed, a user may join channels. public PermValue ViewChannel => Permissions.GetValue(AllowValue, DenyValue, ChannelPermission.ViewChannel); /// If Allowed, a user may send messages. public PermValue SendMessages => Permissions.GetValue(AllowValue, DenyValue, ChannelPermission.SendMessages); diff --git a/src/Discord.Net.Core/Entities/Users/UserProperties.cs b/src/Discord.Net.Core/Entities/Users/UserProperties.cs index 21c453dce..68232b254 100644 --- a/src/Discord.Net.Core/Entities/Users/UserProperties.cs +++ b/src/Discord.Net.Core/Entities/Users/UserProperties.cs @@ -22,12 +22,6 @@ namespace Discord /// HypeSquadEvents = 1 << 2, /// - /// Flag given to users who have participated in the bug report program. - /// This flag is obsolete, use instead. - /// - [Obsolete("Use BugHunterLevel1 instead.")] - BugHunter = 1 << 3, - /// /// Flag given to users who have participated in the bug report program and are level 1. /// BugHunterLevel1 = 1 << 3, diff --git a/src/Discord.Net.Core/TokenType.cs b/src/Discord.Net.Core/TokenType.cs index 8ca3f031c..03b840830 100644 --- a/src/Discord.Net.Core/TokenType.cs +++ b/src/Discord.Net.Core/TokenType.cs @@ -5,8 +5,6 @@ namespace Discord /// Specifies the type of token to use with the client. public enum TokenType { - [Obsolete("User logins are deprecated and may result in a ToS strike against your account - please see https://github.com/RogueException/Discord.Net/issues/827", error: true)] - User, /// /// An OAuth2 token type. /// diff --git a/src/Discord.Net.Rest/DiscordRestApiClient.cs b/src/Discord.Net.Rest/DiscordRestApiClient.cs index 002472e5a..d7978db5c 100644 --- a/src/Discord.Net.Rest/DiscordRestApiClient.cs +++ b/src/Discord.Net.Rest/DiscordRestApiClient.cs @@ -79,7 +79,6 @@ namespace Discord.API { return tokenType switch { - default(TokenType) => token, TokenType.Bot => $"Bot {token}", TokenType.Bearer => $"Bearer {token}", _ => throw new ArgumentException(message: "Unknown OAuth token type.", paramName: nameof(tokenType)), diff --git a/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs b/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs index 980b0c5fb..ea703a26a 100644 --- a/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs +++ b/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs @@ -90,8 +90,6 @@ namespace Discord.Rest /// public DateTimeOffset CreatedAt => SnowflakeUtils.FromSnowflake(Id); - [Obsolete("DefaultChannelId is deprecated, use GetDefaultChannelAsync")] - public ulong DefaultChannelId => Id; /// public string IconUrl => CDN.GetGuildIconUrl(Id, IconId); /// diff --git a/src/Discord.Net.Rest/Entities/Invites/RestInviteMetadata.cs b/src/Discord.Net.Rest/Entities/Invites/RestInviteMetadata.cs index 07ee5851c..a0ed9ec81 100644 --- a/src/Discord.Net.Rest/Entities/Invites/RestInviteMetadata.cs +++ b/src/Discord.Net.Rest/Entities/Invites/RestInviteMetadata.cs @@ -8,9 +8,6 @@ namespace Discord.Rest { private long _createdAtTicks; - /// - [Obsolete("This property doesn't exist anymore and shouldn't be used.")] - public bool IsRevoked { get; private set; } /// public bool IsTemporary { get; private set; } /// diff --git a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs index ed8a6c532..59f1c5956 100644 --- a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs +++ b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs @@ -1205,8 +1205,6 @@ namespace Discord.WebSocket /// bool IGuild.Available => true; /// - ulong IGuild.DefaultChannelId => DefaultChannel?.Id ?? 0; - /// ulong? IGuild.WidgetChannelId => WidgetChannelId; /// ulong? IGuild.SystemChannelId => SystemChannelId; diff --git a/src/Discord.Net.WebSocket/Entities/Invites/SocketInvite.cs b/src/Discord.Net.WebSocket/Entities/Invites/SocketInvite.cs index 5dc53a833..845b48b8b 100644 --- a/src/Discord.Net.WebSocket/Entities/Invites/SocketInvite.cs +++ b/src/Discord.Net.WebSocket/Entities/Invites/SocketInvite.cs @@ -49,9 +49,6 @@ namespace Discord.WebSocket /// int? IInvite.MemberCount => throw new NotImplementedException(); /// - [Obsolete("This property doesn't exist anymore and shouldn't be used.")] - bool IInviteMetadata.IsRevoked => throw new NotImplementedException(); - /// public bool IsTemporary { get; private set; } /// int? IInviteMetadata.MaxAge { get => MaxAge; } diff --git a/test/Discord.Net.Tests.Unit/TokenUtilsTests.cs b/test/Discord.Net.Tests.Unit/TokenUtilsTests.cs index e9526b761..4306fa9e2 100644 --- a/test/Discord.Net.Tests.Unit/TokenUtilsTests.cs +++ b/test/Discord.Net.Tests.Unit/TokenUtilsTests.cs @@ -127,8 +127,6 @@ namespace Discord /// The type is treated as an invalid . /// [Theory] - // TokenType.User - [InlineData(0)] // out of range TokenType [InlineData(-1)] [InlineData(4)] From 8ed8714375d61af1696fccca1a34bb2645a2e283 Mon Sep 17 00:00:00 2001 From: Evan Raffel Date: Wed, 26 May 2021 17:46:14 -0400 Subject: [PATCH 126/212] fix: Grab correct Uses value for vanity urls (#1832) --- src/Discord.Net.Rest/API/Common/InviteVanity.cs | 2 ++ src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs | 1 + 2 files changed, 3 insertions(+) diff --git a/src/Discord.Net.Rest/API/Common/InviteVanity.cs b/src/Discord.Net.Rest/API/Common/InviteVanity.cs index d39792674..a36ddee46 100644 --- a/src/Discord.Net.Rest/API/Common/InviteVanity.cs +++ b/src/Discord.Net.Rest/API/Common/InviteVanity.cs @@ -6,5 +6,7 @@ namespace Discord.API { [JsonProperty("code")] public string Code { get; set; } + [JsonProperty("uses")] + public int Uses { get; set; } } } diff --git a/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs b/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs index 331c6f615..58a4ea2c8 100644 --- a/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs +++ b/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs @@ -283,6 +283,7 @@ namespace Discord.Rest var vanityModel = await client.ApiClient.GetVanityInviteAsync(guild.Id, options).ConfigureAwait(false); if (vanityModel == null) throw new InvalidOperationException("This guild does not have a vanity URL."); var inviteModel = await client.ApiClient.GetInviteAsync(vanityModel.Code, options).ConfigureAwait(false); + inviteModel.Uses = vanityModel.Uses; return RestInviteMetadata.Create(client, guild, null, inviteModel); } From dfaaa21e0ec57db5f385f62df9e654410c26f9e7 Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 26 May 2021 20:08:15 -0300 Subject: [PATCH 127/212] misc: Internal change to GetOrCreateUser (#1852) --- src/Discord.Net.WebSocket/DiscordSocketClient.cs | 10 ++++++---- .../Entities/Channels/SocketDMChannel.cs | 6 +++--- .../Entities/Users/SocketGroupUser.cs | 2 +- .../Entities/Users/SocketGuildUser.cs | 6 +++--- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index d4ca6329d..025608a30 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -314,11 +314,13 @@ namespace Discord.WebSocket /// Clears cached users from the client. /// public void PurgeUserCache() => State.PurgeUsers(); - internal SocketGlobalUser GetOrCreateUser(ClientState state, Discord.API.User model, bool cache) + internal SocketGlobalUser GetOrCreateUser(ClientState state, Discord.API.User model) { - if (cache) - return state.GetOrAddUser(model.Id, x => SocketGlobalUser.Create(this, state, model)); - return state.GetUser(model.Id) ?? SocketGlobalUser.Create(this, state, model); + return state.GetOrAddUser(model.Id, x => SocketGlobalUser.Create(this, state, model)); + } + internal SocketUser GetOrCreateTemporaryUser(ClientState state, Discord.API.User model) + { + return state.GetUser(model.Id) ?? (SocketUser)SocketUnknownUser.Create(this, state, model); } internal SocketGlobalUser GetOrCreateSelfUser(ClientState state, Discord.API.User model) { diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs index a42db3b5f..459707dc7 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs @@ -29,14 +29,14 @@ namespace Discord.WebSocket /// public new IReadOnlyCollection Users => ImmutableArray.Create(Discord.CurrentUser, Recipient); - internal SocketDMChannel(DiscordSocketClient discord, ulong id, SocketGlobalUser recipient) + internal SocketDMChannel(DiscordSocketClient discord, ulong id, SocketUser recipient) : base(discord, id) { Recipient = recipient; } internal static SocketDMChannel Create(DiscordSocketClient discord, ClientState state, Model model) { - var entity = new SocketDMChannel(discord, model.Id, discord.GetOrCreateUser(state, model.Recipients.Value[0], false)); + var entity = new SocketDMChannel(discord, model.Id, discord.GetOrCreateTemporaryUser(state, model.Recipients.Value[0])); entity.Update(state, model); return entity; } @@ -46,7 +46,7 @@ namespace Discord.WebSocket } internal static SocketDMChannel Create(DiscordSocketClient discord, ClientState state, ulong channelId, API.User recipient) { - var entity = new SocketDMChannel(discord, channelId, discord.GetOrCreateUser(state, recipient, false)); + var entity = new SocketDMChannel(discord, channelId, discord.GetOrCreateTemporaryUser(state, recipient)); entity.Update(state, recipient); return entity; } diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketGroupUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketGroupUser.cs index 9f66bed12..676c0a86c 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketGroupUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketGroupUser.cs @@ -38,7 +38,7 @@ namespace Discord.WebSocket } internal static SocketGroupUser Create(SocketGroupChannel channel, ClientState state, Model model) { - var entity = new SocketGroupUser(channel, channel.Discord.GetOrCreateUser(state, model, true)); + var entity = new SocketGroupUser(channel, channel.Discord.GetOrCreateUser(state, model)); entity.Update(state, model); return entity; } diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs index 6362d4891..9263fe642 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs @@ -116,20 +116,20 @@ namespace Discord.WebSocket } internal static SocketGuildUser Create(SocketGuild guild, ClientState state, UserModel model) { - var entity = new SocketGuildUser(guild, guild.Discord.GetOrCreateUser(state, model, true)); + var entity = new SocketGuildUser(guild, guild.Discord.GetOrCreateUser(state, model)); entity.Update(state, model); entity.UpdateRoles(new ulong[0]); return entity; } internal static SocketGuildUser Create(SocketGuild guild, ClientState state, MemberModel model) { - var entity = new SocketGuildUser(guild, guild.Discord.GetOrCreateUser(state, model.User, true)); + var entity = new SocketGuildUser(guild, guild.Discord.GetOrCreateUser(state, model.User)); entity.Update(state, model); return entity; } internal static SocketGuildUser Create(SocketGuild guild, ClientState state, PresenceModel model) { - var entity = new SocketGuildUser(guild, guild.Discord.GetOrCreateUser(state, model.User, true)); + var entity = new SocketGuildUser(guild, guild.Discord.GetOrCreateUser(state, model.User)); entity.Update(state, model, false); return entity; } From a7ff6ce0ec81092b201fcbdd4d93c158eada7c7a Mon Sep 17 00:00:00 2001 From: Paulo Date: Fri, 28 May 2021 10:09:05 -0300 Subject: [PATCH 128/212] fix: Gateway events for DMs (#1854) * Fix MessageUpdate when there's no channel cached * Fix message events * Fix cacheable type * Fix examples * Revert MessageUpdated --- .../BaseSocketClient.Events.Examples.cs | 9 +- .../API/Gateway/Reaction.cs | 2 + .../BaseSocketClient.Events.cs | 28 +- .../DiscordSocketClient.cs | 405 ++++++++++-------- .../DiscordSocketConfig.cs | 16 - 5 files changed, 248 insertions(+), 212 deletions(-) diff --git a/src/Discord.Net.Examples/WebSocket/BaseSocketClient.Events.Examples.cs b/src/Discord.Net.Examples/WebSocket/BaseSocketClient.Events.Examples.cs index 387584877..27d393c07 100644 --- a/src/Discord.Net.Examples/WebSocket/BaseSocketClient.Events.Examples.cs +++ b/src/Discord.Net.Examples/WebSocket/BaseSocketClient.Events.Examples.cs @@ -15,7 +15,7 @@ namespace Discord.Net.Examples.WebSocket => client.ReactionAdded += HandleReactionAddedAsync; public async Task HandleReactionAddedAsync(Cacheable cachedMessage, - ISocketMessageChannel originChannel, SocketReaction reaction) + Cacheable originChannel, SocketReaction reaction) { var message = await cachedMessage.GetOrDownloadAsync(); if (message != null && reaction.User.IsSpecified) @@ -100,16 +100,17 @@ namespace Discord.Net.Examples.WebSocket public void HookMessageDeleted(BaseSocketClient client) => client.MessageDeleted += HandleMessageDelete; - public Task HandleMessageDelete(Cacheable cachedMessage, ISocketMessageChannel channel) + public async Task HandleMessageDelete(Cacheable cachedMessage, Cacheable cachedChannel) { // check if the message exists in cache; if not, we cannot report what was removed - if (!cachedMessage.HasValue) return Task.CompletedTask; + if (!cachedMessage.HasValue) return; + // gets or downloads the channel if it's not in the cache + IMessageChannel channel = await cachedChannel.GetOrDownloadAsync(); var message = cachedMessage.Value; Console.WriteLine( $"A message ({message.Id}) from {message.Author} was removed from the channel {channel.Name} ({channel.Id}):" + Environment.NewLine + message.Content); - return Task.CompletedTask; } #endregion diff --git a/src/Discord.Net.WebSocket/API/Gateway/Reaction.cs b/src/Discord.Net.WebSocket/API/Gateway/Reaction.cs index a0a740868..0d17cbff8 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/Reaction.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/Reaction.cs @@ -10,6 +10,8 @@ namespace Discord.API.Gateway public ulong MessageId { get; set; } [JsonProperty("channel_id")] public ulong ChannelId { get; set; } + [JsonProperty("guild_id")] + public Optional GuildId { get; set; } [JsonProperty("emoji")] public Emoji Emoji { get; set; } [JsonProperty("member")] diff --git a/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs b/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs index 966aec7fa..e15e6a687 100644 --- a/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs +++ b/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs @@ -124,11 +124,11 @@ namespace Discord.WebSocket /// /// - public event Func, ISocketMessageChannel, Task> MessageDeleted { + public event Func, Cacheable, Task> MessageDeleted { add { _messageDeletedEvent.Add(value); } remove { _messageDeletedEvent.Remove(value); } } - internal readonly AsyncEvent, ISocketMessageChannel, Task>> _messageDeletedEvent = new AsyncEvent, ISocketMessageChannel, Task>>(); + internal readonly AsyncEvent, Cacheable, Task>> _messageDeletedEvent = new AsyncEvent, Cacheable, Task>>(); /// Fired when multiple messages are bulk deleted. /// /// @@ -155,12 +155,12 @@ namespace Discord.WebSocket /// parameter. /// /// - public event Func>, ISocketMessageChannel, Task> MessagesBulkDeleted + public event Func>, Cacheable, Task> MessagesBulkDeleted { add { _messagesBulkDeletedEvent.Add(value); } remove { _messagesBulkDeletedEvent.Remove(value); } } - internal readonly AsyncEvent>, ISocketMessageChannel, Task>> _messagesBulkDeletedEvent = new AsyncEvent>, ISocketMessageChannel, Task>>(); + internal readonly AsyncEvent>, Cacheable, Task>> _messagesBulkDeletedEvent = new AsyncEvent>, Cacheable, Task>>(); /// Fired when a message is updated. /// /// @@ -217,23 +217,23 @@ namespace Discord.WebSocket /// /// - public event Func, ISocketMessageChannel, SocketReaction, Task> ReactionAdded { + public event Func, Cacheable, SocketReaction, Task> ReactionAdded { add { _reactionAddedEvent.Add(value); } remove { _reactionAddedEvent.Remove(value); } } - internal readonly AsyncEvent, ISocketMessageChannel, SocketReaction, Task>> _reactionAddedEvent = new AsyncEvent, ISocketMessageChannel, SocketReaction, Task>>(); + internal readonly AsyncEvent, Cacheable, SocketReaction, Task>> _reactionAddedEvent = new AsyncEvent, Cacheable, SocketReaction, Task>>(); /// Fired when a reaction is removed from a message. - public event Func, ISocketMessageChannel, SocketReaction, Task> ReactionRemoved { + public event Func, Cacheable, SocketReaction, Task> ReactionRemoved { add { _reactionRemovedEvent.Add(value); } remove { _reactionRemovedEvent.Remove(value); } } - internal readonly AsyncEvent, ISocketMessageChannel, SocketReaction, Task>> _reactionRemovedEvent = new AsyncEvent, ISocketMessageChannel, SocketReaction, Task>>(); + internal readonly AsyncEvent, Cacheable, SocketReaction, Task>> _reactionRemovedEvent = new AsyncEvent, Cacheable, SocketReaction, Task>>(); /// Fired when all reactions to a message are cleared. - public event Func, ISocketMessageChannel, Task> ReactionsCleared { + public event Func, Cacheable, Task> ReactionsCleared { add { _reactionsClearedEvent.Add(value); } remove { _reactionsClearedEvent.Remove(value); } } - internal readonly AsyncEvent, ISocketMessageChannel, Task>> _reactionsClearedEvent = new AsyncEvent, ISocketMessageChannel, Task>>(); + internal readonly AsyncEvent, Cacheable, Task>> _reactionsClearedEvent = new AsyncEvent, Cacheable, Task>>(); /// /// Fired when all reactions to a message with a specific emote are removed. /// @@ -250,12 +250,12 @@ namespace Discord.WebSocket /// The emoji that all reactions had and were removed will be passed into the parameter. /// /// - public event Func, ISocketMessageChannel, IEmote, Task> ReactionsRemovedForEmote + public event Func, Cacheable, IEmote, Task> ReactionsRemovedForEmote { add { _reactionsRemovedForEmoteEvent.Add(value); } remove { _reactionsRemovedForEmoteEvent.Remove(value); } } - internal readonly AsyncEvent, ISocketMessageChannel, IEmote, Task>> _reactionsRemovedForEmoteEvent = new AsyncEvent, ISocketMessageChannel, IEmote, Task>>(); + internal readonly AsyncEvent, Cacheable, IEmote, Task>> _reactionsRemovedForEmoteEvent = new AsyncEvent, Cacheable, IEmote, Task>>(); //Roles /// Fired when a role is created. @@ -372,11 +372,11 @@ namespace Discord.WebSocket } internal readonly AsyncEvent> _selfUpdatedEvent = new AsyncEvent>(); /// Fired when a user starts typing. - public event Func UserIsTyping { + public event Func, Cacheable, Task> UserIsTyping { add { _userIsTypingEvent.Add(value); } remove { _userIsTypingEvent.Remove(value); } } - internal readonly AsyncEvent> _userIsTypingEvent = new AsyncEvent>(); + internal readonly AsyncEvent, Cacheable, Task>> _userIsTypingEvent = new AsyncEvent, Cacheable, Task>>(); /// Fired when a user joins a group channel. public event Func RecipientAdded { add { _recipientAddedEvent.Add(value); } diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 025608a30..0e854421e 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -71,7 +71,6 @@ namespace Discord.WebSocket internal WebSocketProvider WebSocketProvider { get; private set; } internal bool AlwaysDownloadUsers { get; private set; } internal int? HandlerTimeout { get; private set; } - internal bool? ExclusiveBulkDelete { get; private set; } internal new DiscordSocketApiClient ApiClient => base.ApiClient as DiscordSocketApiClient; /// @@ -132,7 +131,6 @@ namespace Discord.WebSocket WebSocketProvider = config.WebSocketProvider; AlwaysDownloadUsers = config.AlwaysDownloadUsers; HandlerTimeout = config.HandlerTimeout; - ExclusiveBulkDelete = config.ExclusiveBulkDelete; State = new ClientState(0, 0); Rest = new DiscordSocketRestClient(config, ApiClient); _heartbeatTimes = new ConcurrentQueue(); @@ -296,6 +294,44 @@ namespace Discord.WebSocket public override SocketChannel GetChannel(ulong id) => State.GetChannel(id); /// + /// Gets a generic channel from the cache or does a rest request if unavailable. + /// + /// + /// + /// var channel = await _client.GetChannelAsync(381889909113225237); + /// if (channel != null && channel is IMessageChannel msgChannel) + /// { + /// await msgChannel.SendMessageAsync($"{msgChannel} is created at {msgChannel.CreatedAt}"); + /// } + /// + /// + /// The snowflake identifier of the channel (e.g. `381889909113225237`). + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains the channel associated + /// with the snowflake identifier; null when the channel cannot be found. + /// + public async ValueTask GetChannelAsync(ulong id, RequestOptions options = null) + => GetChannel(id) ?? (IChannel)await ClientHelper.GetChannelAsync(this, id, options).ConfigureAwait(false); + /// + /// Gets a user from the cache or does a rest request if unavailable. + /// + /// + /// + /// var user = await _client.GetUserAsync(168693960628371456); + /// if (user != null) + /// Console.WriteLine($"{user} is created at {user.CreatedAt}."; + /// + /// + /// The snowflake identifier of the user (e.g. `168693960628371456`). + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains the user associated with + /// the snowflake identifier; null if the user is not found. + /// + public async ValueTask GetUserAsync(ulong id, RequestOptions options = null) + => await ClientHelper.GetUserAsync(this, id, options).ConfigureAwait(false); + /// /// Clears all cached channels from the client. /// public void PurgeChannelCache() => State.PurgeAllChannels(); @@ -1227,7 +1263,7 @@ namespace Discord.WebSocket await _gatewayLogger.DebugAsync("Received Dispatch (MESSAGE_CREATE)").ConfigureAwait(false); var data = (payload as JToken).ToObject(_serializer); - var channel = State.GetChannel(data.ChannelId) as ISocketMessageChannel; + var channel = GetChannel(data.ChannelId) as ISocketMessageChannel; var guild = (channel as SocketGuildChannel)?.Guild; if (guild != null && !guild.IsSynced) @@ -1291,52 +1327,77 @@ namespace Discord.WebSocket await _gatewayLogger.DebugAsync("Received Dispatch (MESSAGE_UPDATE)").ConfigureAwait(false); var data = (payload as JToken).ToObject(_serializer); - if (State.GetChannel(data.ChannelId) is ISocketMessageChannel channel) + var channel = GetChannel(data.ChannelId) as ISocketMessageChannel; + + var guild = (channel as SocketGuildChannel)?.Guild; + if (guild != null && !guild.IsSynced) { - var guild = (channel as SocketGuildChannel)?.Guild; - if (guild != null && !guild.IsSynced) + await UnsyncedGuildAsync(type, guild.Id).ConfigureAwait(false); + return; + } + + if (channel == null) + { + if (!data.GuildId.IsSpecified) // assume it is a DM { - await UnsyncedGuildAsync(type, guild.Id).ConfigureAwait(false); + channel = CreateDMChannel(data.ChannelId, data.Author.Value, State); + } + else + { + await UnknownChannelAsync(type, data.ChannelId).ConfigureAwait(false); return; } + } - SocketMessage before = null, after = null; - SocketMessage cachedMsg = channel.GetCachedMessage(data.Id); - bool isCached = cachedMsg != null; - if (isCached) + SocketMessage before = null, after = null; + SocketMessage cachedMsg = channel.GetCachedMessage(data.Id); + bool isCached = cachedMsg != null; + if (isCached) + { + before = cachedMsg.Clone(); + cachedMsg.Update(State, data); + after = cachedMsg; + } + else + { + //Edited message isnt in cache, create a detached one + SocketUser author; + if (guild != null) { - before = cachedMsg.Clone(); - cachedMsg.Update(State, data); - after = cachedMsg; + if (data.WebhookId.IsSpecified) + author = SocketWebhookUser.Create(guild, State, data.Author.Value, data.WebhookId.Value); + else + author = guild.GetUser(data.Author.Value.Id); } else + author = (channel as SocketChannel).GetUser(data.Author.Value.Id); + + if (author == null) { - //Edited message isnt in cache, create a detached one - SocketUser author; - if (data.Author.IsSpecified) + if (guild != null) { - if (guild != null) - author = guild.GetUser(data.Author.Value.Id); + if (data.Member.IsSpecified) // member isn't always included, but use it when we can + { + data.Member.Value.User = data.Author.Value; + author = guild.AddOrUpdateUser(data.Member.Value); + } else - author = (channel as SocketChannel).GetUser(data.Author.Value.Id); - if (author == null) - author = SocketUnknownUser.Create(this, State, data.Author.Value); + author = guild.AddOrUpdateUser(data.Author.Value); // user has no guild-specific data } + else if (channel is SocketGroupChannel groupChannel) + author = groupChannel.GetOrAddUser(data.Author.Value); else - // Message author wasn't specified in the payload, so create a completely anonymous unknown user - author = new SocketUnknownUser(this, id: 0); - - after = SocketMessage.Create(this, State, author, channel, data); + { + await UnknownChannelUserAsync(type, data.Author.Value.Id, channel.Id).ConfigureAwait(false); + return; + } } - var cacheableBefore = new Cacheable(before, data.Id, isCached, async () => await channel.GetMessageAsync(data.Id).ConfigureAwait(false)); - await TimedInvokeAsync(_messageUpdatedEvent, nameof(MessageUpdated), cacheableBefore, after, channel).ConfigureAwait(false); - } - else - { - await UnknownChannelAsync(type, data.ChannelId).ConfigureAwait(false); - return; + after = SocketMessage.Create(this, State, author, channel, data); } + var cacheableBefore = new Cacheable(before, data.Id, isCached, async () => await channel.GetMessageAsync(data.Id).ConfigureAwait(false)); + + await TimedInvokeAsync(_messageUpdatedEvent, nameof(MessageUpdated), cacheableBefore, after, channel).ConfigureAwait(false); } break; case "MESSAGE_DELETE": @@ -1344,26 +1405,22 @@ namespace Discord.WebSocket await _gatewayLogger.DebugAsync("Received Dispatch (MESSAGE_DELETE)").ConfigureAwait(false); var data = (payload as JToken).ToObject(_serializer); - if (State.GetChannel(data.ChannelId) is ISocketMessageChannel channel) - { - var guild = (channel as SocketGuildChannel)?.Guild; - if (!(guild?.IsSynced ?? true)) - { - await UnsyncedGuildAsync(type, guild.Id).ConfigureAwait(false); - return; - } + var channel = GetChannel(data.ChannelId) as ISocketMessageChannel; - var msg = SocketChannelHelper.RemoveMessage(channel, this, data.Id); - bool isCached = msg != null; - var cacheable = new Cacheable(msg, data.Id, isCached, async () => await channel.GetMessageAsync(data.Id).ConfigureAwait(false)); - - await TimedInvokeAsync(_messageDeletedEvent, nameof(MessageDeleted), cacheable, channel).ConfigureAwait(false); - } - else + var guild = (channel as SocketGuildChannel)?.Guild; + if (!(guild?.IsSynced ?? true)) { - await UnknownChannelAsync(type, data.ChannelId).ConfigureAwait(false); + await UnsyncedGuildAsync(type, guild.Id).ConfigureAwait(false); return; } + + SocketMessage msg = null; + if (channel != null) + msg = SocketChannelHelper.RemoveMessage(channel, this, data.Id); + var cacheableMsg = new Cacheable(msg, data.Id, msg != null, () => Task.FromResult((IMessage)null)); + var cacheableChannel = new Cacheable(channel, data.ChannelId, channel != null, async () => await GetChannelAsync(data.ChannelId).ConfigureAwait(false) as IMessageChannel); + + await TimedInvokeAsync(_messageDeletedEvent, nameof(MessageDeleted), cacheableMsg, cacheableChannel).ConfigureAwait(false); } break; case "MESSAGE_REACTION_ADD": @@ -1371,40 +1428,43 @@ namespace Discord.WebSocket await _gatewayLogger.DebugAsync("Received Dispatch (MESSAGE_REACTION_ADD)").ConfigureAwait(false); var data = (payload as JToken).ToObject(_serializer); - if (State.GetChannel(data.ChannelId) is ISocketMessageChannel channel) - { - var cachedMsg = channel.GetCachedMessage(data.MessageId) as SocketUserMessage; - bool isCached = cachedMsg != null; - var user = await channel.GetUserAsync(data.UserId, CacheMode.CacheOnly).ConfigureAwait(false); + var channel = GetChannel(data.ChannelId) as ISocketMessageChannel; - var optionalMsg = !isCached - ? Optional.Create() - : Optional.Create(cachedMsg); - - if (data.Member.IsSpecified) - { - var guild = (channel as SocketGuildChannel)?.Guild; - - if (guild != null) - user = guild.AddOrUpdateUser(data.Member.Value); - } - - var optionalUser = user is null - ? Optional.Create() - : Optional.Create(user); + var cachedMsg = channel?.GetCachedMessage(data.MessageId) as SocketUserMessage; + bool isMsgCached = cachedMsg != null; + IUser user = null; + if (channel != null) + user = await channel.GetUserAsync(data.UserId, CacheMode.CacheOnly).ConfigureAwait(false); - var reaction = SocketReaction.Create(data, channel, optionalMsg, optionalUser); - var cacheable = new Cacheable(cachedMsg, data.MessageId, isCached, async () => await channel.GetMessageAsync(data.MessageId).ConfigureAwait(false) as IUserMessage); + var optionalMsg = !isMsgCached + ? Optional.Create() + : Optional.Create(cachedMsg); - cachedMsg?.AddReaction(reaction); + if (data.Member.IsSpecified) + { + var guild = (channel as SocketGuildChannel)?.Guild; - await TimedInvokeAsync(_reactionAddedEvent, nameof(ReactionAdded), cacheable, channel, reaction).ConfigureAwait(false); + if (guild != null) + user = guild.AddOrUpdateUser(data.Member.Value); } else + user = GetUser(data.UserId); + + var optionalUser = user is null + ? Optional.Create() + : Optional.Create(user); + + var cacheableChannel = new Cacheable(channel, data.ChannelId, channel != null, async () => await GetChannelAsync(data.ChannelId).ConfigureAwait(false) as IMessageChannel); + var cacheableMsg = new Cacheable(cachedMsg, data.MessageId, isMsgCached, async () => { - await UnknownChannelAsync(type, data.ChannelId).ConfigureAwait(false); - return; - } + var channelObj = await cacheableChannel.GetOrDownloadAsync().ConfigureAwait(false); + return await channelObj.GetMessageAsync(data.MessageId).ConfigureAwait(false) as IUserMessage; + }); + var reaction = SocketReaction.Create(data, channel, optionalMsg, optionalUser); + + cachedMsg?.AddReaction(reaction); + + await TimedInvokeAsync(_reactionAddedEvent, nameof(ReactionAdded), cacheableMsg, cacheableChannel, reaction).ConfigureAwait(false); } break; case "MESSAGE_REACTION_REMOVE": @@ -1412,32 +1472,35 @@ namespace Discord.WebSocket await _gatewayLogger.DebugAsync("Received Dispatch (MESSAGE_REACTION_REMOVE)").ConfigureAwait(false); var data = (payload as JToken).ToObject(_serializer); - if (State.GetChannel(data.ChannelId) is ISocketMessageChannel channel) - { - var cachedMsg = channel.GetCachedMessage(data.MessageId) as SocketUserMessage; - bool isCached = cachedMsg != null; - var user = await channel.GetUserAsync(data.UserId, CacheMode.CacheOnly).ConfigureAwait(false); + var channel = GetChannel(data.ChannelId) as ISocketMessageChannel; - var optionalMsg = !isCached - ? Optional.Create() - : Optional.Create(cachedMsg); - - var optionalUser = user is null - ? Optional.Create() - : Optional.Create(user); + var cachedMsg = channel?.GetCachedMessage(data.MessageId) as SocketUserMessage; + bool isMsgCached = cachedMsg != null; + IUser user = null; + if (channel != null) + user = await channel.GetUserAsync(data.UserId, CacheMode.CacheOnly).ConfigureAwait(false); + else if (!data.GuildId.IsSpecified) + user = GetUser(data.UserId); - var reaction = SocketReaction.Create(data, channel, optionalMsg, optionalUser); - var cacheable = new Cacheable(cachedMsg, data.MessageId, isCached, async () => await channel.GetMessageAsync(data.MessageId).ConfigureAwait(false) as IUserMessage); + var optionalMsg = !isMsgCached + ? Optional.Create() + : Optional.Create(cachedMsg); - cachedMsg?.RemoveReaction(reaction); + var optionalUser = user is null + ? Optional.Create() + : Optional.Create(user); - await TimedInvokeAsync(_reactionRemovedEvent, nameof(ReactionRemoved), cacheable, channel, reaction).ConfigureAwait(false); - } - else + var cacheableChannel = new Cacheable(channel, data.ChannelId, channel != null, async () => await GetChannelAsync(data.ChannelId).ConfigureAwait(false) as IMessageChannel); + var cacheableMsg = new Cacheable(cachedMsg, data.MessageId, isMsgCached, async () => { - await UnknownChannelAsync(type, data.ChannelId).ConfigureAwait(false); - return; - } + var channelObj = await cacheableChannel.GetOrDownloadAsync().ConfigureAwait(false); + return await channelObj.GetMessageAsync(data.MessageId).ConfigureAwait(false) as IUserMessage; + }); + var reaction = SocketReaction.Create(data, channel, optionalMsg, optionalUser); + + cachedMsg?.RemoveReaction(reaction); + + await TimedInvokeAsync(_reactionRemovedEvent, nameof(ReactionRemoved), cacheableMsg, cacheableChannel, reaction).ConfigureAwait(false); } break; case "MESSAGE_REACTION_REMOVE_ALL": @@ -1445,21 +1508,20 @@ namespace Discord.WebSocket await _gatewayLogger.DebugAsync("Received Dispatch (MESSAGE_REACTION_REMOVE_ALL)").ConfigureAwait(false); var data = (payload as JToken).ToObject(_serializer); - if (State.GetChannel(data.ChannelId) is ISocketMessageChannel channel) + var channel = GetChannel(data.ChannelId) as ISocketMessageChannel; + + var cacheableChannel = new Cacheable(channel, data.ChannelId, channel != null, async () => await GetChannelAsync(data.ChannelId).ConfigureAwait(false) as IMessageChannel); + var cachedMsg = channel?.GetCachedMessage(data.MessageId) as SocketUserMessage; + bool isMsgCached = cachedMsg != null; + var cacheableMsg = new Cacheable(cachedMsg, data.MessageId, isMsgCached, async () => { - var cachedMsg = channel.GetCachedMessage(data.MessageId) as SocketUserMessage; - bool isCached = cachedMsg != null; - var cacheable = new Cacheable(cachedMsg, data.MessageId, isCached, async () => (await channel.GetMessageAsync(data.MessageId).ConfigureAwait(false)) as IUserMessage); + var channelObj = await cacheableChannel.GetOrDownloadAsync().ConfigureAwait(false); + return await channelObj.GetMessageAsync(data.MessageId).ConfigureAwait(false) as IUserMessage; + }); - cachedMsg?.ClearReactions(); + cachedMsg?.ClearReactions(); - await TimedInvokeAsync(_reactionsClearedEvent, nameof(ReactionsCleared), cacheable, channel).ConfigureAwait(false); - } - else - { - await UnknownChannelAsync(type, data.ChannelId).ConfigureAwait(false); - return; - } + await TimedInvokeAsync(_reactionsClearedEvent, nameof(ReactionsCleared), cacheableMsg, cacheableChannel).ConfigureAwait(false); } break; case "MESSAGE_REACTION_REMOVE_EMOJI": @@ -1467,70 +1529,55 @@ namespace Discord.WebSocket await _gatewayLogger.DebugAsync("Received Dispatch (MESSAGE_REACTION_REMOVE_EMOJI)").ConfigureAwait(false); var data = (payload as JToken).ToObject(_serializer); - if (State.GetChannel(data.ChannelId) is ISocketMessageChannel channel) - { - var cachedMsg = channel.GetCachedMessage(data.MessageId) as SocketUserMessage; - bool isCached = cachedMsg != null; + var channel = GetChannel(data.ChannelId) as ISocketMessageChannel; - var optionalMsg = !isCached - ? Optional.Create() - : Optional.Create(cachedMsg); + var cachedMsg = channel?.GetCachedMessage(data.MessageId) as SocketUserMessage; + bool isMsgCached = cachedMsg != null; - var cacheable = new Cacheable(cachedMsg, data.MessageId, isCached, async () => await channel.GetMessageAsync(data.MessageId).ConfigureAwait(false) as IUserMessage); - var emote = data.Emoji.ToIEmote(); + var optionalMsg = !isMsgCached + ? Optional.Create() + : Optional.Create(cachedMsg); - cachedMsg?.RemoveReactionsForEmote(emote); - - await TimedInvokeAsync(_reactionsRemovedForEmoteEvent, nameof(ReactionsRemovedForEmote), cacheable, channel, emote).ConfigureAwait(false); - } - else + var cacheableChannel = new Cacheable(channel, data.ChannelId, channel != null, async () => await GetChannelAsync(data.ChannelId).ConfigureAwait(false) as IMessageChannel); + var cacheableMsg = new Cacheable(cachedMsg, data.MessageId, isMsgCached, async () => { - await UnknownChannelAsync(type, data.ChannelId).ConfigureAwait(false); - return; - } + var channelObj = await cacheableChannel.GetOrDownloadAsync().ConfigureAwait(false); + return await channelObj.GetMessageAsync(data.MessageId).ConfigureAwait(false) as IUserMessage; + }); + var emote = data.Emoji.ToIEmote(); + + cachedMsg?.RemoveReactionsForEmote(emote); + + await TimedInvokeAsync(_reactionsRemovedForEmoteEvent, nameof(ReactionsRemovedForEmote), cacheableMsg, cacheableChannel, emote).ConfigureAwait(false); } break; case "MESSAGE_DELETE_BULK": { await _gatewayLogger.DebugAsync("Received Dispatch (MESSAGE_DELETE_BULK)").ConfigureAwait(false); - if (!ExclusiveBulkDelete.HasValue) - { - await _gatewayLogger.WarningAsync("A bulk delete event has been received, but the event handling behavior has not been set. " + - "To suppress this message, set the ExclusiveBulkDelete configuration property. " + - "This message will appear only once."); - ExclusiveBulkDelete = false; - } - var data = (payload as JToken).ToObject(_serializer); - if (State.GetChannel(data.ChannelId) is ISocketMessageChannel channel) - { - var guild = (channel as SocketGuildChannel)?.Guild; - if (!(guild?.IsSynced ?? true)) - { - await UnsyncedGuildAsync(type, guild.Id).ConfigureAwait(false); - return; - } - - var cacheableList = new List>(data.Ids.Length); - foreach (ulong id in data.Ids) - { - var msg = SocketChannelHelper.RemoveMessage(channel, this, id); - bool isCached = msg != null; - var cacheable = new Cacheable(msg, id, isCached, async () => await channel.GetMessageAsync(id).ConfigureAwait(false)); - cacheableList.Add(cacheable); - - if (!ExclusiveBulkDelete ?? false) // this shouldn't happen, but we'll play it safe anyways - await TimedInvokeAsync(_messageDeletedEvent, nameof(MessageDeleted), cacheable, channel).ConfigureAwait(false); - } + var channel = GetChannel(data.ChannelId) as ISocketMessageChannel; - await TimedInvokeAsync(_messagesBulkDeletedEvent, nameof(MessagesBulkDeleted), cacheableList, channel).ConfigureAwait(false); - } - else + var guild = (channel as SocketGuildChannel)?.Guild; + if (!(guild?.IsSynced ?? true)) { - await UnknownChannelAsync(type, data.ChannelId).ConfigureAwait(false); + await UnsyncedGuildAsync(type, guild.Id).ConfigureAwait(false); return; } + + var cacheableChannel = new Cacheable(channel, data.ChannelId, channel != null, async () => await GetChannelAsync(data.ChannelId).ConfigureAwait(false) as IMessageChannel); + var cacheableList = new List>(data.Ids.Length); + foreach (ulong id in data.Ids) + { + SocketMessage msg = null; + if (channel != null) + msg = SocketChannelHelper.RemoveMessage(channel, this, id); + bool isMsgCached = msg != null; + var cacheableMsg = new Cacheable(msg, id, isMsgCached, () => Task.FromResult((IMessage)null)); + cacheableList.Add(cacheableMsg); + } + + await TimedInvokeAsync(_messagesBulkDeletedEvent, nameof(MessagesBulkDeleted), cacheableList, cacheableChannel).ConfigureAwait(false); } break; @@ -1599,24 +1646,26 @@ namespace Discord.WebSocket await _gatewayLogger.DebugAsync("Received Dispatch (TYPING_START)").ConfigureAwait(false); var data = (payload as JToken).ToObject(_serializer); - if (State.GetChannel(data.ChannelId) is ISocketMessageChannel channel) + var channel = GetChannel(data.ChannelId) as ISocketMessageChannel; + + var guild = (channel as SocketGuildChannel)?.Guild; + if (!(guild?.IsSynced ?? true)) { - var guild = (channel as SocketGuildChannel)?.Guild; - if (!(guild?.IsSynced ?? true)) - { - await UnsyncedGuildAsync(type, guild.Id).ConfigureAwait(false); - return; - } + await UnsyncedGuildAsync(type, guild.Id).ConfigureAwait(false); + return; + } - var user = (channel as SocketChannel).GetUser(data.UserId); - if (user == null) - { - if (guild != null) - user = guild.AddOrUpdateUser(data.Member); - } - if (user != null) - await TimedInvokeAsync(_userIsTypingEvent, nameof(UserIsTyping), user, channel).ConfigureAwait(false); + var cacheableChannel = new Cacheable(channel, data.ChannelId, channel != null, async () => await GetChannelAsync(data.ChannelId).ConfigureAwait(false) as IMessageChannel); + + var user = (channel as SocketChannel)?.GetUser(data.UserId); + if (user == null) + { + if (guild != null) + user = guild.AddOrUpdateUser(data.Member); } + var cacheableUser = new Cacheable(user, data.UserId, user != null, async () => await GetUserAsync(data.UserId).ConfigureAwait(false)); + + await TimedInvokeAsync(_userIsTypingEvent, nameof(UserIsTyping), cacheableUser, cacheableChannel).ConfigureAwait(false); } break; @@ -1688,7 +1737,7 @@ namespace Discord.WebSocket } else { - var groupChannel = State.GetChannel(data.ChannelId.Value) as SocketGroupChannel; + var groupChannel = GetChannel(data.ChannelId.Value) as SocketGroupChannel; if (groupChannel == null) { await UnknownChannelAsync(type, data.ChannelId.Value).ConfigureAwait(false); @@ -2113,8 +2162,8 @@ namespace Discord.WebSocket => await GetApplicationInfoAsync().ConfigureAwait(false); /// - Task IDiscordClient.GetChannelAsync(ulong id, CacheMode mode, RequestOptions options) - => Task.FromResult(GetChannel(id)); + async Task IDiscordClient.GetChannelAsync(ulong id, CacheMode mode, RequestOptions options) + => mode == CacheMode.AllowDownload ? await GetChannelAsync(id, options).ConfigureAwait(false) : GetChannel(id); /// Task> IDiscordClient.GetPrivateChannelsAsync(CacheMode mode, RequestOptions options) => Task.FromResult>(PrivateChannels); @@ -2144,8 +2193,8 @@ namespace Discord.WebSocket => await CreateGuildAsync(name, region, jpegIcon).ConfigureAwait(false); /// - Task IDiscordClient.GetUserAsync(ulong id, CacheMode mode, RequestOptions options) - => Task.FromResult(GetUser(id)); + async Task IDiscordClient.GetUserAsync(ulong id, CacheMode mode, RequestOptions options) + => mode == CacheMode.AllowDownload ? await GetUserAsync(id, options).ConfigureAwait(false) : GetUser(id); /// Task IDiscordClient.GetUserAsync(string username, string discriminator, RequestOptions options) => Task.FromResult(GetUser(username, discriminator)); diff --git a/src/Discord.Net.WebSocket/DiscordSocketConfig.cs b/src/Discord.Net.WebSocket/DiscordSocketConfig.cs index 90b746787..22a201c67 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketConfig.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketConfig.cs @@ -111,22 +111,6 @@ namespace Discord.WebSocket /// public int? HandlerTimeout { get; set; } = 3000; - /// - /// Gets or sets the behavior for on bulk deletes. - /// - /// - /// - /// If true, the event will not be raised for bulk - /// deletes, and only the will be raised. If false - /// , both events will be raised. - /// - /// - /// If unset, both events will be raised, but a warning will be raised the first time a bulk delete event is - /// received. - /// - /// - public bool? ExclusiveBulkDelete { get; set; } = null; - /// /// Gets or sets the maximum identify concurrency. /// From d176fef5de3da891d9e0f6108c91abc54b8d653f Mon Sep 17 00:00:00 2001 From: Paulo Date: Fri, 28 May 2021 10:09:21 -0300 Subject: [PATCH 129/212] fix: Fire GuildMemberUpdated without cached user (#1853) --- src/Discord.Net.WebSocket/BaseSocketClient.Events.cs | 1 + src/Discord.Net.WebSocket/DiscordSocketClient.cs | 7 ++----- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs b/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs index e15e6a687..c947e2d24 100644 --- a/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs +++ b/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs @@ -347,6 +347,7 @@ namespace Discord.WebSocket } internal readonly AsyncEvent> _userUpdatedEvent = new AsyncEvent>(); /// Fired when a guild member is updated, or a member presence is updated. + /// The first user (state before) might be null if they weren't in the cache. public event Func GuildMemberUpdated { add { _guildMemberUpdatedEvent.Add(value); } remove { _guildMemberUpdatedEvent.Remove(value); } diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 0e854421e..c0638af8f 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -996,11 +996,8 @@ namespace Discord.WebSocket } else { - if (!guild.HasAllMembers) - await IncompleteGuildUserAsync(type, data.User.Id, data.GuildId).ConfigureAwait(false); - else - await UnknownGuildUserAsync(type, data.User.Id, data.GuildId).ConfigureAwait(false); - return; + user = guild.AddOrUpdateUser(data); + await TimedInvokeAsync(_guildMemberUpdatedEvent, nameof(GuildMemberUpdated), null, user).ConfigureAwait(false); } } else From 8b29e0feb4d46b78d5381a32960c776cd7c631a9 Mon Sep 17 00:00:00 2001 From: Paulo Date: Fri, 28 May 2021 13:39:38 -0300 Subject: [PATCH 130/212] fix: MessageUpdated without author (#1858) --- .../DiscordSocketClient.cs | 48 +++++++++++-------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index c0638af8f..9b5b8ab36 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -1359,36 +1359,42 @@ namespace Discord.WebSocket { //Edited message isnt in cache, create a detached one SocketUser author; - if (guild != null) - { - if (data.WebhookId.IsSpecified) - author = SocketWebhookUser.Create(guild, State, data.Author.Value, data.WebhookId.Value); - else - author = guild.GetUser(data.Author.Value.Id); - } - else - author = (channel as SocketChannel).GetUser(data.Author.Value.Id); - - if (author == null) + if (data.Author.IsSpecified) { if (guild != null) { - if (data.Member.IsSpecified) // member isn't always included, but use it when we can - { - data.Member.Value.User = data.Author.Value; - author = guild.AddOrUpdateUser(data.Member.Value); - } + if (data.WebhookId.IsSpecified) + author = SocketWebhookUser.Create(guild, State, data.Author.Value, data.WebhookId.Value); else - author = guild.AddOrUpdateUser(data.Author.Value); // user has no guild-specific data + author = guild.GetUser(data.Author.Value.Id); } - else if (channel is SocketGroupChannel groupChannel) - author = groupChannel.GetOrAddUser(data.Author.Value); else + author = (channel as SocketChannel).GetUser(data.Author.Value.Id); + + if (author == null) { - await UnknownChannelUserAsync(type, data.Author.Value.Id, channel.Id).ConfigureAwait(false); - return; + if (guild != null) + { + if (data.Member.IsSpecified) // member isn't always included, but use it when we can + { + data.Member.Value.User = data.Author.Value; + author = guild.AddOrUpdateUser(data.Member.Value); + } + else + author = guild.AddOrUpdateUser(data.Author.Value); // user has no guild-specific data + } + else if (channel is SocketGroupChannel groupChannel) + author = groupChannel.GetOrAddUser(data.Author.Value); + else + { + await UnknownChannelUserAsync(type, data.Author.Value.Id, channel.Id).ConfigureAwait(false); + return; + } } } + else + // Message author wasn't specified in the payload, so create a completely anonymous unknown user + author = new SocketUnknownUser(this, id: 0); after = SocketMessage.Create(this, State, author, channel, data); } From de7f9b5effb963587cb4156158a320dd38ebb543 Mon Sep 17 00:00:00 2001 From: Paulo Date: Fri, 28 May 2021 18:00:31 -0300 Subject: [PATCH 131/212] fix: Add missing AddRef and related (#1859) --- .../DiscordSocketClient.cs | 5 +++-- .../Entities/Guilds/SocketGuild.cs | 18 +++++++----------- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 9b5b8ab36..5103bf7c3 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -775,7 +775,8 @@ namespace Discord.WebSocket break; case "GUILD_SYNC": { - await _gatewayLogger.DebugAsync("Received Dispatch (GUILD_SYNC)").ConfigureAwait(false); + await _gatewayLogger.DebugAsync("Ignored Dispatch (GUILD_SYNC)").ConfigureAwait(false); + /*await _gatewayLogger.DebugAsync("Received Dispatch (GUILD_SYNC)").ConfigureAwait(false); //TODO remove? userbot related var data = (payload as JToken).ToObject(_serializer); var guild = State.GetGuild(data.Id); if (guild != null) @@ -792,7 +793,7 @@ namespace Discord.WebSocket { await UnknownGuildAsync(type, data.Id).ConfigureAwait(false); return; - } + }*/ } break; case "GUILD_DELETE": diff --git a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs index 59f1c5956..9af4ad57e 100644 --- a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs +++ b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs @@ -387,7 +387,8 @@ namespace Discord.WebSocket for (int i = 0; i < model.Members.Length; i++) { var member = SocketGuildUser.Create(this, state, model.Members[i]); - members.TryAdd(member.Id, member); + if (members.TryAdd(member.Id, member)) + member.GlobalUser.AddRef(); } DownloadedMemberCount = members.Count; @@ -482,7 +483,7 @@ namespace Discord.WebSocket } _roles = roles; } - internal void Update(ClientState state, GuildSyncModel model) + /*internal void Update(ClientState state, GuildSyncModel model) //TODO remove? userbot related { var members = new ConcurrentDictionary(ConcurrentHashSet.DefaultConcurrencyLevel, (int)(model.Members.Length * 1.05)); { @@ -502,9 +503,9 @@ namespace Discord.WebSocket _members = members; var _ = _syncPromise.TrySetResultAsync(true); - /*if (!model.Large) - _ = _downloaderPromise.TrySetResultAsync(true);*/ - } + //if (!model.Large) + // _ = _downloaderPromise.TrySetResultAsync(true); + }*/ internal void Update(ClientState state, EmojiUpdateModel model) { @@ -842,16 +843,10 @@ namespace Discord.WebSocket else { member = SocketGuildUser.Create(this, Discord.State, model); - if (member == null) - throw new InvalidOperationException("SocketGuildUser.Create failed to produce a member"); // TODO 2.2rel: delete this - if (member.GlobalUser == null) - throw new InvalidOperationException("Member was created without global user"); // TODO 2.2rel: delete this member.GlobalUser.AddRef(); _members[member.Id] = member; DownloadedMemberCount++; } - if (member == null) - throw new InvalidOperationException("AddOrUpdateUser failed to produce a user"); // TODO 2.2rel: delete this return member; } internal SocketGuildUser AddOrUpdateUser(PresenceModel model) @@ -885,6 +880,7 @@ namespace Discord.WebSocket if (self != null) _members.TryAdd(self.Id, self); + _downloaderPromise = new TaskCompletionSource(); DownloadedMemberCount = _members.Count; foreach (var member in members) From 384ad85c647d606fd10fa2a193d83b35c6da3fe3 Mon Sep 17 00:00:00 2001 From: Paulo Date: Fri, 28 May 2021 18:40:39 -0300 Subject: [PATCH 132/212] feature: Remove /users/@me call for socket and rework sharded client a bit (#1860) * Remove /users/@me call for socket and rework sharded client a bit * Remove override for login --- src/Discord.Net.WebSocket/BaseSocketClient.cs | 2 +- src/Discord.Net.WebSocket/DiscordShardedClient.cs | 12 +++--------- src/Discord.Net.WebSocket/DiscordSocketClient.cs | 5 ----- 3 files changed, 4 insertions(+), 15 deletions(-) diff --git a/src/Discord.Net.WebSocket/BaseSocketClient.cs b/src/Discord.Net.WebSocket/BaseSocketClient.cs index b1b430178..1cfe6c8bf 100644 --- a/src/Discord.Net.WebSocket/BaseSocketClient.cs +++ b/src/Discord.Net.WebSocket/BaseSocketClient.cs @@ -47,7 +47,7 @@ namespace Discord.WebSocket /// /// Gets the current logged-in user. /// - public new SocketSelfUser CurrentUser { get => base.CurrentUser as SocketSelfUser; protected set => base.CurrentUser = value; } + public virtual new SocketSelfUser CurrentUser { get => base.CurrentUser as SocketSelfUser; protected set => base.CurrentUser = value; } /// /// Gets a collection of guilds that the user is currently in. /// diff --git a/src/Discord.Net.WebSocket/DiscordShardedClient.cs b/src/Discord.Net.WebSocket/DiscordShardedClient.cs index ea50a571e..e6d05b525 100644 --- a/src/Discord.Net.WebSocket/DiscordShardedClient.cs +++ b/src/Discord.Net.WebSocket/DiscordShardedClient.cs @@ -40,7 +40,9 @@ namespace Discord.WebSocket /// /// Provides access to a REST-only client with a shared state from this client. /// - public override DiscordSocketRestClient Rest => _shards[0].Rest; + public override DiscordSocketRestClient Rest => _shards?[0].Rest; + + public override SocketSelfUser CurrentUser { get => _shards?.FirstOrDefault(x => x.CurrentUser != null)?.CurrentUser; protected set => throw new InvalidOperationException(); } /// Creates a new REST/WebSocket Discord client. public DiscordShardedClient() : this(null, new DiscordSocketConfig()) { } @@ -330,14 +332,6 @@ namespace Discord.WebSocket } return Task.Delay(0); }; - if (isPrimary) - { - client.Ready += () => - { - CurrentUser = client.CurrentUser; - return Task.Delay(0); - }; - } client.Connected += () => _shardConnectedEvent.InvokeAsync(client); client.Disconnected += (exception) => _shardDisconnectedEvent.InvokeAsync(exception, client); diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 5103bf7c3..c419bb764 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -193,11 +193,6 @@ namespace Discord.WebSocket base.Dispose(disposing); } - /// - internal override async Task OnLoginAsync(TokenType tokenType, string token) - { - await Rest.OnLoginAsync(tokenType, token); - } /// internal override async Task OnLogoutAsync() { From fabe034daadc5dc9fe8e5cae99bbd028677b1015 Mon Sep 17 00:00:00 2001 From: Paulo Date: Fri, 28 May 2021 22:25:04 -0300 Subject: [PATCH 133/212] fix: Message update without author (#1862) --- .../DiscordSocketClient.cs | 46 +++++++++++-------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index c419bb764..5ae1a0350 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -1329,21 +1329,8 @@ namespace Discord.WebSocket return; } - if (channel == null) - { - if (!data.GuildId.IsSpecified) // assume it is a DM - { - channel = CreateDMChannel(data.ChannelId, data.Author.Value, State); - } - else - { - await UnknownChannelAsync(type, data.ChannelId).ConfigureAwait(false); - return; - } - } - SocketMessage before = null, after = null; - SocketMessage cachedMsg = channel.GetCachedMessage(data.Id); + SocketMessage cachedMsg = channel?.GetCachedMessage(data.Id); bool isCached = cachedMsg != null; if (isCached) { @@ -1365,7 +1352,7 @@ namespace Discord.WebSocket author = guild.GetUser(data.Author.Value.Id); } else - author = (channel as SocketChannel).GetUser(data.Author.Value.Id); + author = (channel as SocketChannel)?.GetUser(data.Author.Value.Id); if (author == null) { @@ -1381,17 +1368,32 @@ namespace Discord.WebSocket } else if (channel is SocketGroupChannel groupChannel) author = groupChannel.GetOrAddUser(data.Author.Value); - else - { - await UnknownChannelUserAsync(type, data.Author.Value.Id, channel.Id).ConfigureAwait(false); - return; - } } } else // Message author wasn't specified in the payload, so create a completely anonymous unknown user author = new SocketUnknownUser(this, id: 0); + if (channel == null) + { + if (!data.GuildId.IsSpecified) // assume it is a DM + { + if (data.Author.IsSpecified) + { + var dmChannel = CreateDMChannel(data.ChannelId, data.Author.Value, State); + channel = dmChannel; + author = dmChannel.Recipient; + } + else + channel = CreateDMChannel(data.ChannelId, author, State); + } + else + { + await UnknownChannelAsync(type, data.ChannelId).ConfigureAwait(false); + return; + } + } + after = SocketMessage.Create(this, State, author, channel, data); } var cacheableBefore = new Cacheable(before, data.Id, isCached, async () => await channel.GetMessageAsync(data.Id).ConfigureAwait(false)); @@ -1989,6 +1991,10 @@ namespace Discord.WebSocket { return SocketDMChannel.Create(this, state, channelId, model); } + internal SocketDMChannel CreateDMChannel(ulong channelId, SocketUser user, ClientState state) + { + return new SocketDMChannel(this, channelId, user); + } internal ISocketPrivateChannel RemovePrivateChannel(ulong id) { var channel = State.RemoveChannel(id) as ISocketPrivateChannel; From 125f6c78620477208be635d035019fe15cfb5640 Mon Sep 17 00:00:00 2001 From: Hitmasu Date: Sat, 29 May 2021 10:25:58 -0300 Subject: [PATCH 134/212] docs: use async main * Removed text async * Updated code * Added main as proxy task --- docs/guides/getting_started/first-bot.md | 8 ++------ .../getting_started/samples/first-bot/async-context.cs | 3 +-- docs/guides/getting_started/samples/first-bot/complete.cs | 3 +-- .../guides/getting_started/samples/first-bot/structure.cs | 4 ++-- 4 files changed, 6 insertions(+), 12 deletions(-) diff --git a/docs/guides/getting_started/first-bot.md b/docs/guides/getting_started/first-bot.md index 150466be1..e1af20d30 100644 --- a/docs/guides/getting_started/first-bot.md +++ b/docs/guides/getting_started/first-bot.md @@ -80,15 +80,11 @@ recommended for these operations to be awaited in a properly established async context whenever possible. To establish an async context, we will be creating an async main method -in your console application, and rewriting the static main method to -invoke the new async main. +in your console application. [!code-csharp[Async Context](samples/first-bot/async-context.cs)] -As a result of this, your program will now start and immediately -jump into an async context. This allows us to create a connection -to Discord later on without having to worry about setting up the -correct async implementation. +As a result of this, your program will now start into an async context. > [!WARNING] > If your application throws any exceptions within an async context, diff --git a/docs/guides/getting_started/samples/first-bot/async-context.cs b/docs/guides/getting_started/samples/first-bot/async-context.cs index 3c98c9e46..98a3cea15 100644 --- a/docs/guides/getting_started/samples/first-bot/async-context.cs +++ b/docs/guides/getting_started/samples/first-bot/async-context.cs @@ -1,7 +1,6 @@ public class Program { - public static void Main(string[] args) - => new Program().MainAsync().GetAwaiter().GetResult(); + public static Task Main(string[] args) => new Program().MainAsync(); public async Task MainAsync() { diff --git a/docs/guides/getting_started/samples/first-bot/complete.cs b/docs/guides/getting_started/samples/first-bot/complete.cs index 871641e23..542056435 100644 --- a/docs/guides/getting_started/samples/first-bot/complete.cs +++ b/docs/guides/getting_started/samples/first-bot/complete.cs @@ -2,8 +2,7 @@ public class Program { private DiscordSocketClient _client; - public static void Main(string[] args) - => new Program().MainAsync().GetAwaiter().GetResult(); + public static Task Main(string[] args) => new Program().MainAsync(); public async Task MainAsync() { diff --git a/docs/guides/getting_started/samples/first-bot/structure.cs b/docs/guides/getting_started/samples/first-bot/structure.cs index 5165e2fdb..4e64b1732 100644 --- a/docs/guides/getting_started/samples/first-bot/structure.cs +++ b/docs/guides/getting_started/samples/first-bot/structure.cs @@ -10,11 +10,11 @@ using Discord.WebSocket; class Program { // Program entry point - static void Main(string[] args) + static Task Main(string[] args) { // Call the Program constructor, followed by the // MainAsync method and wait until it finishes (which should be never). - new Program().MainAsync().GetAwaiter().GetResult(); + return new Program().MainAsync(); } private readonly DiscordSocketClient _client; From c2e87f56c05cc4eeeb7dee37673e7326a1516969 Mon Sep 17 00:00:00 2001 From: Paulo Date: Sun, 30 May 2021 15:53:18 -0300 Subject: [PATCH 135/212] feature: Change GuildMemberUpdate before state to cacheable (#1863) * Change GuildMemberUpdate before to cacheable * Update PresenceUpdate --- src/Discord.Net.WebSocket/BaseSocketClient.Events.cs | 5 ++--- src/Discord.Net.WebSocket/DiscordSocketClient.cs | 10 +++++++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs b/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs index c947e2d24..fcaa793fc 100644 --- a/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs +++ b/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs @@ -347,12 +347,11 @@ namespace Discord.WebSocket } internal readonly AsyncEvent> _userUpdatedEvent = new AsyncEvent>(); /// Fired when a guild member is updated, or a member presence is updated. - /// The first user (state before) might be null if they weren't in the cache. - public event Func GuildMemberUpdated { + public event Func, SocketGuildUser, Task> GuildMemberUpdated { add { _guildMemberUpdatedEvent.Add(value); } remove { _guildMemberUpdatedEvent.Remove(value); } } - internal readonly AsyncEvent> _guildMemberUpdatedEvent = new AsyncEvent>(); + internal readonly AsyncEvent, SocketGuildUser, Task>> _guildMemberUpdatedEvent = new AsyncEvent, SocketGuildUser, Task>>(); /// Fired when a user joins, leaves, or moves voice channels. public event Func UserVoiceStateUpdated { add { _userVoiceStateUpdatedEvent.Add(value); } diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 5ae1a0350..888055da9 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -988,12 +988,15 @@ namespace Discord.WebSocket var before = user.Clone(); user.Update(State, data); - await TimedInvokeAsync(_guildMemberUpdatedEvent, nameof(GuildMemberUpdated), before, user).ConfigureAwait(false); + + var cacheableBefore = new Cacheable(before, user.Id, true, () => Task.FromResult((SocketGuildUser)null)); + await TimedInvokeAsync(_guildMemberUpdatedEvent, nameof(GuildMemberUpdated), cacheableBefore, user).ConfigureAwait(false); } else { user = guild.AddOrUpdateUser(data); - await TimedInvokeAsync(_guildMemberUpdatedEvent, nameof(GuildMemberUpdated), null, user).ConfigureAwait(false); + var cacheableBefore = new Cacheable(null, user.Id, false, () => Task.FromResult((SocketGuildUser)null)); + await TimedInvokeAsync(_guildMemberUpdatedEvent, nameof(GuildMemberUpdated), cacheableBefore, user).ConfigureAwait(false); } } else @@ -1624,7 +1627,8 @@ namespace Discord.WebSocket var before = user.Clone(); user.Update(State, data, true); - await TimedInvokeAsync(_guildMemberUpdatedEvent, nameof(GuildMemberUpdated), before, user).ConfigureAwait(false); + var cacheableBefore = new Cacheable(before, user.Id, true, () => Task.FromResult(user)); + await TimedInvokeAsync(_guildMemberUpdatedEvent, nameof(GuildMemberUpdated), cacheableBefore, user).ConfigureAwait(false); } else { From 08507c060371a00d400c0cc3f7810f6ce6462550 Mon Sep 17 00:00:00 2001 From: Paulo Date: Tue, 1 Jun 2021 11:14:55 -0300 Subject: [PATCH 136/212] fix: ApiClient.CurrentUser being null (#1864) --- src/Discord.Net.Rest/DiscordRestClient.cs | 2 +- src/Discord.Net.WebSocket/DiscordSocketClient.cs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Discord.Net.Rest/DiscordRestClient.cs b/src/Discord.Net.Rest/DiscordRestClient.cs index 9cdb8e409..b5bdc4235 100644 --- a/src/Discord.Net.Rest/DiscordRestClient.cs +++ b/src/Discord.Net.Rest/DiscordRestClient.cs @@ -16,7 +16,7 @@ namespace Discord.Rest /// /// Gets the logged-in user. /// - public new RestSelfUser CurrentUser => base.CurrentUser as RestSelfUser; + public new RestSelfUser CurrentUser { get => base.CurrentUser as RestSelfUser; internal set => base.CurrentUser = value; } /// public DiscordRestClient() : this(new DiscordRestConfig()) { } diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 888055da9..2cdff662c 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -618,6 +618,7 @@ namespace Discord.WebSocket var activities = _activity.IsSpecified ? ImmutableList.Create(_activity.Value) : null; currentUser.Presence = new SocketPresence(Status, null, activities); ApiClient.CurrentUserId = currentUser.Id; + Rest.CurrentUser = RestSelfUser.Create(this, data.User); int unavailableGuilds = 0; for (int i = 0; i < data.Guilds.Length; i++) { From f47001a1c9ec702ad65183f662507e75f6d18032 Mon Sep 17 00:00:00 2001 From: Paulo Date: Sat, 12 Jun 2021 16:31:01 -0300 Subject: [PATCH 137/212] fix: Add empty role list if not present (#1871) --- src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs index 9263fe642..444c76ffa 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs @@ -125,12 +125,16 @@ namespace Discord.WebSocket { var entity = new SocketGuildUser(guild, guild.Discord.GetOrCreateUser(state, model.User)); entity.Update(state, model); + if (!model.Roles.IsSpecified) + entity.UpdateRoles(new ulong[0]); return entity; } internal static SocketGuildUser Create(SocketGuild guild, ClientState state, PresenceModel model) { var entity = new SocketGuildUser(guild, guild.Discord.GetOrCreateUser(state, model.User)); entity.Update(state, model, false); + if (!model.Roles.IsSpecified) + entity.UpdateRoles(new ulong[0]); return entity; } internal void Update(ClientState state, MemberModel model) From 97d90b9e8a3aabb3d1c4f72db54e7e65ff9ff7b8 Mon Sep 17 00:00:00 2001 From: Paulo Date: Tue, 15 Jun 2021 13:32:17 -0300 Subject: [PATCH 138/212] fix: Connection deadlock when trying to Send and Disconnect (#1872) --- .../DiscordSocketApiClient.cs | 4 ++-- .../Net/DefaultWebSocketClient.cs | 15 +++++++++++---- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs b/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs index d1407da01..65fd23d3f 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs @@ -188,9 +188,9 @@ namespace Discord.API catch { } if (ex is GatewayReconnectException) - await WebSocketClient.DisconnectAsync(4000); + await WebSocketClient.DisconnectAsync(4000).ConfigureAwait(false); else - await WebSocketClient.DisconnectAsync().ConfigureAwait(false); + await WebSocketClient.DisconnectAsync().ConfigureAwait(false); ConnectionState = ConnectionState.Disconnected; } diff --git a/src/Discord.Net.WebSocket/Net/DefaultWebSocketClient.cs b/src/Discord.Net.WebSocket/Net/DefaultWebSocketClient.cs index 4723ae57a..82e2f0573 100644 --- a/src/Discord.Net.WebSocket/Net/DefaultWebSocketClient.cs +++ b/src/Discord.Net.WebSocket/Net/DefaultWebSocketClient.cs @@ -108,11 +108,11 @@ namespace Discord.Net.WebSockets } private async Task DisconnectInternalAsync(int closeCode = 1000, bool isDisposing = false) { + _isDisconnecting = true; + try { _disconnectTokenSource.Cancel(false); } catch { } - _isDisconnecting = true; - if (_client != null) { if (!isDisposing) @@ -166,7 +166,14 @@ namespace Discord.Net.WebSockets public async Task SendAsync(byte[] data, int index, int count, bool isText) { - await _lock.WaitAsync().ConfigureAwait(false); + try + { + await _lock.WaitAsync(_cancelToken).ConfigureAwait(false); + } + catch (TaskCanceledException) + { + return; + } try { if (_client == null) return; @@ -201,7 +208,7 @@ namespace Discord.Net.WebSockets { while (!cancelToken.IsCancellationRequested) { - WebSocketReceiveResult socketResult = await _client.ReceiveAsync(buffer, CancellationToken.None).ConfigureAwait(false); + WebSocketReceiveResult socketResult = await _client.ReceiveAsync(buffer, cancelToken).ConfigureAwait(false); byte[] result; int resultCount; From 2336b98622aabdaa201f5e9e79d03621b9cfbc19 Mon Sep 17 00:00:00 2001 From: Paulo Date: Tue, 15 Jun 2021 13:57:09 -0300 Subject: [PATCH 139/212] misc: Remove docs build from azure pipelines --- azure-pipelines.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 2fe5abfe8..9aa0e5788 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -39,4 +39,3 @@ jobs: steps: - template: azure/build.yml - template: azure/deploy.yml - - template: azure/docs.yml From 7cf84995b2781b16c9e4ac93e92e92042afca2f4 Mon Sep 17 00:00:00 2001 From: Paulo Date: Tue, 15 Jun 2021 16:45:15 -0300 Subject: [PATCH 140/212] fix: Remove OperationCanceledException handling in connecting logic (#1873) --- src/Discord.Net.WebSocket/ConnectionManager.cs | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/src/Discord.Net.WebSocket/ConnectionManager.cs b/src/Discord.Net.WebSocket/ConnectionManager.cs index 2237e2d1f..e444f359f 100644 --- a/src/Discord.Net.WebSocket/ConnectionManager.cs +++ b/src/Discord.Net.WebSocket/ConnectionManager.cs @@ -75,11 +75,6 @@ namespace Discord nextReconnectDelay = 1000; //Reset delay await _connectionPromise.Task.ConfigureAwait(false); } - catch (OperationCanceledException ex) - { - Cancel(); //In case this exception didn't come from another Error call - await DisconnectAsync(ex, !reconnectCancelToken.IsCancellationRequested).ConfigureAwait(false); - } catch (Exception ex) { Error(ex); //In case this exception didn't come from another Error call @@ -143,16 +138,7 @@ namespace Discord catch (OperationCanceledException) { } }); - try - { - await _onConnecting().ConfigureAwait(false); - } - catch (TaskCanceledException ex) - { - Exception innerEx = ex.InnerException ?? new OperationCanceledException("Failed to connect."); - Error(innerEx); - throw innerEx; - } + await _onConnecting().ConfigureAwait(false); await _logger.InfoAsync("Connected").ConfigureAwait(false); State = ConnectionState.Connected; From ac52a11d89250ed8d65ccf373f6fa910bebca0e3 Mon Sep 17 00:00:00 2001 From: Paulo Date: Thu, 17 Jun 2021 20:17:03 -0300 Subject: [PATCH 141/212] fix: Message type (#1876) * Fix message type * Remove type from system entity --- src/Discord.Net.Core/Entities/Messages/IMessage.cs | 2 +- .../Entities/Messages/SocketMessage.cs | 7 +++++-- .../Entities/Messages/SocketSystemMessage.cs | 5 ----- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/Discord.Net.Core/Entities/Messages/IMessage.cs b/src/Discord.Net.Core/Entities/Messages/IMessage.cs index eb135768c..b5023eb59 100644 --- a/src/Discord.Net.Core/Entities/Messages/IMessage.cs +++ b/src/Discord.Net.Core/Entities/Messages/IMessage.cs @@ -10,7 +10,7 @@ namespace Discord public interface IMessage : ISnowflakeEntity, IDeletable { /// - /// Gets the type of this system message. + /// Gets the type of this message. /// MessageType Type { get; } /// diff --git a/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs b/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs index 8b45d882b..353c26fb8 100644 --- a/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs +++ b/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs @@ -61,6 +61,9 @@ namespace Discord.WebSocket /// public MessageFlags? Flags { get; private set; } + /// + public MessageType Type { get; private set; } + /// /// Returns all attachments included in this message. /// @@ -122,6 +125,8 @@ namespace Discord.WebSocket } internal virtual void Update(ClientState state, Model model) { + Type = model.Type; + if (model.Timestamp.IsSpecified) _timestampTicks = model.Timestamp.Value.UtcTicks; @@ -185,8 +190,6 @@ namespace Discord.WebSocket /// IMessageChannel IMessage.Channel => Channel; /// - MessageType IMessage.Type => MessageType.Default; - /// IReadOnlyCollection IMessage.Attachments => Attachments; /// IReadOnlyCollection IMessage.Embeds => Embeds; diff --git a/src/Discord.Net.WebSocket/Entities/Messages/SocketSystemMessage.cs b/src/Discord.Net.WebSocket/Entities/Messages/SocketSystemMessage.cs index d0ce5025b..ec22a7703 100644 --- a/src/Discord.Net.WebSocket/Entities/Messages/SocketSystemMessage.cs +++ b/src/Discord.Net.WebSocket/Entities/Messages/SocketSystemMessage.cs @@ -9,9 +9,6 @@ namespace Discord.WebSocket [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class SocketSystemMessage : SocketMessage, ISystemMessage { - /// - public MessageType Type { get; private set; } - internal SocketSystemMessage(DiscordSocketClient discord, ulong id, ISocketMessageChannel channel, SocketUser author) : base(discord, id, channel, author, MessageSource.System) { @@ -25,8 +22,6 @@ namespace Discord.WebSocket internal override void Update(ClientState state, Model model) { base.Update(state, model); - - Type = model.Type; } private string DebuggerDisplay => $"{Author}: {Content} ({Id}, {Type})"; From 22bb1b02dd9ec20c2485657f1b55193e18df393f Mon Sep 17 00:00:00 2001 From: Paulo Date: Thu, 17 Jun 2021 20:59:40 -0300 Subject: [PATCH 142/212] fix: Rest message type (#1877) --- src/Discord.Net.Rest/Entities/Messages/RestMessage.cs | 6 ++++-- src/Discord.Net.Rest/Entities/Messages/RestSystemMessage.cs | 5 ----- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs b/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs index 793e89dff..0c54743a6 100644 --- a/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs +++ b/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs @@ -71,6 +71,8 @@ namespace Discord.Rest public MessageReference Reference { get; private set; } /// public MessageFlags? Flags { get; private set; } + /// + public MessageType Type { get; private set; } internal RestMessage(BaseDiscordClient discord, ulong id, IMessageChannel channel, IUser author, MessageSource source) : base(discord, id) @@ -88,6 +90,8 @@ namespace Discord.Rest } internal virtual void Update(Model model) { + Type = model.Type; + if (model.Timestamp.IsSpecified) _timestampTicks = model.Timestamp.Value.UtcTicks; @@ -166,8 +170,6 @@ namespace Discord.Rest /// public override string ToString() => Content; - /// - MessageType IMessage.Type => MessageType.Default; IUser IMessage.Author => Author; /// IReadOnlyCollection IMessage.Attachments => Attachments; diff --git a/src/Discord.Net.Rest/Entities/Messages/RestSystemMessage.cs b/src/Discord.Net.Rest/Entities/Messages/RestSystemMessage.cs index 89a651eb7..1c59d4f45 100644 --- a/src/Discord.Net.Rest/Entities/Messages/RestSystemMessage.cs +++ b/src/Discord.Net.Rest/Entities/Messages/RestSystemMessage.cs @@ -9,9 +9,6 @@ namespace Discord.Rest [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class RestSystemMessage : RestMessage, ISystemMessage { - /// - public MessageType Type { get; private set; } - internal RestSystemMessage(BaseDiscordClient discord, ulong id, IMessageChannel channel, IUser author) : base(discord, id, channel, author, MessageSource.System) { @@ -25,8 +22,6 @@ namespace Discord.Rest internal override void Update(Model model) { base.Update(model); - - Type = model.Type; } private string DebuggerDisplay => $"{Author}: {Content} ({Id}, {Type})"; From 8349cd7e1eb92e9a3baff68082c30a7b43e8e9b7 Mon Sep 17 00:00:00 2001 From: th0mk Date: Sat, 10 Jul 2021 16:40:52 +0200 Subject: [PATCH 143/212] fix: Change embed description max length to 4096 (#1886) * Update max embed description length (fixes #1881) * Update unit tests for new embed builder length --- src/Discord.Net.Core/Entities/Messages/EmbedBuilder.cs | 2 +- test/Discord.Net.Tests.Unit/EmbedBuilderTests.cs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Discord.Net.Core/Entities/Messages/EmbedBuilder.cs b/src/Discord.Net.Core/Entities/Messages/EmbedBuilder.cs index f1238ddcf..89aaf5fde 100644 --- a/src/Discord.Net.Core/Entities/Messages/EmbedBuilder.cs +++ b/src/Discord.Net.Core/Entities/Messages/EmbedBuilder.cs @@ -27,7 +27,7 @@ namespace Discord /// /// Returns the maximum length of description allowed by Discord. /// - public const int MaxDescriptionLength = 2048; + public const int MaxDescriptionLength = 4096; /// /// Returns the maximum length of total characters allowed by Discord. /// diff --git a/test/Discord.Net.Tests.Unit/EmbedBuilderTests.cs b/test/Discord.Net.Tests.Unit/EmbedBuilderTests.cs index 6cfdc83b2..da21afee1 100644 --- a/test/Discord.Net.Tests.Unit/EmbedBuilderTests.cs +++ b/test/Discord.Net.Tests.Unit/EmbedBuilderTests.cs @@ -126,7 +126,7 @@ namespace Discord { IEnumerable GetInvalid() { - yield return new string('a', 2049); + yield return new string('a', 4097); } foreach (var description in GetInvalid()) { @@ -149,7 +149,7 @@ namespace Discord { yield return string.Empty; yield return null; - yield return new string('a', 2048); + yield return new string('a', 4096); } foreach (var description in GetValid()) { From c5b4b645b8eeea9698453be0602ad07dba9dabf8 Mon Sep 17 00:00:00 2001 From: Wardog <49387986+wrdg@users.noreply.github.com> Date: Sat, 10 Jul 2021 09:42:45 -0500 Subject: [PATCH 144/212] feature: Add Name property to Teams (#1879) --- src/Discord.Net.Core/Entities/Teams/ITeam.cs | 4 ++++ src/Discord.Net.Rest/API/Common/Team.cs | 2 ++ src/Discord.Net.Rest/Entities/Teams/RestTeam.cs | 3 +++ 3 files changed, 9 insertions(+) diff --git a/src/Discord.Net.Core/Entities/Teams/ITeam.cs b/src/Discord.Net.Core/Entities/Teams/ITeam.cs index 5ef3e4253..b6e3d987b 100644 --- a/src/Discord.Net.Core/Entities/Teams/ITeam.cs +++ b/src/Discord.Net.Core/Entities/Teams/ITeam.cs @@ -20,6 +20,10 @@ namespace Discord /// IReadOnlyList TeamMembers { get; } /// + /// Gets the name of this team. + /// + string Name { get; } + /// /// Gets the user identifier that owns this team. /// ulong OwnerUserId { get; } diff --git a/src/Discord.Net.Rest/API/Common/Team.cs b/src/Discord.Net.Rest/API/Common/Team.cs index 4910f43f7..852368522 100644 --- a/src/Discord.Net.Rest/API/Common/Team.cs +++ b/src/Discord.Net.Rest/API/Common/Team.cs @@ -11,6 +11,8 @@ namespace Discord.API public ulong Id { get; set; } [JsonProperty("members")] public TeamMember[] TeamMembers { get; set; } + [JsonProperty("name")] + public string Name { get; set; } [JsonProperty("owner_user_id")] public ulong OwnerUserId { get; set; } } diff --git a/src/Discord.Net.Rest/Entities/Teams/RestTeam.cs b/src/Discord.Net.Rest/Entities/Teams/RestTeam.cs index 2343f8b5d..43c9417cc 100644 --- a/src/Discord.Net.Rest/Entities/Teams/RestTeam.cs +++ b/src/Discord.Net.Rest/Entities/Teams/RestTeam.cs @@ -12,6 +12,8 @@ namespace Discord.Rest /// public IReadOnlyList TeamMembers { get; private set; } /// + public string Name { get; private set; } + /// public ulong OwnerUserId { get; private set; } private string _iconId; @@ -30,6 +32,7 @@ namespace Discord.Rest { if (model.Icon.IsSpecified) _iconId = model.Icon.Value; + Name = model.Name; OwnerUserId = model.OwnerUserId; TeamMembers = model.TeamMembers.Select(x => new RestTeamMember(Discord, x)).ToImmutableArray(); } From c20086158572acf5fbc3c795769d12b39b127482 Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Sat, 10 Jul 2021 11:44:32 -0300 Subject: [PATCH 145/212] fix: Add default avatar to WithAuthor extension (#1890) Adds `?? user.GetDefaultAvatarUrl()` to the avatar icon field. --- src/Discord.Net.Core/Extensions/EmbedBuilderExtensions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Discord.Net.Core/Extensions/EmbedBuilderExtensions.cs b/src/Discord.Net.Core/Extensions/EmbedBuilderExtensions.cs index a3b8ddd5b..c05df7cb7 100644 --- a/src/Discord.Net.Core/Extensions/EmbedBuilderExtensions.cs +++ b/src/Discord.Net.Core/Extensions/EmbedBuilderExtensions.cs @@ -27,7 +27,7 @@ namespace Discord /// Fills the embed author field with the provided user's full username and avatar URL. public static EmbedBuilder WithAuthor(this EmbedBuilder builder, IUser user) => - builder.WithAuthor($"{user.Username}#{user.Discriminator}", user.GetAvatarUrl()); + builder.WithAuthor($"{user.Username}#{user.Discriminator}", user.GetAvatarUrl() ?? user.GetDefaultAvatarUrl()); /// Converts a object to a . /// The embed type is not . From 3395700720bc42b0cbb4222b9821ab40bdac54c4 Mon Sep 17 00:00:00 2001 From: Nikon <47792796+INikonI@users.noreply.github.com> Date: Mon, 23 Aug 2021 02:00:18 +0500 Subject: [PATCH 146/212] feature: IVoiceChannel implements IMentionable (#1896) --- src/Discord.Net.Core/Entities/Channels/IVoiceChannel.cs | 2 +- src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs | 5 ++++- .../Entities/Channels/SocketVoiceChannel.cs | 5 +++++ .../MockedEntities/MockedVoiceChannel.cs | 2 ++ 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/Discord.Net.Core/Entities/Channels/IVoiceChannel.cs b/src/Discord.Net.Core/Entities/Channels/IVoiceChannel.cs index 9c2d008ee..1d36a41b9 100644 --- a/src/Discord.Net.Core/Entities/Channels/IVoiceChannel.cs +++ b/src/Discord.Net.Core/Entities/Channels/IVoiceChannel.cs @@ -6,7 +6,7 @@ namespace Discord /// /// Represents a generic voice channel in a guild. /// - public interface IVoiceChannel : INestedChannel, IAudioChannel + public interface IVoiceChannel : INestedChannel, IAudioChannel, IMentionable { /// /// Gets the bit-rate that the clients in this voice channel are requested to use. diff --git a/src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs index 3f3aa96c6..e958f2c03 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs @@ -21,6 +21,9 @@ namespace Discord.Rest /// public ulong? CategoryId { get; private set; } + /// + public string Mention => MentionUtils.MentionChannel(Id); + internal RestVoiceChannel(BaseDiscordClient discord, IGuild guild, ulong id) : base(discord, guild, id) { @@ -60,7 +63,7 @@ namespace Discord.Rest /// public Task SyncPermissionsAsync(RequestOptions options = null) => ChannelHelper.SyncPermissionsAsync(this, Discord, options); - + //Invites /// public async Task CreateInviteAsync(int? maxAge = 86400, int? maxUses = null, bool isTemporary = false, bool isUnique = false, RequestOptions options = null) diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs index bf4a63c9f..ecaccedd3 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs @@ -20,6 +20,7 @@ namespace Discord.WebSocket public int Bitrate { get; private set; } /// public int? UserLimit { get; private set; } + /// public ulong? CategoryId { get; private set; } /// @@ -30,6 +31,10 @@ namespace Discord.WebSocket /// public ICategoryChannel Category => CategoryId.HasValue ? Guild.GetChannel(CategoryId.Value) as ICategoryChannel : null; + + /// + public string Mention => MentionUtils.MentionChannel(Id); + /// public Task SyncPermissionsAsync(RequestOptions options = null) => ChannelHelper.SyncPermissionsAsync(this, Discord, options); diff --git a/test/Discord.Net.Tests.Unit/MockedEntities/MockedVoiceChannel.cs b/test/Discord.Net.Tests.Unit/MockedEntities/MockedVoiceChannel.cs index eb617125d..6696c3613 100644 --- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedVoiceChannel.cs +++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedVoiceChannel.cs @@ -12,6 +12,8 @@ namespace Discord public int? UserLimit => throw new NotImplementedException(); + public string Mention => throw new NotImplementedException(); + public ulong? CategoryId => throw new NotImplementedException(); public int Position => throw new NotImplementedException(); From 933ea42eaac47094ef77608aa2aa3f6d602ac30d Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Tue, 23 Nov 2021 09:58:05 -0400 Subject: [PATCH 147/212] Merge Labs 3.X into dev (#1923) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * meta: bump version * Null or empty fix (#176) * Add components and stickers to ReplyAsync extension * Fixed null or empty * Changed Label to Description * -||- Co-authored-by: quin lynch * More regions (#177) * Preconditions * ChannelHelper * RestDMChannel * RestGroupChannel * RestBan * RestGroupUser * EntityExtensions * DiscordSocketClient * DiscordSocketClient * Discord.net.core.xml fix (#178) * Changed Label to Description * Added Discord- .MessageComponent .ISticker[] ,Discord.MessageComponent,Discord.ISticker[] to ReplyAsync * Remove references to labs * Update Discord.Net.sln * Added SendMessagesInThreads and StartEmbeddedActivities. (#175) * Added SendMessagesInThreads and StartEmbeddedActivities. Adjusted owner perms. Change UsePublicThreads -> CreatePublicThreads Change UsePrivateThreads -> CreatePrivateThreads * removed extra /// * Added UsePublicThreads and UsePrivateThreads back with Obsolete Attribute * removed 'false' from Obsolete Attribute * Squashed commit of the following: commit dca41a348e36a9b4e7006ef3a76377eb32aad276 Author: quin lynch Date: Thu Sep 23 07:02:19 2021 -0300 Autocomplete commands * meta: xml. closes #171 * Revert user agent and $device to dnet * meta: bump version * meta: bump vers * Fix sticker args * Grammer fix (#179) * Made IVoiceChannel mentionable * Embeds array for send message async (#181) * meta: bump version * meta: bump vers * Fix sticker args * Grammer fix (#179) * Added embeds for SendMessageAsync * [JsonProperty("embed")] forgot to remove this public Optional Embed { get; set; } * It has been done as requested. * Changed the old way of handeling single embeds * Moved embeds param and added options param * xmls Co-authored-by: quin lynch * Fix thread permissions (#183) * Update GuildPermissionsTests.cs * Update GuildPermissions.cs * Use compound assignment (#186) * Used compound assignment * -||- * -||- * Remove unnecessary suppression (#188) * Inlined variable declarations (#185) * Fixed some warnings (#184) * Fixed some warnings * Another fixed warning * Changed the SSendFileAsync to SendFileAsync * Removed para AlwaysAcknowledgeInteractions * Moved it back to the previous version * Added periods to the end like quin requested!! :(( Co-authored-by: MrCakeSlayer <13650699+MrCakeSlayer@users.noreply.github.com> * Object initialization can be simplified fixed (#189) * Conditional-expression-simplification (#193) * Capitlazation fixes (#192) * Removed-this. (#191) * Use 'switch' expression (#187) * Use 'switch' expression * Reverted it to the old switch case * Fixed-compiler-error (#194) * Submitting updates to include new permissions. (#195) * Submitting updates to include new permissions. * Make old permissions obsolete and update tests Co-authored-by: quin lynch * Update azure-pipelines.yml * Update azure-pipelines.yml * Update azure-pipelines.yml * Add support for long in autocomplete option * Add support for sending files with multiple embeds (#196) * Add support for sending files with multiple embeds * Simplify prepending single embed to embed array * Consistency for embeds endpoints (#197) * Changed the way of handling prepending of embeds. For consistency. * reformatted the summary * Revert pipeline * Fix duplicate merge conflicts * Changed minimum slash command name length to 1 per Discord API docs (#198) * Channel endpoints requirements correction (#199) * Added some requirements to channels for topic * Changed check from NotNullOrEmpty to NotNullOrEmpty * Added some requirements to channels for name Preconditions.LessThan * Formatting of file * Added restriction for description not being null (#200) * Update azure-pipelines.yml * Update deploy.yml * Remove version tag from proj * Update deploy.yml * Removed versions from project files * Removed style of the nuget badge and added logo (#201) The style was not properly added to it and the plastic version does not look good with the discord badge. I thought it would look better with a logo * Fix Type not being set in SocketApplicationCommand * Remove useless GuildId property * meta: update XML * Add Autocomplete to SlashCommandOptionBuilder * Added autocomplete in SlashCommandOptionBuilder. (#206) Co-authored-by: Quin Lynch <49576606+quinchs@users.noreply.github.com> * Fix duplicate autocomplete * Fix #208 * Fix sub commands being interpreted as a parameter for autocomplete * Fix exposed optional * Support the discord:// protocol in buttons (#207) * Update UrlValidation.cs * Update ComponentBuilder.cs * Add docs and better error messages. * Fix wonky intentation * Add competing activity status type (#205) * Update GuildPermissionsTests.cs * Update GuildPermissions.cs * Add competing status type * Add Icons to IRole (#204) * Added icon field to IRole * Added GetGuildRoleIconUrl() * Added Clean Content Function (#174) * Added Clean Content Function * Fixed Spelling problems and bad var handling * Add StripMarkDown Method * Clean Content Expanded (#212) * Implement CleanContent In IMessage & RestMessage * Update Spelling and Documentation * Add SanatizeMessage to MessageHelper and Refactor Rest and Socket Message * Add event for autocomplete interaction (#214) * Spelling corrections (#215) * Remove null collections * Followup with file async warnings (#216) * Changed from NotNullOrWhitespace to NotNullOrEmpty * Added NotNullOrEmpty on filename * Added system to interpret from the path * Added a check for if it contains a period * It has been done, how ever it will break stuff * Changed to use ??= how ever still added error check * Added space under check * Changed from with a period to valid file extension * Added checks for SendFileAsync * Removed filename != null && * Add channel types in application command options. (#217) * add channel types in application command options * Indent Docs * Stage instance audit logs as well as thread audit log type * Update azure-pipelines.yml * Update azure-pipelines.yml * Fix system messages not including mentioned users. Added ContextMenuCommand message type * Remove file extension check (#218) * Fix NRE in modify guild channel * Fix 429's not being accounted for in ratelimit updates * meta: add net5 framework Co-Authored-By: MrCakeSlayer <13650699+MrCakeSlayer@users.noreply.github.com> * Proper doc logos (#221) * Update GuildPermissionsTests.cs * Update GuildPermissions.cs * Add competing activity status type * logo changes * logo text as path * add missing logo * Update package logo and favicon * Update docfx references * Remove XML files and use original pipeline format * Remove console writeline * Remove Console.WriteLine * Remove useless log * Rename Available sticker field to IsAvailable * Rename Available to IsAvailable in stickers * Add summary indent for role members * Add summary indent to SocketInvite * Rename DefaultPermission to IsDefaultPermission * Rename Default to IsDefault and Required to IsRequired in IApplicationCommandOption * Rename Default and Required to IsDefault and IsRequired in IApplicationCommandOption. Rename DefaultPermission to IsDefaultPermission in IApplicationCommand * Remove extra white spaces * Renamed Joined, Archived, and Locked to HasJoined, IsArchived, and IsLocked * Rename Live and DiscoverableDisabled to IsDiscoverableDisabled and IsLive in IStageChannel * Remove newline * Add indent to summaries * Remove unnecessary json serializer field * Fix ToEntity for roletags incorrectly using IsPremiumSubscriber * Update RestChannel for new channel types * Fix different rest channels not deserializing properly * fully qualify internal for UrlValidation and add indent to summary * Add missing periods to InteractionResponseType * Fix summary in IApplicationCommandOptionChoice * Update IApplicationCommandOption summaries * Update IApplicationCommandInteractionDataOption summaries * Update IApplicationCommandInteractionData summaries * Update IApplicationCommand summaries * Update ApplicationCommandType summaries * rename DefaultPermission to IsDefaultPermission in ApplicationCommandProperties * update ApplicationCommandOptionChoiceProperties summaries * Rename Default, Required, and Autocomplete to IsDefault, IsRequired, and IsAutocomplete in ApplicationCommandOptionProperties * Update SlashCommandProperties summaries * update SlashCommandBuilder boolean field names, summaries, and choice parameters * Update SelectMenuOption summaries, Rename Default to IsDefault in SelectMenuOption * update SelectMenuComponent summaries. Rename Disabled to IsDisabled in SelectMenuComponent * update ComponentBuilder summaries and boolean fields. * Update ButtonComponent summaries and boolean fields * update ActionRowComponent summaries * Update UserCommandBuilder * Update MessageCommandBuilder summaries and boolean properties * Update IGuild summary * Update IGuild summaries * Update StagePrivacyLevel summary * update IThreadChannel summaries * Update IStageChannel summaries * Refactor summaries and boolean property names * General cleanup (#223) * General cleanup * Add Async suffix to SendAutocompleteResult * Fix more formatting * Fix unused RequestOptions in GetActiveThreadsAsync * Add message to ArgumentNullException * Ephemeral attachments * Add missing jsonproperty attribute * Add IMessage.Interaction * Update attachment checks for embed urls * meta: bump version * Remove old package configs and update image * Update package logos * Fix logo reference for azure * Deprecate old package definitions in favor for target file * Deprecate old package definitions in favor for target file Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com> * Update package ids * Fix url validation * meta: bump version * Fix assignment of UserMentions (#233) * Fix CleanContent (#231) * Fix SocketSlashCommandData access modifier. (#237) Fixes #229 * Update README with better header (#232) * Update README with better header Adds HTML elements that implement the main logo & improve the redirection tag positions. * Resolving border issue in light-mode * Update sponsor section * Implement checks for interaction respond times and multiple interaction responses. closes #236, #235 * Add response check to socket auto complete * meta: bump versions * Fix #239 * meta: bump version * meta: update logo * meta: bump versions * Revert received at time, confirmed by discord staff to be accurate * Merge branch 'release/3.x' of https://github.com/Discord-Net-Labs/Discord.Net-Labs into merger-labs Update requested changes of obsolete and references to labs. Added `Interaction` to `IMessage` Fixed grammar Fixed bugs relating to interactions. * Update docs * Update CHANGELOG.md * meta: docs building * Update docs.yml * Update docs.yml * Fix docfx version * Update docs.yml * Update docs.bat * Rename docs repo for clone * update docfx version * Update docs.bat * Update docfx version * Remove docs from pipeline * FAQ revamped, metadata updated (#241) * FAQ revamped, metadata updated * Update FAQ.md * Update README.md * Docs index improvement * Fix InvalidOperationException in modify channel * feature: guild avatars, closes #238 * feature: modify role icons * meta: changelog * meta: bump version * Update README.md * Fix non value type options not being included in autocomplete * Add new activity flags (#254) * Add new activity flags * Add missing commas * Added support for GUILD_JOIN_REQUEST_DELETE event (#253) Fixes #247 * Adding BotHTTPInteraction user flag (#252) * animated guild banner support (#255) * Docs work (WIP) (#242) * Main page work * Metadata logo dir * More main page edits * Naming change * Dnet guide entries pruned * Add student hub guild directory channel (#256) * animated guild banner support * Add guild directory channel * Fix followup with file overwrite having incorrect parameter locations * Merge labs 3.x * Update GUILD_JOIN_REQUEST_DELETE event * Update head.tmpl.partial * Removed BannerId and AccentColor (#260) * Removed BannerId property, GetBannerURL method, and AccentColor property from IUser and socket entities. * Fixed errors in IUser.cs * Added back summary for GetAvatarUrl method in IUser.cs * Support Guild Boost Progress Bars (#262) * Support Guild Boost Progress Bars * Update SocketChannel.cs * Fix non-optional and unnecessary values. * Spelling * Reordering and consistency. * Remove log for reconnect * Add missing flags to SystemChannelMessageDeny (#267) * Fix labs reference in analyzer project and provider project * Rename new activity flags * Guild feature revamp and smart gateway intent checks * Get thread user implementation * Amend creating slash command guide (#269) * Adding BotHTTPInteraction user flag * Added comments explaining the Global command create stipulations. * Fix numeric type check for options * Add state checking to ConnectionManager.StartAsync (#272) * initial interface changes * Multi file upload + attachment editing * meta: bump versions * Update CHANGELOG.md * Update CHANGELOG.md * Support Min and Max values on ApplicationCommandOptions (#273) * Support Min and Max values on ApplicationCommandOptions * Support decimal min/max values * Docs imrpovments + use ToNullable * Logomark, doc settings edit (#258) * Logomark, doc settings edit * Replace standard logo * Bumping docfx plugins to latest release * Bump version metadata * Logo svg fix * Change default sticker behavior and add AlwaysResolveSticker to the config * Implement rest based interactions. Added ED25519 checks. Updated summaries. * Update package logo * Automatically fix ordering of optional command options (#276) * auto fix optional command option order * clean up indentation * Fix maximum number of Select Menu Options (#282) As of https://discord.com/developers/docs/interactions/message-components#select-menu-object-select-menu-structure the maximum number of options is 25, not less than 25. Hopefully the change catches all necessary locations * Add voice region to modify voice channels * Update summaries on rest interactions * Interaction Specific Interfaces (#283) * added interaction specific interfaces * fix build error * implement change requests * Update application * Add Guild Scheduled Events (#279) * guild events initial * sharded events * Add new gateway intents and fix bugs * More work on new changes to guild events * Update guild scheduled events * Added events to extended guild and add event start event * Update preconditions * Implement breaking changes guild guild events. Add guild event permissions * Update tests and change privacy level requirements * Update summaries and add docs for guild events * meta: bump version * Increment meta version (#285) * Increment meta version * Update docfx.json * Fix #289 and add configureawaits to rest based interactions * meta: bump version * Add GUILD_SCHEDULED_EVENT_USER_ADD and GUILD_SCHEDULED_EVENT_USER_REMOVE (#287) * Remove newline * Fix autocomplete result value * meta: bump versions * Add `GuildScheduledEventUserAdd` and `GuildScheduledEventUserRemove` to sharded client * Make RestUserCommand public (#292) * Fix Components not showing on FUWF (#288) (#293) Adds Components to Payload JSON Generation * Implement smarter rest resolvable interaction data. Fixes #294 * Add UseInteractionSnowflakeDate to config #286 * Implement Better Discord Errors (#291) * Initial error parsing * Implement better errors * Add missing error codes * Add voice disconnect opcodes * Remove unused class, add summaries to discordjsonerror, and remove public constructor of slash command properties * Add error code summary * Update error message summary * Update src/Discord.Net.Core/DiscordJsonError.cs Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com> * Update src/Discord.Net.WebSocket/API/Voice/VoiceCloseCode.cs Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com> * Fix autocomplete result value Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com> * Change the minimum length of slash commands to 1 (#284) * Change the minimum length of slash commands to 1. This is the correct value according to the docs and it has been changed after user feedback. * Fix the limit in 3 other places Co-authored-by: quin lynch * Add new thread creation properties * Add role emoji. Fixes #295 * Fix mocked text channel * Fix precondition checks. Closes #281 * Initial fix (#297) * meta: bump version * Update from release/3.x * Remove more labs references * Remove doc file for Discord.Net.Analyzers Co-authored-by: Simon Hjorthøj Co-authored-by: drobbins329 Co-authored-by: MrCakeSlayer <13650699+MrCakeSlayer@users.noreply.github.com> Co-authored-by: d4n3436 Co-authored-by: Will Co-authored-by: Eugene Garbuzov Co-authored-by: CottageDwellingCat <80918250+CottageDwellingCat@users.noreply.github.com> Co-authored-by: Emily <89871431+emillly-b@users.noreply.github.com> Co-authored-by: marens101 Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com> Co-authored-by: Armano den Boef <68127614+Rozen4334@users.noreply.github.com> Co-authored-by: Bill Co-authored-by: Liege72 <65319395+Liege72@users.noreply.github.com> Co-authored-by: Floowey Co-authored-by: Cenk Ergen <57065323+Cenngo@users.noreply.github.com> Co-authored-by: exsersewo Co-authored-by: Dennis Fischer --- Discord.Net.sln | 2 +- LICENSE | 2 +- README.md | 10 + docs/guides/concepts/ratelimits.md | 49 + docs/guides/emoji/emoji.md | 8 +- .../guild_events/creating-guild-events.md | 31 + .../guild_events/getting-event-users.md | 16 + docs/guides/guild_events/intro.md | 41 + docs/guides/guild_events/modifying-events.md | 23 + .../01-getting-started.md | 32 + .../creating-context-menu-commands.md | 105 + .../receiving-context-menu-command-events.md | 33 + .../02-creating-slash-commands.md | 98 + .../03-responding-to-slash-commands.md | 40 + .../slash-commands/04-parameters.md | 102 + .../05-responding-ephemerally.md | 23 + .../slash-commands/06-subcommands.md | 219 + .../slash-commands/07-choice-slash-command.md | 85 + ...bulk-overwrite-of-global-slash-commands.md | 40 + .../slash-commands/images/ephemeral1.png | Bin 0 -> 37660 bytes .../slash-commands/images/feedback1.png | Bin 0 -> 31294 bytes .../slash-commands/images/feedback2.png | Bin 0 -> 28118 bytes .../slash-commands/images/listroles1.png | Bin 0 -> 38224 bytes .../slash-commands/images/listroles2.png | Bin 0 -> 33026 bytes .../slash-commands/images/oauth.png | Bin 0 -> 113764 bytes .../slash-commands/images/settings1.png | Bin 0 -> 76171 bytes .../slash-commands/images/settings2.png | Bin 0 -> 51089 bytes .../slash-commands/images/settings3.png | Bin 0 -> 52771 bytes .../slash-commands/images/slashcommand1.png | Bin 0 -> 10886 bytes .../slash-commands/images/slashcommand2.png | Bin 0 -> 18094 bytes docs/guides/interactions/intro.md | 10 + .../message-components/01-getting-started.md | 66 + .../02-responding-to-buttons.md | 37 + .../message-components/03-buttons-in-depth.md | 45 + .../message-components/04-select-menus.md | 76 + .../message-components/05-advanced.md | 87 + .../message-components/images/image1.png | Bin 0 -> 17256 bytes .../message-components/images/image2.png | Bin 0 -> 19725 bytes .../message-components/images/image3.png | Bin 0 -> 40520 bytes .../message-components/images/image4.png | Bin 0 -> 20983 bytes .../message-components/images/image5.png | Bin 0 -> 17868 bytes .../message-components/images/image6.png | Bin 0 -> 39425 bytes docs/guides/toc.yml | 67 +- .../02_commands_framework.csproj | 2 +- .../Modules/PublicModule.cs | 2 +- samples/02_commands_framework/Program.cs | 2 +- .../03_sharded_client.csproj | 2 +- .../Services/CommandHandlingService.cs | 2 +- samples/idn/Inspector.cs | 2 +- samples/idn/Program.cs | 2 +- samples/idn/idn.csproj | 2 +- .../Discord.Net.Analyzers.csproj | 4 +- .../Attributes/AliasAttribute.cs | 2 +- .../Builders/CommandBuilder.cs | 11 +- .../Builders/ModuleBuilder.cs | 9 +- .../Builders/ModuleClassBuilder.cs | 6 +- .../Builders/ParameterBuilder.cs | 11 +- src/Discord.Net.Commands/CommandService.cs | 21 +- .../Discord.Net.Commands.csproj | 2 +- .../Extensions/MessageExtensions.cs | 3 +- src/Discord.Net.Commands/Info/CommandInfo.cs | 6 +- .../Info/ParameterInfo.cs | 4 +- src/Discord.Net.Commands/ModuleBase.cs | 13 +- src/Discord.Net.Commands/RunMode.cs | 2 +- src/Discord.Net.Core/CDN.cs | 86 +- src/Discord.Net.Core/Discord.Net.Core.csproj | 4 +- src/Discord.Net.Core/DiscordConfig.cs | 19 + src/Discord.Net.Core/DiscordErrorCode.cs | 197 + src/Discord.Net.Core/DiscordJsonError.cs | 53 + .../Entities/Activities/ActivityProperties.cs | 14 +- .../Entities/Activities/ActivityType.cs | 4 + .../Entities/ApplicationFlags.cs | 23 + .../Entities/ApplicationInstallParams.cs | 31 + .../Entities/AuditLogs/ActionType.cs | 50 + .../Entities/Channels/ChannelType.cs | 14 +- .../Entities/Channels/IMessageChannel.cs | 73 +- .../Entities/Channels/INestedChannel.cs | 46 +- .../Entities/Channels/IStageChannel.cs | 114 + .../Entities/Channels/ITextChannel.cs | 35 + .../Entities/Channels/IThreadChannel.cs | 89 + .../Channels/StageInstanceProperties.cs | 18 + .../Entities/Channels/StagePrivacyLevel.cs | 17 + .../Channels/TextChannelProperties.cs | 16 + .../Channels/ThreadArchiveDuration.cs | 34 + .../Entities/Channels/ThreadType.cs | 23 + .../Channels/VoiceChannelProperties.cs | 4 + src/Discord.Net.Core/Entities/Emotes/Emoji.cs | 5945 ++++++++++++++++- src/Discord.Net.Core/Entities/Emotes/Emote.cs | 2 + .../Entities/Guilds/GuildFeature.cs | 105 + .../Entities/Guilds/GuildFeatures.cs | 46 + .../Entities/Guilds/GuildProperties.cs | 9 +- .../Guilds/GuildScheduledEventPrivacyLevel.cs | 25 + .../Guilds/GuildScheduledEventStatus.cs | 34 + .../Guilds/GuildScheduledEventType.cs | 34 + .../Guilds/GuildScheduledEventsProperties.cs | 58 + .../Entities/Guilds/IGuild.cs | 271 +- .../Entities/Guilds/IGuildScheduledEvent.cs | 170 + .../Entities/Guilds/NsfwLevel.cs | 22 + .../Guilds/SystemChannelMessageDeny.cs | 10 +- src/Discord.Net.Core/Entities/IApplication.cs | 14 +- .../Interactions/ApplicationCommandOption.cs | 95 + .../ApplicationCommandOptionChoice.cs | 44 + .../ApplicationCommandOptionType.cs | 58 + .../ApplicationCommandProperties.cs | 22 + .../Interactions/ApplicationCommandTypes.cs | 23 + .../Interactions/AutocompleteOption.cs | 36 + .../Interactions/AutocompleteResult.cs | 73 + .../IMessageCommandInteraction.cs | 13 + .../IMessageCommandInteractionData.cs | 13 + .../ContextMenus/IUserCommandInteraction.cs | 13 + .../IUserCommandInteractionData.cs | 13 + .../ContextMenus/MessageCommandBuilder.cs | 77 + .../ContextMenus/MessageCommandProperties.cs | 10 + .../ContextMenus/UserCommandBuilder.cs | 75 + .../ContextMenus/UserCommandProperties.cs | 10 + .../Interactions/IApplicationCommand.cs | 64 + .../IApplicationCommandInteractionData.cs | 25 + ...ApplicationCommandInteractionDataOption.cs | 33 + .../Interactions/IApplicationCommandOption.cs | 60 + .../IApplicationCommandOptionChoice.cs | 18 + .../Interactions/IDiscordInteraction.cs | 90 + .../Interactions/IDiscordInteractionData.cs | 7 + .../Interactions/InteractionResponseType.cs | 46 + .../Entities/Interactions/InteractionType.cs | 28 + .../MessageComponents/ActionRowComponent.cs | 27 + .../MessageComponents/ButtonComponent.cs | 61 + .../MessageComponents/ButtonStyle.cs | 33 + .../MessageComponents/ComponentBuilder.cs | 1064 +++ .../MessageComponents/ComponentType.cs | 23 + .../IComponentInteraction.cs | 18 + .../IComponentInteractionData.cs | 25 + .../MessageComponents/IMessageComponent.cs | 18 + .../MessageComponents/MessageComponent.cs | 26 + .../MessageComponents/SelectMenuComponent.cs | 67 + .../MessageComponents/SelectMenuOption.cs | 42 + .../SlashCommands/IAutocompleteInteraction.cs | 13 + .../IAutocompleteInteractionData.cs | 40 + .../SlashCommands/ISlashCommandInteraction.cs | 13 + .../SlashCommands/SlashCommandBuilder.cs | 640 ++ .../SlashCommands/SlashCommandProperties.cs | 24 + .../Entities/Invites/TargetUserType.cs | 6 +- .../Entities/Messages/EmbedBuilder.cs | 49 +- .../Entities/Messages/FileAttachment.cs | 83 + .../Entities/Messages/IAttachment.cs | 7 + .../Entities/Messages/IMessage.cs | 26 +- .../Entities/Messages/IMessageInteraction.cs | 34 + .../Entities/Messages/MessageFlags.cs | 12 + .../Entities/Messages/MessageInteraction.cs | 45 + .../Entities/Messages/MessageProperties.cs | 26 +- .../Entities/Messages/MessageType.cs | 45 + .../Entities/Messages/StickerFormatType.cs | 25 + .../Entities/Messages/SticketFormatType.cs | 15 - .../Entities/Messages/TimestampTag.cs | 47 + .../Entities/Messages/TimestampTagStyle.cs | 43 + .../ApplicationCommandPermissionTarget.cs | 17 + .../ApplicationCommandPermissions.cs | 62 + .../Entities/Permissions/ChannelPermission.cs | 91 +- .../Permissions/ChannelPermissions.cs | 159 +- .../GuildApplicationCommandPermissions.cs | 39 + .../Entities/Permissions/GuildPermission.cs | 114 +- .../Entities/Permissions/GuildPermissions.cs | 98 +- .../Permissions/OverwritePermissions.cs | 72 +- src/Discord.Net.Core/Entities/Roles/Color.cs | 101 +- src/Discord.Net.Core/Entities/Roles/IRole.cs | 22 + .../Entities/Roles/RoleProperties.cs | 5 + .../Entities/Stickers/ICustomSticker.cs | 59 + .../{Messages => Stickers}/ISticker.cs | 36 +- .../Entities/Stickers/IStickerItem.cs | 23 + .../Entities/Stickers/StickerPack.cs | 59 + .../Entities/Stickers/StickerProperties.cs | 25 + .../Entities/Stickers/StickerType.cs | 18 + .../Entities/Users/IGuildUser.cs | 28 +- src/Discord.Net.Core/Entities/Users/IUser.cs | 13 +- .../Entities/Users/IVoiceState.cs | 6 + .../Entities/Users/UserProperties.cs | 6 +- .../Entities/Webhooks/IWebhook.cs | 7 +- .../Extensions/GuildExtensions.cs | 16 + .../Extensions/MessageExtensions.cs | 15 +- .../Extensions/ObjectExtensions.cs | 32 + .../Extensions/UserExtensions.cs | 25 +- src/Discord.Net.Core/Format.cs | 15 +- src/Discord.Net.Core/GatewayIntents.cs | 8 +- src/Discord.Net.Core/IDiscordClient.cs | 41 + .../Net/ApplicationCommandException.cs | 15 + src/Discord.Net.Core/Net/HttpException.cs | 13 +- .../Net/Rest/IRateLimitInfo.cs | 59 + src/Discord.Net.Core/RequestOptions.cs | 22 +- src/Discord.Net.Core/Utils/Cacheable.cs | 56 + src/Discord.Net.Core/Utils/MentionUtils.cs | 3 + src/Discord.Net.Core/Utils/Optional.cs | 10 +- src/Discord.Net.Core/Utils/Preconditions.cs | 12 +- src/Discord.Net.Core/Utils/UrlValidation.cs | 42 + .../Channels/IMessageChannel.Examples.cs | 1 - .../Discord.Net.Examples.csproj | 2 +- .../API/Common/ActionRowComponent.cs | 32 + .../API/Common/Application.cs | 9 +- .../API/Common/ApplicationCommand.cs | 28 + .../ApplicationCommandInteractionData.cs | 22 + ...ApplicationCommandInteractionDataOption.cs | 19 + ...plicationCommandInteractionDataResolved.cs | 22 + .../API/Common/ApplicationCommandOption.cs | 88 + .../Common/ApplicationCommandOptionChoice.cs | 13 + .../Common/ApplicationCommandPermissions.cs | 16 + src/Discord.Net.Rest/API/Common/Attachment.cs | 7 +- src/Discord.Net.Rest/API/Common/AuditLog.cs | 8 +- .../API/Common/AuditLogEntry.cs | 2 +- .../API/Common/AutocompleteInteractionData.cs | 22 + .../AutocompleteInteractionDataOption.cs | 22 + src/Discord.Net.Rest/API/Common/Ban.cs | 1 - .../API/Common/ButtonComponent.cs | 63 + src/Discord.Net.Rest/API/Common/Channel.cs | 17 +- .../API/Common/ChannelThreads.cs | 16 + src/Discord.Net.Rest/API/Common/Connection.cs | 1 - .../API/Common/DiscordError.cs | 20 + src/Discord.Net.Rest/API/Common/Embed.cs | 1 - src/Discord.Net.Rest/API/Common/EmbedImage.cs | 1 - .../API/Common/EmbedProvider.cs | 1 - .../API/Common/EmbedThumbnail.cs | 1 - src/Discord.Net.Rest/API/Common/EmbedVideo.cs | 1 - src/Discord.Net.Rest/API/Common/Emoji.cs | 1 - src/Discord.Net.Rest/API/Common/Error.cs | 12 + src/Discord.Net.Rest/API/Common/Game.cs | 3 +- src/Discord.Net.Rest/API/Common/Guild.cs | 11 +- .../GuildApplicationCommandPermissions.cs | 19 + .../API/Common/GuildMember.cs | 3 +- .../API/Common/GuildScheduledEvent.cs | 43 + .../GuildScheduledEventEntityMetadata.cs | 15 + .../API/Common/GuildScheduledEventUser.cs | 19 + .../API/Common/GuildWidget.cs | 1 - .../API/Common/InstallParams.cs | 17 + .../API/Common/Integration.cs | 1 - .../API/Common/IntegrationAccount.cs | 1 - .../API/Common/Interaction.cs | 41 + .../API/Common/InteractionCallbackData.cs | 28 + .../API/Common/InteractionResponse.cs | 13 + src/Discord.Net.Rest/API/Common/Invite.cs | 1 - .../API/Common/InviteChannel.cs | 1 - .../API/Common/InviteGuild.cs | 1 - .../API/Common/InviteMetadata.cs | 1 - .../API/Common/InviteVanity.cs | 10 + src/Discord.Net.Rest/API/Common/Message.cs | 10 +- .../Common/MessageComponentInteractionData.cs | 16 + .../API/Common/MessageInteraction.cs | 21 + .../API/Common/NitroStickerPacks.cs | 11 + src/Discord.Net.Rest/API/Common/Overwrite.cs | 1 - src/Discord.Net.Rest/API/Common/Presence.cs | 1 - .../API/Common/PropertyErrorDescription.cs | 17 + src/Discord.Net.Rest/API/Common/ReadState.cs | 1 - .../API/Common/Relationship.cs | 1 - .../API/Common/RelationshipType.cs | 1 - src/Discord.Net.Rest/API/Common/Role.cs | 5 +- src/Discord.Net.Rest/API/Common/RoleTags.cs | 1 - .../API/Common/SelectMenuComponent.cs | 42 + .../API/Common/SelectMenuOption.cs | 53 + .../API/Common/StageInstance.cs | 25 + src/Discord.Net.Rest/API/Common/Sticker.cs | 17 +- .../API/Common/StickerItem.cs | 16 + .../API/Common/StickerPack.cs | 22 + src/Discord.Net.Rest/API/Common/Team.cs | 1 - src/Discord.Net.Rest/API/Common/TeamMember.cs | 1 - .../API/Common/ThreadMember.cs | 26 + .../API/Common/ThreadMetadata.cs | 20 + src/Discord.Net.Rest/API/Common/User.cs | 5 +- src/Discord.Net.Rest/API/Common/UserGuild.cs | 1 - .../API/Common/VoiceRegion.cs | 1 - src/Discord.Net.Rest/API/Common/VoiceState.cs | 4 +- src/Discord.Net.Rest/API/Common/Webhook.cs | 3 +- src/Discord.Net.Rest/API/Int53Attribute.cs | 1 - src/Discord.Net.Rest/API/Net/IResolvable.cs | 13 + src/Discord.Net.Rest/API/Net/MultipartFile.cs | 6 +- .../Rest/CreateApplicationCommandParams.cs | 31 + .../API/Rest/CreateChannelInviteParams.cs | 7 +- .../API/Rest/CreateDMChannelParams.cs | 1 - .../API/Rest/CreateGuildBanParams.cs | 1 - .../API/Rest/CreateGuildChannelParams.cs | 1 - .../API/Rest/CreateGuildEmoteParams.cs | 1 - .../API/Rest/CreateGuildIntegrationParams.cs | 1 - .../API/Rest/CreateGuildParams.cs | 1 - .../Rest/CreateGuildScheduledEventParams.cs | 29 + .../API/Rest/CreateMessageParams.cs | 15 +- .../API/Rest/CreateStageInstanceParams.cs | 16 + .../API/Rest/CreateStickerParams.cs | 35 + .../API/Rest/CreateWebhookMessageParams.cs | 62 +- .../API/Rest/CreateWebhookParams.cs | 1 - .../API/Rest/DeleteMessagesParams.cs | 1 - .../API/Rest/GetBotGatewayResponse.cs | 1 - .../API/Rest/GetChannelMessagesParams.cs | 1 - .../API/Rest/GetEventUsersParams.cs | 15 + .../API/Rest/GetGatewayResponse.cs | 1 - .../API/Rest/GetGuildMembersParams.cs | 1 - .../API/Rest/GetGuildPruneCountResponse.cs | 1 - .../API/Rest/GetGuildSummariesParams.cs | 1 - .../API/Rest/GuildPruneParams.cs | 1 - .../Rest/ModifyApplicationCommandParams.cs | 19 + .../Rest/ModifyChannelPermissionsParams.cs | 1 - .../API/Rest/ModifyCurrentUserNickParams.cs | 1 - .../API/Rest/ModifyCurrentUserParams.cs | 1 - ...odifyGuildApplicationCommandPermissions.cs | 13 + ...uildApplicationCommandPermissionsParams.cs | 10 + .../API/Rest/ModifyGuildChannelParams.cs | 1 - .../API/Rest/ModifyGuildChannelsParams.cs | 1 - .../API/Rest/ModifyGuildEmbedParams.cs | 1 - .../API/Rest/ModifyGuildEmoteParams.cs | 1 - .../API/Rest/ModifyGuildIntegrationParams.cs | 1 - .../API/Rest/ModifyGuildMemberParams.cs | 1 - .../API/Rest/ModifyGuildParams.cs | 3 +- .../API/Rest/ModifyGuildRoleParams.cs | 3 +- .../API/Rest/ModifyGuildRolesParams.cs | 1 - .../Rest/ModifyGuildScheduledEventParams.cs | 31 + .../API/Rest/ModifyGuildWidgetParams.cs | 1 - .../Rest/ModifyInteractionResponseParams.cs | 22 + .../API/Rest/ModifyMessageParams.cs | 7 +- .../API/Rest/ModifyStageInstanceParams.cs | 13 + .../API/Rest/ModifyStickerParams.cs | 14 + .../API/Rest/ModifyTextChannelParams.cs | 1 - .../API/Rest/ModifyThreadParams.cs | 22 + .../API/Rest/ModifyVoiceChannelParams.cs | 3 +- .../API/Rest/ModifyVoiceStateParams.cs | 17 + .../API/Rest/ModifyWebhookMessageParams.cs | 3 +- .../API/Rest/ModifyWebhookParams.cs | 1 - .../API/Rest/SearchGuildMembersParams.cs | 1 - .../API/Rest/StartThreadParams.cs | 22 + .../API/Rest/UploadFileParams.cs | 54 +- .../API/Rest/UploadWebhookFileParams.cs | 1 - src/Discord.Net.Rest/BaseDiscordClient.cs | 21 +- src/Discord.Net.Rest/ClientHelper.cs | 69 +- src/Discord.Net.Rest/DiscordRestApiClient.cs | 1111 ++- src/Discord.Net.Rest/DiscordRestClient.cs | 113 +- .../Entities/AuditLogs/AuditLogHelper.cs | 3 +- .../Entities/AuditLogs/DataTypes/StageInfo.cs | 30 + .../StageInstanceCreateAuditLogData.cs | 50 + .../StageInstanceDeleteAuditLogData.cs | 50 + .../StageInstanceUpdatedAuditLogData.cs | 51 + .../Entities/Channels/ChannelHelper.cs | 151 +- .../Entities/Channels/IRestMessageChannel.cs | 21 +- .../Entities/Channels/RestCategoryChannel.cs | 5 +- .../Entities/Channels/RestChannel.cs | 61 +- .../Entities/Channels/RestDMChannel.cs | 57 +- .../Entities/Channels/RestGroupChannel.cs | 55 +- .../Entities/Channels/RestGuildChannel.cs | 48 +- .../Entities/Channels/RestStageChannel.cs | 150 + .../Entities/Channels/RestTextChannel.cs | 127 +- .../Entities/Channels/RestThreadChannel.cs | 223 + .../Entities/Channels/RestVoiceChannel.cs | 28 +- .../Entities/Channels/ThreadHelper.cs | 74 + .../Entities/Guilds/GuildHelper.cs | 382 +- .../Entities/Guilds/RestBan.cs | 5 +- .../Entities/Guilds/RestGuild.cs | 519 +- .../Entities/Guilds/RestGuildEvent.cs | 188 + .../CommandBase/RestCommandBase.cs | 345 + .../CommandBase/RestCommandBaseData.cs | 59 + .../CommandBase/RestResolvableData.cs | 96 + .../MessageCommands/RestMessageCommand.cs | 45 + .../MessageCommands/RestMessageCommandData.cs | 42 + .../UserCommands/RestUserCommand.cs | 48 + .../UserCommands/RestUserCommandData.cs | 40 + .../Interactions/InteractionHelper.cs | 542 ++ .../MessageComponents/RestMessageComponent.cs | 452 ++ .../RestMessageComponentData.cs | 37 + .../Interactions/RestApplicationCommand.cs | 77 + .../RestApplicationCommandChoice.cs | 22 + .../RestApplicationCommandOption.cs | 98 + .../Interactions/RestGlobalCommand.cs | 40 + .../Entities/Interactions/RestGuildCommand.cs | 83 + .../Entities/Interactions/RestInteraction.cs | 224 + .../Interactions/RestPingInteraction.cs | 46 + .../RestAutocompleteInteraction.cs | 135 + .../RestAutocompleteInteractionData.cs | 76 + .../SlashCommands/RestSlashCommand.cs | 48 + .../SlashCommands/RestSlashCommandData.cs | 32 + .../RestSlashCommandDataOption.cs | 139 + .../Entities/Messages/Attachment.cs | 8 +- .../Entities/Messages/CustomSticker.cs | 74 + .../Entities/Messages/MessageHelper.cs | 102 +- .../Entities/Messages/RestFollowupMessage.cs | 78 + .../Messages/RestInteractionMessage.cs | 78 + .../Entities/Messages/RestMessage.cs | 114 +- .../Entities/Messages/RestUserMessage.cs | 35 +- .../Entities/Messages/Sticker.cs | 55 +- .../Entities/Messages/StickerItem.cs | 39 + .../Entities/RestApplication.cs | 17 +- .../Entities/Roles/RestRole.cs | 25 +- .../Entities/Roles/RoleHelper.cs | 12 +- .../Entities/Users/RestGroupUser.cs | 8 +- .../Entities/Users/RestGuildUser.cs | 29 +- .../Entities/Users/RestThreadUser.cs | 56 + .../Entities/Users/RestUser.cs | 30 +- .../Entities/Users/RestWebhookUser.cs | 16 +- .../Entities/Webhooks/RestWebhook.cs | 9 +- .../Entities/Webhooks/WebhookHelper.cs | 1 - .../Extensions/EntityExtensions.cs | 3 +- .../Net/BadSignatureException.cs | 16 + .../Net/Converters/ArrayConverter.cs | 2 +- .../Net/Converters/DiscordContractResolver.cs | 17 +- .../Net/Converters/DiscordErrorConverter.cs | 88 + .../Net/Converters/EmbedTypeConverter.cs | 33 +- .../Net/Converters/GuildFeaturesConverter.cs | 60 + .../Net/Converters/InteractionConverter.cs | 70 + .../Converters/MessageComponentConverter.cs | 40 + .../Net/Converters/UnixTimestampConverter.cs | 2 +- .../Net/Converters/UserStatusConverter.cs | 24 +- src/Discord.Net.Rest/Net/DefaultRestClient.cs | 29 +- src/Discord.Net.Rest/Net/ED25519/Array16.cs | 27 + src/Discord.Net.Rest/Net/ED25519/Array8.cs | 18 + .../Net/ED25519/ByteIntegerConverter.cs | 55 + .../Net/ED25519/CryptoBytes.cs | 272 + src/Discord.Net.Rest/Net/ED25519/Ed25519.cs | 67 + .../Net/ED25519/Ed25519Operations.cs | 45 + .../Net/ED25519/Ed25519Ref10/FieldElement.cs | 23 + .../Net/ED25519/Ed25519Ref10/GroupElement.cs | 63 + .../Net/ED25519/Ed25519Ref10/base.cs | 1355 ++++ .../Net/ED25519/Ed25519Ref10/base2.cs | 50 + .../Net/ED25519/Ed25519Ref10/d.cs | 9 + .../Net/ED25519/Ed25519Ref10/d2.cs | 9 + .../Net/ED25519/Ed25519Ref10/fe_0.cs | 12 + .../Net/ED25519/Ed25519Ref10/fe_1.cs | 13 + .../Net/ED25519/Ed25519Ref10/fe_add.cs | 64 + .../Net/ED25519/Ed25519Ref10/fe_cmov.cs | 71 + .../Net/ED25519/Ed25519Ref10/fe_cswap.cs | 79 + .../Net/ED25519/Ed25519Ref10/fe_frombytes.cs | 102 + .../Net/ED25519/Ed25519Ref10/fe_invert.cs | 128 + .../Net/ED25519/Ed25519Ref10/fe_isnegative.cs | 22 + .../Net/ED25519/Ed25519Ref10/fe_isnonzero.cs | 37 + .../Net/ED25519/Ed25519Ref10/fe_mul.cs | 263 + .../Net/ED25519/Ed25519Ref10/fe_mul121666.cs | 67 + .../Net/ED25519/Ed25519Ref10/fe_neg.cs | 51 + .../Net/ED25519/Ed25519Ref10/fe_pow22523.cs | 125 + .../Net/ED25519/Ed25519Ref10/fe_sq.cs | 143 + .../Net/ED25519/Ed25519Ref10/fe_sq2.cs | 154 + .../Net/ED25519/Ed25519Ref10/fe_sub.cs | 66 + .../Net/ED25519/Ed25519Ref10/fe_tobytes.cs | 145 + .../Net/ED25519/Ed25519Ref10/ge_add.cs | 73 + .../Ed25519Ref10/ge_double_scalarmult.cs | 115 + .../Net/ED25519/Ed25519Ref10/ge_frombytes.cs | 50 + .../Net/ED25519/Ed25519Ref10/ge_madd.cs | 69 + .../Net/ED25519/Ed25519Ref10/ge_msub.cs | 68 + .../Net/ED25519/Ed25519Ref10/ge_p1p1_to_p2.cs | 18 + .../Net/ED25519/Ed25519Ref10/ge_p1p1_to_p3.cs | 18 + .../Net/ED25519/Ed25519Ref10/ge_p2_0.cs | 14 + .../Net/ED25519/Ed25519Ref10/ge_p2_dbl.cs | 64 + .../Net/ED25519/Ed25519Ref10/ge_p3_0.cs | 15 + .../Net/ED25519/Ed25519Ref10/ge_p3_dbl.cs | 17 + .../ED25519/Ed25519Ref10/ge_p3_to_cached.cs | 18 + .../Net/ED25519/Ed25519Ref10/ge_p3_to_p2.cs | 17 + .../Net/ED25519/Ed25519Ref10/ge_p3_tobytes.cs | 19 + .../Net/ED25519/Ed25519Ref10/ge_precomp_0.cs | 14 + .../Ed25519Ref10/ge_scalarmult_base.cs | 113 + .../Net/ED25519/Ed25519Ref10/ge_sub.cs | 74 + .../Net/ED25519/Ed25519Ref10/ge_tobytes.cs | 19 + .../Net/ED25519/Ed25519Ref10/keypair.cs | 23 + .../Net/ED25519/Ed25519Ref10/open.cs | 80 + .../Net/ED25519/Ed25519Ref10/sc_clamp.cs | 14 + .../Net/ED25519/Ed25519Ref10/sc_mul_add.cs | 374 ++ .../Net/ED25519/Ed25519Ref10/sc_reduce.cs | 264 + .../Net/ED25519/Ed25519Ref10/scalarmult.cs | 153 + .../Net/ED25519/Ed25519Ref10/sign.cs | 44 + .../Net/ED25519/Ed25519Ref10/sqrtm1.cs | 9 + src/Discord.Net.Rest/Net/ED25519/Sha512.cs | 155 + .../Net/ED25519/Sha512Internal.cs | 447 ++ .../Net/Queue/RequestQueueBucket.cs | 27 +- src/Discord.Net.Rest/Net/RateLimitInfo.cs | 29 +- src/Discord.Net.Rest/Utils/HexConverter.cs | 36 + .../ApplicationCommandCreatedUpdatedEvent.cs | 10 + .../API/Gateway/ExtendedGuild.cs | 12 +- .../API/Gateway/GatewayOpCode.cs | 3 +- .../API/Gateway/GuildBanEvent.cs | 1 - .../API/Gateway/GuildEmojiUpdateEvent.cs | 1 - .../Gateway/GuildJoinRequestDeleteEvent.cs | 12 + .../API/Gateway/GuildMemberAddEvent.cs | 1 - .../API/Gateway/GuildMemberRemoveEvent.cs | 1 - .../API/Gateway/GuildMemberUpdateEvent.cs | 5 +- .../API/Gateway/GuildMembersChunkEvent.cs | 1 - .../API/Gateway/GuildRoleCreateEvent.cs | 1 - .../API/Gateway/GuildRoleDeleteEvent.cs | 1 - .../API/Gateway/GuildRoleUpdateEvent.cs | 1 - .../GuildScheduledEventUserAddRemoveEvent.cs | 19 + .../API/Gateway/GuildStickerUpdateEvent.cs | 13 + .../API/Gateway/GuildSyncEvent.cs | 1 - .../API/Gateway/HelloEvent.cs | 1 - .../API/Gateway/IdentifyParams.cs | 3 +- .../API/Gateway/InviteCreatedEvent.cs | 32 + .../API/Gateway/InviteDeletedEvent.cs | 19 + .../API/Gateway/MessageDeleteBulkEvent.cs | 1 - .../API/Gateway/ReadyEvent.cs | 1 - .../API/Gateway/RecipientEvent.cs | 1 - .../API/Gateway/RequestMembersParams.cs | 1 - .../API/Gateway/ResumeParams.cs | 1 - .../API/Gateway/ResumedEvent.cs | 1 - .../API/Gateway/StatusUpdateParams.cs | 10 +- .../API/Gateway/ThreadListSyncEvent.cs | 19 + .../API/Gateway/ThreadMembersUpdate.cs | 22 + .../API/Gateway/TypingStartEvent.cs | 1 - .../API/Gateway/VoiceServerUpdateEvent.cs | 1 - .../API/Gateway/VoiceStateUpdateParams.cs | 1 - .../API/Gateway/WebhookUpdateEvent.cs | 1 - src/Discord.Net.WebSocket/API/SocketFrame.cs | 1 - .../API/Voice/IdentifyParams.cs | 1 - .../API/Voice/ReadyEvent.cs | 3 +- .../API/Voice/SelectProtocolParams.cs | 1 - .../API/Voice/SessionDescriptionEvent.cs | 1 - .../API/Voice/SpeakingEvent.cs | 1 - .../API/Voice/SpeakingParams.cs | 1 - .../API/Voice/UdpProtocolInfo.cs | 1 - .../API/Voice/VoiceCloseCode.cs | 63 + .../API/Voice/VoiceOpCode.cs | 1 - .../Audio/Streams/BufferedWriteStream.cs | 2 +- .../BaseSocketClient.Events.cs | 475 +- src/Discord.Net.WebSocket/BaseSocketClient.cs | 23 +- src/Discord.Net.WebSocket/ClientState.cs | 31 + .../Commands/ShardedCommandContext.cs | 5 +- .../Commands/SocketCommandContext.cs | 5 +- .../ConnectionManager.cs | 3 + .../Discord.Net.WebSocket.csproj | 4 +- .../DiscordShardedClient.Events.cs | 7 +- .../DiscordShardedClient.cs | 125 +- .../DiscordSocketApiClient.cs | 46 +- .../DiscordSocketClient.Events.cs | 3 +- .../DiscordSocketClient.cs | 889 ++- .../DiscordSocketConfig.cs | 31 +- .../DiscordVoiceApiClient.cs | 18 +- .../Channels/ISocketMessageChannel.cs | 19 +- .../Channels/SocketCategoryChannel.cs | 11 +- .../Entities/Channels/SocketChannel.cs | 21 +- .../Entities/Channels/SocketChannelHelper.cs | 13 +- .../Entities/Channels/SocketDMChannel.cs | 65 +- .../Entities/Channels/SocketGroupChannel.cs | 77 +- .../Entities/Channels/SocketGuildChannel.cs | 40 +- .../Entities/Channels/SocketStageChannel.cs | 158 + .../Entities/Channels/SocketTextChannel.cs | 137 +- .../Entities/Channels/SocketThreadChannel.cs | 339 + .../Entities/Channels/SocketVoiceChannel.cs | 17 +- .../Entities/Guilds/SocketGuild.cs | 668 +- .../Entities/Guilds/SocketGuildEvent.cs | 216 + .../MessageCommands/SocketMessageCommand.cs | 45 + .../SocketMessageCommandData.cs | 39 + .../UserCommands/SocketUserCommand.cs | 45 + .../UserCommands/SocketUserCommandData.cs | 39 + .../SocketMessageComponent.cs | 436 ++ .../SocketMessageComponentData.cs | 33 + .../SocketAutocompleteInteraction.cs | 126 + .../SocketAutocompleteInteractionData.cs | 73 + .../SlashCommands/SocketSlashCommand.cs | 45 + .../SlashCommands/SocketSlashCommandData.cs | 30 + .../SocketSlashCommandDataOption.cs | 135 + .../SocketApplicationCommand.cs | 116 + .../SocketApplicationCommandChoice.cs | 29 + .../SocketApplicationCommandOption.cs | 87 + .../SocketBaseCommand/SocketCommandBase.cs | 300 + .../SocketCommandBaseData.cs | 58 + .../SocketBaseCommand/SocketResolvableData.cs | 109 + .../Entities/Interaction/SocketInteraction.cs | 243 + .../Entities/Invites/SocketInvite.cs | 21 +- .../Entities/Messages/SocketMessage.cs | 130 +- .../Entities/Messages/SocketUserMessage.cs | 63 +- .../Entities/Roles/SocketRole.cs | 31 +- .../Entities/Stickers/SocketCustomSticker.cs | 81 + .../Entities/Stickers/SocketSticker.cs | 92 + .../Entities/Stickers/SocketUnknownSticker.cs | 64 + .../Entities/Users/SocketGlobalUser.cs | 2 +- .../Entities/Users/SocketGroupUser.cs | 11 +- .../Entities/Users/SocketGuildUser.cs | 19 +- .../Entities/Users/SocketThreadUser.cs | 209 + .../Entities/Users/SocketUnknownUser.cs | 3 +- .../Entities/Users/SocketVoiceState.cs | 10 +- .../Entities/Users/SocketWebhookUser.cs | 19 +- .../Extensions/EntityExtensions.cs | 21 +- .../DiscordWebhookClient.cs | 7 +- .../Messages/WebhookMessageProperties.cs | 4 + .../Entities/Webhooks/RestInternalWebhook.cs | 3 + .../WebhookClientHelper.cs | 16 +- src/Discord.Net/Discord.Net.nuspec | 2 +- .../Discord.Net.Analyzers.Tests.csproj | 6 +- .../Helpers/CodeFixVerifier.Helper.cs | 10 +- .../Helpers/DiagnosticResult.cs | 20 +- .../Helpers/DiagnosticVerifier.Helper.cs | 26 +- .../Verifiers/CodeFixVerifier.cs | 34 +- .../Verifiers/DiagnosticVerifier.cs | 42 +- .../ChannelsTests.cs | 2 +- .../Discord.Net.Tests.Integration.csproj | 4 +- .../GuildTests.cs | 2 +- .../ChannelPermissionsTests.cs | 4 + test/Discord.Net.Tests.Unit/ColorTests.cs | 3 +- .../Discord.Net.Tests.Unit.csproj | 4 +- .../EmbedBuilderTests.cs | 146 +- test/Discord.Net.Tests.Unit/FormatTests.cs | 15 + .../GuildPermissionsTests.cs | 18 +- .../MentionUtilsTests.cs | 12 +- .../MockedEntities/MockedDMChannel.cs | 21 +- .../MockedEntities/MockedGroupChannel.cs | 9 +- .../MockedEntities/MockedTextChannel.cs | 14 +- .../MockedEntities/MockedVoiceChannel.cs | 5 +- 591 files changed, 34497 insertions(+), 1560 deletions(-) create mode 100644 docs/guides/concepts/ratelimits.md create mode 100644 docs/guides/guild_events/creating-guild-events.md create mode 100644 docs/guides/guild_events/getting-event-users.md create mode 100644 docs/guides/guild_events/intro.md create mode 100644 docs/guides/guild_events/modifying-events.md create mode 100644 docs/guides/interactions/application-commands/01-getting-started.md create mode 100644 docs/guides/interactions/application-commands/context-menu-commands/creating-context-menu-commands.md create mode 100644 docs/guides/interactions/application-commands/context-menu-commands/receiving-context-menu-command-events.md create mode 100644 docs/guides/interactions/application-commands/slash-commands/02-creating-slash-commands.md create mode 100644 docs/guides/interactions/application-commands/slash-commands/03-responding-to-slash-commands.md create mode 100644 docs/guides/interactions/application-commands/slash-commands/04-parameters.md create mode 100644 docs/guides/interactions/application-commands/slash-commands/05-responding-ephemerally.md create mode 100644 docs/guides/interactions/application-commands/slash-commands/06-subcommands.md create mode 100644 docs/guides/interactions/application-commands/slash-commands/07-choice-slash-command.md create mode 100644 docs/guides/interactions/application-commands/slash-commands/08-bulk-overwrite-of-global-slash-commands.md create mode 100644 docs/guides/interactions/application-commands/slash-commands/images/ephemeral1.png create mode 100644 docs/guides/interactions/application-commands/slash-commands/images/feedback1.png create mode 100644 docs/guides/interactions/application-commands/slash-commands/images/feedback2.png create mode 100644 docs/guides/interactions/application-commands/slash-commands/images/listroles1.png create mode 100644 docs/guides/interactions/application-commands/slash-commands/images/listroles2.png create mode 100644 docs/guides/interactions/application-commands/slash-commands/images/oauth.png create mode 100644 docs/guides/interactions/application-commands/slash-commands/images/settings1.png create mode 100644 docs/guides/interactions/application-commands/slash-commands/images/settings2.png create mode 100644 docs/guides/interactions/application-commands/slash-commands/images/settings3.png create mode 100644 docs/guides/interactions/application-commands/slash-commands/images/slashcommand1.png create mode 100644 docs/guides/interactions/application-commands/slash-commands/images/slashcommand2.png create mode 100644 docs/guides/interactions/intro.md create mode 100644 docs/guides/interactions/message-components/01-getting-started.md create mode 100644 docs/guides/interactions/message-components/02-responding-to-buttons.md create mode 100644 docs/guides/interactions/message-components/03-buttons-in-depth.md create mode 100644 docs/guides/interactions/message-components/04-select-menus.md create mode 100644 docs/guides/interactions/message-components/05-advanced.md create mode 100644 docs/guides/interactions/message-components/images/image1.png create mode 100644 docs/guides/interactions/message-components/images/image2.png create mode 100644 docs/guides/interactions/message-components/images/image3.png create mode 100644 docs/guides/interactions/message-components/images/image4.png create mode 100644 docs/guides/interactions/message-components/images/image5.png create mode 100644 docs/guides/interactions/message-components/images/image6.png create mode 100644 src/Discord.Net.Core/DiscordErrorCode.cs create mode 100644 src/Discord.Net.Core/DiscordJsonError.cs create mode 100644 src/Discord.Net.Core/Entities/ApplicationFlags.cs create mode 100644 src/Discord.Net.Core/Entities/ApplicationInstallParams.cs create mode 100644 src/Discord.Net.Core/Entities/Channels/IStageChannel.cs create mode 100644 src/Discord.Net.Core/Entities/Channels/IThreadChannel.cs create mode 100644 src/Discord.Net.Core/Entities/Channels/StageInstanceProperties.cs create mode 100644 src/Discord.Net.Core/Entities/Channels/StagePrivacyLevel.cs create mode 100644 src/Discord.Net.Core/Entities/Channels/ThreadArchiveDuration.cs create mode 100644 src/Discord.Net.Core/Entities/Channels/ThreadType.cs create mode 100644 src/Discord.Net.Core/Entities/Guilds/GuildFeature.cs create mode 100644 src/Discord.Net.Core/Entities/Guilds/GuildFeatures.cs create mode 100644 src/Discord.Net.Core/Entities/Guilds/GuildScheduledEventPrivacyLevel.cs create mode 100644 src/Discord.Net.Core/Entities/Guilds/GuildScheduledEventStatus.cs create mode 100644 src/Discord.Net.Core/Entities/Guilds/GuildScheduledEventType.cs create mode 100644 src/Discord.Net.Core/Entities/Guilds/GuildScheduledEventsProperties.cs create mode 100644 src/Discord.Net.Core/Entities/Guilds/IGuildScheduledEvent.cs create mode 100644 src/Discord.Net.Core/Entities/Guilds/NsfwLevel.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/ApplicationCommandOption.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/ApplicationCommandOptionChoice.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/ApplicationCommandOptionType.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/ApplicationCommandProperties.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/ApplicationCommandTypes.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/AutocompleteOption.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/AutocompleteResult.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/ContextMenus/IMessageCommandInteraction.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/ContextMenus/IMessageCommandInteractionData.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/ContextMenus/IUserCommandInteraction.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/ContextMenus/IUserCommandInteractionData.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/ContextMenus/MessageCommandBuilder.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/ContextMenus/MessageCommandProperties.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/ContextMenus/UserCommandBuilder.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/ContextMenus/UserCommandProperties.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/IApplicationCommand.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/IApplicationCommandInteractionData.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/IApplicationCommandInteractionDataOption.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/IApplicationCommandOption.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/IApplicationCommandOptionChoice.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/IDiscordInteraction.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/IDiscordInteractionData.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/InteractionResponseType.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/InteractionType.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/MessageComponents/ActionRowComponent.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/MessageComponents/ButtonComponent.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/MessageComponents/ButtonStyle.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/MessageComponents/ComponentBuilder.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/MessageComponents/ComponentType.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/MessageComponents/IComponentInteraction.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/MessageComponents/IComponentInteractionData.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/MessageComponents/IMessageComponent.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/MessageComponents/MessageComponent.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/MessageComponents/SelectMenuComponent.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/MessageComponents/SelectMenuOption.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/SlashCommands/IAutocompleteInteraction.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/SlashCommands/IAutocompleteInteractionData.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/SlashCommands/ISlashCommandInteraction.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/SlashCommands/SlashCommandBuilder.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/SlashCommands/SlashCommandProperties.cs create mode 100644 src/Discord.Net.Core/Entities/Messages/FileAttachment.cs create mode 100644 src/Discord.Net.Core/Entities/Messages/IMessageInteraction.cs create mode 100644 src/Discord.Net.Core/Entities/Messages/MessageInteraction.cs create mode 100644 src/Discord.Net.Core/Entities/Messages/StickerFormatType.cs delete mode 100644 src/Discord.Net.Core/Entities/Messages/SticketFormatType.cs create mode 100644 src/Discord.Net.Core/Entities/Messages/TimestampTag.cs create mode 100644 src/Discord.Net.Core/Entities/Messages/TimestampTagStyle.cs create mode 100644 src/Discord.Net.Core/Entities/Permissions/ApplicationCommandPermissionTarget.cs create mode 100644 src/Discord.Net.Core/Entities/Permissions/ApplicationCommandPermissions.cs create mode 100644 src/Discord.Net.Core/Entities/Permissions/GuildApplicationCommandPermissions.cs create mode 100644 src/Discord.Net.Core/Entities/Stickers/ICustomSticker.cs rename src/Discord.Net.Core/Entities/{Messages => Stickers}/ISticker.cs (71%) create mode 100644 src/Discord.Net.Core/Entities/Stickers/IStickerItem.cs create mode 100644 src/Discord.Net.Core/Entities/Stickers/StickerPack.cs create mode 100644 src/Discord.Net.Core/Entities/Stickers/StickerProperties.cs create mode 100644 src/Discord.Net.Core/Entities/Stickers/StickerType.cs create mode 100644 src/Discord.Net.Core/Extensions/ObjectExtensions.cs create mode 100644 src/Discord.Net.Core/Net/ApplicationCommandException.cs create mode 100644 src/Discord.Net.Core/Net/Rest/IRateLimitInfo.cs create mode 100644 src/Discord.Net.Core/Utils/UrlValidation.cs create mode 100644 src/Discord.Net.Rest/API/Common/ActionRowComponent.cs create mode 100644 src/Discord.Net.Rest/API/Common/ApplicationCommand.cs create mode 100644 src/Discord.Net.Rest/API/Common/ApplicationCommandInteractionData.cs create mode 100644 src/Discord.Net.Rest/API/Common/ApplicationCommandInteractionDataOption.cs create mode 100644 src/Discord.Net.Rest/API/Common/ApplicationCommandInteractionDataResolved.cs create mode 100644 src/Discord.Net.Rest/API/Common/ApplicationCommandOption.cs create mode 100644 src/Discord.Net.Rest/API/Common/ApplicationCommandOptionChoice.cs create mode 100644 src/Discord.Net.Rest/API/Common/ApplicationCommandPermissions.cs create mode 100644 src/Discord.Net.Rest/API/Common/AutocompleteInteractionData.cs create mode 100644 src/Discord.Net.Rest/API/Common/AutocompleteInteractionDataOption.cs create mode 100644 src/Discord.Net.Rest/API/Common/ButtonComponent.cs create mode 100644 src/Discord.Net.Rest/API/Common/ChannelThreads.cs create mode 100644 src/Discord.Net.Rest/API/Common/DiscordError.cs create mode 100644 src/Discord.Net.Rest/API/Common/Error.cs create mode 100644 src/Discord.Net.Rest/API/Common/GuildApplicationCommandPermissions.cs create mode 100644 src/Discord.Net.Rest/API/Common/GuildScheduledEvent.cs create mode 100644 src/Discord.Net.Rest/API/Common/GuildScheduledEventEntityMetadata.cs create mode 100644 src/Discord.Net.Rest/API/Common/GuildScheduledEventUser.cs create mode 100644 src/Discord.Net.Rest/API/Common/InstallParams.cs create mode 100644 src/Discord.Net.Rest/API/Common/Interaction.cs create mode 100644 src/Discord.Net.Rest/API/Common/InteractionCallbackData.cs create mode 100644 src/Discord.Net.Rest/API/Common/InteractionResponse.cs create mode 100644 src/Discord.Net.Rest/API/Common/MessageComponentInteractionData.cs create mode 100644 src/Discord.Net.Rest/API/Common/MessageInteraction.cs create mode 100644 src/Discord.Net.Rest/API/Common/NitroStickerPacks.cs create mode 100644 src/Discord.Net.Rest/API/Common/PropertyErrorDescription.cs create mode 100644 src/Discord.Net.Rest/API/Common/SelectMenuComponent.cs create mode 100644 src/Discord.Net.Rest/API/Common/SelectMenuOption.cs create mode 100644 src/Discord.Net.Rest/API/Common/StageInstance.cs create mode 100644 src/Discord.Net.Rest/API/Common/StickerItem.cs create mode 100644 src/Discord.Net.Rest/API/Common/StickerPack.cs create mode 100644 src/Discord.Net.Rest/API/Common/ThreadMember.cs create mode 100644 src/Discord.Net.Rest/API/Common/ThreadMetadata.cs create mode 100644 src/Discord.Net.Rest/API/Net/IResolvable.cs create mode 100644 src/Discord.Net.Rest/API/Rest/CreateApplicationCommandParams.cs create mode 100644 src/Discord.Net.Rest/API/Rest/CreateGuildScheduledEventParams.cs create mode 100644 src/Discord.Net.Rest/API/Rest/CreateStageInstanceParams.cs create mode 100644 src/Discord.Net.Rest/API/Rest/CreateStickerParams.cs create mode 100644 src/Discord.Net.Rest/API/Rest/GetEventUsersParams.cs create mode 100644 src/Discord.Net.Rest/API/Rest/ModifyApplicationCommandParams.cs create mode 100644 src/Discord.Net.Rest/API/Rest/ModifyGuildApplicationCommandPermissions.cs create mode 100644 src/Discord.Net.Rest/API/Rest/ModifyGuildApplicationCommandPermissionsParams.cs create mode 100644 src/Discord.Net.Rest/API/Rest/ModifyGuildScheduledEventParams.cs create mode 100644 src/Discord.Net.Rest/API/Rest/ModifyInteractionResponseParams.cs create mode 100644 src/Discord.Net.Rest/API/Rest/ModifyStageInstanceParams.cs create mode 100644 src/Discord.Net.Rest/API/Rest/ModifyStickerParams.cs create mode 100644 src/Discord.Net.Rest/API/Rest/ModifyThreadParams.cs create mode 100644 src/Discord.Net.Rest/API/Rest/ModifyVoiceStateParams.cs create mode 100644 src/Discord.Net.Rest/API/Rest/StartThreadParams.cs create mode 100644 src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/StageInfo.cs create mode 100644 src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/StageInstanceCreateAuditLogData.cs create mode 100644 src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/StageInstanceDeleteAuditLogData.cs create mode 100644 src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/StageInstanceUpdatedAuditLogData.cs create mode 100644 src/Discord.Net.Rest/Entities/Channels/RestStageChannel.cs create mode 100644 src/Discord.Net.Rest/Entities/Channels/RestThreadChannel.cs create mode 100644 src/Discord.Net.Rest/Entities/Channels/ThreadHelper.cs create mode 100644 src/Discord.Net.Rest/Entities/Guilds/RestGuildEvent.cs create mode 100644 src/Discord.Net.Rest/Entities/Interactions/CommandBase/RestCommandBase.cs create mode 100644 src/Discord.Net.Rest/Entities/Interactions/CommandBase/RestCommandBaseData.cs create mode 100644 src/Discord.Net.Rest/Entities/Interactions/CommandBase/RestResolvableData.cs create mode 100644 src/Discord.Net.Rest/Entities/Interactions/ContextMenuCommands/MessageCommands/RestMessageCommand.cs create mode 100644 src/Discord.Net.Rest/Entities/Interactions/ContextMenuCommands/MessageCommands/RestMessageCommandData.cs create mode 100644 src/Discord.Net.Rest/Entities/Interactions/ContextMenuCommands/UserCommands/RestUserCommand.cs create mode 100644 src/Discord.Net.Rest/Entities/Interactions/ContextMenuCommands/UserCommands/RestUserCommandData.cs create mode 100644 src/Discord.Net.Rest/Entities/Interactions/InteractionHelper.cs create mode 100644 src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs create mode 100644 src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponentData.cs create mode 100644 src/Discord.Net.Rest/Entities/Interactions/RestApplicationCommand.cs create mode 100644 src/Discord.Net.Rest/Entities/Interactions/RestApplicationCommandChoice.cs create mode 100644 src/Discord.Net.Rest/Entities/Interactions/RestApplicationCommandOption.cs create mode 100644 src/Discord.Net.Rest/Entities/Interactions/RestGlobalCommand.cs create mode 100644 src/Discord.Net.Rest/Entities/Interactions/RestGuildCommand.cs create mode 100644 src/Discord.Net.Rest/Entities/Interactions/RestInteraction.cs create mode 100644 src/Discord.Net.Rest/Entities/Interactions/RestPingInteraction.cs create mode 100644 src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestAutocompleteInteraction.cs create mode 100644 src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestAutocompleteInteractionData.cs create mode 100644 src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestSlashCommand.cs create mode 100644 src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestSlashCommandData.cs create mode 100644 src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestSlashCommandDataOption.cs create mode 100644 src/Discord.Net.Rest/Entities/Messages/CustomSticker.cs create mode 100644 src/Discord.Net.Rest/Entities/Messages/RestFollowupMessage.cs create mode 100644 src/Discord.Net.Rest/Entities/Messages/RestInteractionMessage.cs create mode 100644 src/Discord.Net.Rest/Entities/Messages/StickerItem.cs create mode 100644 src/Discord.Net.Rest/Entities/Users/RestThreadUser.cs create mode 100644 src/Discord.Net.Rest/Net/BadSignatureException.cs create mode 100644 src/Discord.Net.Rest/Net/Converters/DiscordErrorConverter.cs create mode 100644 src/Discord.Net.Rest/Net/Converters/GuildFeaturesConverter.cs create mode 100644 src/Discord.Net.Rest/Net/Converters/InteractionConverter.cs create mode 100644 src/Discord.Net.Rest/Net/Converters/MessageComponentConverter.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Array16.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Array8.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/ByteIntegerConverter.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/CryptoBytes.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Operations.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/FieldElement.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/GroupElement.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/base.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/base2.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/d.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/d2.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_0.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_1.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_add.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_cmov.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_cswap.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_frombytes.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_invert.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_isnegative.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_isnonzero.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_mul.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_mul121666.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_neg.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_pow22523.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_sq.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_sq2.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_sub.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_tobytes.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_add.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_double_scalarmult.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_frombytes.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_madd.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_msub.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_p1p1_to_p2.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_p1p1_to_p3.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_p2_0.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_p2_dbl.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_p3_0.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_p3_dbl.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_p3_to_cached.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_p3_to_p2.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_p3_tobytes.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_precomp_0.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_scalarmult_base.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_sub.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_tobytes.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/keypair.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/open.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/sc_clamp.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/sc_mul_add.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/sc_reduce.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/scalarmult.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/sign.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/sqrtm1.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Sha512.cs create mode 100644 src/Discord.Net.Rest/Net/ED25519/Sha512Internal.cs create mode 100644 src/Discord.Net.Rest/Utils/HexConverter.cs create mode 100644 src/Discord.Net.WebSocket/API/Gateway/ApplicationCommandCreatedUpdatedEvent.cs create mode 100644 src/Discord.Net.WebSocket/API/Gateway/GuildJoinRequestDeleteEvent.cs create mode 100644 src/Discord.Net.WebSocket/API/Gateway/GuildScheduledEventUserAddRemoveEvent.cs create mode 100644 src/Discord.Net.WebSocket/API/Gateway/GuildStickerUpdateEvent.cs create mode 100644 src/Discord.Net.WebSocket/API/Gateway/InviteCreatedEvent.cs create mode 100644 src/Discord.Net.WebSocket/API/Gateway/InviteDeletedEvent.cs create mode 100644 src/Discord.Net.WebSocket/API/Gateway/ThreadListSyncEvent.cs create mode 100644 src/Discord.Net.WebSocket/API/Gateway/ThreadMembersUpdate.cs create mode 100644 src/Discord.Net.WebSocket/API/Voice/VoiceCloseCode.cs create mode 100644 src/Discord.Net.WebSocket/Entities/Channels/SocketStageChannel.cs create mode 100644 src/Discord.Net.WebSocket/Entities/Channels/SocketThreadChannel.cs create mode 100644 src/Discord.Net.WebSocket/Entities/Guilds/SocketGuildEvent.cs create mode 100644 src/Discord.Net.WebSocket/Entities/Interaction/ContextMenuCommands/MessageCommands/SocketMessageCommand.cs create mode 100644 src/Discord.Net.WebSocket/Entities/Interaction/ContextMenuCommands/MessageCommands/SocketMessageCommandData.cs create mode 100644 src/Discord.Net.WebSocket/Entities/Interaction/ContextMenuCommands/UserCommands/SocketUserCommand.cs create mode 100644 src/Discord.Net.WebSocket/Entities/Interaction/ContextMenuCommands/UserCommands/SocketUserCommandData.cs create mode 100644 src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponent.cs create mode 100644 src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponentData.cs create mode 100644 src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketAutocompleteInteraction.cs create mode 100644 src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketAutocompleteInteractionData.cs create mode 100644 src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketSlashCommand.cs create mode 100644 src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketSlashCommandData.cs create mode 100644 src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketSlashCommandDataOption.cs create mode 100644 src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketApplicationCommand.cs create mode 100644 src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketApplicationCommandChoice.cs create mode 100644 src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketApplicationCommandOption.cs create mode 100644 src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketCommandBase.cs create mode 100644 src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketCommandBaseData.cs create mode 100644 src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketResolvableData.cs create mode 100644 src/Discord.Net.WebSocket/Entities/Interaction/SocketInteraction.cs create mode 100644 src/Discord.Net.WebSocket/Entities/Stickers/SocketCustomSticker.cs create mode 100644 src/Discord.Net.WebSocket/Entities/Stickers/SocketSticker.cs create mode 100644 src/Discord.Net.WebSocket/Entities/Stickers/SocketUnknownSticker.cs create mode 100644 src/Discord.Net.WebSocket/Entities/Users/SocketThreadUser.cs diff --git a/Discord.Net.sln b/Discord.Net.sln index 1a32f1270..084d8a834 100644 --- a/Discord.Net.sln +++ b/Discord.Net.sln @@ -40,7 +40,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Analyzers.Tests EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Examples", "src\Discord.Net.Examples\Discord.Net.Examples.csproj", "{47820065-3CFB-401C-ACEA-862BD564A404}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "idn", "samples\idn\idn.csproj", "{4A03840B-9EBE-47E3-89AB-E0914DF21AFB}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "idn", "samples\idn\idn.csproj", "{4A03840B-9EBE-47E3-89AB-E0914DF21AFB}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/LICENSE b/LICENSE index 3765bf39c..fb9480169 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2015-2019 Discord.Net Contributors +Copyright (c) 2015-2021 Discord.Net Contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 32e1515af..87b46fb64 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # Discord.Net + [![NuGet](https://img.shields.io/nuget/vpre/Discord.Net.svg?maxAge=2592000?style=plastic)](https://www.nuget.org/packages/Discord.Net) [![MyGet](https://img.shields.io/myget/discord-net/vpre/Discord.Net.svg)](https://www.myget.org/feed/Packages/discord-net) [![Build Status](https://dev.azure.com/discord-net/Discord.Net/_apis/build/status/discord-net.Discord.Net?branchName=dev)](https://dev.azure.com/discord-net/Discord.Net/_build/latest?definitionId=1&branchName=dev) @@ -12,34 +13,43 @@ An unofficial .NET API Wrapper for the Discord client (https://discord.com). - [Latest CI repo](https://github.com/discord-net/docs-static) ## Installation + ### Stable (NuGet) + Our stable builds available from NuGet through the Discord.Net metapackage: + - [Discord.Net](https://www.nuget.org/packages/Discord.Net/) The individual components may also be installed from NuGet: + - [Discord.Net.Commands](https://www.nuget.org/packages/Discord.Net.Commands/) - [Discord.Net.Rest](https://www.nuget.org/packages/Discord.Net.Rest/) - [Discord.Net.WebSocket](https://www.nuget.org/packages/Discord.Net.WebSocket/) - [Discord.Net.Webhook](https://www.nuget.org/packages/Discord.Net.Webhook/) ### Unstable (MyGet) + Nightly builds are available through our MyGet feed (`https://www.myget.org/F/discord-net/api/v3/index.json`). ## Compiling + In order to compile Discord.Net, you require the following: ### Using Visual Studio + - [Visual Studio 2017](https://www.microsoft.com/net/core#windowsvs2017) - [.NET Core SDK](https://www.microsoft.com/net/download/core) The .NET Core workload must be selected during Visual Studio installation. ### Using Command Line + - [.NET Core SDK](https://www.microsoft.com/net/download/core) ## Known Issues ### WebSockets (Win7 and earlier) + .NET Core 1.1 does not support WebSockets on Win7 and earlier. This issue has been fixed since the release of .NET Core 2.1. It is recommended to target .NET Core 2.1 or above for your project if you wish to run your bot on legacy platforms; alternatively, you may choose to install the [Discord.Net.Providers.WS4Net](https://www.nuget.org/packages/Discord.Net.Providers.WS4Net/) package. ## Versioning Guarantees diff --git a/docs/guides/concepts/ratelimits.md b/docs/guides/concepts/ratelimits.md new file mode 100644 index 000000000..afeb5f795 --- /dev/null +++ b/docs/guides/concepts/ratelimits.md @@ -0,0 +1,49 @@ +# Ratelimits + +Ratelimits are a core concept of any API - Discords API is no exception. each verified library must follow the ratelimit guidelines. + +### Using the ratelimit callback + +There is a new property within `RequestOptions` called RatelimitCallback. This callback is called when a request is made via the rest api. The callback is called with a `IRateLimitInfo` parameter: + +| Name | Type | Description | +| ---------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | +| IsGlobal | bool | Whether or not this ratelimit info is global. | +| Limit | int? | The number of requests that can be made. | +| Remaining | int? | The number of remaining requests that can be made. | +| RetryAfter | int? | The total time (in seconds) of when the current rate limit bucket will reset. Can have decimals to match previous millisecond ratelimit precision. | +| Reset | DateTimeOffset? | The time at which the rate limit resets. | +| ResetAfter | TimeSpan? | The absolute time when this ratelimit resets. | +| Bucket | string | A unique string denoting the rate limit being encountered (non-inclusive of major parameters in the route path). | +| Lag | TimeSpan? | The amount of lag for the request. This is used to denote the precise time of when the ratelimit expires. | +| Endpoint | string | The endpoint that this ratelimit info came from. | + +Let's set up a ratelimit callback that will print out the ratelimit info to the console. + +```cs +public async Task MyRatelimitCallback(IRateLimitInfo info) +{ + Console.WriteLine($"{info.IsGlobal} {info.Limit} {info.Remaining} {info.RetryAfter} {info.Reset} {info.ResetAfter} {info.Bucket} {info.Lag} {info.Endpoint}"); +} +``` + +Let's use this callback in a send message function + +```cs +[Command("ping")] +public async Task ping() +{ + var options = new RequestOptions() + { + RatelimitCallback = MyRatelimitCallback + }; + + await Context.Channel.SendMessageAsync("Pong!", options: options); +} +``` + +Running this produces the following output: + +``` +False 5 4 2021-09-09 3:48:14 AM +00:00 00:00:05 a06de0de4a08126315431cc0c55ee3dc 00:00:00.9891364 channels/848511736872828929/messages +``` diff --git a/docs/guides/emoji/emoji.md b/docs/guides/emoji/emoji.md index 60a84409c..dbf654bbf 100644 --- a/docs/guides/emoji/emoji.md +++ b/docs/guides/emoji/emoji.md @@ -46,14 +46,16 @@ form; this can be obtained in several different ways. ### Emoji Declaration After obtaining the Unicode representation of the emoji, you may -create the @Discord.Emoji object by passing the string into its +create the @Discord.Emoji object by passing the string with unicode into its constructor (e.g. `new Emoji("👌");` or `new Emoji("\uD83D\uDC4C");`). Your method of declaring an @Discord.Emoji should look similar to this: - [!code-csharp[Emoji Sample](samples/emoji-sample.cs)] +Also you can use `Emoji.Parse()` or `Emoji.TryParse()` methods +for parsing emojis from strings like `:heart:`, `<3` or `❤`. + [FileFormat.Info]: https://www.fileformat.info/info/emoji/list.htm ## Emote @@ -97,4 +99,4 @@ this: ## Additional Information To learn more about emote and emojis and how they could be used, -see the documentation of @Discord.IEmote. \ No newline at end of file +see the documentation of @Discord.IEmote. diff --git a/docs/guides/guild_events/creating-guild-events.md b/docs/guides/guild_events/creating-guild-events.md new file mode 100644 index 000000000..64ac0de9b --- /dev/null +++ b/docs/guides/guild_events/creating-guild-events.md @@ -0,0 +1,31 @@ +--- +uid: Guides.GuildEvents.Creating +title: Creating Guild Events +--- + +# Creating guild events + +You can create new guild events by using the `CreateEventAsync` function on a guild. + +### Parameters + +| Name | Type | Summary | +| ------------- | --------------------------------- | ---------------------------------------------------------------------------- | +| name | `string` | Sets the name of the event. | +| startTime | `DateTimeOffset` | Sets the start time of the event. | +| type | `GuildScheduledEventType` | Sets the type of the event. | +| privacyLevel? | `GuildScheduledEventPrivacyLevel` | Sets the privacy level of the event | +| description? | `string` | Sets the description of the event. | +| endTime? | `DateTimeOffset?` | Sets the end time of the event. | +| channelId? | `ulong?` | Sets the channel id of the event, only valid on stage or voice channel types | +| location? | `string` | Sets the location of the event, only valid on external types | + +Lets create a basic test event. + +```cs +var guild = client.GetGuild(guildId); + +var guildEvent = await guild.CreateEventAsync("test event", DateTimeOffset.UtcNow.AddDays(1), GuildScheduledEventType.External, endTime: DateTimeOffset.UtcNow.AddDays(2), location: "Space"); +``` + +This code will create an event that lasts a day and starts tomorrow. It will be an external event thats in space. diff --git a/docs/guides/guild_events/getting-event-users.md b/docs/guides/guild_events/getting-event-users.md new file mode 100644 index 000000000..f4b5388a0 --- /dev/null +++ b/docs/guides/guild_events/getting-event-users.md @@ -0,0 +1,16 @@ +--- +uid: Guides.GuildEvents.GettingUsers +title: Getting Guild Event Users +--- + +# Getting Event Users + +You can get a collection of users who are currently interested in the event by calling `GetUsersAsync`. This method works like any other get users method as in it returns an async enumerable. This method also supports pagination by user id. + +```cs +// get all users and flatten the result into one collection. +var users = await event.GetUsersAsync().FlattenAsync(); + +// get users around the 613425648685547541 id. +var aroundUsers = await event.GetUsersAsync(613425648685547541, Direction.Around).FlattenAsync(); +``` diff --git a/docs/guides/guild_events/intro.md b/docs/guides/guild_events/intro.md new file mode 100644 index 000000000..b60a8c70d --- /dev/null +++ b/docs/guides/guild_events/intro.md @@ -0,0 +1,41 @@ +--- +uid: Guides.GuildEvents.Intro +title: Introduction to Guild Events +--- + +# Guild Events + +Guild events are a way to host events within a guild. They offer alot of features and flexibility. + +## Getting started with guild events + +You can access any events within a guild by calling `GetEventsAsync` on a guild. + +```cs +var guildEvents = await guild.GetEventsAsync(); +``` + +If your working with socket guilds you can just use the `Events` property: + +```cs +var guildEvents = guild.Events; +``` + +There are also new gateway events that you can hook to receive guild scheduled events on. + +```cs +// Fired when a guild event is cancelled. +client.GuildScheduledEventCancelled += ... + +// Fired when a guild event is completed. +client.GuildScheduledEventCompleted += ... + +// Fired when a guild event is started. +client.GuildScheduledEventStarted += ... + +// Fired when a guild event is created. +client.GuildScheduledEventCreated += ... + +// Fired when a guild event is updated. +client.GuildScheduledEventUpdated += ... +``` diff --git a/docs/guides/guild_events/modifying-events.md b/docs/guides/guild_events/modifying-events.md new file mode 100644 index 000000000..05e14ec98 --- /dev/null +++ b/docs/guides/guild_events/modifying-events.md @@ -0,0 +1,23 @@ +--- +uid: Guides.GuildEvents.Modifying +title: Modifying Guild Events +--- + +# Modifying Events + +You can modify events using the `ModifyAsync` method to modify the event, heres the properties you can modify: + +| Name | Type | Description | +| ------------ | --------------------------------- | -------------------------------------------- | +| ChannelId | `ulong?` | Gets or sets the channel id of the event. | +| string | `string` | Gets or sets the location of this event. | +| Name | `string` | Gets or sets the name of the event. | +| PrivacyLevel | `GuildScheduledEventPrivacyLevel` | Gets or sets the privacy level of the event. | +| StartTime | `DateTimeOffset` | Gets or sets the start time of the event. | +| EndTime | `DateTimeOffset` | Gets or sets the end time of the event. | +| Description | `string` | Gets or sets the description of the event. | +| Type | `GuildScheduledEventType` | Gets or sets the type of the event. | +| Status | `GuildScheduledEventStatus` | Gets or sets the status of the event. | + +> [!NOTE] +> All of these properties are optional. diff --git a/docs/guides/interactions/application-commands/01-getting-started.md b/docs/guides/interactions/application-commands/01-getting-started.md new file mode 100644 index 000000000..fc8c8fe30 --- /dev/null +++ b/docs/guides/interactions/application-commands/01-getting-started.md @@ -0,0 +1,32 @@ +--- +uid: Guides.SlashCommands.Intro +title: Introduction to slash commands +--- + + +# Getting started with application commands. + +Welcome! This guide will show you how to use application commands. + +## What is an application command? + +Application commands consist of three different types. Slash commands, context menu User commands and context menu Message commands. +Slash commands are made up of a name, description, and a block of options, which you can think of like arguments to a function. The name and description help users find your command among many others, and the options validate user input as they fill out your command. +Message and User commands are only a name, to the user. So try to make the name descriptive. They're accessed by right clicking (or long press, on mobile) a user or a message, respectively. + +All three varieties of application commands have both Global and Guild variants. Your global commands are available in every guild that adds your application. You can also make commands for a specific guild; they're only available in that guild. The User and Message commands are more limited in quantity than the slash commands. For specifics, check out their respective guide pages. + +An Interaction is the message that your application receives when a user uses a command. It includes the values that the user submitted, as well as some metadata about this particular instance of the command being used: the guild_id, channel_id, member and other fields. You can find all the values in our data models. + +## Authorizing your bot for application commands + +There is a new special OAuth2 scope for applications called `applications.commands`. In order to make Application Commands work within a guild, the guild must authorize your application with the `applications.commands` scope. The bot scope is not enough. + +Head over to your discord applications OAuth2 screen and make sure to select the `application.commands` scope. + +![OAuth2 scoping](slash-commands/images/oauth.png) + +From there you can then use the link to add your bot to a server. + +> [!NOTE] +> In order for users in your guild to use your slash commands, they need to have the "Use Slash Command" permission on the guild. diff --git a/docs/guides/interactions/application-commands/context-menu-commands/creating-context-menu-commands.md b/docs/guides/interactions/application-commands/context-menu-commands/creating-context-menu-commands.md new file mode 100644 index 000000000..02a9cde14 --- /dev/null +++ b/docs/guides/interactions/application-commands/context-menu-commands/creating-context-menu-commands.md @@ -0,0 +1,105 @@ +--- +uid: Guides.ContextCommands.Creating +title: Creating Context Commands +--- + +# Creating context menu commands. + +There are two kinds of Context Menu Commands: User Commands and Message Commands. +Each of these have a Global and Guild variant. +Global menu commands are available for every guild that adds your app. An individual app's global commands are also available in DMs if that app has a bot that shares a mutual guild with the user. + +Guild commands are specific to the guild you specify when making them. Guild commands are not available in DMs. Command names are unique per application within each scope (global and guild). That means: + +- Your app cannot have two global commands with the same name +- Your app cannot have two guild commands within the same name on the same guild +- Your app can have a global and guild command with the same name +- Multiple apps can have commands with the same names + +**Note**: Apps can have a maximum of 5 global context menu commands, and an additional 5 guild-specific context menu commands per guild. + +If you don't have the code for a bot ready yet please follow [this guide](https://docs.stillu.cc/guides/getting_started/first-bot.html). + +## UserCommandBuilder + +The context menu user command builder will help you create user commands. The builder has these available fields and methods: + +| Name | Type | Description | +| -------- | -------- | ------------------------------------------------------------------------------------------------ | +| Name | string | The name of this context menu command. | +| WithName | Function | Sets the field name. | +| Build | Function | Builds the builder into the appropriate `UserCommandProperties` class used to make Menu commands | + +## MessageCommandBuilder + +The context menu message command builder will help you create message commands. The builder has these available fields and methods: + +| Name | Type | Description | +| -------- | -------- | --------------------------------------------------------------------------------------------------- | +| Name | string | The name of this context menu command. | +| WithName | Function | Sets the field name. | +| Build | Function | Builds the builder into the appropriate `MessageCommandProperties` class used to make Menu commands | + +**Note**: Context Menu command names can be upper and lowercase, and use spaces. + +Let's use the user command builder to make a global and guild command. + +```cs +// Let's hook the ready event for creating our commands in. +client.Ready += Client_Ready; + +... + +public async Task Client_Ready() +{ + // Let's build a guild command! We're going to need a guild so lets just put that in a variable. + var guild = client.GetGuild(guildId); + + // Next, lets create our user and message command builder. This is like the embed builder but for context menu commands. + var guildUserCommand = new UserCommandBuilder(); + var guildMessageCommand = new MessageCommandBuilder(); + + // Note: Names have to be all lowercase and match the regular expression ^[\w -]{3,32}$ + guildUserCommand.WithName("Guild User Command"); + guildMessageCommand.WithName("Guild Message Command"); + + // Descriptions are not used with User and Message commands + //guildCommand.WithDescription(""); + + // Let's do our global commands + var globalUserCommand = new UserCommandBuilder(); + globalCommand.WithName("Global User Command"); + var globalMessageCommand = new MessageCommandBuilder(); + globalMessageCommand.WithName("Global Message Command"); + + + try + { + // Now that we have our builder, we can call the BulkOverwriteApplicationCommandAsync to make our context commands. Note: this will overwrite all your previous commands with this array. + await guild.BulkOverwriteApplicationCommandAsync(new ApplicationCommandProperties[] + { + guildUserCommand.Build(), + guildMessageCommand.Build() + }); + + // With global commands we dont need the guild. + await client.BulkOverwriteGlobalApplicationCommandsAsync(new ApplicationCommandProperties[] + { + globalUserCommand.Build(), + globalMessageCommand.Build() + }) + } + catch(ApplicationCommandException exception) + { + // If our command was invalid, we should catch an ApplicationCommandException. This exception contains the path of the error as well as the error message. You can serialize the Error field in the exception to get a visual of where your error is. + var json = JsonConvert.SerializeObject(exception.Error, Formatting.Indented); + + // You can send this error somewhere or just print it to the console, for this example we're just going to print it. + Console.WriteLine(json); + } +} + +``` + +> [!NOTE] +> Application commands only need to be created once. They do _not_ have to be 'created' on every startup or connection. The example simple shows creating them in the ready event as it's simpler than creating normal bot commands to register application commands. diff --git a/docs/guides/interactions/application-commands/context-menu-commands/receiving-context-menu-command-events.md b/docs/guides/interactions/application-commands/context-menu-commands/receiving-context-menu-command-events.md new file mode 100644 index 000000000..d4e973d04 --- /dev/null +++ b/docs/guides/interactions/application-commands/context-menu-commands/receiving-context-menu-command-events.md @@ -0,0 +1,33 @@ +--- +uid: Guides.ContextCommands.Reveiving +title: Receiving Context Commands +--- + +# Receiving Context Menu events + +User commands and Message commands have their own unique event just like the other interaction types. For user commands the event is `UserCommandExecuted` and for message commands the event is `MessageCommandExecuted`. + +```cs +// For message commands +client.MessageCommandExecuted += MessageCommandHandler; + +// For user commands +client.UserCommandExecuted += UserCommandHandler; + +... + +public async Task MessageCommandHandler(SocketMessageCommand arg) +{ + Console.Writeline("Message command received!"); +} + +public async Task UserCommandHandler(SocketUserCommand arg) +{ + Console.Writeline("User command received!"); +} +``` + +User commands contain a SocketUser object called `Member` in their data class, showing the user that was clicked to run the command. +Message commands contain a SocketMessage object called `Message` in their data class, showing the message that was clicked to run the command. + +Both return the user who ran the command, the guild (if any), channel, etc. \ No newline at end of file diff --git a/docs/guides/interactions/application-commands/slash-commands/02-creating-slash-commands.md b/docs/guides/interactions/application-commands/slash-commands/02-creating-slash-commands.md new file mode 100644 index 000000000..9e35de285 --- /dev/null +++ b/docs/guides/interactions/application-commands/slash-commands/02-creating-slash-commands.md @@ -0,0 +1,98 @@ +--- +uid: Guides.SlashCommands.Creating +title: Creating Slash Commands +--- + +# Creating your first slash commands. + +There are two kinds of Slash Commands: global commands and guild commands. +Global commands are available for every guild that adds your app. An individual app's global commands are also available in DMs if that app has a bot that shares a mutual guild with the user. + +Guild commands are specific to the guild you specify when making them. Guild commands are not available in DMs. Command names are unique per application within each scope (global and guild). That means: + +- Your app cannot have two global commands with the same name +- Your app cannot have two guild commands within the same name on the same guild +- Your app can have a global and guild command with the same name +- Multiple apps can have commands with the same names + +**Note**: Apps can have a maximum of 100 global commands, and an additional 100 guild-specific commands per guild. + +**Note**: Global commands will take up to 1 hour to create, delete or modify on guilds. If you need to update a command quickly for testing you can create it as a guild command. + +If you don't have the code for a bot ready yet please follow [this guide](https://docs.stillu.cc/guides/getting_started/first-bot.html). + +## SlashCommandBuilder + +The slash command builder will help you create slash commands. The builder has these available fields and methods: + +| Name | Type | Description | +| --------------------- | -------------------------------- | -------------------------------------------------------------------------------------------- | +| MaxNameLength | const int | The maximum length of a name for a slash command allowed by Discord. | +| MaxDescriptionLength | const int | The maximum length of a commands description allowed by Discord. | +| MaxOptionsCount | const int | The maximum count of command options allowed by Discord | +| Name | string | The name of this slash command. | +| Description | string | A 1-100 length description of this slash command | +| Options | List\ | The options for this command. | +| DefaultPermission | bool | Whether the command is enabled by default when the app is added to a guild. | +| WithName | Function | Sets the field name. | +| WithDescription | Function | Sets the description of the current command. | +| WithDefaultPermission | Function | Sets the default permission of the current command. | +| AddOption | Function | Adds an option to the current slash command. | +| Build | Function | Builds the builder into a `SlashCommandCreationProperties` class used to make slash commands | + +> [!NOTE] +> Slash command names must be all lowercase! + +## Creating a Slash Command + +Let's use the slash command builder to make a global and guild command. + +```cs +// Let's hook the ready event for creating our commands in. +client.Ready += Client_Ready; + +... + +public async Task Client_Ready() +{ + // Let's build a guild command! We're going to need a guild so lets just put that in a variable. + var guild = client.GetGuild(guildId); + + // Next, lets create our slash command builder. This is like the embed builder but for slash commands. + var guildCommand = new SlashCommandBuilder(); + + // Note: Names have to be all lowercase and match the regular expression ^[\w-]{3,32}$ + guildCommand.WithName("first-command"); + + // Descriptions can have a max length of 100. + guildCommand.WithDescription("This is my first guild slash command!"); + + // Let's do our global command + var globalCommand = new SlashCommandBuilder(); + globalCommand.WithName("first-global-command"); + globalCommand.WithDescription("This is my frist global slash command"); + + try + { + // Now that we have our builder, we can call the CreateApplicationCommandAsync method to make our slash command. + await guild.CreateApplicationCommandAsync(guildCommand.Build()); + + // With global commands we dont need the guild. + await client.CreateGlobalApplicationCommandAsync(globalCommand.Build()); + // Using the ready event is a simple implementation for the sake of the example. Suitable for testing and development. + // For a production bot, it is recommended to only run the CreateGlobalApplicationCommandAsync() once for each command. + } + catch(ApplicationCommandException exception) + { + // If our command was invalid, we should catch an ApplicationCommandException. This exception contains the path of the error as well as the error message. You can serialize the Error field in the exception to get a visual of where your error is. + var json = JsonConvert.SerializeObject(exception.Error, Formatting.Indented); + + // You can send this error somewhere or just print it to the console, for this example we're just going to print it. + Console.WriteLine(json); + } +} + +``` + +> [!NOTE] +> Slash commands only need to be created once. They do _not_ have to be 'created' on every startup or connection. The example simple shows creating them in the ready event as it's simpler than creating normal bot commands to register slash commands. The global commands take up to an hour to register every time the CreateGlobalApplicationCommandAsync() is called for a given command. diff --git a/docs/guides/interactions/application-commands/slash-commands/03-responding-to-slash-commands.md b/docs/guides/interactions/application-commands/slash-commands/03-responding-to-slash-commands.md new file mode 100644 index 000000000..3dbc579fe --- /dev/null +++ b/docs/guides/interactions/application-commands/slash-commands/03-responding-to-slash-commands.md @@ -0,0 +1,40 @@ +--- +uid: Guides.SlashCommands.Receiving +title: Receiving and Responding to Slash Commands +--- + +# Responding to interactions. + +Interactions are the base thing sent over by Discord. Slash commands are one of the interaction types. We can listen to the `SlashCommandExecuted` event to respond to them. Lets add this to our code: + +```cs +client.SlashCommandExecuted += SlashCommandHandler; + +... + +private async Task SlashCommandHandler(SocketSlashCommand command) +{ + +} +``` + +With every type of interaction there is a `Data` field. This is where the relevant information lives about our command that was executed. In our case, `Data` is a `SocketSlashCommandData` instance. In the data class, we can access the name of the command triggered as well as the options if there were any. For this example, we're just going to respond with the name of the command executed. + +```cs +private async Task SlashCommandHandler(SocketSlashCommand command) +{ + await command.RespondAsync($"You executed {command.Data.Name}"); +} +``` + +Let's try this out! + +![slash command picker](images/slashcommand1.png) + +![slash command result](images/slashcommand2.png) + +> [!NOTE] +> After receiving an interaction, you must respond to acknowledge it. You can choose to respond with a message immediately using `RespondAsync()` or you can choose to send a deferred response with `DeferAsync()`. +> If choosing a deferred response, the user will see a loading state for the interaction, and you'll have up to 15 minutes to edit the original deferred response using `ModifyOriginalResponseAsync()`. You can read more about response types [here](https://discord.com/developers/docs/interactions/slash-commands#interaction-response) + +This seems to be working! Next, we will look at parameters for slash commands. diff --git a/docs/guides/interactions/application-commands/slash-commands/04-parameters.md b/docs/guides/interactions/application-commands/slash-commands/04-parameters.md new file mode 100644 index 000000000..6afd83729 --- /dev/null +++ b/docs/guides/interactions/application-commands/slash-commands/04-parameters.md @@ -0,0 +1,102 @@ +--- +uid: Guides.SlashCommands.Parameters +title: Slash Command Parameters +--- + +# Slash command parameters + +Slash commands can have a bunch of parameters, each their own type. Let's first go over the types of parameters we can have. + +| Name | Description | +| --------------- | -------------------------------------------------- | +| SubCommand | A subcommand inside of a subcommand group. | +| SubCommandGroup | The parent command group of subcommands. | +| String | A string of text. | +| Integer | A number. | +| Boolean | True or False. | +| User | A user | +| Channel | A channel, this includes voice text and categories | +| Role | A role. | +| Mentionable | A role or a user. | + +Each one of the parameter types has its own DNET type in the `SocketSlashCommandDataOption`'s Value field: +| Name | C# Type | +| --------------- | ------------------------------------------------ | +| SubCommand | NA | +| SubCommandGroup | NA | +| String | `string` | +| Integer | `int` | +| Boolean | `bool` | +| User | `SocketGuildUser` or `SocketUser` | +| Role | `SocketRole` | +| Channel | `SocketChannel` | +| Mentionable | `SocketUser`, `SocketGuildUser`, or `SocketRole` | + +Let's start by making a command that takes in a user and lists their roles. + +```cs +client.Ready += Client_Ready; + +... + +public async Task Client_Ready() +{ + ulong guildId = 848176216011046962; + + var guildCommand = new SlashCommandBuilder() + .WithName("list-roles") + .WithDescription("Lists all roles of a user.") + .AddOption("user", ApplicationCommandOptionType.User, "The users whos roles you want to be listed", isRequired: true); + + try + { + await client.Rest.CreateGuildCommand(guildCommand.Build(), guildId); + } + catch(ApplicationCommandException exception) + { + var json = JsonConvert.SerializeObject(exception.Error, Formatting.Indented); + Console.WriteLine(json); + } +} + +``` + +![list roles command](images/listroles1.png) + +That seems to be working, now Let's handle the interaction. + +```cs +private async Task SlashCommandHandler(SocketSlashCommand command) +{ + // Let's add a switch statement for the command name so we can handle multiple commands in one event. + switch(command.Data.Name) + { + case "list-roles": + await HandleListRoleCommand(command); + break; + } +} + +private async Task HandleListRoleCommand(SocketSlashCommand command) +{ + // We need to extract the user parameter from the command. since we only have one option and it's required, we can just use the first option. + var guildUser = (SocketGuildUser)command.Data.Options.First().Value; + + // We remove the everyone role and select the mention of each role. + var roleList = string.Join(",\n", guildUser.Roles.Where(x => !x.IsEveryone).Select(x => x.Mention)); + + var embedBuiler = new EmbedBuilder() + .WithAuthor(guildUser.ToString(), guildUser.GetAvatarUrl() ?? guildUser.GetDefaultAvatarUrl()) + .WithTitle("Roles") + .WithDescription(roleList) + .WithColor(Color.Green) + .WithCurrentTimestamp(); + + // Now, Let's respond with the embed. + await command.RespondAsync(embed: embedBuiler.Build()); +} +``` + +![working list roles](images/listroles2.png) + +That has worked! Next, we will go over responding ephemerally. diff --git a/docs/guides/interactions/application-commands/slash-commands/05-responding-ephemerally.md b/docs/guides/interactions/application-commands/slash-commands/05-responding-ephemerally.md new file mode 100644 index 000000000..10b04a8d2 --- /dev/null +++ b/docs/guides/interactions/application-commands/slash-commands/05-responding-ephemerally.md @@ -0,0 +1,23 @@ +--- +uid: Guides.SlashCommands.Ephemeral +title: Ephemeral Responses +--- + +# Responding ephemerally + +What is an ephemeral response? Basically, only the user who executed the command can see the result of it, this is pretty simple to implement. + +> [!NOTE] +> You don't have to run arg.DeferAsync() to capture the interaction, you can use arg.RespondAsync() with a message to capture it, this also follows the ephemeral rule. + +When responding with either `FollowupAsync` or `RespondAsync` you can pass in an `ephemeral` property. When setting it to true it will respond ephemerally, false and it will respond non-ephemerally. + +Let's use this in our list role command. + +```cs +await command.RespondAsync(embed: embedBuiler.Build(), ephemeral: true); +``` + +Running the command now only shows the message to us! + +![ephemeral command](images/ephemeral1.png) \ No newline at end of file diff --git a/docs/guides/interactions/application-commands/slash-commands/06-subcommands.md b/docs/guides/interactions/application-commands/slash-commands/06-subcommands.md new file mode 100644 index 000000000..83d7b283c --- /dev/null +++ b/docs/guides/interactions/application-commands/slash-commands/06-subcommands.md @@ -0,0 +1,219 @@ +--- +uid: Guides.SlashCommands.SubCommand +title: Sub Commands +--- + +# Subcommands + +Subcommands allow you to have multiple commands available in a single command. They can be useful for representing sub options for a command. For example: A settings command. Let's first look at some limitations with subcommands set by discord. + +- An app can have up to 25 subcommand groups on a top-level command +- An app can have up to 25 subcommands within a subcommand group +- commands can have up to 25 `options` +- options can have up to 25 `choices` + +``` +VALID + +command +| +|__ subcommand +| +|__ subcommand + +---- + +command +| +|__ subcommand-group + | + |__ subcommand +| +|__ subcommand-group + | + |__ subcommand + + +------- + +INVALID + + +command +| +|__ subcommand-group + | + |__ subcommand-group +| +|__ subcommand-group + | + |__ subcommand-group + +---- + +INVALID + +command +| +|__ subcommand + | + |__ subcommand-group +| +|__ subcommand + | + |__ subcommand-group +``` + +Let's write a settings command that can change 3 fields in our bot. + +```cs +public string FieldA { get; set; } = "test"; +public int FieldB { get; set; } = 10; +public bool FieldC { get; set; } = true; + +public async Task Client_Ready() +{ + ulong guildId = 848176216011046962; + + var guildCommand = new SlashCommandBuilder() + .WithName("settings") + .WithDescription("Changes some settings within the bot.") + .AddOption(new SlashCommandOptionBuilder() + .WithName("field-a") + .WithDescription("Gets or sets the field A") + .WithType(ApplicationCommandOptionType.SubCommandGroup) + .AddOption(new SlashCommandOptionBuilder() + .WithName("set") + .WithDescription("Sets the field A") + .WithType(ApplicationCommandOptionType.SubCommand) + .AddOption("value", ApplicationCommandOptionType.String, "the value to set the field", isRequired: true) + ).AddOption(new SlashCommandOptionBuilder() + .WithName("get") + .WithDescription("Gets the value of field A.") + .WithType(ApplicationCommandOptionType.SubCommand) + ) + ).AddOption(new SlashCommandOptionBuilder() + .WithName("field-b") + .WithDescription("Gets or sets the field B") + .WithType(ApplicationCommandOptionType.SubCommandGroup) + .AddOption(new SlashCommandOptionBuilder() + .WithName("set") + .WithDescription("Sets the field B") + .WithType(ApplicationCommandOptionType.SubCommand) + .AddOption("value", ApplicationCommandOptionType.Integer, "the value to set the fie to.", isRequired: true) + ).AddOption(new SlashCommandOptionBuilder() + .WithName("get") + .WithDescription("Gets the value of field B.") + .WithType(ApplicationCommandOptionType.SubCommand) + ) + ).AddOption(new SlashCommandOptionBuilder() + .WithName("field-c") + .WithDescription("Gets or sets the field C") + .WithType(ApplicationCommandOptionType.SubCommandGroup) + .AddOption(new SlashCommandOptionBuilder() + .WithName("set") + .WithDescription("Sets the field C") + .WithType(ApplicationCommandOptionType.SubCommand) + .AddOption("value", ApplicationCommandOptionType.Boolean, "the value to set the fie to.", isRequired: true) + ).AddOption(new SlashCommandOptionBuilder() + .WithName("get") + .WithDescription("Gets the value of field C.") + .WithType(ApplicationCommandOptionType.SubCommand) + ) + ); + + try + { + await client.Rest.CreateGuildCommand(guildCommand.Build(), guildId); + } + catch(ApplicationCommandException exception) + { + var json = JsonConvert.SerializeObject(exception.Error, Formatting.Indented); + Console.WriteLine(json); + } +} +``` + +All that code generates a command that looks like this: +![settings](images/settings1.png) + +Now that we have our command made, we need to handle the multiple options with this command. So lets add this into our handler: + +```cs +private async Task SlashCommandHandler(SocketSlashCommand command) +{ + // Let's add a switch statement for the command name so we can handle multiple commands in one event. + switch(command.Data.Name) + { + case "list-roles": + await HandleListRoleCommand(command); + break; + case "settings": + await HandleSettingsCommand(command); + break; + } +} + +private async Task HandleSettingsCommand(SocketSlashCommand command) +{ + // First lets extract our variables + var fieldName = command.Data.Options.First().Name; + var getOrSet = command.Data.Options.First().Options.First().Name; + // Since there is no value on a get command, we use the ? operator because "Options" can be null. + var value = command.Data.Options.First().Options.First().Options?.FirstOrDefault().Value; + + switch (fieldName) + { + case "field-a": + { + if(getOrSet == "get") + { + await command.RespondAsync($"The value of `field-a` is `{FieldA}`"); + } + else if (getOrSet == "set") + { + this.FieldA = (string)value; + await command.RespondAsync($"`field-a` has been set to `{FieldA}`"); + } + } + break; + case "field-b": + { + if (getOrSet == "get") + { + await command.RespondAsync($"The value of `field-b` is `{FieldB}`"); + } + else if (getOrSet == "set") + { + this.FieldB = (int)value; + await command.RespondAsync($"`field-b` has been set to `{FieldB}`"); + } + } + break; + case "field-c": + { + if (getOrSet == "get") + { + await command.RespondAsync($"The value of `field-c` is `{FieldC}`"); + } + else if (getOrSet == "set") + { + this.FieldC = (bool)value; + await command.RespondAsync($"`field-c` has been set to `{FieldC}`"); + } + } + break; + } +} + +``` + +Now, let's try this out! Running the 3 get commands seems to get the default values we set. + +![settings get](images/settings2.png) + +Now let's try changing each to a different value. + +![settings set](images/settings3.png) + +That has worked! Next, let't look at choices in commands. diff --git a/docs/guides/interactions/application-commands/slash-commands/07-choice-slash-command.md b/docs/guides/interactions/application-commands/slash-commands/07-choice-slash-command.md new file mode 100644 index 000000000..3951e1141 --- /dev/null +++ b/docs/guides/interactions/application-commands/slash-commands/07-choice-slash-command.md @@ -0,0 +1,85 @@ +--- +uid: Guides.SlashCommands.Choices +title: Slash Command Choices +--- + +# Slash Command Choices. + +With slash command options you can add choices, making the user select between some set values. Lets create a command that asks how much they like our bot! + +Let's set up our slash command: + +```cs +private async Task Client_Ready() +{ + ulong guildId = 848176216011046962; + + var guildCommand = new SlashCommandBuilder() + .WithName("feedback") + .WithDescription("Tell us how much you are enjoying this bot!") + .AddOption(new SlashCommandOptionBuilder() + .WithName("rating") + .WithDescription("The rating your willing to give our bot") + .WithRequired(true) + .AddChoice("Terrible", 1) + .AddChoice("Meh", 2) + .AddChoice("Good", 3) + .AddChoice("Lovely", 4) + .AddChoice("Excellent!", 5) + .WithType(ApplicationCommandOptionType.Integer) + ).Build(); + + try + { + await client.Rest.CreateGuildCommand(guildCommand.Build(), guildId); + } + catch(ApplicationCommandException exception) + { + var json = JsonConvert.SerializeObject(exception.Error, Formatting.Indented); + Console.WriteLine(json); + } +} +``` +> [!NOTE] +> Your `ApplicationCommandOptionType` specifies which type your choices are, you need to use `ApplicationCommandOptionType.Integer` for choices whos values are whole numbers, `ApplicationCommandOptionType.Number` for choices whos values are doubles, and `ApplicationCommandOptionType.String` for string values. + +We have defined 5 choices for the user to pick from, each choice has a value assigned to it. The value can either be a string or an int. In our case we're going to use an int. This is what the command looks like: + +![feedback style](images/feedback1.png) + +Lets add our code for handling the interaction. + +```cs +private async Task SlashCommandHandler(SocketSlashCommand command) +{ + // Let's add a switch statement for the command name so we can handle multiple commands in one event. + switch(command.Data.Name) + { + case "list-roles": + await HandleListRoleCommand(command); + break; + case "settings": + await HandleSettingsCommand(command); + break; + case "feedback": + await HandleFeedbackCommand(command); + break; + } +} + +private async Task HandleFeedbackCommand(SocketSlashCommand command) +{ + var embedBuilder = new EmbedBuilder() + .WithAuthor(command.User) + .WithTitle("Feedback") + .WithDescription($"Thanks for your feedback! You rated us {command.Data.Options.First().Value}/5") + .WithColor(Color.Green) + .WithCurrentTimestamp(); + + await command.RespondAsync(embed: embedBuilder.Build()); +} +``` + +And this is the result: + +![feedback working](images/feedback2.png) diff --git a/docs/guides/interactions/application-commands/slash-commands/08-bulk-overwrite-of-global-slash-commands.md b/docs/guides/interactions/application-commands/slash-commands/08-bulk-overwrite-of-global-slash-commands.md new file mode 100644 index 000000000..095eda14f --- /dev/null +++ b/docs/guides/interactions/application-commands/slash-commands/08-bulk-overwrite-of-global-slash-commands.md @@ -0,0 +1,40 @@ +--- +uid: Guides.SlashCommands.BulkOverwrite +title: Slash Command Bulk Overwrites +--- + +If you have too many global commands then you might want to consider using the bulk overwrite function. + +```cs +public async Task Client_Ready() +{ + List applicationCommandProperties = new(); + try + { + // Simple help slash command. + SlashCommandBuilder globalCommandHelp = new SlashCommandBuilder(); + globalCommandHelp.WithName("help"); + globalCommandHelp.WithDescription("Shows information about the bot."); + applicationCommandProperties.Add(globalCommandHelp.Build()); + + // Slash command with name as its parameter. + SlashCommandOptionBuilder slashCommandOptionBuilder = new(); + slashCommandOptionBuilder.WithName("name"); + slashCommandOptionBuilder.WithType(ApplicationCommandOptionType.String); + slashCommandOptionBuilder.WithDescription("Add a family"); + slashCommandOptionBuilder.WithRequired(true); // Only add this if you want it to be required + + SlashCommandBuilder globalCommandAddFamily = new SlashCommandBuilder(); + globalCommandAddFamily.WithName("add-family"); + globalCommandAddFamily.WithDescription("Add a family"); + applicationCommandProperties.Add(globalCommandAddFamily.Build()); + + await _client.BulkOverwriteGlobalApplicationCommandsAsync(applicationCommandProperties.ToArray()); + } + catch (ApplicationCommandException exception) + { + var json = JsonConvert.SerializeObject(exception.Error, Formatting.Indented); + Console.WriteLine(json); + } +} +``` diff --git a/docs/guides/interactions/application-commands/slash-commands/images/ephemeral1.png b/docs/guides/interactions/application-commands/slash-commands/images/ephemeral1.png new file mode 100644 index 0000000000000000000000000000000000000000..61eab94b60e9b4366c64d0f7f983134f8947f2f4 GIT binary patch literal 37660 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

{^7H%%l-DeJMH417V5Jx>N63yUxBP8K*k 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�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 V?u79J0N}^xbu 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 VP)rX+zKab-ML|=(O4jWA{{r-IpBVrE literal 0 HcmV?d00001 diff --git a/docs/guides/interactions/application-commands/slash-commands/images/listroles1.png b/docs/guides/interactions/application-commands/slash-commands/images/listroles1.png new file mode 100644 index 0000000000000000000000000000000000000000..43015e203c1b79af5fac7729585540cdd22b28ee GIT binary patch literal 38224 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⊂kc16iuMeMg8%sQx6aC^_$PXNs@#k{zB=NL{ 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

E+-!R0d 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 literal 0 HcmV?d00001 diff --git a/docs/guides/interactions/application-commands/slash-commands/images/settings1.png b/docs/guides/interactions/application-commands/slash-commands/images/settings1.png new file mode 100644 index 0000000000000000000000000000000000000000..0eb4d711ab044287eb2d5fe817128f05c4bcf89e GIT binary patch literal 76171 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 AQUCw| literal 0 HcmV?d00001 diff --git a/docs/guides/interactions/application-commands/slash-commands/images/settings2.png b/docs/guides/interactions/application-commands/slash-commands/images/settings2.png new file mode 100644 index 0000000000000000000000000000000000000000..5ced631349fe993587ad5cfb6edf8a1e35bd4c5a GIT binary patch literal 51089 zcmb4qQ*dQX8}4MHiEZ1~j&0kvCbn(cwry)-+sTAGwsYqD?@ygN7hR27wN|U%UJp7# zK~5YF8XNk@j~{T75+X`Jet<0gOVYm}{!1QWiO%W^y3Ho(0>VJ%&y$z$B)4|NfAL6cfE@qNCVuF_3!U(AlJ5}TcTXg zWGZdPcw(1MJ&3YR0flC3Ak=-V?h(=#(y({8yL=4K(UQK?aT_5fV?Fcu?~ z34Qpmp?!M*NpKX^{|ZI_pM^8Zc}rDBY*t2bD?=urVGJ|jL~+vK8qf4!d>iQpomyN5brF~?+7Tv{9jTLL~7 zR#rk&Bdhl9GF&$G1rqjKwG=iqC`O*#zvipKDDl+I))hPZBAx12%Y)Vt4l+;%U|_;r zd7^TdFCP>gUP}F0M^eRZmd`-wqyO1?#ZKn@abxX#8X+6Dap}MJOjUpje_|A-U3&5Z zSZj)dA`v4Nl$(oRt|0(;WTTW`Xge^gr0-uB76PKqI1y=sr`}9bd|X`Etj^CB^fV*n%3vHaIK$=S zh9V-VZMNDKBPWB?M$Dtr(p$@U*NmDElUGWDbw1o5&7A*Eh4dDI9A_3uot`4HX*p9I zCA4Hfl)rbL`*4wTD&OrzODYPPOqolaZH*zW+e<$703VwujPEIA#BQx} z%1&Xrz?k+@1&x4Bf7cWQd}P_s*j|=RG{G7Yv`$K%g*u^xNeOW+D^{217zCU~bi+#*nuh#zJdQy%IeK_7AN?lL+UezCG2wD?b8X$ z;7wGDlIW67Pg?y29lz;95nzy%2>QIJ7yD67UI;i3g@<>TZ$;6T~QluJs z{ty;bv{M^fQ86?0PVS98D?4FTQ!*cUS2d$RY(hYdf{{1&){5zfR2bGgA6lWe)fDl5 z*D`((X&jF~rmzraRIn1m(>5Pk#1X4ouygc4Yy%+Rv;P*HG#}Vy#5htE7KG}V%YvNd zCNB9CA6{DueF5cd)Q5~XDLyv^EUVdAXq-21qy`+DRW(=8#gwHR%E?|+G21!WP|KU6 z*Kw9vBkRd<^8J0zL^Jfg*B-^uYfP9G89BSl|aF=jW{smEtNX_5-ti)6-O>?+Jc?l79<^ z*$45>=4xOr!XdZttXaD-zQ8Mb;t{CAcQ>Td?WSN0K z%I|`1?CdTH(Cr23ng&k0?!DFho2dS>?PXV1)xz3NWWASU4nsFCG5B!JVGDlxW7B?D zhk%{`9`?({zr+Dr{P{Z6>fDj*d7w$FG&Yzjv0g*&Qq077SAz_tV&wEPNTD~#Li>n61XifFk=L1 zSu5Qtu7HA1*)cPcYBM4oWz*26wsW zQF*6%`x0?DU=}%S2uq)Qih0?pCA@{K-zX+v$G|_bItm7gJp2Ot!j;>out?FZ6BjZT zcOYX%&HH6WOazm7ZfgsACF*4tf_Q>GYy*;x z7vfxycCpC`Ip&faRmX+StOPT;p78E2;kS+0G8JedGD^y{eRaoCCxQ6ykgC$*!|nNbXG+C z7}t5sT=>Xk$Tl)0E;a^jzRXQemG<84tnWI0&(zwD~?+ zyWeT+4}Nk?1<=ifWEq4&IZ*Zj@xAYod^VRgu>mb+#UwD2sOy$#A;&s~+j&!w&55dI zj@&5}Vd`(P?6Eu8b=SR;$irgf#KHBNA-cFfC?lgwicG&;*$tWg5 zOu{S7HG^(r5MR8|`=IE^2Yup?dYV}??><*})dVQ~JZAzPo9@;X*8kXFfIhz1?k1Jm zHn)E%x?Jl%{DHmI@P}S6lqQnc!RADA4aLkz)0JZ9Ysc9sYZV16C>4vw(4vZ{;WfN^Cct!})1D5^%Yc~3h|!#A<dzdsX{ z*>>$xn`qWG;!6uV5)j}yTF!Xn>~3G7*$VmnanJ22PDuzBGYgBNl2RZRiy0vi5q{Nb zb!sZA2{E=+MrbKoKi$iIFoGoCx>wr31IOCD1>+Pdg%WOFtz%4W9nlhkId|-DFT6gF zL&OUv$v>usW9Rdwl0vQ3c%KIMb^(q{Y#xTh3BbHcaHKb)&fE&q1wK=J%``3z`77A2 z4MZSxiWZ~FS9KKI)lFA8?^gh;TQVmS6O!?+F@9SQ9UeIQNGK1MhyFSzfx#+o0FKYL?e%#_JBQgDm9ZvD+__+WqRf= z)38tof6-MGpxHiU-0pkzSgz~LjSZtdBzGotSSfOtZ9T8xos-PJPMt%|@$1xU3nXGF z!+o?TE6w8)T1q<8k7%-XUhA?TeksAH6} z*6TJGfted(x>mdCuJ`Oqm5eT5LbN^JP^ol%uujNY4TrD7bF*=xFu-HBl6?1dsp`&i zXdSgiMCnr}$w-v2?@uoF=Pr}fA*FC8E`By&6V4RlLlgKeBk zW`)Gn5?J9vV52|?SWQI+YRy?dROGe-C$3zEK9Iu7{`%V)I&i9gQ8&T(-zexy}agw2Y4hVM% z-n^2eN2Gtwa5fvP2A`%c>=I%)?_KR*s;PZ@a&*J5!lT1VGf67T35xt$F?@v1cmrh< zSWh@3V`GO^UAKbLQV29Ov_$vD7LTUJMgvC7d6_`Z$(pvkIKLMX%_5t5h&+=7uI(Y< zOe(L9r1!X%?4w1AM`>NA7Mc9k4;vzgP_KA!j8S+v83%`Od-kGnzVzpEkQEUa*csQQ z7KDRt<9fnzBmY%C4K7D)i#qX5#4r9F%cePIV{jwsHo{7yK4dOHHO>--A;ia2Qrg84 zBOIXhioQu?S?}bBIJp=h+&BuyDFDSaj|iDMP53;JSAER`h_NMfRvzDcuR4B4`NK)V zD!T>RfizuFwXux(Uhl~gHj#`w@!kQDeLwVH6vH?7AISD0XPI&cr$YeP{bthheKobT z-O=rGl`Nd#@mfE4E-4wCo1YH|9ff!Rcom1-0C6%UCBpb)0{*Id9>S0;fl&E3XU?xZ zUxW@Iv<<JW{<{8o=#ijx|EoVjNorGSJTS{OeAum zfWxR#(&Du;EAl*)o$vfZ6gb;@1z39)zplLr>pH+0m1<5%%Oc5{Py%% z(8YBT86fEg!w+6Zk zxbWt813u^CP$-l5X$Y=i7&+Vcmd1ISYZ||(h9uSMb70Oy5wzzew1m^yTRl-Ql;BSW z1OD$sh{+aS{C~X3P{-O{>i?TA`P;QT6J(PPHe3f>*|%L@}nGmHSP>)5R|3S=;4E<&Q3ie zR#U^|ucbVPpqxyPgh z+4YQBizsGxF~3+N#@*DfSO!Ay#6A!!!8DV_i#M?`mB#B(TK5$_o9ia9kz?ksFV2_f z8KRUQg5j#T)E-#jU&tq6h0jk6sXg%UBNoIuazpEN*k$fI%7AEaM7vVsQtI;D?^gcYT~Ky*15~x`k{J8^h=wA5(ID&vn4+LBy{DN6A?oRU>R(`HzKVkF&jA)hH-U0`mFbmKVLa=>2_wqQIhzJr$G+J zx(9OBw-3fmDO7>L*%K`Va>M*pyHQ z-@w6Zu*kX}u%6HeR;5{|+|s`x3RMuXssGl`v7T&$&=%fjCJ{E{{^)jW)|;vtf9u3a z_rr-0XUYj$uu@upW_))DUp!F&q`1_(jLxw2)cdtF!lipK41>D~&=&HHHL=E+d?sLq zcy+xdGYDoUz|V`MB$8uGXy7{YRy^#@KfB~LW9EDQdxQtpE@udbAD(6u-Sjkaei_UZbsUW|(`Gm44XXiIQ5YCh3a zt`raB9OME7>ko=#`Ok6P>Y-{2q-B#M3VNo!P$4ue_|BUdLAu($2pO4T{QDDD>oel zVRSSoiZfhGF2Q^_CrHZ7ccmgj+e=uzMZ@W#gB~pL8JUsE`E-MFt7}EWP{ghq$f(Cp zaaqWR;!e7dLUmF}jCe5S@}g3~c&dglv_B&j&50-m0?R33j8K#lQgb5#Ie4-)ymut# z(*s+9u*2Hm%`2^N-JxqbQ`7R|I>{V1_~a}>Y)o$hqY|@eqSVkAkmN#$p9=HjFI3V! zeVnfvdZ|d(YNJL2GBD80vf-?WEdr&LYyrP7xhr&Pb3ffMAM87(>U_c_n=w!rx!D){^)QLp@rS$TVNj z2uEsPfCiaU^&Y@?jEj(i`^H9qrIxUS@A z1vYplq(Q}3hragBC$$EB5kJ<5KUvt|UTzvt*YZH9i;Wf(?lwPv-7&2K>C8~tD#vKf z*aoX@L`dyo+@&z+)?vWWeaM*RNV3OVZXJ`7Cd+5N7?eiKaO7j#aFIzZl2%MUZjpHy zY-$B(LikeCZxE|#=gxVd8eGXBsMI#7=Q}(!6|A!O$EH^bg`OME@~<}tFf)k;sih^@ z{pmV^N8*saPSxJy;{B=HBGxh`OYnt{z7wJ~sx=w3X3>gPXBA8Osr-#<=s}=<@VOo8 zwJ6uB12bJ=)SiB~RID4l#wp+M!tR}VzGuXOvE^6D!q%OB<1wfkYp|~K6zO8NG$ z<@-GNLm5$G133DqX~gu994R$*e-Y$F@5&S)hccEg_#n4_*?r&70m(qtIIt_5mX;Uv z;2x6*C>2+-DdaMOmM-YZZNt*P^-k0I5CW@2TxpIu3}3;trir1fR{c|eEO&(1bkSAk zJGf4B6?g`vb=>Pxp7{>ulRrpcjXWm`hY_4PJzoIL>D`j|vMv2R(6;Rrom8??gr-ZsW)HROXyU&`> zl$VhFL8R26gMq)YVk7U!T?XLix24cZW1|y6as&c?rq(jVlS}7W8AR^Jfp7?i6`yr5 za^MYB9M9F(6gY6O6@p@?PcIb`J9}~&&SEV!W5vfKlY~4LN{cu~qqw*fe;|o9elpMw zZpHAe@hoI(w$XSQ!%_u}T#Tts(!ShnYf@(8gM;!?R;7&@57;;nBGV>dn@}h=D0#=J z4^sq>ZDk!ys2#w=IHhkUDF8P%7COA(e@ZM{oyitC6tY>e1?k=#gnT%9~5_LEH{7%$+i@EsWw`PU2Na6H@OmG<;bFVN(< zEfgOfPBWP)K!^y2J1g_6RvA$$<-}i6)^sp3p?VKQ;-~Da(PIDAw$o7DC50&9;irv? z0NVr4nEAOvIW8RIrzgAUXdDZ7vOm;lyn_F06uR+MHZkh7c67*yvcaWKEL-@rcKApX z`oe8TdRO@`tWV!aru0sCEOdtSxWPf5EGqa-o z20-I*=jx7h{*+}WRPzC$Bd1@a?V0$HJdvl?LK}>u$wE{5hyaF>5}*_3_5{G%9yA|8 z*Ac{#_}t+_gl6!80TwRD-*n)}h+m_15_&1>cvQ{e00n7lzp#mH(56n*1t)@=jXe~# zO!80st0@d~`I7NAU%a*dum;`lUS_1U*(g!vCK$VqGI%&RdTL>i1T(b{-$*JWsZM+~ zX)x7~pOxphYi`vzfdXS^J9oK`2 zvc;7@DufGFCb4^|6iAEZ*a0kiWQg~0xNm+LWM+%b z@y#yYz0GrbnZv6ZFeg|p63H~E9DKkbz6s%^2E=;aR5SaS3C))oY1M-3j`0tN5nK+> zAn=Q|q(`55+$xb(NaqH4XW^uH@#i0+ns4fOc(SP4S z7$iY$!5XR2#Dm_UnP6e}ytf>~X7BOwXEq{mmagy^_OqUAjS=7 z;MSBi7~5F8*V{FDH*q(GMIL|-^#97A7dRN|RBt07rb!GAjR9?R*pdH0w$XX|5Ii7P zMaM&QwT16fgcb6EwaV-AP_jCFq>rnK>MZouhUt@lm*E3y85= z;U>j<9@@Qr^4d2!j0mOFKv_&k!XLWe8;M$x|0$M=nIr6or!Ypeb1o{a+#WDhumDB0 zb-3yc%T3mhHpb7tr4HU^8u{0H(7sJ=@8wpjVtNc)Vfo$7Xf@XMPUGw;2e32I>0CBI zzKkGNEIS!o`h+Uwh!s~|ZDX`e_LRy{sM3Slp>`xog5X8E3IcUuzvgIR!1K)$M zTP>TR_)2`77+Pq8uPOfTl|q|!_)ioGcjz<&2M3S^V^;gtjrGN~sJ@751s7uEae(T` z=+Jp3g|#Xt=9K0FCk^SH9tRFYlH2DKv;(uEN*O7&KYp#TvQC16*`ykj1)QPlxWREZIGA0X$+r70>AnYv6vgRB+5f zLn*1yqDB-sd8ZzOH|nZ=09G4H3QQ1m6Z?+Tci1r zrDD3dSlecppU>QnxK(k4dVf(El)bXD!iQ!&uULhox$CqX`(nrtRg+H|mex7G$@gLb zkLB!O1u&))Z!I&Dd_8mwhY7ATJB9}J@t>QDWFBo#Brlc?@uH~b?qyjkebVa1PRTtK zagSD^EGyhfxQN*4?h2uUbTybwnU=elNB|5nfNcaWDq&lCaLgBbuq%Rf$?cim0%aU1 z57ulzHjb(E!;O(rWWO{p;70sJ<29$&UCaIGJc0dr;z{)Tl+?}@)gAloX z4olIrIHg`?f5qJoRqmehbWREM%AT+pQJ2^yQ7n=A`*?aP3@oH+K%+4QJT7lcX6e({ zAT4`Q?|jsnJ969$CLjw34Oq`_E^7`Zv63GrqP9+e99dQBnTZybTf2HmMl?N@N-Nu1 zqEQZuI?3{t?YH1qRJ>Yv%@@Sg1tm#!7G8AHv8v>j)Q?~mBX2ZlmewOir&2B!7oKi` zR;!mS0A491nuGE#-Ib7;KWIuu>Ytn>yQ!_d`zg!tt1gZOxdre+ztJK|pb4`fBlh$GqY4z(-`QdBR129>gm*80}8;HgmyUqZ78eN#4LpgTLfO-fno--JJlj}osYy7}sj zmg31_!%V36pmu_URk~BgPFmLmz~T>dADn|hXXxsn`lM>Uh&V!4mM&t+Oy;Gmyc83~ z2_!KwP&VgsaE6(WXdd>S*xWwg>Bs8>?9&%%tRO%^%Aup*vpA!yYI;P zTkHnK{2C<(Hrj=6E9TLnXjDV1Q?eG-1>K}%w12aIFvr5$Nhm2kCR&0^3eHseiM1F! z=1ek`4w!4gp~jU<&)EvODAq?}XG34Aby;2oM^Q2)F*e&N5X0Eu9o*r!GNrRd3>qs! zeOkRPQ3SSujYB598P5ZAeL`aP~dPaumMTNy215JX5u-PvG;)uN-|O3C#84^e41T~ALY>uHlGDQx}%D-AY!gb`qOn7bI zc!RCp9E$1uzazc&^5j#x^M(!X83>mkAi}~yzf*YyV$PI`1WBh6UBB@wt9Qpd6oE1 zk_;5MV_YnuDMssoDIT+5CukK_s=0mArW{EVqjJR0bp%gtsYZuMQ=25I6RAgI8$|M& z*p|M;Gnbl7W61{4j@?mt58SDZI2cMaq3 znRuCsf2s?rh#H<}kKD1*>IS}o-`*r&i&_@hj7uwf{W*a3o{a~9I$<=mUwAtu6xj_Y zfR+tuO&5t@bv{CNra-v~(`}qOG_K}Cah0LKcbf5LVR(Qr85DS}$ZC0yJSX=w1mqAB z$;HX*;Dn(zB37Q`y}WC)X|%8gX!#+nHPnG$doRH=pfNkKYq1UmSEZ5}p6sissB9`K zp~6TfgM52_!^$;=IInF4CR>5Ez_wVSaa~q}7RgsW*}Sa`_i5+|M;a4a|M7@^MV0v- zOiIX{sWnU*%PYeMNo0i0Mk)a&!5SL6z)ZEhapL$H;N4E;^GrF+pzvhgmD@mQUrTf^ zGgd)F97Dk^giUw?rrEyA12w+_yT4o)<_=ioMCSwd%S9S&l^6bXX_cC7S0oWvZ<}HO5Y@r5uZDY5!A$)OPz-!=;BLY)mU5pqsQ z$XX96T6NRDm`LXUWF{3}@Kqrp1^Wq*HB@Q3Qo-z735EcHqG1O1w$7G!zl9;^4`MWd zE|AW3^4rwzqTO2&wU)MFURK#~s7tk8gBa0z-tbzG8$Q)-@Why33S{1l?W&UxL@y1; z_R{xnQpmZh2cqdh{wCDN2ZJhUF0l**QW`_V=xroEF8@fThmVn`MD00bFxI6&v!#>Px`KJf{rHz78X- zg<9s?M>A8f%Vs7Cn+EF`bc>XT4-H#cMTpMk=_v5J)j&T3)VELT_x^&brUR-HGO0!V%c@^caI&uuq~4Jb*O|RAUJ86xE7sVv6H$)_7GbHFQ{kPZjlw_} zn{*-K^okW4_{GL@U=6`*Jun~C7S9)15k2Zl96_U0b~tem6IqwMp9^^t!sfLcMl1&c z0(qem0wcS4WR<>U0J~^plc2dDs2Cza)fFmv%sIIqjdsKzd|ub*e?AmP=uDkNo{fhX z+Y7QRtshXI_xwjjY(w5J`ZG+vh-%MksN)oqu+;NVgMN~Nm_#xvgT+YVMufGM%b|Em z^6osXT46mW-ZY>`3r?dWK3IpY{{*eU*bU_guXPCZOjxe?#(#VE2vx4HGC@k*vKMCXAL{LMs5b=(H#f^n&zM7GeiR|re zX3op0)lf#<3e4kHS^v+IYz}}$R3>t72vAJSK@G@mmRJx6$;rV_PH`K;7}b`kLt>;^ z1WOVGZJUkL73Z3pqZcSbcNhuO5V2Uk12a+#THUP`cIlDEHbw(u7xpDI_JI3OuiMX# z0WsoI6R`+bUzB0YIs;Wy1&X=kNOKW6tzT{bp>D}s{v#1n>;pn)i;oMi3JaxOSCyWs zA31OM7J>Y_X@ll@mV(RFK61;IisA_8BkKvk`JY+(aKyiYDXQ)rP33%EK6P4V@n8q2 zWXN2(Pk!X})xrYMn;A~dsjah4?SU&LRE~4uC>5wezZvCTUh}BOVQG?WcabI5EZ}vw zH73#8T>A?kZ!;%=d3@JddpZt!sMsxWphx=f&1>e#{?jRFg3u<7p%|R6CQSn@SFtHP zdo@)``vjzcpDY;pBb~U$Sh(DO{i3JMGZ!U=qC#nIoS;uuZx{g{5oib;tm*SZ)l8Qr zreZobq$I?;5!224(?}icog>}mP1ji1KF+%>4c~`ec zjjd}-fe%0`ioORzQ(MuA)sGNKs&wJWnG^%<-(4cYnSnQBekuntNq17!PW@E6plwnN zqUox`P_wV}SuhnBuTFzl))3D3$5VQ7#nnd>JN5}l3JHW_S*-2X$Ec(Y&*uu#^%ctz zjmo-=;?_vEE5s8f{(4n`aay4@mvXqA^YlGOJ|iE1a#d<~9=#GQg>OdP2Zh zsii`qgMX23vP#IZ5>oI&Yt?M!OtSw2H&JR|UmOGH|70`aP@N;xfBGY{RxlBhF%T$EySRTJYLVG64^FUQ zCD`X5+m}3~HW=vGs3OedpTY^&abX$LH#hRu@L3G>f_G-}fK6i98cy=qHY({*HH*Op@$EXWwX|BU!Pm*p#opJN2fs3n`5mV?z*~Pa#3lG78CIassTnml%X9 z0*O)7qF^~bzVSJx(XZGGzD(Z}(o$0u!}apIpPPVvujW~M{QPWqO#Bj{u@bZZjUl(% zsi=7(DhnE6jSx{bA-sFtWNaGBP`a(#QqI*YxQ-*tno!@Ksi3G?VS^VwB_V2Z?`!k* z;;!%hiKRk7Da>oOcb8TA!}NQ&D=e9noUMXVlLe!p#_OgI&pf$aa+L0Qe_$Qo`z1*H z_Hp+U<2_~hA<)qHK6_x^;%|l3=lEDoUI$cD>9By?0p7)LmB85qn3{{BH1IGMW(bYa z=!XxS_}n(Jb)c}U5SLphRvKNnSawKE1ap?Mf7cjXkDjy<^*hTlE7wh(o0a0`-=LtL z`V5Z)>aoFyLdwU(iBw7;yBXtTbDf{ti;Rmf zhfb~F#R?)tmD1+=!v(Q#nDxMtMg{;Pw)exuACD7zA*un6ZxP}#k-JoG`=(}}%Dnhk zIEFnWvd=s}+=sx&aXIUw@?d9$R6jUBk4w9k@t&b?xVXq$K7z0!L^YZ9sFp12XKF97 zWe#O!mv%Ev9^x2m050E$u@heIs}tG8EFeD1HgTn<&erwd`rB5(ls8LW3gm%@g~+rD z7rf#xp*CTxH(!Pm%EIvmuQ9(G7y9tj;Q2ej2tuy+Pk#3g!!34>Yz#wIsVi^HT||F$+h|DC15Xmpfk`-VRgZkbaQ(5!P z$FzD$KW4#5!=fwCcN|N3g)t1R3@qD#M=q&|8BetS$Ae+@bX@9F%XpLhp|Jd3K;fQJ zW{6kb7ZZLv4`?~VP=pnN68$%=@9pO%lWGJLA_DWhd4b8mGANk!V~cfz)o+N-l!iJF zgwG%RUrR2OGO*D|mI)BCYKIg8<#4Cr6_K-++E)en${+6&gw17zYxcsza-aj5JEZ3GS4gruQ2-J@@$nl z=b}-+E|$Z$ZdrRDWGYZqUiuf^oohkue7?Ee8)PIcCpe7;fK8&<0xxp;2NvJAGrF!A4vYmyl@lf6%^q!m&AzFKu3F?}45T3q;^EAlv{ zhXiA>=-x4Y-S8{hANck8m$iZG?_a)ree1&QU-rA#BXRKEI&GQJj5O(gV(qBU80(0^ zMZA~gA9O(8e9Ag%P%gAE{M`8-KyiPvAPgd{-}OVSvNd(T`YLNsgu+`+KkJd-Z((D< zct-g^{Lm!Q`)KrwH7xjaU|x4~g>fhqTOLEirUg|hpbbl>RLj!1O<@Q=$HK?Ehl0n=UX zC)`x%4vt!72#crS8Q+C?lUx15iG;kC*el4vVvm~GAnVp;NAJ|&GV{7k_Zj5C<67n z&HMPDP`QilN93mV4!ol?5*?>Owo0{?16Y^`B84}_1%vz&T1dCp#`xCkAwlibc%$=k%aMv8hDC~} z!QX6hD($z=F}ChcDO?}>EnGIc+c9tKNVQOUkHr^ryT#pdVmy4}b>$%xpy(?;8Ln)- zbA8MR1Q*9TwA^K)Lo0`GMktzb zeuD_3{UGPB;_2mJCHGr~$%}a}A}dv_%&vB85zx!1TQ9?Tw^?NbBcL4g!V`0!k0eHC ztLlVN)wjFfl;w5%9UKj9G{_!NZ+CsH37?pm_QyfLu` z4%aguUY~1lPjYk~aR(wco2|^)w04VKwXJ5dnXw?E5)?DUd+A(;7l= zsMq$|=&*GGi3jKM#`8yxRpS)+RA5SQo~CzCD%~c2HYf_4bhVF@;mph(>M+bUpqE63 z!;xR(*?g{}m~Pm}nD!ex_Zox3-D>6+l^53T$APi?Q%#V?s#*Tu)c2diUA~~}EoRXO zMs|}i#iSXT6`y=a!3}&7BpP6QZ`In{l9?5u$$=-8UOMxhJ^4Sekm_(L0Ap?ivH8wl zVi442V3uq6x3ju8$Q7YI$Y3HU=2cJeCGmF%j) z=xgjV?8KDWf(tg3N=xAq9b;&%Dc9Tz+#H|?L!?-of-IQO=#;AU+e3!*Si>qs+}KLz!dxc zM$wx7=7W#BetZ9gehxN3yD-GVN@XHEe$?A#r86}DxF-9)M$zm>z0TZui7C( zosP`&bn>;+K2+Krb7g1G;dBZuLt?zm;VbrhXEg;gMN@KOwp=KK$=d>GxW>)o(6;I~ zvoM|3ptug3+w}38k<)Q(^Kx?vhx1MS=ifewA}Sk&6`KjyTV%J{PBnn<-={WU7vtjW zbQSN+Hh3|8FRk^()YssKVGlwU0AxFcprc5Jy{tAg64i>fb=-~8p1Q-;@9Rt7sM@^Q3Z?}mU(Nm8 z_IOLQ=PyJ*eH3EV>a4q70zprC#nYt>LJf@DZFz9V9sP$1j;#Pc@-GmCqa2=-3Z{ZZ zp$U!;Xxm8wk)7MU`*B!1t7tf~XFh+INfraBtA6_>qh}iVXW4sb!?{LtM5WnT;n?$zY{u8`}{UH?*nc%tlPZM&jZ3?<$nC8f+@SfM8s&qpw4PC!-ZSLst4JT zU5ujCCKCRBqX#oPCUh_{B`#S4VM9I*E`5fXdTpc1#I#+T#-Z^E7e%diQ&&4OvWZK! zNxh>%3h+U*5NbqQ`zfSN;M&b;4x)I)yZzBb&*5H>!i%9iqrq&%WP18POLI_T{m?pQ zM|vYT7PZuFdh?<_APJJbRM?3R{NFYB6D2bhBWyxycF1u~bz=Gs4JfFwjwnm%%drLI z0K6LE2P8*;pgj{FHhrm&J=0M%nK5xG$Xe8httE`4N|XU>n5R9wybPXh%R=De^fEX3 zN#SF*WK7kVpu9_agFJjzXKCCiUOK)LeR(7Q?ElccG80@Vl(mWty-X@B@(Sr`jKkd7 zG@?o)LHViM(B*mH#wTc!yRT6Nb`y-gV=ij_3a&?=E8_>Du*B z&)8#TW@a8UbDNo&ne8##V`gS%W`;2{Gcz;unBnyM?Ib&}bEKRfCsOinNnPElE|scQ zJ@wqz%3K#94`CiPKqIZ7Ogm)UqWL8wSqiJJ5gFnp{aQ~j{LeP_$8~aM=$glF7;!Z2qa2S1l1Y+D+uts+w=ixAY{R0iHMaKFnums zI2)Ru4{ZM7#<*p}dEkO0e!!-J$58nvG|;l!^bYy+WMQsYwQOc>4O#(}(eu%IU|^uf zur9Z@7IAfTRZ%-ilP-)pV)~!M9f9I3sd>M+o|$FvElWk z*anhv7V{h?0&krkPMbE8C(pafCo?D+@J;K$K)#X?C(u=Z|06y9eMx7WjXV}R3Y?dh zSH1NY*)K=O*`=l682(Sp3^toS?#86#WMT#e1SBM+u|MCdL^1!+ZyVR3yE+f(cQGqM zwch;1gbkgc-BHK=U8NcK;{DahH>7YZ$P=~45hcanjSMsw6L%+x3vk+wj?3CA}%&A zm;*Xs9i~B6?v|^_L3xRFqWPQd_Kr@hrh-8Bu&?&oTn87ady~9^Q;6md90!@aT97~A zFR2N5NYi2Qyv&+u{58d>ofO;(^@4~~;-Vqvymwk+=>4J&CJU#fJf&-&7tLoMiclnb zn_Tz91Ho~t>uHDpd&C>==d{mHIRKRP<$*l?MeIrq%}7p1QzKJZ+77x!^Rp`)0ybm1 zzO{2zLqSGv+rZ9u*tOTwEb!)2wVhyAvec47;Jiwp@#9-_O19U;0$P@D^85G*F;Cb@ zxR+$9wO}(kt(apkbiL+ruZ2wT+J4~DY~DcbuO^dxizVvDBRVoEW~{a;^6+_3S7qGv zd$pNux927g4!W=#QGgPPa?p~+_)b`(e2ZUK0(I2l88^->N(#L*R0E@u3w-l-@}D1E zp3K_Gq%4!#B5!1*uc9aG=bpnV8h;$jj&R3@Rp#_cS>@Z?W|I^k|4_+FwsSjBr=Pyj zy^QP2Ws5GOf9EZtd467@4Pl;@Zb=ozBtb$m5ljqfHiyx0nMLVZmG~yic(T~3(>rddJ5LAZG3uQ!F&O+~0{xL%8K$cN3JC7)~>n&VyI zxIB@}f{*(V3q^w>+B6Mjv~MB7vzkiRApIAwzNOi0S_A>g#cT+-bj0wn!r7kGSV~s0 zk~-r@6DOCdAe7UvBSB;Yv^2@15{}g~MHUhR9rh;4pj~l{`6V#*P)#F#s}Ag89a%}TSWX{3qly4`>bukXu$8EfO;mP z(zv#duh`e#d-2uVcv4?m$IOF;gV5>3N+YXPu~0g%oMyUE;2R-i+4a0HNek}yU%98J zLUU8yQZLe*uNZ|2-mq0oV;aDt4`3oPq=vHi4dTRQxvH1@)4_Pz;Lkb|3SLy({2_<^ z0pyfZ^IpFz8*v|^-_en3tu9ZFt6M&zV6j2GS^&x#ewo$dZ+q!uK+_UvGD$P%0-yOQ zqkMu2FOzJ3-DaSFMfG4MY5+1iK$mYWYO<8eL_pCnzaDF5!7zl?fjYIp*1;P)aIAA> zt|Xv8SR-emK-J1lWFbvhvNUpNRU|nV2hSL3Y`;vjUf^S)RG-?e_)+zIB z94Evk=>&BRj;#{yZzt=@P`*x>wkgxohOu-1vHf^j#iNCTW%*VGBSn!tTmfN28pZu^ zjluthE+DPYxHO!%BR929?caSc6B=L{LnfIFfSp-fjUIZ{Tv$|=3#Y^VjI}_YU^0PW zadLH)@*jKjPB!e>M7*KS`r9E`!X7idau z`*E>+bMU7t@Xan2R7+n{${&qRJ>9X0*_oWD z7_s3gOOZYWns65@Z3&Q`1|(xpTTrJ zy0O#W&u<4Av?EAeW=`{hMOn8#dt+`sW-gb%hAgOp;&#I#`tl_{=;^>OU}0o?C#U^=`oX=a+c0o0uvR)S1bg!#~_gWOu6QPXr|_(>SiS zfDQl!BcG4YcjN!i7>KPMGWwgoI2Z44oC04fEj$msgZ^&c7ebnI0fdqECNg8Eg46Z@ z;rq;2m9twZo)DDM5G@Vj1L6tMf&e|85L~OC+`Zeyb%E;s-1< zvzo4zOeAEwS5mk>dJKa1w+U(REX5n>R05F-k&9b|!qx&^;Y1ej(XQdlz(O~{S}L}Q zQ}YgcjZw{F9@0w>P^=7Z3f6Dx!h`~Z4AeOgN6cce53?1drF1u#ba&3bI5MG3Hhh96 z+F1o+3hW}y>-#(G0@}^eOwzNnqfh5cr1E=)S8kDH(-MR8xkUo1y^rU8`Y&jxF zeHdaSwBRdhu#F?l^?b|*$gMH`zN_cZkY@#|9`{O=VP@RBr(qHSyo_?1nSOM0i123C z)KiI-DMLbOXydrvZ79W(N)oB}@&K6o7MoaA8Nd1==npWaXa>*4=9L z=I!zKMN}NHY>#7ex2c9jB6usVVxSq|`xJ3CIi9?h7@N^UeT%h9ZF4QuvmD2oEU0=E zhcQs4Bo5^pgt^ys9l*JKn8`-TQ0*zhcP{SW?xQnfUyW4FsEtp3okcJ(u(>_B!^6Wl zp{L666pb<&nMwQh%{gzYhz>-)MYp*pZPLO3jp7N2Qi)5!9~x;9xa6qq#CarSe7UZK z^A*DiIx#G)#UT@_C>nV|wj_g$lJ|=2IPJN`%?c@N6f!{u7N{*G_M+#>kF2O6GJg#I zg@Hiv!6{N*DrPmfrpx?PD1e(DOGLXXwuiRK0NfM0~h6n(ZqdN>!BauqIR0 zaR#HO(Fi4bXeAvC>;Lk`%Q#zYDZp6_8QaZi`@yc=4Ly!d*K49iFYJ&H>bdO=VREVa zj1yBJ#0?gaqU%SKJnODX3-EY*dv>(}sUMvCu4I(@?;Jr~(~>K1Z|H;)8xfAqX+t5s zf_r*|!d+sNHDv-|WJMX?)rq(*p+v%=ZO&A3UY7RI6LD4>3QeOLWRqV^2tMpc8F?OH z@d|za{Pz@gE-|G#@wXdELE$Nzv^5@-QXv(CwWah)S0+OgOH;5xH77AAcO4K&A|wAF zfC4I+@w$Z6hT!kx6yq^|*dTRcTSXn(Tou|590_Ru5CywdkM{sY$@Dv@0IoM_(?a&4 z6V}kEs6idq&7kyjY-MF-@x9Tdqsg%`|6Y9nGt?Q~pDlm>&)pc~sCp5c-|-@6P6&3^ z>W{T#w`5kViv@#KkC+{nmPtGgptV7mm{)@6+L+udKL-bi`c@;!-}JW%z|~RcesZiU zEc1olNB8=ZMts+O(?1=t$nC_p5q|!1DxMS?k3^e8MP|c0vaYq2*9*kDVV2XaPYLkA z1gWK>oE~5;&Bu^!$8$MGToxA^A$>4qnQl|8-!qJ{#Ztv6 z5il7o&j0bBl!Evj7@xcUiBh1ciRk~ofD~Zg+$_d65ykG*|7;SCnxco$C?QenYy^5q zQfL-krOS@9>Za8vq%2dd;I>MzItgmX(#^k#P%KQn8bpZuH0J+-26_ga5^F`ySuK;^ zyA(yF(-M#}KKr(G&ajUB;e>mO$IL0QLdF=XCdXSj45EGDnsMx(Rf#xS>ohOl8VyS7 zPYcAHyw|VWg!Tg92Ri&tDW`nhJ>!giELJPaUa1QF#gP!eh%{fif=ha=EkUeV85jvS z+2kqjd4^Z7E=NTKJd(r)Lg}fu9A4Nd?6k0wUWcx&xxdKK3OuYL`G~OdQv`9d7UE-?Hbg7x$caC=e_7spMNB3;2V~hP;rj-pKwTv$}6jo{i-EPnVP2UbFTp zj^5eWpB>;!k;G01@~8D12FVclS5L@xK1C1;L^A$b0{^q?ZeU4AfHud^jTK63+_ZGd zT?ERQ*4K?0k6A_V@4IVKEu-lW!Y%{3RK{#Q4LvU@9QR=X_vDl#|lC z^?OY9B5}|fIWlU=Z6S`&XBo`J->d&uwSeOKdy=Nq(g_BIv^dtq1}y?DLkbTCyMT%Z zWZx2;WDi()x~2NZkIm_RpP(68A3D;b*1RTn_<Jkmx_ zkT-hkmPT$+4h+bCbR`XO0)JM6Vq~VS+HA5a)mS#GJywvP!JqM4QyvFNZ?^A9PF|+89NwyVq&;-#iH`x>Y zEX_cyQE(HV`doj}k^p++d05r?3Rcj)v&H}s)j50?MzqMK-1??;@S&pMhNNf>5(p}% z-fu8()f%?OI^wXN6OH=282VwrCgPzK$j;Ed4oX^T79tv*m|`{tfHUmG5-f{qjFGF= z#jj9{S;X`wq0%x15Ml9m*nt#hP z=Yt*Tl{M{tFMs0PQ0F-*tH{Z!zBLepaCpH7DQQ4xnO$hl!@PyS%=@N232ECy3=oew z@<`2#FA;<(v|!ZBz90`^og&I8Q(5Hu1r7=>CrBdTd+99;Chyv|(k5@h)!CEjv||Zf zGIB=g`j1)hB^gQc1=5Gl?<+Qu>y+uGzCiTpb&fln z1zh-M1gE84GjJIMCb-(3oOqtOyypG1#}cxuOQc5aZaygWO{At(L3wd{pZqtsF90uT zj8(a!gC!%1B}{g>Cm8xsUx7dcq&31h6^$-Gz4Cp4417brRA^ifV~ewN@GrZ#g(V#9U)v7hm~;6?)~>?e*w|9CjKxL6MD+9<=m<8h zWa&UKj{Tw5#DsWEBcv^Q#%!O*P*QX&(Yz&ttKT&db6%dq4xC9zDGs?&WaSjQ|M|y& ztd@V@#;1dl;k$YDxxk5v1#+>`?nRk+SZx8dwVw!~!z=9psX8LC!ewnpJvXO>RMJpT z)+FYAP|2C973=3#;k&ff?6-`V5z+c`8X9pIJlSt-T1zgbfqC&$!jQ!NAqi=pB~>(NJ)o5*LP3OZz{^N}U&=ga&_3?Rv=E%e=Z z!o+QnpavLryMdS01M^U>wO?vI-DgOlR^HHGDpEv4O6maIfi$aKy=Ki9raUT)n z0s^^ncZ|gOZ~@4AN+Va>66a@$)gU&!*fSt&9|EkLeGTnubWyL)v_j zljoYJ>=c(=7Bz8ag|f4jf0=wI+SKB5MO9&q!XrI%%34-<*?4h(KAyj3kx9!Zm)EFN zxe7@im=!zDYKH#Q>Y6<3E~0)Wns>pP8^o%?dYvC@>}?`f_Yb4g@1&QQQ!DXD6dh;|js{nLYvBjR!^ z|Ip2MimjC-Y+$eKy}@wR+^KSbF-ssrd{->myM?FP_creV0-Wp(OkEP_FW0G_#1|8d zm*X1U$7?j%h6d0n!k-C)X&GkTz4Yx@8jf|iOfO@WRi=5X7yPKyG#q@@+EZX!hO82m zkDhH11|MI@6bGDX{Q1^o%C%{pry5<@`(qqud_M?AWr)i7!}=3Snc+8ld3V=$KP<&c zWL8#Tw|g4-PVwCu+oT%KFxsRBAq&}}Iq1R{pK0M*rP?%V^9V(o)6zNZRKX?@V~iBeV!=1ff$bI_ zmocLH^Z>_cx)fKpu%2^E#y#KBWGapX(%5|}ZwSSa%k#sbKD}G&Nv^efOG$YvC%D$J z0@rny4sp_$?mGW?hXD0SM$*oa>Z5dSS5JJ&iC!5FwKf$FkvlZNeCJb3N@RSI^ZxzgrzAgE)u7uM3OW7i^dPcB~OGWe0 zt^2y+N?{Gb8(cyeJP-_t4G-;5=FA^2zdeas8V`#Ml*7TEKPJ1--J(aHGsQx&q*6X=ZY&mgN_u|;sUlMz?jBB*x{YCUg)$YDo{k& z;u3G*l+wQ1%O}@yL=Z7XaHU>pEIzeC5grF>0TIdN$5_Obl)gCO4gsR@5^cL3tLIyF z!sa%%2M3F>!q5-sAleIS%hz^UK}wZ>@R1}a8qs=x2tp_p-Uyk3tjELQ#{^Ltq|3NswCS+8N$f%JXIJ`HUUAXAO`6?3@ z4u}|&7br|a>&`I@PmQk*Swt2@>-H_@f_TI`4178dGj&_lw92;0B4mlgAKj2lr2Osvc38m9$F zng6-ELCTa2F!>&+GBq!XW72OH%3z5LP5rv!o9dpr;srYzMDyfj(9sJJ5R{83~H(Dvv##3SQI_(1R z*DnjTOXh6v-ChptBCbr_ASR~*-Pwk8sM+_qtZ;g3$fFUK@|tMQf^)4q<27||20GYe zDK$(8`QwGO1x6zEcv?JpF!g3FV|HOB+85({L*#19sSx=TjChOG5phWkn4m>b0ijk% zItj%L--cO$v&i~hTr3}4LxiKjElYm0Mzc5Bc;Z=cb+IPP^IohujCd>*)hM|WD@)&{ ziz3d_H=`T*0kEE2!?9$@NIAXAizqzevfNop!^u1K15=Uw&dmTd_NAV~TM~W>Xudz8 z>C6xP#VtT18BC;3eqJ_aJc50zDqwTc7Mgpk&HwF+ew=2U*(~*kW+murfGB7f!ny9I zcW9+JGBz9h$dEh#tyHbU>ODkQhO&l}z)BP6yDF=+)wl>c#T&PI>yIgs+r*)bmOXFK zKF0cH8>!vy@Ib~d{7@_WIBdQ?Mz*Vp11kN|W~Bl`ZTE{c@Lr_&uUS4AQPw4Xt09Ii z!yepD1ROmF17_|)a)_=cIfe}juHUP&?pC6!6q7{GE#)Y4{j2t$AhBX1$w@x#~755KHfbahrE^VG)u?*mchJQg2v_7rD=Lm z2QByblD$}~lfkFi>_QpV(nz^tSt)$&4Q;eYn_0jYcF&Dt!zJF2OG=7@&G4>VD=dGAN~T=zQ< z&3!fQM!xj}n1C|BR5seG#2gSkmES(=yM?ZoKmD#9i{V#@35wPc`s6Yfuth5`WjRBe z^M^+-(TTBQOdLJ3V||znR0jq9i4r=i}&jsi_4>4O`nIm-F z^6Nau*Xs-WY&>rX>$n}f+-N#<#kLWUMNmRgy-f(kw+nAp6G2N8?ow&{4-SHf$ISMu zTAIljF?^EO3oV9;lkO{{;UH90WLK&j>i;y8IIfHx@!Yh=l-~NgP9s0NLuLbi-FWcS zw);r^Gnhd6Ik#*KBkT#eaRnY4f8 z1HZ$pQaWX|s;LTLrbc3u98Qmilrf@9Pd)MIyiw5Z2V*nGR!v)3*IUWZ8$ve~du5~( z3ps2sD(e7rv{yh)E{tR+m53N*V{O_JeEt;#<5IchRgL>wGqED{MthwAa;V~nEQBH5#%25bI4v&H(qMJs^$!t1{L^Zy4|5TefA60!ISm_u%z_|*rwx5`nglD!r$ zMl82Xa+u)kr#o7Vr+|+~5;@|M5>zAJ$BQS|0AiEs!E zsWT;9O-?#}CC`80^kTPPpqVH5)lG%8*WueNU`k1`k0#|$`ByGry5Xp|pxD^Rnj_c8 zAxVgp`K5JlLRA6k56K`hl`A$_28qbKud5ZqPrCAXrJ|Y=3yBbRF z(X~D{(q@cqI^*&TtC19b=uVw!!b?gT>s0N_jC>wsZg~<&M1}&jr7xv(C6t2AjDcw2 z$bF0E#<5+}O zK0HhLpij9j%Yy~@AsLf?v>vcM*AO9%lUda{Feqz*f}nsuRVbTE%O^2q{1JfX$5>fN zX5aShIZBxW$`zS%{(_e*OGQ+fnElmiN4#%2YK7IR?w|BYo6^)c++iEt-YeT0;Zbr- zb}{PITFC@fAv`7)g)d>bOr61V4zsPzGtPL#v&N1x1uLBz5MOjL4<9_#-cXB2!V4qv zV@XL8NSipU?ZXe5(fSi9ol=R_npMaTCYu)X{di$qkSly4 zWOUKq2ovJP$NEh!er&m2dfVcdG=bNTHPe#qh&>)4Z7yySz~(Vm2!fVU}*O z)IfH@w-pg-!Xp!@s|8@))I3e^kZOsGSt>+?<|gNkmvNO#rwDO1rSt9g9 zuFdtq6*hY~;^T0~I=W=+SX4f1J0!i5hFZXGg_GF&vjo~(ZadY)M|vb(?T67K8?FUp zikojkk+3|UvT;!`@6=JPWtww&WDa$2K<|%aEI)6T$zz_UAQXLHV0$iN@l>nUDh@Zj z9%>Mcl(o~m^2&`Z8f`M~<-)tM>(mtoRCr z=avL>TG$WgtjuM-W{SH#9rR#m;+u*+88%i@CkRHcL>nf=qE(@ST5F{S)9iiFUmXD7 z==>}J(4c)K;MGrKLz03v5_d}bb}nv>Q+rrIkLiq!DK37Ft!*EVuGhW*ZWW1c=Q9IR zBZfv?bb(Etb_{HiQ%(FrEbsmVDM#S*2V3RGRKb>Y$3Ab{#NlDe2_73 zhMIAlmB%jDHV0E+p9VE}Xqha5I)N=qRO8fU4 z_@+YlM!-eJUlc+f6pF<2L7!Ya(a7GlyA0Sc`QBiZ%Xk;=!>sEaH3}u@KBewyFQBG(l*&CVTn0 z_8e5&xXZPuYT06?sHi3BC5*Yn{Z5YpH;eHo5NZgfQ;qqc;JOLvR@rG)vz*zW?!H&n z>=1mQI)&T#7g3JI04^P+@q4o-S24!B-r6)B{Yf_kIza)Boof5OCad@M7kTl8lb23| zHCnR2H1E=8DoB-P56-o+(Q&Ws#01;!5^I=o(Bn>1RFt`mQNn)eMz$C2!nLEpdIrK= ziFe9SE8ynMYwpgT_#8ZrcY|IBfaI@9S5;Y{SQl1&oWjWP<}k${!mJ36>0rAYs>*&H zv(tCyt_p~cWfG*RxDawj)9TRu^aCS}{`i|Pvt~_g5hjSCg>~viF^3G-l1~a>jgR!T zx)HvlO5ml&OG{)DIm&8JFRpHK<`|U|8al`AyJXI5=3KWx)HvQ-&;E-z&`bPjV1o5Gi`Zp!Gk{p&#)C_OW!pwtj}nKy{x5LmVUB8i%q zU2t9lWrBbGMj;#B z3D_ixcXy17+96N;)hd1DB$e6;NKg=#@M@BFSTI9_s(*K2!?zG0$`cq(dB#3}ALaC8 z!I5a5=%T*MzkG~@$MkgUnHv|1_E;}SqEj@;ru~L4?^&VLGED;{R7&N@37Dmz(2-_8 z(i2>`5VYaya`56?j7f`RAw#dkc0)lIp8vcMYP?OSOSZ(il)ZB|4x2M?np+a&rGOHuv zW@m)Yru|4DztD2X$HTE6fZ%gO+4b4}W!PPxuKUy4I-8jTJBml8ivOkMo|)ZXDG~ET z*1GRXlyppZ7#7cGVJ!C(xNJl3@%V16^( zKysYb4^{MI`yC|=7iCoIs%LWUvCLbDi><>~Eb+nT(_sc?iGsT-sQ`J7sP&1e<8cj` z-R1XzlS<0{to0Ng*1)y!gnj~cDP+O~0ps|(m7Ch_YO5rrU1{m%{jB4ANEQn{yEnT8 z8Rs_>IW!91Lw+0935~X1HVr5~Uv{9>=c~UJp$XxPg~n7lp%q63n+0%Rels1D7XsTS zhP*4CXhYM27N7XT33y(9c;7ttx7gTn#0;1xZoK^L>fhse!Nl)$B%&RQyQyU%82VTa zl(2eSYF9*;3q%!YaYJp#+{!&!c1#}{j=$XLNBHA=$YrZ-HBge zM$`U1@x?etpTvy90e@$bc{F zZEHQ5NQ9G%Hkm%g+VLw^8{wJ#kp|H^=Xt4u~qp1L6q~xXjU#E^7D6;B|CJWgfVlMzl z;^IS`Jft6qisyeeq4pwfz^qW!iGE4T zb7dijsOi8ZV@}i&JzIP}iXj;6bj+XCm06az8+dn)*`v_YbwL-*@^=O%8)LQ@G0g`%a)i6jg z+y~dz-*k+&^0GvA*$Uam_C+iw_U>kKn4lkHn>HX-&=89@ zlw>Frhu;gubcZneW6a3yRiiD~EV~Ee%MEcYfBp6bO|tPPDxW>Ss#(+i2Z0xwp4Xk3 z+hbY@Rn7LWmRV%#pU>}=@rFrzg9QA3KACslrX=43boxI_bozYrHDpV{9J z&&hU00-_Ya2NT-p`$ciV{jTIp+WD*sp_~hj*Vw!T5mN~9Q+!g z?#0ViIq@@qPma%$jo&ZF4jMb+mvVk*1T}Q0bs5uejtaB2J+23i4;>73Nj*kwXFTnK z1r0>gh2^IwBC8>IF+{~_R6}f8#bDRh(xa+}j7d=`RGQEpAD5nTq#Gj4U2u}K|h8Dr5nQ0;a%;QYvBUf>OY`?MQvSAZ`^=q6x^G) zNU|1T)!pu=tdPO-U&2bQtJvWHpC*LOG^?9^&;FFxT1Ef~yVwiuu7Ic2NC1#+ip7?a z@jLouqDPf-X!DGLW5=cyR~6{Uk&s0+xUe`Mt^}c1EO!yKX_;ASzkiLhese+N{M>Kl zywcT<^Vf!08>M4UdNr?G!aXa}?RT`U0*o9uZRH!&rR8ruEM{11GB)U#W`k%{23WI^ z*Gkkl4SO9sjH9R^tQi&j0h+u9EkpFZAqf1z7@tSjY@g5R=ku=#>~`DfeB*%x7A;fn zCcRIen}f>{*0?3j_{7k>k!4+_m&YEaHLc)ud^+p2!2rlxd$;d;ohnFOaA;2ON1YWH z4gaDGZdUH3Iru(Ny1GT6i2nz@ppB}EATkbAx%FUj9J^s4nP7Jln$T*9>vTnYrPF|d zT3N|{A9zOFWqYF{Y_z~q2|q2z_|mGcHq_Wp%Y6oi>}?HCK7BxzB>jXx7BUcLG+|M; z713$c_8dvV&gkjeB9qihItlkx-yHZ!w`s6#K;RmL!wKrr;I2`J~Tn-8lY8~$J zHh3BdVcuA zC$+%R`k#0OG>J5yBdrLJ8qL<8_VCgRv~`b@L7d#hKi3~J3Eae$AD z$%y$$Cs!jS(JdLxN2acq!Qq<=Er{9bNr6!y=rr8z1-{*C5{_&@ODUFdkeV1|_xWPi z(($4;=TxZMw$@Vmiym`|x;Rn^LRUabcxDWg7|N^%hJE9cV|L9A(FEd4ZneGkmZc-) z`0EZN8)j4YP@RBZIP+we(K|86>&CirFwxj6nXlrgZ^!?g6%8pnd2O2psPGzqwr z{q-UGFWf12(-p(BCwF_};psQ6Qj{MJ;t1F8oQGkn!WdjlZYKSLjTE%~{o5_ou2&_D z?pRA+9~QsQ{l*z};IR|`xFqFqyCbO@yV)D6jXWE*gKp0Bv6-aPIt>|XyIi9@AGWf;v`4qplULw}YK z*se4pjz60qE*S?~x}VloGgsbjvKEyH6FVce!DL*s)teJU)W0)2Mjf1TQ#V`p-^vnN zy)4%Ps4-2dO%k1)7HB_Sy(pO)IGafHJgoj>hrsRv=n&+r(aHq0eh!}}A+ouQsm7M~ zwDV(IXVCy#kda(CdmG}I^OqapwEmE#g4(x0r$)ueMptjf(Nkc0uXdGH5DZ}~P5Dpe z{y>Z_X0rCYHFLY#Z*U$PbEiUu57w}p4jspL19_sWk1HH=)0Dbh`bsumrW?DNu4YmLywMsl?ILCNRo4qoWmN7I69h-^LbgtDv z;g#Z-|6&_Mg!8xX2=9zT{UWC!K~@6yRMDEMT+dTH2d1SNxfo59oKlys26wDkP?IZv z7XmzHyxXjMoRSrKmvqT!`ZqPh5}J-vYwtF%))bX97cJ5|$D&mFcJ<=eP>mce_v`pB zf+jd4;(lG99_2W<3U;wE09}Cr!?78$0YZ{5@PQHrRiR+R1H(1>52F7LAs7t(UqT3Q zr(O)C2Uxy&*0liFh6}Sqiae4>nA#01E2vP_tnF&`7(UQ$%w{gzHRNIeKJfzip44!Q zpVI0DhK>gH#<8{Jf_9MsvUb6_@gD*r-8i;t7~0Y3$TRw5m}mt%X; z{#H0+U<){IlxV^4y}(~x<3~br|9o|W>0jOJW{Ll94GjKgbm0H|fm7m1BQ+)*b}C6z zZR+1zQ7j;)D`9Yf`A^xA-rLQFUno^RJrWxrda`rhhGfB#Us?+3cswQ2F$vx&8vxlU z8s0CG^v|}oZgl)0uv|@zWh&H-&CNonA`{uXIE;*pwd%B#w6p*hmu6J80#&K}u|3Cs z!UB7Me_IkQjTttT^31{rjH%a=%0l!!u;8G?EMrqYPbH}YJg0s?H!5E_ z<%mXd1)v}f=E7ZP2_)T@51 ztE~;2)!CV{rV>yxAJj5|3!o_31&E-r*=|q{n)HqDF%L;eYc1egGp;#Eo+}E`dv|y+ zbNxCJ+MfO9IH^G9;HC4IFAHgt%H4jbkdlb$h`Gq=$|%&DqbLxV z0+aeqU)&!UmMe(_5H&NS(5A=0g@<@JqC7yI07z%T9Z@oCVrRrA2qPC3+fKU-&s~ax)JSv6U_P6HL~FE?9=^S*~vTu4I3wLrRValw3k zP|OZI0`qz5P2g6^=tfhStEp)yFm_U`>1}UAA#fTIwU2E{>hcrOI0g*-0nOeXC4M%q zXe|aZP)Af208J)D8-Cx*A~OPJXAz2AvM;83NIBv*!yII4t=KBC@mcL!|H>tId(DKr zM~*yaCrZXrZJRXn^d{&kcd5}i>EP;yu)T*KJhYIbceDp~eD5lJSt;TUq}hcZDtXRp zOm4(sY{C=fu4FUAO<%pGKABb$N@klx1msSk`S{qzccoc2 znDEFa{3ySn3>FrWj?Ov7hpMLJ^re+UJ2f{GlQ6?<;@Q|Y{mCn@kME-3rePF>L(EjA zWaNXhJ+C(`>W?(ffmYySHI2L3w2Tpq7sD5bB+APa5h}xYv&{(~_?6Br#5JTpte)B9 zz4Hu$Jo8tFF?DaYUl5vi8Y^tPy@2#PLI@oh%qf)Deiw3_g!r_izswqA-a+>C-Vz90 zI`wpJTRqlRAZJS@r7YLjPr5D~y;d`dfI+3y%wm}&iy=e+LmLQ=e@Px z=IQF#f9*vNN!l60h~kD=OXvf~j)RM=U9Z*4^vnb{-!o>Dv<3Q>;BC|*7IemGSH5MX z1(oJ_7SP(_{k2b^T&C5K1IZ8pG0XKrR*X_z)1D2pkHhqYQ?QTgVfvl~Nbb{K0#NbB zFs1|S!XMac?I@5c8M^$Mama=#Sag$|@cALy6bzqH*IBiO1xttlx)qZ1N zYB*9MusIb^0s1o+Nprz5*DN*IA#{d$#>D&+!9)7f)X6uPqJD}JQ;+#m!r08BrxxT> z{BB5K#ge>PNbY&2$Urw@%h)9pl$o3o+I_$hZyXX5URHK_K-}B6Ik~z@-hjyysIk{9dh*;d_>nGsyp#yzlfPfxFcS+CC1FY|Uq@`v-C5QS1G>n7Xlv zJ>Pm8=_I0BOrp=>g2Oh%^wXxrt{NdD#~u8Ot7ncQsNl_2nAMpx>upDaPD!i}RYIM% z#D%23&aN^(OdBXN0J(u5>v^vF)l?$?Pjz=0+jiUp2)beBG|bd6Gcz+f%*=@!X6D3c zm>C-8G~6&Vr(x!XIob5xUESVEciKB?Pj~)gS$|o!WRE@bn|TKKL?q6h3kq416CI+L z$nJ!qA?~7&ZK$uCyx8OSkY}mQ+K4S<3zq>jjLe>ioZMp@RSQyRM}qFY&1AD8JvZ|f z*}p|o1Rz?FHoVpXZwX^({oGXcaW^Elc0!h!nKC~8I0&h@EqO~iK_5$UGDI{h2M4Ir zfg8_0_xv#QZR~`-g{_cgsgn!=VghooszomfH1kZc^WYRBh&z&$;}xFBK{pKe>Nczf zRYX|;s^^n57iZx~5|~V6%8}hH)wmAoSrG^Hhj^^6) zPVG_zD>@jb28^Vpb z`5i^@X{77?gdQnNhiw)VN)dI|I40^^U3;NqA)zz!Q|(vwC%~|{5!TvwDU-XBX1)J4 zSM2WkrN~(&%upenLdC?i#Ew?Z=;nl6=I?XqcfpyKC6V*Sz8qDO*sJFifcGlB%skTh zohpItO1K$PZa{ElSm&eYiRYP8?dpdprKIz z#3cKOfnfZJdKoNIyTs0Py~9o~N#Vz@-MBSpqYpnEaxxGohm_C~fsl zRTv&Pv1r9_rShOnFynWZ_Wh>*QcDF8;A9QudhcL>UVOp!xtqYvZo~Nt(gnZ_o2l=s z1cw@QiJD z5Cr>%sy{W)YMsj(UnxiU=^KRU+eds4m1V%8^A?}n-agV0>Is0FI zgVzD}Acds_W32K*KC96Iiox@%htnK$O-nB?-V&u;#z^qfwvA5jmc|&8n?F@mRT2vJ zNa9pk>Pj#tHYw0@bOgxgb92007OjYB7cA0P*7i0N*>!=-ac2H4aHIQPx% zu_LEE0bI2c7a=s3aXX$BfmM%GK7RIsUQ!qwH?;=`p3*0TjK$nEoH&035-#ix!zt5fyvy^WPgvQ09$W(pzxYa+5V9_FcS1LQtT=_S5$_74Ngf(9`7vDGjR@8 zw}_NrJn&F{#LJpKNxRO$mEfOmph=Y3hCbsW`OK)x5&0dWf!hu(?Ag;+rQuOgM!7us zTdbTHk_C|RP%eckIJUDM$X^1mR)M)+pXs63J7CchdhnWOY$J>ftuQVH7CUPcI8QcN zQFkeh=GrAICgVfi3S0#AZ_D%VZcL1IxIq!Sl=Q04 z4qAkD$tcsLk|sM&HxUKU#>;i)Po2)Rs;LWY5M~l^5|#^eCE4;z85r(hEV`!1fb) zYF%RTkc(xv+Nx>hu2i*NBFj-tJI85EI^^KgDpL^*kRLpZa?XF&CXHAcej)cWb zA-u8#W+_ujx9kLeWkFF#n(O1X+RTSl0&B(a|gg171; z^EDc>MW|b`LU?M(>areEtQygMf~NRr8dA*&ZPii#pgZo_tE!-s$A74Wt(0R}70`ec z=ZGVfv1!St6tr80h@_1V4#$X~W;=g$=92K8*JVKtzn`^J9dr=wC4e1keh{T7x|?OY z#W^s|;Ys=1jE;^4WUc{232AiT%YAWr_&&VuMWX=#BpGC?>p=7U9`>@{t`+Ad&aulC|?EsSr5BkAk&U zH7&Jw*9B(7k18RgConX#aZ9^^+n%h9Z0W*WVloOjpVEx#JR)%$ET<_tg(RiLkYW2! zQ10~&TNBwb@plM2%dYb?JEJ22C+T_g(nVxno_6rFb<)H&AY_5p!*aE=2W6q=i+I-KXEd)pIWuYpZqA> zDYDsAn`?i{k#a3N25ZW6JQwo)J?&$Mz$gfg>=gg6VJGtRyhvG%+UNBDI&DOSAOwyc zDqclWPjuw}g+k!lAw3oA4bQgt>YYbv+j559zd-)ClHr7Ypb5GgS4BviQl)kH_ z+fd=43Kip+hrB|A`}51^@#t(;fwA^e0;h2Q#QaSbsgl9q^@Qddr`D)*bN5cq<^7W} z{q)YeN8U~V%$j?>LeeTdQ7H_u>Gw_9 z2g+z#%|n@OU3^p9g$=bhXj+*xJhX)864?kXdnpStfB(x?a^ancfx_a_de7^cG=J1F zL6YW=M9qMec(E+O@Lr)4$Lu;+1*S7%MtKN}4Fu=kgs9QfQ&;o~A!G@kZf8n9E?x__W7QS5vLaY=2a(b5+(>|7oCO2#_Q7y*$ z*f}B^p=Cg9O+V72K5Pm}z)m|o!euePn*4T!J3cKD#6^jBQ8M|LkaCb6b22k z(jLvNZID?ItZptPkGaMFPZEw$#wjnVmqtd&F@W2fR+a3m3|`j=O*%^ufd>vtTtXW) zGcBs|R=xlD%*y5*M9gE0e1K&}vO$~I)NH@S(SKm#;K#dD&|!SToQ_)=$rAATlq&|* ztFGtj5CL3?tiZETp&kXdc}ONND+-Gt&QN0U|Z_#wrjdJ7tMwA(m8HbfFl97 zW-Pd@XD>$w&FR5^aFFgNzi_|WE{Tp8b(D`xH~mkL15^J$BnPI7EJd$=Vwce`(mseO z>>L%|DC$CeFl<`f84%C1i8uX#iH+7Y&G|<0>L;j?&gL{%DTdlfrge>?W69b*sGkjU zfw5Ji`OMt3LKoQXYa6up(MR!AXr5|?MwiHR+i%taf%@%kCWrSZwWk0&pv+u?xkg-_ z=SZc3`Tw3AFa>-9gfvxfx8wpS5#V&%XyDpupH4-$>N5IuT?ak+Vr9%gP&yW-Sq7?g z(P*N)hAntg5aT0@`p+1(;pdfCj532q0(F012ynI{0Huvh*xv)KJTFkM;kvB3__j=6 zdW!I;H$e7(*BhWOPN95b@Q3=DN-dCbU`Rc|@Ih(Y^-yweiJk2YacV(n!zFt6TH430 z27(0ykD0JRS{RomE_@{cg;3<$>_1PahZzR`om@J8tr2!gB$*%&i07%r;525ln6|!;$S1e1V(X z7p=}Y)J~%WtRClafefUd;+gj_QM9ZPQq;V0KYpiqSn`eiGci+0E+N7+79&ssD za8a?umx1a@T;&LE5f_@BV7x!2V1VFI@PM{1;S74;9^%z@t}TnB1a<-JgA!Bj1%lNk z4)%)@NuV%9L%NQ7h@#TBGoIiKP6%{WlcHJ!V5D@Mb3t`n(#MD6rTkVQ?KS_qcXqq$ zH{dWB53CFnQaCn+E%jEeD}0hGe}EkuK}$})0pR$dRfn3xK( zRHHpaOOk|;gh}6o!sD0o?hWs3AaC~M4575V?~UiNpVU%?mPU==T@9PCLbLy6uZ&$| z$ldCBHK!`iWF;&L8ndq~H`aKp=mCJkrz5oFv8XXHX-^pPxsKNjY~j14x`rVrG}Oq? z)bFfQ*`mdrBP3cjxj3Emj`lvZf7f;NOU1~wkzW3d9erSK7PY>Z!$r~N>K{y*h*Lm- z%A)z$Tv*~)ai;nNxt(<*y71Xf7zA^4JSRvl zYYHwoZ=i@0q0Ltww5+;4=R8SLQH$u@VwoG}o{1t+9$y&EABb(HEq|K_1Y( z)ewoP{d<{vruu>KWW9d69x5Hn8IX3qkYt~ws4GpM)+ZkAS1h%izf{qzy;#&{#wY~^ z-P`;jbF#cfm?~+tMig|dUlWCYaBH>losC8L9*Q5mLRwJ=M9~OHQ9hd_xhxLW@^wfn zRkb!6@;Jp_T?%3Dep47+p1~c);ljljLX`AS^!P3BQ{&;wPNH%UD3z~9A&^^ zBwr#YYzx#nF1zhXMDwmyWG$T zX+6O6w~-MO{hB$L%|FGZqp-l(aC@gBQqn0HOM-*qLVejvE6WRq@r^E?JiGMF6GyeL z)`-qw0=^I9;hXV%E$X9Mx$VI`wLA{4T|2CC;06w+m^o(Kh8dP~qU;Hh*0_3xO`PU| z)WOmQoHkpVW-=|Lc7;BX=2}Xon|SRBW?RWoYsV&}d9(bu_TYHs_@uHN7IniU*>HXK z2Uex4rr3De$c8qTH52`CL6n(^nC1}!a1-XN`80`uo?h%72nRQ%BH;m~i2F6kOSp0& zL8i5ZIw<+f(16-UQ1P8FE>8;{(OyOAffDU2`I#JyI^amEmuA-S^b>}Gb7_4+vc@Gs z;fDq-{QS|hrY=V+V%%}KU=ipRT*gk!pSTb8J^SmSH2vm^qljq{7m?0IxO}~&b~D@A z?RZ%fO&}9O*z-@4wi7xX7;Xj-I;TF?`#iBJK*l2!*J^!-YV*+rhVSAKt5b9AxBEM0X&-7sGwy_mRw zgA)#3RL>6eWNg%!{iGc66s5^mO`NHxIE|`ka|Nl-a1ST41o1dWw}8c7kAjvK>G8G# zJt-NtOqh&>IW5_|5?CDZ`^pa%1%ZT4wr2pHFfPkFgk;)N7P5f4ec*NYb@Ujr8Qr$x znZ%vs%6OsTCGN*p8PUE~Fm1le?oRkc#x>uBR+;nxbJ!KWY)5Q9D|_7G9kX2fu;_CG zV0PkrHSM4hX%?xiuB$+0OCocL&===L*77a#EaUU8s9d`gJBF|DS)o$*2C%#^AMKe~ z^9F!g7Mz;b4dTK#`bVz{FuoOru9@xl+)QJFqiCsjoR|kL=pB?6&pwae5laRa!uWqQ zdbsL|gT|Ao%awoPi4#UeNmrIl<02cPccZ3_G3E_(&Ouhl+N1ec9BF$O_`~)V?t%!2 zf1e2!V^<|Z#?Z60h0lNQsUR-sohbY1w3u)_N(hrh**(g}O%mDp=l!V<6wMrll#(%o zGk5~NcVJV@N=zsGl~5qy?9F?>dDa&uL3iROFkF~?AH@cdAQ9H_9CvRG-kOk<8D2&v zI3e#UylW2=*&x(bWM)`mj$2e^u^ZSQA8gBp>AgqI5}eG)FFVSy^E{^>rYiKrw+ zht*-!?--?S29aP;=hYc~1-yfz!g$U2R2H)8R3$BkHuJRun;41gf)=ogjY%29jBvk` ztYzx$TpL}p{vIGz1ZqgSSqIZzQoRt?be_S2E!A~&YCo9`J2!|+Aq=kcF3n?0?4xKhZCm(IA?ZpK5v5l1gwv?)yPjq!)t5Yt|3tuwhdmZFt_J)8uUDp_ zRFXyzmWSL|Gz0T-50H&b23Kd)EI(ota)&ejP5?&=VdCPhW1%mcj;un!Z}@CScCD#x z#AKM{)zaJ}c+@vc=5pq7$X8^ZTrK@D{G#Y^dUqkM>!_9AtA&e!ay{+z?fejpE&bjT zcCB;xH>uj57^mt`LhX!Yy6IhQ{Jh|LzwotbMNUjMiD#T$WX>|=f>d`hA9l7|8c2>` z{MT3CFnyRhjTV{3{Bi`sasB}QoO#6X-&#uqZ01|Au%ZF_{N-sp(pWZqUsWN{zm-SL zBEL+Eb+MF7!zI>UItFan4EpCmIcjTIQF%T7XB97p z`uSLjzxLX@0yw1`<`vzw$%gz04dhigiD%K}N?DLu~IFPjSCM7i7>nD)jq0KOTSBp{`t___iH8wPUqLy zYZ+R57Q@K$?u4-P2;3>*tOsUuE7>MprFaY#=+;Z9?%n{E>H|__V zvk5;TeV|i7rC=m6sXA*rnIsXiof_AO%dMyb2=P0J0G&W_-oXmpKlbF7J z3G5``2dr*-@fmmm9WN-Nq9obHK`zUAq&QYfCEv80E4>mWDuIFqC(8~>NS#s#!|FvL zTzTTB^0IteamgBiKhgSMw<(@`G1T(m8oyJh{^s&Qg-(Rv*xyggKPTn`-yK3p;Ug(G z{S3ZgC2@-eHn&Q6Uz)lIz9x0qUjH);O4i+W(Eno?Y^0l?qoYf=rB<<_SA>>PR|Na( zkv(UgGkpIAuTMLEOP2MV!ccg?Uh+p&T)YgPjq0HkvQShcl1NI4%S71!tHUq_7)7p6 zLk)arD&p;Wl!{moszh<#i5I!syLx1pB%8WArkRQC$FbT50qAXGqV}Ge^DTRwDvS=} zjmwTSdYjcVk+tsBAt_uY=`!RbIGYGX<$>h%IFpMMb7qXi3A~a^=*y|c=w1~CG@oH$ zUK0m0+R$gt@?rN(bt&i=|4Ihn3-CVJ3RhPk0M z7?LEj3E>2b_*que+<`YuT{vkhP-?8-$Tak$M0FK-^9#WhlTo8VYDXhHd|x!zF(w`Qwz1?e~VW zH-^(Iu3f$shMS(5xiPeF0w`XRclYWL6ss&AKot&E%{Jz}fD#EL%0B3G%69LQ{6fon zQ!ySdG{tXiQ)%~EmRf=Nd>(V%nN%<{l8YtUJ=mMcJL)0=L^-JuTSksPAEq2#LI5Q4 zuY2S{8fos{i0ClT+q+Cm+tSs@STmxYkOPo#Wg4|i$<6fn^>@lB{x6238yx+am_xah zq;I&3rFoX*{a*s})yb%wJ9^a{kif%~MS{cw#QQk*G!s;-*3%DLp8BLO@Yhj=beCHm z_;Y&Pm{R>pZq!jht3SRYLnSDRU|rZ(klN6aezpgSp;)#J^>fsgl#`ylA%)x^*EC_e z-yU0dogtj2*R$l%Mx(iT`mq_9>8pIn$c{rZ-WAfQ&B$1z*F_I0a>i9Q{1g4de3GDL zCWjC5NlZfX=iH4QVg*WrV)DJ(zLPF`TLVd#cCLKxK}Dd#Lod&AhY6}!=lfC}Kg zf}#k~WTY2sjSL)IJOr|ipnyk$rQ0y}=Y|`L+QI5HLP*l@RnBz7H4Gxo#U_1H^8~)} z&Pl=U3F3>-<)v8n>kLJRYn^(}>66Dtcr77GBB4mS3uL+kc~C&cw1xJ$&Lo{1ENN${ z%*2ZZlI6VmSu7{#59^fX-)|1vq3gZ**xoCk)LeGa)#)ZLcAhw;t`f0Mk>32%h6L~Y-a8a|*W7KpK zf)~D!LjLmy_Fm{%iGnt~0Z(jYV_Vj}*Gemn8DF3YR!|>CvcQ9}n6W5$CyTozCip94 zk_LWW)pY)IeT1*nDaf$*`6nDIfJuMVLLQzHffKSz&;SRuaPR?!)|s;#EfNBJd-pK( zjb{Ov9l_@?E8Q8`pfulSqR~_aWIeG}QA;U2bLJKzw|NldPDjblQRS~Nut-Bfjp_i%`SBt>*o8HVosJHg}>+Kn^GrGlq{!J3;#`^&;E0dnbBBf6SU)3?%n3=ryW z@M)M-!d4`8&El?EPR`x}t#T1HG4X*2g_vD5HowqL;4&u zVpT-!9sc2kYfG=TK5SI#2L>GU`tqL{RIu*bs< z+4)2bI$4uHI_v^>i2pf21cqpu&@NB?*`*3L0Z-s(PPkPO*3X9Xe2T5*K4v*MWH1sp zK@EECG;Rcde6LwYZJ<27BU?R1DZqU?_ExyX9ewHxAtj2T%VRZAmw{|mS9@oiMa zqAIT&i;br+3iXSfONc)_Rm6iau&H4!gaR7jReZ9>tSyZcE1d?Z8*)YY@5 zecn*2x<^%N!7P-8LWMUsA^+U&~dNyyK#LhB(0_I9N0akC)VCQ8%YGAJoB?q1|M�`D43VsX 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�e0u`G;5A3a*;Gt1TkB~SBw@_XQeUQ+6$n9&f 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 Od8EY^#A-y0g8mQwMWa*z literal 0 HcmV?d00001 diff --git a/docs/guides/interactions/application-commands/slash-commands/images/slashcommand1.png b/docs/guides/interactions/application-commands/slash-commands/images/slashcommand1.png new file mode 100644 index 0000000000000000000000000000000000000000..0c4e0aec70b552b3323fc76d35b239c110069f24 GIT binary patch literal 10886 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 Pm^tEPcllz2jep8tI8wuE literal 0 HcmV?d00001 diff --git a/docs/guides/interactions/intro.md b/docs/guides/interactions/intro.md new file mode 100644 index 000000000..62b2dfdb5 --- /dev/null +++ b/docs/guides/interactions/intro.md @@ -0,0 +1,10 @@ +--- +uid: Guides.Interactions.Intro +title: Introduction to Interactions +--- + +# Interactions + +Placeholder text does the brrr. + +Links to different sections of guides: msg comp / slash commands. diff --git a/docs/guides/interactions/message-components/01-getting-started.md b/docs/guides/interactions/message-components/01-getting-started.md new file mode 100644 index 000000000..cd5eadd0a --- /dev/null +++ b/docs/guides/interactions/message-components/01-getting-started.md @@ -0,0 +1,66 @@ +--- +uid: Guides.MessageComponents.GettingStarted +title: Getting Started with Components +--- + +# Message Components + +Message components are a framework for adding interactive elements to a message your app or bot sends. They're accessible, customizable, and easy to use. + +## What is a Component + +Components are a new parameter you can use when sending messages with your bot. There are currently 2 different types of components you can use: Buttons and Select Menus. + +## Creating components + +Lets create a simple component that has a button. First thing we need is a way to trigger the message, this can be done via commands or simply a ready event. Lets make a command that triggers our button message. + +```cs +[Command("spawner")] +public async Task Spawn() +{ + // Reply with some components +} +``` + +We now have our command, but we need to actually send the buttons with the command. To do that, lets look at the `ComponentBuilder` class: + +| Name | Description | +| ---------------- | --------------------------------------------------------------------------- | +| `FromMessage` | Creates a new builder from a message. | +| `FromComponents` | Creates a new builder from the provided list of components. | +| `WithSelectMenu` | Adds a `SelectMenuBuilder` to the `ComponentBuilder` at the specific row. | +| `WithButton` | Adds a `ButtonBuilder` to the `ComponentBuilder` at the specific row. | +| `Build` | Builds this builder into a `MessageComponent` used to send your components. | + +We see that we can use the `WithButton` function so lets do that. looking at its parameters it takes: + +- `label` - The display text of the button. +- `customId` - The custom id of the button, this is whats sent by discord when your button is clicked. +- `style` - The discord defined style of the button. +- `emote` - An emote to be displayed with the button. +- `url` - The url of the button if its a link button. +- `disabled` - Whether or not the button is disabled. +- `row` - The row the button will occupy. + +Since were just making a busic button, we dont have to specify anything else besides the label and custom id. + +```cs +var builder = new ComponentBuilder() + .WithButton("label", "custom-id"); +``` + +Lets add this to our command: + +```cs +[Command("spawner")] +public async Task Spawn() +{ + var builder = new ComponentBuilder() + .WithButton("label", "custom-id"); + + await ReplyAsync("Here is a button!", components: builder.Build()); +} +``` + +![](images\image1.png) diff --git a/docs/guides/interactions/message-components/02-responding-to-buttons.md b/docs/guides/interactions/message-components/02-responding-to-buttons.md new file mode 100644 index 000000000..00d651f6b --- /dev/null +++ b/docs/guides/interactions/message-components/02-responding-to-buttons.md @@ -0,0 +1,37 @@ +--- +uid: Guides.MessageComponents.Responding +title: Responding to Components +--- + +# Responding to button clicks + +Responding to buttons is pretty simple, there are a couple ways of doing it and we can cover both. + +### Method 1: Hooking the InteractionCreated Event + +We can hook the `ButtonExecuted` event for button type interactions: + +```cs +client.ButtonExecuted += MyButtonHandler; +``` + +Now, lets write our handler. + +```cs +public async Task MyButtonHandler(SocketMessageComponent component) +{ + // We can now check for our custom id + switch(component.Data.CustomId) + { + // Since we set our buttons custom id as 'custom-id', we can check for it like this: + case "custom-id": + // Lets respond by sending a message saying they clicked the button + await component.RespondAsync($"{component.User.Mention} has clicked the button!"); + break; + } +} +``` + +Running it and clicking the button: + +![](Images/image2.png) \ No newline at end of file diff --git a/docs/guides/interactions/message-components/03-buttons-in-depth.md b/docs/guides/interactions/message-components/03-buttons-in-depth.md new file mode 100644 index 000000000..f9fd67515 --- /dev/null +++ b/docs/guides/interactions/message-components/03-buttons-in-depth.md @@ -0,0 +1,45 @@ +--- +uid: Guides.MessageComponents.Buttons +title: Buttons in Depth +--- + +# Buttons in depth + +There are many changes you can make to buttons, lets take a look at the parameters in the `WithButton` function" +| Name | Type | Description | +|----------|---------------|----------------------------------------------------------------| +| label | `string` | The label text for the button. | +| customId | `string` | The custom id of the button. | +| style | `ButtonStyle` | The style of the button. | +| emote | `IEmote` | A IEmote to be used with this button. | +| url | `string` | A URL to be used only if the `ButtonStyle` is a Link. | +| disabled | `bool` | Whether or not the button is disabled. | +| row | `int` | The row to place the button if it has enough room, otherwise 0 | + +### Label + +This is the front facing text that the user sees. The maximum length is 80 characters. + +### CustomId + +This is the property sent to you by discord when a button is clicked. It is not required for link buttons as they do not emit an event. The maximum length is 100 characters. + +### Style + +Styling your buttons are important for indicating different actions: + +![](Images/image3.png) + +You can do this by using the `ButtonStyle` which has all the styles defined. + +### Emote + +You can specify an `IEmote` when creating buttons to add them to your button. They have the same restrictions as putting guild based emotes in messages. + +### Url + +If you use the link style with your button you can specify a url. When this button is clicked the user is taken to that url. + +### Disabled + +You can specify if your button is disabled, meaning users won't be able to click on it. diff --git a/docs/guides/interactions/message-components/04-select-menus.md b/docs/guides/interactions/message-components/04-select-menus.md new file mode 100644 index 000000000..5181ddf34 --- /dev/null +++ b/docs/guides/interactions/message-components/04-select-menus.md @@ -0,0 +1,76 @@ +--- +uid: Guides.MessageComponents.SelectMenus +title: Select Menus +--- + +# Select menus + +Select menus allow users to select from a range of options, this can be quite useful with configuration commands etc. + +## Creating a select menu + +We can use a `SelectMenuBuilder` to create our menu. + +```cs +var menuBuilder = new SelectMenuBuilder() + .WithPlaceholder("Select an option") + .WithCustomId("menu-1") + .WithMinValues(1) + .WithMaxValues(1) + .AddOption("Option A", "opt-a", "Option B is lying!") + .AddOption("Option B", "opt-b", "Option A is telling the truth!"); + +var builder = new ComponentBuilder() + .WithSelectMenu(menuBuilder); +``` + +Lets add this to a command: + +```cs +[Command("spawner")] +public async Task Spawn() +{ + var menuBuilder = new SelectMenuBuilder() + .WithPlaceholder("Select an option") + .WithCustomId("menu-1") + .WithMinValues(1) + .WithMaxValues(1) + .AddOption("Option A", "opt-a", "Option B is lying!") + .AddOption("Option B", "opt-b", "Option A is telling the truth!"); + + var builder = new ComponentBuilder() + .WithSelectMenu(menuBuilder); + + await ReplyAsync("Whos really lying?", components: builder.Build()); +} +``` + +Running this produces this result: + +![](Images/image4.png) + +And opening the menu we see: + +![](Images/image5.png) + +Lets handle the selection of an option, We can hook the `SelectMenuExecuted` event to handle our select menu: + +```cs +client.SelectMenuExecuted += MyMenuHandler; +``` + +The `SelectMenuExecuted` also supplies a `SocketMessageComponent` argument, we can confirm that its a select menu by checking the `ComponentType` inside of the data field if we need, but the library will do that for us and only execute our handler if its a select menu. + +The values that the user has selected will be inside of the `Values` collection in the Data field. we can list all of them back to the user for this example. + +```cs +public async Task MyMenuHandler(SocketMessageComponent arg) +{ + var text = string.Join(", ", arg.Data.Values); + await arg.RespondAsync($"You have selected {text}"); +} +``` + +Running this produces this result: + +![](Images/image6.png) diff --git a/docs/guides/interactions/message-components/05-advanced.md b/docs/guides/interactions/message-components/05-advanced.md new file mode 100644 index 000000000..49b3f31a6 --- /dev/null +++ b/docs/guides/interactions/message-components/05-advanced.md @@ -0,0 +1,87 @@ +--- +uid: Guides.MessageComponents.Advanced +title: Advanced Concepts +--- + +# Advanced + +Lets say you have some components on an ephemeral slash command, and you want to modify the message that the button is on. The issue with this is that ephemeral messages are not stored and can not be get via rest or other means. + +Luckily, Discord thought of this and introduced a way to modify them with interactions. + +### Using the UpdateAsync method + +Components come with an `UpdateAsync` method that can update the message that the component was on. You can use it like a `ModifyAsync` method. + +Lets use it with a command, we first create our command, in this example im just going to use a message command: + +```cs +var command = new MessageCommandBuilder() + .WithName("testing").Build(); + +await client.GetGuild(guildId).BulkOverwriteApplicationCommandAsync(new [] { command, buttonCommand }); +``` + +Next, we listen for this command, and respond with some components when its used: + +```cs +var menu = new SelectMenuBuilder() +{ + CustomId = "select-1", + Placeholder = "Select Somthing!", + MaxValues = 1, + MinValues = 1, +}; + +menu.AddOption("Meh", "1", "Its not gaming.") + .AddOption("Ish", "2", "Some would say that this is gaming.") + .AddOption("Moderate", "3", "It could pass as gaming") + .AddOption("Confirmed", "4", "We are gaming") + .AddOption("Excellent", "5", "It is renowned as gaming nation wide", new Emoji("🔥")); + +var components = new ComponentBuilder() + .WithSelectMenu(menu); + + +await arg.RespondAsync("On a scale of one to five, how gaming is this?", component: componBuild(), ephemeral: true); +break; +``` + +Now, let's listen to the select menu executed event and add a case for `select-1` + +```cs +client.SelectMenuExecuted += SelectMenuHandler; + +... + +public async Task SelectMenuHandler(SocketMessageComponent arg) +{ + switch (arg.Data.CustomId) + { + case "select-1": + var value = arg.Data.Values.First(); + var menu = new SelectMenuBuilder() + { + CustomId = "select-1", + Placeholder = $"{(arg.Message.Components.First().Components.First() as SelectMenu).Options.FirstOrDefault(x => x.Value == value).Label}", + MaxValues = 1, + MinValues = 1, + Disabled = true + }; + + menu.AddOption("Meh", "1", "Its not gaming.") + .AddOption("Ish", "2", "Some would say that this is gaming.") + .AddOption("Moderate", "3", "It could pass as gaming") + .AddOption("Confirmed", "4", "We are gaming") + .AddOption("Excellent", "5", "It is renowned as gaming nation wide", new Emoji("🔥")); + + // We use UpdateAsync to update the message and its original content and components. + await arg.UpdateAsync(x => + { + x.Content = $"Thank you {arg.User.Mention} for rating us {value}/5 on the gaming scale"; + x.Components = new ComponentBuilder().WithSelectMenu(menu).Build(); + }); + break; + } +} +``` diff --git a/docs/guides/interactions/message-components/images/image1.png b/docs/guides/interactions/message-components/images/image1.png new file mode 100644 index 0000000000000000000000000000000000000000..a161d8a61f2eaba566050f1f538e06e3667855e5 GIT binary patch literal 17256 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 LtDnm{r-UW|LtD*h literal 0 HcmV?d00001 diff --git a/docs/guides/interactions/message-components/images/image2.png b/docs/guides/interactions/message-components/images/image2.png new file mode 100644 index 0000000000000000000000000000000000000000..9303de91beeede1a90c4cdc8e6416f755c0938d9 GIT binary patch literal 19725 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�@2a2iMP%awMs+3f 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 literal 0 HcmV?d00001 diff --git a/docs/guides/interactions/message-components/images/image3.png b/docs/guides/interactions/message-components/images/image3.png new file mode 100644 index 0000000000000000000000000000000000000000..7480e1da90a413f8dfe8e13b66a9a2a8c5dc2bb2 GIT binary patch literal 40520 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 CfS#QI literal 0 HcmV?d00001 diff --git a/docs/guides/interactions/message-components/images/image4.png b/docs/guides/interactions/message-components/images/image4.png new file mode 100644 index 0000000000000000000000000000000000000000..c54ab791f3f7faea366b4d849e05da7410a43b4c GIT binary patch literal 20983 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 literal 0 HcmV?d00001 diff --git a/docs/guides/interactions/message-components/images/image6.png b/docs/guides/interactions/message-components/images/image6.png new file mode 100644 index 0000000000000000000000000000000000000000..1536096d088c4502fbad8d21bfbcd6cb776af97e GIT binary patch literal 39425 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%0AFvb#N7fe8Hdhlf=EO&m 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 H+rIxV45D%) literal 0 HcmV?d00001 diff --git a/docs/guides/toc.yml b/docs/guides/toc.yml index a6c38768f..968468416 100644 --- a/docs/guides/toc.yml +++ b/docs/guides/toc.yml @@ -1,26 +1,15 @@ - name: Introduction topicUid: Guides.Introduction -- name: Getting Started +- name: "Working with Guild Events" items: - - name: Installation - topicUid: Guides.GettingStarted.Installation - items: - - name: Nightly Builds - topicUid: Guides.GettingStarted.Installation.Nightlies - - name: Your First Bot - topicUid: Guides.GettingStarted.FirstBot - - name: Terminology - topicUid: Guides.GettingStarted.Terminology -- name: Basic Concepts - items: - - name: Logging Data - topicUid: Guides.Concepts.Logging - - name: Working with Events - topicUid: Guides.Concepts.Events - - name: Managing Connections - topicUid: Guides.Concepts.ManageConnections - - name: Entities - topicUid: Guides.Concepts.Entities + - name: Introduction + topicUid: Guides.GuildEvents.Intro + - name: Creating Events + topicUid: Guides.GuildEvents.Creating + - name: Getting Event Users + topicUid: Guides.GuildEvents.GettingUsers + - name: Modifying Events + topicUid: Guides.GuildEvents.Modifying - name: Working with Commands items: - name: Introduction @@ -35,9 +24,45 @@ topicUid: Guides.Commands.DI - name: Post-execution Handling topicUid: Guides.Commands.PostExecution +- name: Working with Slash Commands + items: + - name: Introduction + topicUid: Guides.SlashCommands.Intro + - name: Creating slash commands + topicUid: Guides.SlashCommands.Creating + - name: Receiving and responding to slash commands + topicUid: Guides.SlashCommands.Receiving + - name: Slash command parameters + topicUid: Guides.SlashCommands.Parameters + - name: Ephemeral responses + topicUid: Guides.SlashCommands.Ephemeral + - name: Sub commands + topicUid: Guides.SlashCommands.SubCommand + - name: Slash command choices + topicUid: Guides.SlashCommands.Choices + - name: Slash commands Bulk Overwrites + topicUid: Guides.SlashCommands.BulkOverwrite +- name: Working with Context commands + items: + - name: Creating Context Commands + topicUid: Guides.ContextCommands.Creating + - name: Receiving Context Commands + topicUid: Guides.ContextCommands.Reveiving +- name: Working with Message Components + items: + - name: Getting started + topicUid: Guides.MessageComponents.GettingStarted + - name: Responding to Components + topicUid: Guides.MessageComponents.Responding + - name: Buttons in depth + topicUid: Guides.MessageComponents.Buttons + - name: Select menus + topicUid: Guides.MessageComponents.SelectMenus + - name: Advanced Concepts + topicUid: Guides.MessageComponents.Advanced - name: Emoji topicUid: Guides.Emoji - name: Voice topicUid: Guides.Voice.SendingVoice - name: Deployment - topicUid: Guides.Deployment \ No newline at end of file + topicUid: Guides.Deployment diff --git a/samples/02_commands_framework/02_commands_framework.csproj b/samples/02_commands_framework/02_commands_framework.csproj index 151e546a2..83a62f8d7 100644 --- a/samples/02_commands_framework/02_commands_framework.csproj +++ b/samples/02_commands_framework/02_commands_framework.csproj @@ -6,7 +6,7 @@ - + diff --git a/samples/02_commands_framework/Modules/PublicModule.cs b/samples/02_commands_framework/Modules/PublicModule.cs index b9263649f..18423f609 100644 --- a/samples/02_commands_framework/Modules/PublicModule.cs +++ b/samples/02_commands_framework/Modules/PublicModule.cs @@ -31,7 +31,7 @@ namespace _02_commands_framework.Modules [Command("userinfo")] public async Task UserInfoAsync(IUser user = null) { - user = user ?? Context.User; + user ??= Context.User; await ReplyAsync(user.ToString()); } diff --git a/samples/02_commands_framework/Program.cs b/samples/02_commands_framework/Program.cs index 67cb87764..8a2f37dce 100644 --- a/samples/02_commands_framework/Program.cs +++ b/samples/02_commands_framework/Program.cs @@ -39,7 +39,7 @@ namespace _02_commands_framework services.GetRequiredService().Log += LogAsync; // Tokens should be considered secret data and never hard-coded. - // We can read from the environment variable to avoid hardcoding. + // We can read from the environment variable to avoid hard coding. await client.LoginAsync(TokenType.Bot, Environment.GetEnvironmentVariable("token")); await client.StartAsync(); diff --git a/samples/03_sharded_client/03_sharded_client.csproj b/samples/03_sharded_client/03_sharded_client.csproj index 24f9942f9..91cacef64 100644 --- a/samples/03_sharded_client/03_sharded_client.csproj +++ b/samples/03_sharded_client/03_sharded_client.csproj @@ -7,7 +7,7 @@ - + diff --git a/samples/03_sharded_client/Services/CommandHandlingService.cs b/samples/03_sharded_client/Services/CommandHandlingService.cs index 1230cbcff..adc91b12c 100644 --- a/samples/03_sharded_client/Services/CommandHandlingService.cs +++ b/samples/03_sharded_client/Services/CommandHandlingService.cs @@ -54,7 +54,7 @@ namespace _03_sharded_client.Services if (!command.IsSpecified) return; - // the command was succesful, we don't care about this result, unless we want to log that a command succeeded. + // the command was successful, we don't care about this result, unless we want to log that a command succeeded. if (result.IsSuccess) return; diff --git a/samples/idn/Inspector.cs b/samples/idn/Inspector.cs index 3806e0e79..1544c8d07 100644 --- a/samples/idn/Inspector.cs +++ b/samples/idn/Inspector.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Reflection; using System.Text; -namespace idn +namespace Idn { public static class Inspector { diff --git a/samples/idn/Program.cs b/samples/idn/Program.cs index ffd8fd1af..abc315a2d 100644 --- a/samples/idn/Program.cs +++ b/samples/idn/Program.cs @@ -13,7 +13,7 @@ using System.Threading; using System.Text; using System.Diagnostics; -namespace idn +namespace Idn { public class Program { diff --git a/samples/idn/idn.csproj b/samples/idn/idn.csproj index 984c86383..f982ff86d 100644 --- a/samples/idn/idn.csproj +++ b/samples/idn/idn.csproj @@ -6,7 +6,7 @@ - + diff --git a/src/Discord.Net.Analyzers/Discord.Net.Analyzers.csproj b/src/Discord.Net.Analyzers/Discord.Net.Analyzers.csproj index 1b2ee45bf..5fe98fc86 100644 --- a/src/Discord.Net.Analyzers/Discord.Net.Analyzers.csproj +++ b/src/Discord.Net.Analyzers/Discord.Net.Analyzers.csproj @@ -1,4 +1,4 @@ - + Discord.Net.Analyzers @@ -7,7 +7,7 @@ netstandard2.0;netstandard2.1 - + diff --git a/src/Discord.Net.Commands/Attributes/AliasAttribute.cs b/src/Discord.Net.Commands/Attributes/AliasAttribute.cs index 16eb3ba73..c4b78f534 100644 --- a/src/Discord.Net.Commands/Attributes/AliasAttribute.cs +++ b/src/Discord.Net.Commands/Attributes/AliasAttribute.cs @@ -16,7 +16,7 @@ namespace Discord.Commands /// /// [Command("stats")] /// [Alias("stat", "info")] - /// public async Task GetStatsAsync(IUser user) + /// public Task GetStatsAsync(IUser user) /// { /// // ...pull stats /// } diff --git a/src/Discord.Net.Commands/Builders/CommandBuilder.cs b/src/Discord.Net.Commands/Builders/CommandBuilder.cs index 3f1ca883a..1d946a33d 100644 --- a/src/Discord.Net.Commands/Builders/CommandBuilder.cs +++ b/src/Discord.Net.Commands/Builders/CommandBuilder.cs @@ -7,6 +7,7 @@ namespace Discord.Commands.Builders { public class CommandBuilder { + #region CommandBuilder private readonly List _preconditions; private readonly List _parameters; private readonly List _attributes; @@ -27,8 +28,9 @@ namespace Discord.Commands.Builders public IReadOnlyList Parameters => _parameters; public IReadOnlyList Attributes => _attributes; public IReadOnlyList Aliases => _aliases; + #endregion - //Automatic + #region Automatic internal CommandBuilder(ModuleBuilder module) { Module = module; @@ -38,7 +40,9 @@ namespace Discord.Commands.Builders _attributes = new List(); _aliases = new List(); } - //User-defined + #endregion + + #region User-defined internal CommandBuilder(ModuleBuilder module, string primaryAlias, Func callback) : this(module) { @@ -132,7 +136,7 @@ namespace Discord.Commands.Builders var firstMultipleParam = _parameters.FirstOrDefault(x => x.IsMultiple); if ((firstMultipleParam != null) && (firstMultipleParam != lastParam)) throw new InvalidOperationException($"Only the last parameter in a command may have the Multiple flag. Parameter: {firstMultipleParam.Name} in {PrimaryAlias}"); - + var firstRemainderParam = _parameters.FirstOrDefault(x => x.IsRemainder); if ((firstRemainderParam != null) && (firstRemainderParam != lastParam)) throw new InvalidOperationException($"Only the last parameter in a command may have the Remainder flag. Parameter: {firstRemainderParam.Name} in {PrimaryAlias}"); @@ -140,5 +144,6 @@ namespace Discord.Commands.Builders return new CommandInfo(this, info, service); } + #endregion } } diff --git a/src/Discord.Net.Commands/Builders/ModuleBuilder.cs b/src/Discord.Net.Commands/Builders/ModuleBuilder.cs index 6dc50db31..ddb62e797 100644 --- a/src/Discord.Net.Commands/Builders/ModuleBuilder.cs +++ b/src/Discord.Net.Commands/Builders/ModuleBuilder.cs @@ -7,6 +7,7 @@ namespace Discord.Commands.Builders { public class ModuleBuilder { + #region ModuleBuilder private readonly List _commands; private readonly List _submodules; private readonly List _preconditions; @@ -27,8 +28,9 @@ namespace Discord.Commands.Builders public IReadOnlyList Aliases => _aliases; internal TypeInfo TypeInfo { get; set; } + #endregion - //Automatic + #region Automatic internal ModuleBuilder(CommandService service, ModuleBuilder parent) { Service = service; @@ -40,7 +42,9 @@ namespace Discord.Commands.Builders _attributes = new List(); _aliases = new List(); } - //User-defined + #endregion + + #region User-defined internal ModuleBuilder(CommandService service, ModuleBuilder parent, string primaryAlias) : this(service, parent) { @@ -132,5 +136,6 @@ namespace Discord.Commands.Builders public ModuleInfo Build(CommandService service, IServiceProvider services) => BuildImpl(service, services); internal ModuleInfo Build(CommandService service, IServiceProvider services, ModuleInfo parent) => BuildImpl(service, services, parent); + #endregion } } diff --git a/src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs b/src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs index 7a752090e..8c10ae806 100644 --- a/src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs +++ b/src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs @@ -116,7 +116,7 @@ namespace Discord.Commands builder.AddAliases(alias.Aliases); break; case GroupAttribute group: - builder.Name = builder.Name ?? group.Prefix; + builder.Name ??= group.Prefix; builder.Group = group.Prefix; builder.AddAliases(group.Prefix); break; @@ -158,7 +158,7 @@ namespace Discord.Commands case CommandAttribute command: builder.AddAliases(command.Text); builder.RunMode = command.RunMode; - builder.Name = builder.Name ?? command.Text; + builder.Name ??= command.Text; builder.IgnoreExtraArgs = command.IgnoreExtraArgs ?? service._ignoreExtraArgs; break; case NameAttribute name: @@ -291,7 +291,7 @@ namespace Discord.Commands return reader; } - //We dont have a cached type reader, create one + //We don't have a cached type reader, create one reader = ReflectionUtils.CreateObject(typeReaderType.GetTypeInfo(), service, services); service.AddTypeReader(paramType, reader, false); diff --git a/src/Discord.Net.Commands/Builders/ParameterBuilder.cs b/src/Discord.Net.Commands/Builders/ParameterBuilder.cs index 4ad5bfac0..9ee1a748c 100644 --- a/src/Discord.Net.Commands/Builders/ParameterBuilder.cs +++ b/src/Discord.Net.Commands/Builders/ParameterBuilder.cs @@ -8,6 +8,7 @@ namespace Discord.Commands.Builders { public class ParameterBuilder { + #region ParameterBuilder private readonly List _preconditions; private readonly List _attributes; @@ -24,8 +25,9 @@ namespace Discord.Commands.Builders public IReadOnlyList Preconditions => _preconditions; public IReadOnlyList Attributes => _attributes; +#endregion - //Automatic + #region Automatic internal ParameterBuilder(CommandBuilder command) { _preconditions = new List(); @@ -33,7 +35,9 @@ namespace Discord.Commands.Builders Command = command; } - //User-defined + #endregion + + #region User-defined internal ParameterBuilder(CommandBuilder command, string name, Type type) : this(command) { @@ -127,10 +131,11 @@ namespace Discord.Commands.Builders internal ParameterInfo Build(CommandInfo info) { - if ((TypeReader ?? (TypeReader = GetReader(ParameterType))) == null) + if ((TypeReader ??= GetReader(ParameterType)) == null) throw new InvalidOperationException($"No type reader found for type {ParameterType.Name}, one must be specified"); return new ParameterInfo(this, info, Command.Module.Service); } + #endregion } } diff --git a/src/Discord.Net.Commands/CommandService.cs b/src/Discord.Net.Commands/CommandService.cs index 8659b0130..db08d0d79 100644 --- a/src/Discord.Net.Commands/CommandService.cs +++ b/src/Discord.Net.Commands/CommandService.cs @@ -29,6 +29,7 @@ namespace Discord.Commands /// public class CommandService : IDisposable { + #region CommandService ///

/// Occurs when a command-related information is received. /// @@ -131,8 +132,9 @@ namespace Discord.Commands entityTypeReaders.Add((typeof(IUser), typeof(UserTypeReader<>))); _entityTypeReaders = entityTypeReaders.ToImmutable(); } + #endregion - //Modules + #region Modules public async Task CreateModuleAsync(string primaryAlias, Action buildFunc) { await _moduleLock.WaitAsync().ConfigureAwait(false); @@ -187,7 +189,7 @@ namespace Discord.Commands /// public async Task AddModuleAsync(Type type, IServiceProvider services) { - services = services ?? EmptyServiceProvider.Instance; + services ??= EmptyServiceProvider.Instance; await _moduleLock.WaitAsync().ConfigureAwait(false); try @@ -222,7 +224,7 @@ namespace Discord.Commands /// public async Task> AddModulesAsync(Assembly assembly, IServiceProvider services) { - services = services ?? EmptyServiceProvider.Instance; + services ??= EmptyServiceProvider.Instance; await _moduleLock.WaitAsync().ConfigureAwait(false); try @@ -322,8 +324,9 @@ namespace Discord.Commands return true; } + #endregion - //Type Readers + #region Type Readers /// /// Adds a custom to this for the supplied object /// type. @@ -448,8 +451,9 @@ namespace Discord.Commands } return null; } + #endregion - //Execution + #region Execution /// /// Searches for the command. /// @@ -503,7 +507,7 @@ namespace Discord.Commands /// public async Task ExecuteAsync(ICommandContext context, string input, IServiceProvider services, MultiMatchHandling multiMatchHandling = MultiMatchHandling.Exception) { - services = services ?? EmptyServiceProvider.Instance; + services ??= EmptyServiceProvider.Instance; var searchResult = Search(input); if (!searchResult.IsSuccess) @@ -598,11 +602,13 @@ namespace Discord.Commands //If we get this far, at least one parse was successful. Execute the most likely overload. var chosenOverload = successfulParses[0]; var result = await chosenOverload.Key.ExecuteAsync(context, chosenOverload.Value, services).ConfigureAwait(false); - if (!result.IsSuccess && !(result is RuntimeResult || result is ExecuteResult)) // succesful results raise the event in CommandInfo#ExecuteInternalAsync (have to raise it there b/c deffered execution) + if (!result.IsSuccess && !(result is RuntimeResult || result is ExecuteResult)) // successful results raise the event in CommandInfo#ExecuteInternalAsync (have to raise it there b/c deferred execution) await _commandExecutedEvent.InvokeAsync(chosenOverload.Key.Command, context, result); return result; } + #endregion + #region Dispose protected virtual void Dispose(bool disposing) { if (!_isDisposed) @@ -620,5 +626,6 @@ namespace Discord.Commands { Dispose(true); } + #endregion } } diff --git a/src/Discord.Net.Commands/Discord.Net.Commands.csproj b/src/Discord.Net.Commands/Discord.Net.Commands.csproj index 21869d91c..ec2795de2 100644 --- a/src/Discord.Net.Commands/Discord.Net.Commands.csproj +++ b/src/Discord.Net.Commands/Discord.Net.Commands.csproj @@ -12,4 +12,4 @@ - + \ No newline at end of file diff --git a/src/Discord.Net.Commands/Extensions/MessageExtensions.cs b/src/Discord.Net.Commands/Extensions/MessageExtensions.cs index f880e1d98..9aa83d418 100644 --- a/src/Discord.Net.Commands/Extensions/MessageExtensions.cs +++ b/src/Discord.Net.Commands/Extensions/MessageExtensions.cs @@ -51,8 +51,7 @@ namespace Discord.Commands if (endPos == -1) return false; if (text.Length < endPos + 2 || text[endPos + 1] != ' ') return false; //Must end in "> " - ulong userId; - if (!MentionUtils.TryParseUser(text.Substring(0, endPos + 1), out userId)) return false; + if (!MentionUtils.TryParseUser(text.Substring(0, endPos + 1), out ulong userId)) return false; if (userId == user.Id) { argPos = endPos + 2; diff --git a/src/Discord.Net.Commands/Info/CommandInfo.cs b/src/Discord.Net.Commands/Info/CommandInfo.cs index 3bcef9831..773c7c773 100644 --- a/src/Discord.Net.Commands/Info/CommandInfo.cs +++ b/src/Discord.Net.Commands/Info/CommandInfo.cs @@ -123,7 +123,7 @@ namespace Discord.Commands public async Task CheckPreconditionsAsync(ICommandContext context, IServiceProvider services = null) { - services = services ?? EmptyServiceProvider.Instance; + services ??= EmptyServiceProvider.Instance; async Task CheckGroups(IEnumerable preconditions, string type) { @@ -164,7 +164,7 @@ namespace Discord.Commands public async Task ParseAsync(ICommandContext context, int startIndex, SearchResult searchResult, PreconditionResult preconditionResult = null, IServiceProvider services = null) { - services = services ?? EmptyServiceProvider.Instance; + services ??= EmptyServiceProvider.Instance; if (!searchResult.IsSuccess) return ParseResult.FromError(searchResult); @@ -201,7 +201,7 @@ namespace Discord.Commands } public async Task ExecuteAsync(ICommandContext context, IEnumerable argList, IEnumerable paramList, IServiceProvider services) { - services = services ?? EmptyServiceProvider.Instance; + services ??= EmptyServiceProvider.Instance; try { diff --git a/src/Discord.Net.Commands/Info/ParameterInfo.cs b/src/Discord.Net.Commands/Info/ParameterInfo.cs index b435b301a..a6ba9dfde 100644 --- a/src/Discord.Net.Commands/Info/ParameterInfo.cs +++ b/src/Discord.Net.Commands/Info/ParameterInfo.cs @@ -75,7 +75,7 @@ namespace Discord.Commands public async Task CheckPreconditionsAsync(ICommandContext context, object arg, IServiceProvider services = null) { - services = services ?? EmptyServiceProvider.Instance; + services ??= EmptyServiceProvider.Instance; foreach (var precondition in Preconditions) { @@ -89,7 +89,7 @@ namespace Discord.Commands public async Task ParseAsync(ICommandContext context, string input, IServiceProvider services = null) { - services = services ?? EmptyServiceProvider.Instance; + services ??= EmptyServiceProvider.Instance; return await _reader.ReadAsync(context, input, services).ConfigureAwait(false); } diff --git a/src/Discord.Net.Commands/ModuleBase.cs b/src/Discord.Net.Commands/ModuleBase.cs index 6ec2db54d..3eddc11d2 100644 --- a/src/Discord.Net.Commands/ModuleBase.cs +++ b/src/Discord.Net.Commands/ModuleBase.cs @@ -16,6 +16,7 @@ namespace Discord.Commands public abstract class ModuleBase : IModuleBase where T : class, ICommandContext { + #region ModuleBase /// /// The underlying context of the command. /// @@ -35,10 +36,14 @@ namespace Discord.Commands /// Specifies if notifications are sent for mentioned users and roles in the . /// If null, all mentioned roles and users will be notified. /// + /// The request options for this request. /// The message references to be included. Used to reply to specific messages. - protected virtual async Task ReplyAsync(string message = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null) + /// The message components to be included with this message. Used for interactions. + /// A collection of stickers to send with the file. + /// A array of s to send with this response. Max 10. + protected virtual async Task ReplyAsync(string message = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) { - return await Context.Channel.SendMessageAsync(message, isTTS, embed, options, allowedMentions, messageReference).ConfigureAwait(false); + return await Context.Channel.SendMessageAsync(message, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); } /// /// The method to execute before executing the command. @@ -63,8 +68,9 @@ namespace Discord.Commands protected virtual void OnModuleBuilding(CommandService commandService, ModuleBuilder builder) { } + #endregion - //IModuleBase + #region IModuleBase void IModuleBase.SetContext(ICommandContext context) { var newValue = context as T; @@ -73,5 +79,6 @@ namespace Discord.Commands void IModuleBase.BeforeExecute(CommandInfo command) => BeforeExecute(command); void IModuleBase.AfterExecute(CommandInfo command) => AfterExecute(command); void IModuleBase.OnModuleBuilding(CommandService commandService, ModuleBuilder builder) => OnModuleBuilding(commandService, builder); + #endregion } } diff --git a/src/Discord.Net.Commands/RunMode.cs b/src/Discord.Net.Commands/RunMode.cs index 8e230b500..d6b49065b 100644 --- a/src/Discord.Net.Commands/RunMode.cs +++ b/src/Discord.Net.Commands/RunMode.cs @@ -8,7 +8,7 @@ namespace Discord.Commands public enum RunMode { /// - /// The default behaviour set in . + /// The default behavior set in . /// Default, /// diff --git a/src/Discord.Net.Core/CDN.cs b/src/Discord.Net.Core/CDN.cs index e1e8e5e1a..d6535a4f1 100644 --- a/src/Discord.Net.Core/CDN.cs +++ b/src/Discord.Net.Core/CDN.cs @@ -46,6 +46,32 @@ namespace Discord string extension = FormatToExtension(format, avatarId); return $"{DiscordConfig.CDNUrl}avatars/{userId}/{avatarId}.{extension}?size={size}"; } + + public static string GetGuildUserAvatarUrl(ulong userId, ulong guildId, string avatarId, ushort size, ImageFormat format) + { + if (avatarId == null) + return null; + string extension = FormatToExtension(format, avatarId); + return $"{DiscordConfig.CDNUrl}guilds/{guildId}/users/{userId}/avatars/{avatarId}.{extension}?size={size}"; + } + + /// + /// Returns a user banner URL. + /// + /// The user snowflake identifier. + /// The banner identifier. + /// The size of the image to return in horizontal pixels. This can be any power of two between 16 and 2048. + /// The format to return. + /// + /// A URL pointing to the user's banner in the specified size. + /// + public static string GetUserBannerUrl(ulong userId, string bannerId, ushort size, ImageFormat format) + { + if (bannerId == null) + return null; + string extension = FormatToExtension(format, bannerId); + return $"{DiscordConfig.CDNUrl}banners/{userId}/{bannerId}.{extension}?size={size}"; + } /// /// Returns the default user avatar URL. /// @@ -68,6 +94,16 @@ namespace Discord public static string GetGuildIconUrl(ulong guildId, string iconId) => iconId != null ? $"{DiscordConfig.CDNUrl}icons/{guildId}/{iconId}.jpg" : null; /// + /// Returns a guild role's icon URL. + /// + /// The role identifier. + /// The icon hash. + /// + /// A URL pointing to the guild role's icon. + /// + public static string GetGuildRoleIconUrl(ulong roleId, string roleHash) + => roleHash != null ? $"{DiscordConfig.CDNUrl}role-icons/{roleId}/{roleHash}.png" : null; + /// /// Returns a guild splash URL. /// /// The guild snowflake identifier. @@ -103,15 +139,17 @@ namespace Discord /// /// The guild snowflake identifier. /// The banner image identifier. + /// The format to return. /// The size of the image to return in horizontal pixels. This can be any power of two between 16 and 2048 inclusive. /// /// A URL pointing to the guild's banner image. /// - public static string GetGuildBannerUrl(ulong guildId, string bannerId, ushort? size = null) + public static string GetGuildBannerUrl(ulong guildId, string bannerId, ImageFormat format, ushort? size = null) { - if (!string.IsNullOrEmpty(bannerId)) - return $"{DiscordConfig.CDNUrl}banners/{guildId}/{bannerId}.jpg" + (size.HasValue ? $"?size={size}" : string.Empty); - return null; + if (string.IsNullOrEmpty(bannerId)) + return null; + string extension = FormatToExtension(format, bannerId); + return $"{DiscordConfig.CDNUrl}banners/{guildId}/{bannerId}.{extension}" + (size.HasValue ? $"?size={size}" : string.Empty); } /// /// Returns an emoji URL. @@ -159,23 +197,39 @@ namespace Discord public static string GetSpotifyDirectUrl(string trackId) => $"https://open.spotify.com/track/{trackId}"; + /// + /// Gets a stickers url based off the id and format. + /// + /// The id of the sticker. + /// The format of the sticker. + /// + /// A URL to the sticker. + /// + public static string GetStickerUrl(ulong stickerId, StickerFormatType format = StickerFormatType.Png) + => $"{DiscordConfig.CDNUrl}stickers/{stickerId}.{FormatToExtension(format)}"; + + private static string FormatToExtension(StickerFormatType format) + { + return format switch + { + StickerFormatType.None or StickerFormatType.Png or StickerFormatType.Apng => "png", // In the case of the Sticker endpoint, the sticker will be available as PNG if its format_type is PNG or APNG, and as Lottie if its format_type is LOTTIE. + StickerFormatType.Lottie => "lottie", + _ => throw new ArgumentException(nameof(format)), + }; + } + private static string FormatToExtension(ImageFormat format, string imageId) { if (format == ImageFormat.Auto) format = imageId.StartsWith("a_") ? ImageFormat.Gif : ImageFormat.Png; - switch (format) + return format switch { - case ImageFormat.Gif: - return "gif"; - case ImageFormat.Jpeg: - return "jpeg"; - case ImageFormat.Png: - return "png"; - case ImageFormat.WebP: - return "webp"; - default: - throw new ArgumentException(nameof(format)); - } + ImageFormat.Gif => "gif", + ImageFormat.Jpeg => "jpeg", + ImageFormat.Png => "png", + ImageFormat.WebP => "webp", + _ => throw new ArgumentException(nameof(format)), + }; } } } diff --git a/src/Discord.Net.Core/Discord.Net.Core.csproj b/src/Discord.Net.Core/Discord.Net.Core.csproj index bc513390c..29868e1c7 100644 --- a/src/Discord.Net.Core/Discord.Net.Core.csproj +++ b/src/Discord.Net.Core/Discord.Net.Core.csproj @@ -1,4 +1,4 @@ - + @@ -16,4 +16,4 @@ all - + \ No newline at end of file diff --git a/src/Discord.Net.Core/DiscordConfig.cs b/src/Discord.Net.Core/DiscordConfig.cs index da8525644..d5951bd07 100644 --- a/src/Discord.Net.Core/DiscordConfig.cs +++ b/src/Discord.Net.Core/DiscordConfig.cs @@ -94,6 +94,13 @@ namespace Discord /// The maximum number of users that can be gotten per-batch. /// public const int MaxUsersPerBatch = 1000; + /// + /// Returns the max users allowed to be in a request for guild event users. + /// + /// + /// The maximum number of users that can be gotten per-batch. + /// + public const int MaxGuildEventUsersPerBatch = 100; /// /// Returns the max guilds allowed to be in a request. /// @@ -158,5 +165,17 @@ namespace Discord /// clock. Your system will still need a stable clock. /// public bool UseSystemClock { get; set; } = true; + + /// + /// Gets or sets whether or not the internal experation check uses the system date + /// + snowflake date to check if an interaction can be responded to. + /// + /// + /// If set to then the CreatedAt property in an interaction + /// will be set to when it was received instead of the snowflakes date. + ///
+ /// This will still require a stable clock on your system. + ///
+ public bool UseInteractionSnowflakeDate { get; set; } = true; } } diff --git a/src/Discord.Net.Core/DiscordErrorCode.cs b/src/Discord.Net.Core/DiscordErrorCode.cs new file mode 100644 index 000000000..5a5223b93 --- /dev/null +++ b/src/Discord.Net.Core/DiscordErrorCode.cs @@ -0,0 +1,197 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord +{ + /// + /// Represents a set of json error codes received by discord. + /// + public enum DiscordErrorCode + { + GeneralError = 0, + + #region UnknownXYZ (10XXX) + UnknownAccount = 10001, + UnknownApplication = 10002, + UnknownChannel = 10003, + UnknownGuild = 10004, + UnknownIntegration = 10005, + UnknownInvite = 10006, + UnknownMember = 10007, + UnknownMessage = 10008, + UnknownPermissionOverwrite = 10009, + UnknownProvider = 10010, + UnknownRole = 10011, + UnknownToken = 10012, + UnknownUser = 10013, + UnknownEmoji = 10014, + UnknownWebhook = 10015, + UnknownWebhookService = 10016, + UnknownSession = 10020, + UnknownBan = 10026, + UnknownSKU = 10027, + UnknownStoreListing = 10028, + UnknownEntitlement = 10029, + UnknownBuild = 10030, + UnknownLobby = 10031, + UnknownBranch = 10032, + UnknownStoreDirectoryLayout = 10033, + UnknownRedistributable = 10036, + UnknownGiftCode = 10038, + UnknownStream = 10049, + UnknownPremiumServerSubscribeCooldown = 10050, + UnknownGuildTemplate = 10057, + UnknownDiscoverableServerCategory = 10059, + UnknownSticker = 10060, + UnknownInteraction = 10062, + UnknownApplicationCommand = 10063, + UnknownApplicationCommandPermissions = 10066, + UnknownStageInstance = 10067, + UnknownGuildMemberVerificationForm = 10068, + UnknownGuildWelcomeScreen = 10069, + UnknownGuildScheduledEvent = 10070, + UnknownGuildScheduledEventUser = 10071, + #endregion + + #region General Actions (20XXX) + BotsCannotUse = 20001, + OnlyBotsCanUse = 20002, + CannotSendExplicitContent = 20009, + ApplicationActionUnauthorized = 20012, + ActionSlowmode = 20016, + OnlyOwnerAction = 20018, + AnnouncementEditRatelimit = 20022, + ChannelWriteRatelimit = 20028, + WordsNotAllowed = 20031, + GuildPremiumTooLow = 20035, + #endregion + + #region Numeric Limits Reached (30XXX) + MaximumGuildsReached = 30001, + MaximumFriendsReached = 30002, + MaximumPinsReached = 30003, + MaximumRecipientsReached = 30004, + MaximumGuildRolesReached = 30005, + MaximumWebhooksReached = 30007, + MaximumEmojisReached = 30008, + MaximumReactionsReached = 30010, + MaximumGuildChannelsReached = 30013, + MaximumAttachmentsReached = 30015, + MaximumInvitesReached = 30016, + MaximumAnimatedEmojisReached = 30018, + MaximumServerMembersReached = 30019, + MaximumServerCategoriesReached = 30030, + GuildTemplateAlreadyExists = 30031, + MaximumThreadMembersReached = 30033, + MaximumBansForNonGuildMembersReached = 30035, + MaximumBanFetchesReached = 30037, + MaximumUncompleteGuildScheduledEvents = 30038, + MaximumStickersReached = 30039, + MaximumPruneRequestReached = 30040, + MaximumGuildWigitsReached = 30042, + #endregion + + #region General Request Errors (40XXX) + TokenUnauthorized = 40001, + InvalidVerification = 40002, + OpeningDMTooFast = 40003, + RequestEntityTooLarge = 40005, + FeatureDisabled = 40006, + UserBanned = 40007, + TargetUserNotInVoice = 40032, + MessageAlreadyCrossposted = 40033, + ApplicationNameAlreadyExists = 40041, + #endregion + + #region Action Preconditions/Checks (50XXX) + MissingPermissions = 50001, + InvalidAccountType = 50002, + CannotExecuteForDM = 50003, + GuildWigitDisabled = 50004, + CannotEditOtherUsersMessage = 50005, + CannotSendEmptyMessage = 50006, + CannotSendMessageToUser = 50007, + CannotSendMessageToVoiceChannel = 50008, + ChannelVerificationTooHight = 50009, + OAuth2ApplicationDoesntHaveBot = 50010, + OAuth2ApplicationLimitReached = 50011, + InvalidOAuth2State = 50012, + InsufficientPermissions = 50013, + InvalidAuthenticationToken = 50014, + NoteTooLong = 50015, + ProvidedMessageDeleteCountOutOfBounds = 50016, + InvalidPinChannel = 50019, + InvalidInvite = 50020, + CannotExecuteOnSystemMessage = 50021, + CannotExecuteOnChannelType = 50024, + InvalidOAuth2Token = 50025, + MissingOAuth2Scope = 50026, + InvalidWebhookToken = 50027, + InvalidRole = 50028, + InvalidRecipients = 50033, + BulkDeleteMessageTooOld = 50034, + InvalidFormBody = 50035, + InviteAcceptedForGuildThatBotIsntIn = 50036, + InvalidAPIVersion = 50041, + FileUploadTooBig = 50045, + InvalidFileUpload = 50046, + CannotSelfRedeemGift = 50054, + PaymentSourceRequiredForGift = 50070, + CannotDeleteRequiredCommunityChannel = 50074, + InvalidSticker = 50081, + CannotExecuteOnArchivedThread = 50083, + InvalidThreadNotificationSettings = 50084, + BeforeValueEarlierThanThreadCreation = 50085, + ServerLocaleUnavailable = 50095, + ServerRequiresMonetization = 50097, + ServerRequiresBoosts = 50101, + + #endregion + + #region 2FA (60XXX) + Requires2FA = 60003, + #endregion + + #region User Searches (80XXX) + NoUsersWithTag = 80004, + #endregion + + #region Reactions (90XXX) + ReactionBlocked = 90001, + #endregion + + #region API Status (130XXX) + APIOverloaded = 130000, + #endregion + + #region Stage Errors (150XXX) + StageAlreadyOpened = 150006, + #endregion + + #region Reply and Thread Errors (160XXX) + CannotReplyWithoutReadMessageHistory = 160002, + MessageAlreadyContainsThread = 160004, + ThreadIsLocked = 160005, + MaximumActiveThreadsReached = 160006, + MaximumAnnouncementThreadsReached = 160007, + #endregion + + #region Sticker Uploads (170XXX) + InvalidJSONLottie = 170001, + LottieCantContainRasters = 170002, + StickerMaximumFramerateExceeded = 170003, + StickerMaximumFrameCountExceeded = 170004, + LottieMaximumDimentionsExceeded = 170005, + StickerFramerateBoundsExceeed = 170006, + StickerAnimationDurationTooLong = 170007, + #endregion + + #region Guild Scheduled Events + CannotUpdateFinishedEvent = 180000, + FailedStageCreation = 180002, + #endregion + } +} diff --git a/src/Discord.Net.Core/DiscordJsonError.cs b/src/Discord.Net.Core/DiscordJsonError.cs new file mode 100644 index 000000000..fdf82ea0c --- /dev/null +++ b/src/Discord.Net.Core/DiscordJsonError.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord +{ + /// + /// Represents a generic parsed json error received from discord after performing a rest request. + /// + public struct DiscordJsonError + { + /// + /// Gets the json path of the error. + /// + public string Path { get; } + + /// + /// Gets a collection of errors associated with the specific property at the path. + /// + public IReadOnlyCollection Errors { get; } + + internal DiscordJsonError(string path, DiscordError[] errors) + { + Path = path; + Errors = errors.ToImmutableArray(); + } + } + + /// + /// Represents an error with a property. + /// + public struct DiscordError + { + /// + /// Gets the code of the error. + /// + public string Code { get; } + + /// + /// Gets the message describing what went wrong. + /// + public string Message { get; } + + internal DiscordError(string code, string message) + { + Code = code; + Message = message; + } + } +} diff --git a/src/Discord.Net.Core/Entities/Activities/ActivityProperties.cs b/src/Discord.Net.Core/Entities/Activities/ActivityProperties.cs index a7d13235f..15a79dff6 100644 --- a/src/Discord.Net.Core/Entities/Activities/ActivityProperties.cs +++ b/src/Discord.Net.Core/Entities/Activities/ActivityProperties.cs @@ -33,6 +33,18 @@ namespace Discord /// /// Indicates that a user can play this song. /// - Play = 0b100000 + Play = 0b100000, + /// + /// Indicates that a user is playing an activity in a voice channel with friends. + /// + PartyPrivacyFriends = 0b1000000, + /// + /// Indicates that a user is playing an activity in a voice channel. + /// + PartyPrivacyVoiceChannel = 0b10000000, + /// + /// Indicates that a user is playing an activity in a voice channel. + /// + Embedded = 0b10000000 } } diff --git a/src/Discord.Net.Core/Entities/Activities/ActivityType.cs b/src/Discord.Net.Core/Entities/Activities/ActivityType.cs index 8c44f49e3..1f67886eb 100644 --- a/src/Discord.Net.Core/Entities/Activities/ActivityType.cs +++ b/src/Discord.Net.Core/Entities/Activities/ActivityType.cs @@ -25,5 +25,9 @@ namespace Discord /// The user has set a custom status. ///
CustomStatus = 4, + /// + /// The user is competing in a game. + /// + Competing = 5, } } diff --git a/src/Discord.Net.Core/Entities/ApplicationFlags.cs b/src/Discord.Net.Core/Entities/ApplicationFlags.cs new file mode 100644 index 000000000..1ede4257d --- /dev/null +++ b/src/Discord.Net.Core/Entities/ApplicationFlags.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord +{ + /// + /// Represents public flags for an application. + /// + public enum ApplicationFlags + { + GatewayPresence = 1 << 12, + GatewayPresenceLimited = 1 << 13, + GatewayGuildMembers = 1 << 14, + GatewayGuildMembersLimited = 1 << 15, + VerificationPendingGuildLimit = 1 << 16, + Embedded = 1 << 17, + GatewayMessageContent = 1 << 18, + GatewayMessageContentLimited = 1 << 19 + } +} diff --git a/src/Discord.Net.Core/Entities/ApplicationInstallParams.cs b/src/Discord.Net.Core/Entities/ApplicationInstallParams.cs new file mode 100644 index 000000000..180592f1e --- /dev/null +++ b/src/Discord.Net.Core/Entities/ApplicationInstallParams.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord +{ + /// + /// Represents install parameters for an application. + /// + public class ApplicationInstallParams + { + /// + /// Gets the scopes to install this application. + /// + public IReadOnlyCollection Scopes { get; } + + /// + /// Gets the default permissions to install this application + /// + public GuildPermission? Permission { get; } + + internal ApplicationInstallParams(string[] scopes, GuildPermission? permission) + { + Scopes = scopes.ToImmutableArray(); + Permission = permission; + } + } +} diff --git a/src/Discord.Net.Core/Entities/AuditLogs/ActionType.cs b/src/Discord.Net.Core/Entities/AuditLogs/ActionType.cs index 1728b2021..5092b4e7f 100644 --- a/src/Discord.Net.Core/Entities/AuditLogs/ActionType.cs +++ b/src/Discord.Net.Core/Entities/AuditLogs/ActionType.cs @@ -142,5 +142,55 @@ namespace Discord /// A message was unpinned from this guild. ///
MessageUnpinned = 75, + + /// + /// A integration was created + /// + IntegrationCreated = 80, + /// + /// A integration was updated + /// + IntegrationUpdated = 81, + /// + /// An integration was deleted + /// + IntegrationDeleted = 82, + /// + /// A stage instance was created. + /// + StageInstanceCreated = 83, + /// + /// A stage instance was updated. + /// + StageInstanceUpdated = 84, + /// + /// A stage instance was deleted. + /// + StageInstanceDeleted = 85, + + /// + /// A sticker was created. + /// + StickerCreated = 90, + /// + /// A sticker was updated. + /// + StickerUpdated = 91, + /// + /// A sticker was deleted. + /// + StickerDeleted = 92, + /// + /// A thread was created. + /// + ThreadCreate = 110, + /// + /// A thread was updated. + /// + ThreadUpdate = 111, + /// + /// A thread was deleted. + /// + ThreadDelete = 112 } } diff --git a/src/Discord.Net.Core/Entities/Channels/ChannelType.cs b/src/Discord.Net.Core/Entities/Channels/ChannelType.cs index 6dd910ba6..e60bd5031 100644 --- a/src/Discord.Net.Core/Entities/Channels/ChannelType.cs +++ b/src/Discord.Net.Core/Entities/Channels/ChannelType.cs @@ -14,6 +14,18 @@ namespace Discord /// The channel is a category channel. Category = 4, /// The channel is a news channel. - News = 5 + News = 5, + /// The channel is a store channel. + Store = 6, + /// The channel is a temporary thread channel under a news channel. + NewsThread = 10, + /// The channel is a temporary thread channel under a text channel. + PublicThread = 11, + /// The channel is a private temporary thread channel under a text channel. + PrivateThread = 12, + /// The channel is a stage voice channel. + Stage = 13, + /// The channel is a guild directory used in hub servers. (Unreleased) + GuildDirectory = 14 } } diff --git a/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs b/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs index e60eb9c13..87dfb3460 100644 --- a/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs +++ b/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs @@ -28,11 +28,14 @@ namespace Discord /// If null, all mentioned roles and users will be notified. /// /// The message references to be included. Used to reply to specific messages. + /// The message components to be included with this message. Used for interactions. + /// A collection of stickers to send with the message. + /// A array of s to send with this response. Max 10. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null); + Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null); /// /// Sends a file to this message channel with an optional caption. /// @@ -65,11 +68,14 @@ namespace Discord /// If null, all mentioned roles and users will be notified. /// /// The message references to be included. Used to reply to specific messages. + /// The message components to be included with this message. Used for interactions. + /// A collection of stickers to send with the file. + /// A array of s to send with this response. Max 10. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null); + Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null); /// /// Sends a file to this message channel with an optional caption. /// @@ -99,11 +105,72 @@ namespace Discord /// If null, all mentioned roles and users will be notified. /// /// The message references to be included. Used to reply to specific messages. + /// The message components to be included with this message. Used for interactions. + /// A collection of stickers to send with the file. + /// A array of s to send with this response. Max 10. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null); + Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null); + /// + /// Sends a file to this message channel with an optional caption. + /// + /// + /// This method sends a file as if you are uploading an attachment directly from your Discord client. + /// + /// If you wish to upload an image and have it embedded in a embed, + /// you may upload the file and refer to the file with "attachment://filename.ext" in the + /// . See the example section for its usage. + /// + /// + /// The attachment containing the file and description. + /// The message to be sent. + /// Whether the message should be read aloud by Discord or not. + /// The to be sent. + /// The options to be used when sending the request. + /// + /// Specifies if notifications are sent for mentioned users and roles in the message . + /// If null, all mentioned roles and users will be notified. + /// + /// The message references to be included. Used to reply to specific messages. + /// The message components to be included with this message. Used for interactions. + /// A collection of stickers to send with the file. + /// A array of s to send with this response. Max 10. + /// + /// A task that represents an asynchronous send operation for delivering the message. The task result + /// contains the sent message. + /// + Task SendFileAsync(FileAttachment attachment, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null); + /// + /// Sends a collection of files to this message channel. + /// + /// + /// This method sends files as if you are uploading attachments directly from your Discord client. + /// + /// If you wish to upload an image and have it embedded in a embed, + /// you may upload the file and refer to the file with "attachment://filename.ext" in the + /// . See the example section for its usage. + /// + /// + /// A collection of attachments to upload. + /// The message to be sent. + /// Whether the message should be read aloud by Discord or not. + /// The to be sent. + /// The options to be used when sending the request. + /// + /// Specifies if notifications are sent for mentioned users and roles in the message . + /// If null, all mentioned roles and users will be notified. + /// + /// The message references to be included. Used to reply to specific messages. + /// The message components to be included with this message. Used for interactions. + /// A collection of stickers to send with the file. + /// A array of s to send with this response. Max 10. + /// + /// A task that represents an asynchronous send operation for delivering the message. The task result + /// contains the sent message. + /// + Task SendFilesAsync(IEnumerable attachments, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null); /// /// Gets a message from this message channel. diff --git a/src/Discord.Net.Core/Entities/Channels/INestedChannel.cs b/src/Discord.Net.Core/Entities/Channels/INestedChannel.cs index 2c9503db1..563acd4f8 100644 --- a/src/Discord.Net.Core/Entities/Channels/INestedChannel.cs +++ b/src/Discord.Net.Core/Entities/Channels/INestedChannel.cs @@ -12,7 +12,7 @@ namespace Discord /// Gets the parent (category) ID of this channel in the guild's channel list. /// /// - /// A representing the snowflake identifier of the parent of this channel; + /// A representing the snowflake identifier of the parent of this channel; /// null if none is set. /// ulong? CategoryId { get; } @@ -56,6 +56,50 @@ namespace Discord /// metadata object containing information for the created invite. /// Task CreateInviteAsync(int? maxAge = 86400, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null); + + /// + /// Creates a new invite to this channel. + /// + /// + /// The following example creates a new invite to this channel; the invite lasts for 12 hours and can only + /// be used 3 times throughout its lifespan. + /// + /// await guildChannel.CreateInviteAsync(maxAge: 43200, maxUses: 3); + /// + /// + /// The id of the embedded application to open for this invite. + /// The time (in seconds) until the invite expires. Set to null to never expire. + /// The max amount of times this invite may be used. Set to null to have unlimited uses. + /// If true, the user accepting this invite will be kicked from the guild after closing their client. + /// If true, don't try to reuse a similar invite (useful for creating many unique one time use invites). + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous invite creation operation. The task result contains an invite + /// metadata object containing information for the created invite. + /// + Task CreateInviteToApplicationAsync(ulong applicationId, int? maxAge = 86400, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null); + + /// + /// Creates a new invite to this channel. + /// + /// + /// The following example creates a new invite to this channel; the invite lasts for 12 hours and can only + /// be used 3 times throughout its lifespan. + /// + /// await guildChannel.CreateInviteAsync(maxAge: 43200, maxUses: 3); + /// + /// + /// The id of the user whose stream to display for this invite. + /// The time (in seconds) until the invite expires. Set to null to never expire. + /// The max amount of times this invite may be used. Set to null to have unlimited uses. + /// If true, the user accepting this invite will be kicked from the guild after closing their client. + /// If true, don't try to reuse a similar invite (useful for creating many unique one time use invites). + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous invite creation operation. The task result contains an invite + /// metadata object containing information for the created invite. + /// + Task CreateInviteToStreamAsync(IUser user, int? maxAge = 86400, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null); /// /// Gets a collection of all invites to this channel. /// B diff --git a/src/Discord.Net.Core/Entities/Channels/IStageChannel.cs b/src/Discord.Net.Core/Entities/Channels/IStageChannel.cs new file mode 100644 index 000000000..5e0be5b7e --- /dev/null +++ b/src/Discord.Net.Core/Entities/Channels/IStageChannel.cs @@ -0,0 +1,114 @@ +using System; +using System.Threading.Tasks; + +namespace Discord +{ + /// + /// Represents a generic Stage Channel. + /// + public interface IStageChannel : IVoiceChannel + { + /// + /// Gets the topic of the Stage instance. + /// + /// + /// If the stage isn't live then this property will be set to . + /// + string Topic { get; } + + /// + /// Gets the of the current stage. + /// + /// + /// If the stage isn't live then this property will be set to . + /// + StagePrivacyLevel? PrivacyLevel { get; } + + /// + /// Gets whether or not stage discovery is disabled. + /// + bool? IsDiscoverableDisabled { get; } + + /// + /// Gets whether or not the stage is live. + /// + bool IsLive { get; } + + /// + /// Starts the stage, creating a stage instance. + /// + /// The topic for the stage/ + /// The privacy level of the stage. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous start operation. + /// + Task StartStageAsync(string topic, StagePrivacyLevel privacyLevel = StagePrivacyLevel.GuildOnly, RequestOptions options = null); + + /// + /// Modifies the current stage instance. + /// + /// The properties to modify the stage instance with. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous modify operation. + /// + Task ModifyInstanceAsync(Action func, RequestOptions options = null); + + /// + /// Stops the stage, deleting the stage instance. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous stop operation. + /// + Task StopStageAsync(RequestOptions options = null); + + /// + /// Indicates that the bot would like to speak within a stage channel. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous request to speak operation. + /// + Task RequestToSpeakAsync(RequestOptions options = null); + + /// + /// Makes the current user become a speaker within a stage. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous speaker modify operation. + /// + Task BecomeSpeakerAsync(RequestOptions options = null); + + /// + /// Makes the current user a listener. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous stop operation. + /// + Task StopSpeakingAsync(RequestOptions options = null); + + /// + /// Makes a user a speaker within a stage. + /// + /// The user to make the speaker. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous move operation. + /// + Task MoveToSpeakerAsync(IGuildUser user, RequestOptions options = null); + + /// + /// Removes a user from speaking. + /// + /// The user to remove from speaking. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous remove operation. + /// + Task RemoveFromSpeakerAsync(IGuildUser user, RequestOptions options = null); + } +} diff --git a/src/Discord.Net.Core/Entities/Channels/ITextChannel.cs b/src/Discord.Net.Core/Entities/Channels/ITextChannel.cs index a2baf6990..ae0fe674b 100644 --- a/src/Discord.Net.Core/Entities/Channels/ITextChannel.cs +++ b/src/Discord.Net.Core/Entities/Channels/ITextChannel.cs @@ -114,5 +114,40 @@ namespace Discord /// of webhooks that is available in this channel. /// Task> GetWebhooksAsync(RequestOptions options = null); + + /// + /// Creates a thread within this . + /// + /// + /// When is the thread type will be based off of the + /// channel its created in. When called on a , it creates a . + /// When called on a , it creates a . The id of the created + /// thread will be the same as the id of the message, and as such a message can only have a + /// single thread created from it. + /// + /// The name of the thread. + /// + /// The type of the thread. + /// + /// Note: This parameter is not used if the parameter is not specified. + /// + /// + /// + /// The duration on which this thread archives after. + /// + /// Note: Options and + /// are only available for guilds that are boosted. You can check in the to see if the + /// guild has the THREE_DAY_THREAD_ARCHIVE and SEVEN_DAY_THREAD_ARCHIVE. + /// + /// + /// The message which to start the thread from. + /// Whether non-moderators can add other non-moderators to a thread; only available when creating a private thread + /// The amount of seconds a user has to wait before sending another message (0-21600) + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous create operation. The task result contains a + /// + Task CreateThreadAsync(string name, ThreadType type = ThreadType.PublicThread, ThreadArchiveDuration autoArchiveDuration = ThreadArchiveDuration.OneDay, + IMessage message = null, bool? invitable = null, int? slowmode = null, RequestOptions options = null); } } diff --git a/src/Discord.Net.Core/Entities/Channels/IThreadChannel.cs b/src/Discord.Net.Core/Entities/Channels/IThreadChannel.cs new file mode 100644 index 000000000..50e46efa6 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Channels/IThreadChannel.cs @@ -0,0 +1,89 @@ +using System; +using System.Threading.Tasks; + +namespace Discord +{ + /// + /// Represents a thread channel inside of a guild. + /// + public interface IThreadChannel : ITextChannel + { + /// + /// Gets the type of the current thread channel. + /// + ThreadType Type { get; } + + /// + /// Gets whether or not the current user has joined this thread. + /// + bool HasJoined { get; } + + /// + /// Gets whether or not the current thread is archived. + /// + bool IsArchived { get; } + + /// + /// Gets the duration of time before the thread is automatically archived after no activity. + /// + ThreadArchiveDuration AutoArchiveDuration { get; } + + /// + /// Gets the timestamp when the thread's archive status was last changed, used for calculating recent activity. + /// + DateTimeOffset ArchiveTimestamp { get; } + + /// + /// Gets whether or not the current thread is locked. + /// + bool IsLocked { get; } + + /// + /// Gets an approximate count of users in a thread, stops counting after 50. + /// + int MemberCount { get; } + + /// + /// Gets an approximate count of messages in a thread, stops counting after 50. + /// + int MessageCount { get; } + + /// + /// Joins the current thread. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous join operation. + /// + Task JoinAsync(RequestOptions options = null); + + /// + /// Leaves the current thread. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous leave operation. + /// + Task LeaveAsync(RequestOptions options = null); + + /// + /// Adds a user to this thread. + /// + /// The to add. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous operation of adding a member to a thread. + /// + Task AddUserAsync(IGuildUser user, RequestOptions options = null); + + /// + /// Removes a user from this thread. + /// + /// The to remove from this thread. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous operation of removing a user from this thread. + /// + Task RemoveUserAsync(IGuildUser user, RequestOptions options = null); + } +} diff --git a/src/Discord.Net.Core/Entities/Channels/StageInstanceProperties.cs b/src/Discord.Net.Core/Entities/Channels/StageInstanceProperties.cs new file mode 100644 index 000000000..35201fe0f --- /dev/null +++ b/src/Discord.Net.Core/Entities/Channels/StageInstanceProperties.cs @@ -0,0 +1,18 @@ +namespace Discord +{ + /// + /// Represents properties to use when modifying a stage instance. + /// + public class StageInstanceProperties + { + /// + /// Gets or sets the topic of the stage. + /// + public Optional Topic { get; set; } + + /// + /// Gets or sets the privacy level of the stage. + /// + public Optional PrivacyLevel { get; set; } + } +} diff --git a/src/Discord.Net.Core/Entities/Channels/StagePrivacyLevel.cs b/src/Discord.Net.Core/Entities/Channels/StagePrivacyLevel.cs new file mode 100644 index 000000000..0582a3e52 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Channels/StagePrivacyLevel.cs @@ -0,0 +1,17 @@ +namespace Discord +{ + /// + /// Represents the privacy level of a stage. + /// + public enum StagePrivacyLevel + { + /// + /// The Stage instance is visible publicly, such as on Stage Discovery. + /// + Public = 1, + /// + /// The Stage instance is visible to only guild members. + /// + GuildOnly = 2 + } +} diff --git a/src/Discord.Net.Core/Entities/Channels/TextChannelProperties.cs b/src/Discord.Net.Core/Entities/Channels/TextChannelProperties.cs index 821f358f5..2dceb025c 100644 --- a/src/Discord.Net.Core/Entities/Channels/TextChannelProperties.cs +++ b/src/Discord.Net.Core/Entities/Channels/TextChannelProperties.cs @@ -38,5 +38,21 @@ namespace Discord /// /// Thrown if the value does not fall within [0, 21600]. public Optional SlowModeInterval { get; set; } + + /// + /// Gets or sets whether or not the thread is archived. + /// + public Optional Archived { get; set; } + + /// + /// Gets or sets whether or not the thread is locked. + /// + public Optional Locked { get; set; } + + /// + /// Gets or sets the auto archive duration. + /// + public Optional AutoArchiveDuration { get; set; } + } } diff --git a/src/Discord.Net.Core/Entities/Channels/ThreadArchiveDuration.cs b/src/Discord.Net.Core/Entities/Channels/ThreadArchiveDuration.cs new file mode 100644 index 000000000..2c8a0652c --- /dev/null +++ b/src/Discord.Net.Core/Entities/Channels/ThreadArchiveDuration.cs @@ -0,0 +1,34 @@ +namespace Discord +{ + /// + /// Represents the thread auto archive duration. + /// + public enum ThreadArchiveDuration + { + /// + /// One hour (60 minutes). + /// + OneHour = 60, + + /// + /// One day (1440 minutes). + /// + OneDay = 1440, + + /// + /// Three days (4320 minutes). + /// + /// This option is explicitly available to nitro users. + /// + /// + ThreeDays = 4320, + + /// + /// One week (10080 minutes). + /// + /// This option is explicitly available to nitro users. + /// + /// + OneWeek = 10080 + } +} diff --git a/src/Discord.Net.Core/Entities/Channels/ThreadType.cs b/src/Discord.Net.Core/Entities/Channels/ThreadType.cs new file mode 100644 index 000000000..379128d21 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Channels/ThreadType.cs @@ -0,0 +1,23 @@ +namespace Discord +{ + /// + /// Represents types of threads. + /// + public enum ThreadType + { + /// + /// Represents a temporary sub-channel within a GUILD_NEWS channel. + /// + NewsThread = 10, + + /// + /// Represents a temporary sub-channel within a GUILD_TEXT channel. + /// + PublicThread = 11, + + /// + /// Represents a temporary sub-channel within a GUILD_TEXT channel that is only viewable by those invited and those with the MANAGE_THREADS permission + /// + PrivateThread = 12 + } +} diff --git a/src/Discord.Net.Core/Entities/Channels/VoiceChannelProperties.cs b/src/Discord.Net.Core/Entities/Channels/VoiceChannelProperties.cs index fb4d47800..251a45c3d 100644 --- a/src/Discord.Net.Core/Entities/Channels/VoiceChannelProperties.cs +++ b/src/Discord.Net.Core/Entities/Channels/VoiceChannelProperties.cs @@ -13,5 +13,9 @@ namespace Discord /// Gets or sets the maximum number of users that can be present in a channel, or null if none. /// public Optional UserLimit { get; set; } + /// + /// Gets or sets the channel voice region id, automatic when set to . + /// + public Optional RTCRegion { get; set; } } } diff --git a/src/Discord.Net.Core/Entities/Emotes/Emoji.cs b/src/Discord.Net.Core/Entities/Emotes/Emoji.cs index d5e795094..15c20148e 100644 --- a/src/Discord.Net.Core/Entities/Emotes/Emoji.cs +++ b/src/Discord.Net.Core/Entities/Emotes/Emoji.cs @@ -1,3 +1,9 @@ +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Collections.ObjectModel; +using System.Linq; + namespace Discord { /// @@ -5,12 +11,11 @@ namespace Discord /// public class Emoji : IEmote { - // TODO: need to constrain this to Unicode-only emojis somehow - /// public string Name { get; } + /// - /// Gets the Unicode representation of this emote. + /// Gets the Unicode representation of this emoji. /// /// /// A string that resolves to . @@ -32,16 +37,5940 @@ namespace Discord /// The object to compare with the current object. public override bool Equals(object other) { - if (other == null) return false; - if (other == this) return true; + if (other == null) + return false; + + if (other == this) + return true; + + return other is Emoji otherEmoji && string.Equals(Name, otherEmoji.Name); + } + + /// Tries to parse an from its raw format. + /// The raw encoding of an emoji. For example: :heart: or ❤ + /// An emoji. + public static bool TryParse(string text, out Emoji result) + { + result = null; + if (string.IsNullOrWhiteSpace(text)) + return false; + + if (NamesAndUnicodes.ContainsKey(text)) + result = new Emoji(NamesAndUnicodes[text]); + + if (Unicodes.Contains(text)) + result = new Emoji(text); + + return result != null; + } - var otherEmoji = other as Emoji; - if (otherEmoji == null) return false; + /// Parse an from its raw format. + /// The raw encoding of an emoji. For example: :heart: or ❤ + /// String is not emoji or unicode! + public static Emoji Parse(string emojiStr) + { + if (!TryParse(emojiStr, out var emoji)) + throw new FormatException("String is not emoji name or unicode!"); - return string.Equals(Name, otherEmoji.Name); + return emoji; } /// public override int GetHashCode() => Name.GetHashCode(); + + private static IReadOnlyDictionary NamesAndUnicodes { get; } = new Dictionary + { + [",:("] = "\uD83D\uDE13", + [",:)"] = "\uD83D\uDE05", + [",:-("] = "\uD83D\uDE13", + [",:-)"] = "\uD83D\uDE05", + [",=("] = "\uD83D\uDE13", + [",=)"] = "\uD83D\uDE05", + [",=-("] = "\uD83D\uDE13", + [",=-)"] = "\uD83D\uDE05", + ["0:)"] = "\uD83D\uDE07", + ["0:-)"] = "\uD83D\uDE07", + ["0=)"] = "\uD83D\uDE07", + ["0=-)"] = "\uD83D\uDE07", + ["8-)"] = "\uD83D\uDE0E", + [":$"] = "\uD83D\uDE12", + [":'("] = "\uD83D\uDE22", + [":')"] = "\uD83D\uDE02", + [":'-("] = "\uD83D\uDE22", + [":'-)"] = "\uD83D\uDE02", + [":'-D"] = "\uD83D\uDE02", + [":'D"] = "\uD83D\uDE02", + [":("] = "\uD83D\uDE26", + [":)"] = "\uD83D\uDE42", + [":*"] = "\uD83D\uDE17", + [":+1:"] = "\uD83D\uDC4D", + [":+1::skin-tone-1:"] = "\uD83D\uDC4D\uD83C\uDFFB", + [":+1::skin-tone-2:"] = "\uD83D\uDC4D\uD83C\uDFFC", + [":+1::skin-tone-3:"] = "\uD83D\uDC4D\uD83C\uDFFD", + [":+1::skin-tone-4:"] = "\uD83D\uDC4D\uD83C\uDFFE", + [":+1::skin-tone-5:"] = "\uD83D\uDC4D\uD83C\uDFFF", + [":+1_tone1:"] = "\uD83D\uDC4D\uD83C\uDFFB", + [":+1_tone2:"] = "\uD83D\uDC4D\uD83C\uDFFC", + [":+1_tone3:"] = "\uD83D\uDC4D\uD83C\uDFFD", + [":+1_tone4:"] = "\uD83D\uDC4D\uD83C\uDFFE", + [":+1_tone5:"] = "\uD83D\uDC4D\uD83C\uDFFF", + [":,'("] = "\uD83D\uDE2D", + [":,'-("] = "\uD83D\uDE2D", + [":,("] = "\uD83D\uDE22", + [":,)"] = "\uD83D\uDE02", + [":,-("] = "\uD83D\uDE22", + [":,-)"] = "\uD83D\uDE02", + [":,-D"] = "\uD83D\uDE02", + [":,D"] = "\uD83D\uDE02", + [":-$"] = "\uD83D\uDE12", + [":-("] = "\uD83D\uDE26", + [":-)"] = "\uD83D\uDE42", + [":-*"] = "\uD83D\uDE17", + [":-/"] = "\uD83D\uDE15", + [":-1:"] = "\uD83D\uDC4E", + [":-1::skin-tone-1:"] = "\uD83D\uDC4E\uD83C\uDFFB", + [":-1::skin-tone-2:"] = "\uD83D\uDC4E\uD83C\uDFFC", + [":-1::skin-tone-3:"] = "\uD83D\uDC4E\uD83C\uDFFD", + [":-1::skin-tone-4:"] = "\uD83D\uDC4E\uD83C\uDFFE", + [":-1::skin-tone-5:"] = "\uD83D\uDC4E\uD83C\uDFFF", + [":-@"] = "\uD83D\uDE21", + [":-D"] = "\uD83D\uDE04", + [":-O"] = "\uD83D\uDE2E", + [":-P"] = "\uD83D\uDE1B", + [":-S"] = "\uD83D\uDE12", + [":-Z"] = "\uD83D\uDE12", + [":-\")"] = "\uD83D\uDE0A", + [":-\\"] = "\uD83D\uDE15", + [":-o"] = "\uD83D\uDE2E", + [":-|"] = "\uD83D\uDE10", + [":100:"] = "\uD83D\uDCAF", + [":1234:"] = "\uD83D\uDD22", + [":8ball:"] = "\uD83C\uDFB1", + [":@"] = "\uD83D\uDE21", + [":D"] = "\uD83D\uDE04", + [":O"] = "\uD83D\uDE2E", + [":P"] = "\uD83D\uDE1B", + [":\")"] = "\uD83D\uDE0A", + [":_1_tone1:"] = "\uD83D\uDC4E\uD83C\uDFFB", + [":_1_tone2:"] = "\uD83D\uDC4E\uD83C\uDFFC", + [":_1_tone3:"] = "\uD83D\uDC4E\uD83C\uDFFD", + [":_1_tone4:"] = "\uD83D\uDC4E\uD83C\uDFFE", + [":_1_tone5:"] = "\uD83D\uDC4E\uD83C\uDFFF", + [":a:"] = "\uD83C\uDD70️", + [":ab:"] = "\uD83C\uDD8E", + [":abacus:"] = "\uD83E\uDDEE", + [":abc:"] = "\uD83D\uDD24", + [":abcd:"] = "\uD83D\uDD21", + [":accept:"] = "\uD83C\uDE51", + [":adhesive_bandage:"] = "\uD83E\uDE79", + [":admission_tickets:"] = "\uD83C\uDF9F️", + [":adult:"] = "\uD83E\uDDD1", + [":adult::skin-tone-1:"] = "\uD83E\uDDD1\uD83C\uDFFB", + [":adult::skin-tone-2:"] = "\uD83E\uDDD1\uD83C\uDFFC", + [":adult::skin-tone-3:"] = "\uD83E\uDDD1\uD83C\uDFFD", + [":adult::skin-tone-4:"] = "\uD83E\uDDD1\uD83C\uDFFE", + [":adult::skin-tone-5:"] = "\uD83E\uDDD1\uD83C\uDFFF", + [":adult_dark_skin_tone:"] = "\uD83E\uDDD1\uD83C\uDFFF", + [":adult_light_skin_tone:"] = "\uD83E\uDDD1\uD83C\uDFFB", + [":adult_medium_dark_skin_tone:"] = "\uD83E\uDDD1\uD83C\uDFFE", + [":adult_medium_light_skin_tone:"] = "\uD83E\uDDD1\uD83C\uDFFC", + [":adult_medium_skin_tone:"] = "\uD83E\uDDD1\uD83C\uDFFD", + [":adult_tone1:"] = "\uD83E\uDDD1\uD83C\uDFFB", + [":adult_tone2:"] = "\uD83E\uDDD1\uD83C\uDFFC", + [":adult_tone3:"] = "\uD83E\uDDD1\uD83C\uDFFD", + [":adult_tone4:"] = "\uD83E\uDDD1\uD83C\uDFFE", + [":adult_tone5:"] = "\uD83E\uDDD1\uD83C\uDFFF", + [":aerial_tramway:"] = "\uD83D\uDEA1", + [":airplane:"] = "✈️", + [":airplane_arriving:"] = "\uD83D\uDEEC", + [":airplane_departure:"] = "\uD83D\uDEEB", + [":airplane_small:"] = "\uD83D\uDEE9️", + [":alarm_clock:"] = "⏰", + [":alembic:"] = "⚗️", + [":alien:"] = "\uD83D\uDC7D", + [":ambulance:"] = "\uD83D\uDE91", + [":amphora:"] = "\uD83C\uDFFA", + [":anchor:"] = "⚓", + [":angel:"] = "\uD83D\uDC7C", + [":angel::skin-tone-1:"] = "\uD83D\uDC7C\uD83C\uDFFB", + [":angel::skin-tone-2:"] = "\uD83D\uDC7C\uD83C\uDFFC", + [":angel::skin-tone-3:"] = "\uD83D\uDC7C\uD83C\uDFFD", + [":angel::skin-tone-4:"] = "\uD83D\uDC7C\uD83C\uDFFE", + [":angel::skin-tone-5:"] = "\uD83D\uDC7C\uD83C\uDFFF", + [":angel_tone1:"] = "\uD83D\uDC7C\uD83C\uDFFB", + [":angel_tone2:"] = "\uD83D\uDC7C\uD83C\uDFFC", + [":angel_tone3:"] = "\uD83D\uDC7C\uD83C\uDFFD", + [":angel_tone4:"] = "\uD83D\uDC7C\uD83C\uDFFE", + [":angel_tone5:"] = "\uD83D\uDC7C\uD83C\uDFFF", + [":anger:"] = "\uD83D\uDCA2", + [":anger_right:"] = "\uD83D\uDDEF️", + [":angry:"] = "\uD83D\uDE20", + [":anguished:"] = "\uD83D\uDE27", + [":ant:"] = "\uD83D\uDC1C", + [":apple:"] = "\uD83C\uDF4E", + [":aquarius:"] = "♒", + [":archery:"] = "\uD83C\uDFF9", + [":aries:"] = "♈", + [":arrow_backward:"] = "◀️", + [":arrow_double_down:"] = "⏬", + [":arrow_double_up:"] = "⏫", + [":arrow_down:"] = "⬇️", + [":arrow_down_small:"] = "\uD83D\uDD3D", + [":arrow_forward:"] = "▶️", + [":arrow_heading_down:"] = "⤵️", + [":arrow_heading_up:"] = "⤴️", + [":arrow_left:"] = "⬅️", + [":arrow_lower_left:"] = "↙️", + [":arrow_lower_right:"] = "↘️", + [":arrow_right:"] = "➡️", + [":arrow_right_hook:"] = "↪️", + [":arrow_up:"] = "⬆️", + [":arrow_up_down:"] = "↕️", + [":arrow_up_small:"] = "\uD83D\uDD3C", + [":arrow_upper_left:"] = "↖️", + [":arrow_upper_right:"] = "↗️", + [":arrows_clockwise:"] = "\uD83D\uDD03", + [":arrows_counterclockwise:"] = "\uD83D\uDD04", + [":art:"] = "\uD83C\uDFA8", + [":articulated_lorry:"] = "\uD83D\uDE9B", + [":asterisk:"] = "*️⃣", + [":astonished:"] = "\uD83D\uDE32", + [":athletic_shoe:"] = "\uD83D\uDC5F", + [":atm:"] = "\uD83C\uDFE7", + [":atom:"] = "⚛️", + [":atom_symbol:"] = "⚛️", + [":auto_rickshaw:"] = "\uD83D\uDEFA", + [":avocado:"] = "\uD83E\uDD51", + [":axe:"] = "\uD83E\uDE93", + [":b:"] = "\uD83C\uDD71️", + [":baby:"] = "\uD83D\uDC76", + [":baby::skin-tone-1:"] = "\uD83D\uDC76\uD83C\uDFFB", + [":baby::skin-tone-2:"] = "\uD83D\uDC76\uD83C\uDFFC", + [":baby::skin-tone-3:"] = "\uD83D\uDC76\uD83C\uDFFD", + [":baby::skin-tone-4:"] = "\uD83D\uDC76\uD83C\uDFFE", + [":baby::skin-tone-5:"] = "\uD83D\uDC76\uD83C\uDFFF", + [":baby_bottle:"] = "\uD83C\uDF7C", + [":baby_chick:"] = "\uD83D\uDC24", + [":baby_symbol:"] = "\uD83D\uDEBC", + [":baby_tone1:"] = "\uD83D\uDC76\uD83C\uDFFB", + [":baby_tone2:"] = "\uD83D\uDC76\uD83C\uDFFC", + [":baby_tone3:"] = "\uD83D\uDC76\uD83C\uDFFD", + [":baby_tone4:"] = "\uD83D\uDC76\uD83C\uDFFE", + [":baby_tone5:"] = "\uD83D\uDC76\uD83C\uDFFF", + [":back:"] = "\uD83D\uDD19", + [":back_of_hand:"] = "\uD83E\uDD1A", + [":back_of_hand::skin-tone-1:"] = "\uD83E\uDD1A\uD83C\uDFFB", + [":back_of_hand::skin-tone-2:"] = "\uD83E\uDD1A\uD83C\uDFFC", + [":back_of_hand::skin-tone-3:"] = "\uD83E\uDD1A\uD83C\uDFFD", + [":back_of_hand::skin-tone-4:"] = "\uD83E\uDD1A\uD83C\uDFFE", + [":back_of_hand::skin-tone-5:"] = "\uD83E\uDD1A\uD83C\uDFFF", + [":back_of_hand_tone1:"] = "\uD83E\uDD1A\uD83C\uDFFB", + [":back_of_hand_tone2:"] = "\uD83E\uDD1A\uD83C\uDFFC", + [":back_of_hand_tone3:"] = "\uD83E\uDD1A\uD83C\uDFFD", + [":back_of_hand_tone4:"] = "\uD83E\uDD1A\uD83C\uDFFE", + [":back_of_hand_tone5:"] = "\uD83E\uDD1A\uD83C\uDFFF", + [":bacon:"] = "\uD83E\uDD53", + [":badger:"] = "\uD83E\uDDA1", + [":badminton:"] = "\uD83C\uDFF8", + [":bagel:"] = "\uD83E\uDD6F", + [":baggage_claim:"] = "\uD83D\uDEC4", + [":baguette_bread:"] = "\uD83E\uDD56", + [":ballet_shoes:"] = "\uD83E\uDE70", + [":balloon:"] = "\uD83C\uDF88", + [":ballot_box:"] = "\uD83D\uDDF3️", + [":ballot_box_with_ballot:"] = "\uD83D\uDDF3️", + [":ballot_box_with_check:"] = "☑️", + [":bamboo:"] = "\uD83C\uDF8D", + [":banana:"] = "\uD83C\uDF4C", + [":bangbang:"] = "‼️", + [":banjo:"] = "\uD83E\uDE95", + [":bank:"] = "\uD83C\uDFE6", + [":bar_chart:"] = "\uD83D\uDCCA", + [":barber:"] = "\uD83D\uDC88", + [":baseball:"] = "⚾", + [":basket:"] = "\uD83E\uDDFA", + [":basketball:"] = "\uD83C\uDFC0", + [":basketball_player:"] = "⛹️", + [":basketball_player::skin-tone-1:"] = "⛹\uD83C\uDFFB", + [":basketball_player::skin-tone-2:"] = "⛹\uD83C\uDFFC", + [":basketball_player::skin-tone-3:"] = "⛹\uD83C\uDFFD", + [":basketball_player::skin-tone-4:"] = "⛹\uD83C\uDFFE", + [":basketball_player::skin-tone-5:"] = "⛹\uD83C\uDFFF", + [":basketball_player_tone1:"] = "⛹\uD83C\uDFFB", + [":basketball_player_tone2:"] = "⛹\uD83C\uDFFC", + [":basketball_player_tone3:"] = "⛹\uD83C\uDFFD", + [":basketball_player_tone4:"] = "⛹\uD83C\uDFFE", + [":basketball_player_tone5:"] = "⛹\uD83C\uDFFF", + [":bat:"] = "\uD83E\uDD87", + [":bath:"] = "\uD83D\uDEC0", + [":bath::skin-tone-1:"] = "\uD83D\uDEC0\uD83C\uDFFB", + [":bath::skin-tone-2:"] = "\uD83D\uDEC0\uD83C\uDFFC", + [":bath::skin-tone-3:"] = "\uD83D\uDEC0\uD83C\uDFFD", + [":bath::skin-tone-4:"] = "\uD83D\uDEC0\uD83C\uDFFE", + [":bath::skin-tone-5:"] = "\uD83D\uDEC0\uD83C\uDFFF", + [":bath_tone1:"] = "\uD83D\uDEC0\uD83C\uDFFB", + [":bath_tone2:"] = "\uD83D\uDEC0\uD83C\uDFFC", + [":bath_tone3:"] = "\uD83D\uDEC0\uD83C\uDFFD", + [":bath_tone4:"] = "\uD83D\uDEC0\uD83C\uDFFE", + [":bath_tone5:"] = "\uD83D\uDEC0\uD83C\uDFFF", + [":bathtub:"] = "\uD83D\uDEC1", + [":battery:"] = "\uD83D\uDD0B", + [":beach:"] = "\uD83C\uDFD6️", + [":beach_umbrella:"] = "⛱️", + [":beach_with_umbrella:"] = "\uD83C\uDFD6️", + [":bear:"] = "\uD83D\uDC3B", + [":bearded_person:"] = "\uD83E\uDDD4", + [":bearded_person::skin-tone-1:"] = "\uD83E\uDDD4\uD83C\uDFFB", + [":bearded_person::skin-tone-2:"] = "\uD83E\uDDD4\uD83C\uDFFC", + [":bearded_person::skin-tone-3:"] = "\uD83E\uDDD4\uD83C\uDFFD", + [":bearded_person::skin-tone-4:"] = "\uD83E\uDDD4\uD83C\uDFFE", + [":bearded_person::skin-tone-5:"] = "\uD83E\uDDD4\uD83C\uDFFF", + [":bearded_person_dark_skin_tone:"] = "\uD83E\uDDD4\uD83C\uDFFF", + [":bearded_person_light_skin_tone:"] = "\uD83E\uDDD4\uD83C\uDFFB", + [":bearded_person_medium_dark_skin_tone:"] = "\uD83E\uDDD4\uD83C\uDFFE", + [":bearded_person_medium_light_skin_tone:"] = "\uD83E\uDDD4\uD83C\uDFFC", + [":bearded_person_medium_skin_tone:"] = "\uD83E\uDDD4\uD83C\uDFFD", + [":bearded_person_tone1:"] = "\uD83E\uDDD4\uD83C\uDFFB", + [":bearded_person_tone2:"] = "\uD83E\uDDD4\uD83C\uDFFC", + [":bearded_person_tone3:"] = "\uD83E\uDDD4\uD83C\uDFFD", + [":bearded_person_tone4:"] = "\uD83E\uDDD4\uD83C\uDFFE", + [":bearded_person_tone5:"] = "\uD83E\uDDD4\uD83C\uDFFF", + [":bed:"] = "\uD83D\uDECF️", + [":bee:"] = "\uD83D\uDC1D", + [":beer:"] = "\uD83C\uDF7A", + [":beers:"] = "\uD83C\uDF7B", + [":beetle:"] = "\uD83D\uDC1E", + [":beginner:"] = "\uD83D\uDD30", + [":bell:"] = "\uD83D\uDD14", + [":bellhop:"] = "\uD83D\uDECE️", + [":bellhop_bell:"] = "\uD83D\uDECE️", + [":bento:"] = "\uD83C\uDF71", + [":beverage_box:"] = "\uD83E\uDDC3", + [":bicyclist:"] = "\uD83D\uDEB4", + [":bicyclist::skin-tone-1:"] = "\uD83D\uDEB4\uD83C\uDFFB", + [":bicyclist::skin-tone-2:"] = "\uD83D\uDEB4\uD83C\uDFFC", + [":bicyclist::skin-tone-3:"] = "\uD83D\uDEB4\uD83C\uDFFD", + [":bicyclist::skin-tone-4:"] = "\uD83D\uDEB4\uD83C\uDFFE", + [":bicyclist::skin-tone-5:"] = "\uD83D\uDEB4\uD83C\uDFFF", + [":bicyclist_tone1:"] = "\uD83D\uDEB4\uD83C\uDFFB", + [":bicyclist_tone2:"] = "\uD83D\uDEB4\uD83C\uDFFC", + [":bicyclist_tone3:"] = "\uD83D\uDEB4\uD83C\uDFFD", + [":bicyclist_tone4:"] = "\uD83D\uDEB4\uD83C\uDFFE", + [":bicyclist_tone5:"] = "\uD83D\uDEB4\uD83C\uDFFF", + [":bike:"] = "\uD83D\uDEB2", + [":bikini:"] = "\uD83D\uDC59", + [":billed_cap:"] = "\uD83E\uDDE2", + [":biohazard:"] = "☣️", + [":biohazard_sign:"] = "☣️", + [":bird:"] = "\uD83D\uDC26", + [":birthday:"] = "\uD83C\uDF82", + [":black_circle:"] = "⚫", + [":black_heart:"] = "\uD83D\uDDA4", + [":black_joker:"] = "\uD83C\uDCCF", + [":black_large_square:"] = "⬛", + [":black_medium_small_square:"] = "◾", + [":black_medium_square:"] = "◼️", + [":black_nib:"] = "✒️", + [":black_small_square:"] = "▪️", + [":black_square_button:"] = "\uD83D\uDD32", + [":blond_haired_man:"] = "\uD83D\uDC71\u200D♂️", + [":blond_haired_man::skin-tone-1:"] = "\uD83D\uDC71\uD83C\uDFFB\u200D♂️", + [":blond_haired_man::skin-tone-2:"] = "\uD83D\uDC71\uD83C\uDFFC\u200D♂️", + [":blond_haired_man::skin-tone-3:"] = "\uD83D\uDC71\uD83C\uDFFD\u200D♂️", + [":blond_haired_man::skin-tone-4:"] = "\uD83D\uDC71\uD83C\uDFFE\u200D♂️", + [":blond_haired_man::skin-tone-5:"] = "\uD83D\uDC71\uD83C\uDFFF\u200D♂️", + [":blond_haired_man_dark_skin_tone:"] = "\uD83D\uDC71\uD83C\uDFFF\u200D♂️", + [":blond_haired_man_light_skin_tone:"] = "\uD83D\uDC71\uD83C\uDFFB\u200D♂️", + [":blond_haired_man_medium_dark_skin_tone:"] = "\uD83D\uDC71\uD83C\uDFFE\u200D♂️", + [":blond_haired_man_medium_light_skin_tone:"] = "\uD83D\uDC71\uD83C\uDFFC\u200D♂️", + [":blond_haired_man_medium_skin_tone:"] = "\uD83D\uDC71\uD83C\uDFFD\u200D♂️", + [":blond_haired_man_tone1:"] = "\uD83D\uDC71\uD83C\uDFFB\u200D♂️", + [":blond_haired_man_tone2:"] = "\uD83D\uDC71\uD83C\uDFFC\u200D♂️", + [":blond_haired_man_tone3:"] = "\uD83D\uDC71\uD83C\uDFFD\u200D♂️", + [":blond_haired_man_tone4:"] = "\uD83D\uDC71\uD83C\uDFFE\u200D♂️", + [":blond_haired_man_tone5:"] = "\uD83D\uDC71\uD83C\uDFFF\u200D♂️", + [":blond_haired_person:"] = "\uD83D\uDC71", + [":blond_haired_person::skin-tone-1:"] = "\uD83D\uDC71\uD83C\uDFFB", + [":blond_haired_person::skin-tone-2:"] = "\uD83D\uDC71\uD83C\uDFFC", + [":blond_haired_person::skin-tone-3:"] = "\uD83D\uDC71\uD83C\uDFFD", + [":blond_haired_person::skin-tone-4:"] = "\uD83D\uDC71\uD83C\uDFFE", + [":blond_haired_person::skin-tone-5:"] = "\uD83D\uDC71\uD83C\uDFFF", + [":blond_haired_person_tone1:"] = "\uD83D\uDC71\uD83C\uDFFB", + [":blond_haired_person_tone2:"] = "\uD83D\uDC71\uD83C\uDFFC", + [":blond_haired_person_tone3:"] = "\uD83D\uDC71\uD83C\uDFFD", + [":blond_haired_person_tone4:"] = "\uD83D\uDC71\uD83C\uDFFE", + [":blond_haired_person_tone5:"] = "\uD83D\uDC71\uD83C\uDFFF", + [":blond_haired_woman:"] = "\uD83D\uDC71\u200D♀️", + [":blond_haired_woman::skin-tone-1:"] = "\uD83D\uDC71\uD83C\uDFFB\u200D♀️", + [":blond_haired_woman::skin-tone-2:"] = "\uD83D\uDC71\uD83C\uDFFC\u200D♀️", + [":blond_haired_woman::skin-tone-3:"] = "\uD83D\uDC71\uD83C\uDFFD\u200D♀️", + [":blond_haired_woman::skin-tone-4:"] = "\uD83D\uDC71\uD83C\uDFFE\u200D♀️", + [":blond_haired_woman::skin-tone-5:"] = "\uD83D\uDC71\uD83C\uDFFF\u200D♀️", + [":blond_haired_woman_dark_skin_tone:"] = "\uD83D\uDC71\uD83C\uDFFF\u200D♀️", + [":blond_haired_woman_light_skin_tone:"] = "\uD83D\uDC71\uD83C\uDFFB\u200D♀️", + [":blond_haired_woman_medium_dark_skin_tone:"] = "\uD83D\uDC71\uD83C\uDFFE\u200D♀️", + [":blond_haired_woman_medium_light_skin_tone:"] = "\uD83D\uDC71\uD83C\uDFFC\u200D♀️", + [":blond_haired_woman_medium_skin_tone:"] = "\uD83D\uDC71\uD83C\uDFFD\u200D♀️", + [":blond_haired_woman_tone1:"] = "\uD83D\uDC71\uD83C\uDFFB\u200D♀️", + [":blond_haired_woman_tone2:"] = "\uD83D\uDC71\uD83C\uDFFC\u200D♀️", + [":blond_haired_woman_tone3:"] = "\uD83D\uDC71\uD83C\uDFFD\u200D♀️", + [":blond_haired_woman_tone4:"] = "\uD83D\uDC71\uD83C\uDFFE\u200D♀️", + [":blond_haired_woman_tone5:"] = "\uD83D\uDC71\uD83C\uDFFF\u200D♀️", + [":blossom:"] = "\uD83C\uDF3C", + [":blowfish:"] = "\uD83D\uDC21", + [":blue_book:"] = "\uD83D\uDCD8", + [":blue_car:"] = "\uD83D\uDE99", + [":blue_circle:"] = "\uD83D\uDD35", + [":blue_heart:"] = "\uD83D\uDC99", + [":blue_square:"] = "\uD83D\uDFE6", + [":blush:"] = "\uD83D\uDE0A", + [":boar:"] = "\uD83D\uDC17", + [":bomb:"] = "\uD83D\uDCA3", + [":bone:"] = "\uD83E\uDDB4", + [":book:"] = "\uD83D\uDCD6", + [":bookmark:"] = "\uD83D\uDD16", + [":bookmark_tabs:"] = "\uD83D\uDCD1", + [":books:"] = "\uD83D\uDCDA", + [":boom:"] = "\uD83D\uDCA5", + [":boot:"] = "\uD83D\uDC62", + [":bottle_with_popping_cork:"] = "\uD83C\uDF7E", + [":bouquet:"] = "\uD83D\uDC90", + [":bow:"] = "\uD83D\uDE47", + [":bow::skin-tone-1:"] = "\uD83D\uDE47\uD83C\uDFFB", + [":bow::skin-tone-2:"] = "\uD83D\uDE47\uD83C\uDFFC", + [":bow::skin-tone-3:"] = "\uD83D\uDE47\uD83C\uDFFD", + [":bow::skin-tone-4:"] = "\uD83D\uDE47\uD83C\uDFFE", + [":bow::skin-tone-5:"] = "\uD83D\uDE47\uD83C\uDFFF", + [":bow_and_arrow:"] = "\uD83C\uDFF9", + [":bow_tone1:"] = "\uD83D\uDE47\uD83C\uDFFB", + [":bow_tone2:"] = "\uD83D\uDE47\uD83C\uDFFC", + [":bow_tone3:"] = "\uD83D\uDE47\uD83C\uDFFD", + [":bow_tone4:"] = "\uD83D\uDE47\uD83C\uDFFE", + [":bow_tone5:"] = "\uD83D\uDE47\uD83C\uDFFF", + [":bowl_with_spoon:"] = "\uD83E\uDD63", + [":bowling:"] = "\uD83C\uDFB3", + [":boxing_glove:"] = "\uD83E\uDD4A", + [":boxing_gloves:"] = "\uD83E\uDD4A", + [":boy:"] = "\uD83D\uDC66", + [":boy::skin-tone-1:"] = "\uD83D\uDC66\uD83C\uDFFB", + [":boy::skin-tone-2:"] = "\uD83D\uDC66\uD83C\uDFFC", + [":boy::skin-tone-3:"] = "\uD83D\uDC66\uD83C\uDFFD", + [":boy::skin-tone-4:"] = "\uD83D\uDC66\uD83C\uDFFE", + [":boy::skin-tone-5:"] = "\uD83D\uDC66\uD83C\uDFFF", + [":boy_tone1:"] = "\uD83D\uDC66\uD83C\uDFFB", + [":boy_tone2:"] = "\uD83D\uDC66\uD83C\uDFFC", + [":boy_tone3:"] = "\uD83D\uDC66\uD83C\uDFFD", + [":boy_tone4:"] = "\uD83D\uDC66\uD83C\uDFFE", + [":boy_tone5:"] = "\uD83D\uDC66\uD83C\uDFFF", + [":brain:"] = "\uD83E\uDDE0", + [":bread:"] = "\uD83C\uDF5E", + [":breast_feeding:"] = "\uD83E\uDD31", + [":breast_feeding::skin-tone-1:"] = "\uD83E\uDD31\uD83C\uDFFB", + [":breast_feeding::skin-tone-2:"] = "\uD83E\uDD31\uD83C\uDFFC", + [":breast_feeding::skin-tone-3:"] = "\uD83E\uDD31\uD83C\uDFFD", + [":breast_feeding::skin-tone-4:"] = "\uD83E\uDD31\uD83C\uDFFE", + [":breast_feeding::skin-tone-5:"] = "\uD83E\uDD31\uD83C\uDFFF", + [":breast_feeding_dark_skin_tone:"] = "\uD83E\uDD31\uD83C\uDFFF", + [":breast_feeding_light_skin_tone:"] = "\uD83E\uDD31\uD83C\uDFFB", + [":breast_feeding_medium_dark_skin_tone:"] = "\uD83E\uDD31\uD83C\uDFFE", + [":breast_feeding_medium_light_skin_tone:"] = "\uD83E\uDD31\uD83C\uDFFC", + [":breast_feeding_medium_skin_tone:"] = "\uD83E\uDD31\uD83C\uDFFD", + [":breast_feeding_tone1:"] = "\uD83E\uDD31\uD83C\uDFFB", + [":breast_feeding_tone2:"] = "\uD83E\uDD31\uD83C\uDFFC", + [":breast_feeding_tone3:"] = "\uD83E\uDD31\uD83C\uDFFD", + [":breast_feeding_tone4:"] = "\uD83E\uDD31\uD83C\uDFFE", + [":breast_feeding_tone5:"] = "\uD83E\uDD31\uD83C\uDFFF", + [":bricks:"] = "\uD83E\uDDF1", + [":bride_with_veil:"] = "\uD83D\uDC70", + [":bride_with_veil::skin-tone-1:"] = "\uD83D\uDC70\uD83C\uDFFB", + [":bride_with_veil::skin-tone-2:"] = "\uD83D\uDC70\uD83C\uDFFC", + [":bride_with_veil::skin-tone-3:"] = "\uD83D\uDC70\uD83C\uDFFD", + [":bride_with_veil::skin-tone-4:"] = "\uD83D\uDC70\uD83C\uDFFE", + [":bride_with_veil::skin-tone-5:"] = "\uD83D\uDC70\uD83C\uDFFF", + [":bride_with_veil_tone1:"] = "\uD83D\uDC70\uD83C\uDFFB", + [":bride_with_veil_tone2:"] = "\uD83D\uDC70\uD83C\uDFFC", + [":bride_with_veil_tone3:"] = "\uD83D\uDC70\uD83C\uDFFD", + [":bride_with_veil_tone4:"] = "\uD83D\uDC70\uD83C\uDFFE", + [":bride_with_veil_tone5:"] = "\uD83D\uDC70\uD83C\uDFFF", + [":bridge_at_night:"] = "\uD83C\uDF09", + [":briefcase:"] = "\uD83D\uDCBC", + [":briefs:"] = "\uD83E\uDE72", + [":broccoli:"] = "\uD83E\uDD66", + [":broken_heart:"] = "\uD83D\uDC94", + [":broom:"] = "\uD83E\uDDF9", + [":brown_circle:"] = "\uD83D\uDFE4", + [":brown_heart:"] = "\uD83E\uDD0E", + [":brown_square:"] = "\uD83D\uDFEB", + [":bug:"] = "\uD83D\uDC1B", + [":building_construction:"] = "\uD83C\uDFD7️", + [":bulb:"] = "\uD83D\uDCA1", + [":bullettrain_front:"] = "\uD83D\uDE85", + [":bullettrain_side:"] = "\uD83D\uDE84", + [":burrito:"] = "\uD83C\uDF2F", + [":bus:"] = "\uD83D\uDE8C", + [":busstop:"] = "\uD83D\uDE8F", + [":bust_in_silhouette:"] = "\uD83D\uDC64", + [":busts_in_silhouette:"] = "\uD83D\uDC65", + [":butter:"] = "\uD83E\uDDC8", + [":butterfly:"] = "\uD83E\uDD8B", + [":cactus:"] = "\uD83C\uDF35", + [":cake:"] = "\uD83C\uDF70", + [":calendar:"] = "\uD83D\uDCC6", + [":calendar_spiral:"] = "\uD83D\uDDD3️", + [":call_me:"] = "\uD83E\uDD19", + [":call_me::skin-tone-1:"] = "\uD83E\uDD19\uD83C\uDFFB", + [":call_me::skin-tone-2:"] = "\uD83E\uDD19\uD83C\uDFFC", + [":call_me::skin-tone-3:"] = "\uD83E\uDD19\uD83C\uDFFD", + [":call_me::skin-tone-4:"] = "\uD83E\uDD19\uD83C\uDFFE", + [":call_me::skin-tone-5:"] = "\uD83E\uDD19\uD83C\uDFFF", + [":call_me_hand:"] = "\uD83E\uDD19", + [":call_me_hand::skin-tone-1:"] = "\uD83E\uDD19\uD83C\uDFFB", + [":call_me_hand::skin-tone-2:"] = "\uD83E\uDD19\uD83C\uDFFC", + [":call_me_hand::skin-tone-3:"] = "\uD83E\uDD19\uD83C\uDFFD", + [":call_me_hand::skin-tone-4:"] = "\uD83E\uDD19\uD83C\uDFFE", + [":call_me_hand::skin-tone-5:"] = "\uD83E\uDD19\uD83C\uDFFF", + [":call_me_hand_tone1:"] = "\uD83E\uDD19\uD83C\uDFFB", + [":call_me_hand_tone2:"] = "\uD83E\uDD19\uD83C\uDFFC", + [":call_me_hand_tone3:"] = "\uD83E\uDD19\uD83C\uDFFD", + [":call_me_hand_tone4:"] = "\uD83E\uDD19\uD83C\uDFFE", + [":call_me_hand_tone5:"] = "\uD83E\uDD19\uD83C\uDFFF", + [":call_me_tone1:"] = "\uD83E\uDD19\uD83C\uDFFB", + [":call_me_tone2:"] = "\uD83E\uDD19\uD83C\uDFFC", + [":call_me_tone3:"] = "\uD83E\uDD19\uD83C\uDFFD", + [":call_me_tone4:"] = "\uD83E\uDD19\uD83C\uDFFE", + [":call_me_tone5:"] = "\uD83E\uDD19\uD83C\uDFFF", + [":calling:"] = "\uD83D\uDCF2", + [":camel:"] = "\uD83D\uDC2B", + [":camera:"] = "\uD83D\uDCF7", + [":camera_with_flash:"] = "\uD83D\uDCF8", + [":camping:"] = "\uD83C\uDFD5️", + [":cancer:"] = "♋", + [":candle:"] = "\uD83D\uDD6F️", + [":candy:"] = "\uD83C\uDF6C", + [":canned_food:"] = "\uD83E\uDD6B", + [":canoe:"] = "\uD83D\uDEF6", + [":capital_abcd:"] = "\uD83D\uDD20", + [":capricorn:"] = "♑", + [":card_box:"] = "\uD83D\uDDC3️", + [":card_file_box:"] = "\uD83D\uDDC3️", + [":card_index:"] = "\uD83D\uDCC7", + [":card_index_dividers:"] = "\uD83D\uDDC2️", + [":carousel_horse:"] = "\uD83C\uDFA0", + [":carrot:"] = "\uD83E\uDD55", + [":cartwheel:"] = "\uD83E\uDD38", + [":cartwheel::skin-tone-1:"] = "\uD83E\uDD38\uD83C\uDFFB", + [":cartwheel::skin-tone-2:"] = "\uD83E\uDD38\uD83C\uDFFC", + [":cartwheel::skin-tone-3:"] = "\uD83E\uDD38\uD83C\uDFFD", + [":cartwheel::skin-tone-4:"] = "\uD83E\uDD38\uD83C\uDFFE", + [":cartwheel::skin-tone-5:"] = "\uD83E\uDD38\uD83C\uDFFF", + [":cartwheel_tone1:"] = "\uD83E\uDD38\uD83C\uDFFB", + [":cartwheel_tone2:"] = "\uD83E\uDD38\uD83C\uDFFC", + [":cartwheel_tone3:"] = "\uD83E\uDD38\uD83C\uDFFD", + [":cartwheel_tone4:"] = "\uD83E\uDD38\uD83C\uDFFE", + [":cartwheel_tone5:"] = "\uD83E\uDD38\uD83C\uDFFF", + [":cat2:"] = "\uD83D\uDC08", + [":cat:"] = "\uD83D\uDC31", + [":cd:"] = "\uD83D\uDCBF", + [":chains:"] = "⛓️", + [":chair:"] = "\uD83E\uDE91", + [":champagne:"] = "\uD83C\uDF7E", + [":champagne_glass:"] = "\uD83E\uDD42", + [":chart:"] = "\uD83D\uDCB9", + [":chart_with_downwards_trend:"] = "\uD83D\uDCC9", + [":chart_with_upwards_trend:"] = "\uD83D\uDCC8", + [":checkered_flag:"] = "\uD83C\uDFC1", + [":cheese:"] = "\uD83E\uDDC0", + [":cheese_wedge:"] = "\uD83E\uDDC0", + [":cherries:"] = "\uD83C\uDF52", + [":cherry_blossom:"] = "\uD83C\uDF38", + [":chess_pawn:"] = "♟️", + [":chestnut:"] = "\uD83C\uDF30", + [":chicken:"] = "\uD83D\uDC14", + [":child:"] = "\uD83E\uDDD2", + [":child::skin-tone-1:"] = "\uD83E\uDDD2\uD83C\uDFFB", + [":child::skin-tone-2:"] = "\uD83E\uDDD2\uD83C\uDFFC", + [":child::skin-tone-3:"] = "\uD83E\uDDD2\uD83C\uDFFD", + [":child::skin-tone-4:"] = "\uD83E\uDDD2\uD83C\uDFFE", + [":child::skin-tone-5:"] = "\uD83E\uDDD2\uD83C\uDFFF", + [":child_dark_skin_tone:"] = "\uD83E\uDDD2\uD83C\uDFFF", + [":child_light_skin_tone:"] = "\uD83E\uDDD2\uD83C\uDFFB", + [":child_medium_dark_skin_tone:"] = "\uD83E\uDDD2\uD83C\uDFFE", + [":child_medium_light_skin_tone:"] = "\uD83E\uDDD2\uD83C\uDFFC", + [":child_medium_skin_tone:"] = "\uD83E\uDDD2\uD83C\uDFFD", + [":child_tone1:"] = "\uD83E\uDDD2\uD83C\uDFFB", + [":child_tone2:"] = "\uD83E\uDDD2\uD83C\uDFFC", + [":child_tone3:"] = "\uD83E\uDDD2\uD83C\uDFFD", + [":child_tone4:"] = "\uD83E\uDDD2\uD83C\uDFFE", + [":child_tone5:"] = "\uD83E\uDDD2\uD83C\uDFFF", + [":children_crossing:"] = "\uD83D\uDEB8", + [":chipmunk:"] = "\uD83D\uDC3F️", + [":chocolate_bar:"] = "\uD83C\uDF6B", + [":chopsticks:"] = "\uD83E\uDD62", + [":christmas_tree:"] = "\uD83C\uDF84", + [":church:"] = "⛪", + [":cinema:"] = "\uD83C\uDFA6", + [":circus_tent:"] = "\uD83C\uDFAA", + [":city_dusk:"] = "\uD83C\uDF06", + [":city_sunrise:"] = "\uD83C\uDF07", + [":city_sunset:"] = "\uD83C\uDF07", + [":cityscape:"] = "\uD83C\uDFD9️", + [":cl:"] = "\uD83C\uDD91", + [":clap:"] = "\uD83D\uDC4F", + [":clap::skin-tone-1:"] = "\uD83D\uDC4F\uD83C\uDFFB", + [":clap::skin-tone-2:"] = "\uD83D\uDC4F\uD83C\uDFFC", + [":clap::skin-tone-3:"] = "\uD83D\uDC4F\uD83C\uDFFD", + [":clap::skin-tone-4:"] = "\uD83D\uDC4F\uD83C\uDFFE", + [":clap::skin-tone-5:"] = "\uD83D\uDC4F\uD83C\uDFFF", + [":clap_tone1:"] = "\uD83D\uDC4F\uD83C\uDFFB", + [":clap_tone2:"] = "\uD83D\uDC4F\uD83C\uDFFC", + [":clap_tone3:"] = "\uD83D\uDC4F\uD83C\uDFFD", + [":clap_tone4:"] = "\uD83D\uDC4F\uD83C\uDFFE", + [":clap_tone5:"] = "\uD83D\uDC4F\uD83C\uDFFF", + [":clapper:"] = "\uD83C\uDFAC", + [":classical_building:"] = "\uD83C\uDFDB️", + [":clinking_glass:"] = "\uD83E\uDD42", + [":clipboard:"] = "\uD83D\uDCCB", + [":clock1030:"] = "\uD83D\uDD65", + [":clock10:"] = "\uD83D\uDD59", + [":clock1130:"] = "\uD83D\uDD66", + [":clock11:"] = "\uD83D\uDD5A", + [":clock1230:"] = "\uD83D\uDD67", + [":clock12:"] = "\uD83D\uDD5B", + [":clock130:"] = "\uD83D\uDD5C", + [":clock1:"] = "\uD83D\uDD50", + [":clock230:"] = "\uD83D\uDD5D", + [":clock2:"] = "\uD83D\uDD51", + [":clock330:"] = "\uD83D\uDD5E", + [":clock3:"] = "\uD83D\uDD52", + [":clock430:"] = "\uD83D\uDD5F", + [":clock4:"] = "\uD83D\uDD53", + [":clock530:"] = "\uD83D\uDD60", + [":clock5:"] = "\uD83D\uDD54", + [":clock630:"] = "\uD83D\uDD61", + [":clock6:"] = "\uD83D\uDD55", + [":clock730:"] = "\uD83D\uDD62", + [":clock7:"] = "\uD83D\uDD56", + [":clock830:"] = "\uD83D\uDD63", + [":clock8:"] = "\uD83D\uDD57", + [":clock930:"] = "\uD83D\uDD64", + [":clock9:"] = "\uD83D\uDD58", + [":clock:"] = "\uD83D\uDD70️", + [":closed_book:"] = "\uD83D\uDCD5", + [":closed_lock_with_key:"] = "\uD83D\uDD10", + [":closed_umbrella:"] = "\uD83C\uDF02", + [":cloud:"] = "☁️", + [":cloud_lightning:"] = "\uD83C\uDF29️", + [":cloud_rain:"] = "\uD83C\uDF27️", + [":cloud_snow:"] = "\uD83C\uDF28️", + [":cloud_tornado:"] = "\uD83C\uDF2A️", + [":cloud_with_lightning:"] = "\uD83C\uDF29️", + [":cloud_with_rain:"] = "\uD83C\uDF27️", + [":cloud_with_snow:"] = "\uD83C\uDF28️", + [":cloud_with_tornado:"] = "\uD83C\uDF2A️", + [":clown:"] = "\uD83E\uDD21", + [":clown_face:"] = "\uD83E\uDD21", + [":clubs:"] = "♣️", + [":coat:"] = "\uD83E\uDDE5", + [":cocktail:"] = "\uD83C\uDF78", + [":coconut:"] = "\uD83E\uDD65", + [":coffee:"] = "☕", + [":coffin:"] = "⚰️", + [":cold_face:"] = "\uD83E\uDD76", + [":cold_sweat:"] = "\uD83D\uDE30", + [":comet:"] = "☄️", + [":compass:"] = "\uD83E\uDDED", + [":compression:"] = "\uD83D\uDDDC️", + [":computer:"] = "\uD83D\uDCBB", + [":confetti_ball:"] = "\uD83C\uDF8A", + [":confounded:"] = "\uD83D\uDE16", + [":confused:"] = "\uD83D\uDE15", + [":congratulations:"] = "㊗️", + [":construction:"] = "\uD83D\uDEA7", + [":construction_site:"] = "\uD83C\uDFD7️", + [":construction_worker:"] = "\uD83D\uDC77", + [":construction_worker::skin-tone-1:"] = "\uD83D\uDC77\uD83C\uDFFB", + [":construction_worker::skin-tone-2:"] = "\uD83D\uDC77\uD83C\uDFFC", + [":construction_worker::skin-tone-3:"] = "\uD83D\uDC77\uD83C\uDFFD", + [":construction_worker::skin-tone-4:"] = "\uD83D\uDC77\uD83C\uDFFE", + [":construction_worker::skin-tone-5:"] = "\uD83D\uDC77\uD83C\uDFFF", + [":construction_worker_tone1:"] = "\uD83D\uDC77\uD83C\uDFFB", + [":construction_worker_tone2:"] = "\uD83D\uDC77\uD83C\uDFFC", + [":construction_worker_tone3:"] = "\uD83D\uDC77\uD83C\uDFFD", + [":construction_worker_tone4:"] = "\uD83D\uDC77\uD83C\uDFFE", + [":construction_worker_tone5:"] = "\uD83D\uDC77\uD83C\uDFFF", + [":control_knobs:"] = "\uD83C\uDF9B️", + [":convenience_store:"] = "\uD83C\uDFEA", + [":cookie:"] = "\uD83C\uDF6A", + [":cooking:"] = "\uD83C\uDF73", + [":cool:"] = "\uD83C\uDD92", + [":cop:"] = "\uD83D\uDC6E", + [":cop::skin-tone-1:"] = "\uD83D\uDC6E\uD83C\uDFFB", + [":cop::skin-tone-2:"] = "\uD83D\uDC6E\uD83C\uDFFC", + [":cop::skin-tone-3:"] = "\uD83D\uDC6E\uD83C\uDFFD", + [":cop::skin-tone-4:"] = "\uD83D\uDC6E\uD83C\uDFFE", + [":cop::skin-tone-5:"] = "\uD83D\uDC6E\uD83C\uDFFF", + [":cop_tone1:"] = "\uD83D\uDC6E\uD83C\uDFFB", + [":cop_tone2:"] = "\uD83D\uDC6E\uD83C\uDFFC", + [":cop_tone3:"] = "\uD83D\uDC6E\uD83C\uDFFD", + [":cop_tone4:"] = "\uD83D\uDC6E\uD83C\uDFFE", + [":cop_tone5:"] = "\uD83D\uDC6E\uD83C\uDFFF", + [":copyright:"] = "©️", + [":corn:"] = "\uD83C\uDF3D", + [":couch:"] = "\uD83D\uDECB️", + [":couch_and_lamp:"] = "\uD83D\uDECB️", + [":couple:"] = "\uD83D\uDC6B", + [":couple_mm:"] = "\uD83D\uDC68\u200D❤️\u200D\uD83D\uDC68", + [":couple_with_heart:"] = "\uD83D\uDC91", + [":couple_with_heart_mm:"] = "\uD83D\uDC68\u200D❤️\u200D\uD83D\uDC68", + [":couple_with_heart_woman_man:"] = "\uD83D\uDC69\u200D❤️\u200D\uD83D\uDC68", + [":couple_with_heart_ww:"] = "\uD83D\uDC69\u200D❤️\u200D\uD83D\uDC69", + [":couple_ww:"] = "\uD83D\uDC69\u200D❤️\u200D\uD83D\uDC69", + [":couplekiss:"] = "\uD83D\uDC8F", + [":couplekiss_mm:"] = "\uD83D\uDC68\u200D❤️\u200D\uD83D\uDC8B\u200D\uD83D\uDC68", + [":couplekiss_ww:"] = "\uD83D\uDC69\u200D❤️\u200D\uD83D\uDC8B\u200D\uD83D\uDC69", + [":cow2:"] = "\uD83D\uDC04", + [":cow:"] = "\uD83D\uDC2E", + [":cowboy:"] = "\uD83E\uDD20", + [":crab:"] = "\uD83E\uDD80", + [":crayon:"] = "\uD83D\uDD8D️", + [":credit_card:"] = "\uD83D\uDCB3", + [":crescent_moon:"] = "\uD83C\uDF19", + [":cricket:"] = "\uD83E\uDD97", + [":cricket_bat_ball:"] = "\uD83C\uDFCF", + [":cricket_game:"] = "\uD83C\uDFCF", + [":crocodile:"] = "\uD83D\uDC0A", + [":croissant:"] = "\uD83E\uDD50", + [":cross:"] = "✝️", + [":crossed_flags:"] = "\uD83C\uDF8C", + [":crossed_swords:"] = "⚔️", + [":crown:"] = "\uD83D\uDC51", + [":cruise_ship:"] = "\uD83D\uDEF3️", + [":cry:"] = "\uD83D\uDE22", + [":crying_cat_face:"] = "\uD83D\uDE3F", + [":crystal_ball:"] = "\uD83D\uDD2E", + [":cucumber:"] = "\uD83E\uDD52", + [":cup_with_straw:"] = "\uD83E\uDD64", + [":cupcake:"] = "\uD83E\uDDC1", + [":cupid:"] = "\uD83D\uDC98", + [":curling_stone:"] = "\uD83E\uDD4C", + [":curly_loop:"] = "➰", + [":currency_exchange:"] = "\uD83D\uDCB1", + [":curry:"] = "\uD83C\uDF5B", + [":custard:"] = "\uD83C\uDF6E", + [":customs:"] = "\uD83D\uDEC3", + [":cut_of_meat:"] = "\uD83E\uDD69", + [":cyclone:"] = "\uD83C\uDF00", + [":dagger:"] = "\uD83D\uDDE1️", + [":dagger_knife:"] = "\uD83D\uDDE1️", + [":dancer:"] = "\uD83D\uDC83", + [":dancer::skin-tone-1:"] = "\uD83D\uDC83\uD83C\uDFFB", + [":dancer::skin-tone-2:"] = "\uD83D\uDC83\uD83C\uDFFC", + [":dancer::skin-tone-3:"] = "\uD83D\uDC83\uD83C\uDFFD", + [":dancer::skin-tone-4:"] = "\uD83D\uDC83\uD83C\uDFFE", + [":dancer::skin-tone-5:"] = "\uD83D\uDC83\uD83C\uDFFF", + [":dancer_tone1:"] = "\uD83D\uDC83\uD83C\uDFFB", + [":dancer_tone2:"] = "\uD83D\uDC83\uD83C\uDFFC", + [":dancer_tone3:"] = "\uD83D\uDC83\uD83C\uDFFD", + [":dancer_tone4:"] = "\uD83D\uDC83\uD83C\uDFFE", + [":dancer_tone5:"] = "\uD83D\uDC83\uD83C\uDFFF", + [":dancers:"] = "\uD83D\uDC6F", + [":dango:"] = "\uD83C\uDF61", + [":dark_sunglasses:"] = "\uD83D\uDD76️", + [":dart:"] = "\uD83C\uDFAF", + [":dash:"] = "\uD83D\uDCA8", + [":date:"] = "\uD83D\uDCC5", + [":deaf_man:"] = "\uD83E\uDDCF\u200D♂️", + [":deaf_man::skin-tone-1:"] = "\uD83E\uDDCF\uD83C\uDFFB\u200D♂️", + [":deaf_man::skin-tone-2:"] = "\uD83E\uDDCF\uD83C\uDFFC\u200D♂️", + [":deaf_man::skin-tone-3:"] = "\uD83E\uDDCF\uD83C\uDFFD\u200D♂️", + [":deaf_man::skin-tone-4:"] = "\uD83E\uDDCF\uD83C\uDFFE\u200D♂️", + [":deaf_man::skin-tone-5:"] = "\uD83E\uDDCF\uD83C\uDFFF\u200D♂️", + [":deaf_man_dark_skin_tone:"] = "\uD83E\uDDCF\uD83C\uDFFF\u200D♂️", + [":deaf_man_light_skin_tone:"] = "\uD83E\uDDCF\uD83C\uDFFB\u200D♂️", + [":deaf_man_medium_dark_skin_tone:"] = "\uD83E\uDDCF\uD83C\uDFFE\u200D♂️", + [":deaf_man_medium_light_skin_tone:"] = "\uD83E\uDDCF\uD83C\uDFFC\u200D♂️", + [":deaf_man_medium_skin_tone:"] = "\uD83E\uDDCF\uD83C\uDFFD\u200D♂️", + [":deaf_man_tone1:"] = "\uD83E\uDDCF\uD83C\uDFFB\u200D♂️", + [":deaf_man_tone2:"] = "\uD83E\uDDCF\uD83C\uDFFC\u200D♂️", + [":deaf_man_tone3:"] = "\uD83E\uDDCF\uD83C\uDFFD\u200D♂️", + [":deaf_man_tone4:"] = "\uD83E\uDDCF\uD83C\uDFFE\u200D♂️", + [":deaf_man_tone5:"] = "\uD83E\uDDCF\uD83C\uDFFF\u200D♂️", + [":deaf_person:"] = "\uD83E\uDDCF", + [":deaf_person::skin-tone-1:"] = "\uD83E\uDDCF\uD83C\uDFFB", + [":deaf_person::skin-tone-2:"] = "\uD83E\uDDCF\uD83C\uDFFC", + [":deaf_person::skin-tone-3:"] = "\uD83E\uDDCF\uD83C\uDFFD", + [":deaf_person::skin-tone-4:"] = "\uD83E\uDDCF\uD83C\uDFFE", + [":deaf_person::skin-tone-5:"] = "\uD83E\uDDCF\uD83C\uDFFF", + [":deaf_person_dark_skin_tone:"] = "\uD83E\uDDCF\uD83C\uDFFF", + [":deaf_person_light_skin_tone:"] = "\uD83E\uDDCF\uD83C\uDFFB", + [":deaf_person_medium_dark_skin_tone:"] = "\uD83E\uDDCF\uD83C\uDFFE", + [":deaf_person_medium_light_skin_tone:"] = "\uD83E\uDDCF\uD83C\uDFFC", + [":deaf_person_medium_skin_tone:"] = "\uD83E\uDDCF\uD83C\uDFFD", + [":deaf_person_tone1:"] = "\uD83E\uDDCF\uD83C\uDFFB", + [":deaf_person_tone2:"] = "\uD83E\uDDCF\uD83C\uDFFC", + [":deaf_person_tone3:"] = "\uD83E\uDDCF\uD83C\uDFFD", + [":deaf_person_tone4:"] = "\uD83E\uDDCF\uD83C\uDFFE", + [":deaf_person_tone5:"] = "\uD83E\uDDCF\uD83C\uDFFF", + [":deaf_woman:"] = "\uD83E\uDDCF\u200D♀️", + [":deaf_woman::skin-tone-1:"] = "\uD83E\uDDCF\uD83C\uDFFB\u200D♀️", + [":deaf_woman::skin-tone-2:"] = "\uD83E\uDDCF\uD83C\uDFFC\u200D♀️", + [":deaf_woman::skin-tone-3:"] = "\uD83E\uDDCF\uD83C\uDFFD\u200D♀️", + [":deaf_woman::skin-tone-4:"] = "\uD83E\uDDCF\uD83C\uDFFE\u200D♀️", + [":deaf_woman::skin-tone-5:"] = "\uD83E\uDDCF\uD83C\uDFFF\u200D♀️", + [":deaf_woman_dark_skin_tone:"] = "\uD83E\uDDCF\uD83C\uDFFF\u200D♀️", + [":deaf_woman_light_skin_tone:"] = "\uD83E\uDDCF\uD83C\uDFFB\u200D♀️", + [":deaf_woman_medium_dark_skin_tone:"] = "\uD83E\uDDCF\uD83C\uDFFE\u200D♀️", + [":deaf_woman_medium_light_skin_tone:"] = "\uD83E\uDDCF\uD83C\uDFFC\u200D♀️", + [":deaf_woman_medium_skin_tone:"] = "\uD83E\uDDCF\uD83C\uDFFD\u200D♀️", + [":deaf_woman_tone1:"] = "\uD83E\uDDCF\uD83C\uDFFB\u200D♀️", + [":deaf_woman_tone2:"] = "\uD83E\uDDCF\uD83C\uDFFC\u200D♀️", + [":deaf_woman_tone3:"] = "\uD83E\uDDCF\uD83C\uDFFD\u200D♀️", + [":deaf_woman_tone4:"] = "\uD83E\uDDCF\uD83C\uDFFE\u200D♀️", + [":deaf_woman_tone5:"] = "\uD83E\uDDCF\uD83C\uDFFF\u200D♀️", + [":deciduous_tree:"] = "\uD83C\uDF33", + [":deer:"] = "\uD83E\uDD8C", + [":department_store:"] = "\uD83C\uDFEC", + [":derelict_house_building:"] = "\uD83C\uDFDA️", + [":desert:"] = "\uD83C\uDFDC️", + [":desert_island:"] = "\uD83C\uDFDD️", + [":desktop:"] = "\uD83D\uDDA5️", + [":desktop_computer:"] = "\uD83D\uDDA5️", + [":detective:"] = "\uD83D\uDD75️", + [":detective::skin-tone-1:"] = "\uD83D\uDD75\uD83C\uDFFB", + [":detective::skin-tone-2:"] = "\uD83D\uDD75\uD83C\uDFFC", + [":detective::skin-tone-3:"] = "\uD83D\uDD75\uD83C\uDFFD", + [":detective::skin-tone-4:"] = "\uD83D\uDD75\uD83C\uDFFE", + [":detective::skin-tone-5:"] = "\uD83D\uDD75\uD83C\uDFFF", + [":detective_tone1:"] = "\uD83D\uDD75\uD83C\uDFFB", + [":detective_tone2:"] = "\uD83D\uDD75\uD83C\uDFFC", + [":detective_tone3:"] = "\uD83D\uDD75\uD83C\uDFFD", + [":detective_tone4:"] = "\uD83D\uDD75\uD83C\uDFFE", + [":detective_tone5:"] = "\uD83D\uDD75\uD83C\uDFFF", + [":diamond_shape_with_a_dot_inside:"] = "\uD83D\uDCA0", + [":diamonds:"] = "♦️", + [":disappointed:"] = "\uD83D\uDE1E", + [":disappointed_relieved:"] = "\uD83D\uDE25", + [":dividers:"] = "\uD83D\uDDC2️", + [":diving_mask:"] = "\uD83E\uDD3F", + [":diya_lamp:"] = "\uD83E\uDE94", + [":dizzy:"] = "\uD83D\uDCAB", + [":dizzy_face:"] = "\uD83D\uDE35", + [":dna:"] = "\uD83E\uDDEC", + [":do_not_litter:"] = "\uD83D\uDEAF", + [":dog2:"] = "\uD83D\uDC15", + [":dog:"] = "\uD83D\uDC36", + [":dollar:"] = "\uD83D\uDCB5", + [":dolls:"] = "\uD83C\uDF8E", + [":dolphin:"] = "\uD83D\uDC2C", + [":door:"] = "\uD83D\uDEAA", + [":double_vertical_bar:"] = "⏸️", + [":doughnut:"] = "\uD83C\uDF69", + [":dove:"] = "\uD83D\uDD4A️", + [":dove_of_peace:"] = "\uD83D\uDD4A️", + [":dragon:"] = "\uD83D\uDC09", + [":dragon_face:"] = "\uD83D\uDC32", + [":dress:"] = "\uD83D\uDC57", + [":dromedary_camel:"] = "\uD83D\uDC2A", + [":drool:"] = "\uD83E\uDD24", + [":drooling_face:"] = "\uD83E\uDD24", + [":drop_of_blood:"] = "\uD83E\uDE78", + [":droplet:"] = "\uD83D\uDCA7", + [":drum:"] = "\uD83E\uDD41", + [":drum_with_drumsticks:"] = "\uD83E\uDD41", + [":duck:"] = "\uD83E\uDD86", + [":dumpling:"] = "\uD83E\uDD5F", + [":dvd:"] = "\uD83D\uDCC0", + [":e_mail:"] = "\uD83D\uDCE7", + [":eagle:"] = "\uD83E\uDD85", + [":ear:"] = "\uD83D\uDC42", + [":ear::skin-tone-1:"] = "\uD83D\uDC42\uD83C\uDFFB", + [":ear::skin-tone-2:"] = "\uD83D\uDC42\uD83C\uDFFC", + [":ear::skin-tone-3:"] = "\uD83D\uDC42\uD83C\uDFFD", + [":ear::skin-tone-4:"] = "\uD83D\uDC42\uD83C\uDFFE", + [":ear::skin-tone-5:"] = "\uD83D\uDC42\uD83C\uDFFF", + [":ear_of_rice:"] = "\uD83C\uDF3E", + [":ear_tone1:"] = "\uD83D\uDC42\uD83C\uDFFB", + [":ear_tone2:"] = "\uD83D\uDC42\uD83C\uDFFC", + [":ear_tone3:"] = "\uD83D\uDC42\uD83C\uDFFD", + [":ear_tone4:"] = "\uD83D\uDC42\uD83C\uDFFE", + [":ear_tone5:"] = "\uD83D\uDC42\uD83C\uDFFF", + [":ear_with_hearing_aid:"] = "\uD83E\uDDBB", + [":ear_with_hearing_aid::skin-tone-1:"] = "\uD83E\uDDBB\uD83C\uDFFB", + [":ear_with_hearing_aid::skin-tone-2:"] = "\uD83E\uDDBB\uD83C\uDFFC", + [":ear_with_hearing_aid::skin-tone-3:"] = "\uD83E\uDDBB\uD83C\uDFFD", + [":ear_with_hearing_aid::skin-tone-4:"] = "\uD83E\uDDBB\uD83C\uDFFE", + [":ear_with_hearing_aid::skin-tone-5:"] = "\uD83E\uDDBB\uD83C\uDFFF", + [":ear_with_hearing_aid_dark_skin_tone:"] = "\uD83E\uDDBB\uD83C\uDFFF", + [":ear_with_hearing_aid_light_skin_tone:"] = "\uD83E\uDDBB\uD83C\uDFFB", + [":ear_with_hearing_aid_medium_dark_skin_tone:"] = "\uD83E\uDDBB\uD83C\uDFFE", + [":ear_with_hearing_aid_medium_light_skin_tone:"] = "\uD83E\uDDBB\uD83C\uDFFC", + [":ear_with_hearing_aid_medium_skin_tone:"] = "\uD83E\uDDBB\uD83C\uDFFD", + [":ear_with_hearing_aid_tone1:"] = "\uD83E\uDDBB\uD83C\uDFFB", + [":ear_with_hearing_aid_tone2:"] = "\uD83E\uDDBB\uD83C\uDFFC", + [":ear_with_hearing_aid_tone3:"] = "\uD83E\uDDBB\uD83C\uDFFD", + [":ear_with_hearing_aid_tone4:"] = "\uD83E\uDDBB\uD83C\uDFFE", + [":ear_with_hearing_aid_tone5:"] = "\uD83E\uDDBB\uD83C\uDFFF", + [":earth_africa:"] = "\uD83C\uDF0D", + [":earth_americas:"] = "\uD83C\uDF0E", + [":earth_asia:"] = "\uD83C\uDF0F", + [":egg:"] = "\uD83E\uDD5A", + [":eggplant:"] = "\uD83C\uDF46", + [":eight:"] = "8️⃣", + [":eight_pointed_black_star:"] = "✴️", + [":eight_spoked_asterisk:"] = "✳️", + [":eject:"] = "⏏️", + [":eject_symbol:"] = "⏏️", + [":electric_plug:"] = "\uD83D\uDD0C", + [":elephant:"] = "\uD83D\uDC18", + [":elf:"] = "\uD83E\uDDDD", + [":elf::skin-tone-1:"] = "\uD83E\uDDDD\uD83C\uDFFB", + [":elf::skin-tone-2:"] = "\uD83E\uDDDD\uD83C\uDFFC", + [":elf::skin-tone-3:"] = "\uD83E\uDDDD\uD83C\uDFFD", + [":elf::skin-tone-4:"] = "\uD83E\uDDDD\uD83C\uDFFE", + [":elf::skin-tone-5:"] = "\uD83E\uDDDD\uD83C\uDFFF", + [":elf_dark_skin_tone:"] = "\uD83E\uDDDD\uD83C\uDFFF", + [":elf_light_skin_tone:"] = "\uD83E\uDDDD\uD83C\uDFFB", + [":elf_medium_dark_skin_tone:"] = "\uD83E\uDDDD\uD83C\uDFFE", + [":elf_medium_light_skin_tone:"] = "\uD83E\uDDDD\uD83C\uDFFC", + [":elf_medium_skin_tone:"] = "\uD83E\uDDDD\uD83C\uDFFD", + [":elf_tone1:"] = "\uD83E\uDDDD\uD83C\uDFFB", + [":elf_tone2:"] = "\uD83E\uDDDD\uD83C\uDFFC", + [":elf_tone3:"] = "\uD83E\uDDDD\uD83C\uDFFD", + [":elf_tone4:"] = "\uD83E\uDDDD\uD83C\uDFFE", + [":elf_tone5:"] = "\uD83E\uDDDD\uD83C\uDFFF", + [":email:"] = "\uD83D\uDCE7", + [":end:"] = "\uD83D\uDD1A", + [":england:"] = "\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67\uDB40\uDC7F", + [":envelope:"] = "✉️", + [":envelope_with_arrow:"] = "\uD83D\uDCE9", + [":euro:"] = "\uD83D\uDCB6", + [":european_castle:"] = "\uD83C\uDFF0", + [":european_post_office:"] = "\uD83C\uDFE4", + [":evergreen_tree:"] = "\uD83C\uDF32", + [":exclamation:"] = "❗", + [":expecting_woman:"] = "\uD83E\uDD30", + [":expecting_woman::skin-tone-1:"] = "\uD83E\uDD30\uD83C\uDFFB", + [":expecting_woman::skin-tone-2:"] = "\uD83E\uDD30\uD83C\uDFFC", + [":expecting_woman::skin-tone-3:"] = "\uD83E\uDD30\uD83C\uDFFD", + [":expecting_woman::skin-tone-4:"] = "\uD83E\uDD30\uD83C\uDFFE", + [":expecting_woman::skin-tone-5:"] = "\uD83E\uDD30\uD83C\uDFFF", + [":expecting_woman_tone1:"] = "\uD83E\uDD30\uD83C\uDFFB", + [":expecting_woman_tone2:"] = "\uD83E\uDD30\uD83C\uDFFC", + [":expecting_woman_tone3:"] = "\uD83E\uDD30\uD83C\uDFFD", + [":expecting_woman_tone4:"] = "\uD83E\uDD30\uD83C\uDFFE", + [":expecting_woman_tone5:"] = "\uD83E\uDD30\uD83C\uDFFF", + [":exploding_head:"] = "\uD83E\uDD2F", + [":expressionless:"] = "\uD83D\uDE11", + [":eye:"] = "\uD83D\uDC41️", + [":eye_in_speech_bubble:"] = "\uD83D\uDC41\u200D\uD83D\uDDE8", + [":eyeglasses:"] = "\uD83D\uDC53", + [":eyes:"] = "\uD83D\uDC40", + [":face_palm:"] = "\uD83E\uDD26", + [":face_palm::skin-tone-1:"] = "\uD83E\uDD26\uD83C\uDFFB", + [":face_palm::skin-tone-2:"] = "\uD83E\uDD26\uD83C\uDFFC", + [":face_palm::skin-tone-3:"] = "\uD83E\uDD26\uD83C\uDFFD", + [":face_palm::skin-tone-4:"] = "\uD83E\uDD26\uD83C\uDFFE", + [":face_palm::skin-tone-5:"] = "\uD83E\uDD26\uD83C\uDFFF", + [":face_palm_tone1:"] = "\uD83E\uDD26\uD83C\uDFFB", + [":face_palm_tone2:"] = "\uD83E\uDD26\uD83C\uDFFC", + [":face_palm_tone3:"] = "\uD83E\uDD26\uD83C\uDFFD", + [":face_palm_tone4:"] = "\uD83E\uDD26\uD83C\uDFFE", + [":face_palm_tone5:"] = "\uD83E\uDD26\uD83C\uDFFF", + [":face_vomiting:"] = "\uD83E\uDD2E", + [":face_with_cowboy_hat:"] = "\uD83E\uDD20", + [":face_with_hand_over_mouth:"] = "\uD83E\uDD2D", + [":face_with_head_bandage:"] = "\uD83E\uDD15", + [":face_with_monocle:"] = "\uD83E\uDDD0", + [":face_with_raised_eyebrow:"] = "\uD83E\uDD28", + [":face_with_rolling_eyes:"] = "\uD83D\uDE44", + [":face_with_symbols_over_mouth:"] = "\uD83E\uDD2C", + [":face_with_thermometer:"] = "\uD83E\uDD12", + [":facepalm:"] = "\uD83E\uDD26", + [":facepalm::skin-tone-1:"] = "\uD83E\uDD26\uD83C\uDFFB", + [":facepalm::skin-tone-2:"] = "\uD83E\uDD26\uD83C\uDFFC", + [":facepalm::skin-tone-3:"] = "\uD83E\uDD26\uD83C\uDFFD", + [":facepalm::skin-tone-4:"] = "\uD83E\uDD26\uD83C\uDFFE", + [":facepalm::skin-tone-5:"] = "\uD83E\uDD26\uD83C\uDFFF", + [":facepalm_tone1:"] = "\uD83E\uDD26\uD83C\uDFFB", + [":facepalm_tone2:"] = "\uD83E\uDD26\uD83C\uDFFC", + [":facepalm_tone3:"] = "\uD83E\uDD26\uD83C\uDFFD", + [":facepalm_tone4:"] = "\uD83E\uDD26\uD83C\uDFFE", + [":facepalm_tone5:"] = "\uD83E\uDD26\uD83C\uDFFF", + [":factory:"] = "\uD83C\uDFED", + [":fairy:"] = "\uD83E\uDDDA", + [":fairy::skin-tone-1:"] = "\uD83E\uDDDA\uD83C\uDFFB", + [":fairy::skin-tone-2:"] = "\uD83E\uDDDA\uD83C\uDFFC", + [":fairy::skin-tone-3:"] = "\uD83E\uDDDA\uD83C\uDFFD", + [":fairy::skin-tone-4:"] = "\uD83E\uDDDA\uD83C\uDFFE", + [":fairy::skin-tone-5:"] = "\uD83E\uDDDA\uD83C\uDFFF", + [":fairy_dark_skin_tone:"] = "\uD83E\uDDDA\uD83C\uDFFF", + [":fairy_light_skin_tone:"] = "\uD83E\uDDDA\uD83C\uDFFB", + [":fairy_medium_dark_skin_tone:"] = "\uD83E\uDDDA\uD83C\uDFFE", + [":fairy_medium_light_skin_tone:"] = "\uD83E\uDDDA\uD83C\uDFFC", + [":fairy_medium_skin_tone:"] = "\uD83E\uDDDA\uD83C\uDFFD", + [":fairy_tone1:"] = "\uD83E\uDDDA\uD83C\uDFFB", + [":fairy_tone2:"] = "\uD83E\uDDDA\uD83C\uDFFC", + [":fairy_tone3:"] = "\uD83E\uDDDA\uD83C\uDFFD", + [":fairy_tone4:"] = "\uD83E\uDDDA\uD83C\uDFFE", + [":fairy_tone5:"] = "\uD83E\uDDDA\uD83C\uDFFF", + [":falafel:"] = "\uD83E\uDDC6", + [":fallen_leaf:"] = "\uD83C\uDF42", + [":family:"] = "\uD83D\uDC6A", + [":family_man_boy:"] = "\uD83D\uDC68\u200D\uD83D\uDC66", + [":family_man_boy_boy:"] = "\uD83D\uDC68\u200D\uD83D\uDC66\u200D\uD83D\uDC66", + [":family_man_girl:"] = "\uD83D\uDC68\u200D\uD83D\uDC67", + [":family_man_girl_boy:"] = "\uD83D\uDC68\u200D\uD83D\uDC67\u200D\uD83D\uDC66", + [":family_man_girl_girl:"] = "\uD83D\uDC68\u200D\uD83D\uDC67\u200D\uD83D\uDC67", + [":family_man_woman_boy:"] = "\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC66", + [":family_mmb:"] = "\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC66", + [":family_mmbb:"] = "\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC66\u200D\uD83D\uDC66", + [":family_mmg:"] = "\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC67", + [":family_mmgb:"] = "\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC67\u200D\uD83D\uDC66", + [":family_mmgg:"] = "\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC67\u200D\uD83D\uDC67", + [":family_mwbb:"] = "\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66", + [":family_mwg:"] = "\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC67", + [":family_mwgb:"] = "\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC66", + [":family_mwgg:"] = "\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC67", + [":family_woman_boy:"] = "\uD83D\uDC69\u200D\uD83D\uDC66", + [":family_woman_boy_boy:"] = "\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66", + [":family_woman_girl:"] = "\uD83D\uDC69\u200D\uD83D\uDC67", + [":family_woman_girl_boy:"] = "\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC66", + [":family_woman_girl_girl:"] = "\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC67", + [":family_wwb:"] = "\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC66", + [":family_wwbb:"] = "\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66", + [":family_wwg:"] = "\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC67", + [":family_wwgb:"] = "\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC66", + [":family_wwgg:"] = "\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC67", + [":fast_forward:"] = "⏩", + [":fax:"] = "\uD83D\uDCE0", + [":fearful:"] = "\uD83D\uDE28", + [":feet:"] = "\uD83D\uDC3E", + [":female_sign:"] = "♀️", + [":fencer:"] = "\uD83E\uDD3A", + [":fencing:"] = "\uD83E\uDD3A", + [":ferris_wheel:"] = "\uD83C\uDFA1", + [":ferry:"] = "⛴️", + [":field_hockey:"] = "\uD83C\uDFD1", + [":file_cabinet:"] = "\uD83D\uDDC4️", + [":file_folder:"] = "\uD83D\uDCC1", + [":film_frames:"] = "\uD83C\uDF9E️", + [":film_projector:"] = "\uD83D\uDCFD️", + [":fingers_crossed:"] = "\uD83E\uDD1E", + [":fingers_crossed::skin-tone-1:"] = "\uD83E\uDD1E\uD83C\uDFFB", + [":fingers_crossed::skin-tone-2:"] = "\uD83E\uDD1E\uD83C\uDFFC", + [":fingers_crossed::skin-tone-3:"] = "\uD83E\uDD1E\uD83C\uDFFD", + [":fingers_crossed::skin-tone-4:"] = "\uD83E\uDD1E\uD83C\uDFFE", + [":fingers_crossed::skin-tone-5:"] = "\uD83E\uDD1E\uD83C\uDFFF", + [":fingers_crossed_tone1:"] = "\uD83E\uDD1E\uD83C\uDFFB", + [":fingers_crossed_tone2:"] = "\uD83E\uDD1E\uD83C\uDFFC", + [":fingers_crossed_tone3:"] = "\uD83E\uDD1E\uD83C\uDFFD", + [":fingers_crossed_tone4:"] = "\uD83E\uDD1E\uD83C\uDFFE", + [":fingers_crossed_tone5:"] = "\uD83E\uDD1E\uD83C\uDFFF", + [":fire:"] = "\uD83D\uDD25", + [":fire_engine:"] = "\uD83D\uDE92", + [":fire_extinguisher:"] = "\uD83E\uDDEF", + [":firecracker:"] = "\uD83E\uDDE8", + [":fireworks:"] = "\uD83C\uDF86", + [":first_place:"] = "\uD83E\uDD47", + [":first_place_medal:"] = "\uD83E\uDD47", + [":first_quarter_moon:"] = "\uD83C\uDF13", + [":first_quarter_moon_with_face:"] = "\uD83C\uDF1B", + [":fish:"] = "\uD83D\uDC1F", + [":fish_cake:"] = "\uD83C\uDF65", + [":fishing_pole_and_fish:"] = "\uD83C\uDFA3", + [":fist:"] = "✊", + [":fist::skin-tone-1:"] = "✊\uD83C\uDFFB", + [":fist::skin-tone-2:"] = "✊\uD83C\uDFFC", + [":fist::skin-tone-3:"] = "✊\uD83C\uDFFD", + [":fist::skin-tone-4:"] = "✊\uD83C\uDFFE", + [":fist::skin-tone-5:"] = "✊\uD83C\uDFFF", + [":fist_tone1:"] = "✊\uD83C\uDFFB", + [":fist_tone2:"] = "✊\uD83C\uDFFC", + [":fist_tone3:"] = "✊\uD83C\uDFFD", + [":fist_tone4:"] = "✊\uD83C\uDFFE", + [":fist_tone5:"] = "✊\uD83C\uDFFF", + [":five:"] = "5️⃣", + [":flag_ac:"] = "\uD83C\uDDE6\uD83C\uDDE8", + [":flag_ad:"] = "\uD83C\uDDE6\uD83C\uDDE9", + [":flag_ae:"] = "\uD83C\uDDE6\uD83C\uDDEA", + [":flag_af:"] = "\uD83C\uDDE6\uD83C\uDDEB", + [":flag_ag:"] = "\uD83C\uDDE6\uD83C\uDDEC", + [":flag_ai:"] = "\uD83C\uDDE6\uD83C\uDDEE", + [":flag_al:"] = "\uD83C\uDDE6\uD83C\uDDF1", + [":flag_am:"] = "\uD83C\uDDE6\uD83C\uDDF2", + [":flag_ao:"] = "\uD83C\uDDE6\uD83C\uDDF4", + [":flag_aq:"] = "\uD83C\uDDE6\uD83C\uDDF6", + [":flag_ar:"] = "\uD83C\uDDE6\uD83C\uDDF7", + [":flag_as:"] = "\uD83C\uDDE6\uD83C\uDDF8", + [":flag_at:"] = "\uD83C\uDDE6\uD83C\uDDF9", + [":flag_au:"] = "\uD83C\uDDE6\uD83C\uDDFA", + [":flag_aw:"] = "\uD83C\uDDE6\uD83C\uDDFC", + [":flag_ax:"] = "\uD83C\uDDE6\uD83C\uDDFD", + [":flag_az:"] = "\uD83C\uDDE6\uD83C\uDDFF", + [":flag_ba:"] = "\uD83C\uDDE7\uD83C\uDDE6", + [":flag_bb:"] = "\uD83C\uDDE7\uD83C\uDDE7", + [":flag_bd:"] = "\uD83C\uDDE7\uD83C\uDDE9", + [":flag_be:"] = "\uD83C\uDDE7\uD83C\uDDEA", + [":flag_bf:"] = "\uD83C\uDDE7\uD83C\uDDEB", + [":flag_bg:"] = "\uD83C\uDDE7\uD83C\uDDEC", + [":flag_bh:"] = "\uD83C\uDDE7\uD83C\uDDED", + [":flag_bi:"] = "\uD83C\uDDE7\uD83C\uDDEE", + [":flag_bj:"] = "\uD83C\uDDE7\uD83C\uDDEF", + [":flag_bl:"] = "\uD83C\uDDE7\uD83C\uDDF1", + [":flag_black:"] = "\uD83C\uDFF4", + [":flag_bm:"] = "\uD83C\uDDE7\uD83C\uDDF2", + [":flag_bn:"] = "\uD83C\uDDE7\uD83C\uDDF3", + [":flag_bo:"] = "\uD83C\uDDE7\uD83C\uDDF4", + [":flag_bq:"] = "\uD83C\uDDE7\uD83C\uDDF6", + [":flag_br:"] = "\uD83C\uDDE7\uD83C\uDDF7", + [":flag_bs:"] = "\uD83C\uDDE7\uD83C\uDDF8", + [":flag_bt:"] = "\uD83C\uDDE7\uD83C\uDDF9", + [":flag_bv:"] = "\uD83C\uDDE7\uD83C\uDDFB", + [":flag_bw:"] = "\uD83C\uDDE7\uD83C\uDDFC", + [":flag_by:"] = "\uD83C\uDDE7\uD83C\uDDFE", + [":flag_bz:"] = "\uD83C\uDDE7\uD83C\uDDFF", + [":flag_ca:"] = "\uD83C\uDDE8\uD83C\uDDE6", + [":flag_cc:"] = "\uD83C\uDDE8\uD83C\uDDE8", + [":flag_cd:"] = "\uD83C\uDDE8\uD83C\uDDE9", + [":flag_cf:"] = "\uD83C\uDDE8\uD83C\uDDEB", + [":flag_cg:"] = "\uD83C\uDDE8\uD83C\uDDEC", + [":flag_ch:"] = "\uD83C\uDDE8\uD83C\uDDED", + [":flag_ci:"] = "\uD83C\uDDE8\uD83C\uDDEE", + [":flag_ck:"] = "\uD83C\uDDE8\uD83C\uDDF0", + [":flag_cl:"] = "\uD83C\uDDE8\uD83C\uDDF1", + [":flag_cm:"] = "\uD83C\uDDE8\uD83C\uDDF2", + [":flag_cn:"] = "\uD83C\uDDE8\uD83C\uDDF3", + [":flag_co:"] = "\uD83C\uDDE8\uD83C\uDDF4", + [":flag_cp:"] = "\uD83C\uDDE8\uD83C\uDDF5", + [":flag_cr:"] = "\uD83C\uDDE8\uD83C\uDDF7", + [":flag_cu:"] = "\uD83C\uDDE8\uD83C\uDDFA", + [":flag_cv:"] = "\uD83C\uDDE8\uD83C\uDDFB", + [":flag_cw:"] = "\uD83C\uDDE8\uD83C\uDDFC", + [":flag_cx:"] = "\uD83C\uDDE8\uD83C\uDDFD", + [":flag_cy:"] = "\uD83C\uDDE8\uD83C\uDDFE", + [":flag_cz:"] = "\uD83C\uDDE8\uD83C\uDDFF", + [":flag_de:"] = "\uD83C\uDDE9\uD83C\uDDEA", + [":flag_dg:"] = "\uD83C\uDDE9\uD83C\uDDEC", + [":flag_dj:"] = "\uD83C\uDDE9\uD83C\uDDEF", + [":flag_dk:"] = "\uD83C\uDDE9\uD83C\uDDF0", + [":flag_dm:"] = "\uD83C\uDDE9\uD83C\uDDF2", + [":flag_do:"] = "\uD83C\uDDE9\uD83C\uDDF4", + [":flag_dz:"] = "\uD83C\uDDE9\uD83C\uDDFF", + [":flag_ea:"] = "\uD83C\uDDEA\uD83C\uDDE6", + [":flag_ec:"] = "\uD83C\uDDEA\uD83C\uDDE8", + [":flag_ee:"] = "\uD83C\uDDEA\uD83C\uDDEA", + [":flag_eg:"] = "\uD83C\uDDEA\uD83C\uDDEC", + [":flag_eh:"] = "\uD83C\uDDEA\uD83C\uDDED", + [":flag_er:"] = "\uD83C\uDDEA\uD83C\uDDF7", + [":flag_es:"] = "\uD83C\uDDEA\uD83C\uDDF8", + [":flag_et:"] = "\uD83C\uDDEA\uD83C\uDDF9", + [":flag_eu:"] = "\uD83C\uDDEA\uD83C\uDDFA", + [":flag_fi:"] = "\uD83C\uDDEB\uD83C\uDDEE", + [":flag_fj:"] = "\uD83C\uDDEB\uD83C\uDDEF", + [":flag_fk:"] = "\uD83C\uDDEB\uD83C\uDDF0", + [":flag_fm:"] = "\uD83C\uDDEB\uD83C\uDDF2", + [":flag_fo:"] = "\uD83C\uDDEB\uD83C\uDDF4", + [":flag_fr:"] = "\uD83C\uDDEB\uD83C\uDDF7", + [":flag_ga:"] = "\uD83C\uDDEC\uD83C\uDDE6", + [":flag_gb:"] = "\uD83C\uDDEC\uD83C\uDDE7", + [":flag_gd:"] = "\uD83C\uDDEC\uD83C\uDDE9", + [":flag_ge:"] = "\uD83C\uDDEC\uD83C\uDDEA", + [":flag_gf:"] = "\uD83C\uDDEC\uD83C\uDDEB", + [":flag_gg:"] = "\uD83C\uDDEC\uD83C\uDDEC", + [":flag_gh:"] = "\uD83C\uDDEC\uD83C\uDDED", + [":flag_gi:"] = "\uD83C\uDDEC\uD83C\uDDEE", + [":flag_gl:"] = "\uD83C\uDDEC\uD83C\uDDF1", + [":flag_gm:"] = "\uD83C\uDDEC\uD83C\uDDF2", + [":flag_gn:"] = "\uD83C\uDDEC\uD83C\uDDF3", + [":flag_gp:"] = "\uD83C\uDDEC\uD83C\uDDF5", + [":flag_gq:"] = "\uD83C\uDDEC\uD83C\uDDF6", + [":flag_gr:"] = "\uD83C\uDDEC\uD83C\uDDF7", + [":flag_gs:"] = "\uD83C\uDDEC\uD83C\uDDF8", + [":flag_gt:"] = "\uD83C\uDDEC\uD83C\uDDF9", + [":flag_gu:"] = "\uD83C\uDDEC\uD83C\uDDFA", + [":flag_gw:"] = "\uD83C\uDDEC\uD83C\uDDFC", + [":flag_gy:"] = "\uD83C\uDDEC\uD83C\uDDFE", + [":flag_hk:"] = "\uD83C\uDDED\uD83C\uDDF0", + [":flag_hm:"] = "\uD83C\uDDED\uD83C\uDDF2", + [":flag_hn:"] = "\uD83C\uDDED\uD83C\uDDF3", + [":flag_hr:"] = "\uD83C\uDDED\uD83C\uDDF7", + [":flag_ht:"] = "\uD83C\uDDED\uD83C\uDDF9", + [":flag_hu:"] = "\uD83C\uDDED\uD83C\uDDFA", + [":flag_ic:"] = "\uD83C\uDDEE\uD83C\uDDE8", + [":flag_id:"] = "\uD83C\uDDEE\uD83C\uDDE9", + [":flag_ie:"] = "\uD83C\uDDEE\uD83C\uDDEA", + [":flag_il:"] = "\uD83C\uDDEE\uD83C\uDDF1", + [":flag_im:"] = "\uD83C\uDDEE\uD83C\uDDF2", + [":flag_in:"] = "\uD83C\uDDEE\uD83C\uDDF3", + [":flag_io:"] = "\uD83C\uDDEE\uD83C\uDDF4", + [":flag_iq:"] = "\uD83C\uDDEE\uD83C\uDDF6", + [":flag_ir:"] = "\uD83C\uDDEE\uD83C\uDDF7", + [":flag_is:"] = "\uD83C\uDDEE\uD83C\uDDF8", + [":flag_it:"] = "\uD83C\uDDEE\uD83C\uDDF9", + [":flag_je:"] = "\uD83C\uDDEF\uD83C\uDDEA", + [":flag_jm:"] = "\uD83C\uDDEF\uD83C\uDDF2", + [":flag_jo:"] = "\uD83C\uDDEF\uD83C\uDDF4", + [":flag_jp:"] = "\uD83C\uDDEF\uD83C\uDDF5", + [":flag_ke:"] = "\uD83C\uDDF0\uD83C\uDDEA", + [":flag_kg:"] = "\uD83C\uDDF0\uD83C\uDDEC", + [":flag_kh:"] = "\uD83C\uDDF0\uD83C\uDDED", + [":flag_ki:"] = "\uD83C\uDDF0\uD83C\uDDEE", + [":flag_km:"] = "\uD83C\uDDF0\uD83C\uDDF2", + [":flag_kn:"] = "\uD83C\uDDF0\uD83C\uDDF3", + [":flag_kp:"] = "\uD83C\uDDF0\uD83C\uDDF5", + [":flag_kr:"] = "\uD83C\uDDF0\uD83C\uDDF7", + [":flag_kw:"] = "\uD83C\uDDF0\uD83C\uDDFC", + [":flag_ky:"] = "\uD83C\uDDF0\uD83C\uDDFE", + [":flag_kz:"] = "\uD83C\uDDF0\uD83C\uDDFF", + [":flag_la:"] = "\uD83C\uDDF1\uD83C\uDDE6", + [":flag_lb:"] = "\uD83C\uDDF1\uD83C\uDDE7", + [":flag_lc:"] = "\uD83C\uDDF1\uD83C\uDDE8", + [":flag_li:"] = "\uD83C\uDDF1\uD83C\uDDEE", + [":flag_lk:"] = "\uD83C\uDDF1\uD83C\uDDF0", + [":flag_lr:"] = "\uD83C\uDDF1\uD83C\uDDF7", + [":flag_ls:"] = "\uD83C\uDDF1\uD83C\uDDF8", + [":flag_lt:"] = "\uD83C\uDDF1\uD83C\uDDF9", + [":flag_lu:"] = "\uD83C\uDDF1\uD83C\uDDFA", + [":flag_lv:"] = "\uD83C\uDDF1\uD83C\uDDFB", + [":flag_ly:"] = "\uD83C\uDDF1\uD83C\uDDFE", + [":flag_ma:"] = "\uD83C\uDDF2\uD83C\uDDE6", + [":flag_mc:"] = "\uD83C\uDDF2\uD83C\uDDE8", + [":flag_md:"] = "\uD83C\uDDF2\uD83C\uDDE9", + [":flag_me:"] = "\uD83C\uDDF2\uD83C\uDDEA", + [":flag_mf:"] = "\uD83C\uDDF2\uD83C\uDDEB", + [":flag_mg:"] = "\uD83C\uDDF2\uD83C\uDDEC", + [":flag_mh:"] = "\uD83C\uDDF2\uD83C\uDDED", + [":flag_mk:"] = "\uD83C\uDDF2\uD83C\uDDF0", + [":flag_ml:"] = "\uD83C\uDDF2\uD83C\uDDF1", + [":flag_mm:"] = "\uD83C\uDDF2\uD83C\uDDF2", + [":flag_mn:"] = "\uD83C\uDDF2\uD83C\uDDF3", + [":flag_mo:"] = "\uD83C\uDDF2\uD83C\uDDF4", + [":flag_mp:"] = "\uD83C\uDDF2\uD83C\uDDF5", + [":flag_mq:"] = "\uD83C\uDDF2\uD83C\uDDF6", + [":flag_mr:"] = "\uD83C\uDDF2\uD83C\uDDF7", + [":flag_ms:"] = "\uD83C\uDDF2\uD83C\uDDF8", + [":flag_mt:"] = "\uD83C\uDDF2\uD83C\uDDF9", + [":flag_mu:"] = "\uD83C\uDDF2\uD83C\uDDFA", + [":flag_mv:"] = "\uD83C\uDDF2\uD83C\uDDFB", + [":flag_mw:"] = "\uD83C\uDDF2\uD83C\uDDFC", + [":flag_mx:"] = "\uD83C\uDDF2\uD83C\uDDFD", + [":flag_my:"] = "\uD83C\uDDF2\uD83C\uDDFE", + [":flag_mz:"] = "\uD83C\uDDF2\uD83C\uDDFF", + [":flag_na:"] = "\uD83C\uDDF3\uD83C\uDDE6", + [":flag_nc:"] = "\uD83C\uDDF3\uD83C\uDDE8", + [":flag_ne:"] = "\uD83C\uDDF3\uD83C\uDDEA", + [":flag_nf:"] = "\uD83C\uDDF3\uD83C\uDDEB", + [":flag_ng:"] = "\uD83C\uDDF3\uD83C\uDDEC", + [":flag_ni:"] = "\uD83C\uDDF3\uD83C\uDDEE", + [":flag_nl:"] = "\uD83C\uDDF3\uD83C\uDDF1", + [":flag_no:"] = "\uD83C\uDDF3\uD83C\uDDF4", + [":flag_np:"] = "\uD83C\uDDF3\uD83C\uDDF5", + [":flag_nr:"] = "\uD83C\uDDF3\uD83C\uDDF7", + [":flag_nu:"] = "\uD83C\uDDF3\uD83C\uDDFA", + [":flag_nz:"] = "\uD83C\uDDF3\uD83C\uDDFF", + [":flag_om:"] = "\uD83C\uDDF4\uD83C\uDDF2", + [":flag_pa:"] = "\uD83C\uDDF5\uD83C\uDDE6", + [":flag_pe:"] = "\uD83C\uDDF5\uD83C\uDDEA", + [":flag_pf:"] = "\uD83C\uDDF5\uD83C\uDDEB", + [":flag_pg:"] = "\uD83C\uDDF5\uD83C\uDDEC", + [":flag_ph:"] = "\uD83C\uDDF5\uD83C\uDDED", + [":flag_pk:"] = "\uD83C\uDDF5\uD83C\uDDF0", + [":flag_pl:"] = "\uD83C\uDDF5\uD83C\uDDF1", + [":flag_pm:"] = "\uD83C\uDDF5\uD83C\uDDF2", + [":flag_pn:"] = "\uD83C\uDDF5\uD83C\uDDF3", + [":flag_pr:"] = "\uD83C\uDDF5\uD83C\uDDF7", + [":flag_ps:"] = "\uD83C\uDDF5\uD83C\uDDF8", + [":flag_pt:"] = "\uD83C\uDDF5\uD83C\uDDF9", + [":flag_pw:"] = "\uD83C\uDDF5\uD83C\uDDFC", + [":flag_py:"] = "\uD83C\uDDF5\uD83C\uDDFE", + [":flag_qa:"] = "\uD83C\uDDF6\uD83C\uDDE6", + [":flag_re:"] = "\uD83C\uDDF7\uD83C\uDDEA", + [":flag_ro:"] = "\uD83C\uDDF7\uD83C\uDDF4", + [":flag_rs:"] = "\uD83C\uDDF7\uD83C\uDDF8", + [":flag_ru:"] = "\uD83C\uDDF7\uD83C\uDDFA", + [":flag_rw:"] = "\uD83C\uDDF7\uD83C\uDDFC", + [":flag_sa:"] = "\uD83C\uDDF8\uD83C\uDDE6", + [":flag_sb:"] = "\uD83C\uDDF8\uD83C\uDDE7", + [":flag_sc:"] = "\uD83C\uDDF8\uD83C\uDDE8", + [":flag_sd:"] = "\uD83C\uDDF8\uD83C\uDDE9", + [":flag_se:"] = "\uD83C\uDDF8\uD83C\uDDEA", + [":flag_sg:"] = "\uD83C\uDDF8\uD83C\uDDEC", + [":flag_sh:"] = "\uD83C\uDDF8\uD83C\uDDED", + [":flag_si:"] = "\uD83C\uDDF8\uD83C\uDDEE", + [":flag_sj:"] = "\uD83C\uDDF8\uD83C\uDDEF", + [":flag_sk:"] = "\uD83C\uDDF8\uD83C\uDDF0", + [":flag_sl:"] = "\uD83C\uDDF8\uD83C\uDDF1", + [":flag_sm:"] = "\uD83C\uDDF8\uD83C\uDDF2", + [":flag_sn:"] = "\uD83C\uDDF8\uD83C\uDDF3", + [":flag_so:"] = "\uD83C\uDDF8\uD83C\uDDF4", + [":flag_sr:"] = "\uD83C\uDDF8\uD83C\uDDF7", + [":flag_ss:"] = "\uD83C\uDDF8\uD83C\uDDF8", + [":flag_st:"] = "\uD83C\uDDF8\uD83C\uDDF9", + [":flag_sv:"] = "\uD83C\uDDF8\uD83C\uDDFB", + [":flag_sx:"] = "\uD83C\uDDF8\uD83C\uDDFD", + [":flag_sy:"] = "\uD83C\uDDF8\uD83C\uDDFE", + [":flag_sz:"] = "\uD83C\uDDF8\uD83C\uDDFF", + [":flag_ta:"] = "\uD83C\uDDF9\uD83C\uDDE6", + [":flag_tc:"] = "\uD83C\uDDF9\uD83C\uDDE8", + [":flag_td:"] = "\uD83C\uDDF9\uD83C\uDDE9", + [":flag_tf:"] = "\uD83C\uDDF9\uD83C\uDDEB", + [":flag_tg:"] = "\uD83C\uDDF9\uD83C\uDDEC", + [":flag_th:"] = "\uD83C\uDDF9\uD83C\uDDED", + [":flag_tj:"] = "\uD83C\uDDF9\uD83C\uDDEF", + [":flag_tk:"] = "\uD83C\uDDF9\uD83C\uDDF0", + [":flag_tl:"] = "\uD83C\uDDF9\uD83C\uDDF1", + [":flag_tm:"] = "\uD83C\uDDF9\uD83C\uDDF2", + [":flag_tn:"] = "\uD83C\uDDF9\uD83C\uDDF3", + [":flag_to:"] = "\uD83C\uDDF9\uD83C\uDDF4", + [":flag_tr:"] = "\uD83C\uDDF9\uD83C\uDDF7", + [":flag_tt:"] = "\uD83C\uDDF9\uD83C\uDDF9", + [":flag_tv:"] = "\uD83C\uDDF9\uD83C\uDDFB", + [":flag_tw:"] = "\uD83C\uDDF9\uD83C\uDDFC", + [":flag_tz:"] = "\uD83C\uDDF9\uD83C\uDDFF", + [":flag_ua:"] = "\uD83C\uDDFA\uD83C\uDDE6", + [":flag_ug:"] = "\uD83C\uDDFA\uD83C\uDDEC", + [":flag_um:"] = "\uD83C\uDDFA\uD83C\uDDF2", + [":flag_us:"] = "\uD83C\uDDFA\uD83C\uDDF8", + [":flag_uy:"] = "\uD83C\uDDFA\uD83C\uDDFE", + [":flag_uz:"] = "\uD83C\uDDFA\uD83C\uDDFF", + [":flag_va:"] = "\uD83C\uDDFB\uD83C\uDDE6", + [":flag_vc:"] = "\uD83C\uDDFB\uD83C\uDDE8", + [":flag_ve:"] = "\uD83C\uDDFB\uD83C\uDDEA", + [":flag_vg:"] = "\uD83C\uDDFB\uD83C\uDDEC", + [":flag_vi:"] = "\uD83C\uDDFB\uD83C\uDDEE", + [":flag_vn:"] = "\uD83C\uDDFB\uD83C\uDDF3", + [":flag_vu:"] = "\uD83C\uDDFB\uD83C\uDDFA", + [":flag_wf:"] = "\uD83C\uDDFC\uD83C\uDDEB", + [":flag_white:"] = "\uD83C\uDFF3️", + [":flag_ws:"] = "\uD83C\uDDFC\uD83C\uDDF8", + [":flag_xk:"] = "\uD83C\uDDFD\uD83C\uDDF0", + [":flag_ye:"] = "\uD83C\uDDFE\uD83C\uDDEA", + [":flag_yt:"] = "\uD83C\uDDFE\uD83C\uDDF9", + [":flag_za:"] = "\uD83C\uDDFF\uD83C\uDDE6", + [":flag_zm:"] = "\uD83C\uDDFF\uD83C\uDDF2", + [":flag_zw:"] = "\uD83C\uDDFF\uD83C\uDDFC", + [":flags:"] = "\uD83C\uDF8F", + [":flame:"] = "\uD83D\uDD25", + [":flamingo:"] = "\uD83E\uDDA9", + [":flan:"] = "\uD83C\uDF6E", + [":flashlight:"] = "\uD83D\uDD26", + [":fleur_de_lis:"] = "⚜️", + [":floppy_disk:"] = "\uD83D\uDCBE", + [":flower_playing_cards:"] = "\uD83C\uDFB4", + [":flushed:"] = "\uD83D\uDE33", + [":flying_disc:"] = "\uD83E\uDD4F", + [":flying_saucer:"] = "\uD83D\uDEF8", + [":fog:"] = "\uD83C\uDF2B️", + [":foggy:"] = "\uD83C\uDF01", + [":foot:"] = "\uD83E\uDDB6", + [":foot::skin-tone-1:"] = "\uD83E\uDDB6\uD83C\uDFFB", + [":foot::skin-tone-2:"] = "\uD83E\uDDB6\uD83C\uDFFC", + [":foot::skin-tone-3:"] = "\uD83E\uDDB6\uD83C\uDFFD", + [":foot::skin-tone-4:"] = "\uD83E\uDDB6\uD83C\uDFFE", + [":foot::skin-tone-5:"] = "\uD83E\uDDB6\uD83C\uDFFF", + [":foot_dark_skin_tone:"] = "\uD83E\uDDB6\uD83C\uDFFF", + [":foot_light_skin_tone:"] = "\uD83E\uDDB6\uD83C\uDFFB", + [":foot_medium_dark_skin_tone:"] = "\uD83E\uDDB6\uD83C\uDFFE", + [":foot_medium_light_skin_tone:"] = "\uD83E\uDDB6\uD83C\uDFFC", + [":foot_medium_skin_tone:"] = "\uD83E\uDDB6\uD83C\uDFFD", + [":foot_tone1:"] = "\uD83E\uDDB6\uD83C\uDFFB", + [":foot_tone2:"] = "\uD83E\uDDB6\uD83C\uDFFC", + [":foot_tone3:"] = "\uD83E\uDDB6\uD83C\uDFFD", + [":foot_tone4:"] = "\uD83E\uDDB6\uD83C\uDFFE", + [":foot_tone5:"] = "\uD83E\uDDB6\uD83C\uDFFF", + [":football:"] = "\uD83C\uDFC8", + [":footprints:"] = "\uD83D\uDC63", + [":fork_and_knife:"] = "\uD83C\uDF74", + [":fork_and_knife_with_plate:"] = "\uD83C\uDF7D️", + [":fork_knife_plate:"] = "\uD83C\uDF7D️", + [":fortune_cookie:"] = "\uD83E\uDD60", + [":fountain:"] = "⛲", + [":four:"] = "4️⃣", + [":four_leaf_clover:"] = "\uD83C\uDF40", + [":fox:"] = "\uD83E\uDD8A", + [":fox_face:"] = "\uD83E\uDD8A", + [":frame_photo:"] = "\uD83D\uDDBC️", + [":frame_with_picture:"] = "\uD83D\uDDBC️", + [":free:"] = "\uD83C\uDD93", + [":french_bread:"] = "\uD83E\uDD56", + [":fried_shrimp:"] = "\uD83C\uDF64", + [":fries:"] = "\uD83C\uDF5F", + [":frog:"] = "\uD83D\uDC38", + [":frowning2:"] = "☹️", + [":frowning:"] = "\uD83D\uDE26", + [":fuelpump:"] = "⛽", + [":full_moon:"] = "\uD83C\uDF15", + [":full_moon_with_face:"] = "\uD83C\uDF1D", + [":funeral_urn:"] = "⚱️", + [":game_die:"] = "\uD83C\uDFB2", + [":garlic:"] = "\uD83E\uDDC4", + [":gay_pride_flag:"] = "\uD83C\uDFF3️\u200D\uD83C\uDF08", + [":gear:"] = "⚙️", + [":gem:"] = "\uD83D\uDC8E", + [":gemini:"] = "♊", + [":genie:"] = "\uD83E\uDDDE", + [":ghost:"] = "\uD83D\uDC7B", + [":gift:"] = "\uD83C\uDF81", + [":gift_heart:"] = "\uD83D\uDC9D", + [":giraffe:"] = "\uD83E\uDD92", + [":girl:"] = "\uD83D\uDC67", + [":girl::skin-tone-1:"] = "\uD83D\uDC67\uD83C\uDFFB", + [":girl::skin-tone-2:"] = "\uD83D\uDC67\uD83C\uDFFC", + [":girl::skin-tone-3:"] = "\uD83D\uDC67\uD83C\uDFFD", + [":girl::skin-tone-4:"] = "\uD83D\uDC67\uD83C\uDFFE", + [":girl::skin-tone-5:"] = "\uD83D\uDC67\uD83C\uDFFF", + [":girl_tone1:"] = "\uD83D\uDC67\uD83C\uDFFB", + [":girl_tone2:"] = "\uD83D\uDC67\uD83C\uDFFC", + [":girl_tone3:"] = "\uD83D\uDC67\uD83C\uDFFD", + [":girl_tone4:"] = "\uD83D\uDC67\uD83C\uDFFE", + [":girl_tone5:"] = "\uD83D\uDC67\uD83C\uDFFF", + [":glass_of_milk:"] = "\uD83E\uDD5B", + [":globe_with_meridians:"] = "\uD83C\uDF10", + [":gloves:"] = "\uD83E\uDDE4", + [":goal:"] = "\uD83E\uDD45", + [":goal_net:"] = "\uD83E\uDD45", + [":goat:"] = "\uD83D\uDC10", + [":goggles:"] = "\uD83E\uDD7D", + [":golf:"] = "⛳", + [":golfer:"] = "\uD83C\uDFCC️", + [":golfer::skin-tone-1:"] = "\uD83C\uDFCC\uD83C\uDFFB", + [":golfer::skin-tone-2:"] = "\uD83C\uDFCC\uD83C\uDFFC", + [":golfer::skin-tone-3:"] = "\uD83C\uDFCC\uD83C\uDFFD", + [":golfer::skin-tone-4:"] = "\uD83C\uDFCC\uD83C\uDFFE", + [":golfer::skin-tone-5:"] = "\uD83C\uDFCC\uD83C\uDFFF", + [":gorilla:"] = "\uD83E\uDD8D", + [":grandma:"] = "\uD83D\uDC75", + [":grandma::skin-tone-1:"] = "\uD83D\uDC75\uD83C\uDFFB", + [":grandma::skin-tone-2:"] = "\uD83D\uDC75\uD83C\uDFFC", + [":grandma::skin-tone-3:"] = "\uD83D\uDC75\uD83C\uDFFD", + [":grandma::skin-tone-4:"] = "\uD83D\uDC75\uD83C\uDFFE", + [":grandma::skin-tone-5:"] = "\uD83D\uDC75\uD83C\uDFFF", + [":grandma_tone1:"] = "\uD83D\uDC75\uD83C\uDFFB", + [":grandma_tone2:"] = "\uD83D\uDC75\uD83C\uDFFC", + [":grandma_tone3:"] = "\uD83D\uDC75\uD83C\uDFFD", + [":grandma_tone4:"] = "\uD83D\uDC75\uD83C\uDFFE", + [":grandma_tone5:"] = "\uD83D\uDC75\uD83C\uDFFF", + [":grapes:"] = "\uD83C\uDF47", + [":green_apple:"] = "\uD83C\uDF4F", + [":green_book:"] = "\uD83D\uDCD7", + [":green_circle:"] = "\uD83D\uDFE2", + [":green_heart:"] = "\uD83D\uDC9A", + [":green_salad:"] = "\uD83E\uDD57", + [":green_square:"] = "\uD83D\uDFE9", + [":grey_exclamation:"] = "❕", + [":grey_question:"] = "❔", + [":grimacing:"] = "\uD83D\uDE2C", + [":grin:"] = "\uD83D\uDE01", + [":grinning:"] = "\uD83D\uDE00", + [":guard:"] = "\uD83D\uDC82", + [":guard::skin-tone-1:"] = "\uD83D\uDC82\uD83C\uDFFB", + [":guard::skin-tone-2:"] = "\uD83D\uDC82\uD83C\uDFFC", + [":guard::skin-tone-3:"] = "\uD83D\uDC82\uD83C\uDFFD", + [":guard::skin-tone-4:"] = "\uD83D\uDC82\uD83C\uDFFE", + [":guard::skin-tone-5:"] = "\uD83D\uDC82\uD83C\uDFFF", + [":guard_tone1:"] = "\uD83D\uDC82\uD83C\uDFFB", + [":guard_tone2:"] = "\uD83D\uDC82\uD83C\uDFFC", + [":guard_tone3:"] = "\uD83D\uDC82\uD83C\uDFFD", + [":guard_tone4:"] = "\uD83D\uDC82\uD83C\uDFFE", + [":guard_tone5:"] = "\uD83D\uDC82\uD83C\uDFFF", + [":guardsman:"] = "\uD83D\uDC82", + [":guardsman::skin-tone-1:"] = "\uD83D\uDC82\uD83C\uDFFB", + [":guardsman::skin-tone-2:"] = "\uD83D\uDC82\uD83C\uDFFC", + [":guardsman::skin-tone-3:"] = "\uD83D\uDC82\uD83C\uDFFD", + [":guardsman::skin-tone-4:"] = "\uD83D\uDC82\uD83C\uDFFE", + [":guardsman::skin-tone-5:"] = "\uD83D\uDC82\uD83C\uDFFF", + [":guardsman_tone1:"] = "\uD83D\uDC82\uD83C\uDFFB", + [":guardsman_tone2:"] = "\uD83D\uDC82\uD83C\uDFFC", + [":guardsman_tone3:"] = "\uD83D\uDC82\uD83C\uDFFD", + [":guardsman_tone4:"] = "\uD83D\uDC82\uD83C\uDFFE", + [":guardsman_tone5:"] = "\uD83D\uDC82\uD83C\uDFFF", + [":guide_dog:"] = "\uD83E\uDDAE", + [":guitar:"] = "\uD83C\uDFB8", + [":gun:"] = "\uD83D\uDD2B", + [":haircut:"] = "\uD83D\uDC87", + [":haircut::skin-tone-1:"] = "\uD83D\uDC87\uD83C\uDFFB", + [":haircut::skin-tone-2:"] = "\uD83D\uDC87\uD83C\uDFFC", + [":haircut::skin-tone-3:"] = "\uD83D\uDC87\uD83C\uDFFD", + [":haircut::skin-tone-4:"] = "\uD83D\uDC87\uD83C\uDFFE", + [":haircut::skin-tone-5:"] = "\uD83D\uDC87\uD83C\uDFFF", + [":haircut_tone1:"] = "\uD83D\uDC87\uD83C\uDFFB", + [":haircut_tone2:"] = "\uD83D\uDC87\uD83C\uDFFC", + [":haircut_tone3:"] = "\uD83D\uDC87\uD83C\uDFFD", + [":haircut_tone4:"] = "\uD83D\uDC87\uD83C\uDFFE", + [":haircut_tone5:"] = "\uD83D\uDC87\uD83C\uDFFF", + [":hamburger:"] = "\uD83C\uDF54", + [":hammer:"] = "\uD83D\uDD28", + [":hammer_and_pick:"] = "⚒️", + [":hammer_and_wrench:"] = "\uD83D\uDEE0️", + [":hammer_pick:"] = "⚒️", + [":hamster:"] = "\uD83D\uDC39", + [":hand_splayed:"] = "\uD83D\uDD90️", + [":hand_splayed::skin-tone-1:"] = "\uD83D\uDD90\uD83C\uDFFB", + [":hand_splayed::skin-tone-2:"] = "\uD83D\uDD90\uD83C\uDFFC", + [":hand_splayed::skin-tone-3:"] = "\uD83D\uDD90\uD83C\uDFFD", + [":hand_splayed::skin-tone-4:"] = "\uD83D\uDD90\uD83C\uDFFE", + [":hand_splayed::skin-tone-5:"] = "\uD83D\uDD90\uD83C\uDFFF", + [":hand_splayed_tone1:"] = "\uD83D\uDD90\uD83C\uDFFB", + [":hand_splayed_tone2:"] = "\uD83D\uDD90\uD83C\uDFFC", + [":hand_splayed_tone3:"] = "\uD83D\uDD90\uD83C\uDFFD", + [":hand_splayed_tone4:"] = "\uD83D\uDD90\uD83C\uDFFE", + [":hand_splayed_tone5:"] = "\uD83D\uDD90\uD83C\uDFFF", + [":hand_with_index_and_middle_finger_crossed:"] = "\uD83E\uDD1E", + [":hand_with_index_and_middle_finger_crossed::skin-tone-1:"] = "\uD83E\uDD1E\uD83C\uDFFB", + [":hand_with_index_and_middle_finger_crossed::skin-tone-2:"] = "\uD83E\uDD1E\uD83C\uDFFC", + [":hand_with_index_and_middle_finger_crossed::skin-tone-3:"] = "\uD83E\uDD1E\uD83C\uDFFD", + [":hand_with_index_and_middle_finger_crossed::skin-tone-4:"] = "\uD83E\uDD1E\uD83C\uDFFE", + [":hand_with_index_and_middle_finger_crossed::skin-tone-5:"] = "\uD83E\uDD1E\uD83C\uDFFF", + [":hand_with_index_and_middle_fingers_crossed_tone1:"] = "\uD83E\uDD1E\uD83C\uDFFB", + [":hand_with_index_and_middle_fingers_crossed_tone2:"] = "\uD83E\uDD1E\uD83C\uDFFC", + [":hand_with_index_and_middle_fingers_crossed_tone3:"] = "\uD83E\uDD1E\uD83C\uDFFD", + [":hand_with_index_and_middle_fingers_crossed_tone4:"] = "\uD83E\uDD1E\uD83C\uDFFE", + [":hand_with_index_and_middle_fingers_crossed_tone5:"] = "\uD83E\uDD1E\uD83C\uDFFF", + [":handbag:"] = "\uD83D\uDC5C", + [":handball:"] = "\uD83E\uDD3E", + [":handball::skin-tone-1:"] = "\uD83E\uDD3E\uD83C\uDFFB", + [":handball::skin-tone-2:"] = "\uD83E\uDD3E\uD83C\uDFFC", + [":handball::skin-tone-3:"] = "\uD83E\uDD3E\uD83C\uDFFD", + [":handball::skin-tone-4:"] = "\uD83E\uDD3E\uD83C\uDFFE", + [":handball::skin-tone-5:"] = "\uD83E\uDD3E\uD83C\uDFFF", + [":handball_tone1:"] = "\uD83E\uDD3E\uD83C\uDFFB", + [":handball_tone2:"] = "\uD83E\uDD3E\uD83C\uDFFC", + [":handball_tone3:"] = "\uD83E\uDD3E\uD83C\uDFFD", + [":handball_tone4:"] = "\uD83E\uDD3E\uD83C\uDFFE", + [":handball_tone5:"] = "\uD83E\uDD3E\uD83C\uDFFF", + [":handshake:"] = "\uD83E\uDD1D", + [":hankey:"] = "\uD83D\uDCA9", + [":hash:"] = "#️⃣", + [":hatched_chick:"] = "\uD83D\uDC25", + [":hatching_chick:"] = "\uD83D\uDC23", + [":head_bandage:"] = "\uD83E\uDD15", + [":headphones:"] = "\uD83C\uDFA7", + [":hear_no_evil:"] = "\uD83D\uDE49", + [":heart:"] = "❤️", + [":heart_decoration:"] = "\uD83D\uDC9F", + [":heart_exclamation:"] = "❣️", + [":heart_eyes:"] = "\uD83D\uDE0D", + [":heart_eyes_cat:"] = "\uD83D\uDE3B", + [":heartbeat:"] = "\uD83D\uDC93", + [":heartpulse:"] = "\uD83D\uDC97", + [":hearts:"] = "♥️", + [":heavy_check_mark:"] = "✔️", + [":heavy_division_sign:"] = "➗", + [":heavy_dollar_sign:"] = "\uD83D\uDCB2", + [":heavy_heart_exclamation_mark_ornament:"] = "❣️", + [":heavy_minus_sign:"] = "➖", + [":heavy_multiplication_x:"] = "✖️", + [":heavy_plus_sign:"] = "➕", + [":hedgehog:"] = "\uD83E\uDD94", + [":helicopter:"] = "\uD83D\uDE81", + [":helmet_with_cross:"] = "⛑️", + [":helmet_with_white_cross:"] = "⛑️", + [":herb:"] = "\uD83C\uDF3F", + [":hibiscus:"] = "\uD83C\uDF3A", + [":high_brightness:"] = "\uD83D\uDD06", + [":high_heel:"] = "\uD83D\uDC60", + [":hiking_boot:"] = "\uD83E\uDD7E", + [":hindu_temple:"] = "\uD83D\uDED5", + [":hippopotamus:"] = "\uD83E\uDD9B", + [":hockey:"] = "\uD83C\uDFD2", + [":hole:"] = "\uD83D\uDD73️", + [":homes:"] = "\uD83C\uDFD8️", + [":honey_pot:"] = "\uD83C\uDF6F", + [":horse:"] = "\uD83D\uDC34", + [":horse_racing:"] = "\uD83C\uDFC7", + [":horse_racing::skin-tone-1:"] = "\uD83C\uDFC7\uD83C\uDFFB", + [":horse_racing::skin-tone-2:"] = "\uD83C\uDFC7\uD83C\uDFFC", + [":horse_racing::skin-tone-3:"] = "\uD83C\uDFC7\uD83C\uDFFD", + [":horse_racing::skin-tone-4:"] = "\uD83C\uDFC7\uD83C\uDFFE", + [":horse_racing::skin-tone-5:"] = "\uD83C\uDFC7\uD83C\uDFFF", + [":horse_racing_tone1:"] = "\uD83C\uDFC7\uD83C\uDFFB", + [":horse_racing_tone2:"] = "\uD83C\uDFC7\uD83C\uDFFC", + [":horse_racing_tone3:"] = "\uD83C\uDFC7\uD83C\uDFFD", + [":horse_racing_tone4:"] = "\uD83C\uDFC7\uD83C\uDFFE", + [":horse_racing_tone5:"] = "\uD83C\uDFC7\uD83C\uDFFF", + [":hospital:"] = "\uD83C\uDFE5", + [":hot_dog:"] = "\uD83C\uDF2D", + [":hot_face:"] = "\uD83E\uDD75", + [":hot_pepper:"] = "\uD83C\uDF36️", + [":hotdog:"] = "\uD83C\uDF2D", + [":hotel:"] = "\uD83C\uDFE8", + [":hotsprings:"] = "♨️", + [":hourglass:"] = "⌛", + [":hourglass_flowing_sand:"] = "⏳", + [":house:"] = "\uD83C\uDFE0", + [":house_abandoned:"] = "\uD83C\uDFDA️", + [":house_buildings:"] = "\uD83C\uDFD8️", + [":house_with_garden:"] = "\uD83C\uDFE1", + [":hugging:"] = "\uD83E\uDD17", + [":hugging_face:"] = "\uD83E\uDD17", + [":hushed:"] = "\uD83D\uDE2F", + [":ice_cream:"] = "\uD83C\uDF68", + [":ice_cube:"] = "\uD83E\uDDCA", + [":ice_skate:"] = "⛸️", + [":icecream:"] = "\uD83C\uDF66", + [":id:"] = "\uD83C\uDD94", + [":ideograph_advantage:"] = "\uD83C\uDE50", + [":imp:"] = "\uD83D\uDC7F", + [":inbox_tray:"] = "\uD83D\uDCE5", + [":incoming_envelope:"] = "\uD83D\uDCE8", + [":infinity:"] = "♾️", + [":information_desk_person:"] = "\uD83D\uDC81", + [":information_desk_person::skin-tone-1:"] = "\uD83D\uDC81\uD83C\uDFFB", + [":information_desk_person::skin-tone-2:"] = "\uD83D\uDC81\uD83C\uDFFC", + [":information_desk_person::skin-tone-3:"] = "\uD83D\uDC81\uD83C\uDFFD", + [":information_desk_person::skin-tone-4:"] = "\uD83D\uDC81\uD83C\uDFFE", + [":information_desk_person::skin-tone-5:"] = "\uD83D\uDC81\uD83C\uDFFF", + [":information_desk_person_tone1:"] = "\uD83D\uDC81\uD83C\uDFFB", + [":information_desk_person_tone2:"] = "\uD83D\uDC81\uD83C\uDFFC", + [":information_desk_person_tone3:"] = "\uD83D\uDC81\uD83C\uDFFD", + [":information_desk_person_tone4:"] = "\uD83D\uDC81\uD83C\uDFFE", + [":information_desk_person_tone5:"] = "\uD83D\uDC81\uD83C\uDFFF", + [":information_source:"] = "ℹ️", + [":innocent:"] = "\uD83D\uDE07", + [":interrobang:"] = "⁉️", + [":iphone:"] = "\uD83D\uDCF1", + [":island:"] = "\uD83C\uDFDD️", + [":izakaya_lantern:"] = "\uD83C\uDFEE", + [":jack_o_lantern:"] = "\uD83C\uDF83", + [":japan:"] = "\uD83D\uDDFE", + [":japanese_castle:"] = "\uD83C\uDFEF", + [":japanese_goblin:"] = "\uD83D\uDC7A", + [":japanese_ogre:"] = "\uD83D\uDC79", + [":jeans:"] = "\uD83D\uDC56", + [":jigsaw:"] = "\uD83E\uDDE9", + [":joy:"] = "\uD83D\uDE02", + [":joy_cat:"] = "\uD83D\uDE39", + [":joystick:"] = "\uD83D\uDD79️", + [":juggler:"] = "\uD83E\uDD39", + [":juggler::skin-tone-1:"] = "\uD83E\uDD39\uD83C\uDFFB", + [":juggler::skin-tone-2:"] = "\uD83E\uDD39\uD83C\uDFFC", + [":juggler::skin-tone-3:"] = "\uD83E\uDD39\uD83C\uDFFD", + [":juggler::skin-tone-4:"] = "\uD83E\uDD39\uD83C\uDFFE", + [":juggler::skin-tone-5:"] = "\uD83E\uDD39\uD83C\uDFFF", + [":juggler_tone1:"] = "\uD83E\uDD39\uD83C\uDFFB", + [":juggler_tone2:"] = "\uD83E\uDD39\uD83C\uDFFC", + [":juggler_tone3:"] = "\uD83E\uDD39\uD83C\uDFFD", + [":juggler_tone4:"] = "\uD83E\uDD39\uD83C\uDFFE", + [":juggler_tone5:"] = "\uD83E\uDD39\uD83C\uDFFF", + [":juggling:"] = "\uD83E\uDD39", + [":juggling::skin-tone-1:"] = "\uD83E\uDD39\uD83C\uDFFB", + [":juggling::skin-tone-2:"] = "\uD83E\uDD39\uD83C\uDFFC", + [":juggling::skin-tone-3:"] = "\uD83E\uDD39\uD83C\uDFFD", + [":juggling::skin-tone-4:"] = "\uD83E\uDD39\uD83C\uDFFE", + [":juggling::skin-tone-5:"] = "\uD83E\uDD39\uD83C\uDFFF", + [":juggling_tone1:"] = "\uD83E\uDD39\uD83C\uDFFB", + [":juggling_tone2:"] = "\uD83E\uDD39\uD83C\uDFFC", + [":juggling_tone3:"] = "\uD83E\uDD39\uD83C\uDFFD", + [":juggling_tone4:"] = "\uD83E\uDD39\uD83C\uDFFE", + [":juggling_tone5:"] = "\uD83E\uDD39\uD83C\uDFFF", + [":kaaba:"] = "\uD83D\uDD4B", + [":kangaroo:"] = "\uD83E\uDD98", + [":karate_uniform:"] = "\uD83E\uDD4B", + [":kayak:"] = "\uD83D\uDEF6", + [":key2:"] = "\uD83D\uDDDD️", + [":key:"] = "\uD83D\uDD11", + [":keyboard:"] = "⌨️", + [":keycap_asterisk:"] = "*️⃣", + [":keycap_ten:"] = "\uD83D\uDD1F", + [":kimono:"] = "\uD83D\uDC58", + [":kiss:"] = "\uD83D\uDC8B", + [":kiss_mm:"] = "\uD83D\uDC68\u200D❤️\u200D\uD83D\uDC8B\u200D\uD83D\uDC68", + [":kiss_woman_man:"] = "\uD83D\uDC69\u200D❤️\u200D\uD83D\uDC8B\u200D\uD83D\uDC68", + [":kiss_ww:"] = "\uD83D\uDC69\u200D❤️\u200D\uD83D\uDC8B\u200D\uD83D\uDC69", + [":kissing:"] = "\uD83D\uDE17", + [":kissing_cat:"] = "\uD83D\uDE3D", + [":kissing_closed_eyes:"] = "\uD83D\uDE1A", + [":kissing_heart:"] = "\uD83D\uDE18", + [":kissing_smiling_eyes:"] = "\uD83D\uDE19", + [":kite:"] = "\uD83E\uDE81", + [":kiwi:"] = "\uD83E\uDD5D", + [":kiwifruit:"] = "\uD83E\uDD5D", + [":knife:"] = "\uD83D\uDD2A", + [":koala:"] = "\uD83D\uDC28", + [":koko:"] = "\uD83C\uDE01", + [":knot:"] = "\uD83E\uDEA2", + [":lab_coat:"] = "\uD83E\uDD7C", + [":label:"] = "\uD83C\uDFF7️", + [":lacrosse:"] = "\uD83E\uDD4D", + [":large_blue_diamond:"] = "\uD83D\uDD37", + [":large_orange_diamond:"] = "\uD83D\uDD36", + [":last_quarter_moon:"] = "\uD83C\uDF17", + [":last_quarter_moon_with_face:"] = "\uD83C\uDF1C", + [":latin_cross:"] = "✝️", + [":laughing:"] = "\uD83D\uDE06", + [":leafy_green:"] = "\uD83E\uDD6C", + [":leaves:"] = "\uD83C\uDF43", + [":ledger:"] = "\uD83D\uDCD2", + [":left_facing_fist:"] = "\uD83E\uDD1B", + [":left_facing_fist::skin-tone-1:"] = "\uD83E\uDD1B\uD83C\uDFFB", + [":left_facing_fist::skin-tone-2:"] = "\uD83E\uDD1B\uD83C\uDFFC", + [":left_facing_fist::skin-tone-3:"] = "\uD83E\uDD1B\uD83C\uDFFD", + [":left_facing_fist::skin-tone-4:"] = "\uD83E\uDD1B\uD83C\uDFFE", + [":left_facing_fist::skin-tone-5:"] = "\uD83E\uDD1B\uD83C\uDFFF", + [":left_facing_fist_tone1:"] = "\uD83E\uDD1B\uD83C\uDFFB", + [":left_facing_fist_tone2:"] = "\uD83E\uDD1B\uD83C\uDFFC", + [":left_facing_fist_tone3:"] = "\uD83E\uDD1B\uD83C\uDFFD", + [":left_facing_fist_tone4:"] = "\uD83E\uDD1B\uD83C\uDFFE", + [":left_facing_fist_tone5:"] = "\uD83E\uDD1B\uD83C\uDFFF", + [":left_fist:"] = "\uD83E\uDD1B", + [":left_fist::skin-tone-1:"] = "\uD83E\uDD1B\uD83C\uDFFB", + [":left_fist::skin-tone-2:"] = "\uD83E\uDD1B\uD83C\uDFFC", + [":left_fist::skin-tone-3:"] = "\uD83E\uDD1B\uD83C\uDFFD", + [":left_fist::skin-tone-4:"] = "\uD83E\uDD1B\uD83C\uDFFE", + [":left_fist::skin-tone-5:"] = "\uD83E\uDD1B\uD83C\uDFFF", + [":left_fist_tone1:"] = "\uD83E\uDD1B\uD83C\uDFFB", + [":left_fist_tone2:"] = "\uD83E\uDD1B\uD83C\uDFFC", + [":left_fist_tone3:"] = "\uD83E\uDD1B\uD83C\uDFFD", + [":left_fist_tone4:"] = "\uD83E\uDD1B\uD83C\uDFFE", + [":left_fist_tone5:"] = "\uD83E\uDD1B\uD83C\uDFFF", + [":left_luggage:"] = "\uD83D\uDEC5", + [":left_right_arrow:"] = "↔️", + [":left_speech_bubble:"] = "\uD83D\uDDE8️", + [":leftwards_arrow_with_hook:"] = "↩️", + [":leg:"] = "\uD83E\uDDB5", + [":leg::skin-tone-1:"] = "\uD83E\uDDB5\uD83C\uDFFB", + [":leg::skin-tone-2:"] = "\uD83E\uDDB5\uD83C\uDFFC", + [":leg::skin-tone-3:"] = "\uD83E\uDDB5\uD83C\uDFFD", + [":leg::skin-tone-4:"] = "\uD83E\uDDB5\uD83C\uDFFE", + [":leg::skin-tone-5:"] = "\uD83E\uDDB5\uD83C\uDFFF", + [":leg_dark_skin_tone:"] = "\uD83E\uDDB5\uD83C\uDFFF", + [":leg_light_skin_tone:"] = "\uD83E\uDDB5\uD83C\uDFFB", + [":leg_medium_dark_skin_tone:"] = "\uD83E\uDDB5\uD83C\uDFFE", + [":leg_medium_light_skin_tone:"] = "\uD83E\uDDB5\uD83C\uDFFC", + [":leg_medium_skin_tone:"] = "\uD83E\uDDB5\uD83C\uDFFD", + [":leg_tone1:"] = "\uD83E\uDDB5\uD83C\uDFFB", + [":leg_tone2:"] = "\uD83E\uDDB5\uD83C\uDFFC", + [":leg_tone3:"] = "\uD83E\uDDB5\uD83C\uDFFD", + [":leg_tone4:"] = "\uD83E\uDDB5\uD83C\uDFFE", + [":leg_tone5:"] = "\uD83E\uDDB5\uD83C\uDFFF", + [":lemon:"] = "\uD83C\uDF4B", + [":leo:"] = "♌", + [":leopard:"] = "\uD83D\uDC06", + [":level_slider:"] = "\uD83C\uDF9A️", + [":levitate:"] = "\uD83D\uDD74️", + [":levitate::skin-tone-1:"] = "\uD83D\uDD74\uD83C\uDFFB", + [":levitate::skin-tone-2:"] = "\uD83D\uDD74\uD83C\uDFFC", + [":levitate::skin-tone-3:"] = "\uD83D\uDD74\uD83C\uDFFD", + [":levitate::skin-tone-4:"] = "\uD83D\uDD74\uD83C\uDFFE", + [":levitate::skin-tone-5:"] = "\uD83D\uDD74\uD83C\uDFFF", + [":levitate_tone1:"] = "\uD83D\uDD74\uD83C\uDFFB", + [":levitate_tone2:"] = "\uD83D\uDD74\uD83C\uDFFC", + [":levitate_tone3:"] = "\uD83D\uDD74\uD83C\uDFFD", + [":levitate_tone4:"] = "\uD83D\uDD74\uD83C\uDFFE", + [":levitate_tone5:"] = "\uD83D\uDD74\uD83C\uDFFF", + [":liar:"] = "\uD83E\uDD25", + [":libra:"] = "♎", + [":lifter:"] = "\uD83C\uDFCB️", + [":lifter::skin-tone-1:"] = "\uD83C\uDFCB\uD83C\uDFFB", + [":lifter::skin-tone-2:"] = "\uD83C\uDFCB\uD83C\uDFFC", + [":lifter::skin-tone-3:"] = "\uD83C\uDFCB\uD83C\uDFFD", + [":lifter::skin-tone-4:"] = "\uD83C\uDFCB\uD83C\uDFFE", + [":lifter::skin-tone-5:"] = "\uD83C\uDFCB\uD83C\uDFFF", + [":lifter_tone1:"] = "\uD83C\uDFCB\uD83C\uDFFB", + [":lifter_tone2:"] = "\uD83C\uDFCB\uD83C\uDFFC", + [":lifter_tone3:"] = "\uD83C\uDFCB\uD83C\uDFFD", + [":lifter_tone4:"] = "\uD83C\uDFCB\uD83C\uDFFE", + [":lifter_tone5:"] = "\uD83C\uDFCB\uD83C\uDFFF", + [":light_rail:"] = "\uD83D\uDE88", + [":link:"] = "\uD83D\uDD17", + [":linked_paperclips:"] = "\uD83D\uDD87️", + [":lion:"] = "\uD83E\uDD81", + [":lion_face:"] = "\uD83E\uDD81", + [":lips:"] = "\uD83D\uDC44", + [":lipstick:"] = "\uD83D\uDC84", + [":lizard:"] = "\uD83E\uDD8E", + [":llama:"] = "\uD83E\uDD99", + [":lobster:"] = "\uD83E\uDD9E", + [":lock:"] = "\uD83D\uDD12", + [":lock_with_ink_pen:"] = "\uD83D\uDD0F", + [":lollipop:"] = "\uD83C\uDF6D", + [":loop:"] = "➿", + [":loud_sound:"] = "\uD83D\uDD0A", + [":loudspeaker:"] = "\uD83D\uDCE2", + [":love_hotel:"] = "\uD83C\uDFE9", + [":love_letter:"] = "\uD83D\uDC8C", + [":love_you_gesture:"] = "\uD83E\uDD1F", + [":love_you_gesture::skin-tone-1:"] = "\uD83E\uDD1F\uD83C\uDFFB", + [":love_you_gesture::skin-tone-2:"] = "\uD83E\uDD1F\uD83C\uDFFC", + [":love_you_gesture::skin-tone-3:"] = "\uD83E\uDD1F\uD83C\uDFFD", + [":love_you_gesture::skin-tone-4:"] = "\uD83E\uDD1F\uD83C\uDFFE", + [":love_you_gesture::skin-tone-5:"] = "\uD83E\uDD1F\uD83C\uDFFF", + [":love_you_gesture_dark_skin_tone:"] = "\uD83E\uDD1F\uD83C\uDFFF", + [":love_you_gesture_light_skin_tone:"] = "\uD83E\uDD1F\uD83C\uDFFB", + [":love_you_gesture_medium_dark_skin_tone:"] = "\uD83E\uDD1F\uD83C\uDFFE", + [":love_you_gesture_medium_light_skin_tone:"] = "\uD83E\uDD1F\uD83C\uDFFC", + [":love_you_gesture_medium_skin_tone:"] = "\uD83E\uDD1F\uD83C\uDFFD", + [":love_you_gesture_tone1:"] = "\uD83E\uDD1F\uD83C\uDFFB", + [":love_you_gesture_tone2:"] = "\uD83E\uDD1F\uD83C\uDFFC", + [":love_you_gesture_tone3:"] = "\uD83E\uDD1F\uD83C\uDFFD", + [":love_you_gesture_tone4:"] = "\uD83E\uDD1F\uD83C\uDFFE", + [":love_you_gesture_tone5:"] = "\uD83E\uDD1F\uD83C\uDFFF", + [":low_brightness:"] = "\uD83D\uDD05", + [":lower_left_ballpoint_pen:"] = "\uD83D\uDD8A️", + [":lower_left_crayon:"] = "\uD83D\uDD8D️", + [":lower_left_fountain_pen:"] = "\uD83D\uDD8B️", + [":lower_left_paintbrush:"] = "\uD83D\uDD8C️", + [":luggage:"] = "\uD83E\uDDF3", + [":lying_face:"] = "\uD83E\uDD25", + [":m:"] = "Ⓜ️", + [":mag:"] = "\uD83D\uDD0D", + [":mag_right:"] = "\uD83D\uDD0E", + [":mage:"] = "\uD83E\uDDD9", + [":mage::skin-tone-1:"] = "\uD83E\uDDD9\uD83C\uDFFB", + [":mage::skin-tone-2:"] = "\uD83E\uDDD9\uD83C\uDFFC", + [":mage::skin-tone-3:"] = "\uD83E\uDDD9\uD83C\uDFFD", + [":mage::skin-tone-4:"] = "\uD83E\uDDD9\uD83C\uDFFE", + [":mage::skin-tone-5:"] = "\uD83E\uDDD9\uD83C\uDFFF", + [":mage_dark_skin_tone:"] = "\uD83E\uDDD9\uD83C\uDFFF", + [":mage_light_skin_tone:"] = "\uD83E\uDDD9\uD83C\uDFFB", + [":mage_medium_dark_skin_tone:"] = "\uD83E\uDDD9\uD83C\uDFFE", + [":mage_medium_light_skin_tone:"] = "\uD83E\uDDD9\uD83C\uDFFC", + [":mage_medium_skin_tone:"] = "\uD83E\uDDD9\uD83C\uDFFD", + [":mage_tone1:"] = "\uD83E\uDDD9\uD83C\uDFFB", + [":mage_tone2:"] = "\uD83E\uDDD9\uD83C\uDFFC", + [":mage_tone3:"] = "\uD83E\uDDD9\uD83C\uDFFD", + [":mage_tone4:"] = "\uD83E\uDDD9\uD83C\uDFFE", + [":mage_tone5:"] = "\uD83E\uDDD9\uD83C\uDFFF", + [":magnet:"] = "\uD83E\uDDF2", + [":mahjong:"] = "\uD83C\uDC04", + [":mailbox:"] = "\uD83D\uDCEB", + [":mailbox_closed:"] = "\uD83D\uDCEA", + [":mailbox_with_mail:"] = "\uD83D\uDCEC", + [":mailbox_with_no_mail:"] = "\uD83D\uDCED", + [":male_dancer:"] = "\uD83D\uDD7A", + [":male_dancer::skin-tone-1:"] = "\uD83D\uDD7A\uD83C\uDFFB", + [":male_dancer::skin-tone-2:"] = "\uD83D\uDD7A\uD83C\uDFFC", + [":male_dancer::skin-tone-3:"] = "\uD83D\uDD7A\uD83C\uDFFD", + [":male_dancer::skin-tone-4:"] = "\uD83D\uDD7A\uD83C\uDFFE", + [":male_dancer::skin-tone-5:"] = "\uD83D\uDD7A\uD83C\uDFFF", + [":male_dancer_tone1:"] = "\uD83D\uDD7A\uD83C\uDFFB", + [":male_dancer_tone2:"] = "\uD83D\uDD7A\uD83C\uDFFC", + [":male_dancer_tone3:"] = "\uD83D\uDD7A\uD83C\uDFFD", + [":male_dancer_tone4:"] = "\uD83D\uDD7A\uD83C\uDFFE", + [":male_dancer_tone5:"] = "\uD83D\uDD7A\uD83C\uDFFF", + [":male_sign:"] = "♂️", + [":man:"] = "\uD83D\uDC68", + [":man::skin-tone-1:"] = "\uD83D\uDC68\uD83C\uDFFB", + [":man::skin-tone-2:"] = "\uD83D\uDC68\uD83C\uDFFC", + [":man::skin-tone-3:"] = "\uD83D\uDC68\uD83C\uDFFD", + [":man::skin-tone-4:"] = "\uD83D\uDC68\uD83C\uDFFE", + [":man::skin-tone-5:"] = "\uD83D\uDC68\uD83C\uDFFF", + [":man_artist:"] = "\uD83D\uDC68\u200D\uD83C\uDFA8", + [":man_artist::skin-tone-1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDFA8", + [":man_artist::skin-tone-2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8", + [":man_artist::skin-tone-3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDFA8", + [":man_artist::skin-tone-4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDFA8", + [":man_artist::skin-tone-5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDFA8", + [":man_artist_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDFA8", + [":man_artist_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDFA8", + [":man_artist_medium_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDFA8", + [":man_artist_medium_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8", + [":man_artist_medium_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDFA8", + [":man_artist_tone1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDFA8", + [":man_artist_tone2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8", + [":man_artist_tone3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDFA8", + [":man_artist_tone4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDFA8", + [":man_artist_tone5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDFA8", + [":man_astronaut:"] = "\uD83D\uDC68\u200D\uD83D\uDE80", + [":man_astronaut::skin-tone-1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDE80", + [":man_astronaut::skin-tone-2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDE80", + [":man_astronaut::skin-tone-3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDE80", + [":man_astronaut::skin-tone-4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDE80", + [":man_astronaut::skin-tone-5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDE80", + [":man_astronaut_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDE80", + [":man_astronaut_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDE80", + [":man_astronaut_medium_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDE80", + [":man_astronaut_medium_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDE80", + [":man_astronaut_medium_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDE80", + [":man_astronaut_tone1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDE80", + [":man_astronaut_tone2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDE80", + [":man_astronaut_tone3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDE80", + [":man_astronaut_tone4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDE80", + [":man_astronaut_tone5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDE80", + [":man_bald:"] = "\uD83D\uDC68\u200D\uD83E\uDDB2", + [":man_bald::skin-tone-1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDB2", + [":man_bald::skin-tone-2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDB2", + [":man_bald::skin-tone-3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDB2", + [":man_bald::skin-tone-4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDB2", + [":man_bald::skin-tone-5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDB2", + [":man_bald_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDB2", + [":man_bald_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDB2", + [":man_bald_medium_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDB2", + [":man_bald_medium_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDB2", + [":man_bald_medium_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDB2", + [":man_bald_tone1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDB2", + [":man_bald_tone2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDB2", + [":man_bald_tone3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDB2", + [":man_bald_tone4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDB2", + [":man_bald_tone5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDB2", + [":man_biking:"] = "\uD83D\uDEB4\u200D♂️", + [":man_biking::skin-tone-1:"] = "\uD83D\uDEB4\uD83C\uDFFB\u200D♂️", + [":man_biking::skin-tone-2:"] = "\uD83D\uDEB4\uD83C\uDFFC\u200D♂️", + [":man_biking::skin-tone-3:"] = "\uD83D\uDEB4\uD83C\uDFFD\u200D♂️", + [":man_biking::skin-tone-4:"] = "\uD83D\uDEB4\uD83C\uDFFE\u200D♂️", + [":man_biking::skin-tone-5:"] = "\uD83D\uDEB4\uD83C\uDFFF\u200D♂️", + [":man_biking_dark_skin_tone:"] = "\uD83D\uDEB4\uD83C\uDFFF\u200D♂️", + [":man_biking_light_skin_tone:"] = "\uD83D\uDEB4\uD83C\uDFFB\u200D♂️", + [":man_biking_medium_dark_skin_tone:"] = "\uD83D\uDEB4\uD83C\uDFFE\u200D♂️", + [":man_biking_medium_light_skin_tone:"] = "\uD83D\uDEB4\uD83C\uDFFC\u200D♂️", + [":man_biking_medium_skin_tone:"] = "\uD83D\uDEB4\uD83C\uDFFD\u200D♂️", + [":man_biking_tone1:"] = "\uD83D\uDEB4\uD83C\uDFFB\u200D♂️", + [":man_biking_tone2:"] = "\uD83D\uDEB4\uD83C\uDFFC\u200D♂️", + [":man_biking_tone3:"] = "\uD83D\uDEB4\uD83C\uDFFD\u200D♂️", + [":man_biking_tone4:"] = "\uD83D\uDEB4\uD83C\uDFFE\u200D♂️", + [":man_biking_tone5:"] = "\uD83D\uDEB4\uD83C\uDFFF\u200D♂️", + [":man_bouncing_ball:"] = "⛹️\u200D♂️", + [":man_bouncing_ball::skin-tone-1:"] = "⛹\uD83C\uDFFB\u200D♂️", + [":man_bouncing_ball::skin-tone-2:"] = "⛹\uD83C\uDFFC\u200D♂️", + [":man_bouncing_ball::skin-tone-3:"] = "⛹\uD83C\uDFFD\u200D♂️", + [":man_bouncing_ball::skin-tone-4:"] = "⛹\uD83C\uDFFE\u200D♂️", + [":man_bouncing_ball::skin-tone-5:"] = "⛹\uD83C\uDFFF\u200D♂️", + [":man_bouncing_ball_dark_skin_tone:"] = "⛹\uD83C\uDFFF\u200D♂️", + [":man_bouncing_ball_light_skin_tone:"] = "⛹\uD83C\uDFFB\u200D♂️", + [":man_bouncing_ball_medium_dark_skin_tone:"] = "⛹\uD83C\uDFFE\u200D♂️", + [":man_bouncing_ball_medium_light_skin_tone:"] = "⛹\uD83C\uDFFC\u200D♂️", + [":man_bouncing_ball_medium_skin_tone:"] = "⛹\uD83C\uDFFD\u200D♂️", + [":man_bouncing_ball_tone1:"] = "⛹\uD83C\uDFFB\u200D♂️", + [":man_bouncing_ball_tone2:"] = "⛹\uD83C\uDFFC\u200D♂️", + [":man_bouncing_ball_tone3:"] = "⛹\uD83C\uDFFD\u200D♂️", + [":man_bouncing_ball_tone4:"] = "⛹\uD83C\uDFFE\u200D♂️", + [":man_bouncing_ball_tone5:"] = "⛹\uD83C\uDFFF\u200D♂️", + [":man_bowing:"] = "\uD83D\uDE47\u200D♂️", + [":man_bowing::skin-tone-1:"] = "\uD83D\uDE47\uD83C\uDFFB\u200D♂️", + [":man_bowing::skin-tone-2:"] = "\uD83D\uDE47\uD83C\uDFFC\u200D♂️", + [":man_bowing::skin-tone-3:"] = "\uD83D\uDE47\uD83C\uDFFD\u200D♂️", + [":man_bowing::skin-tone-4:"] = "\uD83D\uDE47\uD83C\uDFFE\u200D♂️", + [":man_bowing::skin-tone-5:"] = "\uD83D\uDE47\uD83C\uDFFF\u200D♂️", + [":man_bowing_dark_skin_tone:"] = "\uD83D\uDE47\uD83C\uDFFF\u200D♂️", + [":man_bowing_light_skin_tone:"] = "\uD83D\uDE47\uD83C\uDFFB\u200D♂️", + [":man_bowing_medium_dark_skin_tone:"] = "\uD83D\uDE47\uD83C\uDFFE\u200D♂️", + [":man_bowing_medium_light_skin_tone:"] = "\uD83D\uDE47\uD83C\uDFFC\u200D♂️", + [":man_bowing_medium_skin_tone:"] = "\uD83D\uDE47\uD83C\uDFFD\u200D♂️", + [":man_bowing_tone1:"] = "\uD83D\uDE47\uD83C\uDFFB\u200D♂️", + [":man_bowing_tone2:"] = "\uD83D\uDE47\uD83C\uDFFC\u200D♂️", + [":man_bowing_tone3:"] = "\uD83D\uDE47\uD83C\uDFFD\u200D♂️", + [":man_bowing_tone4:"] = "\uD83D\uDE47\uD83C\uDFFE\u200D♂️", + [":man_bowing_tone5:"] = "\uD83D\uDE47\uD83C\uDFFF\u200D♂️", + [":man_cartwheeling:"] = "\uD83E\uDD38\u200D♂️", + [":man_cartwheeling::skin-tone-1:"] = "\uD83E\uDD38\uD83C\uDFFB\u200D♂️", + [":man_cartwheeling::skin-tone-2:"] = "\uD83E\uDD38\uD83C\uDFFC\u200D♂️", + [":man_cartwheeling::skin-tone-3:"] = "\uD83E\uDD38\uD83C\uDFFD\u200D♂️", + [":man_cartwheeling::skin-tone-4:"] = "\uD83E\uDD38\uD83C\uDFFE\u200D♂️", + [":man_cartwheeling::skin-tone-5:"] = "\uD83E\uDD38\uD83C\uDFFF\u200D♂️", + [":man_cartwheeling_dark_skin_tone:"] = "\uD83E\uDD38\uD83C\uDFFF\u200D♂️", + [":man_cartwheeling_light_skin_tone:"] = "\uD83E\uDD38\uD83C\uDFFB\u200D♂️", + [":man_cartwheeling_medium_dark_skin_tone:"] = "\uD83E\uDD38\uD83C\uDFFE\u200D♂️", + [":man_cartwheeling_medium_light_skin_tone:"] = "\uD83E\uDD38\uD83C\uDFFC\u200D♂️", + [":man_cartwheeling_medium_skin_tone:"] = "\uD83E\uDD38\uD83C\uDFFD\u200D♂️", + [":man_cartwheeling_tone1:"] = "\uD83E\uDD38\uD83C\uDFFB\u200D♂️", + [":man_cartwheeling_tone2:"] = "\uD83E\uDD38\uD83C\uDFFC\u200D♂️", + [":man_cartwheeling_tone3:"] = "\uD83E\uDD38\uD83C\uDFFD\u200D♂️", + [":man_cartwheeling_tone4:"] = "\uD83E\uDD38\uD83C\uDFFE\u200D♂️", + [":man_cartwheeling_tone5:"] = "\uD83E\uDD38\uD83C\uDFFF\u200D♂️", + [":man_climbing:"] = "\uD83E\uDDD7\u200D♂️", + [":man_climbing::skin-tone-1:"] = "\uD83E\uDDD7\uD83C\uDFFB\u200D♂️", + [":man_climbing::skin-tone-2:"] = "\uD83E\uDDD7\uD83C\uDFFC\u200D♂️", + [":man_climbing::skin-tone-3:"] = "\uD83E\uDDD7\uD83C\uDFFD\u200D♂️", + [":man_climbing::skin-tone-4:"] = "\uD83E\uDDD7\uD83C\uDFFE\u200D♂️", + [":man_climbing::skin-tone-5:"] = "\uD83E\uDDD7\uD83C\uDFFF\u200D♂️", + [":man_climbing_dark_skin_tone:"] = "\uD83E\uDDD7\uD83C\uDFFF\u200D♂️", + [":man_climbing_light_skin_tone:"] = "\uD83E\uDDD7\uD83C\uDFFB\u200D♂️", + [":man_climbing_medium_dark_skin_tone:"] = "\uD83E\uDDD7\uD83C\uDFFE\u200D♂️", + [":man_climbing_medium_light_skin_tone:"] = "\uD83E\uDDD7\uD83C\uDFFC\u200D♂️", + [":man_climbing_medium_skin_tone:"] = "\uD83E\uDDD7\uD83C\uDFFD\u200D♂️", + [":man_climbing_tone1:"] = "\uD83E\uDDD7\uD83C\uDFFB\u200D♂️", + [":man_climbing_tone2:"] = "\uD83E\uDDD7\uD83C\uDFFC\u200D♂️", + [":man_climbing_tone3:"] = "\uD83E\uDDD7\uD83C\uDFFD\u200D♂️", + [":man_climbing_tone4:"] = "\uD83E\uDDD7\uD83C\uDFFE\u200D♂️", + [":man_climbing_tone5:"] = "\uD83E\uDDD7\uD83C\uDFFF\u200D♂️", + [":man_construction_worker:"] = "\uD83D\uDC77\u200D♂️", + [":man_construction_worker::skin-tone-1:"] = "\uD83D\uDC77\uD83C\uDFFB\u200D♂️", + [":man_construction_worker::skin-tone-2:"] = "\uD83D\uDC77\uD83C\uDFFC\u200D♂️", + [":man_construction_worker::skin-tone-3:"] = "\uD83D\uDC77\uD83C\uDFFD\u200D♂️", + [":man_construction_worker::skin-tone-4:"] = "\uD83D\uDC77\uD83C\uDFFE\u200D♂️", + [":man_construction_worker::skin-tone-5:"] = "\uD83D\uDC77\uD83C\uDFFF\u200D♂️", + [":man_construction_worker_dark_skin_tone:"] = "\uD83D\uDC77\uD83C\uDFFF\u200D♂️", + [":man_construction_worker_light_skin_tone:"] = "\uD83D\uDC77\uD83C\uDFFB\u200D♂️", + [":man_construction_worker_medium_dark_skin_tone:"] = "\uD83D\uDC77\uD83C\uDFFE\u200D♂️", + [":man_construction_worker_medium_light_skin_tone:"] = "\uD83D\uDC77\uD83C\uDFFC\u200D♂️", + [":man_construction_worker_medium_skin_tone:"] = "\uD83D\uDC77\uD83C\uDFFD\u200D♂️", + [":man_construction_worker_tone1:"] = "\uD83D\uDC77\uD83C\uDFFB\u200D♂️", + [":man_construction_worker_tone2:"] = "\uD83D\uDC77\uD83C\uDFFC\u200D♂️", + [":man_construction_worker_tone3:"] = "\uD83D\uDC77\uD83C\uDFFD\u200D♂️", + [":man_construction_worker_tone4:"] = "\uD83D\uDC77\uD83C\uDFFE\u200D♂️", + [":man_construction_worker_tone5:"] = "\uD83D\uDC77\uD83C\uDFFF\u200D♂️", + [":man_cook:"] = "\uD83D\uDC68\u200D\uD83C\uDF73", + [":man_cook::skin-tone-1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDF73", + [":man_cook::skin-tone-2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDF73", + [":man_cook::skin-tone-3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDF73", + [":man_cook::skin-tone-4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDF73", + [":man_cook::skin-tone-5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDF73", + [":man_cook_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDF73", + [":man_cook_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDF73", + [":man_cook_medium_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDF73", + [":man_cook_medium_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDF73", + [":man_cook_medium_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDF73", + [":man_cook_tone1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDF73", + [":man_cook_tone2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDF73", + [":man_cook_tone3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDF73", + [":man_cook_tone4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDF73", + [":man_cook_tone5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDF73", + [":man_curly_haired:"] = "\uD83D\uDC68\u200D\uD83E\uDDB1", + [":man_curly_haired::skin-tone-1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDB1", + [":man_curly_haired::skin-tone-2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDB1", + [":man_curly_haired::skin-tone-3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDB1", + [":man_curly_haired::skin-tone-4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDB1", + [":man_curly_haired::skin-tone-5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDB1", + [":man_curly_haired_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDB1", + [":man_curly_haired_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDB1", + [":man_curly_haired_medium_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDB1", + [":man_curly_haired_medium_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDB1", + [":man_curly_haired_medium_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDB1", + [":man_curly_haired_tone1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDB1", + [":man_curly_haired_tone2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDB1", + [":man_curly_haired_tone3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDB1", + [":man_curly_haired_tone4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDB1", + [":man_curly_haired_tone5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDB1", + [":man_dancing:"] = "\uD83D\uDD7A", + [":man_dancing::skin-tone-1:"] = "\uD83D\uDD7A\uD83C\uDFFB", + [":man_dancing::skin-tone-2:"] = "\uD83D\uDD7A\uD83C\uDFFC", + [":man_dancing::skin-tone-3:"] = "\uD83D\uDD7A\uD83C\uDFFD", + [":man_dancing::skin-tone-4:"] = "\uD83D\uDD7A\uD83C\uDFFE", + [":man_dancing::skin-tone-5:"] = "\uD83D\uDD7A\uD83C\uDFFF", + [":man_dancing_tone1:"] = "\uD83D\uDD7A\uD83C\uDFFB", + [":man_dancing_tone2:"] = "\uD83D\uDD7A\uD83C\uDFFC", + [":man_dancing_tone3:"] = "\uD83D\uDD7A\uD83C\uDFFD", + [":man_dancing_tone4:"] = "\uD83D\uDD7A\uD83C\uDFFE", + [":man_dancing_tone5:"] = "\uD83D\uDD7A\uD83C\uDFFF", + [":man_detective:"] = "\uD83D\uDD75️\u200D♂️", + [":man_detective::skin-tone-1:"] = "\uD83D\uDD75\uD83C\uDFFB\u200D♂️", + [":man_detective::skin-tone-2:"] = "\uD83D\uDD75\uD83C\uDFFC\u200D♂️", + [":man_detective::skin-tone-3:"] = "\uD83D\uDD75\uD83C\uDFFD\u200D♂️", + [":man_detective::skin-tone-4:"] = "\uD83D\uDD75\uD83C\uDFFE\u200D♂️", + [":man_detective::skin-tone-5:"] = "\uD83D\uDD75\uD83C\uDFFF\u200D♂️", + [":man_detective_dark_skin_tone:"] = "\uD83D\uDD75\uD83C\uDFFF\u200D♂️", + [":man_detective_light_skin_tone:"] = "\uD83D\uDD75\uD83C\uDFFB\u200D♂️", + [":man_detective_medium_dark_skin_tone:"] = "\uD83D\uDD75\uD83C\uDFFE\u200D♂️", + [":man_detective_medium_light_skin_tone:"] = "\uD83D\uDD75\uD83C\uDFFC\u200D♂️", + [":man_detective_medium_skin_tone:"] = "\uD83D\uDD75\uD83C\uDFFD\u200D♂️", + [":man_detective_tone1:"] = "\uD83D\uDD75\uD83C\uDFFB\u200D♂️", + [":man_detective_tone2:"] = "\uD83D\uDD75\uD83C\uDFFC\u200D♂️", + [":man_detective_tone3:"] = "\uD83D\uDD75\uD83C\uDFFD\u200D♂️", + [":man_detective_tone4:"] = "\uD83D\uDD75\uD83C\uDFFE\u200D♂️", + [":man_detective_tone5:"] = "\uD83D\uDD75\uD83C\uDFFF\u200D♂️", + [":man_elf:"] = "\uD83E\uDDDD\u200D♂️", + [":man_elf::skin-tone-1:"] = "\uD83E\uDDDD\uD83C\uDFFB\u200D♂️", + [":man_elf::skin-tone-2:"] = "\uD83E\uDDDD\uD83C\uDFFC\u200D♂️", + [":man_elf::skin-tone-3:"] = "\uD83E\uDDDD\uD83C\uDFFD\u200D♂️", + [":man_elf::skin-tone-4:"] = "\uD83E\uDDDD\uD83C\uDFFE\u200D♂️", + [":man_elf::skin-tone-5:"] = "\uD83E\uDDDD\uD83C\uDFFF\u200D♂️", + [":man_elf_dark_skin_tone:"] = "\uD83E\uDDDD\uD83C\uDFFF\u200D♂️", + [":man_elf_light_skin_tone:"] = "\uD83E\uDDDD\uD83C\uDFFB\u200D♂️", + [":man_elf_medium_dark_skin_tone:"] = "\uD83E\uDDDD\uD83C\uDFFE\u200D♂️", + [":man_elf_medium_light_skin_tone:"] = "\uD83E\uDDDD\uD83C\uDFFC\u200D♂️", + [":man_elf_medium_skin_tone:"] = "\uD83E\uDDDD\uD83C\uDFFD\u200D♂️", + [":man_elf_tone1:"] = "\uD83E\uDDDD\uD83C\uDFFB\u200D♂️", + [":man_elf_tone2:"] = "\uD83E\uDDDD\uD83C\uDFFC\u200D♂️", + [":man_elf_tone3:"] = "\uD83E\uDDDD\uD83C\uDFFD\u200D♂️", + [":man_elf_tone4:"] = "\uD83E\uDDDD\uD83C\uDFFE\u200D♂️", + [":man_elf_tone5:"] = "\uD83E\uDDDD\uD83C\uDFFF\u200D♂️", + [":man_facepalming:"] = "\uD83E\uDD26\u200D♂️", + [":man_facepalming::skin-tone-1:"] = "\uD83E\uDD26\uD83C\uDFFB\u200D♂️", + [":man_facepalming::skin-tone-2:"] = "\uD83E\uDD26\uD83C\uDFFC\u200D♂️", + [":man_facepalming::skin-tone-3:"] = "\uD83E\uDD26\uD83C\uDFFD\u200D♂️", + [":man_facepalming::skin-tone-4:"] = "\uD83E\uDD26\uD83C\uDFFE\u200D♂️", + [":man_facepalming::skin-tone-5:"] = "\uD83E\uDD26\uD83C\uDFFF\u200D♂️", + [":man_facepalming_dark_skin_tone:"] = "\uD83E\uDD26\uD83C\uDFFF\u200D♂️", + [":man_facepalming_light_skin_tone:"] = "\uD83E\uDD26\uD83C\uDFFB\u200D♂️", + [":man_facepalming_medium_dark_skin_tone:"] = "\uD83E\uDD26\uD83C\uDFFE\u200D♂️", + [":man_facepalming_medium_light_skin_tone:"] = "\uD83E\uDD26\uD83C\uDFFC\u200D♂️", + [":man_facepalming_medium_skin_tone:"] = "\uD83E\uDD26\uD83C\uDFFD\u200D♂️", + [":man_facepalming_tone1:"] = "\uD83E\uDD26\uD83C\uDFFB\u200D♂️", + [":man_facepalming_tone2:"] = "\uD83E\uDD26\uD83C\uDFFC\u200D♂️", + [":man_facepalming_tone3:"] = "\uD83E\uDD26\uD83C\uDFFD\u200D♂️", + [":man_facepalming_tone4:"] = "\uD83E\uDD26\uD83C\uDFFE\u200D♂️", + [":man_facepalming_tone5:"] = "\uD83E\uDD26\uD83C\uDFFF\u200D♂️", + [":man_factory_worker:"] = "\uD83D\uDC68\u200D\uD83C\uDFED", + [":man_factory_worker::skin-tone-1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDFED", + [":man_factory_worker::skin-tone-2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFED", + [":man_factory_worker::skin-tone-3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDFED", + [":man_factory_worker::skin-tone-4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDFED", + [":man_factory_worker::skin-tone-5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDFED", + [":man_factory_worker_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDFED", + [":man_factory_worker_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDFED", + [":man_factory_worker_medium_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDFED", + [":man_factory_worker_medium_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFED", + [":man_factory_worker_medium_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDFED", + [":man_factory_worker_tone1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDFED", + [":man_factory_worker_tone2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFED", + [":man_factory_worker_tone3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDFED", + [":man_factory_worker_tone4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDFED", + [":man_factory_worker_tone5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDFED", + [":man_fairy:"] = "\uD83E\uDDDA\u200D♂️", + [":man_fairy::skin-tone-1:"] = "\uD83E\uDDDA\uD83C\uDFFB\u200D♂️", + [":man_fairy::skin-tone-2:"] = "\uD83E\uDDDA\uD83C\uDFFC\u200D♂️", + [":man_fairy::skin-tone-3:"] = "\uD83E\uDDDA\uD83C\uDFFD\u200D♂️", + [":man_fairy::skin-tone-4:"] = "\uD83E\uDDDA\uD83C\uDFFE\u200D♂️", + [":man_fairy::skin-tone-5:"] = "\uD83E\uDDDA\uD83C\uDFFF\u200D♂️", + [":man_fairy_dark_skin_tone:"] = "\uD83E\uDDDA\uD83C\uDFFF\u200D♂️", + [":man_fairy_light_skin_tone:"] = "\uD83E\uDDDA\uD83C\uDFFB\u200D♂️", + [":man_fairy_medium_dark_skin_tone:"] = "\uD83E\uDDDA\uD83C\uDFFE\u200D♂️", + [":man_fairy_medium_light_skin_tone:"] = "\uD83E\uDDDA\uD83C\uDFFC\u200D♂️", + [":man_fairy_medium_skin_tone:"] = "\uD83E\uDDDA\uD83C\uDFFD\u200D♂️", + [":man_fairy_tone1:"] = "\uD83E\uDDDA\uD83C\uDFFB\u200D♂️", + [":man_fairy_tone2:"] = "\uD83E\uDDDA\uD83C\uDFFC\u200D♂️", + [":man_fairy_tone3:"] = "\uD83E\uDDDA\uD83C\uDFFD\u200D♂️", + [":man_fairy_tone4:"] = "\uD83E\uDDDA\uD83C\uDFFE\u200D♂️", + [":man_fairy_tone5:"] = "\uD83E\uDDDA\uD83C\uDFFF\u200D♂️", + [":man_farmer:"] = "\uD83D\uDC68\u200D\uD83C\uDF3E", + [":man_farmer::skin-tone-1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDF3E", + [":man_farmer::skin-tone-2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDF3E", + [":man_farmer::skin-tone-3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDF3E", + [":man_farmer::skin-tone-4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDF3E", + [":man_farmer::skin-tone-5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDF3E", + [":man_farmer_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDF3E", + [":man_farmer_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDF3E", + [":man_farmer_medium_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDF3E", + [":man_farmer_medium_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDF3E", + [":man_farmer_medium_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDF3E", + [":man_farmer_tone1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDF3E", + [":man_farmer_tone2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDF3E", + [":man_farmer_tone3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDF3E", + [":man_farmer_tone4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDF3E", + [":man_farmer_tone5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDF3E", + [":man_firefighter:"] = "\uD83D\uDC68\u200D\uD83D\uDE92", + [":man_firefighter::skin-tone-1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDE92", + [":man_firefighter::skin-tone-2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDE92", + [":man_firefighter::skin-tone-3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDE92", + [":man_firefighter::skin-tone-4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDE92", + [":man_firefighter::skin-tone-5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDE92", + [":man_firefighter_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDE92", + [":man_firefighter_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDE92", + [":man_firefighter_medium_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDE92", + [":man_firefighter_medium_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDE92", + [":man_firefighter_medium_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDE92", + [":man_firefighter_tone1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDE92", + [":man_firefighter_tone2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDE92", + [":man_firefighter_tone3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDE92", + [":man_firefighter_tone4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDE92", + [":man_firefighter_tone5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDE92", + [":man_frowning:"] = "\uD83D\uDE4D\u200D♂️", + [":man_frowning::skin-tone-1:"] = "\uD83D\uDE4D\uD83C\uDFFB\u200D♂️", + [":man_frowning::skin-tone-2:"] = "\uD83D\uDE4D\uD83C\uDFFC\u200D♂️", + [":man_frowning::skin-tone-3:"] = "\uD83D\uDE4D\uD83C\uDFFD\u200D♂️", + [":man_frowning::skin-tone-4:"] = "\uD83D\uDE4D\uD83C\uDFFE\u200D♂️", + [":man_frowning::skin-tone-5:"] = "\uD83D\uDE4D\uD83C\uDFFF\u200D♂️", + [":man_frowning_dark_skin_tone:"] = "\uD83D\uDE4D\uD83C\uDFFF\u200D♂️", + [":man_frowning_light_skin_tone:"] = "\uD83D\uDE4D\uD83C\uDFFB\u200D♂️", + [":man_frowning_medium_dark_skin_tone:"] = "\uD83D\uDE4D\uD83C\uDFFE\u200D♂️", + [":man_frowning_medium_light_skin_tone:"] = "\uD83D\uDE4D\uD83C\uDFFC\u200D♂️", + [":man_frowning_medium_skin_tone:"] = "\uD83D\uDE4D\uD83C\uDFFD\u200D♂️", + [":man_frowning_tone1:"] = "\uD83D\uDE4D\uD83C\uDFFB\u200D♂️", + [":man_frowning_tone2:"] = "\uD83D\uDE4D\uD83C\uDFFC\u200D♂️", + [":man_frowning_tone3:"] = "\uD83D\uDE4D\uD83C\uDFFD\u200D♂️", + [":man_frowning_tone4:"] = "\uD83D\uDE4D\uD83C\uDFFE\u200D♂️", + [":man_frowning_tone5:"] = "\uD83D\uDE4D\uD83C\uDFFF\u200D♂️", + [":man_genie:"] = "\uD83E\uDDDE\u200D♂️", + [":man_gesturing_no:"] = "\uD83D\uDE45\u200D♂️", + [":man_gesturing_no::skin-tone-1:"] = "\uD83D\uDE45\uD83C\uDFFB\u200D♂️", + [":man_gesturing_no::skin-tone-2:"] = "\uD83D\uDE45\uD83C\uDFFC\u200D♂️", + [":man_gesturing_no::skin-tone-3:"] = "\uD83D\uDE45\uD83C\uDFFD\u200D♂️", + [":man_gesturing_no::skin-tone-4:"] = "\uD83D\uDE45\uD83C\uDFFE\u200D♂️", + [":man_gesturing_no::skin-tone-5:"] = "\uD83D\uDE45\uD83C\uDFFF\u200D♂️", + [":man_gesturing_no_dark_skin_tone:"] = "\uD83D\uDE45\uD83C\uDFFF\u200D♂️", + [":man_gesturing_no_light_skin_tone:"] = "\uD83D\uDE45\uD83C\uDFFB\u200D♂️", + [":man_gesturing_no_medium_dark_skin_tone:"] = "\uD83D\uDE45\uD83C\uDFFE\u200D♂️", + [":man_gesturing_no_medium_light_skin_tone:"] = "\uD83D\uDE45\uD83C\uDFFC\u200D♂️", + [":man_gesturing_no_medium_skin_tone:"] = "\uD83D\uDE45\uD83C\uDFFD\u200D♂️", + [":man_gesturing_no_tone1:"] = "\uD83D\uDE45\uD83C\uDFFB\u200D♂️", + [":man_gesturing_no_tone2:"] = "\uD83D\uDE45\uD83C\uDFFC\u200D♂️", + [":man_gesturing_no_tone3:"] = "\uD83D\uDE45\uD83C\uDFFD\u200D♂️", + [":man_gesturing_no_tone4:"] = "\uD83D\uDE45\uD83C\uDFFE\u200D♂️", + [":man_gesturing_no_tone5:"] = "\uD83D\uDE45\uD83C\uDFFF\u200D♂️", + [":man_gesturing_ok:"] = "\uD83D\uDE46\u200D♂️", + [":man_gesturing_ok::skin-tone-1:"] = "\uD83D\uDE46\uD83C\uDFFB\u200D♂️", + [":man_gesturing_ok::skin-tone-2:"] = "\uD83D\uDE46\uD83C\uDFFC\u200D♂️", + [":man_gesturing_ok::skin-tone-3:"] = "\uD83D\uDE46\uD83C\uDFFD\u200D♂️", + [":man_gesturing_ok::skin-tone-4:"] = "\uD83D\uDE46\uD83C\uDFFE\u200D♂️", + [":man_gesturing_ok::skin-tone-5:"] = "\uD83D\uDE46\uD83C\uDFFF\u200D♂️", + [":man_gesturing_ok_dark_skin_tone:"] = "\uD83D\uDE46\uD83C\uDFFF\u200D♂️", + [":man_gesturing_ok_light_skin_tone:"] = "\uD83D\uDE46\uD83C\uDFFB\u200D♂️", + [":man_gesturing_ok_medium_dark_skin_tone:"] = "\uD83D\uDE46\uD83C\uDFFE\u200D♂️", + [":man_gesturing_ok_medium_light_skin_tone:"] = "\uD83D\uDE46\uD83C\uDFFC\u200D♂️", + [":man_gesturing_ok_medium_skin_tone:"] = "\uD83D\uDE46\uD83C\uDFFD\u200D♂️", + [":man_gesturing_ok_tone1:"] = "\uD83D\uDE46\uD83C\uDFFB\u200D♂️", + [":man_gesturing_ok_tone2:"] = "\uD83D\uDE46\uD83C\uDFFC\u200D♂️", + [":man_gesturing_ok_tone3:"] = "\uD83D\uDE46\uD83C\uDFFD\u200D♂️", + [":man_gesturing_ok_tone4:"] = "\uD83D\uDE46\uD83C\uDFFE\u200D♂️", + [":man_gesturing_ok_tone5:"] = "\uD83D\uDE46\uD83C\uDFFF\u200D♂️", + [":man_getting_face_massage:"] = "\uD83D\uDC86\u200D♂️", + [":man_getting_face_massage::skin-tone-1:"] = "\uD83D\uDC86\uD83C\uDFFB\u200D♂️", + [":man_getting_face_massage::skin-tone-2:"] = "\uD83D\uDC86\uD83C\uDFFC\u200D♂️", + [":man_getting_face_massage::skin-tone-3:"] = "\uD83D\uDC86\uD83C\uDFFD\u200D♂️", + [":man_getting_face_massage::skin-tone-4:"] = "\uD83D\uDC86\uD83C\uDFFE\u200D♂️", + [":man_getting_face_massage::skin-tone-5:"] = "\uD83D\uDC86\uD83C\uDFFF\u200D♂️", + [":man_getting_face_massage_dark_skin_tone:"] = "\uD83D\uDC86\uD83C\uDFFF\u200D♂️", + [":man_getting_face_massage_light_skin_tone:"] = "\uD83D\uDC86\uD83C\uDFFB\u200D♂️", + [":man_getting_face_massage_medium_dark_skin_tone:"] = "\uD83D\uDC86\uD83C\uDFFE\u200D♂️", + [":man_getting_face_massage_medium_light_skin_tone:"] = "\uD83D\uDC86\uD83C\uDFFC\u200D♂️", + [":man_getting_face_massage_medium_skin_tone:"] = "\uD83D\uDC86\uD83C\uDFFD\u200D♂️", + [":man_getting_face_massage_tone1:"] = "\uD83D\uDC86\uD83C\uDFFB\u200D♂️", + [":man_getting_face_massage_tone2:"] = "\uD83D\uDC86\uD83C\uDFFC\u200D♂️", + [":man_getting_face_massage_tone3:"] = "\uD83D\uDC86\uD83C\uDFFD\u200D♂️", + [":man_getting_face_massage_tone4:"] = "\uD83D\uDC86\uD83C\uDFFE\u200D♂️", + [":man_getting_face_massage_tone5:"] = "\uD83D\uDC86\uD83C\uDFFF\u200D♂️", + [":man_getting_haircut:"] = "\uD83D\uDC87\u200D♂️", + [":man_getting_haircut::skin-tone-1:"] = "\uD83D\uDC87\uD83C\uDFFB\u200D♂️", + [":man_getting_haircut::skin-tone-2:"] = "\uD83D\uDC87\uD83C\uDFFC\u200D♂️", + [":man_getting_haircut::skin-tone-3:"] = "\uD83D\uDC87\uD83C\uDFFD\u200D♂️", + [":man_getting_haircut::skin-tone-4:"] = "\uD83D\uDC87\uD83C\uDFFE\u200D♂️", + [":man_getting_haircut::skin-tone-5:"] = "\uD83D\uDC87\uD83C\uDFFF\u200D♂️", + [":man_getting_haircut_dark_skin_tone:"] = "\uD83D\uDC87\uD83C\uDFFF\u200D♂️", + [":man_getting_haircut_light_skin_tone:"] = "\uD83D\uDC87\uD83C\uDFFB\u200D♂️", + [":man_getting_haircut_medium_dark_skin_tone:"] = "\uD83D\uDC87\uD83C\uDFFE\u200D♂️", + [":man_getting_haircut_medium_light_skin_tone:"] = "\uD83D\uDC87\uD83C\uDFFC\u200D♂️", + [":man_getting_haircut_medium_skin_tone:"] = "\uD83D\uDC87\uD83C\uDFFD\u200D♂️", + [":man_getting_haircut_tone1:"] = "\uD83D\uDC87\uD83C\uDFFB\u200D♂️", + [":man_getting_haircut_tone2:"] = "\uD83D\uDC87\uD83C\uDFFC\u200D♂️", + [":man_getting_haircut_tone3:"] = "\uD83D\uDC87\uD83C\uDFFD\u200D♂️", + [":man_getting_haircut_tone4:"] = "\uD83D\uDC87\uD83C\uDFFE\u200D♂️", + [":man_getting_haircut_tone5:"] = "\uD83D\uDC87\uD83C\uDFFF\u200D♂️", + [":man_golfing:"] = "\uD83C\uDFCC️\u200D♂️", + [":man_golfing::skin-tone-1:"] = "\uD83C\uDFCC\uD83C\uDFFB\u200D♂️", + [":man_golfing::skin-tone-2:"] = "\uD83C\uDFCC\uD83C\uDFFC\u200D♂️", + [":man_golfing::skin-tone-3:"] = "\uD83C\uDFCC\uD83C\uDFFD\u200D♂️", + [":man_golfing::skin-tone-4:"] = "\uD83C\uDFCC\uD83C\uDFFE\u200D♂️", + [":man_golfing::skin-tone-5:"] = "\uD83C\uDFCC\uD83C\uDFFF\u200D♂️", + [":man_golfing_dark_skin_tone:"] = "\uD83C\uDFCC\uD83C\uDFFF\u200D♂️", + [":man_golfing_light_skin_tone:"] = "\uD83C\uDFCC\uD83C\uDFFB\u200D♂️", + [":man_golfing_medium_dark_skin_tone:"] = "\uD83C\uDFCC\uD83C\uDFFE\u200D♂️", + [":man_golfing_medium_light_skin_tone:"] = "\uD83C\uDFCC\uD83C\uDFFC\u200D♂️", + [":man_golfing_medium_skin_tone:"] = "\uD83C\uDFCC\uD83C\uDFFD\u200D♂️", + [":man_golfing_tone1:"] = "\uD83C\uDFCC\uD83C\uDFFB\u200D♂️", + [":man_golfing_tone2:"] = "\uD83C\uDFCC\uD83C\uDFFC\u200D♂️", + [":man_golfing_tone3:"] = "\uD83C\uDFCC\uD83C\uDFFD\u200D♂️", + [":man_golfing_tone4:"] = "\uD83C\uDFCC\uD83C\uDFFE\u200D♂️", + [":man_golfing_tone5:"] = "\uD83C\uDFCC\uD83C\uDFFF\u200D♂️", + [":man_guard:"] = "\uD83D\uDC82\u200D♂️", + [":man_guard::skin-tone-1:"] = "\uD83D\uDC82\uD83C\uDFFB\u200D♂️", + [":man_guard::skin-tone-2:"] = "\uD83D\uDC82\uD83C\uDFFC\u200D♂️", + [":man_guard::skin-tone-3:"] = "\uD83D\uDC82\uD83C\uDFFD\u200D♂️", + [":man_guard::skin-tone-4:"] = "\uD83D\uDC82\uD83C\uDFFE\u200D♂️", + [":man_guard::skin-tone-5:"] = "\uD83D\uDC82\uD83C\uDFFF\u200D♂️", + [":man_guard_dark_skin_tone:"] = "\uD83D\uDC82\uD83C\uDFFF\u200D♂️", + [":man_guard_light_skin_tone:"] = "\uD83D\uDC82\uD83C\uDFFB\u200D♂️", + [":man_guard_medium_dark_skin_tone:"] = "\uD83D\uDC82\uD83C\uDFFE\u200D♂️", + [":man_guard_medium_light_skin_tone:"] = "\uD83D\uDC82\uD83C\uDFFC\u200D♂️", + [":man_guard_medium_skin_tone:"] = "\uD83D\uDC82\uD83C\uDFFD\u200D♂️", + [":man_guard_tone1:"] = "\uD83D\uDC82\uD83C\uDFFB\u200D♂️", + [":man_guard_tone2:"] = "\uD83D\uDC82\uD83C\uDFFC\u200D♂️", + [":man_guard_tone3:"] = "\uD83D\uDC82\uD83C\uDFFD\u200D♂️", + [":man_guard_tone4:"] = "\uD83D\uDC82\uD83C\uDFFE\u200D♂️", + [":man_guard_tone5:"] = "\uD83D\uDC82\uD83C\uDFFF\u200D♂️", + [":man_health_worker:"] = "\uD83D\uDC68\u200D⚕️", + [":man_health_worker::skin-tone-1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D⚕️", + [":man_health_worker::skin-tone-2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D⚕️", + [":man_health_worker::skin-tone-3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D⚕️", + [":man_health_worker::skin-tone-4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D⚕️", + [":man_health_worker::skin-tone-5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D⚕️", + [":man_health_worker_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D⚕️", + [":man_health_worker_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D⚕️", + [":man_health_worker_medium_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D⚕️", + [":man_health_worker_medium_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D⚕️", + [":man_health_worker_medium_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D⚕️", + [":man_health_worker_tone1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D⚕️", + [":man_health_worker_tone2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D⚕️", + [":man_health_worker_tone3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D⚕️", + [":man_health_worker_tone4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D⚕️", + [":man_health_worker_tone5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D⚕️", + [":man_in_business_suit_levitating:"] = "\uD83D\uDD74️", + [":man_in_business_suit_levitating::skin-tone-1:"] = "\uD83D\uDD74\uD83C\uDFFB", + [":man_in_business_suit_levitating::skin-tone-2:"] = "\uD83D\uDD74\uD83C\uDFFC", + [":man_in_business_suit_levitating::skin-tone-3:"] = "\uD83D\uDD74\uD83C\uDFFD", + [":man_in_business_suit_levitating::skin-tone-4:"] = "\uD83D\uDD74\uD83C\uDFFE", + [":man_in_business_suit_levitating::skin-tone-5:"] = "\uD83D\uDD74\uD83C\uDFFF", + [":man_in_business_suit_levitating_dark_skin_tone:"] = "\uD83D\uDD74\uD83C\uDFFF", + [":man_in_business_suit_levitating_light_skin_tone:"] = "\uD83D\uDD74\uD83C\uDFFB", + [":man_in_business_suit_levitating_medium_dark_skin_tone:"] = "\uD83D\uDD74\uD83C\uDFFE", + [":man_in_business_suit_levitating_medium_light_skin_tone:"] = "\uD83D\uDD74\uD83C\uDFFC", + [":man_in_business_suit_levitating_medium_skin_tone:"] = "\uD83D\uDD74\uD83C\uDFFD", + [":man_in_business_suit_levitating_tone1:"] = "\uD83D\uDD74\uD83C\uDFFB", + [":man_in_business_suit_levitating_tone2:"] = "\uD83D\uDD74\uD83C\uDFFC", + [":man_in_business_suit_levitating_tone3:"] = "\uD83D\uDD74\uD83C\uDFFD", + [":man_in_business_suit_levitating_tone4:"] = "\uD83D\uDD74\uD83C\uDFFE", + [":man_in_business_suit_levitating_tone5:"] = "\uD83D\uDD74\uD83C\uDFFF", + [":man_in_lotus_position:"] = "\uD83E\uDDD8\u200D♂️", + [":man_in_lotus_position::skin-tone-1:"] = "\uD83E\uDDD8\uD83C\uDFFB\u200D♂️", + [":man_in_lotus_position::skin-tone-2:"] = "\uD83E\uDDD8\uD83C\uDFFC\u200D♂️", + [":man_in_lotus_position::skin-tone-3:"] = "\uD83E\uDDD8\uD83C\uDFFD\u200D♂️", + [":man_in_lotus_position::skin-tone-4:"] = "\uD83E\uDDD8\uD83C\uDFFE\u200D♂️", + [":man_in_lotus_position::skin-tone-5:"] = "\uD83E\uDDD8\uD83C\uDFFF\u200D♂️", + [":man_in_lotus_position_dark_skin_tone:"] = "\uD83E\uDDD8\uD83C\uDFFF\u200D♂️", + [":man_in_lotus_position_light_skin_tone:"] = "\uD83E\uDDD8\uD83C\uDFFB\u200D♂️", + [":man_in_lotus_position_medium_dark_skin_tone:"] = "\uD83E\uDDD8\uD83C\uDFFE\u200D♂️", + [":man_in_lotus_position_medium_light_skin_tone:"] = "\uD83E\uDDD8\uD83C\uDFFC\u200D♂️", + [":man_in_lotus_position_medium_skin_tone:"] = "\uD83E\uDDD8\uD83C\uDFFD\u200D♂️", + [":man_in_lotus_position_tone1:"] = "\uD83E\uDDD8\uD83C\uDFFB\u200D♂️", + [":man_in_lotus_position_tone2:"] = "\uD83E\uDDD8\uD83C\uDFFC\u200D♂️", + [":man_in_lotus_position_tone3:"] = "\uD83E\uDDD8\uD83C\uDFFD\u200D♂️", + [":man_in_lotus_position_tone4:"] = "\uD83E\uDDD8\uD83C\uDFFE\u200D♂️", + [":man_in_lotus_position_tone5:"] = "\uD83E\uDDD8\uD83C\uDFFF\u200D♂️", + [":man_in_manual_wheelchair:"] = "\uD83D\uDC68\u200D\uD83E\uDDBD", + [":man_in_manual_wheelchair::skin-tone-1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDBD", + [":man_in_manual_wheelchair::skin-tone-2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDBD", + [":man_in_manual_wheelchair::skin-tone-3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDBD", + [":man_in_manual_wheelchair::skin-tone-4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDBD", + [":man_in_manual_wheelchair::skin-tone-5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDBD", + [":man_in_manual_wheelchair_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDBD", + [":man_in_manual_wheelchair_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDBD", + [":man_in_manual_wheelchair_medium_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDBD", + [":man_in_manual_wheelchair_medium_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDBD", + [":man_in_manual_wheelchair_medium_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDBD", + [":man_in_manual_wheelchair_tone1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDBD", + [":man_in_manual_wheelchair_tone2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDBD", + [":man_in_manual_wheelchair_tone3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDBD", + [":man_in_manual_wheelchair_tone4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDBD", + [":man_in_manual_wheelchair_tone5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDBD", + [":man_in_motorized_wheelchair:"] = "\uD83D\uDC68\u200D\uD83E\uDDBC", + [":man_in_motorized_wheelchair::skin-tone-1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDBC", + [":man_in_motorized_wheelchair::skin-tone-2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDBC", + [":man_in_motorized_wheelchair::skin-tone-3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDBC", + [":man_in_motorized_wheelchair::skin-tone-4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDBC", + [":man_in_motorized_wheelchair::skin-tone-5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDBC", + [":man_in_motorized_wheelchair_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDBC", + [":man_in_motorized_wheelchair_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDBC", + [":man_in_motorized_wheelchair_medium_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDBC", + [":man_in_motorized_wheelchair_medium_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDBC", + [":man_in_motorized_wheelchair_medium_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDBC", + [":man_in_motorized_wheelchair_tone1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDBC", + [":man_in_motorized_wheelchair_tone2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDBC", + [":man_in_motorized_wheelchair_tone3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDBC", + [":man_in_motorized_wheelchair_tone4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDBC", + [":man_in_motorized_wheelchair_tone5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDBC", + [":man_in_steamy_room:"] = "\uD83E\uDDD6\u200D♂️", + [":man_in_steamy_room::skin-tone-1:"] = "\uD83E\uDDD6\uD83C\uDFFB\u200D♂️", + [":man_in_steamy_room::skin-tone-2:"] = "\uD83E\uDDD6\uD83C\uDFFC\u200D♂️", + [":man_in_steamy_room::skin-tone-3:"] = "\uD83E\uDDD6\uD83C\uDFFD\u200D♂️", + [":man_in_steamy_room::skin-tone-4:"] = "\uD83E\uDDD6\uD83C\uDFFE\u200D♂️", + [":man_in_steamy_room::skin-tone-5:"] = "\uD83E\uDDD6\uD83C\uDFFF\u200D♂️", + [":man_in_steamy_room_dark_skin_tone:"] = "\uD83E\uDDD6\uD83C\uDFFF\u200D♂️", + [":man_in_steamy_room_light_skin_tone:"] = "\uD83E\uDDD6\uD83C\uDFFB\u200D♂️", + [":man_in_steamy_room_medium_dark_skin_tone:"] = "\uD83E\uDDD6\uD83C\uDFFE\u200D♂️", + [":man_in_steamy_room_medium_light_skin_tone:"] = "\uD83E\uDDD6\uD83C\uDFFC\u200D♂️", + [":man_in_steamy_room_medium_skin_tone:"] = "\uD83E\uDDD6\uD83C\uDFFD\u200D♂️", + [":man_in_steamy_room_tone1:"] = "\uD83E\uDDD6\uD83C\uDFFB\u200D♂️", + [":man_in_steamy_room_tone2:"] = "\uD83E\uDDD6\uD83C\uDFFC\u200D♂️", + [":man_in_steamy_room_tone3:"] = "\uD83E\uDDD6\uD83C\uDFFD\u200D♂️", + [":man_in_steamy_room_tone4:"] = "\uD83E\uDDD6\uD83C\uDFFE\u200D♂️", + [":man_in_steamy_room_tone5:"] = "\uD83E\uDDD6\uD83C\uDFFF\u200D♂️", + [":man_in_tuxedo:"] = "\uD83E\uDD35", + [":man_in_tuxedo::skin-tone-1:"] = "\uD83E\uDD35\uD83C\uDFFB", + [":man_in_tuxedo::skin-tone-2:"] = "\uD83E\uDD35\uD83C\uDFFC", + [":man_in_tuxedo::skin-tone-3:"] = "\uD83E\uDD35\uD83C\uDFFD", + [":man_in_tuxedo::skin-tone-4:"] = "\uD83E\uDD35\uD83C\uDFFE", + [":man_in_tuxedo::skin-tone-5:"] = "\uD83E\uDD35\uD83C\uDFFF", + [":man_in_tuxedo_tone1:"] = "\uD83E\uDD35\uD83C\uDFFB", + [":man_in_tuxedo_tone2:"] = "\uD83E\uDD35\uD83C\uDFFC", + [":man_in_tuxedo_tone3:"] = "\uD83E\uDD35\uD83C\uDFFD", + [":man_in_tuxedo_tone4:"] = "\uD83E\uDD35\uD83C\uDFFE", + [":man_in_tuxedo_tone5:"] = "\uD83E\uDD35\uD83C\uDFFF", + [":man_judge:"] = "\uD83D\uDC68\u200D⚖️", + [":man_judge::skin-tone-1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D⚖️", + [":man_judge::skin-tone-2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D⚖️", + [":man_judge::skin-tone-3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D⚖️", + [":man_judge::skin-tone-4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D⚖️", + [":man_judge::skin-tone-5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D⚖️", + [":man_judge_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D⚖️", + [":man_judge_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D⚖️", + [":man_judge_medium_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D⚖️", + [":man_judge_medium_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D⚖️", + [":man_judge_medium_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D⚖️", + [":man_judge_tone1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D⚖️", + [":man_judge_tone2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D⚖️", + [":man_judge_tone3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D⚖️", + [":man_judge_tone4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D⚖️", + [":man_judge_tone5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D⚖️", + [":man_juggling:"] = "\uD83E\uDD39\u200D♂️", + [":man_juggling::skin-tone-1:"] = "\uD83E\uDD39\uD83C\uDFFB\u200D♂️", + [":man_juggling::skin-tone-2:"] = "\uD83E\uDD39\uD83C\uDFFC\u200D♂️", + [":man_juggling::skin-tone-3:"] = "\uD83E\uDD39\uD83C\uDFFD\u200D♂️", + [":man_juggling::skin-tone-4:"] = "\uD83E\uDD39\uD83C\uDFFE\u200D♂️", + [":man_juggling::skin-tone-5:"] = "\uD83E\uDD39\uD83C\uDFFF\u200D♂️", + [":man_juggling_dark_skin_tone:"] = "\uD83E\uDD39\uD83C\uDFFF\u200D♂️", + [":man_juggling_light_skin_tone:"] = "\uD83E\uDD39\uD83C\uDFFB\u200D♂️", + [":man_juggling_medium_dark_skin_tone:"] = "\uD83E\uDD39\uD83C\uDFFE\u200D♂️", + [":man_juggling_medium_light_skin_tone:"] = "\uD83E\uDD39\uD83C\uDFFC\u200D♂️", + [":man_juggling_medium_skin_tone:"] = "\uD83E\uDD39\uD83C\uDFFD\u200D♂️", + [":man_juggling_tone1:"] = "\uD83E\uDD39\uD83C\uDFFB\u200D♂️", + [":man_juggling_tone2:"] = "\uD83E\uDD39\uD83C\uDFFC\u200D♂️", + [":man_juggling_tone3:"] = "\uD83E\uDD39\uD83C\uDFFD\u200D♂️", + [":man_juggling_tone4:"] = "\uD83E\uDD39\uD83C\uDFFE\u200D♂️", + [":man_juggling_tone5:"] = "\uD83E\uDD39\uD83C\uDFFF\u200D♂️", + [":man_kneeling:"] = "\uD83E\uDDCE\u200D♂️", + [":man_kneeling::skin-tone-1:"] = "\uD83E\uDDCE\uD83C\uDFFB\u200D♂️", + [":man_kneeling::skin-tone-2:"] = "\uD83E\uDDCE\uD83C\uDFFC\u200D♂️", + [":man_kneeling::skin-tone-3:"] = "\uD83E\uDDCE\uD83C\uDFFD\u200D♂️", + [":man_kneeling::skin-tone-4:"] = "\uD83E\uDDCE\uD83C\uDFFE\u200D♂️", + [":man_kneeling::skin-tone-5:"] = "\uD83E\uDDCE\uD83C\uDFFF\u200D♂️", + [":man_kneeling_dark_skin_tone:"] = "\uD83E\uDDCE\uD83C\uDFFF\u200D♂️", + [":man_kneeling_light_skin_tone:"] = "\uD83E\uDDCE\uD83C\uDFFB\u200D♂️", + [":man_kneeling_medium_dark_skin_tone:"] = "\uD83E\uDDCE\uD83C\uDFFE\u200D♂️", + [":man_kneeling_medium_light_skin_tone:"] = "\uD83E\uDDCE\uD83C\uDFFC\u200D♂️", + [":man_kneeling_medium_skin_tone:"] = "\uD83E\uDDCE\uD83C\uDFFD\u200D♂️", + [":man_kneeling_tone1:"] = "\uD83E\uDDCE\uD83C\uDFFB\u200D♂️", + [":man_kneeling_tone2:"] = "\uD83E\uDDCE\uD83C\uDFFC\u200D♂️", + [":man_kneeling_tone3:"] = "\uD83E\uDDCE\uD83C\uDFFD\u200D♂️", + [":man_kneeling_tone4:"] = "\uD83E\uDDCE\uD83C\uDFFE\u200D♂️", + [":man_kneeling_tone5:"] = "\uD83E\uDDCE\uD83C\uDFFF\u200D♂️", + [":man_lifting_weights:"] = "\uD83C\uDFCB️\u200D♂️", + [":man_lifting_weights::skin-tone-1:"] = "\uD83C\uDFCB\uD83C\uDFFB\u200D♂️", + [":man_lifting_weights::skin-tone-2:"] = "\uD83C\uDFCB\uD83C\uDFFC\u200D♂️", + [":man_lifting_weights::skin-tone-3:"] = "\uD83C\uDFCB\uD83C\uDFFD\u200D♂️", + [":man_lifting_weights::skin-tone-4:"] = "\uD83C\uDFCB\uD83C\uDFFE\u200D♂️", + [":man_lifting_weights::skin-tone-5:"] = "\uD83C\uDFCB\uD83C\uDFFF\u200D♂️", + [":man_lifting_weights_dark_skin_tone:"] = "\uD83C\uDFCB\uD83C\uDFFF\u200D♂️", + [":man_lifting_weights_light_skin_tone:"] = "\uD83C\uDFCB\uD83C\uDFFB\u200D♂️", + [":man_lifting_weights_medium_dark_skin_tone:"] = "\uD83C\uDFCB\uD83C\uDFFE\u200D♂️", + [":man_lifting_weights_medium_light_skin_tone:"] = "\uD83C\uDFCB\uD83C\uDFFC\u200D♂️", + [":man_lifting_weights_medium_skin_tone:"] = "\uD83C\uDFCB\uD83C\uDFFD\u200D♂️", + [":man_lifting_weights_tone1:"] = "\uD83C\uDFCB\uD83C\uDFFB\u200D♂️", + [":man_lifting_weights_tone2:"] = "\uD83C\uDFCB\uD83C\uDFFC\u200D♂️", + [":man_lifting_weights_tone3:"] = "\uD83C\uDFCB\uD83C\uDFFD\u200D♂️", + [":man_lifting_weights_tone4:"] = "\uD83C\uDFCB\uD83C\uDFFE\u200D♂️", + [":man_lifting_weights_tone5:"] = "\uD83C\uDFCB\uD83C\uDFFF\u200D♂️", + [":man_mage:"] = "\uD83E\uDDD9\u200D♂️", + [":man_mage::skin-tone-1:"] = "\uD83E\uDDD9\uD83C\uDFFB\u200D♂️", + [":man_mage::skin-tone-2:"] = "\uD83E\uDDD9\uD83C\uDFFC\u200D♂️", + [":man_mage::skin-tone-3:"] = "\uD83E\uDDD9\uD83C\uDFFD\u200D♂️", + [":man_mage::skin-tone-4:"] = "\uD83E\uDDD9\uD83C\uDFFE\u200D♂️", + [":man_mage::skin-tone-5:"] = "\uD83E\uDDD9\uD83C\uDFFF\u200D♂️", + [":man_mage_dark_skin_tone:"] = "\uD83E\uDDD9\uD83C\uDFFF\u200D♂️", + [":man_mage_light_skin_tone:"] = "\uD83E\uDDD9\uD83C\uDFFB\u200D♂️", + [":man_mage_medium_dark_skin_tone:"] = "\uD83E\uDDD9\uD83C\uDFFE\u200D♂️", + [":man_mage_medium_light_skin_tone:"] = "\uD83E\uDDD9\uD83C\uDFFC\u200D♂️", + [":man_mage_medium_skin_tone:"] = "\uD83E\uDDD9\uD83C\uDFFD\u200D♂️", + [":man_mage_tone1:"] = "\uD83E\uDDD9\uD83C\uDFFB\u200D♂️", + [":man_mage_tone2:"] = "\uD83E\uDDD9\uD83C\uDFFC\u200D♂️", + [":man_mage_tone3:"] = "\uD83E\uDDD9\uD83C\uDFFD\u200D♂️", + [":man_mage_tone4:"] = "\uD83E\uDDD9\uD83C\uDFFE\u200D♂️", + [":man_mage_tone5:"] = "\uD83E\uDDD9\uD83C\uDFFF\u200D♂️", + [":man_mechanic:"] = "\uD83D\uDC68\u200D\uD83D\uDD27", + [":man_mechanic::skin-tone-1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDD27", + [":man_mechanic::skin-tone-2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDD27", + [":man_mechanic::skin-tone-3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDD27", + [":man_mechanic::skin-tone-4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDD27", + [":man_mechanic::skin-tone-5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDD27", + [":man_mechanic_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDD27", + [":man_mechanic_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDD27", + [":man_mechanic_medium_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDD27", + [":man_mechanic_medium_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDD27", + [":man_mechanic_medium_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDD27", + [":man_mechanic_tone1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDD27", + [":man_mechanic_tone2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDD27", + [":man_mechanic_tone3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDD27", + [":man_mechanic_tone4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDD27", + [":man_mechanic_tone5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDD27", + [":man_mountain_biking:"] = "\uD83D\uDEB5\u200D♂️", + [":man_mountain_biking::skin-tone-1:"] = "\uD83D\uDEB5\uD83C\uDFFB\u200D♂️", + [":man_mountain_biking::skin-tone-2:"] = "\uD83D\uDEB5\uD83C\uDFFC\u200D♂️", + [":man_mountain_biking::skin-tone-3:"] = "\uD83D\uDEB5\uD83C\uDFFD\u200D♂️", + [":man_mountain_biking::skin-tone-4:"] = "\uD83D\uDEB5\uD83C\uDFFE\u200D♂️", + [":man_mountain_biking::skin-tone-5:"] = "\uD83D\uDEB5\uD83C\uDFFF\u200D♂️", + [":man_mountain_biking_dark_skin_tone:"] = "\uD83D\uDEB5\uD83C\uDFFF\u200D♂️", + [":man_mountain_biking_light_skin_tone:"] = "\uD83D\uDEB5\uD83C\uDFFB\u200D♂️", + [":man_mountain_biking_medium_dark_skin_tone:"] = "\uD83D\uDEB5\uD83C\uDFFE\u200D♂️", + [":man_mountain_biking_medium_light_skin_tone:"] = "\uD83D\uDEB5\uD83C\uDFFC\u200D♂️", + [":man_mountain_biking_medium_skin_tone:"] = "\uD83D\uDEB5\uD83C\uDFFD\u200D♂️", + [":man_mountain_biking_tone1:"] = "\uD83D\uDEB5\uD83C\uDFFB\u200D♂️", + [":man_mountain_biking_tone2:"] = "\uD83D\uDEB5\uD83C\uDFFC\u200D♂️", + [":man_mountain_biking_tone3:"] = "\uD83D\uDEB5\uD83C\uDFFD\u200D♂️", + [":man_mountain_biking_tone4:"] = "\uD83D\uDEB5\uD83C\uDFFE\u200D♂️", + [":man_mountain_biking_tone5:"] = "\uD83D\uDEB5\uD83C\uDFFF\u200D♂️", + [":man_office_worker:"] = "\uD83D\uDC68\u200D\uD83D\uDCBC", + [":man_office_worker::skin-tone-1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDCBC", + [":man_office_worker::skin-tone-2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDCBC", + [":man_office_worker::skin-tone-3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDCBC", + [":man_office_worker::skin-tone-4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDCBC", + [":man_office_worker::skin-tone-5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDCBC", + [":man_office_worker_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDCBC", + [":man_office_worker_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDCBC", + [":man_office_worker_medium_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDCBC", + [":man_office_worker_medium_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDCBC", + [":man_office_worker_medium_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDCBC", + [":man_office_worker_tone1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDCBC", + [":man_office_worker_tone2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDCBC", + [":man_office_worker_tone3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDCBC", + [":man_office_worker_tone4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDCBC", + [":man_office_worker_tone5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDCBC", + [":man_pilot:"] = "\uD83D\uDC68\u200D✈️", + [":man_pilot::skin-tone-1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D✈️", + [":man_pilot::skin-tone-2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D✈️", + [":man_pilot::skin-tone-3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D✈️", + [":man_pilot::skin-tone-4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D✈️", + [":man_pilot::skin-tone-5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D✈️", + [":man_pilot_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D✈️", + [":man_pilot_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D✈️", + [":man_pilot_medium_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D✈️", + [":man_pilot_medium_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D✈️", + [":man_pilot_medium_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D✈️", + [":man_pilot_tone1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D✈️", + [":man_pilot_tone2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D✈️", + [":man_pilot_tone3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D✈️", + [":man_pilot_tone4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D✈️", + [":man_pilot_tone5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D✈️", + [":man_playing_handball:"] = "\uD83E\uDD3E\u200D♂️", + [":man_playing_handball::skin-tone-1:"] = "\uD83E\uDD3E\uD83C\uDFFB\u200D♂️", + [":man_playing_handball::skin-tone-2:"] = "\uD83E\uDD3E\uD83C\uDFFC\u200D♂️", + [":man_playing_handball::skin-tone-3:"] = "\uD83E\uDD3E\uD83C\uDFFD\u200D♂️", + [":man_playing_handball::skin-tone-4:"] = "\uD83E\uDD3E\uD83C\uDFFE\u200D♂️", + [":man_playing_handball::skin-tone-5:"] = "\uD83E\uDD3E\uD83C\uDFFF\u200D♂️", + [":man_playing_handball_dark_skin_tone:"] = "\uD83E\uDD3E\uD83C\uDFFF\u200D♂️", + [":man_playing_handball_light_skin_tone:"] = "\uD83E\uDD3E\uD83C\uDFFB\u200D♂️", + [":man_playing_handball_medium_dark_skin_tone:"] = "\uD83E\uDD3E\uD83C\uDFFE\u200D♂️", + [":man_playing_handball_medium_light_skin_tone:"] = "\uD83E\uDD3E\uD83C\uDFFC\u200D♂️", + [":man_playing_handball_medium_skin_tone:"] = "\uD83E\uDD3E\uD83C\uDFFD\u200D♂️", + [":man_playing_handball_tone1:"] = "\uD83E\uDD3E\uD83C\uDFFB\u200D♂️", + [":man_playing_handball_tone2:"] = "\uD83E\uDD3E\uD83C\uDFFC\u200D♂️", + [":man_playing_handball_tone3:"] = "\uD83E\uDD3E\uD83C\uDFFD\u200D♂️", + [":man_playing_handball_tone4:"] = "\uD83E\uDD3E\uD83C\uDFFE\u200D♂️", + [":man_playing_handball_tone5:"] = "\uD83E\uDD3E\uD83C\uDFFF\u200D♂️", + [":man_playing_water_polo:"] = "\uD83E\uDD3D\u200D♂️", + [":man_playing_water_polo::skin-tone-1:"] = "\uD83E\uDD3D\uD83C\uDFFB\u200D♂️", + [":man_playing_water_polo::skin-tone-2:"] = "\uD83E\uDD3D\uD83C\uDFFC\u200D♂️", + [":man_playing_water_polo::skin-tone-3:"] = "\uD83E\uDD3D\uD83C\uDFFD\u200D♂️", + [":man_playing_water_polo::skin-tone-4:"] = "\uD83E\uDD3D\uD83C\uDFFE\u200D♂️", + [":man_playing_water_polo::skin-tone-5:"] = "\uD83E\uDD3D\uD83C\uDFFF\u200D♂️", + [":man_playing_water_polo_dark_skin_tone:"] = "\uD83E\uDD3D\uD83C\uDFFF\u200D♂️", + [":man_playing_water_polo_light_skin_tone:"] = "\uD83E\uDD3D\uD83C\uDFFB\u200D♂️", + [":man_playing_water_polo_medium_dark_skin_tone:"] = "\uD83E\uDD3D\uD83C\uDFFE\u200D♂️", + [":man_playing_water_polo_medium_light_skin_tone:"] = "\uD83E\uDD3D\uD83C\uDFFC\u200D♂️", + [":man_playing_water_polo_medium_skin_tone:"] = "\uD83E\uDD3D\uD83C\uDFFD\u200D♂️", + [":man_playing_water_polo_tone1:"] = "\uD83E\uDD3D\uD83C\uDFFB\u200D♂️", + [":man_playing_water_polo_tone2:"] = "\uD83E\uDD3D\uD83C\uDFFC\u200D♂️", + [":man_playing_water_polo_tone3:"] = "\uD83E\uDD3D\uD83C\uDFFD\u200D♂️", + [":man_playing_water_polo_tone4:"] = "\uD83E\uDD3D\uD83C\uDFFE\u200D♂️", + [":man_playing_water_polo_tone5:"] = "\uD83E\uDD3D\uD83C\uDFFF\u200D♂️", + [":man_police_officer:"] = "\uD83D\uDC6E\u200D♂️", + [":man_police_officer::skin-tone-1:"] = "\uD83D\uDC6E\uD83C\uDFFB\u200D♂️", + [":man_police_officer::skin-tone-2:"] = "\uD83D\uDC6E\uD83C\uDFFC\u200D♂️", + [":man_police_officer::skin-tone-3:"] = "\uD83D\uDC6E\uD83C\uDFFD\u200D♂️", + [":man_police_officer::skin-tone-4:"] = "\uD83D\uDC6E\uD83C\uDFFE\u200D♂️", + [":man_police_officer::skin-tone-5:"] = "\uD83D\uDC6E\uD83C\uDFFF\u200D♂️", + [":man_police_officer_dark_skin_tone:"] = "\uD83D\uDC6E\uD83C\uDFFF\u200D♂️", + [":man_police_officer_light_skin_tone:"] = "\uD83D\uDC6E\uD83C\uDFFB\u200D♂️", + [":man_police_officer_medium_dark_skin_tone:"] = "\uD83D\uDC6E\uD83C\uDFFE\u200D♂️", + [":man_police_officer_medium_light_skin_tone:"] = "\uD83D\uDC6E\uD83C\uDFFC\u200D♂️", + [":man_police_officer_medium_skin_tone:"] = "\uD83D\uDC6E\uD83C\uDFFD\u200D♂️", + [":man_police_officer_tone1:"] = "\uD83D\uDC6E\uD83C\uDFFB\u200D♂️", + [":man_police_officer_tone2:"] = "\uD83D\uDC6E\uD83C\uDFFC\u200D♂️", + [":man_police_officer_tone3:"] = "\uD83D\uDC6E\uD83C\uDFFD\u200D♂️", + [":man_police_officer_tone4:"] = "\uD83D\uDC6E\uD83C\uDFFE\u200D♂️", + [":man_police_officer_tone5:"] = "\uD83D\uDC6E\uD83C\uDFFF\u200D♂️", + [":man_pouting:"] = "\uD83D\uDE4E\u200D♂️", + [":man_pouting::skin-tone-1:"] = "\uD83D\uDE4E\uD83C\uDFFB\u200D♂️", + [":man_pouting::skin-tone-2:"] = "\uD83D\uDE4E\uD83C\uDFFC\u200D♂️", + [":man_pouting::skin-tone-3:"] = "\uD83D\uDE4E\uD83C\uDFFD\u200D♂️", + [":man_pouting::skin-tone-4:"] = "\uD83D\uDE4E\uD83C\uDFFE\u200D♂️", + [":man_pouting::skin-tone-5:"] = "\uD83D\uDE4E\uD83C\uDFFF\u200D♂️", + [":man_pouting_dark_skin_tone:"] = "\uD83D\uDE4E\uD83C\uDFFF\u200D♂️", + [":man_pouting_light_skin_tone:"] = "\uD83D\uDE4E\uD83C\uDFFB\u200D♂️", + [":man_pouting_medium_dark_skin_tone:"] = "\uD83D\uDE4E\uD83C\uDFFE\u200D♂️", + [":man_pouting_medium_light_skin_tone:"] = "\uD83D\uDE4E\uD83C\uDFFC\u200D♂️", + [":man_pouting_medium_skin_tone:"] = "\uD83D\uDE4E\uD83C\uDFFD\u200D♂️", + [":man_pouting_tone1:"] = "\uD83D\uDE4E\uD83C\uDFFB\u200D♂️", + [":man_pouting_tone2:"] = "\uD83D\uDE4E\uD83C\uDFFC\u200D♂️", + [":man_pouting_tone3:"] = "\uD83D\uDE4E\uD83C\uDFFD\u200D♂️", + [":man_pouting_tone4:"] = "\uD83D\uDE4E\uD83C\uDFFE\u200D♂️", + [":man_pouting_tone5:"] = "\uD83D\uDE4E\uD83C\uDFFF\u200D♂️", + [":man_raising_hand:"] = "\uD83D\uDE4B\u200D♂️", + [":man_raising_hand::skin-tone-1:"] = "\uD83D\uDE4B\uD83C\uDFFB\u200D♂️", + [":man_raising_hand::skin-tone-2:"] = "\uD83D\uDE4B\uD83C\uDFFC\u200D♂️", + [":man_raising_hand::skin-tone-3:"] = "\uD83D\uDE4B\uD83C\uDFFD\u200D♂️", + [":man_raising_hand::skin-tone-4:"] = "\uD83D\uDE4B\uD83C\uDFFE\u200D♂️", + [":man_raising_hand::skin-tone-5:"] = "\uD83D\uDE4B\uD83C\uDFFF\u200D♂️", + [":man_raising_hand_dark_skin_tone:"] = "\uD83D\uDE4B\uD83C\uDFFF\u200D♂️", + [":man_raising_hand_light_skin_tone:"] = "\uD83D\uDE4B\uD83C\uDFFB\u200D♂️", + [":man_raising_hand_medium_dark_skin_tone:"] = "\uD83D\uDE4B\uD83C\uDFFE\u200D♂️", + [":man_raising_hand_medium_light_skin_tone:"] = "\uD83D\uDE4B\uD83C\uDFFC\u200D♂️", + [":man_raising_hand_medium_skin_tone:"] = "\uD83D\uDE4B\uD83C\uDFFD\u200D♂️", + [":man_raising_hand_tone1:"] = "\uD83D\uDE4B\uD83C\uDFFB\u200D♂️", + [":man_raising_hand_tone2:"] = "\uD83D\uDE4B\uD83C\uDFFC\u200D♂️", + [":man_raising_hand_tone3:"] = "\uD83D\uDE4B\uD83C\uDFFD\u200D♂️", + [":man_raising_hand_tone4:"] = "\uD83D\uDE4B\uD83C\uDFFE\u200D♂️", + [":man_raising_hand_tone5:"] = "\uD83D\uDE4B\uD83C\uDFFF\u200D♂️", + [":man_red_haired:"] = "\uD83D\uDC68\u200D\uD83E\uDDB0", + [":man_red_haired::skin-tone-1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDB0", + [":man_red_haired::skin-tone-2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDB0", + [":man_red_haired::skin-tone-3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDB0", + [":man_red_haired::skin-tone-4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDB0", + [":man_red_haired::skin-tone-5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDB0", + [":man_red_haired_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDB0", + [":man_red_haired_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDB0", + [":man_red_haired_medium_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDB0", + [":man_red_haired_medium_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDB0", + [":man_red_haired_medium_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDB0", + [":man_red_haired_tone1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDB0", + [":man_red_haired_tone2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDB0", + [":man_red_haired_tone3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDB0", + [":man_red_haired_tone4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDB0", + [":man_red_haired_tone5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDB0", + [":man_rowing_boat:"] = "\uD83D\uDEA3\u200D♂️", + [":man_rowing_boat::skin-tone-1:"] = "\uD83D\uDEA3\uD83C\uDFFB\u200D♂️", + [":man_rowing_boat::skin-tone-2:"] = "\uD83D\uDEA3\uD83C\uDFFC\u200D♂️", + [":man_rowing_boat::skin-tone-3:"] = "\uD83D\uDEA3\uD83C\uDFFD\u200D♂️", + [":man_rowing_boat::skin-tone-4:"] = "\uD83D\uDEA3\uD83C\uDFFE\u200D♂️", + [":man_rowing_boat::skin-tone-5:"] = "\uD83D\uDEA3\uD83C\uDFFF\u200D♂️", + [":man_rowing_boat_dark_skin_tone:"] = "\uD83D\uDEA3\uD83C\uDFFF\u200D♂️", + [":man_rowing_boat_light_skin_tone:"] = "\uD83D\uDEA3\uD83C\uDFFB\u200D♂️", + [":man_rowing_boat_medium_dark_skin_tone:"] = "\uD83D\uDEA3\uD83C\uDFFE\u200D♂️", + [":man_rowing_boat_medium_light_skin_tone:"] = "\uD83D\uDEA3\uD83C\uDFFC\u200D♂️", + [":man_rowing_boat_medium_skin_tone:"] = "\uD83D\uDEA3\uD83C\uDFFD\u200D♂️", + [":man_rowing_boat_tone1:"] = "\uD83D\uDEA3\uD83C\uDFFB\u200D♂️", + [":man_rowing_boat_tone2:"] = "\uD83D\uDEA3\uD83C\uDFFC\u200D♂️", + [":man_rowing_boat_tone3:"] = "\uD83D\uDEA3\uD83C\uDFFD\u200D♂️", + [":man_rowing_boat_tone4:"] = "\uD83D\uDEA3\uD83C\uDFFE\u200D♂️", + [":man_rowing_boat_tone5:"] = "\uD83D\uDEA3\uD83C\uDFFF\u200D♂️", + [":man_running:"] = "\uD83C\uDFC3\u200D♂️", + [":man_running::skin-tone-1:"] = "\uD83C\uDFC3\uD83C\uDFFB\u200D♂️", + [":man_running::skin-tone-2:"] = "\uD83C\uDFC3\uD83C\uDFFC\u200D♂️", + [":man_running::skin-tone-3:"] = "\uD83C\uDFC3\uD83C\uDFFD\u200D♂️", + [":man_running::skin-tone-4:"] = "\uD83C\uDFC3\uD83C\uDFFE\u200D♂️", + [":man_running::skin-tone-5:"] = "\uD83C\uDFC3\uD83C\uDFFF\u200D♂️", + [":man_running_dark_skin_tone:"] = "\uD83C\uDFC3\uD83C\uDFFF\u200D♂️", + [":man_running_light_skin_tone:"] = "\uD83C\uDFC3\uD83C\uDFFB\u200D♂️", + [":man_running_medium_dark_skin_tone:"] = "\uD83C\uDFC3\uD83C\uDFFE\u200D♂️", + [":man_running_medium_light_skin_tone:"] = "\uD83C\uDFC3\uD83C\uDFFC\u200D♂️", + [":man_running_medium_skin_tone:"] = "\uD83C\uDFC3\uD83C\uDFFD\u200D♂️", + [":man_running_tone1:"] = "\uD83C\uDFC3\uD83C\uDFFB\u200D♂️", + [":man_running_tone2:"] = "\uD83C\uDFC3\uD83C\uDFFC\u200D♂️", + [":man_running_tone3:"] = "\uD83C\uDFC3\uD83C\uDFFD\u200D♂️", + [":man_running_tone4:"] = "\uD83C\uDFC3\uD83C\uDFFE\u200D♂️", + [":man_running_tone5:"] = "\uD83C\uDFC3\uD83C\uDFFF\u200D♂️", + [":man_scientist:"] = "\uD83D\uDC68\u200D\uD83D\uDD2C", + [":man_scientist::skin-tone-1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDD2C", + [":man_scientist::skin-tone-2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDD2C", + [":man_scientist::skin-tone-3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDD2C", + [":man_scientist::skin-tone-4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDD2C", + [":man_scientist::skin-tone-5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDD2C", + [":man_scientist_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDD2C", + [":man_scientist_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDD2C", + [":man_scientist_medium_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDD2C", + [":man_scientist_medium_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDD2C", + [":man_scientist_medium_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDD2C", + [":man_scientist_tone1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDD2C", + [":man_scientist_tone2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDD2C", + [":man_scientist_tone3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDD2C", + [":man_scientist_tone4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDD2C", + [":man_scientist_tone5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDD2C", + [":man_shrugging:"] = "\uD83E\uDD37\u200D♂️", + [":man_shrugging::skin-tone-1:"] = "\uD83E\uDD37\uD83C\uDFFB\u200D♂️", + [":man_shrugging::skin-tone-2:"] = "\uD83E\uDD37\uD83C\uDFFC\u200D♂️", + [":man_shrugging::skin-tone-3:"] = "\uD83E\uDD37\uD83C\uDFFD\u200D♂️", + [":man_shrugging::skin-tone-4:"] = "\uD83E\uDD37\uD83C\uDFFE\u200D♂️", + [":man_shrugging::skin-tone-5:"] = "\uD83E\uDD37\uD83C\uDFFF\u200D♂️", + [":man_shrugging_dark_skin_tone:"] = "\uD83E\uDD37\uD83C\uDFFF\u200D♂️", + [":man_shrugging_light_skin_tone:"] = "\uD83E\uDD37\uD83C\uDFFB\u200D♂️", + [":man_shrugging_medium_dark_skin_tone:"] = "\uD83E\uDD37\uD83C\uDFFE\u200D♂️", + [":man_shrugging_medium_light_skin_tone:"] = "\uD83E\uDD37\uD83C\uDFFC\u200D♂️", + [":man_shrugging_medium_skin_tone:"] = "\uD83E\uDD37\uD83C\uDFFD\u200D♂️", + [":man_shrugging_tone1:"] = "\uD83E\uDD37\uD83C\uDFFB\u200D♂️", + [":man_shrugging_tone2:"] = "\uD83E\uDD37\uD83C\uDFFC\u200D♂️", + [":man_shrugging_tone3:"] = "\uD83E\uDD37\uD83C\uDFFD\u200D♂️", + [":man_shrugging_tone4:"] = "\uD83E\uDD37\uD83C\uDFFE\u200D♂️", + [":man_shrugging_tone5:"] = "\uD83E\uDD37\uD83C\uDFFF\u200D♂️", + [":man_singer:"] = "\uD83D\uDC68\u200D\uD83C\uDFA4", + [":man_singer::skin-tone-1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDFA4", + [":man_singer::skin-tone-2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA4", + [":man_singer::skin-tone-3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDFA4", + [":man_singer::skin-tone-4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDFA4", + [":man_singer::skin-tone-5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDFA4", + [":man_singer_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDFA4", + [":man_singer_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDFA4", + [":man_singer_medium_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDFA4", + [":man_singer_medium_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA4", + [":man_singer_medium_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDFA4", + [":man_singer_tone1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDFA4", + [":man_singer_tone2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA4", + [":man_singer_tone3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDFA4", + [":man_singer_tone4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDFA4", + [":man_singer_tone5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDFA4", + [":man_standing:"] = "\uD83E\uDDCD\u200D♂️", + [":man_standing::skin-tone-1:"] = "\uD83E\uDDCD\uD83C\uDFFB\u200D♂️", + [":man_standing::skin-tone-2:"] = "\uD83E\uDDCD\uD83C\uDFFC\u200D♂️", + [":man_standing::skin-tone-3:"] = "\uD83E\uDDCD\uD83C\uDFFD\u200D♂️", + [":man_standing::skin-tone-4:"] = "\uD83E\uDDCD\uD83C\uDFFE\u200D♂️", + [":man_standing::skin-tone-5:"] = "\uD83E\uDDCD\uD83C\uDFFF\u200D♂️", + [":man_standing_dark_skin_tone:"] = "\uD83E\uDDCD\uD83C\uDFFF\u200D♂️", + [":man_standing_light_skin_tone:"] = "\uD83E\uDDCD\uD83C\uDFFB\u200D♂️", + [":man_standing_medium_dark_skin_tone:"] = "\uD83E\uDDCD\uD83C\uDFFE\u200D♂️", + [":man_standing_medium_light_skin_tone:"] = "\uD83E\uDDCD\uD83C\uDFFC\u200D♂️", + [":man_standing_medium_skin_tone:"] = "\uD83E\uDDCD\uD83C\uDFFD\u200D♂️", + [":man_standing_tone1:"] = "\uD83E\uDDCD\uD83C\uDFFB\u200D♂️", + [":man_standing_tone2:"] = "\uD83E\uDDCD\uD83C\uDFFC\u200D♂️", + [":man_standing_tone3:"] = "\uD83E\uDDCD\uD83C\uDFFD\u200D♂️", + [":man_standing_tone4:"] = "\uD83E\uDDCD\uD83C\uDFFE\u200D♂️", + [":man_standing_tone5:"] = "\uD83E\uDDCD\uD83C\uDFFF\u200D♂️", + [":man_student:"] = "\uD83D\uDC68\u200D\uD83C\uDF93", + [":man_student::skin-tone-1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDF93", + [":man_student::skin-tone-2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDF93", + [":man_student::skin-tone-3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDF93", + [":man_student::skin-tone-4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDF93", + [":man_student::skin-tone-5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDF93", + [":man_student_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDF93", + [":man_student_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDF93", + [":man_student_medium_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDF93", + [":man_student_medium_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDF93", + [":man_student_medium_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDF93", + [":man_student_tone1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDF93", + [":man_student_tone2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDF93", + [":man_student_tone3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDF93", + [":man_student_tone4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDF93", + [":man_student_tone5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDF93", + [":man_superhero:"] = "\uD83E\uDDB8\u200D♂️", + [":man_superhero::skin-tone-1:"] = "\uD83E\uDDB8\uD83C\uDFFB\u200D♂️", + [":man_superhero::skin-tone-2:"] = "\uD83E\uDDB8\uD83C\uDFFC\u200D♂️", + [":man_superhero::skin-tone-3:"] = "\uD83E\uDDB8\uD83C\uDFFD\u200D♂️", + [":man_superhero::skin-tone-4:"] = "\uD83E\uDDB8\uD83C\uDFFE\u200D♂️", + [":man_superhero::skin-tone-5:"] = "\uD83E\uDDB8\uD83C\uDFFF\u200D♂️", + [":man_superhero_dark_skin_tone:"] = "\uD83E\uDDB8\uD83C\uDFFF\u200D♂️", + [":man_superhero_light_skin_tone:"] = "\uD83E\uDDB8\uD83C\uDFFB\u200D♂️", + [":man_superhero_medium_dark_skin_tone:"] = "\uD83E\uDDB8\uD83C\uDFFE\u200D♂️", + [":man_superhero_medium_light_skin_tone:"] = "\uD83E\uDDB8\uD83C\uDFFC\u200D♂️", + [":man_superhero_medium_skin_tone:"] = "\uD83E\uDDB8\uD83C\uDFFD\u200D♂️", + [":man_superhero_tone1:"] = "\uD83E\uDDB8\uD83C\uDFFB\u200D♂️", + [":man_superhero_tone2:"] = "\uD83E\uDDB8\uD83C\uDFFC\u200D♂️", + [":man_superhero_tone3:"] = "\uD83E\uDDB8\uD83C\uDFFD\u200D♂️", + [":man_superhero_tone4:"] = "\uD83E\uDDB8\uD83C\uDFFE\u200D♂️", + [":man_superhero_tone5:"] = "\uD83E\uDDB8\uD83C\uDFFF\u200D♂️", + [":man_supervillain:"] = "\uD83E\uDDB9\u200D♂️", + [":man_supervillain::skin-tone-1:"] = "\uD83E\uDDB9\uD83C\uDFFB\u200D♂️", + [":man_supervillain::skin-tone-2:"] = "\uD83E\uDDB9\uD83C\uDFFC\u200D♂️", + [":man_supervillain::skin-tone-3:"] = "\uD83E\uDDB9\uD83C\uDFFD\u200D♂️", + [":man_supervillain::skin-tone-4:"] = "\uD83E\uDDB9\uD83C\uDFFE\u200D♂️", + [":man_supervillain::skin-tone-5:"] = "\uD83E\uDDB9\uD83C\uDFFF\u200D♂️", + [":man_supervillain_dark_skin_tone:"] = "\uD83E\uDDB9\uD83C\uDFFF\u200D♂️", + [":man_supervillain_light_skin_tone:"] = "\uD83E\uDDB9\uD83C\uDFFB\u200D♂️", + [":man_supervillain_medium_dark_skin_tone:"] = "\uD83E\uDDB9\uD83C\uDFFE\u200D♂️", + [":man_supervillain_medium_light_skin_tone:"] = "\uD83E\uDDB9\uD83C\uDFFC\u200D♂️", + [":man_supervillain_medium_skin_tone:"] = "\uD83E\uDDB9\uD83C\uDFFD\u200D♂️", + [":man_supervillain_tone1:"] = "\uD83E\uDDB9\uD83C\uDFFB\u200D♂️", + [":man_supervillain_tone2:"] = "\uD83E\uDDB9\uD83C\uDFFC\u200D♂️", + [":man_supervillain_tone3:"] = "\uD83E\uDDB9\uD83C\uDFFD\u200D♂️", + [":man_supervillain_tone4:"] = "\uD83E\uDDB9\uD83C\uDFFE\u200D♂️", + [":man_supervillain_tone5:"] = "\uD83E\uDDB9\uD83C\uDFFF\u200D♂️", + [":man_surfing:"] = "\uD83C\uDFC4\u200D♂️", + [":man_surfing::skin-tone-1:"] = "\uD83C\uDFC4\uD83C\uDFFB\u200D♂️", + [":man_surfing::skin-tone-2:"] = "\uD83C\uDFC4\uD83C\uDFFC\u200D♂️", + [":man_surfing::skin-tone-3:"] = "\uD83C\uDFC4\uD83C\uDFFD\u200D♂️", + [":man_surfing::skin-tone-4:"] = "\uD83C\uDFC4\uD83C\uDFFE\u200D♂️", + [":man_surfing::skin-tone-5:"] = "\uD83C\uDFC4\uD83C\uDFFF\u200D♂️", + [":man_surfing_dark_skin_tone:"] = "\uD83C\uDFC4\uD83C\uDFFF\u200D♂️", + [":man_surfing_light_skin_tone:"] = "\uD83C\uDFC4\uD83C\uDFFB\u200D♂️", + [":man_surfing_medium_dark_skin_tone:"] = "\uD83C\uDFC4\uD83C\uDFFE\u200D♂️", + [":man_surfing_medium_light_skin_tone:"] = "\uD83C\uDFC4\uD83C\uDFFC\u200D♂️", + [":man_surfing_medium_skin_tone:"] = "\uD83C\uDFC4\uD83C\uDFFD\u200D♂️", + [":man_surfing_tone1:"] = "\uD83C\uDFC4\uD83C\uDFFB\u200D♂️", + [":man_surfing_tone2:"] = "\uD83C\uDFC4\uD83C\uDFFC\u200D♂️", + [":man_surfing_tone3:"] = "\uD83C\uDFC4\uD83C\uDFFD\u200D♂️", + [":man_surfing_tone4:"] = "\uD83C\uDFC4\uD83C\uDFFE\u200D♂️", + [":man_surfing_tone5:"] = "\uD83C\uDFC4\uD83C\uDFFF\u200D♂️", + [":man_swimming:"] = "\uD83C\uDFCA\u200D♂️", + [":man_swimming::skin-tone-1:"] = "\uD83C\uDFCA\uD83C\uDFFB\u200D♂️", + [":man_swimming::skin-tone-2:"] = "\uD83C\uDFCA\uD83C\uDFFC\u200D♂️", + [":man_swimming::skin-tone-3:"] = "\uD83C\uDFCA\uD83C\uDFFD\u200D♂️", + [":man_swimming::skin-tone-4:"] = "\uD83C\uDFCA\uD83C\uDFFE\u200D♂️", + [":man_swimming::skin-tone-5:"] = "\uD83C\uDFCA\uD83C\uDFFF\u200D♂️", + [":man_swimming_dark_skin_tone:"] = "\uD83C\uDFCA\uD83C\uDFFF\u200D♂️", + [":man_swimming_light_skin_tone:"] = "\uD83C\uDFCA\uD83C\uDFFB\u200D♂️", + [":man_swimming_medium_dark_skin_tone:"] = "\uD83C\uDFCA\uD83C\uDFFE\u200D♂️", + [":man_swimming_medium_light_skin_tone:"] = "\uD83C\uDFCA\uD83C\uDFFC\u200D♂️", + [":man_swimming_medium_skin_tone:"] = "\uD83C\uDFCA\uD83C\uDFFD\u200D♂️", + [":man_swimming_tone1:"] = "\uD83C\uDFCA\uD83C\uDFFB\u200D♂️", + [":man_swimming_tone2:"] = "\uD83C\uDFCA\uD83C\uDFFC\u200D♂️", + [":man_swimming_tone3:"] = "\uD83C\uDFCA\uD83C\uDFFD\u200D♂️", + [":man_swimming_tone4:"] = "\uD83C\uDFCA\uD83C\uDFFE\u200D♂️", + [":man_swimming_tone5:"] = "\uD83C\uDFCA\uD83C\uDFFF\u200D♂️", + [":man_teacher:"] = "\uD83D\uDC68\u200D\uD83C\uDFEB", + [":man_teacher::skin-tone-1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDFEB", + [":man_teacher::skin-tone-2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFEB", + [":man_teacher::skin-tone-3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDFEB", + [":man_teacher::skin-tone-4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDFEB", + [":man_teacher::skin-tone-5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDFEB", + [":man_teacher_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDFEB", + [":man_teacher_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDFEB", + [":man_teacher_medium_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDFEB", + [":man_teacher_medium_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFEB", + [":man_teacher_medium_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDFEB", + [":man_teacher_tone1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDFEB", + [":man_teacher_tone2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFEB", + [":man_teacher_tone3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDFEB", + [":man_teacher_tone4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDFEB", + [":man_teacher_tone5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDFEB", + [":man_technologist:"] = "\uD83D\uDC68\u200D\uD83D\uDCBB", + [":man_technologist::skin-tone-1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDCBB", + [":man_technologist::skin-tone-2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDCBB", + [":man_technologist::skin-tone-3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDCBB", + [":man_technologist::skin-tone-4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDCBB", + [":man_technologist::skin-tone-5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDCBB", + [":man_technologist_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDCBB", + [":man_technologist_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDCBB", + [":man_technologist_medium_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDCBB", + [":man_technologist_medium_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDCBB", + [":man_technologist_medium_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDCBB", + [":man_technologist_tone1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDCBB", + [":man_technologist_tone2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDCBB", + [":man_technologist_tone3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDCBB", + [":man_technologist_tone4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDCBB", + [":man_technologist_tone5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDCBB", + [":man_tipping_hand:"] = "\uD83D\uDC81\u200D♂️", + [":man_tipping_hand::skin-tone-1:"] = "\uD83D\uDC81\uD83C\uDFFB\u200D♂️", + [":man_tipping_hand::skin-tone-2:"] = "\uD83D\uDC81\uD83C\uDFFC\u200D♂️", + [":man_tipping_hand::skin-tone-3:"] = "\uD83D\uDC81\uD83C\uDFFD\u200D♂️", + [":man_tipping_hand::skin-tone-4:"] = "\uD83D\uDC81\uD83C\uDFFE\u200D♂️", + [":man_tipping_hand::skin-tone-5:"] = "\uD83D\uDC81\uD83C\uDFFF\u200D♂️", + [":man_tipping_hand_dark_skin_tone:"] = "\uD83D\uDC81\uD83C\uDFFF\u200D♂️", + [":man_tipping_hand_light_skin_tone:"] = "\uD83D\uDC81\uD83C\uDFFB\u200D♂️", + [":man_tipping_hand_medium_dark_skin_tone:"] = "\uD83D\uDC81\uD83C\uDFFE\u200D♂️", + [":man_tipping_hand_medium_light_skin_tone:"] = "\uD83D\uDC81\uD83C\uDFFC\u200D♂️", + [":man_tipping_hand_medium_skin_tone:"] = "\uD83D\uDC81\uD83C\uDFFD\u200D♂️", + [":man_tipping_hand_tone1:"] = "\uD83D\uDC81\uD83C\uDFFB\u200D♂️", + [":man_tipping_hand_tone2:"] = "\uD83D\uDC81\uD83C\uDFFC\u200D♂️", + [":man_tipping_hand_tone3:"] = "\uD83D\uDC81\uD83C\uDFFD\u200D♂️", + [":man_tipping_hand_tone4:"] = "\uD83D\uDC81\uD83C\uDFFE\u200D♂️", + [":man_tipping_hand_tone5:"] = "\uD83D\uDC81\uD83C\uDFFF\u200D♂️", + [":man_tone1:"] = "\uD83D\uDC68\uD83C\uDFFB", + [":man_tone2:"] = "\uD83D\uDC68\uD83C\uDFFC", + [":man_tone3:"] = "\uD83D\uDC68\uD83C\uDFFD", + [":man_tone4:"] = "\uD83D\uDC68\uD83C\uDFFE", + [":man_tone5:"] = "\uD83D\uDC68\uD83C\uDFFF", + [":man_vampire:"] = "\uD83E\uDDDB\u200D♂️", + [":man_vampire::skin-tone-1:"] = "\uD83E\uDDDB\uD83C\uDFFB\u200D♂️", + [":man_vampire::skin-tone-2:"] = "\uD83E\uDDDB\uD83C\uDFFC\u200D♂️", + [":man_vampire::skin-tone-3:"] = "\uD83E\uDDDB\uD83C\uDFFD\u200D♂️", + [":man_vampire::skin-tone-4:"] = "\uD83E\uDDDB\uD83C\uDFFE\u200D♂️", + [":man_vampire::skin-tone-5:"] = "\uD83E\uDDDB\uD83C\uDFFF\u200D♂️", + [":man_vampire_dark_skin_tone:"] = "\uD83E\uDDDB\uD83C\uDFFF\u200D♂️", + [":man_vampire_light_skin_tone:"] = "\uD83E\uDDDB\uD83C\uDFFB\u200D♂️", + [":man_vampire_medium_dark_skin_tone:"] = "\uD83E\uDDDB\uD83C\uDFFE\u200D♂️", + [":man_vampire_medium_light_skin_tone:"] = "\uD83E\uDDDB\uD83C\uDFFC\u200D♂️", + [":man_vampire_medium_skin_tone:"] = "\uD83E\uDDDB\uD83C\uDFFD\u200D♂️", + [":man_vampire_tone1:"] = "\uD83E\uDDDB\uD83C\uDFFB\u200D♂️", + [":man_vampire_tone2:"] = "\uD83E\uDDDB\uD83C\uDFFC\u200D♂️", + [":man_vampire_tone3:"] = "\uD83E\uDDDB\uD83C\uDFFD\u200D♂️", + [":man_vampire_tone4:"] = "\uD83E\uDDDB\uD83C\uDFFE\u200D♂️", + [":man_vampire_tone5:"] = "\uD83E\uDDDB\uD83C\uDFFF\u200D♂️", + [":man_walking:"] = "\uD83D\uDEB6\u200D♂️", + [":man_walking::skin-tone-1:"] = "\uD83D\uDEB6\uD83C\uDFFB\u200D♂️", + [":man_walking::skin-tone-2:"] = "\uD83D\uDEB6\uD83C\uDFFC\u200D♂️", + [":man_walking::skin-tone-3:"] = "\uD83D\uDEB6\uD83C\uDFFD\u200D♂️", + [":man_walking::skin-tone-4:"] = "\uD83D\uDEB6\uD83C\uDFFE\u200D♂️", + [":man_walking::skin-tone-5:"] = "\uD83D\uDEB6\uD83C\uDFFF\u200D♂️", + [":man_walking_dark_skin_tone:"] = "\uD83D\uDEB6\uD83C\uDFFF\u200D♂️", + [":man_walking_light_skin_tone:"] = "\uD83D\uDEB6\uD83C\uDFFB\u200D♂️", + [":man_walking_medium_dark_skin_tone:"] = "\uD83D\uDEB6\uD83C\uDFFE\u200D♂️", + [":man_walking_medium_light_skin_tone:"] = "\uD83D\uDEB6\uD83C\uDFFC\u200D♂️", + [":man_walking_medium_skin_tone:"] = "\uD83D\uDEB6\uD83C\uDFFD\u200D♂️", + [":man_walking_tone1:"] = "\uD83D\uDEB6\uD83C\uDFFB\u200D♂️", + [":man_walking_tone2:"] = "\uD83D\uDEB6\uD83C\uDFFC\u200D♂️", + [":man_walking_tone3:"] = "\uD83D\uDEB6\uD83C\uDFFD\u200D♂️", + [":man_walking_tone4:"] = "\uD83D\uDEB6\uD83C\uDFFE\u200D♂️", + [":man_walking_tone5:"] = "\uD83D\uDEB6\uD83C\uDFFF\u200D♂️", + [":man_wearing_turban:"] = "\uD83D\uDC73\u200D♂️", + [":man_wearing_turban::skin-tone-1:"] = "\uD83D\uDC73\uD83C\uDFFB\u200D♂️", + [":man_wearing_turban::skin-tone-2:"] = "\uD83D\uDC73\uD83C\uDFFC\u200D♂️", + [":man_wearing_turban::skin-tone-3:"] = "\uD83D\uDC73\uD83C\uDFFD\u200D♂️", + [":man_wearing_turban::skin-tone-4:"] = "\uD83D\uDC73\uD83C\uDFFE\u200D♂️", + [":man_wearing_turban::skin-tone-5:"] = "\uD83D\uDC73\uD83C\uDFFF\u200D♂️", + [":man_wearing_turban_dark_skin_tone:"] = "\uD83D\uDC73\uD83C\uDFFF\u200D♂️", + [":man_wearing_turban_light_skin_tone:"] = "\uD83D\uDC73\uD83C\uDFFB\u200D♂️", + [":man_wearing_turban_medium_dark_skin_tone:"] = "\uD83D\uDC73\uD83C\uDFFE\u200D♂️", + [":man_wearing_turban_medium_light_skin_tone:"] = "\uD83D\uDC73\uD83C\uDFFC\u200D♂️", + [":man_wearing_turban_medium_skin_tone:"] = "\uD83D\uDC73\uD83C\uDFFD\u200D♂️", + [":man_wearing_turban_tone1:"] = "\uD83D\uDC73\uD83C\uDFFB\u200D♂️", + [":man_wearing_turban_tone2:"] = "\uD83D\uDC73\uD83C\uDFFC\u200D♂️", + [":man_wearing_turban_tone3:"] = "\uD83D\uDC73\uD83C\uDFFD\u200D♂️", + [":man_wearing_turban_tone4:"] = "\uD83D\uDC73\uD83C\uDFFE\u200D♂️", + [":man_wearing_turban_tone5:"] = "\uD83D\uDC73\uD83C\uDFFF\u200D♂️", + [":man_white_haired:"] = "\uD83D\uDC68\u200D\uD83E\uDDB3", + [":man_white_haired::skin-tone-1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDB3", + [":man_white_haired::skin-tone-2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDB3", + [":man_white_haired::skin-tone-3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDB3", + [":man_white_haired::skin-tone-4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDB3", + [":man_white_haired::skin-tone-5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDB3", + [":man_white_haired_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDB3", + [":man_white_haired_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDB3", + [":man_white_haired_medium_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDB3", + [":man_white_haired_medium_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDB3", + [":man_white_haired_medium_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDB3", + [":man_white_haired_tone1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDB3", + [":man_white_haired_tone2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDB3", + [":man_white_haired_tone3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDB3", + [":man_white_haired_tone4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDB3", + [":man_white_haired_tone5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDB3", + [":man_with_chinese_cap:"] = "\uD83D\uDC72", + [":man_with_chinese_cap::skin-tone-1:"] = "\uD83D\uDC72\uD83C\uDFFB", + [":man_with_chinese_cap::skin-tone-2:"] = "\uD83D\uDC72\uD83C\uDFFC", + [":man_with_chinese_cap::skin-tone-3:"] = "\uD83D\uDC72\uD83C\uDFFD", + [":man_with_chinese_cap::skin-tone-4:"] = "\uD83D\uDC72\uD83C\uDFFE", + [":man_with_chinese_cap::skin-tone-5:"] = "\uD83D\uDC72\uD83C\uDFFF", + [":man_with_chinese_cap_tone1:"] = "\uD83D\uDC72\uD83C\uDFFB", + [":man_with_chinese_cap_tone2:"] = "\uD83D\uDC72\uD83C\uDFFC", + [":man_with_chinese_cap_tone3:"] = "\uD83D\uDC72\uD83C\uDFFD", + [":man_with_chinese_cap_tone4:"] = "\uD83D\uDC72\uD83C\uDFFE", + [":man_with_chinese_cap_tone5:"] = "\uD83D\uDC72\uD83C\uDFFF", + [":man_with_gua_pi_mao:"] = "\uD83D\uDC72", + [":man_with_gua_pi_mao::skin-tone-1:"] = "\uD83D\uDC72\uD83C\uDFFB", + [":man_with_gua_pi_mao::skin-tone-2:"] = "\uD83D\uDC72\uD83C\uDFFC", + [":man_with_gua_pi_mao::skin-tone-3:"] = "\uD83D\uDC72\uD83C\uDFFD", + [":man_with_gua_pi_mao::skin-tone-4:"] = "\uD83D\uDC72\uD83C\uDFFE", + [":man_with_gua_pi_mao::skin-tone-5:"] = "\uD83D\uDC72\uD83C\uDFFF", + [":man_with_gua_pi_mao_tone1:"] = "\uD83D\uDC72\uD83C\uDFFB", + [":man_with_gua_pi_mao_tone2:"] = "\uD83D\uDC72\uD83C\uDFFC", + [":man_with_gua_pi_mao_tone3:"] = "\uD83D\uDC72\uD83C\uDFFD", + [":man_with_gua_pi_mao_tone4:"] = "\uD83D\uDC72\uD83C\uDFFE", + [":man_with_gua_pi_mao_tone5:"] = "\uD83D\uDC72\uD83C\uDFFF", + [":man_with_probing_cane:"] = "\uD83D\uDC68\u200D\uD83E\uDDAF", + [":man_with_probing_cane::skin-tone-1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDAF", + [":man_with_probing_cane::skin-tone-2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDAF", + [":man_with_probing_cane::skin-tone-3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDAF", + [":man_with_probing_cane::skin-tone-4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDAF", + [":man_with_probing_cane::skin-tone-5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDAF", + [":man_with_probing_cane_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDAF", + [":man_with_probing_cane_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDAF", + [":man_with_probing_cane_medium_dark_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDAF", + [":man_with_probing_cane_medium_light_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDAF", + [":man_with_probing_cane_medium_skin_tone:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDAF", + [":man_with_probing_cane_tone1:"] = "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDAF", + [":man_with_probing_cane_tone2:"] = "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDAF", + [":man_with_probing_cane_tone3:"] = "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDAF", + [":man_with_probing_cane_tone4:"] = "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDAF", + [":man_with_probing_cane_tone5:"] = "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDAF", + [":man_with_turban:"] = "\uD83D\uDC73", + [":man_with_turban::skin-tone-1:"] = "\uD83D\uDC73\uD83C\uDFFB", + [":man_with_turban::skin-tone-2:"] = "\uD83D\uDC73\uD83C\uDFFC", + [":man_with_turban::skin-tone-3:"] = "\uD83D\uDC73\uD83C\uDFFD", + [":man_with_turban::skin-tone-4:"] = "\uD83D\uDC73\uD83C\uDFFE", + [":man_with_turban::skin-tone-5:"] = "\uD83D\uDC73\uD83C\uDFFF", + [":man_with_turban_tone1:"] = "\uD83D\uDC73\uD83C\uDFFB", + [":man_with_turban_tone2:"] = "\uD83D\uDC73\uD83C\uDFFC", + [":man_with_turban_tone3:"] = "\uD83D\uDC73\uD83C\uDFFD", + [":man_with_turban_tone4:"] = "\uD83D\uDC73\uD83C\uDFFE", + [":man_with_turban_tone5:"] = "\uD83D\uDC73\uD83C\uDFFF", + [":man_zombie:"] = "\uD83E\uDDDF\u200D♂️", + [":mango:"] = "\uD83E\uDD6D", + [":mans_shoe:"] = "\uD83D\uDC5E", + [":mantlepiece_clock:"] = "\uD83D\uDD70️", + [":manual_wheelchair:"] = "\uD83E\uDDBD", + [":map:"] = "\uD83D\uDDFA️", + [":maple_leaf:"] = "\uD83C\uDF41", + [":martial_arts_uniform:"] = "\uD83E\uDD4B", + [":mask:"] = "\uD83D\uDE37", + [":massage:"] = "\uD83D\uDC86", + [":massage::skin-tone-1:"] = "\uD83D\uDC86\uD83C\uDFFB", + [":massage::skin-tone-2:"] = "\uD83D\uDC86\uD83C\uDFFC", + [":massage::skin-tone-3:"] = "\uD83D\uDC86\uD83C\uDFFD", + [":massage::skin-tone-4:"] = "\uD83D\uDC86\uD83C\uDFFE", + [":massage::skin-tone-5:"] = "\uD83D\uDC86\uD83C\uDFFF", + [":massage_tone1:"] = "\uD83D\uDC86\uD83C\uDFFB", + [":massage_tone2:"] = "\uD83D\uDC86\uD83C\uDFFC", + [":massage_tone3:"] = "\uD83D\uDC86\uD83C\uDFFD", + [":massage_tone4:"] = "\uD83D\uDC86\uD83C\uDFFE", + [":massage_tone5:"] = "\uD83D\uDC86\uD83C\uDFFF", + [":mate:"] = "\uD83E\uDDC9", + [":meat_on_bone:"] = "\uD83C\uDF56", + [":mechanical_arm:"] = "\uD83E\uDDBE", + [":mechanical_leg:"] = "\uD83E\uDDBF", + [":medal:"] = "\uD83C\uDFC5", + [":medical_symbol:"] = "⚕️", + [":mega:"] = "\uD83D\uDCE3", + [":melon:"] = "\uD83C\uDF48", + [":memo:"] = "\uD83D\uDCDD", + [":men_with_bunny_ears_partying:"] = "\uD83D\uDC6F\u200D♂️", + [":men_wrestling:"] = "\uD83E\uDD3C\u200D♂️", + [":menorah:"] = "\uD83D\uDD4E", + [":mens:"] = "\uD83D\uDEB9", + [":mermaid:"] = "\uD83E\uDDDC\u200D♀️", + [":mermaid::skin-tone-1:"] = "\uD83E\uDDDC\uD83C\uDFFB\u200D♀️", + [":mermaid::skin-tone-2:"] = "\uD83E\uDDDC\uD83C\uDFFC\u200D♀️", + [":mermaid::skin-tone-3:"] = "\uD83E\uDDDC\uD83C\uDFFD\u200D♀️", + [":mermaid::skin-tone-4:"] = "\uD83E\uDDDC\uD83C\uDFFE\u200D♀️", + [":mermaid::skin-tone-5:"] = "\uD83E\uDDDC\uD83C\uDFFF\u200D♀️", + [":mermaid_dark_skin_tone:"] = "\uD83E\uDDDC\uD83C\uDFFF\u200D♀️", + [":mermaid_light_skin_tone:"] = "\uD83E\uDDDC\uD83C\uDFFB\u200D♀️", + [":mermaid_medium_dark_skin_tone:"] = "\uD83E\uDDDC\uD83C\uDFFE\u200D♀️", + [":mermaid_medium_light_skin_tone:"] = "\uD83E\uDDDC\uD83C\uDFFC\u200D♀️", + [":mermaid_medium_skin_tone:"] = "\uD83E\uDDDC\uD83C\uDFFD\u200D♀️", + [":mermaid_tone1:"] = "\uD83E\uDDDC\uD83C\uDFFB\u200D♀️", + [":mermaid_tone2:"] = "\uD83E\uDDDC\uD83C\uDFFC\u200D♀️", + [":mermaid_tone3:"] = "\uD83E\uDDDC\uD83C\uDFFD\u200D♀️", + [":mermaid_tone4:"] = "\uD83E\uDDDC\uD83C\uDFFE\u200D♀️", + [":mermaid_tone5:"] = "\uD83E\uDDDC\uD83C\uDFFF\u200D♀️", + [":merman:"] = "\uD83E\uDDDC\u200D♂️", + [":merman::skin-tone-1:"] = "\uD83E\uDDDC\uD83C\uDFFB\u200D♂️", + [":merman::skin-tone-2:"] = "\uD83E\uDDDC\uD83C\uDFFC\u200D♂️", + [":merman::skin-tone-3:"] = "\uD83E\uDDDC\uD83C\uDFFD\u200D♂️", + [":merman::skin-tone-4:"] = "\uD83E\uDDDC\uD83C\uDFFE\u200D♂️", + [":merman::skin-tone-5:"] = "\uD83E\uDDDC\uD83C\uDFFF\u200D♂️", + [":merman_dark_skin_tone:"] = "\uD83E\uDDDC\uD83C\uDFFF\u200D♂️", + [":merman_light_skin_tone:"] = "\uD83E\uDDDC\uD83C\uDFFB\u200D♂️", + [":merman_medium_dark_skin_tone:"] = "\uD83E\uDDDC\uD83C\uDFFE\u200D♂️", + [":merman_medium_light_skin_tone:"] = "\uD83E\uDDDC\uD83C\uDFFC\u200D♂️", + [":merman_medium_skin_tone:"] = "\uD83E\uDDDC\uD83C\uDFFD\u200D♂️", + [":merman_tone1:"] = "\uD83E\uDDDC\uD83C\uDFFB\u200D♂️", + [":merman_tone2:"] = "\uD83E\uDDDC\uD83C\uDFFC\u200D♂️", + [":merman_tone3:"] = "\uD83E\uDDDC\uD83C\uDFFD\u200D♂️", + [":merman_tone4:"] = "\uD83E\uDDDC\uD83C\uDFFE\u200D♂️", + [":merman_tone5:"] = "\uD83E\uDDDC\uD83C\uDFFF\u200D♂️", + [":merperson:"] = "\uD83E\uDDDC", + [":merperson::skin-tone-1:"] = "\uD83E\uDDDC\uD83C\uDFFB", + [":merperson::skin-tone-2:"] = "\uD83E\uDDDC\uD83C\uDFFC", + [":merperson::skin-tone-3:"] = "\uD83E\uDDDC\uD83C\uDFFD", + [":merperson::skin-tone-4:"] = "\uD83E\uDDDC\uD83C\uDFFE", + [":merperson::skin-tone-5:"] = "\uD83E\uDDDC\uD83C\uDFFF", + [":merperson_dark_skin_tone:"] = "\uD83E\uDDDC\uD83C\uDFFF", + [":merperson_light_skin_tone:"] = "\uD83E\uDDDC\uD83C\uDFFB", + [":merperson_medium_dark_skin_tone:"] = "\uD83E\uDDDC\uD83C\uDFFE", + [":merperson_medium_light_skin_tone:"] = "\uD83E\uDDDC\uD83C\uDFFC", + [":merperson_medium_skin_tone:"] = "\uD83E\uDDDC\uD83C\uDFFD", + [":merperson_tone1:"] = "\uD83E\uDDDC\uD83C\uDFFB", + [":merperson_tone2:"] = "\uD83E\uDDDC\uD83C\uDFFC", + [":merperson_tone3:"] = "\uD83E\uDDDC\uD83C\uDFFD", + [":merperson_tone4:"] = "\uD83E\uDDDC\uD83C\uDFFE", + [":merperson_tone5:"] = "\uD83E\uDDDC\uD83C\uDFFF", + [":metal:"] = "\uD83E\uDD18", + [":metal::skin-tone-1:"] = "\uD83E\uDD18\uD83C\uDFFB", + [":metal::skin-tone-2:"] = "\uD83E\uDD18\uD83C\uDFFC", + [":metal::skin-tone-3:"] = "\uD83E\uDD18\uD83C\uDFFD", + [":metal::skin-tone-4:"] = "\uD83E\uDD18\uD83C\uDFFE", + [":metal::skin-tone-5:"] = "\uD83E\uDD18\uD83C\uDFFF", + [":metal_tone1:"] = "\uD83E\uDD18\uD83C\uDFFB", + [":metal_tone2:"] = "\uD83E\uDD18\uD83C\uDFFC", + [":metal_tone3:"] = "\uD83E\uDD18\uD83C\uDFFD", + [":metal_tone4:"] = "\uD83E\uDD18\uD83C\uDFFE", + [":metal_tone5:"] = "\uD83E\uDD18\uD83C\uDFFF", + [":metro:"] = "\uD83D\uDE87", + [":microbe:"] = "\uD83E\uDDA0", + [":microphone2:"] = "\uD83C\uDF99️", + [":microphone:"] = "\uD83C\uDFA4", + [":microscope:"] = "\uD83D\uDD2C", + [":middle_finger:"] = "\uD83D\uDD95", + [":middle_finger::skin-tone-1:"] = "\uD83D\uDD95\uD83C\uDFFB", + [":middle_finger::skin-tone-2:"] = "\uD83D\uDD95\uD83C\uDFFC", + [":middle_finger::skin-tone-3:"] = "\uD83D\uDD95\uD83C\uDFFD", + [":middle_finger::skin-tone-4:"] = "\uD83D\uDD95\uD83C\uDFFE", + [":middle_finger::skin-tone-5:"] = "\uD83D\uDD95\uD83C\uDFFF", + [":middle_finger_tone1:"] = "\uD83D\uDD95\uD83C\uDFFB", + [":middle_finger_tone2:"] = "\uD83D\uDD95\uD83C\uDFFC", + [":middle_finger_tone3:"] = "\uD83D\uDD95\uD83C\uDFFD", + [":middle_finger_tone4:"] = "\uD83D\uDD95\uD83C\uDFFE", + [":middle_finger_tone5:"] = "\uD83D\uDD95\uD83C\uDFFF", + [":military_medal:"] = "\uD83C\uDF96️", + [":milk:"] = "\uD83E\uDD5B", + [":milky_way:"] = "\uD83C\uDF0C", + [":minibus:"] = "\uD83D\uDE90", + [":minidisc:"] = "\uD83D\uDCBD", + [":mobile_phone_off:"] = "\uD83D\uDCF4", + [":money_mouth:"] = "\uD83E\uDD11", + [":money_mouth_face:"] = "\uD83E\uDD11", + [":money_with_wings:"] = "\uD83D\uDCB8", + [":moneybag:"] = "\uD83D\uDCB0", + [":monkey:"] = "\uD83D\uDC12", + [":monkey_face:"] = "\uD83D\uDC35", + [":monorail:"] = "\uD83D\uDE9D", + [":moon_cake:"] = "\uD83E\uDD6E", + [":mortar_board:"] = "\uD83C\uDF93", + [":mosque:"] = "\uD83D\uDD4C", + [":mosquito:"] = "\uD83E\uDD9F", + [":mother_christmas:"] = "\uD83E\uDD36", + [":mother_christmas::skin-tone-1:"] = "\uD83E\uDD36\uD83C\uDFFB", + [":mother_christmas::skin-tone-2:"] = "\uD83E\uDD36\uD83C\uDFFC", + [":mother_christmas::skin-tone-3:"] = "\uD83E\uDD36\uD83C\uDFFD", + [":mother_christmas::skin-tone-4:"] = "\uD83E\uDD36\uD83C\uDFFE", + [":mother_christmas::skin-tone-5:"] = "\uD83E\uDD36\uD83C\uDFFF", + [":mother_christmas_tone1:"] = "\uD83E\uDD36\uD83C\uDFFB", + [":mother_christmas_tone2:"] = "\uD83E\uDD36\uD83C\uDFFC", + [":mother_christmas_tone3:"] = "\uD83E\uDD36\uD83C\uDFFD", + [":mother_christmas_tone4:"] = "\uD83E\uDD36\uD83C\uDFFE", + [":mother_christmas_tone5:"] = "\uD83E\uDD36\uD83C\uDFFF", + [":motor_scooter:"] = "\uD83D\uDEF5", + [":motorbike:"] = "\uD83D\uDEF5", + [":motorboat:"] = "\uD83D\uDEE5️", + [":motorcycle:"] = "\uD83C\uDFCD️", + [":motorized_wheelchair:"] = "\uD83E\uDDBC", + [":motorway:"] = "\uD83D\uDEE3️", + [":mount_fuji:"] = "\uD83D\uDDFB", + [":mountain:"] = "⛰️", + [":mountain_bicyclist:"] = "\uD83D\uDEB5", + [":mountain_bicyclist::skin-tone-1:"] = "\uD83D\uDEB5\uD83C\uDFFB", + [":mountain_bicyclist::skin-tone-2:"] = "\uD83D\uDEB5\uD83C\uDFFC", + [":mountain_bicyclist::skin-tone-3:"] = "\uD83D\uDEB5\uD83C\uDFFD", + [":mountain_bicyclist::skin-tone-4:"] = "\uD83D\uDEB5\uD83C\uDFFE", + [":mountain_bicyclist::skin-tone-5:"] = "\uD83D\uDEB5\uD83C\uDFFF", + [":mountain_bicyclist_tone1:"] = "\uD83D\uDEB5\uD83C\uDFFB", + [":mountain_bicyclist_tone2:"] = "\uD83D\uDEB5\uD83C\uDFFC", + [":mountain_bicyclist_tone3:"] = "\uD83D\uDEB5\uD83C\uDFFD", + [":mountain_bicyclist_tone4:"] = "\uD83D\uDEB5\uD83C\uDFFE", + [":mountain_bicyclist_tone5:"] = "\uD83D\uDEB5\uD83C\uDFFF", + [":mountain_cableway:"] = "\uD83D\uDEA0", + [":mountain_railway:"] = "\uD83D\uDE9E", + [":mountain_snow:"] = "\uD83C\uDFD4️", + [":mouse2:"] = "\uD83D\uDC01", + [":mouse:"] = "\uD83D\uDC2D", + [":mouse_three_button:"] = "\uD83D\uDDB1️", + [":movie_camera:"] = "\uD83C\uDFA5", + [":moyai:"] = "\uD83D\uDDFF", + [":mrs_claus:"] = "\uD83E\uDD36", + [":mrs_claus::skin-tone-1:"] = "\uD83E\uDD36\uD83C\uDFFB", + [":mrs_claus::skin-tone-2:"] = "\uD83E\uDD36\uD83C\uDFFC", + [":mrs_claus::skin-tone-3:"] = "\uD83E\uDD36\uD83C\uDFFD", + [":mrs_claus::skin-tone-4:"] = "\uD83E\uDD36\uD83C\uDFFE", + [":mrs_claus::skin-tone-5:"] = "\uD83E\uDD36\uD83C\uDFFF", + [":mrs_claus_tone1:"] = "\uD83E\uDD36\uD83C\uDFFB", + [":mrs_claus_tone2:"] = "\uD83E\uDD36\uD83C\uDFFC", + [":mrs_claus_tone3:"] = "\uD83E\uDD36\uD83C\uDFFD", + [":mrs_claus_tone4:"] = "\uD83E\uDD36\uD83C\uDFFE", + [":mrs_claus_tone5:"] = "\uD83E\uDD36\uD83C\uDFFF", + [":muscle:"] = "\uD83D\uDCAA", + [":muscle::skin-tone-1:"] = "\uD83D\uDCAA\uD83C\uDFFB", + [":muscle::skin-tone-2:"] = "\uD83D\uDCAA\uD83C\uDFFC", + [":muscle::skin-tone-3:"] = "\uD83D\uDCAA\uD83C\uDFFD", + [":muscle::skin-tone-4:"] = "\uD83D\uDCAA\uD83C\uDFFE", + [":muscle::skin-tone-5:"] = "\uD83D\uDCAA\uD83C\uDFFF", + [":muscle_tone1:"] = "\uD83D\uDCAA\uD83C\uDFFB", + [":muscle_tone2:"] = "\uD83D\uDCAA\uD83C\uDFFC", + [":muscle_tone3:"] = "\uD83D\uDCAA\uD83C\uDFFD", + [":muscle_tone4:"] = "\uD83D\uDCAA\uD83C\uDFFE", + [":muscle_tone5:"] = "\uD83D\uDCAA\uD83C\uDFFF", + [":mushroom:"] = "\uD83C\uDF44", + [":musical_keyboard:"] = "\uD83C\uDFB9", + [":musical_note:"] = "\uD83C\uDFB5", + [":musical_score:"] = "\uD83C\uDFBC", + [":mute:"] = "\uD83D\uDD07", + [":nail_care:"] = "\uD83D\uDC85", + [":nail_care::skin-tone-1:"] = "\uD83D\uDC85\uD83C\uDFFB", + [":nail_care::skin-tone-2:"] = "\uD83D\uDC85\uD83C\uDFFC", + [":nail_care::skin-tone-3:"] = "\uD83D\uDC85\uD83C\uDFFD", + [":nail_care::skin-tone-4:"] = "\uD83D\uDC85\uD83C\uDFFE", + [":nail_care::skin-tone-5:"] = "\uD83D\uDC85\uD83C\uDFFF", + [":nail_care_tone1:"] = "\uD83D\uDC85\uD83C\uDFFB", + [":nail_care_tone2:"] = "\uD83D\uDC85\uD83C\uDFFC", + [":nail_care_tone3:"] = "\uD83D\uDC85\uD83C\uDFFD", + [":nail_care_tone4:"] = "\uD83D\uDC85\uD83C\uDFFE", + [":nail_care_tone5:"] = "\uD83D\uDC85\uD83C\uDFFF", + [":name_badge:"] = "\uD83D\uDCDB", + [":national_park:"] = "\uD83C\uDFDE️", + [":nauseated_face:"] = "\uD83E\uDD22", + [":nazar_amulet:"] = "\uD83E\uDDFF", + [":necktie:"] = "\uD83D\uDC54", + [":negative_squared_cross_mark:"] = "❎", + [":nerd:"] = "\uD83E\uDD13", + [":nerd_face:"] = "\uD83E\uDD13", + [":neutral_face:"] = "\uD83D\uDE10", + [":new:"] = "\uD83C\uDD95", + [":new_moon:"] = "\uD83C\uDF11", + [":new_moon_with_face:"] = "\uD83C\uDF1A", + [":newspaper2:"] = "\uD83D\uDDDE️", + [":newspaper:"] = "\uD83D\uDCF0", + [":next_track:"] = "⏭️", + [":ng:"] = "\uD83C\uDD96", + [":night_with_stars:"] = "\uD83C\uDF03", + [":nine:"] = "9️⃣", + [":no_bell:"] = "\uD83D\uDD15", + [":no_bicycles:"] = "\uD83D\uDEB3", + [":no_entry:"] = "⛔", + [":no_entry_sign:"] = "\uD83D\uDEAB", + [":no_good:"] = "\uD83D\uDE45", + [":no_good::skin-tone-1:"] = "\uD83D\uDE45\uD83C\uDFFB", + [":no_good::skin-tone-2:"] = "\uD83D\uDE45\uD83C\uDFFC", + [":no_good::skin-tone-3:"] = "\uD83D\uDE45\uD83C\uDFFD", + [":no_good::skin-tone-4:"] = "\uD83D\uDE45\uD83C\uDFFE", + [":no_good::skin-tone-5:"] = "\uD83D\uDE45\uD83C\uDFFF", + [":no_good_tone1:"] = "\uD83D\uDE45\uD83C\uDFFB", + [":no_good_tone2:"] = "\uD83D\uDE45\uD83C\uDFFC", + [":no_good_tone3:"] = "\uD83D\uDE45\uD83C\uDFFD", + [":no_good_tone4:"] = "\uD83D\uDE45\uD83C\uDFFE", + [":no_good_tone5:"] = "\uD83D\uDE45\uD83C\uDFFF", + [":no_mobile_phones:"] = "\uD83D\uDCF5", + [":no_mouth:"] = "\uD83D\uDE36", + [":no_pedestrians:"] = "\uD83D\uDEB7", + [":no_smoking:"] = "\uD83D\uDEAD", + [":non_potable_water:"] = "\uD83D\uDEB1", + [":nose:"] = "\uD83D\uDC43", + [":nose::skin-tone-1:"] = "\uD83D\uDC43\uD83C\uDFFB", + [":nose::skin-tone-2:"] = "\uD83D\uDC43\uD83C\uDFFC", + [":nose::skin-tone-3:"] = "\uD83D\uDC43\uD83C\uDFFD", + [":nose::skin-tone-4:"] = "\uD83D\uDC43\uD83C\uDFFE", + [":nose::skin-tone-5:"] = "\uD83D\uDC43\uD83C\uDFFF", + [":nose_tone1:"] = "\uD83D\uDC43\uD83C\uDFFB", + [":nose_tone2:"] = "\uD83D\uDC43\uD83C\uDFFC", + [":nose_tone3:"] = "\uD83D\uDC43\uD83C\uDFFD", + [":nose_tone4:"] = "\uD83D\uDC43\uD83C\uDFFE", + [":nose_tone5:"] = "\uD83D\uDC43\uD83C\uDFFF", + [":notebook:"] = "\uD83D\uDCD3", + [":notebook_with_decorative_cover:"] = "\uD83D\uDCD4", + [":notepad_spiral:"] = "\uD83D\uDDD2️", + [":notes:"] = "\uD83C\uDFB6", + [":nut_and_bolt:"] = "\uD83D\uDD29", + [":o"] = "\uD83D\uDE2E", + [":o2:"] = "\uD83C\uDD7E️", + [":o:"] = "⭕", + [":ocean:"] = "\uD83C\uDF0A", + [":octagonal_sign:"] = "\uD83D\uDED1", + [":octopus:"] = "\uD83D\uDC19", + [":oden:"] = "\uD83C\uDF62", + [":office:"] = "\uD83C\uDFE2", + [":oil:"] = "\uD83D\uDEE2️", + [":oil_drum:"] = "\uD83D\uDEE2️", + [":ok:"] = "\uD83C\uDD97", + [":ok_hand:"] = "\uD83D\uDC4C", + [":ok_hand::skin-tone-1:"] = "\uD83D\uDC4C\uD83C\uDFFB", + [":ok_hand::skin-tone-2:"] = "\uD83D\uDC4C\uD83C\uDFFC", + [":ok_hand::skin-tone-3:"] = "\uD83D\uDC4C\uD83C\uDFFD", + [":ok_hand::skin-tone-4:"] = "\uD83D\uDC4C\uD83C\uDFFE", + [":ok_hand::skin-tone-5:"] = "\uD83D\uDC4C\uD83C\uDFFF", + [":ok_hand_tone1:"] = "\uD83D\uDC4C\uD83C\uDFFB", + [":ok_hand_tone2:"] = "\uD83D\uDC4C\uD83C\uDFFC", + [":ok_hand_tone3:"] = "\uD83D\uDC4C\uD83C\uDFFD", + [":ok_hand_tone4:"] = "\uD83D\uDC4C\uD83C\uDFFE", + [":ok_hand_tone5:"] = "\uD83D\uDC4C\uD83C\uDFFF", + [":ok_woman:"] = "\uD83D\uDE46", + [":ok_woman::skin-tone-1:"] = "\uD83D\uDE46\uD83C\uDFFB", + [":ok_woman::skin-tone-2:"] = "\uD83D\uDE46\uD83C\uDFFC", + [":ok_woman::skin-tone-3:"] = "\uD83D\uDE46\uD83C\uDFFD", + [":ok_woman::skin-tone-4:"] = "\uD83D\uDE46\uD83C\uDFFE", + [":ok_woman::skin-tone-5:"] = "\uD83D\uDE46\uD83C\uDFFF", + [":ok_woman_tone1:"] = "\uD83D\uDE46\uD83C\uDFFB", + [":ok_woman_tone2:"] = "\uD83D\uDE46\uD83C\uDFFC", + [":ok_woman_tone3:"] = "\uD83D\uDE46\uD83C\uDFFD", + [":ok_woman_tone4:"] = "\uD83D\uDE46\uD83C\uDFFE", + [":ok_woman_tone5:"] = "\uD83D\uDE46\uD83C\uDFFF", + [":old_key:"] = "\uD83D\uDDDD️", + [":older_adult:"] = "\uD83E\uDDD3", + [":older_adult::skin-tone-1:"] = "\uD83E\uDDD3\uD83C\uDFFB", + [":older_adult::skin-tone-2:"] = "\uD83E\uDDD3\uD83C\uDFFC", + [":older_adult::skin-tone-3:"] = "\uD83E\uDDD3\uD83C\uDFFD", + [":older_adult::skin-tone-4:"] = "\uD83E\uDDD3\uD83C\uDFFE", + [":older_adult::skin-tone-5:"] = "\uD83E\uDDD3\uD83C\uDFFF", + [":older_adult_dark_skin_tone:"] = "\uD83E\uDDD3\uD83C\uDFFF", + [":older_adult_light_skin_tone:"] = "\uD83E\uDDD3\uD83C\uDFFB", + [":older_adult_medium_dark_skin_tone:"] = "\uD83E\uDDD3\uD83C\uDFFE", + [":older_adult_medium_light_skin_tone:"] = "\uD83E\uDDD3\uD83C\uDFFC", + [":older_adult_medium_skin_tone:"] = "\uD83E\uDDD3\uD83C\uDFFD", + [":older_adult_tone1:"] = "\uD83E\uDDD3\uD83C\uDFFB", + [":older_adult_tone2:"] = "\uD83E\uDDD3\uD83C\uDFFC", + [":older_adult_tone3:"] = "\uD83E\uDDD3\uD83C\uDFFD", + [":older_adult_tone4:"] = "\uD83E\uDDD3\uD83C\uDFFE", + [":older_adult_tone5:"] = "\uD83E\uDDD3\uD83C\uDFFF", + [":older_man:"] = "\uD83D\uDC74", + [":older_man::skin-tone-1:"] = "\uD83D\uDC74\uD83C\uDFFB", + [":older_man::skin-tone-2:"] = "\uD83D\uDC74\uD83C\uDFFC", + [":older_man::skin-tone-3:"] = "\uD83D\uDC74\uD83C\uDFFD", + [":older_man::skin-tone-4:"] = "\uD83D\uDC74\uD83C\uDFFE", + [":older_man::skin-tone-5:"] = "\uD83D\uDC74\uD83C\uDFFF", + [":older_man_tone1:"] = "\uD83D\uDC74\uD83C\uDFFB", + [":older_man_tone2:"] = "\uD83D\uDC74\uD83C\uDFFC", + [":older_man_tone3:"] = "\uD83D\uDC74\uD83C\uDFFD", + [":older_man_tone4:"] = "\uD83D\uDC74\uD83C\uDFFE", + [":older_man_tone5:"] = "\uD83D\uDC74\uD83C\uDFFF", + [":older_woman:"] = "\uD83D\uDC75", + [":older_woman::skin-tone-1:"] = "\uD83D\uDC75\uD83C\uDFFB", + [":older_woman::skin-tone-2:"] = "\uD83D\uDC75\uD83C\uDFFC", + [":older_woman::skin-tone-3:"] = "\uD83D\uDC75\uD83C\uDFFD", + [":older_woman::skin-tone-4:"] = "\uD83D\uDC75\uD83C\uDFFE", + [":older_woman::skin-tone-5:"] = "\uD83D\uDC75\uD83C\uDFFF", + [":older_woman_tone1:"] = "\uD83D\uDC75\uD83C\uDFFB", + [":older_woman_tone2:"] = "\uD83D\uDC75\uD83C\uDFFC", + [":older_woman_tone3:"] = "\uD83D\uDC75\uD83C\uDFFD", + [":older_woman_tone4:"] = "\uD83D\uDC75\uD83C\uDFFE", + [":older_woman_tone5:"] = "\uD83D\uDC75\uD83C\uDFFF", + [":om_symbol:"] = "\uD83D\uDD49️", + [":on:"] = "\uD83D\uDD1B", + [":oncoming_automobile:"] = "\uD83D\uDE98", + [":oncoming_bus:"] = "\uD83D\uDE8D", + [":oncoming_police_car:"] = "\uD83D\uDE94", + [":oncoming_taxi:"] = "\uD83D\uDE96", + [":one:"] = "1️⃣", + [":one_piece_swimsuit:"] = "\uD83E\uDE71", + [":onion:"] = "\uD83E\uDDC5", + [":open_file_folder:"] = "\uD83D\uDCC2", + [":open_hands:"] = "\uD83D\uDC50", + [":open_hands::skin-tone-1:"] = "\uD83D\uDC50\uD83C\uDFFB", + [":open_hands::skin-tone-2:"] = "\uD83D\uDC50\uD83C\uDFFC", + [":open_hands::skin-tone-3:"] = "\uD83D\uDC50\uD83C\uDFFD", + [":open_hands::skin-tone-4:"] = "\uD83D\uDC50\uD83C\uDFFE", + [":open_hands::skin-tone-5:"] = "\uD83D\uDC50\uD83C\uDFFF", + [":open_hands_tone1:"] = "\uD83D\uDC50\uD83C\uDFFB", + [":open_hands_tone2:"] = "\uD83D\uDC50\uD83C\uDFFC", + [":open_hands_tone3:"] = "\uD83D\uDC50\uD83C\uDFFD", + [":open_hands_tone4:"] = "\uD83D\uDC50\uD83C\uDFFE", + [":open_hands_tone5:"] = "\uD83D\uDC50\uD83C\uDFFF", + [":open_mouth:"] = "\uD83D\uDE2E", + [":ophiuchus:"] = "⛎", + [":orange_book:"] = "\uD83D\uDCD9", + [":orange_circle:"] = "\uD83D\uDFE0", + [":orange_heart:"] = "\uD83E\uDDE1", + [":orange_square:"] = "\uD83D\uDFE7", + [":orangutan:"] = "\uD83E\uDDA7", + [":orthodox_cross:"] = "☦️", + [":otter:"] = "\uD83E\uDDA6", + [":outbox_tray:"] = "\uD83D\uDCE4", + [":owl:"] = "\uD83E\uDD89", + [":ox:"] = "\uD83D\uDC02", + [":oyster:"] = "\uD83E\uDDAA", + [":package:"] = "\uD83D\uDCE6", + [":paella:"] = "\uD83E\uDD58", + [":page_facing_up:"] = "\uD83D\uDCC4", + [":page_with_curl:"] = "\uD83D\uDCC3", + [":pager:"] = "\uD83D\uDCDF", + [":paintbrush:"] = "\uD83D\uDD8C️", + [":palm_tree:"] = "\uD83C\uDF34", + [":palms_up_together:"] = "\uD83E\uDD32", + [":palms_up_together::skin-tone-1:"] = "\uD83E\uDD32\uD83C\uDFFB", + [":palms_up_together::skin-tone-2:"] = "\uD83E\uDD32\uD83C\uDFFC", + [":palms_up_together::skin-tone-3:"] = "\uD83E\uDD32\uD83C\uDFFD", + [":palms_up_together::skin-tone-4:"] = "\uD83E\uDD32\uD83C\uDFFE", + [":palms_up_together::skin-tone-5:"] = "\uD83E\uDD32\uD83C\uDFFF", + [":palms_up_together_dark_skin_tone:"] = "\uD83E\uDD32\uD83C\uDFFF", + [":palms_up_together_light_skin_tone:"] = "\uD83E\uDD32\uD83C\uDFFB", + [":palms_up_together_medium_dark_skin_tone:"] = "\uD83E\uDD32\uD83C\uDFFE", + [":palms_up_together_medium_light_skin_tone:"] = "\uD83E\uDD32\uD83C\uDFFC", + [":palms_up_together_medium_skin_tone:"] = "\uD83E\uDD32\uD83C\uDFFD", + [":palms_up_together_tone1:"] = "\uD83E\uDD32\uD83C\uDFFB", + [":palms_up_together_tone2:"] = "\uD83E\uDD32\uD83C\uDFFC", + [":palms_up_together_tone3:"] = "\uD83E\uDD32\uD83C\uDFFD", + [":palms_up_together_tone4:"] = "\uD83E\uDD32\uD83C\uDFFE", + [":palms_up_together_tone5:"] = "\uD83E\uDD32\uD83C\uDFFF", + [":pancakes:"] = "\uD83E\uDD5E", + [":panda_face:"] = "\uD83D\uDC3C", + [":paperclip:"] = "\uD83D\uDCCE", + [":paperclips:"] = "\uD83D\uDD87️", + [":parachute:"] = "\uD83E\uDE82", + [":park:"] = "\uD83C\uDFDE️", + [":parking:"] = "\uD83C\uDD7F️", + [":parrot:"] = "\uD83E\uDD9C", + [":part_alternation_mark:"] = "〽️", + [":partly_sunny:"] = "⛅", + [":partying_face:"] = "\uD83E\uDD73", + [":passenger_ship:"] = "\uD83D\uDEF3️", + [":passport_control:"] = "\uD83D\uDEC2", + [":pause_button:"] = "⏸️", + [":paw_prints:"] = "\uD83D\uDC3E", + [":peace:"] = "☮️", + [":peace_symbol:"] = "☮️", + [":peach:"] = "\uD83C\uDF51", + [":peacock:"] = "\uD83E\uDD9A", + [":peanuts:"] = "\uD83E\uDD5C", + [":pear:"] = "\uD83C\uDF50", + [":pen_ballpoint:"] = "\uD83D\uDD8A️", + [":pen_fountain:"] = "\uD83D\uDD8B️", + [":pencil2:"] = "✏️", + [":pencil:"] = "\uD83D\uDCDD", + [":penguin:"] = "\uD83D\uDC27", + [":pensive:"] = "\uD83D\uDE14", + [":people_holding_hands:"] = "\uD83E\uDDD1\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1", + [":people_with_bunny_ears_partying:"] = "\uD83D\uDC6F", + [":people_wrestling:"] = "\uD83E\uDD3C", + [":performing_arts:"] = "\uD83C\uDFAD", + [":persevere:"] = "\uD83D\uDE23", + [":person_biking:"] = "\uD83D\uDEB4", + [":person_biking::skin-tone-1:"] = "\uD83D\uDEB4\uD83C\uDFFB", + [":person_biking::skin-tone-2:"] = "\uD83D\uDEB4\uD83C\uDFFC", + [":person_biking::skin-tone-3:"] = "\uD83D\uDEB4\uD83C\uDFFD", + [":person_biking::skin-tone-4:"] = "\uD83D\uDEB4\uD83C\uDFFE", + [":person_biking::skin-tone-5:"] = "\uD83D\uDEB4\uD83C\uDFFF", + [":person_biking_tone1:"] = "\uD83D\uDEB4\uD83C\uDFFB", + [":person_biking_tone2:"] = "\uD83D\uDEB4\uD83C\uDFFC", + [":person_biking_tone3:"] = "\uD83D\uDEB4\uD83C\uDFFD", + [":person_biking_tone4:"] = "\uD83D\uDEB4\uD83C\uDFFE", + [":person_biking_tone5:"] = "\uD83D\uDEB4\uD83C\uDFFF", + [":person_bouncing_ball:"] = "⛹️", + [":person_bouncing_ball::skin-tone-1:"] = "⛹\uD83C\uDFFB", + [":person_bouncing_ball::skin-tone-2:"] = "⛹\uD83C\uDFFC", + [":person_bouncing_ball::skin-tone-3:"] = "⛹\uD83C\uDFFD", + [":person_bouncing_ball::skin-tone-4:"] = "⛹\uD83C\uDFFE", + [":person_bouncing_ball::skin-tone-5:"] = "⛹\uD83C\uDFFF", + [":person_bouncing_ball_tone1:"] = "⛹\uD83C\uDFFB", + [":person_bouncing_ball_tone2:"] = "⛹\uD83C\uDFFC", + [":person_bouncing_ball_tone3:"] = "⛹\uD83C\uDFFD", + [":person_bouncing_ball_tone4:"] = "⛹\uD83C\uDFFE", + [":person_bouncing_ball_tone5:"] = "⛹\uD83C\uDFFF", + [":person_bowing:"] = "\uD83D\uDE47", + [":person_bowing::skin-tone-1:"] = "\uD83D\uDE47\uD83C\uDFFB", + [":person_bowing::skin-tone-2:"] = "\uD83D\uDE47\uD83C\uDFFC", + [":person_bowing::skin-tone-3:"] = "\uD83D\uDE47\uD83C\uDFFD", + [":person_bowing::skin-tone-4:"] = "\uD83D\uDE47\uD83C\uDFFE", + [":person_bowing::skin-tone-5:"] = "\uD83D\uDE47\uD83C\uDFFF", + [":person_bowing_tone1:"] = "\uD83D\uDE47\uD83C\uDFFB", + [":person_bowing_tone2:"] = "\uD83D\uDE47\uD83C\uDFFC", + [":person_bowing_tone3:"] = "\uD83D\uDE47\uD83C\uDFFD", + [":person_bowing_tone4:"] = "\uD83D\uDE47\uD83C\uDFFE", + [":person_bowing_tone5:"] = "\uD83D\uDE47\uD83C\uDFFF", + [":person_climbing:"] = "\uD83E\uDDD7", + [":person_climbing::skin-tone-1:"] = "\uD83E\uDDD7\uD83C\uDFFB", + [":person_climbing::skin-tone-2:"] = "\uD83E\uDDD7\uD83C\uDFFC", + [":person_climbing::skin-tone-3:"] = "\uD83E\uDDD7\uD83C\uDFFD", + [":person_climbing::skin-tone-4:"] = "\uD83E\uDDD7\uD83C\uDFFE", + [":person_climbing::skin-tone-5:"] = "\uD83E\uDDD7\uD83C\uDFFF", + [":person_climbing_dark_skin_tone:"] = "\uD83E\uDDD7\uD83C\uDFFF", + [":person_climbing_light_skin_tone:"] = "\uD83E\uDDD7\uD83C\uDFFB", + [":person_climbing_medium_dark_skin_tone:"] = "\uD83E\uDDD7\uD83C\uDFFE", + [":person_climbing_medium_light_skin_tone:"] = "\uD83E\uDDD7\uD83C\uDFFC", + [":person_climbing_medium_skin_tone:"] = "\uD83E\uDDD7\uD83C\uDFFD", + [":person_climbing_tone1:"] = "\uD83E\uDDD7\uD83C\uDFFB", + [":person_climbing_tone2:"] = "\uD83E\uDDD7\uD83C\uDFFC", + [":person_climbing_tone3:"] = "\uD83E\uDDD7\uD83C\uDFFD", + [":person_climbing_tone4:"] = "\uD83E\uDDD7\uD83C\uDFFE", + [":person_climbing_tone5:"] = "\uD83E\uDDD7\uD83C\uDFFF", + [":person_doing_cartwheel:"] = "\uD83E\uDD38", + [":person_doing_cartwheel::skin-tone-1:"] = "\uD83E\uDD38\uD83C\uDFFB", + [":person_doing_cartwheel::skin-tone-2:"] = "\uD83E\uDD38\uD83C\uDFFC", + [":person_doing_cartwheel::skin-tone-3:"] = "\uD83E\uDD38\uD83C\uDFFD", + [":person_doing_cartwheel::skin-tone-4:"] = "\uD83E\uDD38\uD83C\uDFFE", + [":person_doing_cartwheel::skin-tone-5:"] = "\uD83E\uDD38\uD83C\uDFFF", + [":person_doing_cartwheel_tone1:"] = "\uD83E\uDD38\uD83C\uDFFB", + [":person_doing_cartwheel_tone2:"] = "\uD83E\uDD38\uD83C\uDFFC", + [":person_doing_cartwheel_tone3:"] = "\uD83E\uDD38\uD83C\uDFFD", + [":person_doing_cartwheel_tone4:"] = "\uD83E\uDD38\uD83C\uDFFE", + [":person_doing_cartwheel_tone5:"] = "\uD83E\uDD38\uD83C\uDFFF", + [":person_facepalming:"] = "\uD83E\uDD26", + [":person_facepalming::skin-tone-1:"] = "\uD83E\uDD26\uD83C\uDFFB", + [":person_facepalming::skin-tone-2:"] = "\uD83E\uDD26\uD83C\uDFFC", + [":person_facepalming::skin-tone-3:"] = "\uD83E\uDD26\uD83C\uDFFD", + [":person_facepalming::skin-tone-4:"] = "\uD83E\uDD26\uD83C\uDFFE", + [":person_facepalming::skin-tone-5:"] = "\uD83E\uDD26\uD83C\uDFFF", + [":person_facepalming_tone1:"] = "\uD83E\uDD26\uD83C\uDFFB", + [":person_facepalming_tone2:"] = "\uD83E\uDD26\uD83C\uDFFC", + [":person_facepalming_tone3:"] = "\uD83E\uDD26\uD83C\uDFFD", + [":person_facepalming_tone4:"] = "\uD83E\uDD26\uD83C\uDFFE", + [":person_facepalming_tone5:"] = "\uD83E\uDD26\uD83C\uDFFF", + [":person_fencing:"] = "\uD83E\uDD3A", + [":person_frowning:"] = "\uD83D\uDE4D", + [":person_frowning::skin-tone-1:"] = "\uD83D\uDE4D\uD83C\uDFFB", + [":person_frowning::skin-tone-2:"] = "\uD83D\uDE4D\uD83C\uDFFC", + [":person_frowning::skin-tone-3:"] = "\uD83D\uDE4D\uD83C\uDFFD", + [":person_frowning::skin-tone-4:"] = "\uD83D\uDE4D\uD83C\uDFFE", + [":person_frowning::skin-tone-5:"] = "\uD83D\uDE4D\uD83C\uDFFF", + [":person_frowning_tone1:"] = "\uD83D\uDE4D\uD83C\uDFFB", + [":person_frowning_tone2:"] = "\uD83D\uDE4D\uD83C\uDFFC", + [":person_frowning_tone3:"] = "\uD83D\uDE4D\uD83C\uDFFD", + [":person_frowning_tone4:"] = "\uD83D\uDE4D\uD83C\uDFFE", + [":person_frowning_tone5:"] = "\uD83D\uDE4D\uD83C\uDFFF", + [":person_gesturing_no:"] = "\uD83D\uDE45", + [":person_gesturing_no::skin-tone-1:"] = "\uD83D\uDE45\uD83C\uDFFB", + [":person_gesturing_no::skin-tone-2:"] = "\uD83D\uDE45\uD83C\uDFFC", + [":person_gesturing_no::skin-tone-3:"] = "\uD83D\uDE45\uD83C\uDFFD", + [":person_gesturing_no::skin-tone-4:"] = "\uD83D\uDE45\uD83C\uDFFE", + [":person_gesturing_no::skin-tone-5:"] = "\uD83D\uDE45\uD83C\uDFFF", + [":person_gesturing_no_tone1:"] = "\uD83D\uDE45\uD83C\uDFFB", + [":person_gesturing_no_tone2:"] = "\uD83D\uDE45\uD83C\uDFFC", + [":person_gesturing_no_tone3:"] = "\uD83D\uDE45\uD83C\uDFFD", + [":person_gesturing_no_tone4:"] = "\uD83D\uDE45\uD83C\uDFFE", + [":person_gesturing_no_tone5:"] = "\uD83D\uDE45\uD83C\uDFFF", + [":person_gesturing_ok:"] = "\uD83D\uDE46", + [":person_gesturing_ok::skin-tone-1:"] = "\uD83D\uDE46\uD83C\uDFFB", + [":person_gesturing_ok::skin-tone-2:"] = "\uD83D\uDE46\uD83C\uDFFC", + [":person_gesturing_ok::skin-tone-3:"] = "\uD83D\uDE46\uD83C\uDFFD", + [":person_gesturing_ok::skin-tone-4:"] = "\uD83D\uDE46\uD83C\uDFFE", + [":person_gesturing_ok::skin-tone-5:"] = "\uD83D\uDE46\uD83C\uDFFF", + [":person_gesturing_ok_tone1:"] = "\uD83D\uDE46\uD83C\uDFFB", + [":person_gesturing_ok_tone2:"] = "\uD83D\uDE46\uD83C\uDFFC", + [":person_gesturing_ok_tone3:"] = "\uD83D\uDE46\uD83C\uDFFD", + [":person_gesturing_ok_tone4:"] = "\uD83D\uDE46\uD83C\uDFFE", + [":person_gesturing_ok_tone5:"] = "\uD83D\uDE46\uD83C\uDFFF", + [":person_getting_haircut:"] = "\uD83D\uDC87", + [":person_getting_haircut::skin-tone-1:"] = "\uD83D\uDC87\uD83C\uDFFB", + [":person_getting_haircut::skin-tone-2:"] = "\uD83D\uDC87\uD83C\uDFFC", + [":person_getting_haircut::skin-tone-3:"] = "\uD83D\uDC87\uD83C\uDFFD", + [":person_getting_haircut::skin-tone-4:"] = "\uD83D\uDC87\uD83C\uDFFE", + [":person_getting_haircut::skin-tone-5:"] = "\uD83D\uDC87\uD83C\uDFFF", + [":person_getting_haircut_tone1:"] = "\uD83D\uDC87\uD83C\uDFFB", + [":person_getting_haircut_tone2:"] = "\uD83D\uDC87\uD83C\uDFFC", + [":person_getting_haircut_tone3:"] = "\uD83D\uDC87\uD83C\uDFFD", + [":person_getting_haircut_tone4:"] = "\uD83D\uDC87\uD83C\uDFFE", + [":person_getting_haircut_tone5:"] = "\uD83D\uDC87\uD83C\uDFFF", + [":person_getting_massage:"] = "\uD83D\uDC86", + [":person_getting_massage::skin-tone-1:"] = "\uD83D\uDC86\uD83C\uDFFB", + [":person_getting_massage::skin-tone-2:"] = "\uD83D\uDC86\uD83C\uDFFC", + [":person_getting_massage::skin-tone-3:"] = "\uD83D\uDC86\uD83C\uDFFD", + [":person_getting_massage::skin-tone-4:"] = "\uD83D\uDC86\uD83C\uDFFE", + [":person_getting_massage::skin-tone-5:"] = "\uD83D\uDC86\uD83C\uDFFF", + [":person_getting_massage_tone1:"] = "\uD83D\uDC86\uD83C\uDFFB", + [":person_getting_massage_tone2:"] = "\uD83D\uDC86\uD83C\uDFFC", + [":person_getting_massage_tone3:"] = "\uD83D\uDC86\uD83C\uDFFD", + [":person_getting_massage_tone4:"] = "\uD83D\uDC86\uD83C\uDFFE", + [":person_getting_massage_tone5:"] = "\uD83D\uDC86\uD83C\uDFFF", + [":person_golfing:"] = "\uD83C\uDFCC️", + [":person_golfing::skin-tone-1:"] = "\uD83C\uDFCC\uD83C\uDFFB", + [":person_golfing::skin-tone-2:"] = "\uD83C\uDFCC\uD83C\uDFFC", + [":person_golfing::skin-tone-3:"] = "\uD83C\uDFCC\uD83C\uDFFD", + [":person_golfing::skin-tone-4:"] = "\uD83C\uDFCC\uD83C\uDFFE", + [":person_golfing::skin-tone-5:"] = "\uD83C\uDFCC\uD83C\uDFFF", + [":person_golfing_dark_skin_tone:"] = "\uD83C\uDFCC\uD83C\uDFFF", + [":person_golfing_light_skin_tone:"] = "\uD83C\uDFCC\uD83C\uDFFB", + [":person_golfing_medium_dark_skin_tone:"] = "\uD83C\uDFCC\uD83C\uDFFE", + [":person_golfing_medium_light_skin_tone:"] = "\uD83C\uDFCC\uD83C\uDFFC", + [":person_golfing_medium_skin_tone:"] = "\uD83C\uDFCC\uD83C\uDFFD", + [":person_golfing_tone1:"] = "\uD83C\uDFCC\uD83C\uDFFB", + [":person_golfing_tone2:"] = "\uD83C\uDFCC\uD83C\uDFFC", + [":person_golfing_tone3:"] = "\uD83C\uDFCC\uD83C\uDFFD", + [":person_golfing_tone4:"] = "\uD83C\uDFCC\uD83C\uDFFE", + [":person_golfing_tone5:"] = "\uD83C\uDFCC\uD83C\uDFFF", + [":person_in_bed_dark_skin_tone:"] = "\uD83D\uDECC\uD83C\uDFFF", + [":person_in_bed_light_skin_tone:"] = "\uD83D\uDECC\uD83C\uDFFB", + [":person_in_bed_medium_dark_skin_tone:"] = "\uD83D\uDECC\uD83C\uDFFE", + [":person_in_bed_medium_light_skin_tone:"] = "\uD83D\uDECC\uD83C\uDFFC", + [":person_in_bed_medium_skin_tone:"] = "\uD83D\uDECC\uD83C\uDFFD", + [":person_in_bed_tone1:"] = "\uD83D\uDECC\uD83C\uDFFB", + [":person_in_bed_tone2:"] = "\uD83D\uDECC\uD83C\uDFFC", + [":person_in_bed_tone3:"] = "\uD83D\uDECC\uD83C\uDFFD", + [":person_in_bed_tone4:"] = "\uD83D\uDECC\uD83C\uDFFE", + [":person_in_bed_tone5:"] = "\uD83D\uDECC\uD83C\uDFFF", + [":person_in_lotus_position:"] = "\uD83E\uDDD8", + [":person_in_lotus_position::skin-tone-1:"] = "\uD83E\uDDD8\uD83C\uDFFB", + [":person_in_lotus_position::skin-tone-2:"] = "\uD83E\uDDD8\uD83C\uDFFC", + [":person_in_lotus_position::skin-tone-3:"] = "\uD83E\uDDD8\uD83C\uDFFD", + [":person_in_lotus_position::skin-tone-4:"] = "\uD83E\uDDD8\uD83C\uDFFE", + [":person_in_lotus_position::skin-tone-5:"] = "\uD83E\uDDD8\uD83C\uDFFF", + [":person_in_lotus_position_dark_skin_tone:"] = "\uD83E\uDDD8\uD83C\uDFFF", + [":person_in_lotus_position_light_skin_tone:"] = "\uD83E\uDDD8\uD83C\uDFFB", + [":person_in_lotus_position_medium_dark_skin_tone:"] = "\uD83E\uDDD8\uD83C\uDFFE", + [":person_in_lotus_position_medium_light_skin_tone:"] = "\uD83E\uDDD8\uD83C\uDFFC", + [":person_in_lotus_position_medium_skin_tone:"] = "\uD83E\uDDD8\uD83C\uDFFD", + [":person_in_lotus_position_tone1:"] = "\uD83E\uDDD8\uD83C\uDFFB", + [":person_in_lotus_position_tone2:"] = "\uD83E\uDDD8\uD83C\uDFFC", + [":person_in_lotus_position_tone3:"] = "\uD83E\uDDD8\uD83C\uDFFD", + [":person_in_lotus_position_tone4:"] = "\uD83E\uDDD8\uD83C\uDFFE", + [":person_in_lotus_position_tone5:"] = "\uD83E\uDDD8\uD83C\uDFFF", + [":person_in_steamy_room:"] = "\uD83E\uDDD6", + [":person_in_steamy_room::skin-tone-1:"] = "\uD83E\uDDD6\uD83C\uDFFB", + [":person_in_steamy_room::skin-tone-2:"] = "\uD83E\uDDD6\uD83C\uDFFC", + [":person_in_steamy_room::skin-tone-3:"] = "\uD83E\uDDD6\uD83C\uDFFD", + [":person_in_steamy_room::skin-tone-4:"] = "\uD83E\uDDD6\uD83C\uDFFE", + [":person_in_steamy_room::skin-tone-5:"] = "\uD83E\uDDD6\uD83C\uDFFF", + [":person_in_steamy_room_dark_skin_tone:"] = "\uD83E\uDDD6\uD83C\uDFFF", + [":person_in_steamy_room_light_skin_tone:"] = "\uD83E\uDDD6\uD83C\uDFFB", + [":person_in_steamy_room_medium_dark_skin_tone:"] = "\uD83E\uDDD6\uD83C\uDFFE", + [":person_in_steamy_room_medium_light_skin_tone:"] = "\uD83E\uDDD6\uD83C\uDFFC", + [":person_in_steamy_room_medium_skin_tone:"] = "\uD83E\uDDD6\uD83C\uDFFD", + [":person_in_steamy_room_tone1:"] = "\uD83E\uDDD6\uD83C\uDFFB", + [":person_in_steamy_room_tone2:"] = "\uD83E\uDDD6\uD83C\uDFFC", + [":person_in_steamy_room_tone3:"] = "\uD83E\uDDD6\uD83C\uDFFD", + [":person_in_steamy_room_tone4:"] = "\uD83E\uDDD6\uD83C\uDFFE", + [":person_in_steamy_room_tone5:"] = "\uD83E\uDDD6\uD83C\uDFFF", + [":person_juggling:"] = "\uD83E\uDD39", + [":person_juggling::skin-tone-1:"] = "\uD83E\uDD39\uD83C\uDFFB", + [":person_juggling::skin-tone-2:"] = "\uD83E\uDD39\uD83C\uDFFC", + [":person_juggling::skin-tone-3:"] = "\uD83E\uDD39\uD83C\uDFFD", + [":person_juggling::skin-tone-4:"] = "\uD83E\uDD39\uD83C\uDFFE", + [":person_juggling::skin-tone-5:"] = "\uD83E\uDD39\uD83C\uDFFF", + [":person_juggling_tone1:"] = "\uD83E\uDD39\uD83C\uDFFB", + [":person_juggling_tone2:"] = "\uD83E\uDD39\uD83C\uDFFC", + [":person_juggling_tone3:"] = "\uD83E\uDD39\uD83C\uDFFD", + [":person_juggling_tone4:"] = "\uD83E\uDD39\uD83C\uDFFE", + [":person_juggling_tone5:"] = "\uD83E\uDD39\uD83C\uDFFF", + [":person_kneeling:"] = "\uD83E\uDDCE", + [":person_kneeling::skin-tone-1:"] = "\uD83E\uDDCE\uD83C\uDFFB", + [":person_kneeling::skin-tone-2:"] = "\uD83E\uDDCE\uD83C\uDFFC", + [":person_kneeling::skin-tone-3:"] = "\uD83E\uDDCE\uD83C\uDFFD", + [":person_kneeling::skin-tone-4:"] = "\uD83E\uDDCE\uD83C\uDFFE", + [":person_kneeling::skin-tone-5:"] = "\uD83E\uDDCE\uD83C\uDFFF", + [":person_kneeling_dark_skin_tone:"] = "\uD83E\uDDCE\uD83C\uDFFF", + [":person_kneeling_light_skin_tone:"] = "\uD83E\uDDCE\uD83C\uDFFB", + [":person_kneeling_medium_dark_skin_tone:"] = "\uD83E\uDDCE\uD83C\uDFFE", + [":person_kneeling_medium_light_skin_tone:"] = "\uD83E\uDDCE\uD83C\uDFFC", + [":person_kneeling_medium_skin_tone:"] = "\uD83E\uDDCE\uD83C\uDFFD", + [":person_kneeling_tone1:"] = "\uD83E\uDDCE\uD83C\uDFFB", + [":person_kneeling_tone2:"] = "\uD83E\uDDCE\uD83C\uDFFC", + [":person_kneeling_tone3:"] = "\uD83E\uDDCE\uD83C\uDFFD", + [":person_kneeling_tone4:"] = "\uD83E\uDDCE\uD83C\uDFFE", + [":person_kneeling_tone5:"] = "\uD83E\uDDCE\uD83C\uDFFF", + [":person_lifting_weights:"] = "\uD83C\uDFCB️", + [":person_lifting_weights::skin-tone-1:"] = "\uD83C\uDFCB\uD83C\uDFFB", + [":person_lifting_weights::skin-tone-2:"] = "\uD83C\uDFCB\uD83C\uDFFC", + [":person_lifting_weights::skin-tone-3:"] = "\uD83C\uDFCB\uD83C\uDFFD", + [":person_lifting_weights::skin-tone-4:"] = "\uD83C\uDFCB\uD83C\uDFFE", + [":person_lifting_weights::skin-tone-5:"] = "\uD83C\uDFCB\uD83C\uDFFF", + [":person_lifting_weights_tone1:"] = "\uD83C\uDFCB\uD83C\uDFFB", + [":person_lifting_weights_tone2:"] = "\uD83C\uDFCB\uD83C\uDFFC", + [":person_lifting_weights_tone3:"] = "\uD83C\uDFCB\uD83C\uDFFD", + [":person_lifting_weights_tone4:"] = "\uD83C\uDFCB\uD83C\uDFFE", + [":person_lifting_weights_tone5:"] = "\uD83C\uDFCB\uD83C\uDFFF", + [":person_mountain_biking:"] = "\uD83D\uDEB5", + [":person_mountain_biking::skin-tone-1:"] = "\uD83D\uDEB5\uD83C\uDFFB", + [":person_mountain_biking::skin-tone-2:"] = "\uD83D\uDEB5\uD83C\uDFFC", + [":person_mountain_biking::skin-tone-3:"] = "\uD83D\uDEB5\uD83C\uDFFD", + [":person_mountain_biking::skin-tone-4:"] = "\uD83D\uDEB5\uD83C\uDFFE", + [":person_mountain_biking::skin-tone-5:"] = "\uD83D\uDEB5\uD83C\uDFFF", + [":person_mountain_biking_tone1:"] = "\uD83D\uDEB5\uD83C\uDFFB", + [":person_mountain_biking_tone2:"] = "\uD83D\uDEB5\uD83C\uDFFC", + [":person_mountain_biking_tone3:"] = "\uD83D\uDEB5\uD83C\uDFFD", + [":person_mountain_biking_tone4:"] = "\uD83D\uDEB5\uD83C\uDFFE", + [":person_mountain_biking_tone5:"] = "\uD83D\uDEB5\uD83C\uDFFF", + [":person_playing_handball:"] = "\uD83E\uDD3E", + [":person_playing_handball::skin-tone-1:"] = "\uD83E\uDD3E\uD83C\uDFFB", + [":person_playing_handball::skin-tone-2:"] = "\uD83E\uDD3E\uD83C\uDFFC", + [":person_playing_handball::skin-tone-3:"] = "\uD83E\uDD3E\uD83C\uDFFD", + [":person_playing_handball::skin-tone-4:"] = "\uD83E\uDD3E\uD83C\uDFFE", + [":person_playing_handball::skin-tone-5:"] = "\uD83E\uDD3E\uD83C\uDFFF", + [":person_playing_handball_tone1:"] = "\uD83E\uDD3E\uD83C\uDFFB", + [":person_playing_handball_tone2:"] = "\uD83E\uDD3E\uD83C\uDFFC", + [":person_playing_handball_tone3:"] = "\uD83E\uDD3E\uD83C\uDFFD", + [":person_playing_handball_tone4:"] = "\uD83E\uDD3E\uD83C\uDFFE", + [":person_playing_handball_tone5:"] = "\uD83E\uDD3E\uD83C\uDFFF", + [":person_playing_water_polo:"] = "\uD83E\uDD3D", + [":person_playing_water_polo::skin-tone-1:"] = "\uD83E\uDD3D\uD83C\uDFFB", + [":person_playing_water_polo::skin-tone-2:"] = "\uD83E\uDD3D\uD83C\uDFFC", + [":person_playing_water_polo::skin-tone-3:"] = "\uD83E\uDD3D\uD83C\uDFFD", + [":person_playing_water_polo::skin-tone-4:"] = "\uD83E\uDD3D\uD83C\uDFFE", + [":person_playing_water_polo::skin-tone-5:"] = "\uD83E\uDD3D\uD83C\uDFFF", + [":person_playing_water_polo_tone1:"] = "\uD83E\uDD3D\uD83C\uDFFB", + [":person_playing_water_polo_tone2:"] = "\uD83E\uDD3D\uD83C\uDFFC", + [":person_playing_water_polo_tone3:"] = "\uD83E\uDD3D\uD83C\uDFFD", + [":person_playing_water_polo_tone4:"] = "\uD83E\uDD3D\uD83C\uDFFE", + [":person_playing_water_polo_tone5:"] = "\uD83E\uDD3D\uD83C\uDFFF", + [":person_pouting:"] = "\uD83D\uDE4E", + [":person_pouting::skin-tone-1:"] = "\uD83D\uDE4E\uD83C\uDFFB", + [":person_pouting::skin-tone-2:"] = "\uD83D\uDE4E\uD83C\uDFFC", + [":person_pouting::skin-tone-3:"] = "\uD83D\uDE4E\uD83C\uDFFD", + [":person_pouting::skin-tone-4:"] = "\uD83D\uDE4E\uD83C\uDFFE", + [":person_pouting::skin-tone-5:"] = "\uD83D\uDE4E\uD83C\uDFFF", + [":person_pouting_tone1:"] = "\uD83D\uDE4E\uD83C\uDFFB", + [":person_pouting_tone2:"] = "\uD83D\uDE4E\uD83C\uDFFC", + [":person_pouting_tone3:"] = "\uD83D\uDE4E\uD83C\uDFFD", + [":person_pouting_tone4:"] = "\uD83D\uDE4E\uD83C\uDFFE", + [":person_pouting_tone5:"] = "\uD83D\uDE4E\uD83C\uDFFF", + [":person_raising_hand:"] = "\uD83D\uDE4B", + [":person_raising_hand::skin-tone-1:"] = "\uD83D\uDE4B\uD83C\uDFFB", + [":person_raising_hand::skin-tone-2:"] = "\uD83D\uDE4B\uD83C\uDFFC", + [":person_raising_hand::skin-tone-3:"] = "\uD83D\uDE4B\uD83C\uDFFD", + [":person_raising_hand::skin-tone-4:"] = "\uD83D\uDE4B\uD83C\uDFFE", + [":person_raising_hand::skin-tone-5:"] = "\uD83D\uDE4B\uD83C\uDFFF", + [":person_raising_hand_tone1:"] = "\uD83D\uDE4B\uD83C\uDFFB", + [":person_raising_hand_tone2:"] = "\uD83D\uDE4B\uD83C\uDFFC", + [":person_raising_hand_tone3:"] = "\uD83D\uDE4B\uD83C\uDFFD", + [":person_raising_hand_tone4:"] = "\uD83D\uDE4B\uD83C\uDFFE", + [":person_raising_hand_tone5:"] = "\uD83D\uDE4B\uD83C\uDFFF", + [":person_rowing_boat:"] = "\uD83D\uDEA3", + [":person_rowing_boat::skin-tone-1:"] = "\uD83D\uDEA3\uD83C\uDFFB", + [":person_rowing_boat::skin-tone-2:"] = "\uD83D\uDEA3\uD83C\uDFFC", + [":person_rowing_boat::skin-tone-3:"] = "\uD83D\uDEA3\uD83C\uDFFD", + [":person_rowing_boat::skin-tone-4:"] = "\uD83D\uDEA3\uD83C\uDFFE", + [":person_rowing_boat::skin-tone-5:"] = "\uD83D\uDEA3\uD83C\uDFFF", + [":person_rowing_boat_tone1:"] = "\uD83D\uDEA3\uD83C\uDFFB", + [":person_rowing_boat_tone2:"] = "\uD83D\uDEA3\uD83C\uDFFC", + [":person_rowing_boat_tone3:"] = "\uD83D\uDEA3\uD83C\uDFFD", + [":person_rowing_boat_tone4:"] = "\uD83D\uDEA3\uD83C\uDFFE", + [":person_rowing_boat_tone5:"] = "\uD83D\uDEA3\uD83C\uDFFF", + [":person_running:"] = "\uD83C\uDFC3", + [":person_running::skin-tone-1:"] = "\uD83C\uDFC3\uD83C\uDFFB", + [":person_running::skin-tone-2:"] = "\uD83C\uDFC3\uD83C\uDFFC", + [":person_running::skin-tone-3:"] = "\uD83C\uDFC3\uD83C\uDFFD", + [":person_running::skin-tone-4:"] = "\uD83C\uDFC3\uD83C\uDFFE", + [":person_running::skin-tone-5:"] = "\uD83C\uDFC3\uD83C\uDFFF", + [":person_running_tone1:"] = "\uD83C\uDFC3\uD83C\uDFFB", + [":person_running_tone2:"] = "\uD83C\uDFC3\uD83C\uDFFC", + [":person_running_tone3:"] = "\uD83C\uDFC3\uD83C\uDFFD", + [":person_running_tone4:"] = "\uD83C\uDFC3\uD83C\uDFFE", + [":person_running_tone5:"] = "\uD83C\uDFC3\uD83C\uDFFF", + [":person_shrugging:"] = "\uD83E\uDD37", + [":person_shrugging::skin-tone-1:"] = "\uD83E\uDD37\uD83C\uDFFB", + [":person_shrugging::skin-tone-2:"] = "\uD83E\uDD37\uD83C\uDFFC", + [":person_shrugging::skin-tone-3:"] = "\uD83E\uDD37\uD83C\uDFFD", + [":person_shrugging::skin-tone-4:"] = "\uD83E\uDD37\uD83C\uDFFE", + [":person_shrugging::skin-tone-5:"] = "\uD83E\uDD37\uD83C\uDFFF", + [":person_shrugging_tone1:"] = "\uD83E\uDD37\uD83C\uDFFB", + [":person_shrugging_tone2:"] = "\uD83E\uDD37\uD83C\uDFFC", + [":person_shrugging_tone3:"] = "\uD83E\uDD37\uD83C\uDFFD", + [":person_shrugging_tone4:"] = "\uD83E\uDD37\uD83C\uDFFE", + [":person_shrugging_tone5:"] = "\uD83E\uDD37\uD83C\uDFFF", + [":person_standing:"] = "\uD83E\uDDCD", + [":person_standing::skin-tone-1:"] = "\uD83E\uDDCD\uD83C\uDFFB", + [":person_standing::skin-tone-2:"] = "\uD83E\uDDCD\uD83C\uDFFC", + [":person_standing::skin-tone-3:"] = "\uD83E\uDDCD\uD83C\uDFFD", + [":person_standing::skin-tone-4:"] = "\uD83E\uDDCD\uD83C\uDFFE", + [":person_standing::skin-tone-5:"] = "\uD83E\uDDCD\uD83C\uDFFF", + [":person_standing_dark_skin_tone:"] = "\uD83E\uDDCD\uD83C\uDFFF", + [":person_standing_light_skin_tone:"] = "\uD83E\uDDCD\uD83C\uDFFB", + [":person_standing_medium_dark_skin_tone:"] = "\uD83E\uDDCD\uD83C\uDFFE", + [":person_standing_medium_light_skin_tone:"] = "\uD83E\uDDCD\uD83C\uDFFC", + [":person_standing_medium_skin_tone:"] = "\uD83E\uDDCD\uD83C\uDFFD", + [":person_standing_tone1:"] = "\uD83E\uDDCD\uD83C\uDFFB", + [":person_standing_tone2:"] = "\uD83E\uDDCD\uD83C\uDFFC", + [":person_standing_tone3:"] = "\uD83E\uDDCD\uD83C\uDFFD", + [":person_standing_tone4:"] = "\uD83E\uDDCD\uD83C\uDFFE", + [":person_standing_tone5:"] = "\uD83E\uDDCD\uD83C\uDFFF", + [":person_surfing:"] = "\uD83C\uDFC4", + [":person_surfing::skin-tone-1:"] = "\uD83C\uDFC4\uD83C\uDFFB", + [":person_surfing::skin-tone-2:"] = "\uD83C\uDFC4\uD83C\uDFFC", + [":person_surfing::skin-tone-3:"] = "\uD83C\uDFC4\uD83C\uDFFD", + [":person_surfing::skin-tone-4:"] = "\uD83C\uDFC4\uD83C\uDFFE", + [":person_surfing::skin-tone-5:"] = "\uD83C\uDFC4\uD83C\uDFFF", + [":person_surfing_tone1:"] = "\uD83C\uDFC4\uD83C\uDFFB", + [":person_surfing_tone2:"] = "\uD83C\uDFC4\uD83C\uDFFC", + [":person_surfing_tone3:"] = "\uD83C\uDFC4\uD83C\uDFFD", + [":person_surfing_tone4:"] = "\uD83C\uDFC4\uD83C\uDFFE", + [":person_surfing_tone5:"] = "\uD83C\uDFC4\uD83C\uDFFF", + [":person_swimming:"] = "\uD83C\uDFCA", + [":person_swimming::skin-tone-1:"] = "\uD83C\uDFCA\uD83C\uDFFB", + [":person_swimming::skin-tone-2:"] = "\uD83C\uDFCA\uD83C\uDFFC", + [":person_swimming::skin-tone-3:"] = "\uD83C\uDFCA\uD83C\uDFFD", + [":person_swimming::skin-tone-4:"] = "\uD83C\uDFCA\uD83C\uDFFE", + [":person_swimming::skin-tone-5:"] = "\uD83C\uDFCA\uD83C\uDFFF", + [":person_swimming_tone1:"] = "\uD83C\uDFCA\uD83C\uDFFB", + [":person_swimming_tone2:"] = "\uD83C\uDFCA\uD83C\uDFFC", + [":person_swimming_tone3:"] = "\uD83C\uDFCA\uD83C\uDFFD", + [":person_swimming_tone4:"] = "\uD83C\uDFCA\uD83C\uDFFE", + [":person_swimming_tone5:"] = "\uD83C\uDFCA\uD83C\uDFFF", + [":person_tipping_hand:"] = "\uD83D\uDC81", + [":person_tipping_hand::skin-tone-1:"] = "\uD83D\uDC81\uD83C\uDFFB", + [":person_tipping_hand::skin-tone-2:"] = "\uD83D\uDC81\uD83C\uDFFC", + [":person_tipping_hand::skin-tone-3:"] = "\uD83D\uDC81\uD83C\uDFFD", + [":person_tipping_hand::skin-tone-4:"] = "\uD83D\uDC81\uD83C\uDFFE", + [":person_tipping_hand::skin-tone-5:"] = "\uD83D\uDC81\uD83C\uDFFF", + [":person_tipping_hand_tone1:"] = "\uD83D\uDC81\uD83C\uDFFB", + [":person_tipping_hand_tone2:"] = "\uD83D\uDC81\uD83C\uDFFC", + [":person_tipping_hand_tone3:"] = "\uD83D\uDC81\uD83C\uDFFD", + [":person_tipping_hand_tone4:"] = "\uD83D\uDC81\uD83C\uDFFE", + [":person_tipping_hand_tone5:"] = "\uD83D\uDC81\uD83C\uDFFF", + [":person_walking:"] = "\uD83D\uDEB6", + [":person_walking::skin-tone-1:"] = "\uD83D\uDEB6\uD83C\uDFFB", + [":person_walking::skin-tone-2:"] = "\uD83D\uDEB6\uD83C\uDFFC", + [":person_walking::skin-tone-3:"] = "\uD83D\uDEB6\uD83C\uDFFD", + [":person_walking::skin-tone-4:"] = "\uD83D\uDEB6\uD83C\uDFFE", + [":person_walking::skin-tone-5:"] = "\uD83D\uDEB6\uD83C\uDFFF", + [":person_walking_tone1:"] = "\uD83D\uDEB6\uD83C\uDFFB", + [":person_walking_tone2:"] = "\uD83D\uDEB6\uD83C\uDFFC", + [":person_walking_tone3:"] = "\uD83D\uDEB6\uD83C\uDFFD", + [":person_walking_tone4:"] = "\uD83D\uDEB6\uD83C\uDFFE", + [":person_walking_tone5:"] = "\uD83D\uDEB6\uD83C\uDFFF", + [":person_wearing_turban:"] = "\uD83D\uDC73", + [":person_wearing_turban::skin-tone-1:"] = "\uD83D\uDC73\uD83C\uDFFB", + [":person_wearing_turban::skin-tone-2:"] = "\uD83D\uDC73\uD83C\uDFFC", + [":person_wearing_turban::skin-tone-3:"] = "\uD83D\uDC73\uD83C\uDFFD", + [":person_wearing_turban::skin-tone-4:"] = "\uD83D\uDC73\uD83C\uDFFE", + [":person_wearing_turban::skin-tone-5:"] = "\uD83D\uDC73\uD83C\uDFFF", + [":person_wearing_turban_tone1:"] = "\uD83D\uDC73\uD83C\uDFFB", + [":person_wearing_turban_tone2:"] = "\uD83D\uDC73\uD83C\uDFFC", + [":person_wearing_turban_tone3:"] = "\uD83D\uDC73\uD83C\uDFFD", + [":person_wearing_turban_tone4:"] = "\uD83D\uDC73\uD83C\uDFFE", + [":person_wearing_turban_tone5:"] = "\uD83D\uDC73\uD83C\uDFFF", + [":person_with_ball:"] = "⛹️", + [":person_with_ball::skin-tone-1:"] = "⛹\uD83C\uDFFB", + [":person_with_ball::skin-tone-2:"] = "⛹\uD83C\uDFFC", + [":person_with_ball::skin-tone-3:"] = "⛹\uD83C\uDFFD", + [":person_with_ball::skin-tone-4:"] = "⛹\uD83C\uDFFE", + [":person_with_ball::skin-tone-5:"] = "⛹\uD83C\uDFFF", + [":person_with_ball_tone1:"] = "⛹\uD83C\uDFFB", + [":person_with_ball_tone2:"] = "⛹\uD83C\uDFFC", + [":person_with_ball_tone3:"] = "⛹\uD83C\uDFFD", + [":person_with_ball_tone4:"] = "⛹\uD83C\uDFFE", + [":person_with_ball_tone5:"] = "⛹\uD83C\uDFFF", + [":person_with_blond_hair:"] = "\uD83D\uDC71", + [":person_with_blond_hair::skin-tone-1:"] = "\uD83D\uDC71\uD83C\uDFFB", + [":person_with_blond_hair::skin-tone-2:"] = "\uD83D\uDC71\uD83C\uDFFC", + [":person_with_blond_hair::skin-tone-3:"] = "\uD83D\uDC71\uD83C\uDFFD", + [":person_with_blond_hair::skin-tone-4:"] = "\uD83D\uDC71\uD83C\uDFFE", + [":person_with_blond_hair::skin-tone-5:"] = "\uD83D\uDC71\uD83C\uDFFF", + [":person_with_blond_hair_tone1:"] = "\uD83D\uDC71\uD83C\uDFFB", + [":person_with_blond_hair_tone2:"] = "\uD83D\uDC71\uD83C\uDFFC", + [":person_with_blond_hair_tone3:"] = "\uD83D\uDC71\uD83C\uDFFD", + [":person_with_blond_hair_tone4:"] = "\uD83D\uDC71\uD83C\uDFFE", + [":person_with_blond_hair_tone5:"] = "\uD83D\uDC71\uD83C\uDFFF", + [":person_with_pouting_face:"] = "\uD83D\uDE4E", + [":person_with_pouting_face::skin-tone-1:"] = "\uD83D\uDE4E\uD83C\uDFFB", + [":person_with_pouting_face::skin-tone-2:"] = "\uD83D\uDE4E\uD83C\uDFFC", + [":person_with_pouting_face::skin-tone-3:"] = "\uD83D\uDE4E\uD83C\uDFFD", + [":person_with_pouting_face::skin-tone-4:"] = "\uD83D\uDE4E\uD83C\uDFFE", + [":person_with_pouting_face::skin-tone-5:"] = "\uD83D\uDE4E\uD83C\uDFFF", + [":person_with_pouting_face_tone1:"] = "\uD83D\uDE4E\uD83C\uDFFB", + [":person_with_pouting_face_tone2:"] = "\uD83D\uDE4E\uD83C\uDFFC", + [":person_with_pouting_face_tone3:"] = "\uD83D\uDE4E\uD83C\uDFFD", + [":person_with_pouting_face_tone4:"] = "\uD83D\uDE4E\uD83C\uDFFE", + [":person_with_pouting_face_tone5:"] = "\uD83D\uDE4E\uD83C\uDFFF", + [":petri_dish:"] = "\uD83E\uDDEB", + [":pick:"] = "⛏️", + [":pie:"] = "\uD83E\uDD67", + [":pig2:"] = "\uD83D\uDC16", + [":pig:"] = "\uD83D\uDC37", + [":pig_nose:"] = "\uD83D\uDC3D", + [":pill:"] = "\uD83D\uDC8A", + [":pinching_hand:"] = "\uD83E\uDD0F", + [":pinching_hand::skin-tone-1:"] = "\uD83E\uDD0F\uD83C\uDFFB", + [":pinching_hand::skin-tone-2:"] = "\uD83E\uDD0F\uD83C\uDFFC", + [":pinching_hand::skin-tone-3:"] = "\uD83E\uDD0F\uD83C\uDFFD", + [":pinching_hand::skin-tone-4:"] = "\uD83E\uDD0F\uD83C\uDFFE", + [":pinching_hand::skin-tone-5:"] = "\uD83E\uDD0F\uD83C\uDFFF", + [":pinching_hand_dark_skin_tone:"] = "\uD83E\uDD0F\uD83C\uDFFF", + [":pinching_hand_light_skin_tone:"] = "\uD83E\uDD0F\uD83C\uDFFB", + [":pinching_hand_medium_dark_skin_tone:"] = "\uD83E\uDD0F\uD83C\uDFFE", + [":pinching_hand_medium_light_skin_tone:"] = "\uD83E\uDD0F\uD83C\uDFFC", + [":pinching_hand_medium_skin_tone:"] = "\uD83E\uDD0F\uD83C\uDFFD", + [":pinching_hand_tone1:"] = "\uD83E\uDD0F\uD83C\uDFFB", + [":pinching_hand_tone2:"] = "\uD83E\uDD0F\uD83C\uDFFC", + [":pinching_hand_tone3:"] = "\uD83E\uDD0F\uD83C\uDFFD", + [":pinching_hand_tone4:"] = "\uD83E\uDD0F\uD83C\uDFFE", + [":pinching_hand_tone5:"] = "\uD83E\uDD0F\uD83C\uDFFF", + [":pineapple:"] = "\uD83C\uDF4D", + [":ping_pong:"] = "\uD83C\uDFD3", + [":pirate_flag:"] = "\uD83C\uDFF4\u200D☠️", + [":pisces:"] = "♓", + [":pizza:"] = "\uD83C\uDF55", + [":place_of_worship:"] = "\uD83D\uDED0", + [":play_pause:"] = "⏯️", + [":pleading_face:"] = "\uD83E\uDD7A", + [":point_down:"] = "\uD83D\uDC47", + [":point_down::skin-tone-1:"] = "\uD83D\uDC47\uD83C\uDFFB", + [":point_down::skin-tone-2:"] = "\uD83D\uDC47\uD83C\uDFFC", + [":point_down::skin-tone-3:"] = "\uD83D\uDC47\uD83C\uDFFD", + [":point_down::skin-tone-4:"] = "\uD83D\uDC47\uD83C\uDFFE", + [":point_down::skin-tone-5:"] = "\uD83D\uDC47\uD83C\uDFFF", + [":point_down_tone1:"] = "\uD83D\uDC47\uD83C\uDFFB", + [":point_down_tone2:"] = "\uD83D\uDC47\uD83C\uDFFC", + [":point_down_tone3:"] = "\uD83D\uDC47\uD83C\uDFFD", + [":point_down_tone4:"] = "\uD83D\uDC47\uD83C\uDFFE", + [":point_down_tone5:"] = "\uD83D\uDC47\uD83C\uDFFF", + [":point_left:"] = "\uD83D\uDC48", + [":point_left::skin-tone-1:"] = "\uD83D\uDC48\uD83C\uDFFB", + [":point_left::skin-tone-2:"] = "\uD83D\uDC48\uD83C\uDFFC", + [":point_left::skin-tone-3:"] = "\uD83D\uDC48\uD83C\uDFFD", + [":point_left::skin-tone-4:"] = "\uD83D\uDC48\uD83C\uDFFE", + [":point_left::skin-tone-5:"] = "\uD83D\uDC48\uD83C\uDFFF", + [":point_left_tone1:"] = "\uD83D\uDC48\uD83C\uDFFB", + [":point_left_tone2:"] = "\uD83D\uDC48\uD83C\uDFFC", + [":point_left_tone3:"] = "\uD83D\uDC48\uD83C\uDFFD", + [":point_left_tone4:"] = "\uD83D\uDC48\uD83C\uDFFE", + [":point_left_tone5:"] = "\uD83D\uDC48\uD83C\uDFFF", + [":point_right:"] = "\uD83D\uDC49", + [":point_right::skin-tone-1:"] = "\uD83D\uDC49\uD83C\uDFFB", + [":point_right::skin-tone-2:"] = "\uD83D\uDC49\uD83C\uDFFC", + [":point_right::skin-tone-3:"] = "\uD83D\uDC49\uD83C\uDFFD", + [":point_right::skin-tone-4:"] = "\uD83D\uDC49\uD83C\uDFFE", + [":point_right::skin-tone-5:"] = "\uD83D\uDC49\uD83C\uDFFF", + [":point_right_tone1:"] = "\uD83D\uDC49\uD83C\uDFFB", + [":point_right_tone2:"] = "\uD83D\uDC49\uD83C\uDFFC", + [":point_right_tone3:"] = "\uD83D\uDC49\uD83C\uDFFD", + [":point_right_tone4:"] = "\uD83D\uDC49\uD83C\uDFFE", + [":point_right_tone5:"] = "\uD83D\uDC49\uD83C\uDFFF", + [":point_up:"] = "☝️", + [":point_up::skin-tone-1:"] = "☝\uD83C\uDFFB", + [":point_up::skin-tone-2:"] = "☝\uD83C\uDFFC", + [":point_up::skin-tone-3:"] = "☝\uD83C\uDFFD", + [":point_up::skin-tone-4:"] = "☝\uD83C\uDFFE", + [":point_up::skin-tone-5:"] = "☝\uD83C\uDFFF", + [":point_up_2:"] = "\uD83D\uDC46", + [":point_up_2::skin-tone-1:"] = "\uD83D\uDC46\uD83C\uDFFB", + [":point_up_2::skin-tone-2:"] = "\uD83D\uDC46\uD83C\uDFFC", + [":point_up_2::skin-tone-3:"] = "\uD83D\uDC46\uD83C\uDFFD", + [":point_up_2::skin-tone-4:"] = "\uD83D\uDC46\uD83C\uDFFE", + [":point_up_2::skin-tone-5:"] = "\uD83D\uDC46\uD83C\uDFFF", + [":point_up_2_tone1:"] = "\uD83D\uDC46\uD83C\uDFFB", + [":point_up_2_tone2:"] = "\uD83D\uDC46\uD83C\uDFFC", + [":point_up_2_tone3:"] = "\uD83D\uDC46\uD83C\uDFFD", + [":point_up_2_tone4:"] = "\uD83D\uDC46\uD83C\uDFFE", + [":point_up_2_tone5:"] = "\uD83D\uDC46\uD83C\uDFFF", + [":point_up_tone1:"] = "☝\uD83C\uDFFB", + [":point_up_tone2:"] = "☝\uD83C\uDFFC", + [":point_up_tone3:"] = "☝\uD83C\uDFFD", + [":point_up_tone4:"] = "☝\uD83C\uDFFE", + [":point_up_tone5:"] = "☝\uD83C\uDFFF", + [":police_car:"] = "\uD83D\uDE93", + [":police_officer:"] = "\uD83D\uDC6E", + [":police_officer::skin-tone-1:"] = "\uD83D\uDC6E\uD83C\uDFFB", + [":police_officer::skin-tone-2:"] = "\uD83D\uDC6E\uD83C\uDFFC", + [":police_officer::skin-tone-3:"] = "\uD83D\uDC6E\uD83C\uDFFD", + [":police_officer::skin-tone-4:"] = "\uD83D\uDC6E\uD83C\uDFFE", + [":police_officer::skin-tone-5:"] = "\uD83D\uDC6E\uD83C\uDFFF", + [":police_officer_tone1:"] = "\uD83D\uDC6E\uD83C\uDFFB", + [":police_officer_tone2:"] = "\uD83D\uDC6E\uD83C\uDFFC", + [":police_officer_tone3:"] = "\uD83D\uDC6E\uD83C\uDFFD", + [":police_officer_tone4:"] = "\uD83D\uDC6E\uD83C\uDFFE", + [":police_officer_tone5:"] = "\uD83D\uDC6E\uD83C\uDFFF", + [":poo:"] = "\uD83D\uDCA9", + [":poodle:"] = "\uD83D\uDC29", + [":poop:"] = "\uD83D\uDCA9", + [":popcorn:"] = "\uD83C\uDF7F", + [":post_office:"] = "\uD83C\uDFE3", + [":postal_horn:"] = "\uD83D\uDCEF", + [":postbox:"] = "\uD83D\uDCEE", + [":potable_water:"] = "\uD83D\uDEB0", + [":potato:"] = "\uD83E\uDD54", + [":pouch:"] = "\uD83D\uDC5D", + [":poultry_leg:"] = "\uD83C\uDF57", + [":pound:"] = "\uD83D\uDCB7", + [":pouting_cat:"] = "\uD83D\uDE3E", + [":pray:"] = "\uD83D\uDE4F", + [":pray::skin-tone-1:"] = "\uD83D\uDE4F\uD83C\uDFFB", + [":pray::skin-tone-2:"] = "\uD83D\uDE4F\uD83C\uDFFC", + [":pray::skin-tone-3:"] = "\uD83D\uDE4F\uD83C\uDFFD", + [":pray::skin-tone-4:"] = "\uD83D\uDE4F\uD83C\uDFFE", + [":pray::skin-tone-5:"] = "\uD83D\uDE4F\uD83C\uDFFF", + [":pray_tone1:"] = "\uD83D\uDE4F\uD83C\uDFFB", + [":pray_tone2:"] = "\uD83D\uDE4F\uD83C\uDFFC", + [":pray_tone3:"] = "\uD83D\uDE4F\uD83C\uDFFD", + [":pray_tone4:"] = "\uD83D\uDE4F\uD83C\uDFFE", + [":pray_tone5:"] = "\uD83D\uDE4F\uD83C\uDFFF", + [":prayer_beads:"] = "\uD83D\uDCFF", + [":pregnant_woman:"] = "\uD83E\uDD30", + [":pregnant_woman::skin-tone-1:"] = "\uD83E\uDD30\uD83C\uDFFB", + [":pregnant_woman::skin-tone-2:"] = "\uD83E\uDD30\uD83C\uDFFC", + [":pregnant_woman::skin-tone-3:"] = "\uD83E\uDD30\uD83C\uDFFD", + [":pregnant_woman::skin-tone-4:"] = "\uD83E\uDD30\uD83C\uDFFE", + [":pregnant_woman::skin-tone-5:"] = "\uD83E\uDD30\uD83C\uDFFF", + [":pregnant_woman_tone1:"] = "\uD83E\uDD30\uD83C\uDFFB", + [":pregnant_woman_tone2:"] = "\uD83E\uDD30\uD83C\uDFFC", + [":pregnant_woman_tone3:"] = "\uD83E\uDD30\uD83C\uDFFD", + [":pregnant_woman_tone4:"] = "\uD83E\uDD30\uD83C\uDFFE", + [":pregnant_woman_tone5:"] = "\uD83E\uDD30\uD83C\uDFFF", + [":pretzel:"] = "\uD83E\uDD68", + [":previous_track:"] = "⏮️", + [":prince:"] = "\uD83E\uDD34", + [":prince::skin-tone-1:"] = "\uD83E\uDD34\uD83C\uDFFB", + [":prince::skin-tone-2:"] = "\uD83E\uDD34\uD83C\uDFFC", + [":prince::skin-tone-3:"] = "\uD83E\uDD34\uD83C\uDFFD", + [":prince::skin-tone-4:"] = "\uD83E\uDD34\uD83C\uDFFE", + [":prince::skin-tone-5:"] = "\uD83E\uDD34\uD83C\uDFFF", + [":prince_tone1:"] = "\uD83E\uDD34\uD83C\uDFFB", + [":prince_tone2:"] = "\uD83E\uDD34\uD83C\uDFFC", + [":prince_tone3:"] = "\uD83E\uDD34\uD83C\uDFFD", + [":prince_tone4:"] = "\uD83E\uDD34\uD83C\uDFFE", + [":prince_tone5:"] = "\uD83E\uDD34\uD83C\uDFFF", + [":princess:"] = "\uD83D\uDC78", + [":princess::skin-tone-1:"] = "\uD83D\uDC78\uD83C\uDFFB", + [":princess::skin-tone-2:"] = "\uD83D\uDC78\uD83C\uDFFC", + [":princess::skin-tone-3:"] = "\uD83D\uDC78\uD83C\uDFFD", + [":princess::skin-tone-4:"] = "\uD83D\uDC78\uD83C\uDFFE", + [":princess::skin-tone-5:"] = "\uD83D\uDC78\uD83C\uDFFF", + [":princess_tone1:"] = "\uD83D\uDC78\uD83C\uDFFB", + [":princess_tone2:"] = "\uD83D\uDC78\uD83C\uDFFC", + [":princess_tone3:"] = "\uD83D\uDC78\uD83C\uDFFD", + [":princess_tone4:"] = "\uD83D\uDC78\uD83C\uDFFE", + [":princess_tone5:"] = "\uD83D\uDC78\uD83C\uDFFF", + [":printer:"] = "\uD83D\uDDA8️", + [":probing_cane:"] = "\uD83E\uDDAF", + [":projector:"] = "\uD83D\uDCFD️", + [":pudding:"] = "\uD83C\uDF6E", + [":punch:"] = "\uD83D\uDC4A", + [":punch::skin-tone-1:"] = "\uD83D\uDC4A\uD83C\uDFFB", + [":punch::skin-tone-2:"] = "\uD83D\uDC4A\uD83C\uDFFC", + [":punch::skin-tone-3:"] = "\uD83D\uDC4A\uD83C\uDFFD", + [":punch::skin-tone-4:"] = "\uD83D\uDC4A\uD83C\uDFFE", + [":punch::skin-tone-5:"] = "\uD83D\uDC4A\uD83C\uDFFF", + [":punch_tone1:"] = "\uD83D\uDC4A\uD83C\uDFFB", + [":punch_tone2:"] = "\uD83D\uDC4A\uD83C\uDFFC", + [":punch_tone3:"] = "\uD83D\uDC4A\uD83C\uDFFD", + [":punch_tone4:"] = "\uD83D\uDC4A\uD83C\uDFFE", + [":punch_tone5:"] = "\uD83D\uDC4A\uD83C\uDFFF", + [":purple_circle:"] = "\uD83D\uDFE3", + [":purple_heart:"] = "\uD83D\uDC9C", + [":purple_square:"] = "\uD83D\uDFEA", + [":purse:"] = "\uD83D\uDC5B", + [":pushpin:"] = "\uD83D\uDCCC", + [":put_litter_in_its_place:"] = "\uD83D\uDEAE", + [":question:"] = "❓", + [":rabbit2:"] = "\uD83D\uDC07", + [":rabbit:"] = "\uD83D\uDC30", + [":raccoon:"] = "\uD83E\uDD9D", + [":race_car:"] = "\uD83C\uDFCE️", + [":racehorse:"] = "\uD83D\uDC0E", + [":racing_car:"] = "\uD83C\uDFCE️", + [":racing_motorcycle:"] = "\uD83C\uDFCD️", + [":radio:"] = "\uD83D\uDCFB", + [":radio_button:"] = "\uD83D\uDD18", + [":radioactive:"] = "☢️", + [":radioactive_sign:"] = "☢️", + [":rage:"] = "\uD83D\uDE21", + [":railroad_track:"] = "\uD83D\uDEE4️", + [":railway_car:"] = "\uD83D\uDE83", + [":railway_track:"] = "\uD83D\uDEE4️", + [":rainbow:"] = "\uD83C\uDF08", + [":rainbow_flag:"] = "\uD83C\uDFF3️\u200D\uD83C\uDF08", + [":raised_back_of_hand:"] = "\uD83E\uDD1A", + [":raised_back_of_hand::skin-tone-1:"] = "\uD83E\uDD1A\uD83C\uDFFB", + [":raised_back_of_hand::skin-tone-2:"] = "\uD83E\uDD1A\uD83C\uDFFC", + [":raised_back_of_hand::skin-tone-3:"] = "\uD83E\uDD1A\uD83C\uDFFD", + [":raised_back_of_hand::skin-tone-4:"] = "\uD83E\uDD1A\uD83C\uDFFE", + [":raised_back_of_hand::skin-tone-5:"] = "\uD83E\uDD1A\uD83C\uDFFF", + [":raised_back_of_hand_tone1:"] = "\uD83E\uDD1A\uD83C\uDFFB", + [":raised_back_of_hand_tone2:"] = "\uD83E\uDD1A\uD83C\uDFFC", + [":raised_back_of_hand_tone3:"] = "\uD83E\uDD1A\uD83C\uDFFD", + [":raised_back_of_hand_tone4:"] = "\uD83E\uDD1A\uD83C\uDFFE", + [":raised_back_of_hand_tone5:"] = "\uD83E\uDD1A\uD83C\uDFFF", + [":raised_hand:"] = "✋", + [":raised_hand::skin-tone-1:"] = "✋\uD83C\uDFFB", + [":raised_hand::skin-tone-2:"] = "✋\uD83C\uDFFC", + [":raised_hand::skin-tone-3:"] = "✋\uD83C\uDFFD", + [":raised_hand::skin-tone-4:"] = "✋\uD83C\uDFFE", + [":raised_hand::skin-tone-5:"] = "✋\uD83C\uDFFF", + [":raised_hand_tone1:"] = "✋\uD83C\uDFFB", + [":raised_hand_tone2:"] = "✋\uD83C\uDFFC", + [":raised_hand_tone3:"] = "✋\uD83C\uDFFD", + [":raised_hand_tone4:"] = "✋\uD83C\uDFFE", + [":raised_hand_tone5:"] = "✋\uD83C\uDFFF", + [":raised_hand_with_fingers_splayed:"] = "\uD83D\uDD90️", + [":raised_hand_with_fingers_splayed::skin-tone-1:"] = "\uD83D\uDD90\uD83C\uDFFB", + [":raised_hand_with_fingers_splayed::skin-tone-2:"] = "\uD83D\uDD90\uD83C\uDFFC", + [":raised_hand_with_fingers_splayed::skin-tone-3:"] = "\uD83D\uDD90\uD83C\uDFFD", + [":raised_hand_with_fingers_splayed::skin-tone-4:"] = "\uD83D\uDD90\uD83C\uDFFE", + [":raised_hand_with_fingers_splayed::skin-tone-5:"] = "\uD83D\uDD90\uD83C\uDFFF", + [":raised_hand_with_fingers_splayed_tone1:"] = "\uD83D\uDD90\uD83C\uDFFB", + [":raised_hand_with_fingers_splayed_tone2:"] = "\uD83D\uDD90\uD83C\uDFFC", + [":raised_hand_with_fingers_splayed_tone3:"] = "\uD83D\uDD90\uD83C\uDFFD", + [":raised_hand_with_fingers_splayed_tone4:"] = "\uD83D\uDD90\uD83C\uDFFE", + [":raised_hand_with_fingers_splayed_tone5:"] = "\uD83D\uDD90\uD83C\uDFFF", + [":raised_hand_with_part_between_middle_and_ring_fingers:"] = "\uD83D\uDD96", + [":raised_hand_with_part_between_middle_and_ring_fingers::skin-tone-1:"] = "\uD83D\uDD96\uD83C\uDFFB", + [":raised_hand_with_part_between_middle_and_ring_fingers::skin-tone-2:"] = "\uD83D\uDD96\uD83C\uDFFC", + [":raised_hand_with_part_between_middle_and_ring_fingers::skin-tone-3:"] = "\uD83D\uDD96\uD83C\uDFFD", + [":raised_hand_with_part_between_middle_and_ring_fingers::skin-tone-4:"] = "\uD83D\uDD96\uD83C\uDFFE", + [":raised_hand_with_part_between_middle_and_ring_fingers::skin-tone-5:"] = "\uD83D\uDD96\uD83C\uDFFF", + [":raised_hand_with_part_between_middle_and_ring_fingers_tone1:"] = "\uD83D\uDD96\uD83C\uDFFB", + [":raised_hand_with_part_between_middle_and_ring_fingers_tone2:"] = "\uD83D\uDD96\uD83C\uDFFC", + [":raised_hand_with_part_between_middle_and_ring_fingers_tone3:"] = "\uD83D\uDD96\uD83C\uDFFD", + [":raised_hand_with_part_between_middle_and_ring_fingers_tone4:"] = "\uD83D\uDD96\uD83C\uDFFE", + [":raised_hand_with_part_between_middle_and_ring_fingers_tone5:"] = "\uD83D\uDD96\uD83C\uDFFF", + [":raised_hands:"] = "\uD83D\uDE4C", + [":raised_hands::skin-tone-1:"] = "\uD83D\uDE4C\uD83C\uDFFB", + [":raised_hands::skin-tone-2:"] = "\uD83D\uDE4C\uD83C\uDFFC", + [":raised_hands::skin-tone-3:"] = "\uD83D\uDE4C\uD83C\uDFFD", + [":raised_hands::skin-tone-4:"] = "\uD83D\uDE4C\uD83C\uDFFE", + [":raised_hands::skin-tone-5:"] = "\uD83D\uDE4C\uD83C\uDFFF", + [":raised_hands_tone1:"] = "\uD83D\uDE4C\uD83C\uDFFB", + [":raised_hands_tone2:"] = "\uD83D\uDE4C\uD83C\uDFFC", + [":raised_hands_tone3:"] = "\uD83D\uDE4C\uD83C\uDFFD", + [":raised_hands_tone4:"] = "\uD83D\uDE4C\uD83C\uDFFE", + [":raised_hands_tone5:"] = "\uD83D\uDE4C\uD83C\uDFFF", + [":raising_hand:"] = "\uD83D\uDE4B", + [":raising_hand::skin-tone-1:"] = "\uD83D\uDE4B\uD83C\uDFFB", + [":raising_hand::skin-tone-2:"] = "\uD83D\uDE4B\uD83C\uDFFC", + [":raising_hand::skin-tone-3:"] = "\uD83D\uDE4B\uD83C\uDFFD", + [":raising_hand::skin-tone-4:"] = "\uD83D\uDE4B\uD83C\uDFFE", + [":raising_hand::skin-tone-5:"] = "\uD83D\uDE4B\uD83C\uDFFF", + [":raising_hand_tone1:"] = "\uD83D\uDE4B\uD83C\uDFFB", + [":raising_hand_tone2:"] = "\uD83D\uDE4B\uD83C\uDFFC", + [":raising_hand_tone3:"] = "\uD83D\uDE4B\uD83C\uDFFD", + [":raising_hand_tone4:"] = "\uD83D\uDE4B\uD83C\uDFFE", + [":raising_hand_tone5:"] = "\uD83D\uDE4B\uD83C\uDFFF", + [":ram:"] = "\uD83D\uDC0F", + [":ramen:"] = "\uD83C\uDF5C", + [":rat:"] = "\uD83D\uDC00", + [":razor:"] = "\uD83E\uDE92", + [":receipt:"] = "\uD83E\uDDFE", + [":record_button:"] = "⏺️", + [":recycle:"] = "♻️", + [":red_car:"] = "\uD83D\uDE97", + [":red_circle:"] = "\uD83D\uDD34", + [":red_envelope:"] = "\uD83E\uDDE7", + [":red_square:"] = "\uD83D\uDFE5", + [":regional_indicator_a:"] = "\uD83C\uDDE6", + [":regional_indicator_b:"] = "\uD83C\uDDE7", + [":regional_indicator_c:"] = "\uD83C\uDDE8", + [":regional_indicator_d:"] = "\uD83C\uDDE9", + [":regional_indicator_e:"] = "\uD83C\uDDEA", + [":regional_indicator_f:"] = "\uD83C\uDDEB", + [":regional_indicator_g:"] = "\uD83C\uDDEC", + [":regional_indicator_h:"] = "\uD83C\uDDED", + [":regional_indicator_i:"] = "\uD83C\uDDEE", + [":regional_indicator_j:"] = "\uD83C\uDDEF", + [":regional_indicator_k:"] = "\uD83C\uDDF0", + [":regional_indicator_l:"] = "\uD83C\uDDF1", + [":regional_indicator_m:"] = "\uD83C\uDDF2", + [":regional_indicator_n:"] = "\uD83C\uDDF3", + [":regional_indicator_o:"] = "\uD83C\uDDF4", + [":regional_indicator_p:"] = "\uD83C\uDDF5", + [":regional_indicator_q:"] = "\uD83C\uDDF6", + [":regional_indicator_r:"] = "\uD83C\uDDF7", + [":regional_indicator_s:"] = "\uD83C\uDDF8", + [":regional_indicator_t:"] = "\uD83C\uDDF9", + [":regional_indicator_u:"] = "\uD83C\uDDFA", + [":regional_indicator_v:"] = "\uD83C\uDDFB", + [":regional_indicator_w:"] = "\uD83C\uDDFC", + [":regional_indicator_x:"] = "\uD83C\uDDFD", + [":regional_indicator_y:"] = "\uD83C\uDDFE", + [":regional_indicator_z:"] = "\uD83C\uDDFF", + [":registered:"] = "®️", + [":relaxed:"] = "☺️", + [":relieved:"] = "\uD83D\uDE0C", + [":reminder_ribbon:"] = "\uD83C\uDF97️", + [":repeat:"] = "\uD83D\uDD01", + [":repeat_one:"] = "\uD83D\uDD02", + [":restroom:"] = "\uD83D\uDEBB", + [":reversed_hand_with_middle_finger_extended:"] = "\uD83D\uDD95", + [":reversed_hand_with_middle_finger_extended::skin-tone-1:"] = "\uD83D\uDD95\uD83C\uDFFB", + [":reversed_hand_with_middle_finger_extended::skin-tone-2:"] = "\uD83D\uDD95\uD83C\uDFFC", + [":reversed_hand_with_middle_finger_extended::skin-tone-3:"] = "\uD83D\uDD95\uD83C\uDFFD", + [":reversed_hand_with_middle_finger_extended::skin-tone-4:"] = "\uD83D\uDD95\uD83C\uDFFE", + [":reversed_hand_with_middle_finger_extended::skin-tone-5:"] = "\uD83D\uDD95\uD83C\uDFFF", + [":reversed_hand_with_middle_finger_extended_tone1:"] = "\uD83D\uDD95\uD83C\uDFFB", + [":reversed_hand_with_middle_finger_extended_tone2:"] = "\uD83D\uDD95\uD83C\uDFFC", + [":reversed_hand_with_middle_finger_extended_tone3:"] = "\uD83D\uDD95\uD83C\uDFFD", + [":reversed_hand_with_middle_finger_extended_tone4:"] = "\uD83D\uDD95\uD83C\uDFFE", + [":reversed_hand_with_middle_finger_extended_tone5:"] = "\uD83D\uDD95\uD83C\uDFFF", + [":revolving_hearts:"] = "\uD83D\uDC9E", + [":rewind:"] = "⏪", + [":rhino:"] = "\uD83E\uDD8F", + [":rhinoceros:"] = "\uD83E\uDD8F", + [":ribbon:"] = "\uD83C\uDF80", + [":rice:"] = "\uD83C\uDF5A", + [":rice_ball:"] = "\uD83C\uDF59", + [":rice_cracker:"] = "\uD83C\uDF58", + [":rice_scene:"] = "\uD83C\uDF91", + [":right_anger_bubble:"] = "\uD83D\uDDEF️", + [":right_facing_fist:"] = "\uD83E\uDD1C", + [":right_facing_fist::skin-tone-1:"] = "\uD83E\uDD1C\uD83C\uDFFB", + [":right_facing_fist::skin-tone-2:"] = "\uD83E\uDD1C\uD83C\uDFFC", + [":right_facing_fist::skin-tone-3:"] = "\uD83E\uDD1C\uD83C\uDFFD", + [":right_facing_fist::skin-tone-4:"] = "\uD83E\uDD1C\uD83C\uDFFE", + [":right_facing_fist::skin-tone-5:"] = "\uD83E\uDD1C\uD83C\uDFFF", + [":right_facing_fist_tone1:"] = "\uD83E\uDD1C\uD83C\uDFFB", + [":right_facing_fist_tone2:"] = "\uD83E\uDD1C\uD83C\uDFFC", + [":right_facing_fist_tone3:"] = "\uD83E\uDD1C\uD83C\uDFFD", + [":right_facing_fist_tone4:"] = "\uD83E\uDD1C\uD83C\uDFFE", + [":right_facing_fist_tone5:"] = "\uD83E\uDD1C\uD83C\uDFFF", + [":right_fist:"] = "\uD83E\uDD1C", + [":right_fist::skin-tone-1:"] = "\uD83E\uDD1C\uD83C\uDFFB", + [":right_fist::skin-tone-2:"] = "\uD83E\uDD1C\uD83C\uDFFC", + [":right_fist::skin-tone-3:"] = "\uD83E\uDD1C\uD83C\uDFFD", + [":right_fist::skin-tone-4:"] = "\uD83E\uDD1C\uD83C\uDFFE", + [":right_fist::skin-tone-5:"] = "\uD83E\uDD1C\uD83C\uDFFF", + [":right_fist_tone1:"] = "\uD83E\uDD1C\uD83C\uDFFB", + [":right_fist_tone2:"] = "\uD83E\uDD1C\uD83C\uDFFC", + [":right_fist_tone3:"] = "\uD83E\uDD1C\uD83C\uDFFD", + [":right_fist_tone4:"] = "\uD83E\uDD1C\uD83C\uDFFE", + [":right_fist_tone5:"] = "\uD83E\uDD1C\uD83C\uDFFF", + [":ring:"] = "\uD83D\uDC8D", + [":ringed_planet:"] = "\uD83E\uDE90", + [":robot:"] = "\uD83E\uDD16", + [":robot_face:"] = "\uD83E\uDD16", + [":rocket:"] = "\uD83D\uDE80", + [":rofl:"] = "\uD83E\uDD23", + [":roll_of_paper:"] = "\uD83E\uDDFB", + [":rolled_up_newspaper:"] = "\uD83D\uDDDE️", + [":roller_coaster:"] = "\uD83C\uDFA2", + [":rolling_eyes:"] = "\uD83D\uDE44", + [":rolling_on_the_floor_laughing:"] = "\uD83E\uDD23", + [":rooster:"] = "\uD83D\uDC13", + [":rose:"] = "\uD83C\uDF39", + [":rosette:"] = "\uD83C\uDFF5️", + [":rotating_light:"] = "\uD83D\uDEA8", + [":round_pushpin:"] = "\uD83D\uDCCD", + [":rowboat:"] = "\uD83D\uDEA3", + [":rowboat::skin-tone-1:"] = "\uD83D\uDEA3\uD83C\uDFFB", + [":rowboat::skin-tone-2:"] = "\uD83D\uDEA3\uD83C\uDFFC", + [":rowboat::skin-tone-3:"] = "\uD83D\uDEA3\uD83C\uDFFD", + [":rowboat::skin-tone-4:"] = "\uD83D\uDEA3\uD83C\uDFFE", + [":rowboat::skin-tone-5:"] = "\uD83D\uDEA3\uD83C\uDFFF", + [":rowboat_tone1:"] = "\uD83D\uDEA3\uD83C\uDFFB", + [":rowboat_tone2:"] = "\uD83D\uDEA3\uD83C\uDFFC", + [":rowboat_tone3:"] = "\uD83D\uDEA3\uD83C\uDFFD", + [":rowboat_tone4:"] = "\uD83D\uDEA3\uD83C\uDFFE", + [":rowboat_tone5:"] = "\uD83D\uDEA3\uD83C\uDFFF", + [":rugby_football:"] = "\uD83C\uDFC9", + [":runner:"] = "\uD83C\uDFC3", + [":runner::skin-tone-1:"] = "\uD83C\uDFC3\uD83C\uDFFB", + [":runner::skin-tone-2:"] = "\uD83C\uDFC3\uD83C\uDFFC", + [":runner::skin-tone-3:"] = "\uD83C\uDFC3\uD83C\uDFFD", + [":runner::skin-tone-4:"] = "\uD83C\uDFC3\uD83C\uDFFE", + [":runner::skin-tone-5:"] = "\uD83C\uDFC3\uD83C\uDFFF", + [":runner_tone1:"] = "\uD83C\uDFC3\uD83C\uDFFB", + [":runner_tone2:"] = "\uD83C\uDFC3\uD83C\uDFFC", + [":runner_tone3:"] = "\uD83C\uDFC3\uD83C\uDFFD", + [":runner_tone4:"] = "\uD83C\uDFC3\uD83C\uDFFE", + [":runner_tone5:"] = "\uD83C\uDFC3\uD83C\uDFFF", + [":running_shirt_with_sash:"] = "\uD83C\uDFBD", + [":s"] = "\uD83D\uDE12", + [":sa:"] = "\uD83C\uDE02️", + [":safety_pin:"] = "\uD83E\uDDF7", + [":safety_vest:"] = "\uD83E\uDDBA", + [":sagittarius:"] = "♐", + [":sailboat:"] = "⛵", + [":sake:"] = "\uD83C\uDF76", + [":salad:"] = "\uD83E\uDD57", + [":salt:"] = "\uD83E\uDDC2", + [":sandal:"] = "\uD83D\uDC61", + [":sandwich:"] = "\uD83E\uDD6A", + [":santa:"] = "\uD83C\uDF85", + [":santa::skin-tone-1:"] = "\uD83C\uDF85\uD83C\uDFFB", + [":santa::skin-tone-2:"] = "\uD83C\uDF85\uD83C\uDFFC", + [":santa::skin-tone-3:"] = "\uD83C\uDF85\uD83C\uDFFD", + [":santa::skin-tone-4:"] = "\uD83C\uDF85\uD83C\uDFFE", + [":santa::skin-tone-5:"] = "\uD83C\uDF85\uD83C\uDFFF", + [":santa_tone1:"] = "\uD83C\uDF85\uD83C\uDFFB", + [":santa_tone2:"] = "\uD83C\uDF85\uD83C\uDFFC", + [":santa_tone3:"] = "\uD83C\uDF85\uD83C\uDFFD", + [":santa_tone4:"] = "\uD83C\uDF85\uD83C\uDFFE", + [":santa_tone5:"] = "\uD83C\uDF85\uD83C\uDFFF", + [":sari:"] = "\uD83E\uDD7B", + [":satellite:"] = "\uD83D\uDCE1", + [":satellite_orbital:"] = "\uD83D\uDEF0️", + [":satisfied:"] = "\uD83D\uDE06", + [":sauropod:"] = "\uD83E\uDD95", + [":saxophone:"] = "\uD83C\uDFB7", + [":scales:"] = "⚖️", + [":scarf:"] = "\uD83E\uDDE3", + [":school:"] = "\uD83C\uDFEB", + [":school_satchel:"] = "\uD83C\uDF92", + [":scissors:"] = "✂️", + [":scooter:"] = "\uD83D\uDEF4", + [":scorpion:"] = "\uD83E\uDD82", + [":scorpius:"] = "♏", + [":scotland:"] = "\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74\uDB40\uDC7F", + [":scream:"] = "\uD83D\uDE31", + [":scream_cat:"] = "\uD83D\uDE40", + [":scroll:"] = "\uD83D\uDCDC", + [":seat:"] = "\uD83D\uDCBA", + [":second_place:"] = "\uD83E\uDD48", + [":second_place_medal:"] = "\uD83E\uDD48", + [":secret:"] = "㊙️", + [":see_no_evil:"] = "\uD83D\uDE48", + [":seedling:"] = "\uD83C\uDF31", + [":selfie:"] = "\uD83E\uDD33", + [":selfie::skin-tone-1:"] = "\uD83E\uDD33\uD83C\uDFFB", + [":selfie::skin-tone-2:"] = "\uD83E\uDD33\uD83C\uDFFC", + [":selfie::skin-tone-3:"] = "\uD83E\uDD33\uD83C\uDFFD", + [":selfie::skin-tone-4:"] = "\uD83E\uDD33\uD83C\uDFFE", + [":selfie::skin-tone-5:"] = "\uD83E\uDD33\uD83C\uDFFF", + [":selfie_tone1:"] = "\uD83E\uDD33\uD83C\uDFFB", + [":selfie_tone2:"] = "\uD83E\uDD33\uD83C\uDFFC", + [":selfie_tone3:"] = "\uD83E\uDD33\uD83C\uDFFD", + [":selfie_tone4:"] = "\uD83E\uDD33\uD83C\uDFFE", + [":selfie_tone5:"] = "\uD83E\uDD33\uD83C\uDFFF", + [":service_dog:"] = "\uD83D\uDC15\u200D\uD83E\uDDBA", + [":seven:"] = "7️⃣", + [":shaking_hands:"] = "\uD83E\uDD1D", + [":shallow_pan_of_food:"] = "\uD83E\uDD58", + [":shamrock:"] = "☘️", + [":shark:"] = "\uD83E\uDD88", + [":shaved_ice:"] = "\uD83C\uDF67", + [":sheep:"] = "\uD83D\uDC11", + [":shell:"] = "\uD83D\uDC1A", + [":shelled_peanut:"] = "\uD83E\uDD5C", + [":shield:"] = "\uD83D\uDEE1️", + [":shinto_shrine:"] = "⛩️", + [":ship:"] = "\uD83D\uDEA2", + [":shirt:"] = "\uD83D\uDC55", + [":shit:"] = "\uD83D\uDCA9", + [":shopping_bags:"] = "\uD83D\uDECD️", + [":shopping_cart:"] = "\uD83D\uDED2", + [":shopping_trolley:"] = "\uD83D\uDED2", + [":shorts:"] = "\uD83E\uDE73", + [":shower:"] = "\uD83D\uDEBF", + [":shrimp:"] = "\uD83E\uDD90", + [":shrug:"] = "\uD83E\uDD37", + [":shrug::skin-tone-1:"] = "\uD83E\uDD37\uD83C\uDFFB", + [":shrug::skin-tone-2:"] = "\uD83E\uDD37\uD83C\uDFFC", + [":shrug::skin-tone-3:"] = "\uD83E\uDD37\uD83C\uDFFD", + [":shrug::skin-tone-4:"] = "\uD83E\uDD37\uD83C\uDFFE", + [":shrug::skin-tone-5:"] = "\uD83E\uDD37\uD83C\uDFFF", + [":shrug_tone1:"] = "\uD83E\uDD37\uD83C\uDFFB", + [":shrug_tone2:"] = "\uD83E\uDD37\uD83C\uDFFC", + [":shrug_tone3:"] = "\uD83E\uDD37\uD83C\uDFFD", + [":shrug_tone4:"] = "\uD83E\uDD37\uD83C\uDFFE", + [":shrug_tone5:"] = "\uD83E\uDD37\uD83C\uDFFF", + [":shushing_face:"] = "\uD83E\uDD2B", + [":sick:"] = "\uD83E\uDD22", + [":sign_of_the_horns:"] = "\uD83E\uDD18", + [":sign_of_the_horns::skin-tone-1:"] = "\uD83E\uDD18\uD83C\uDFFB", + [":sign_of_the_horns::skin-tone-2:"] = "\uD83E\uDD18\uD83C\uDFFC", + [":sign_of_the_horns::skin-tone-3:"] = "\uD83E\uDD18\uD83C\uDFFD", + [":sign_of_the_horns::skin-tone-4:"] = "\uD83E\uDD18\uD83C\uDFFE", + [":sign_of_the_horns::skin-tone-5:"] = "\uD83E\uDD18\uD83C\uDFFF", + [":sign_of_the_horns_tone1:"] = "\uD83E\uDD18\uD83C\uDFFB", + [":sign_of_the_horns_tone2:"] = "\uD83E\uDD18\uD83C\uDFFC", + [":sign_of_the_horns_tone3:"] = "\uD83E\uDD18\uD83C\uDFFD", + [":sign_of_the_horns_tone4:"] = "\uD83E\uDD18\uD83C\uDFFE", + [":sign_of_the_horns_tone5:"] = "\uD83E\uDD18\uD83C\uDFFF", + [":signal_strength:"] = "\uD83D\uDCF6", + [":six:"] = "6️⃣", + [":six_pointed_star:"] = "\uD83D\uDD2F", + [":skateboard:"] = "\uD83D\uDEF9", + [":skeleton:"] = "\uD83D\uDC80", + [":ski:"] = "\uD83C\uDFBF", + [":skier:"] = "⛷️", + [":skull:"] = "\uD83D\uDC80", + [":skull_and_crossbones:"] = "☠️", + [":skull_crossbones:"] = "☠️", + [":skunk:"] = "\uD83E\uDDA8", + [":sled:"] = "\uD83D\uDEF7", + [":sleeping:"] = "\uD83D\uDE34", + [":sleeping_accommodation:"] = "\uD83D\uDECC", + [":sleeping_accommodation::skin-tone-1:"] = "\uD83D\uDECC\uD83C\uDFFB", + [":sleeping_accommodation::skin-tone-2:"] = "\uD83D\uDECC\uD83C\uDFFC", + [":sleeping_accommodation::skin-tone-3:"] = "\uD83D\uDECC\uD83C\uDFFD", + [":sleeping_accommodation::skin-tone-4:"] = "\uD83D\uDECC\uD83C\uDFFE", + [":sleeping_accommodation::skin-tone-5:"] = "\uD83D\uDECC\uD83C\uDFFF", + [":sleepy:"] = "\uD83D\uDE2A", + [":sleuth_or_spy:"] = "\uD83D\uDD75️", + [":sleuth_or_spy::skin-tone-1:"] = "\uD83D\uDD75\uD83C\uDFFB", + [":sleuth_or_spy::skin-tone-2:"] = "\uD83D\uDD75\uD83C\uDFFC", + [":sleuth_or_spy::skin-tone-3:"] = "\uD83D\uDD75\uD83C\uDFFD", + [":sleuth_or_spy::skin-tone-4:"] = "\uD83D\uDD75\uD83C\uDFFE", + [":sleuth_or_spy::skin-tone-5:"] = "\uD83D\uDD75\uD83C\uDFFF", + [":sleuth_or_spy_tone1:"] = "\uD83D\uDD75\uD83C\uDFFB", + [":sleuth_or_spy_tone2:"] = "\uD83D\uDD75\uD83C\uDFFC", + [":sleuth_or_spy_tone3:"] = "\uD83D\uDD75\uD83C\uDFFD", + [":sleuth_or_spy_tone4:"] = "\uD83D\uDD75\uD83C\uDFFE", + [":sleuth_or_spy_tone5:"] = "\uD83D\uDD75\uD83C\uDFFF", + [":slight_frown:"] = "\uD83D\uDE41", + [":slight_smile:"] = "\uD83D\uDE42", + [":slightly_frowning_face:"] = "\uD83D\uDE41", + [":slightly_smiling_face:"] = "\uD83D\uDE42", + [":slot_machine:"] = "\uD83C\uDFB0", + [":sloth:"] = "\uD83E\uDDA5", + [":small_airplane:"] = "\uD83D\uDEE9️", + [":small_blue_diamond:"] = "\uD83D\uDD39", + [":small_orange_diamond:"] = "\uD83D\uDD38", + [":small_red_triangle:"] = "\uD83D\uDD3A", + [":small_red_triangle_down:"] = "\uD83D\uDD3B", + [":smile:"] = "\uD83D\uDE04", + [":smile_cat:"] = "\uD83D\uDE38", + [":smiley:"] = "\uD83D\uDE03", + [":smiley_cat:"] = "\uD83D\uDE3A", + [":smiling_face_with_3_hearts:"] = "\uD83E\uDD70", + [":smiling_imp:"] = "\uD83D\uDE08", + [":smirk:"] = "\uD83D\uDE0F", + [":smirk_cat:"] = "\uD83D\uDE3C", + [":smoking:"] = "\uD83D\uDEAC", + [":snail:"] = "\uD83D\uDC0C", + [":snake:"] = "\uD83D\uDC0D", + [":sneeze:"] = "\uD83E\uDD27", + [":sneezing_face:"] = "\uD83E\uDD27", + [":snow_capped_mountain:"] = "\uD83C\uDFD4️", + [":snowboarder:"] = "\uD83C\uDFC2", + [":snowboarder::skin-tone-1:"] = "\uD83C\uDFC2\uD83C\uDFFB", + [":snowboarder::skin-tone-2:"] = "\uD83C\uDFC2\uD83C\uDFFC", + [":snowboarder::skin-tone-3:"] = "\uD83C\uDFC2\uD83C\uDFFD", + [":snowboarder::skin-tone-4:"] = "\uD83C\uDFC2\uD83C\uDFFE", + [":snowboarder::skin-tone-5:"] = "\uD83C\uDFC2\uD83C\uDFFF", + [":snowboarder_dark_skin_tone:"] = "\uD83C\uDFC2\uD83C\uDFFF", + [":snowboarder_light_skin_tone:"] = "\uD83C\uDFC2\uD83C\uDFFB", + [":snowboarder_medium_dark_skin_tone:"] = "\uD83C\uDFC2\uD83C\uDFFE", + [":snowboarder_medium_light_skin_tone:"] = "\uD83C\uDFC2\uD83C\uDFFC", + [":snowboarder_medium_skin_tone:"] = "\uD83C\uDFC2\uD83C\uDFFD", + [":snowboarder_tone1:"] = "\uD83C\uDFC2\uD83C\uDFFB", + [":snowboarder_tone2:"] = "\uD83C\uDFC2\uD83C\uDFFC", + [":snowboarder_tone3:"] = "\uD83C\uDFC2\uD83C\uDFFD", + [":snowboarder_tone4:"] = "\uD83C\uDFC2\uD83C\uDFFE", + [":snowboarder_tone5:"] = "\uD83C\uDFC2\uD83C\uDFFF", + [":snowflake:"] = "❄️", + [":snowman2:"] = "☃️", + [":snowman:"] = "⛄", + [":soap:"] = "\uD83E\uDDFC", + [":sob:"] = "\uD83D\uDE2D", + [":soccer:"] = "⚽", + [":socks:"] = "\uD83E\uDDE6", + [":softball:"] = "\uD83E\uDD4E", + [":soon:"] = "\uD83D\uDD1C", + [":sos:"] = "\uD83C\uDD98", + [":sound:"] = "\uD83D\uDD09", + [":space_invader:"] = "\uD83D\uDC7E", + [":spades:"] = "♠️", + [":spaghetti:"] = "\uD83C\uDF5D", + [":sparkle:"] = "❇️", + [":sparkler:"] = "\uD83C\uDF87", + [":sparkles:"] = "✨", + [":sparkling_heart:"] = "\uD83D\uDC96", + [":speak_no_evil:"] = "\uD83D\uDE4A", + [":speaker:"] = "\uD83D\uDD08", + [":speaking_head:"] = "\uD83D\uDDE3️", + [":speaking_head_in_silhouette:"] = "\uD83D\uDDE3️", + [":speech_balloon:"] = "\uD83D\uDCAC", + [":speech_left:"] = "\uD83D\uDDE8️", + [":speedboat:"] = "\uD83D\uDEA4", + [":spider:"] = "\uD83D\uDD77️", + [":spider_web:"] = "\uD83D\uDD78️", + [":spiral_calendar_pad:"] = "\uD83D\uDDD3️", + [":spiral_note_pad:"] = "\uD83D\uDDD2️", + [":sponge:"] = "\uD83E\uDDFD", + [":spoon:"] = "\uD83E\uDD44", + [":sports_medal:"] = "\uD83C\uDFC5", + [":spy:"] = "\uD83D\uDD75️", + [":spy::skin-tone-1:"] = "\uD83D\uDD75\uD83C\uDFFB", + [":spy::skin-tone-2:"] = "\uD83D\uDD75\uD83C\uDFFC", + [":spy::skin-tone-3:"] = "\uD83D\uDD75\uD83C\uDFFD", + [":spy::skin-tone-4:"] = "\uD83D\uDD75\uD83C\uDFFE", + [":spy::skin-tone-5:"] = "\uD83D\uDD75\uD83C\uDFFF", + [":spy_tone1:"] = "\uD83D\uDD75\uD83C\uDFFB", + [":spy_tone2:"] = "\uD83D\uDD75\uD83C\uDFFC", + [":spy_tone3:"] = "\uD83D\uDD75\uD83C\uDFFD", + [":spy_tone4:"] = "\uD83D\uDD75\uD83C\uDFFE", + [":spy_tone5:"] = "\uD83D\uDD75\uD83C\uDFFF", + [":squeeze_bottle:"] = "\uD83E\uDDF4", + [":squid:"] = "\uD83E\uDD91", + [":stadium:"] = "\uD83C\uDFDF️", + [":star2:"] = "\uD83C\uDF1F", + [":star:"] = "⭐", + [":star_and_crescent:"] = "☪️", + [":star_of_david:"] = "✡️", + [":star_struck:"] = "\uD83E\uDD29", + [":stars:"] = "\uD83C\uDF20", + [":station:"] = "\uD83D\uDE89", + [":statue_of_liberty:"] = "\uD83D\uDDFD", + [":steam_locomotive:"] = "\uD83D\uDE82", + [":stethoscope:"] = "\uD83E\uDE7A", + [":stew:"] = "\uD83C\uDF72", + [":stop_button:"] = "⏹️", + [":stop_sign:"] = "\uD83D\uDED1", + [":stopwatch:"] = "⏱️", + [":straight_ruler:"] = "\uD83D\uDCCF", + [":strawberry:"] = "\uD83C\uDF53", + [":stuck_out_tongue:"] = "\uD83D\uDE1B", + [":stuck_out_tongue_closed_eyes:"] = "\uD83D\uDE1D", + [":stuck_out_tongue_winking_eye:"] = "\uD83D\uDE1C", + [":studio_microphone:"] = "\uD83C\uDF99️", + [":stuffed_flatbread:"] = "\uD83E\uDD59", + [":stuffed_pita:"] = "\uD83E\uDD59", + [":sun_with_face:"] = "\uD83C\uDF1E", + [":sunflower:"] = "\uD83C\uDF3B", + [":sunglasses:"] = "\uD83D\uDE0E", + [":sunny:"] = "☀️", + [":sunrise:"] = "\uD83C\uDF05", + [":sunrise_over_mountains:"] = "\uD83C\uDF04", + [":superhero:"] = "\uD83E\uDDB8", + [":superhero::skin-tone-1:"] = "\uD83E\uDDB8\uD83C\uDFFB", + [":superhero::skin-tone-2:"] = "\uD83E\uDDB8\uD83C\uDFFC", + [":superhero::skin-tone-3:"] = "\uD83E\uDDB8\uD83C\uDFFD", + [":superhero::skin-tone-4:"] = "\uD83E\uDDB8\uD83C\uDFFE", + [":superhero::skin-tone-5:"] = "\uD83E\uDDB8\uD83C\uDFFF", + [":superhero_dark_skin_tone:"] = "\uD83E\uDDB8\uD83C\uDFFF", + [":superhero_light_skin_tone:"] = "\uD83E\uDDB8\uD83C\uDFFB", + [":superhero_medium_dark_skin_tone:"] = "\uD83E\uDDB8\uD83C\uDFFE", + [":superhero_medium_light_skin_tone:"] = "\uD83E\uDDB8\uD83C\uDFFC", + [":superhero_medium_skin_tone:"] = "\uD83E\uDDB8\uD83C\uDFFD", + [":superhero_tone1:"] = "\uD83E\uDDB8\uD83C\uDFFB", + [":superhero_tone2:"] = "\uD83E\uDDB8\uD83C\uDFFC", + [":superhero_tone3:"] = "\uD83E\uDDB8\uD83C\uDFFD", + [":superhero_tone4:"] = "\uD83E\uDDB8\uD83C\uDFFE", + [":superhero_tone5:"] = "\uD83E\uDDB8\uD83C\uDFFF", + [":supervillain:"] = "\uD83E\uDDB9", + [":supervillain::skin-tone-1:"] = "\uD83E\uDDB9\uD83C\uDFFB", + [":supervillain::skin-tone-2:"] = "\uD83E\uDDB9\uD83C\uDFFC", + [":supervillain::skin-tone-3:"] = "\uD83E\uDDB9\uD83C\uDFFD", + [":supervillain::skin-tone-4:"] = "\uD83E\uDDB9\uD83C\uDFFE", + [":supervillain::skin-tone-5:"] = "\uD83E\uDDB9\uD83C\uDFFF", + [":supervillain_dark_skin_tone:"] = "\uD83E\uDDB9\uD83C\uDFFF", + [":supervillain_light_skin_tone:"] = "\uD83E\uDDB9\uD83C\uDFFB", + [":supervillain_medium_dark_skin_tone:"] = "\uD83E\uDDB9\uD83C\uDFFE", + [":supervillain_medium_light_skin_tone:"] = "\uD83E\uDDB9\uD83C\uDFFC", + [":supervillain_medium_skin_tone:"] = "\uD83E\uDDB9\uD83C\uDFFD", + [":supervillain_tone1:"] = "\uD83E\uDDB9\uD83C\uDFFB", + [":supervillain_tone2:"] = "\uD83E\uDDB9\uD83C\uDFFC", + [":supervillain_tone3:"] = "\uD83E\uDDB9\uD83C\uDFFD", + [":supervillain_tone4:"] = "\uD83E\uDDB9\uD83C\uDFFE", + [":supervillain_tone5:"] = "\uD83E\uDDB9\uD83C\uDFFF", + [":surfer:"] = "\uD83C\uDFC4", + [":surfer::skin-tone-1:"] = "\uD83C\uDFC4\uD83C\uDFFB", + [":surfer::skin-tone-2:"] = "\uD83C\uDFC4\uD83C\uDFFC", + [":surfer::skin-tone-3:"] = "\uD83C\uDFC4\uD83C\uDFFD", + [":surfer::skin-tone-4:"] = "\uD83C\uDFC4\uD83C\uDFFE", + [":surfer::skin-tone-5:"] = "\uD83C\uDFC4\uD83C\uDFFF", + [":surfer_tone1:"] = "\uD83C\uDFC4\uD83C\uDFFB", + [":surfer_tone2:"] = "\uD83C\uDFC4\uD83C\uDFFC", + [":surfer_tone3:"] = "\uD83C\uDFC4\uD83C\uDFFD", + [":surfer_tone4:"] = "\uD83C\uDFC4\uD83C\uDFFE", + [":surfer_tone5:"] = "\uD83C\uDFC4\uD83C\uDFFF", + [":sushi:"] = "\uD83C\uDF63", + [":suspension_railway:"] = "\uD83D\uDE9F", + [":swan:"] = "\uD83E\uDDA2", + [":sweat:"] = "\uD83D\uDE13", + [":sweat_drops:"] = "\uD83D\uDCA6", + [":sweat_smile:"] = "\uD83D\uDE05", + [":sweet_potato:"] = "\uD83C\uDF60", + [":swimmer:"] = "\uD83C\uDFCA", + [":swimmer::skin-tone-1:"] = "\uD83C\uDFCA\uD83C\uDFFB", + [":swimmer::skin-tone-2:"] = "\uD83C\uDFCA\uD83C\uDFFC", + [":swimmer::skin-tone-3:"] = "\uD83C\uDFCA\uD83C\uDFFD", + [":swimmer::skin-tone-4:"] = "\uD83C\uDFCA\uD83C\uDFFE", + [":swimmer::skin-tone-5:"] = "\uD83C\uDFCA\uD83C\uDFFF", + [":swimmer_tone1:"] = "\uD83C\uDFCA\uD83C\uDFFB", + [":swimmer_tone2:"] = "\uD83C\uDFCA\uD83C\uDFFC", + [":swimmer_tone3:"] = "\uD83C\uDFCA\uD83C\uDFFD", + [":swimmer_tone4:"] = "\uD83C\uDFCA\uD83C\uDFFE", + [":swimmer_tone5:"] = "\uD83C\uDFCA\uD83C\uDFFF", + [":symbols:"] = "\uD83D\uDD23", + [":synagogue:"] = "\uD83D\uDD4D", + [":syringe:"] = "\uD83D\uDC89", + [":t_rex:"] = "\uD83E\uDD96", + [":table_tennis:"] = "\uD83C\uDFD3", + [":taco:"] = "\uD83C\uDF2E", + [":tada:"] = "\uD83C\uDF89", + [":takeout_box:"] = "\uD83E\uDD61", + [":tanabata_tree:"] = "\uD83C\uDF8B", + [":tangerine:"] = "\uD83C\uDF4A", + [":taurus:"] = "♉", + [":taxi:"] = "\uD83D\uDE95", + [":tea:"] = "\uD83C\uDF75", + [":teddy_bear:"] = "\uD83E\uDDF8", + [":telephone:"] = "☎️", + [":telephone_receiver:"] = "\uD83D\uDCDE", + [":telescope:"] = "\uD83D\uDD2D", + [":tennis:"] = "\uD83C\uDFBE", + [":tent:"] = "⛺", + [":test_tube:"] = "\uD83E\uDDEA", + [":thermometer:"] = "\uD83C\uDF21️", + [":thermometer_face:"] = "\uD83E\uDD12", + [":thinking:"] = "\uD83E\uDD14", + [":thinking_face:"] = "\uD83E\uDD14", + [":third_place:"] = "\uD83E\uDD49", + [":third_place_medal:"] = "\uD83E\uDD49", + [":thought_balloon:"] = "\uD83D\uDCAD", + [":thread:"] = "\uD83E\uDDF5", + [":three:"] = "3️⃣", + [":three_button_mouse:"] = "\uD83D\uDDB1️", + [":thumbdown:"] = "\uD83D\uDC4E", + [":thumbdown::skin-tone-1:"] = "\uD83D\uDC4E\uD83C\uDFFB", + [":thumbdown::skin-tone-2:"] = "\uD83D\uDC4E\uD83C\uDFFC", + [":thumbdown::skin-tone-3:"] = "\uD83D\uDC4E\uD83C\uDFFD", + [":thumbdown::skin-tone-4:"] = "\uD83D\uDC4E\uD83C\uDFFE", + [":thumbdown::skin-tone-5:"] = "\uD83D\uDC4E\uD83C\uDFFF", + [":thumbdown_tone1:"] = "\uD83D\uDC4E\uD83C\uDFFB", + [":thumbdown_tone2:"] = "\uD83D\uDC4E\uD83C\uDFFC", + [":thumbdown_tone3:"] = "\uD83D\uDC4E\uD83C\uDFFD", + [":thumbdown_tone4:"] = "\uD83D\uDC4E\uD83C\uDFFE", + [":thumbdown_tone5:"] = "\uD83D\uDC4E\uD83C\uDFFF", + [":thumbsdown:"] = "\uD83D\uDC4E", + [":thumbsdown::skin-tone-1:"] = "\uD83D\uDC4E\uD83C\uDFFB", + [":thumbsdown::skin-tone-2:"] = "\uD83D\uDC4E\uD83C\uDFFC", + [":thumbsdown::skin-tone-3:"] = "\uD83D\uDC4E\uD83C\uDFFD", + [":thumbsdown::skin-tone-4:"] = "\uD83D\uDC4E\uD83C\uDFFE", + [":thumbsdown::skin-tone-5:"] = "\uD83D\uDC4E\uD83C\uDFFF", + [":thumbsdown_tone1:"] = "\uD83D\uDC4E\uD83C\uDFFB", + [":thumbsdown_tone2:"] = "\uD83D\uDC4E\uD83C\uDFFC", + [":thumbsdown_tone3:"] = "\uD83D\uDC4E\uD83C\uDFFD", + [":thumbsdown_tone4:"] = "\uD83D\uDC4E\uD83C\uDFFE", + [":thumbsdown_tone5:"] = "\uD83D\uDC4E\uD83C\uDFFF", + [":thumbsup:"] = "\uD83D\uDC4D", + [":thumbsup::skin-tone-1:"] = "\uD83D\uDC4D\uD83C\uDFFB", + [":thumbsup::skin-tone-2:"] = "\uD83D\uDC4D\uD83C\uDFFC", + [":thumbsup::skin-tone-3:"] = "\uD83D\uDC4D\uD83C\uDFFD", + [":thumbsup::skin-tone-4:"] = "\uD83D\uDC4D\uD83C\uDFFE", + [":thumbsup::skin-tone-5:"] = "\uD83D\uDC4D\uD83C\uDFFF", + [":thumbsup_tone1:"] = "\uD83D\uDC4D\uD83C\uDFFB", + [":thumbsup_tone2:"] = "\uD83D\uDC4D\uD83C\uDFFC", + [":thumbsup_tone3:"] = "\uD83D\uDC4D\uD83C\uDFFD", + [":thumbsup_tone4:"] = "\uD83D\uDC4D\uD83C\uDFFE", + [":thumbsup_tone5:"] = "\uD83D\uDC4D\uD83C\uDFFF", + [":thumbup:"] = "\uD83D\uDC4D", + [":thumbup::skin-tone-1:"] = "\uD83D\uDC4D\uD83C\uDFFB", + [":thumbup::skin-tone-2:"] = "\uD83D\uDC4D\uD83C\uDFFC", + [":thumbup::skin-tone-3:"] = "\uD83D\uDC4D\uD83C\uDFFD", + [":thumbup::skin-tone-4:"] = "\uD83D\uDC4D\uD83C\uDFFE", + [":thumbup::skin-tone-5:"] = "\uD83D\uDC4D\uD83C\uDFFF", + [":thumbup_tone1:"] = "\uD83D\uDC4D\uD83C\uDFFB", + [":thumbup_tone2:"] = "\uD83D\uDC4D\uD83C\uDFFC", + [":thumbup_tone3:"] = "\uD83D\uDC4D\uD83C\uDFFD", + [":thumbup_tone4:"] = "\uD83D\uDC4D\uD83C\uDFFE", + [":thumbup_tone5:"] = "\uD83D\uDC4D\uD83C\uDFFF", + [":thunder_cloud_and_rain:"] = "⛈️", + [":thunder_cloud_rain:"] = "⛈️", + [":ticket:"] = "\uD83C\uDFAB", + [":tickets:"] = "\uD83C\uDF9F️", + [":tiger2:"] = "\uD83D\uDC05", + [":tiger:"] = "\uD83D\uDC2F", + [":timer:"] = "⏲️", + [":timer_clock:"] = "⏲️", + [":tired_face:"] = "\uD83D\uDE2B", + [":tm:"] = "™️", + [":toilet:"] = "\uD83D\uDEBD", + [":tokyo_tower:"] = "\uD83D\uDDFC", + [":tomato:"] = "\uD83C\uDF45", + [":tongue:"] = "\uD83D\uDC45", + [":toolbox:"] = "\uD83E\uDDF0", + [":tools:"] = "\uD83D\uDEE0️", + [":tooth:"] = "\uD83E\uDDB7", + [":top:"] = "\uD83D\uDD1D", + [":tophat:"] = "\uD83C\uDFA9", + [":track_next:"] = "⏭️", + [":track_previous:"] = "⏮️", + [":trackball:"] = "\uD83D\uDDB2️", + [":tractor:"] = "\uD83D\uDE9C", + [":traffic_light:"] = "\uD83D\uDEA5", + [":train2:"] = "\uD83D\uDE86", + [":train:"] = "\uD83D\uDE8B", + [":tram:"] = "\uD83D\uDE8A", + [":triangular_flag_on_post:"] = "\uD83D\uDEA9", + [":triangular_ruler:"] = "\uD83D\uDCD0", + [":trident:"] = "\uD83D\uDD31", + [":triumph:"] = "\uD83D\uDE24", + [":trolleybus:"] = "\uD83D\uDE8E", + [":trophy:"] = "\uD83C\uDFC6", + [":tropical_drink:"] = "\uD83C\uDF79", + [":tropical_fish:"] = "\uD83D\uDC20", + [":truck:"] = "\uD83D\uDE9A", + [":trumpet:"] = "\uD83C\uDFBA", + [":tulip:"] = "\uD83C\uDF37", + [":tumbler_glass:"] = "\uD83E\uDD43", + [":turkey:"] = "\uD83E\uDD83", + [":turtle:"] = "\uD83D\uDC22", + [":tuxedo_tone1:"] = "\uD83E\uDD35\uD83C\uDFFB", + [":tuxedo_tone2:"] = "\uD83E\uDD35\uD83C\uDFFC", + [":tuxedo_tone3:"] = "\uD83E\uDD35\uD83C\uDFFD", + [":tuxedo_tone4:"] = "\uD83E\uDD35\uD83C\uDFFE", + [":tuxedo_tone5:"] = "\uD83E\uDD35\uD83C\uDFFF", + [":tv:"] = "\uD83D\uDCFA", + [":twisted_rightwards_arrows:"] = "\uD83D\uDD00", + [":two:"] = "2️⃣", + [":two_hearts:"] = "\uD83D\uDC95", + [":two_men_holding_hands:"] = "\uD83D\uDC6C", + [":two_women_holding_hands:"] = "\uD83D\uDC6D", + [":u5272:"] = "\uD83C\uDE39", + [":u5408:"] = "\uD83C\uDE34", + [":u55b6:"] = "\uD83C\uDE3A", + [":u6307:"] = "\uD83C\uDE2F", + [":u6708:"] = "\uD83C\uDE37️", + [":u6709:"] = "\uD83C\uDE36", + [":u6e80:"] = "\uD83C\uDE35", + [":u7121:"] = "\uD83C\uDE1A", + [":u7533:"] = "\uD83C\uDE38", + [":u7981:"] = "\uD83C\uDE32", + [":u7a7a:"] = "\uD83C\uDE33", + [":umbrella2:"] = "☂️", + [":umbrella:"] = "☔", + [":umbrella_on_ground:"] = "⛱️", + [":unamused:"] = "\uD83D\uDE12", + [":underage:"] = "\uD83D\uDD1E", + [":unicorn:"] = "\uD83E\uDD84", + [":unicorn_face:"] = "\uD83E\uDD84", + [":united_nations:"] = "\uD83C\uDDFA\uD83C\uDDF3", + [":unlock:"] = "\uD83D\uDD13", + [":up:"] = "\uD83C\uDD99", + [":upside_down:"] = "\uD83D\uDE43", + [":upside_down_face:"] = "\uD83D\uDE43", + [":urn:"] = "⚱️", + [":v:"] = "✌️", + [":v::skin-tone-1:"] = "✌\uD83C\uDFFB", + [":v::skin-tone-2:"] = "✌\uD83C\uDFFC", + [":v::skin-tone-3:"] = "✌\uD83C\uDFFD", + [":v::skin-tone-4:"] = "✌\uD83C\uDFFE", + [":v::skin-tone-5:"] = "✌\uD83C\uDFFF", + [":v_tone1:"] = "✌\uD83C\uDFFB", + [":v_tone2:"] = "✌\uD83C\uDFFC", + [":v_tone3:"] = "✌\uD83C\uDFFD", + [":v_tone4:"] = "✌\uD83C\uDFFE", + [":v_tone5:"] = "✌\uD83C\uDFFF", + [":vampire:"] = "\uD83E\uDDDB", + [":vampire::skin-tone-1:"] = "\uD83E\uDDDB\uD83C\uDFFB", + [":vampire::skin-tone-2:"] = "\uD83E\uDDDB\uD83C\uDFFC", + [":vampire::skin-tone-3:"] = "\uD83E\uDDDB\uD83C\uDFFD", + [":vampire::skin-tone-4:"] = "\uD83E\uDDDB\uD83C\uDFFE", + [":vampire::skin-tone-5:"] = "\uD83E\uDDDB\uD83C\uDFFF", + [":vampire_dark_skin_tone:"] = "\uD83E\uDDDB\uD83C\uDFFF", + [":vampire_light_skin_tone:"] = "\uD83E\uDDDB\uD83C\uDFFB", + [":vampire_medium_dark_skin_tone:"] = "\uD83E\uDDDB\uD83C\uDFFE", + [":vampire_medium_light_skin_tone:"] = "\uD83E\uDDDB\uD83C\uDFFC", + [":vampire_medium_skin_tone:"] = "\uD83E\uDDDB\uD83C\uDFFD", + [":vampire_tone1:"] = "\uD83E\uDDDB\uD83C\uDFFB", + [":vampire_tone2:"] = "\uD83E\uDDDB\uD83C\uDFFC", + [":vampire_tone3:"] = "\uD83E\uDDDB\uD83C\uDFFD", + [":vampire_tone4:"] = "\uD83E\uDDDB\uD83C\uDFFE", + [":vampire_tone5:"] = "\uD83E\uDDDB\uD83C\uDFFF", + [":vertical_traffic_light:"] = "\uD83D\uDEA6", + [":vhs:"] = "\uD83D\uDCFC", + [":vibration_mode:"] = "\uD83D\uDCF3", + [":video_camera:"] = "\uD83D\uDCF9", + [":video_game:"] = "\uD83C\uDFAE", + [":violin:"] = "\uD83C\uDFBB", + [":virgo:"] = "♍", + [":volcano:"] = "\uD83C\uDF0B", + [":volleyball:"] = "\uD83C\uDFD0", + [":vs:"] = "\uD83C\uDD9A", + [":vulcan:"] = "\uD83D\uDD96", + [":vulcan::skin-tone-1:"] = "\uD83D\uDD96\uD83C\uDFFB", + [":vulcan::skin-tone-2:"] = "\uD83D\uDD96\uD83C\uDFFC", + [":vulcan::skin-tone-3:"] = "\uD83D\uDD96\uD83C\uDFFD", + [":vulcan::skin-tone-4:"] = "\uD83D\uDD96\uD83C\uDFFE", + [":vulcan::skin-tone-5:"] = "\uD83D\uDD96\uD83C\uDFFF", + [":vulcan_tone1:"] = "\uD83D\uDD96\uD83C\uDFFB", + [":vulcan_tone2:"] = "\uD83D\uDD96\uD83C\uDFFC", + [":vulcan_tone3:"] = "\uD83D\uDD96\uD83C\uDFFD", + [":vulcan_tone4:"] = "\uD83D\uDD96\uD83C\uDFFE", + [":vulcan_tone5:"] = "\uD83D\uDD96\uD83C\uDFFF", + [":waffle:"] = "\uD83E\uDDC7", + [":wales:"] = "\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73\uDB40\uDC7F", + [":walking:"] = "\uD83D\uDEB6", + [":walking::skin-tone-1:"] = "\uD83D\uDEB6\uD83C\uDFFB", + [":walking::skin-tone-2:"] = "\uD83D\uDEB6\uD83C\uDFFC", + [":walking::skin-tone-3:"] = "\uD83D\uDEB6\uD83C\uDFFD", + [":walking::skin-tone-4:"] = "\uD83D\uDEB6\uD83C\uDFFE", + [":walking::skin-tone-5:"] = "\uD83D\uDEB6\uD83C\uDFFF", + [":walking_tone1:"] = "\uD83D\uDEB6\uD83C\uDFFB", + [":walking_tone2:"] = "\uD83D\uDEB6\uD83C\uDFFC", + [":walking_tone3:"] = "\uD83D\uDEB6\uD83C\uDFFD", + [":walking_tone4:"] = "\uD83D\uDEB6\uD83C\uDFFE", + [":walking_tone5:"] = "\uD83D\uDEB6\uD83C\uDFFF", + [":waning_crescent_moon:"] = "\uD83C\uDF18", + [":waning_gibbous_moon:"] = "\uD83C\uDF16", + [":warning:"] = "⚠️", + [":wastebasket:"] = "\uD83D\uDDD1️", + [":watch:"] = "⌚", + [":water_buffalo:"] = "\uD83D\uDC03", + [":water_polo:"] = "\uD83E\uDD3D", + [":water_polo::skin-tone-1:"] = "\uD83E\uDD3D\uD83C\uDFFB", + [":water_polo::skin-tone-2:"] = "\uD83E\uDD3D\uD83C\uDFFC", + [":water_polo::skin-tone-3:"] = "\uD83E\uDD3D\uD83C\uDFFD", + [":water_polo::skin-tone-4:"] = "\uD83E\uDD3D\uD83C\uDFFE", + [":water_polo::skin-tone-5:"] = "\uD83E\uDD3D\uD83C\uDFFF", + [":water_polo_tone1:"] = "\uD83E\uDD3D\uD83C\uDFFB", + [":water_polo_tone2:"] = "\uD83E\uDD3D\uD83C\uDFFC", + [":water_polo_tone3:"] = "\uD83E\uDD3D\uD83C\uDFFD", + [":water_polo_tone4:"] = "\uD83E\uDD3D\uD83C\uDFFE", + [":water_polo_tone5:"] = "\uD83E\uDD3D\uD83C\uDFFF", + [":watermelon:"] = "\uD83C\uDF49", + [":wave:"] = "\uD83D\uDC4B", + [":wave::skin-tone-1:"] = "\uD83D\uDC4B\uD83C\uDFFB", + [":wave::skin-tone-2:"] = "\uD83D\uDC4B\uD83C\uDFFC", + [":wave::skin-tone-3:"] = "\uD83D\uDC4B\uD83C\uDFFD", + [":wave::skin-tone-4:"] = "\uD83D\uDC4B\uD83C\uDFFE", + [":wave::skin-tone-5:"] = "\uD83D\uDC4B\uD83C\uDFFF", + [":wave_tone1:"] = "\uD83D\uDC4B\uD83C\uDFFB", + [":wave_tone2:"] = "\uD83D\uDC4B\uD83C\uDFFC", + [":wave_tone3:"] = "\uD83D\uDC4B\uD83C\uDFFD", + [":wave_tone4:"] = "\uD83D\uDC4B\uD83C\uDFFE", + [":wave_tone5:"] = "\uD83D\uDC4B\uD83C\uDFFF", + [":wavy_dash:"] = "〰️", + [":waxing_crescent_moon:"] = "\uD83C\uDF12", + [":waxing_gibbous_moon:"] = "\uD83C\uDF14", + [":wc:"] = "\uD83D\uDEBE", + [":weary:"] = "\uD83D\uDE29", + [":wedding:"] = "\uD83D\uDC92", + [":weight_lifter:"] = "\uD83C\uDFCB️", + [":weight_lifter::skin-tone-1:"] = "\uD83C\uDFCB\uD83C\uDFFB", + [":weight_lifter::skin-tone-2:"] = "\uD83C\uDFCB\uD83C\uDFFC", + [":weight_lifter::skin-tone-3:"] = "\uD83C\uDFCB\uD83C\uDFFD", + [":weight_lifter::skin-tone-4:"] = "\uD83C\uDFCB\uD83C\uDFFE", + [":weight_lifter::skin-tone-5:"] = "\uD83C\uDFCB\uD83C\uDFFF", + [":weight_lifter_tone1:"] = "\uD83C\uDFCB\uD83C\uDFFB", + [":weight_lifter_tone2:"] = "\uD83C\uDFCB\uD83C\uDFFC", + [":weight_lifter_tone3:"] = "\uD83C\uDFCB\uD83C\uDFFD", + [":weight_lifter_tone4:"] = "\uD83C\uDFCB\uD83C\uDFFE", + [":weight_lifter_tone5:"] = "\uD83C\uDFCB\uD83C\uDFFF", + [":whale2:"] = "\uD83D\uDC0B", + [":whale:"] = "\uD83D\uDC33", + [":wheel_of_dharma:"] = "☸️", + [":wheelchair:"] = "♿", + [":whisky:"] = "\uD83E\uDD43", + [":white_check_mark:"] = "✅", + [":white_circle:"] = "⚪", + [":white_flower:"] = "\uD83D\uDCAE", + [":white_frowning_face:"] = "☹️", + [":white_heart:"] = "\uD83E\uDD0D", + [":white_large_square:"] = "⬜", + [":white_medium_small_square:"] = "◽", + [":white_medium_square:"] = "◻️", + [":white_small_square:"] = "▫️", + [":white_square_button:"] = "\uD83D\uDD33", + [":white_sun_behind_cloud:"] = "\uD83C\uDF25️", + [":white_sun_behind_cloud_with_rain:"] = "\uD83C\uDF26️", + [":white_sun_cloud:"] = "\uD83C\uDF25️", + [":white_sun_rain_cloud:"] = "\uD83C\uDF26️", + [":white_sun_small_cloud:"] = "\uD83C\uDF24️", + [":white_sun_with_small_cloud:"] = "\uD83C\uDF24️", + [":wilted_flower:"] = "\uD83E\uDD40", + [":wilted_rose:"] = "\uD83E\uDD40", + [":wind_blowing_face:"] = "\uD83C\uDF2C️", + [":wind_chime:"] = "\uD83C\uDF90", + [":wine_glass:"] = "\uD83C\uDF77", + [":wink:"] = "\uD83D\uDE09", + [":wolf:"] = "\uD83D\uDC3A", + [":woman:"] = "\uD83D\uDC69", + [":woman::skin-tone-1:"] = "\uD83D\uDC69\uD83C\uDFFB", + [":woman::skin-tone-2:"] = "\uD83D\uDC69\uD83C\uDFFC", + [":woman::skin-tone-3:"] = "\uD83D\uDC69\uD83C\uDFFD", + [":woman::skin-tone-4:"] = "\uD83D\uDC69\uD83C\uDFFE", + [":woman::skin-tone-5:"] = "\uD83D\uDC69\uD83C\uDFFF", + [":woman_artist:"] = "\uD83D\uDC69\u200D\uD83C\uDFA8", + [":woman_artist::skin-tone-1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDFA8", + [":woman_artist::skin-tone-2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDFA8", + [":woman_artist::skin-tone-3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDFA8", + [":woman_artist::skin-tone-4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDFA8", + [":woman_artist::skin-tone-5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDFA8", + [":woman_artist_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDFA8", + [":woman_artist_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDFA8", + [":woman_artist_medium_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDFA8", + [":woman_artist_medium_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDFA8", + [":woman_artist_medium_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDFA8", + [":woman_artist_tone1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDFA8", + [":woman_artist_tone2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDFA8", + [":woman_artist_tone3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDFA8", + [":woman_artist_tone4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDFA8", + [":woman_artist_tone5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDFA8", + [":woman_astronaut:"] = "\uD83D\uDC69\u200D\uD83D\uDE80", + [":woman_astronaut::skin-tone-1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDE80", + [":woman_astronaut::skin-tone-2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDE80", + [":woman_astronaut::skin-tone-3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDE80", + [":woman_astronaut::skin-tone-4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDE80", + [":woman_astronaut::skin-tone-5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDE80", + [":woman_astronaut_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDE80", + [":woman_astronaut_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDE80", + [":woman_astronaut_medium_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDE80", + [":woman_astronaut_medium_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDE80", + [":woman_astronaut_medium_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDE80", + [":woman_astronaut_tone1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDE80", + [":woman_astronaut_tone2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDE80", + [":woman_astronaut_tone3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDE80", + [":woman_astronaut_tone4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDE80", + [":woman_astronaut_tone5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDE80", + [":woman_bald:"] = "\uD83D\uDC69\u200D\uD83E\uDDB2", + [":woman_bald::skin-tone-1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDB2", + [":woman_bald::skin-tone-2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDB2", + [":woman_bald::skin-tone-3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDB2", + [":woman_bald::skin-tone-4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDB2", + [":woman_bald::skin-tone-5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDB2", + [":woman_bald_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDB2", + [":woman_bald_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDB2", + [":woman_bald_medium_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDB2", + [":woman_bald_medium_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDB2", + [":woman_bald_medium_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDB2", + [":woman_bald_tone1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDB2", + [":woman_bald_tone2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDB2", + [":woman_bald_tone3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDB2", + [":woman_bald_tone4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDB2", + [":woman_bald_tone5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDB2", + [":woman_biking:"] = "\uD83D\uDEB4\u200D♀️", + [":woman_biking::skin-tone-1:"] = "\uD83D\uDEB4\uD83C\uDFFB\u200D♀️", + [":woman_biking::skin-tone-2:"] = "\uD83D\uDEB4\uD83C\uDFFC\u200D♀️", + [":woman_biking::skin-tone-3:"] = "\uD83D\uDEB4\uD83C\uDFFD\u200D♀️", + [":woman_biking::skin-tone-4:"] = "\uD83D\uDEB4\uD83C\uDFFE\u200D♀️", + [":woman_biking::skin-tone-5:"] = "\uD83D\uDEB4\uD83C\uDFFF\u200D♀️", + [":woman_biking_dark_skin_tone:"] = "\uD83D\uDEB4\uD83C\uDFFF\u200D♀️", + [":woman_biking_light_skin_tone:"] = "\uD83D\uDEB4\uD83C\uDFFB\u200D♀️", + [":woman_biking_medium_dark_skin_tone:"] = "\uD83D\uDEB4\uD83C\uDFFE\u200D♀️", + [":woman_biking_medium_light_skin_tone:"] = "\uD83D\uDEB4\uD83C\uDFFC\u200D♀️", + [":woman_biking_medium_skin_tone:"] = "\uD83D\uDEB4\uD83C\uDFFD\u200D♀️", + [":woman_biking_tone1:"] = "\uD83D\uDEB4\uD83C\uDFFB\u200D♀️", + [":woman_biking_tone2:"] = "\uD83D\uDEB4\uD83C\uDFFC\u200D♀️", + [":woman_biking_tone3:"] = "\uD83D\uDEB4\uD83C\uDFFD\u200D♀️", + [":woman_biking_tone4:"] = "\uD83D\uDEB4\uD83C\uDFFE\u200D♀️", + [":woman_biking_tone5:"] = "\uD83D\uDEB4\uD83C\uDFFF\u200D♀️", + [":woman_bouncing_ball:"] = "⛹️\u200D♀️", + [":woman_bouncing_ball::skin-tone-1:"] = "⛹\uD83C\uDFFB\u200D♀️", + [":woman_bouncing_ball::skin-tone-2:"] = "⛹\uD83C\uDFFC\u200D♀️", + [":woman_bouncing_ball::skin-tone-3:"] = "⛹\uD83C\uDFFD\u200D♀️", + [":woman_bouncing_ball::skin-tone-4:"] = "⛹\uD83C\uDFFE\u200D♀️", + [":woman_bouncing_ball::skin-tone-5:"] = "⛹\uD83C\uDFFF\u200D♀️", + [":woman_bouncing_ball_dark_skin_tone:"] = "⛹\uD83C\uDFFF\u200D♀️", + [":woman_bouncing_ball_light_skin_tone:"] = "⛹\uD83C\uDFFB\u200D♀️", + [":woman_bouncing_ball_medium_dark_skin_tone:"] = "⛹\uD83C\uDFFE\u200D♀️", + [":woman_bouncing_ball_medium_light_skin_tone:"] = "⛹\uD83C\uDFFC\u200D♀️", + [":woman_bouncing_ball_medium_skin_tone:"] = "⛹\uD83C\uDFFD\u200D♀️", + [":woman_bouncing_ball_tone1:"] = "⛹\uD83C\uDFFB\u200D♀️", + [":woman_bouncing_ball_tone2:"] = "⛹\uD83C\uDFFC\u200D♀️", + [":woman_bouncing_ball_tone3:"] = "⛹\uD83C\uDFFD\u200D♀️", + [":woman_bouncing_ball_tone4:"] = "⛹\uD83C\uDFFE\u200D♀️", + [":woman_bouncing_ball_tone5:"] = "⛹\uD83C\uDFFF\u200D♀️", + [":woman_bowing:"] = "\uD83D\uDE47\u200D♀️", + [":woman_bowing::skin-tone-1:"] = "\uD83D\uDE47\uD83C\uDFFB\u200D♀️", + [":woman_bowing::skin-tone-2:"] = "\uD83D\uDE47\uD83C\uDFFC\u200D♀️", + [":woman_bowing::skin-tone-3:"] = "\uD83D\uDE47\uD83C\uDFFD\u200D♀️", + [":woman_bowing::skin-tone-4:"] = "\uD83D\uDE47\uD83C\uDFFE\u200D♀️", + [":woman_bowing::skin-tone-5:"] = "\uD83D\uDE47\uD83C\uDFFF\u200D♀️", + [":woman_bowing_dark_skin_tone:"] = "\uD83D\uDE47\uD83C\uDFFF\u200D♀️", + [":woman_bowing_light_skin_tone:"] = "\uD83D\uDE47\uD83C\uDFFB\u200D♀️", + [":woman_bowing_medium_dark_skin_tone:"] = "\uD83D\uDE47\uD83C\uDFFE\u200D♀️", + [":woman_bowing_medium_light_skin_tone:"] = "\uD83D\uDE47\uD83C\uDFFC\u200D♀️", + [":woman_bowing_medium_skin_tone:"] = "\uD83D\uDE47\uD83C\uDFFD\u200D♀️", + [":woman_bowing_tone1:"] = "\uD83D\uDE47\uD83C\uDFFB\u200D♀️", + [":woman_bowing_tone2:"] = "\uD83D\uDE47\uD83C\uDFFC\u200D♀️", + [":woman_bowing_tone3:"] = "\uD83D\uDE47\uD83C\uDFFD\u200D♀️", + [":woman_bowing_tone4:"] = "\uD83D\uDE47\uD83C\uDFFE\u200D♀️", + [":woman_bowing_tone5:"] = "\uD83D\uDE47\uD83C\uDFFF\u200D♀️", + [":woman_cartwheeling:"] = "\uD83E\uDD38\u200D♀️", + [":woman_cartwheeling::skin-tone-1:"] = "\uD83E\uDD38\uD83C\uDFFB\u200D♀️", + [":woman_cartwheeling::skin-tone-2:"] = "\uD83E\uDD38\uD83C\uDFFC\u200D♀️", + [":woman_cartwheeling::skin-tone-3:"] = "\uD83E\uDD38\uD83C\uDFFD\u200D♀️", + [":woman_cartwheeling::skin-tone-4:"] = "\uD83E\uDD38\uD83C\uDFFE\u200D♀️", + [":woman_cartwheeling::skin-tone-5:"] = "\uD83E\uDD38\uD83C\uDFFF\u200D♀️", + [":woman_cartwheeling_dark_skin_tone:"] = "\uD83E\uDD38\uD83C\uDFFF\u200D♀️", + [":woman_cartwheeling_light_skin_tone:"] = "\uD83E\uDD38\uD83C\uDFFB\u200D♀️", + [":woman_cartwheeling_medium_dark_skin_tone:"] = "\uD83E\uDD38\uD83C\uDFFE\u200D♀️", + [":woman_cartwheeling_medium_light_skin_tone:"] = "\uD83E\uDD38\uD83C\uDFFC\u200D♀️", + [":woman_cartwheeling_medium_skin_tone:"] = "\uD83E\uDD38\uD83C\uDFFD\u200D♀️", + [":woman_cartwheeling_tone1:"] = "\uD83E\uDD38\uD83C\uDFFB\u200D♀️", + [":woman_cartwheeling_tone2:"] = "\uD83E\uDD38\uD83C\uDFFC\u200D♀️", + [":woman_cartwheeling_tone3:"] = "\uD83E\uDD38\uD83C\uDFFD\u200D♀️", + [":woman_cartwheeling_tone4:"] = "\uD83E\uDD38\uD83C\uDFFE\u200D♀️", + [":woman_cartwheeling_tone5:"] = "\uD83E\uDD38\uD83C\uDFFF\u200D♀️", + [":woman_climbing:"] = "\uD83E\uDDD7\u200D♀️", + [":woman_climbing::skin-tone-1:"] = "\uD83E\uDDD7\uD83C\uDFFB\u200D♀️", + [":woman_climbing::skin-tone-2:"] = "\uD83E\uDDD7\uD83C\uDFFC\u200D♀️", + [":woman_climbing::skin-tone-3:"] = "\uD83E\uDDD7\uD83C\uDFFD\u200D♀️", + [":woman_climbing::skin-tone-4:"] = "\uD83E\uDDD7\uD83C\uDFFE\u200D♀️", + [":woman_climbing::skin-tone-5:"] = "\uD83E\uDDD7\uD83C\uDFFF\u200D♀️", + [":woman_climbing_dark_skin_tone:"] = "\uD83E\uDDD7\uD83C\uDFFF\u200D♀️", + [":woman_climbing_light_skin_tone:"] = "\uD83E\uDDD7\uD83C\uDFFB\u200D♀️", + [":woman_climbing_medium_dark_skin_tone:"] = "\uD83E\uDDD7\uD83C\uDFFE\u200D♀️", + [":woman_climbing_medium_light_skin_tone:"] = "\uD83E\uDDD7\uD83C\uDFFC\u200D♀️", + [":woman_climbing_medium_skin_tone:"] = "\uD83E\uDDD7\uD83C\uDFFD\u200D♀️", + [":woman_climbing_tone1:"] = "\uD83E\uDDD7\uD83C\uDFFB\u200D♀️", + [":woman_climbing_tone2:"] = "\uD83E\uDDD7\uD83C\uDFFC\u200D♀️", + [":woman_climbing_tone3:"] = "\uD83E\uDDD7\uD83C\uDFFD\u200D♀️", + [":woman_climbing_tone4:"] = "\uD83E\uDDD7\uD83C\uDFFE\u200D♀️", + [":woman_climbing_tone5:"] = "\uD83E\uDDD7\uD83C\uDFFF\u200D♀️", + [":woman_construction_worker:"] = "\uD83D\uDC77\u200D♀️", + [":woman_construction_worker::skin-tone-1:"] = "\uD83D\uDC77\uD83C\uDFFB\u200D♀️", + [":woman_construction_worker::skin-tone-2:"] = "\uD83D\uDC77\uD83C\uDFFC\u200D♀️", + [":woman_construction_worker::skin-tone-3:"] = "\uD83D\uDC77\uD83C\uDFFD\u200D♀️", + [":woman_construction_worker::skin-tone-4:"] = "\uD83D\uDC77\uD83C\uDFFE\u200D♀️", + [":woman_construction_worker::skin-tone-5:"] = "\uD83D\uDC77\uD83C\uDFFF\u200D♀️", + [":woman_construction_worker_dark_skin_tone:"] = "\uD83D\uDC77\uD83C\uDFFF\u200D♀️", + [":woman_construction_worker_light_skin_tone:"] = "\uD83D\uDC77\uD83C\uDFFB\u200D♀️", + [":woman_construction_worker_medium_dark_skin_tone:"] = "\uD83D\uDC77\uD83C\uDFFE\u200D♀️", + [":woman_construction_worker_medium_light_skin_tone:"] = "\uD83D\uDC77\uD83C\uDFFC\u200D♀️", + [":woman_construction_worker_medium_skin_tone:"] = "\uD83D\uDC77\uD83C\uDFFD\u200D♀️", + [":woman_construction_worker_tone1:"] = "\uD83D\uDC77\uD83C\uDFFB\u200D♀️", + [":woman_construction_worker_tone2:"] = "\uD83D\uDC77\uD83C\uDFFC\u200D♀️", + [":woman_construction_worker_tone3:"] = "\uD83D\uDC77\uD83C\uDFFD\u200D♀️", + [":woman_construction_worker_tone4:"] = "\uD83D\uDC77\uD83C\uDFFE\u200D♀️", + [":woman_construction_worker_tone5:"] = "\uD83D\uDC77\uD83C\uDFFF\u200D♀️", + [":woman_cook:"] = "\uD83D\uDC69\u200D\uD83C\uDF73", + [":woman_cook::skin-tone-1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDF73", + [":woman_cook::skin-tone-2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDF73", + [":woman_cook::skin-tone-3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDF73", + [":woman_cook::skin-tone-4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDF73", + [":woman_cook::skin-tone-5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDF73", + [":woman_cook_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDF73", + [":woman_cook_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDF73", + [":woman_cook_medium_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDF73", + [":woman_cook_medium_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDF73", + [":woman_cook_medium_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDF73", + [":woman_cook_tone1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDF73", + [":woman_cook_tone2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDF73", + [":woman_cook_tone3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDF73", + [":woman_cook_tone4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDF73", + [":woman_cook_tone5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDF73", + [":woman_curly_haired:"] = "\uD83D\uDC69\u200D\uD83E\uDDB1", + [":woman_curly_haired::skin-tone-1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDB1", + [":woman_curly_haired::skin-tone-2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDB1", + [":woman_curly_haired::skin-tone-3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDB1", + [":woman_curly_haired::skin-tone-4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDB1", + [":woman_curly_haired::skin-tone-5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDB1", + [":woman_curly_haired_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDB1", + [":woman_curly_haired_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDB1", + [":woman_curly_haired_medium_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDB1", + [":woman_curly_haired_medium_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDB1", + [":woman_curly_haired_medium_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDB1", + [":woman_curly_haired_tone1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDB1", + [":woman_curly_haired_tone2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDB1", + [":woman_curly_haired_tone3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDB1", + [":woman_curly_haired_tone4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDB1", + [":woman_curly_haired_tone5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDB1", + [":woman_detective:"] = "\uD83D\uDD75️\u200D♀️", + [":woman_detective::skin-tone-1:"] = "\uD83D\uDD75\uD83C\uDFFB\u200D♀️", + [":woman_detective::skin-tone-2:"] = "\uD83D\uDD75\uD83C\uDFFC\u200D♀️", + [":woman_detective::skin-tone-3:"] = "\uD83D\uDD75\uD83C\uDFFD\u200D♀️", + [":woman_detective::skin-tone-4:"] = "\uD83D\uDD75\uD83C\uDFFE\u200D♀️", + [":woman_detective::skin-tone-5:"] = "\uD83D\uDD75\uD83C\uDFFF\u200D♀️", + [":woman_detective_dark_skin_tone:"] = "\uD83D\uDD75\uD83C\uDFFF\u200D♀️", + [":woman_detective_light_skin_tone:"] = "\uD83D\uDD75\uD83C\uDFFB\u200D♀️", + [":woman_detective_medium_dark_skin_tone:"] = "\uD83D\uDD75\uD83C\uDFFE\u200D♀️", + [":woman_detective_medium_light_skin_tone:"] = "\uD83D\uDD75\uD83C\uDFFC\u200D♀️", + [":woman_detective_medium_skin_tone:"] = "\uD83D\uDD75\uD83C\uDFFD\u200D♀️", + [":woman_detective_tone1:"] = "\uD83D\uDD75\uD83C\uDFFB\u200D♀️", + [":woman_detective_tone2:"] = "\uD83D\uDD75\uD83C\uDFFC\u200D♀️", + [":woman_detective_tone3:"] = "\uD83D\uDD75\uD83C\uDFFD\u200D♀️", + [":woman_detective_tone4:"] = "\uD83D\uDD75\uD83C\uDFFE\u200D♀️", + [":woman_detective_tone5:"] = "\uD83D\uDD75\uD83C\uDFFF\u200D♀️", + [":woman_elf:"] = "\uD83E\uDDDD\u200D♀️", + [":woman_elf::skin-tone-1:"] = "\uD83E\uDDDD\uD83C\uDFFB\u200D♀️", + [":woman_elf::skin-tone-2:"] = "\uD83E\uDDDD\uD83C\uDFFC\u200D♀️", + [":woman_elf::skin-tone-3:"] = "\uD83E\uDDDD\uD83C\uDFFD\u200D♀️", + [":woman_elf::skin-tone-4:"] = "\uD83E\uDDDD\uD83C\uDFFE\u200D♀️", + [":woman_elf::skin-tone-5:"] = "\uD83E\uDDDD\uD83C\uDFFF\u200D♀️", + [":woman_elf_dark_skin_tone:"] = "\uD83E\uDDDD\uD83C\uDFFF\u200D♀️", + [":woman_elf_light_skin_tone:"] = "\uD83E\uDDDD\uD83C\uDFFB\u200D♀️", + [":woman_elf_medium_dark_skin_tone:"] = "\uD83E\uDDDD\uD83C\uDFFE\u200D♀️", + [":woman_elf_medium_light_skin_tone:"] = "\uD83E\uDDDD\uD83C\uDFFC\u200D♀️", + [":woman_elf_medium_skin_tone:"] = "\uD83E\uDDDD\uD83C\uDFFD\u200D♀️", + [":woman_elf_tone1:"] = "\uD83E\uDDDD\uD83C\uDFFB\u200D♀️", + [":woman_elf_tone2:"] = "\uD83E\uDDDD\uD83C\uDFFC\u200D♀️", + [":woman_elf_tone3:"] = "\uD83E\uDDDD\uD83C\uDFFD\u200D♀️", + [":woman_elf_tone4:"] = "\uD83E\uDDDD\uD83C\uDFFE\u200D♀️", + [":woman_elf_tone5:"] = "\uD83E\uDDDD\uD83C\uDFFF\u200D♀️", + [":woman_facepalming:"] = "\uD83E\uDD26\u200D♀️", + [":woman_facepalming::skin-tone-1:"] = "\uD83E\uDD26\uD83C\uDFFB\u200D♀️", + [":woman_facepalming::skin-tone-2:"] = "\uD83E\uDD26\uD83C\uDFFC\u200D♀️", + [":woman_facepalming::skin-tone-3:"] = "\uD83E\uDD26\uD83C\uDFFD\u200D♀️", + [":woman_facepalming::skin-tone-4:"] = "\uD83E\uDD26\uD83C\uDFFE\u200D♀️", + [":woman_facepalming::skin-tone-5:"] = "\uD83E\uDD26\uD83C\uDFFF\u200D♀️", + [":woman_facepalming_dark_skin_tone:"] = "\uD83E\uDD26\uD83C\uDFFF\u200D♀️", + [":woman_facepalming_light_skin_tone:"] = "\uD83E\uDD26\uD83C\uDFFB\u200D♀️", + [":woman_facepalming_medium_dark_skin_tone:"] = "\uD83E\uDD26\uD83C\uDFFE\u200D♀️", + [":woman_facepalming_medium_light_skin_tone:"] = "\uD83E\uDD26\uD83C\uDFFC\u200D♀️", + [":woman_facepalming_medium_skin_tone:"] = "\uD83E\uDD26\uD83C\uDFFD\u200D♀️", + [":woman_facepalming_tone1:"] = "\uD83E\uDD26\uD83C\uDFFB\u200D♀️", + [":woman_facepalming_tone2:"] = "\uD83E\uDD26\uD83C\uDFFC\u200D♀️", + [":woman_facepalming_tone3:"] = "\uD83E\uDD26\uD83C\uDFFD\u200D♀️", + [":woman_facepalming_tone4:"] = "\uD83E\uDD26\uD83C\uDFFE\u200D♀️", + [":woman_facepalming_tone5:"] = "\uD83E\uDD26\uD83C\uDFFF\u200D♀️", + [":woman_factory_worker:"] = "\uD83D\uDC69\u200D\uD83C\uDFED", + [":woman_factory_worker::skin-tone-1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDFED", + [":woman_factory_worker::skin-tone-2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDFED", + [":woman_factory_worker::skin-tone-3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDFED", + [":woman_factory_worker::skin-tone-4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDFED", + [":woman_factory_worker::skin-tone-5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDFED", + [":woman_factory_worker_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDFED", + [":woman_factory_worker_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDFED", + [":woman_factory_worker_medium_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDFED", + [":woman_factory_worker_medium_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDFED", + [":woman_factory_worker_medium_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDFED", + [":woman_factory_worker_tone1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDFED", + [":woman_factory_worker_tone2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDFED", + [":woman_factory_worker_tone3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDFED", + [":woman_factory_worker_tone4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDFED", + [":woman_factory_worker_tone5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDFED", + [":woman_fairy:"] = "\uD83E\uDDDA\u200D♀️", + [":woman_fairy::skin-tone-1:"] = "\uD83E\uDDDA\uD83C\uDFFB\u200D♀️", + [":woman_fairy::skin-tone-2:"] = "\uD83E\uDDDA\uD83C\uDFFC\u200D♀️", + [":woman_fairy::skin-tone-3:"] = "\uD83E\uDDDA\uD83C\uDFFD\u200D♀️", + [":woman_fairy::skin-tone-4:"] = "\uD83E\uDDDA\uD83C\uDFFE\u200D♀️", + [":woman_fairy::skin-tone-5:"] = "\uD83E\uDDDA\uD83C\uDFFF\u200D♀️", + [":woman_fairy_dark_skin_tone:"] = "\uD83E\uDDDA\uD83C\uDFFF\u200D♀️", + [":woman_fairy_light_skin_tone:"] = "\uD83E\uDDDA\uD83C\uDFFB\u200D♀️", + [":woman_fairy_medium_dark_skin_tone:"] = "\uD83E\uDDDA\uD83C\uDFFE\u200D♀️", + [":woman_fairy_medium_light_skin_tone:"] = "\uD83E\uDDDA\uD83C\uDFFC\u200D♀️", + [":woman_fairy_medium_skin_tone:"] = "\uD83E\uDDDA\uD83C\uDFFD\u200D♀️", + [":woman_fairy_tone1:"] = "\uD83E\uDDDA\uD83C\uDFFB\u200D♀️", + [":woman_fairy_tone2:"] = "\uD83E\uDDDA\uD83C\uDFFC\u200D♀️", + [":woman_fairy_tone3:"] = "\uD83E\uDDDA\uD83C\uDFFD\u200D♀️", + [":woman_fairy_tone4:"] = "\uD83E\uDDDA\uD83C\uDFFE\u200D♀️", + [":woman_fairy_tone5:"] = "\uD83E\uDDDA\uD83C\uDFFF\u200D♀️", + [":woman_farmer:"] = "\uD83D\uDC69\u200D\uD83C\uDF3E", + [":woman_farmer::skin-tone-1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDF3E", + [":woman_farmer::skin-tone-2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDF3E", + [":woman_farmer::skin-tone-3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDF3E", + [":woman_farmer::skin-tone-4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDF3E", + [":woman_farmer::skin-tone-5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDF3E", + [":woman_farmer_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDF3E", + [":woman_farmer_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDF3E", + [":woman_farmer_medium_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDF3E", + [":woman_farmer_medium_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDF3E", + [":woman_farmer_medium_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDF3E", + [":woman_farmer_tone1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDF3E", + [":woman_farmer_tone2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDF3E", + [":woman_farmer_tone3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDF3E", + [":woman_farmer_tone4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDF3E", + [":woman_farmer_tone5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDF3E", + [":woman_firefighter:"] = "\uD83D\uDC69\u200D\uD83D\uDE92", + [":woman_firefighter::skin-tone-1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDE92", + [":woman_firefighter::skin-tone-2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDE92", + [":woman_firefighter::skin-tone-3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDE92", + [":woman_firefighter::skin-tone-4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDE92", + [":woman_firefighter::skin-tone-5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDE92", + [":woman_firefighter_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDE92", + [":woman_firefighter_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDE92", + [":woman_firefighter_medium_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDE92", + [":woman_firefighter_medium_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDE92", + [":woman_firefighter_medium_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDE92", + [":woman_firefighter_tone1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDE92", + [":woman_firefighter_tone2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDE92", + [":woman_firefighter_tone3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDE92", + [":woman_firefighter_tone4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDE92", + [":woman_firefighter_tone5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDE92", + [":woman_frowning:"] = "\uD83D\uDE4D\u200D♀️", + [":woman_frowning::skin-tone-1:"] = "\uD83D\uDE4D\uD83C\uDFFB\u200D♀️", + [":woman_frowning::skin-tone-2:"] = "\uD83D\uDE4D\uD83C\uDFFC\u200D♀️", + [":woman_frowning::skin-tone-3:"] = "\uD83D\uDE4D\uD83C\uDFFD\u200D♀️", + [":woman_frowning::skin-tone-4:"] = "\uD83D\uDE4D\uD83C\uDFFE\u200D♀️", + [":woman_frowning::skin-tone-5:"] = "\uD83D\uDE4D\uD83C\uDFFF\u200D♀️", + [":woman_frowning_dark_skin_tone:"] = "\uD83D\uDE4D\uD83C\uDFFF\u200D♀️", + [":woman_frowning_light_skin_tone:"] = "\uD83D\uDE4D\uD83C\uDFFB\u200D♀️", + [":woman_frowning_medium_dark_skin_tone:"] = "\uD83D\uDE4D\uD83C\uDFFE\u200D♀️", + [":woman_frowning_medium_light_skin_tone:"] = "\uD83D\uDE4D\uD83C\uDFFC\u200D♀️", + [":woman_frowning_medium_skin_tone:"] = "\uD83D\uDE4D\uD83C\uDFFD\u200D♀️", + [":woman_frowning_tone1:"] = "\uD83D\uDE4D\uD83C\uDFFB\u200D♀️", + [":woman_frowning_tone2:"] = "\uD83D\uDE4D\uD83C\uDFFC\u200D♀️", + [":woman_frowning_tone3:"] = "\uD83D\uDE4D\uD83C\uDFFD\u200D♀️", + [":woman_frowning_tone4:"] = "\uD83D\uDE4D\uD83C\uDFFE\u200D♀️", + [":woman_frowning_tone5:"] = "\uD83D\uDE4D\uD83C\uDFFF\u200D♀️", + [":woman_genie:"] = "\uD83E\uDDDE\u200D♀️", + [":woman_gesturing_no:"] = "\uD83D\uDE45\u200D♀️", + [":woman_gesturing_no::skin-tone-1:"] = "\uD83D\uDE45\uD83C\uDFFB\u200D♀️", + [":woman_gesturing_no::skin-tone-2:"] = "\uD83D\uDE45\uD83C\uDFFC\u200D♀️", + [":woman_gesturing_no::skin-tone-3:"] = "\uD83D\uDE45\uD83C\uDFFD\u200D♀️", + [":woman_gesturing_no::skin-tone-4:"] = "\uD83D\uDE45\uD83C\uDFFE\u200D♀️", + [":woman_gesturing_no::skin-tone-5:"] = "\uD83D\uDE45\uD83C\uDFFF\u200D♀️", + [":woman_gesturing_no_dark_skin_tone:"] = "\uD83D\uDE45\uD83C\uDFFF\u200D♀️", + [":woman_gesturing_no_light_skin_tone:"] = "\uD83D\uDE45\uD83C\uDFFB\u200D♀️", + [":woman_gesturing_no_medium_dark_skin_tone:"] = "\uD83D\uDE45\uD83C\uDFFE\u200D♀️", + [":woman_gesturing_no_medium_light_skin_tone:"] = "\uD83D\uDE45\uD83C\uDFFC\u200D♀️", + [":woman_gesturing_no_medium_skin_tone:"] = "\uD83D\uDE45\uD83C\uDFFD\u200D♀️", + [":woman_gesturing_no_tone1:"] = "\uD83D\uDE45\uD83C\uDFFB\u200D♀️", + [":woman_gesturing_no_tone2:"] = "\uD83D\uDE45\uD83C\uDFFC\u200D♀️", + [":woman_gesturing_no_tone3:"] = "\uD83D\uDE45\uD83C\uDFFD\u200D♀️", + [":woman_gesturing_no_tone4:"] = "\uD83D\uDE45\uD83C\uDFFE\u200D♀️", + [":woman_gesturing_no_tone5:"] = "\uD83D\uDE45\uD83C\uDFFF\u200D♀️", + [":woman_gesturing_ok:"] = "\uD83D\uDE46\u200D♀️", + [":woman_gesturing_ok::skin-tone-1:"] = "\uD83D\uDE46\uD83C\uDFFB\u200D♀️", + [":woman_gesturing_ok::skin-tone-2:"] = "\uD83D\uDE46\uD83C\uDFFC\u200D♀️", + [":woman_gesturing_ok::skin-tone-3:"] = "\uD83D\uDE46\uD83C\uDFFD\u200D♀️", + [":woman_gesturing_ok::skin-tone-4:"] = "\uD83D\uDE46\uD83C\uDFFE\u200D♀️", + [":woman_gesturing_ok::skin-tone-5:"] = "\uD83D\uDE46\uD83C\uDFFF\u200D♀️", + [":woman_gesturing_ok_dark_skin_tone:"] = "\uD83D\uDE46\uD83C\uDFFF\u200D♀️", + [":woman_gesturing_ok_light_skin_tone:"] = "\uD83D\uDE46\uD83C\uDFFB\u200D♀️", + [":woman_gesturing_ok_medium_dark_skin_tone:"] = "\uD83D\uDE46\uD83C\uDFFE\u200D♀️", + [":woman_gesturing_ok_medium_light_skin_tone:"] = "\uD83D\uDE46\uD83C\uDFFC\u200D♀️", + [":woman_gesturing_ok_medium_skin_tone:"] = "\uD83D\uDE46\uD83C\uDFFD\u200D♀️", + [":woman_gesturing_ok_tone1:"] = "\uD83D\uDE46\uD83C\uDFFB\u200D♀️", + [":woman_gesturing_ok_tone2:"] = "\uD83D\uDE46\uD83C\uDFFC\u200D♀️", + [":woman_gesturing_ok_tone3:"] = "\uD83D\uDE46\uD83C\uDFFD\u200D♀️", + [":woman_gesturing_ok_tone4:"] = "\uD83D\uDE46\uD83C\uDFFE\u200D♀️", + [":woman_gesturing_ok_tone5:"] = "\uD83D\uDE46\uD83C\uDFFF\u200D♀️", + [":woman_getting_face_massage:"] = "\uD83D\uDC86\u200D♀️", + [":woman_getting_face_massage::skin-tone-1:"] = "\uD83D\uDC86\uD83C\uDFFB\u200D♀️", + [":woman_getting_face_massage::skin-tone-2:"] = "\uD83D\uDC86\uD83C\uDFFC\u200D♀️", + [":woman_getting_face_massage::skin-tone-3:"] = "\uD83D\uDC86\uD83C\uDFFD\u200D♀️", + [":woman_getting_face_massage::skin-tone-4:"] = "\uD83D\uDC86\uD83C\uDFFE\u200D♀️", + [":woman_getting_face_massage::skin-tone-5:"] = "\uD83D\uDC86\uD83C\uDFFF\u200D♀️", + [":woman_getting_face_massage_dark_skin_tone:"] = "\uD83D\uDC86\uD83C\uDFFF\u200D♀️", + [":woman_getting_face_massage_light_skin_tone:"] = "\uD83D\uDC86\uD83C\uDFFB\u200D♀️", + [":woman_getting_face_massage_medium_dark_skin_tone:"] = "\uD83D\uDC86\uD83C\uDFFE\u200D♀️", + [":woman_getting_face_massage_medium_light_skin_tone:"] = "\uD83D\uDC86\uD83C\uDFFC\u200D♀️", + [":woman_getting_face_massage_medium_skin_tone:"] = "\uD83D\uDC86\uD83C\uDFFD\u200D♀️", + [":woman_getting_face_massage_tone1:"] = "\uD83D\uDC86\uD83C\uDFFB\u200D♀️", + [":woman_getting_face_massage_tone2:"] = "\uD83D\uDC86\uD83C\uDFFC\u200D♀️", + [":woman_getting_face_massage_tone3:"] = "\uD83D\uDC86\uD83C\uDFFD\u200D♀️", + [":woman_getting_face_massage_tone4:"] = "\uD83D\uDC86\uD83C\uDFFE\u200D♀️", + [":woman_getting_face_massage_tone5:"] = "\uD83D\uDC86\uD83C\uDFFF\u200D♀️", + [":woman_getting_haircut:"] = "\uD83D\uDC87\u200D♀️", + [":woman_getting_haircut::skin-tone-1:"] = "\uD83D\uDC87\uD83C\uDFFB\u200D♀️", + [":woman_getting_haircut::skin-tone-2:"] = "\uD83D\uDC87\uD83C\uDFFC\u200D♀️", + [":woman_getting_haircut::skin-tone-3:"] = "\uD83D\uDC87\uD83C\uDFFD\u200D♀️", + [":woman_getting_haircut::skin-tone-4:"] = "\uD83D\uDC87\uD83C\uDFFE\u200D♀️", + [":woman_getting_haircut::skin-tone-5:"] = "\uD83D\uDC87\uD83C\uDFFF\u200D♀️", + [":woman_getting_haircut_dark_skin_tone:"] = "\uD83D\uDC87\uD83C\uDFFF\u200D♀️", + [":woman_getting_haircut_light_skin_tone:"] = "\uD83D\uDC87\uD83C\uDFFB\u200D♀️", + [":woman_getting_haircut_medium_dark_skin_tone:"] = "\uD83D\uDC87\uD83C\uDFFE\u200D♀️", + [":woman_getting_haircut_medium_light_skin_tone:"] = "\uD83D\uDC87\uD83C\uDFFC\u200D♀️", + [":woman_getting_haircut_medium_skin_tone:"] = "\uD83D\uDC87\uD83C\uDFFD\u200D♀️", + [":woman_getting_haircut_tone1:"] = "\uD83D\uDC87\uD83C\uDFFB\u200D♀️", + [":woman_getting_haircut_tone2:"] = "\uD83D\uDC87\uD83C\uDFFC\u200D♀️", + [":woman_getting_haircut_tone3:"] = "\uD83D\uDC87\uD83C\uDFFD\u200D♀️", + [":woman_getting_haircut_tone4:"] = "\uD83D\uDC87\uD83C\uDFFE\u200D♀️", + [":woman_getting_haircut_tone5:"] = "\uD83D\uDC87\uD83C\uDFFF\u200D♀️", + [":woman_golfing:"] = "\uD83C\uDFCC️\u200D♀️", + [":woman_golfing::skin-tone-1:"] = "\uD83C\uDFCC\uD83C\uDFFB\u200D♀️", + [":woman_golfing::skin-tone-2:"] = "\uD83C\uDFCC\uD83C\uDFFC\u200D♀️", + [":woman_golfing::skin-tone-3:"] = "\uD83C\uDFCC\uD83C\uDFFD\u200D♀️", + [":woman_golfing::skin-tone-4:"] = "\uD83C\uDFCC\uD83C\uDFFE\u200D♀️", + [":woman_golfing::skin-tone-5:"] = "\uD83C\uDFCC\uD83C\uDFFF\u200D♀️", + [":woman_golfing_dark_skin_tone:"] = "\uD83C\uDFCC\uD83C\uDFFF\u200D♀️", + [":woman_golfing_light_skin_tone:"] = "\uD83C\uDFCC\uD83C\uDFFB\u200D♀️", + [":woman_golfing_medium_dark_skin_tone:"] = "\uD83C\uDFCC\uD83C\uDFFE\u200D♀️", + [":woman_golfing_medium_light_skin_tone:"] = "\uD83C\uDFCC\uD83C\uDFFC\u200D♀️", + [":woman_golfing_medium_skin_tone:"] = "\uD83C\uDFCC\uD83C\uDFFD\u200D♀️", + [":woman_golfing_tone1:"] = "\uD83C\uDFCC\uD83C\uDFFB\u200D♀️", + [":woman_golfing_tone2:"] = "\uD83C\uDFCC\uD83C\uDFFC\u200D♀️", + [":woman_golfing_tone3:"] = "\uD83C\uDFCC\uD83C\uDFFD\u200D♀️", + [":woman_golfing_tone4:"] = "\uD83C\uDFCC\uD83C\uDFFE\u200D♀️", + [":woman_golfing_tone5:"] = "\uD83C\uDFCC\uD83C\uDFFF\u200D♀️", + [":woman_guard:"] = "\uD83D\uDC82\u200D♀️", + [":woman_guard::skin-tone-1:"] = "\uD83D\uDC82\uD83C\uDFFB\u200D♀️", + [":woman_guard::skin-tone-2:"] = "\uD83D\uDC82\uD83C\uDFFC\u200D♀️", + [":woman_guard::skin-tone-3:"] = "\uD83D\uDC82\uD83C\uDFFD\u200D♀️", + [":woman_guard::skin-tone-4:"] = "\uD83D\uDC82\uD83C\uDFFE\u200D♀️", + [":woman_guard::skin-tone-5:"] = "\uD83D\uDC82\uD83C\uDFFF\u200D♀️", + [":woman_guard_dark_skin_tone:"] = "\uD83D\uDC82\uD83C\uDFFF\u200D♀️", + [":woman_guard_light_skin_tone:"] = "\uD83D\uDC82\uD83C\uDFFB\u200D♀️", + [":woman_guard_medium_dark_skin_tone:"] = "\uD83D\uDC82\uD83C\uDFFE\u200D♀️", + [":woman_guard_medium_light_skin_tone:"] = "\uD83D\uDC82\uD83C\uDFFC\u200D♀️", + [":woman_guard_medium_skin_tone:"] = "\uD83D\uDC82\uD83C\uDFFD\u200D♀️", + [":woman_guard_tone1:"] = "\uD83D\uDC82\uD83C\uDFFB\u200D♀️", + [":woman_guard_tone2:"] = "\uD83D\uDC82\uD83C\uDFFC\u200D♀️", + [":woman_guard_tone3:"] = "\uD83D\uDC82\uD83C\uDFFD\u200D♀️", + [":woman_guard_tone4:"] = "\uD83D\uDC82\uD83C\uDFFE\u200D♀️", + [":woman_guard_tone5:"] = "\uD83D\uDC82\uD83C\uDFFF\u200D♀️", + [":woman_health_worker:"] = "\uD83D\uDC69\u200D⚕️", + [":woman_health_worker::skin-tone-1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D⚕️", + [":woman_health_worker::skin-tone-2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D⚕️", + [":woman_health_worker::skin-tone-3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D⚕️", + [":woman_health_worker::skin-tone-4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D⚕️", + [":woman_health_worker::skin-tone-5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D⚕️", + [":woman_health_worker_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D⚕️", + [":woman_health_worker_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D⚕️", + [":woman_health_worker_medium_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D⚕️", + [":woman_health_worker_medium_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D⚕️", + [":woman_health_worker_medium_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D⚕️", + [":woman_health_worker_tone1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D⚕️", + [":woman_health_worker_tone2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D⚕️", + [":woman_health_worker_tone3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D⚕️", + [":woman_health_worker_tone4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D⚕️", + [":woman_health_worker_tone5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D⚕️", + [":woman_in_lotus_position:"] = "\uD83E\uDDD8\u200D♀️", + [":woman_in_lotus_position::skin-tone-1:"] = "\uD83E\uDDD8\uD83C\uDFFB\u200D♀️", + [":woman_in_lotus_position::skin-tone-2:"] = "\uD83E\uDDD8\uD83C\uDFFC\u200D♀️", + [":woman_in_lotus_position::skin-tone-3:"] = "\uD83E\uDDD8\uD83C\uDFFD\u200D♀️", + [":woman_in_lotus_position::skin-tone-4:"] = "\uD83E\uDDD8\uD83C\uDFFE\u200D♀️", + [":woman_in_lotus_position::skin-tone-5:"] = "\uD83E\uDDD8\uD83C\uDFFF\u200D♀️", + [":woman_in_lotus_position_dark_skin_tone:"] = "\uD83E\uDDD8\uD83C\uDFFF\u200D♀️", + [":woman_in_lotus_position_light_skin_tone:"] = "\uD83E\uDDD8\uD83C\uDFFB\u200D♀️", + [":woman_in_lotus_position_medium_dark_skin_tone:"] = "\uD83E\uDDD8\uD83C\uDFFE\u200D♀️", + [":woman_in_lotus_position_medium_light_skin_tone:"] = "\uD83E\uDDD8\uD83C\uDFFC\u200D♀️", + [":woman_in_lotus_position_medium_skin_tone:"] = "\uD83E\uDDD8\uD83C\uDFFD\u200D♀️", + [":woman_in_lotus_position_tone1:"] = "\uD83E\uDDD8\uD83C\uDFFB\u200D♀️", + [":woman_in_lotus_position_tone2:"] = "\uD83E\uDDD8\uD83C\uDFFC\u200D♀️", + [":woman_in_lotus_position_tone3:"] = "\uD83E\uDDD8\uD83C\uDFFD\u200D♀️", + [":woman_in_lotus_position_tone4:"] = "\uD83E\uDDD8\uD83C\uDFFE\u200D♀️", + [":woman_in_lotus_position_tone5:"] = "\uD83E\uDDD8\uD83C\uDFFF\u200D♀️", + [":woman_in_manual_wheelchair:"] = "\uD83D\uDC69\u200D\uD83E\uDDBD", + [":woman_in_manual_wheelchair::skin-tone-1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDBD", + [":woman_in_manual_wheelchair::skin-tone-2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDBD", + [":woman_in_manual_wheelchair::skin-tone-3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDBD", + [":woman_in_manual_wheelchair::skin-tone-4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDBD", + [":woman_in_manual_wheelchair::skin-tone-5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDBD", + [":woman_in_manual_wheelchair_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDBD", + [":woman_in_manual_wheelchair_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDBD", + [":woman_in_manual_wheelchair_medium_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDBD", + [":woman_in_manual_wheelchair_medium_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDBD", + [":woman_in_manual_wheelchair_medium_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDBD", + [":woman_in_manual_wheelchair_tone1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDBD", + [":woman_in_manual_wheelchair_tone2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDBD", + [":woman_in_manual_wheelchair_tone3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDBD", + [":woman_in_manual_wheelchair_tone4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDBD", + [":woman_in_manual_wheelchair_tone5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDBD", + [":woman_in_motorized_wheelchair:"] = "\uD83D\uDC69\u200D\uD83E\uDDBC", + [":woman_in_motorized_wheelchair::skin-tone-1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDBC", + [":woman_in_motorized_wheelchair::skin-tone-2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDBC", + [":woman_in_motorized_wheelchair::skin-tone-3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDBC", + [":woman_in_motorized_wheelchair::skin-tone-4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDBC", + [":woman_in_motorized_wheelchair::skin-tone-5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDBC", + [":woman_in_motorized_wheelchair_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDBC", + [":woman_in_motorized_wheelchair_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDBC", + [":woman_in_motorized_wheelchair_medium_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDBC", + [":woman_in_motorized_wheelchair_medium_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDBC", + [":woman_in_motorized_wheelchair_medium_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDBC", + [":woman_in_motorized_wheelchair_tone1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDBC", + [":woman_in_motorized_wheelchair_tone2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDBC", + [":woman_in_motorized_wheelchair_tone3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDBC", + [":woman_in_motorized_wheelchair_tone4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDBC", + [":woman_in_motorized_wheelchair_tone5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDBC", + [":woman_in_steamy_room:"] = "\uD83E\uDDD6\u200D♀️", + [":woman_in_steamy_room::skin-tone-1:"] = "\uD83E\uDDD6\uD83C\uDFFB\u200D♀️", + [":woman_in_steamy_room::skin-tone-2:"] = "\uD83E\uDDD6\uD83C\uDFFC\u200D♀️", + [":woman_in_steamy_room::skin-tone-3:"] = "\uD83E\uDDD6\uD83C\uDFFD\u200D♀️", + [":woman_in_steamy_room::skin-tone-4:"] = "\uD83E\uDDD6\uD83C\uDFFE\u200D♀️", + [":woman_in_steamy_room::skin-tone-5:"] = "\uD83E\uDDD6\uD83C\uDFFF\u200D♀️", + [":woman_in_steamy_room_dark_skin_tone:"] = "\uD83E\uDDD6\uD83C\uDFFF\u200D♀️", + [":woman_in_steamy_room_light_skin_tone:"] = "\uD83E\uDDD6\uD83C\uDFFB\u200D♀️", + [":woman_in_steamy_room_medium_dark_skin_tone:"] = "\uD83E\uDDD6\uD83C\uDFFE\u200D♀️", + [":woman_in_steamy_room_medium_light_skin_tone:"] = "\uD83E\uDDD6\uD83C\uDFFC\u200D♀️", + [":woman_in_steamy_room_medium_skin_tone:"] = "\uD83E\uDDD6\uD83C\uDFFD\u200D♀️", + [":woman_in_steamy_room_tone1:"] = "\uD83E\uDDD6\uD83C\uDFFB\u200D♀️", + [":woman_in_steamy_room_tone2:"] = "\uD83E\uDDD6\uD83C\uDFFC\u200D♀️", + [":woman_in_steamy_room_tone3:"] = "\uD83E\uDDD6\uD83C\uDFFD\u200D♀️", + [":woman_in_steamy_room_tone4:"] = "\uD83E\uDDD6\uD83C\uDFFE\u200D♀️", + [":woman_in_steamy_room_tone5:"] = "\uD83E\uDDD6\uD83C\uDFFF\u200D♀️", + [":woman_judge:"] = "\uD83D\uDC69\u200D⚖️", + [":woman_judge::skin-tone-1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D⚖️", + [":woman_judge::skin-tone-2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D⚖️", + [":woman_judge::skin-tone-3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D⚖️", + [":woman_judge::skin-tone-4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D⚖️", + [":woman_judge::skin-tone-5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D⚖️", + [":woman_judge_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D⚖️", + [":woman_judge_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D⚖️", + [":woman_judge_medium_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D⚖️", + [":woman_judge_medium_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D⚖️", + [":woman_judge_medium_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D⚖️", + [":woman_judge_tone1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D⚖️", + [":woman_judge_tone2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D⚖️", + [":woman_judge_tone3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D⚖️", + [":woman_judge_tone4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D⚖️", + [":woman_judge_tone5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D⚖️", + [":woman_juggling:"] = "\uD83E\uDD39\u200D♀️", + [":woman_juggling::skin-tone-1:"] = "\uD83E\uDD39\uD83C\uDFFB\u200D♀️", + [":woman_juggling::skin-tone-2:"] = "\uD83E\uDD39\uD83C\uDFFC\u200D♀️", + [":woman_juggling::skin-tone-3:"] = "\uD83E\uDD39\uD83C\uDFFD\u200D♀️", + [":woman_juggling::skin-tone-4:"] = "\uD83E\uDD39\uD83C\uDFFE\u200D♀️", + [":woman_juggling::skin-tone-5:"] = "\uD83E\uDD39\uD83C\uDFFF\u200D♀️", + [":woman_juggling_dark_skin_tone:"] = "\uD83E\uDD39\uD83C\uDFFF\u200D♀️", + [":woman_juggling_light_skin_tone:"] = "\uD83E\uDD39\uD83C\uDFFB\u200D♀️", + [":woman_juggling_medium_dark_skin_tone:"] = "\uD83E\uDD39\uD83C\uDFFE\u200D♀️", + [":woman_juggling_medium_light_skin_tone:"] = "\uD83E\uDD39\uD83C\uDFFC\u200D♀️", + [":woman_juggling_medium_skin_tone:"] = "\uD83E\uDD39\uD83C\uDFFD\u200D♀️", + [":woman_juggling_tone1:"] = "\uD83E\uDD39\uD83C\uDFFB\u200D♀️", + [":woman_juggling_tone2:"] = "\uD83E\uDD39\uD83C\uDFFC\u200D♀️", + [":woman_juggling_tone3:"] = "\uD83E\uDD39\uD83C\uDFFD\u200D♀️", + [":woman_juggling_tone4:"] = "\uD83E\uDD39\uD83C\uDFFE\u200D♀️", + [":woman_juggling_tone5:"] = "\uD83E\uDD39\uD83C\uDFFF\u200D♀️", + [":woman_kneeling:"] = "\uD83E\uDDCE\u200D♀️", + [":woman_kneeling::skin-tone-1:"] = "\uD83E\uDDCE\uD83C\uDFFB\u200D♀️", + [":woman_kneeling::skin-tone-2:"] = "\uD83E\uDDCE\uD83C\uDFFC\u200D♀️", + [":woman_kneeling::skin-tone-3:"] = "\uD83E\uDDCE\uD83C\uDFFD\u200D♀️", + [":woman_kneeling::skin-tone-4:"] = "\uD83E\uDDCE\uD83C\uDFFE\u200D♀️", + [":woman_kneeling::skin-tone-5:"] = "\uD83E\uDDCE\uD83C\uDFFF\u200D♀️", + [":woman_kneeling_dark_skin_tone:"] = "\uD83E\uDDCE\uD83C\uDFFF\u200D♀️", + [":woman_kneeling_light_skin_tone:"] = "\uD83E\uDDCE\uD83C\uDFFB\u200D♀️", + [":woman_kneeling_medium_dark_skin_tone:"] = "\uD83E\uDDCE\uD83C\uDFFE\u200D♀️", + [":woman_kneeling_medium_light_skin_tone:"] = "\uD83E\uDDCE\uD83C\uDFFC\u200D♀️", + [":woman_kneeling_medium_skin_tone:"] = "\uD83E\uDDCE\uD83C\uDFFD\u200D♀️", + [":woman_kneeling_tone1:"] = "\uD83E\uDDCE\uD83C\uDFFB\u200D♀️", + [":woman_kneeling_tone2:"] = "\uD83E\uDDCE\uD83C\uDFFC\u200D♀️", + [":woman_kneeling_tone3:"] = "\uD83E\uDDCE\uD83C\uDFFD\u200D♀️", + [":woman_kneeling_tone4:"] = "\uD83E\uDDCE\uD83C\uDFFE\u200D♀️", + [":woman_kneeling_tone5:"] = "\uD83E\uDDCE\uD83C\uDFFF\u200D♀️", + [":woman_lifting_weights:"] = "\uD83C\uDFCB️\u200D♀️", + [":woman_lifting_weights::skin-tone-1:"] = "\uD83C\uDFCB\uD83C\uDFFB\u200D♀️", + [":woman_lifting_weights::skin-tone-2:"] = "\uD83C\uDFCB\uD83C\uDFFC\u200D♀️", + [":woman_lifting_weights::skin-tone-3:"] = "\uD83C\uDFCB\uD83C\uDFFD\u200D♀️", + [":woman_lifting_weights::skin-tone-4:"] = "\uD83C\uDFCB\uD83C\uDFFE\u200D♀️", + [":woman_lifting_weights::skin-tone-5:"] = "\uD83C\uDFCB\uD83C\uDFFF\u200D♀️", + [":woman_lifting_weights_dark_skin_tone:"] = "\uD83C\uDFCB\uD83C\uDFFF\u200D♀️", + [":woman_lifting_weights_light_skin_tone:"] = "\uD83C\uDFCB\uD83C\uDFFB\u200D♀️", + [":woman_lifting_weights_medium_dark_skin_tone:"] = "\uD83C\uDFCB\uD83C\uDFFE\u200D♀️", + [":woman_lifting_weights_medium_light_skin_tone:"] = "\uD83C\uDFCB\uD83C\uDFFC\u200D♀️", + [":woman_lifting_weights_medium_skin_tone:"] = "\uD83C\uDFCB\uD83C\uDFFD\u200D♀️", + [":woman_lifting_weights_tone1:"] = "\uD83C\uDFCB\uD83C\uDFFB\u200D♀️", + [":woman_lifting_weights_tone2:"] = "\uD83C\uDFCB\uD83C\uDFFC\u200D♀️", + [":woman_lifting_weights_tone3:"] = "\uD83C\uDFCB\uD83C\uDFFD\u200D♀️", + [":woman_lifting_weights_tone4:"] = "\uD83C\uDFCB\uD83C\uDFFE\u200D♀️", + [":woman_lifting_weights_tone5:"] = "\uD83C\uDFCB\uD83C\uDFFF\u200D♀️", + [":woman_mage:"] = "\uD83E\uDDD9\u200D♀️", + [":woman_mage::skin-tone-1:"] = "\uD83E\uDDD9\uD83C\uDFFB\u200D♀️", + [":woman_mage::skin-tone-2:"] = "\uD83E\uDDD9\uD83C\uDFFC\u200D♀️", + [":woman_mage::skin-tone-3:"] = "\uD83E\uDDD9\uD83C\uDFFD\u200D♀️", + [":woman_mage::skin-tone-4:"] = "\uD83E\uDDD9\uD83C\uDFFE\u200D♀️", + [":woman_mage::skin-tone-5:"] = "\uD83E\uDDD9\uD83C\uDFFF\u200D♀️", + [":woman_mage_dark_skin_tone:"] = "\uD83E\uDDD9\uD83C\uDFFF\u200D♀️", + [":woman_mage_light_skin_tone:"] = "\uD83E\uDDD9\uD83C\uDFFB\u200D♀️", + [":woman_mage_medium_dark_skin_tone:"] = "\uD83E\uDDD9\uD83C\uDFFE\u200D♀️", + [":woman_mage_medium_light_skin_tone:"] = "\uD83E\uDDD9\uD83C\uDFFC\u200D♀️", + [":woman_mage_medium_skin_tone:"] = "\uD83E\uDDD9\uD83C\uDFFD\u200D♀️", + [":woman_mage_tone1:"] = "\uD83E\uDDD9\uD83C\uDFFB\u200D♀️", + [":woman_mage_tone2:"] = "\uD83E\uDDD9\uD83C\uDFFC\u200D♀️", + [":woman_mage_tone3:"] = "\uD83E\uDDD9\uD83C\uDFFD\u200D♀️", + [":woman_mage_tone4:"] = "\uD83E\uDDD9\uD83C\uDFFE\u200D♀️", + [":woman_mage_tone5:"] = "\uD83E\uDDD9\uD83C\uDFFF\u200D♀️", + [":woman_mechanic:"] = "\uD83D\uDC69\u200D\uD83D\uDD27", + [":woman_mechanic::skin-tone-1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDD27", + [":woman_mechanic::skin-tone-2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDD27", + [":woman_mechanic::skin-tone-3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDD27", + [":woman_mechanic::skin-tone-4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDD27", + [":woman_mechanic::skin-tone-5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDD27", + [":woman_mechanic_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDD27", + [":woman_mechanic_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDD27", + [":woman_mechanic_medium_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDD27", + [":woman_mechanic_medium_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDD27", + [":woman_mechanic_medium_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDD27", + [":woman_mechanic_tone1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDD27", + [":woman_mechanic_tone2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDD27", + [":woman_mechanic_tone3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDD27", + [":woman_mechanic_tone4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDD27", + [":woman_mechanic_tone5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDD27", + [":woman_mountain_biking:"] = "\uD83D\uDEB5\u200D♀️", + [":woman_mountain_biking::skin-tone-1:"] = "\uD83D\uDEB5\uD83C\uDFFB\u200D♀️", + [":woman_mountain_biking::skin-tone-2:"] = "\uD83D\uDEB5\uD83C\uDFFC\u200D♀️", + [":woman_mountain_biking::skin-tone-3:"] = "\uD83D\uDEB5\uD83C\uDFFD\u200D♀️", + [":woman_mountain_biking::skin-tone-4:"] = "\uD83D\uDEB5\uD83C\uDFFE\u200D♀️", + [":woman_mountain_biking::skin-tone-5:"] = "\uD83D\uDEB5\uD83C\uDFFF\u200D♀️", + [":woman_mountain_biking_dark_skin_tone:"] = "\uD83D\uDEB5\uD83C\uDFFF\u200D♀️", + [":woman_mountain_biking_light_skin_tone:"] = "\uD83D\uDEB5\uD83C\uDFFB\u200D♀️", + [":woman_mountain_biking_medium_dark_skin_tone:"] = "\uD83D\uDEB5\uD83C\uDFFE\u200D♀️", + [":woman_mountain_biking_medium_light_skin_tone:"] = "\uD83D\uDEB5\uD83C\uDFFC\u200D♀️", + [":woman_mountain_biking_medium_skin_tone:"] = "\uD83D\uDEB5\uD83C\uDFFD\u200D♀️", + [":woman_mountain_biking_tone1:"] = "\uD83D\uDEB5\uD83C\uDFFB\u200D♀️", + [":woman_mountain_biking_tone2:"] = "\uD83D\uDEB5\uD83C\uDFFC\u200D♀️", + [":woman_mountain_biking_tone3:"] = "\uD83D\uDEB5\uD83C\uDFFD\u200D♀️", + [":woman_mountain_biking_tone4:"] = "\uD83D\uDEB5\uD83C\uDFFE\u200D♀️", + [":woman_mountain_biking_tone5:"] = "\uD83D\uDEB5\uD83C\uDFFF\u200D♀️", + [":woman_office_worker:"] = "\uD83D\uDC69\u200D\uD83D\uDCBC", + [":woman_office_worker::skin-tone-1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDCBC", + [":woman_office_worker::skin-tone-2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDCBC", + [":woman_office_worker::skin-tone-3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDCBC", + [":woman_office_worker::skin-tone-4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDCBC", + [":woman_office_worker::skin-tone-5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDCBC", + [":woman_office_worker_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDCBC", + [":woman_office_worker_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDCBC", + [":woman_office_worker_medium_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDCBC", + [":woman_office_worker_medium_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDCBC", + [":woman_office_worker_medium_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDCBC", + [":woman_office_worker_tone1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDCBC", + [":woman_office_worker_tone2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDCBC", + [":woman_office_worker_tone3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDCBC", + [":woman_office_worker_tone4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDCBC", + [":woman_office_worker_tone5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDCBC", + [":woman_pilot:"] = "\uD83D\uDC69\u200D✈️", + [":woman_pilot::skin-tone-1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D✈️", + [":woman_pilot::skin-tone-2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D✈️", + [":woman_pilot::skin-tone-3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D✈️", + [":woman_pilot::skin-tone-4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D✈️", + [":woman_pilot::skin-tone-5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D✈️", + [":woman_pilot_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D✈️", + [":woman_pilot_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D✈️", + [":woman_pilot_medium_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D✈️", + [":woman_pilot_medium_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D✈️", + [":woman_pilot_medium_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D✈️", + [":woman_pilot_tone1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D✈️", + [":woman_pilot_tone2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D✈️", + [":woman_pilot_tone3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D✈️", + [":woman_pilot_tone4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D✈️", + [":woman_pilot_tone5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D✈️", + [":woman_playing_handball:"] = "\uD83E\uDD3E\u200D♀️", + [":woman_playing_handball::skin-tone-1:"] = "\uD83E\uDD3E\uD83C\uDFFB\u200D♀️", + [":woman_playing_handball::skin-tone-2:"] = "\uD83E\uDD3E\uD83C\uDFFC\u200D♀️", + [":woman_playing_handball::skin-tone-3:"] = "\uD83E\uDD3E\uD83C\uDFFD\u200D♀️", + [":woman_playing_handball::skin-tone-4:"] = "\uD83E\uDD3E\uD83C\uDFFE\u200D♀️", + [":woman_playing_handball::skin-tone-5:"] = "\uD83E\uDD3E\uD83C\uDFFF\u200D♀️", + [":woman_playing_handball_dark_skin_tone:"] = "\uD83E\uDD3E\uD83C\uDFFF\u200D♀️", + [":woman_playing_handball_light_skin_tone:"] = "\uD83E\uDD3E\uD83C\uDFFB\u200D♀️", + [":woman_playing_handball_medium_dark_skin_tone:"] = "\uD83E\uDD3E\uD83C\uDFFE\u200D♀️", + [":woman_playing_handball_medium_light_skin_tone:"] = "\uD83E\uDD3E\uD83C\uDFFC\u200D♀️", + [":woman_playing_handball_medium_skin_tone:"] = "\uD83E\uDD3E\uD83C\uDFFD\u200D♀️", + [":woman_playing_handball_tone1:"] = "\uD83E\uDD3E\uD83C\uDFFB\u200D♀️", + [":woman_playing_handball_tone2:"] = "\uD83E\uDD3E\uD83C\uDFFC\u200D♀️", + [":woman_playing_handball_tone3:"] = "\uD83E\uDD3E\uD83C\uDFFD\u200D♀️", + [":woman_playing_handball_tone4:"] = "\uD83E\uDD3E\uD83C\uDFFE\u200D♀️", + [":woman_playing_handball_tone5:"] = "\uD83E\uDD3E\uD83C\uDFFF\u200D♀️", + [":woman_playing_water_polo:"] = "\uD83E\uDD3D\u200D♀️", + [":woman_playing_water_polo::skin-tone-1:"] = "\uD83E\uDD3D\uD83C\uDFFB\u200D♀️", + [":woman_playing_water_polo::skin-tone-2:"] = "\uD83E\uDD3D\uD83C\uDFFC\u200D♀️", + [":woman_playing_water_polo::skin-tone-3:"] = "\uD83E\uDD3D\uD83C\uDFFD\u200D♀️", + [":woman_playing_water_polo::skin-tone-4:"] = "\uD83E\uDD3D\uD83C\uDFFE\u200D♀️", + [":woman_playing_water_polo::skin-tone-5:"] = "\uD83E\uDD3D\uD83C\uDFFF\u200D♀️", + [":woman_playing_water_polo_dark_skin_tone:"] = "\uD83E\uDD3D\uD83C\uDFFF\u200D♀️", + [":woman_playing_water_polo_light_skin_tone:"] = "\uD83E\uDD3D\uD83C\uDFFB\u200D♀️", + [":woman_playing_water_polo_medium_dark_skin_tone:"] = "\uD83E\uDD3D\uD83C\uDFFE\u200D♀️", + [":woman_playing_water_polo_medium_light_skin_tone:"] = "\uD83E\uDD3D\uD83C\uDFFC\u200D♀️", + [":woman_playing_water_polo_medium_skin_tone:"] = "\uD83E\uDD3D\uD83C\uDFFD\u200D♀️", + [":woman_playing_water_polo_tone1:"] = "\uD83E\uDD3D\uD83C\uDFFB\u200D♀️", + [":woman_playing_water_polo_tone2:"] = "\uD83E\uDD3D\uD83C\uDFFC\u200D♀️", + [":woman_playing_water_polo_tone3:"] = "\uD83E\uDD3D\uD83C\uDFFD\u200D♀️", + [":woman_playing_water_polo_tone4:"] = "\uD83E\uDD3D\uD83C\uDFFE\u200D♀️", + [":woman_playing_water_polo_tone5:"] = "\uD83E\uDD3D\uD83C\uDFFF\u200D♀️", + [":woman_police_officer:"] = "\uD83D\uDC6E\u200D♀️", + [":woman_police_officer::skin-tone-1:"] = "\uD83D\uDC6E\uD83C\uDFFB\u200D♀️", + [":woman_police_officer::skin-tone-2:"] = "\uD83D\uDC6E\uD83C\uDFFC\u200D♀️", + [":woman_police_officer::skin-tone-3:"] = "\uD83D\uDC6E\uD83C\uDFFD\u200D♀️", + [":woman_police_officer::skin-tone-4:"] = "\uD83D\uDC6E\uD83C\uDFFE\u200D♀️", + [":woman_police_officer::skin-tone-5:"] = "\uD83D\uDC6E\uD83C\uDFFF\u200D♀️", + [":woman_police_officer_dark_skin_tone:"] = "\uD83D\uDC6E\uD83C\uDFFF\u200D♀️", + [":woman_police_officer_light_skin_tone:"] = "\uD83D\uDC6E\uD83C\uDFFB\u200D♀️", + [":woman_police_officer_medium_dark_skin_tone:"] = "\uD83D\uDC6E\uD83C\uDFFE\u200D♀️", + [":woman_police_officer_medium_light_skin_tone:"] = "\uD83D\uDC6E\uD83C\uDFFC\u200D♀️", + [":woman_police_officer_medium_skin_tone:"] = "\uD83D\uDC6E\uD83C\uDFFD\u200D♀️", + [":woman_police_officer_tone1:"] = "\uD83D\uDC6E\uD83C\uDFFB\u200D♀️", + [":woman_police_officer_tone2:"] = "\uD83D\uDC6E\uD83C\uDFFC\u200D♀️", + [":woman_police_officer_tone3:"] = "\uD83D\uDC6E\uD83C\uDFFD\u200D♀️", + [":woman_police_officer_tone4:"] = "\uD83D\uDC6E\uD83C\uDFFE\u200D♀️", + [":woman_police_officer_tone5:"] = "\uD83D\uDC6E\uD83C\uDFFF\u200D♀️", + [":woman_pouting:"] = "\uD83D\uDE4E\u200D♀️", + [":woman_pouting::skin-tone-1:"] = "\uD83D\uDE4E\uD83C\uDFFB\u200D♀️", + [":woman_pouting::skin-tone-2:"] = "\uD83D\uDE4E\uD83C\uDFFC\u200D♀️", + [":woman_pouting::skin-tone-3:"] = "\uD83D\uDE4E\uD83C\uDFFD\u200D♀️", + [":woman_pouting::skin-tone-4:"] = "\uD83D\uDE4E\uD83C\uDFFE\u200D♀️", + [":woman_pouting::skin-tone-5:"] = "\uD83D\uDE4E\uD83C\uDFFF\u200D♀️", + [":woman_pouting_dark_skin_tone:"] = "\uD83D\uDE4E\uD83C\uDFFF\u200D♀️", + [":woman_pouting_light_skin_tone:"] = "\uD83D\uDE4E\uD83C\uDFFB\u200D♀️", + [":woman_pouting_medium_dark_skin_tone:"] = "\uD83D\uDE4E\uD83C\uDFFE\u200D♀️", + [":woman_pouting_medium_light_skin_tone:"] = "\uD83D\uDE4E\uD83C\uDFFC\u200D♀️", + [":woman_pouting_medium_skin_tone:"] = "\uD83D\uDE4E\uD83C\uDFFD\u200D♀️", + [":woman_pouting_tone1:"] = "\uD83D\uDE4E\uD83C\uDFFB\u200D♀️", + [":woman_pouting_tone2:"] = "\uD83D\uDE4E\uD83C\uDFFC\u200D♀️", + [":woman_pouting_tone3:"] = "\uD83D\uDE4E\uD83C\uDFFD\u200D♀️", + [":woman_pouting_tone4:"] = "\uD83D\uDE4E\uD83C\uDFFE\u200D♀️", + [":woman_pouting_tone5:"] = "\uD83D\uDE4E\uD83C\uDFFF\u200D♀️", + [":woman_raising_hand:"] = "\uD83D\uDE4B\u200D♀️", + [":woman_raising_hand::skin-tone-1:"] = "\uD83D\uDE4B\uD83C\uDFFB\u200D♀️", + [":woman_raising_hand::skin-tone-2:"] = "\uD83D\uDE4B\uD83C\uDFFC\u200D♀️", + [":woman_raising_hand::skin-tone-3:"] = "\uD83D\uDE4B\uD83C\uDFFD\u200D♀️", + [":woman_raising_hand::skin-tone-4:"] = "\uD83D\uDE4B\uD83C\uDFFE\u200D♀️", + [":woman_raising_hand::skin-tone-5:"] = "\uD83D\uDE4B\uD83C\uDFFF\u200D♀️", + [":woman_raising_hand_dark_skin_tone:"] = "\uD83D\uDE4B\uD83C\uDFFF\u200D♀️", + [":woman_raising_hand_light_skin_tone:"] = "\uD83D\uDE4B\uD83C\uDFFB\u200D♀️", + [":woman_raising_hand_medium_dark_skin_tone:"] = "\uD83D\uDE4B\uD83C\uDFFE\u200D♀️", + [":woman_raising_hand_medium_light_skin_tone:"] = "\uD83D\uDE4B\uD83C\uDFFC\u200D♀️", + [":woman_raising_hand_medium_skin_tone:"] = "\uD83D\uDE4B\uD83C\uDFFD\u200D♀️", + [":woman_raising_hand_tone1:"] = "\uD83D\uDE4B\uD83C\uDFFB\u200D♀️", + [":woman_raising_hand_tone2:"] = "\uD83D\uDE4B\uD83C\uDFFC\u200D♀️", + [":woman_raising_hand_tone3:"] = "\uD83D\uDE4B\uD83C\uDFFD\u200D♀️", + [":woman_raising_hand_tone4:"] = "\uD83D\uDE4B\uD83C\uDFFE\u200D♀️", + [":woman_raising_hand_tone5:"] = "\uD83D\uDE4B\uD83C\uDFFF\u200D♀️", + [":woman_red_haired:"] = "\uD83D\uDC69\u200D\uD83E\uDDB0", + [":woman_red_haired::skin-tone-1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDB0", + [":woman_red_haired::skin-tone-2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDB0", + [":woman_red_haired::skin-tone-3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDB0", + [":woman_red_haired::skin-tone-4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDB0", + [":woman_red_haired::skin-tone-5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDB0", + [":woman_red_haired_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDB0", + [":woman_red_haired_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDB0", + [":woman_red_haired_medium_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDB0", + [":woman_red_haired_medium_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDB0", + [":woman_red_haired_medium_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDB0", + [":woman_red_haired_tone1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDB0", + [":woman_red_haired_tone2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDB0", + [":woman_red_haired_tone3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDB0", + [":woman_red_haired_tone4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDB0", + [":woman_red_haired_tone5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDB0", + [":woman_rowing_boat:"] = "\uD83D\uDEA3\u200D♀️", + [":woman_rowing_boat::skin-tone-1:"] = "\uD83D\uDEA3\uD83C\uDFFB\u200D♀️", + [":woman_rowing_boat::skin-tone-2:"] = "\uD83D\uDEA3\uD83C\uDFFC\u200D♀️", + [":woman_rowing_boat::skin-tone-3:"] = "\uD83D\uDEA3\uD83C\uDFFD\u200D♀️", + [":woman_rowing_boat::skin-tone-4:"] = "\uD83D\uDEA3\uD83C\uDFFE\u200D♀️", + [":woman_rowing_boat::skin-tone-5:"] = "\uD83D\uDEA3\uD83C\uDFFF\u200D♀️", + [":woman_rowing_boat_dark_skin_tone:"] = "\uD83D\uDEA3\uD83C\uDFFF\u200D♀️", + [":woman_rowing_boat_light_skin_tone:"] = "\uD83D\uDEA3\uD83C\uDFFB\u200D♀️", + [":woman_rowing_boat_medium_dark_skin_tone:"] = "\uD83D\uDEA3\uD83C\uDFFE\u200D♀️", + [":woman_rowing_boat_medium_light_skin_tone:"] = "\uD83D\uDEA3\uD83C\uDFFC\u200D♀️", + [":woman_rowing_boat_medium_skin_tone:"] = "\uD83D\uDEA3\uD83C\uDFFD\u200D♀️", + [":woman_rowing_boat_tone1:"] = "\uD83D\uDEA3\uD83C\uDFFB\u200D♀️", + [":woman_rowing_boat_tone2:"] = "\uD83D\uDEA3\uD83C\uDFFC\u200D♀️", + [":woman_rowing_boat_tone3:"] = "\uD83D\uDEA3\uD83C\uDFFD\u200D♀️", + [":woman_rowing_boat_tone4:"] = "\uD83D\uDEA3\uD83C\uDFFE\u200D♀️", + [":woman_rowing_boat_tone5:"] = "\uD83D\uDEA3\uD83C\uDFFF\u200D♀️", + [":woman_running:"] = "\uD83C\uDFC3\u200D♀️", + [":woman_running::skin-tone-1:"] = "\uD83C\uDFC3\uD83C\uDFFB\u200D♀️", + [":woman_running::skin-tone-2:"] = "\uD83C\uDFC3\uD83C\uDFFC\u200D♀️", + [":woman_running::skin-tone-3:"] = "\uD83C\uDFC3\uD83C\uDFFD\u200D♀️", + [":woman_running::skin-tone-4:"] = "\uD83C\uDFC3\uD83C\uDFFE\u200D♀️", + [":woman_running::skin-tone-5:"] = "\uD83C\uDFC3\uD83C\uDFFF\u200D♀️", + [":woman_running_dark_skin_tone:"] = "\uD83C\uDFC3\uD83C\uDFFF\u200D♀️", + [":woman_running_light_skin_tone:"] = "\uD83C\uDFC3\uD83C\uDFFB\u200D♀️", + [":woman_running_medium_dark_skin_tone:"] = "\uD83C\uDFC3\uD83C\uDFFE\u200D♀️", + [":woman_running_medium_light_skin_tone:"] = "\uD83C\uDFC3\uD83C\uDFFC\u200D♀️", + [":woman_running_medium_skin_tone:"] = "\uD83C\uDFC3\uD83C\uDFFD\u200D♀️", + [":woman_running_tone1:"] = "\uD83C\uDFC3\uD83C\uDFFB\u200D♀️", + [":woman_running_tone2:"] = "\uD83C\uDFC3\uD83C\uDFFC\u200D♀️", + [":woman_running_tone3:"] = "\uD83C\uDFC3\uD83C\uDFFD\u200D♀️", + [":woman_running_tone4:"] = "\uD83C\uDFC3\uD83C\uDFFE\u200D♀️", + [":woman_running_tone5:"] = "\uD83C\uDFC3\uD83C\uDFFF\u200D♀️", + [":woman_scientist:"] = "\uD83D\uDC69\u200D\uD83D\uDD2C", + [":woman_scientist::skin-tone-1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDD2C", + [":woman_scientist::skin-tone-2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDD2C", + [":woman_scientist::skin-tone-3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDD2C", + [":woman_scientist::skin-tone-4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDD2C", + [":woman_scientist::skin-tone-5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDD2C", + [":woman_scientist_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDD2C", + [":woman_scientist_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDD2C", + [":woman_scientist_medium_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDD2C", + [":woman_scientist_medium_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDD2C", + [":woman_scientist_medium_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDD2C", + [":woman_scientist_tone1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDD2C", + [":woman_scientist_tone2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDD2C", + [":woman_scientist_tone3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDD2C", + [":woman_scientist_tone4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDD2C", + [":woman_scientist_tone5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDD2C", + [":woman_shrugging:"] = "\uD83E\uDD37\u200D♀️", + [":woman_shrugging::skin-tone-1:"] = "\uD83E\uDD37\uD83C\uDFFB\u200D♀️", + [":woman_shrugging::skin-tone-2:"] = "\uD83E\uDD37\uD83C\uDFFC\u200D♀️", + [":woman_shrugging::skin-tone-3:"] = "\uD83E\uDD37\uD83C\uDFFD\u200D♀️", + [":woman_shrugging::skin-tone-4:"] = "\uD83E\uDD37\uD83C\uDFFE\u200D♀️", + [":woman_shrugging::skin-tone-5:"] = "\uD83E\uDD37\uD83C\uDFFF\u200D♀️", + [":woman_shrugging_dark_skin_tone:"] = "\uD83E\uDD37\uD83C\uDFFF\u200D♀️", + [":woman_shrugging_light_skin_tone:"] = "\uD83E\uDD37\uD83C\uDFFB\u200D♀️", + [":woman_shrugging_medium_dark_skin_tone:"] = "\uD83E\uDD37\uD83C\uDFFE\u200D♀️", + [":woman_shrugging_medium_light_skin_tone:"] = "\uD83E\uDD37\uD83C\uDFFC\u200D♀️", + [":woman_shrugging_medium_skin_tone:"] = "\uD83E\uDD37\uD83C\uDFFD\u200D♀️", + [":woman_shrugging_tone1:"] = "\uD83E\uDD37\uD83C\uDFFB\u200D♀️", + [":woman_shrugging_tone2:"] = "\uD83E\uDD37\uD83C\uDFFC\u200D♀️", + [":woman_shrugging_tone3:"] = "\uD83E\uDD37\uD83C\uDFFD\u200D♀️", + [":woman_shrugging_tone4:"] = "\uD83E\uDD37\uD83C\uDFFE\u200D♀️", + [":woman_shrugging_tone5:"] = "\uD83E\uDD37\uD83C\uDFFF\u200D♀️", + [":woman_singer:"] = "\uD83D\uDC69\u200D\uD83C\uDFA4", + [":woman_singer::skin-tone-1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDFA4", + [":woman_singer::skin-tone-2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDFA4", + [":woman_singer::skin-tone-3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDFA4", + [":woman_singer::skin-tone-4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDFA4", + [":woman_singer::skin-tone-5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDFA4", + [":woman_singer_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDFA4", + [":woman_singer_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDFA4", + [":woman_singer_medium_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDFA4", + [":woman_singer_medium_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDFA4", + [":woman_singer_medium_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDFA4", + [":woman_singer_tone1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDFA4", + [":woman_singer_tone2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDFA4", + [":woman_singer_tone3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDFA4", + [":woman_singer_tone4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDFA4", + [":woman_singer_tone5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDFA4", + [":woman_standing:"] = "\uD83E\uDDCD\u200D♀️", + [":woman_standing::skin-tone-1:"] = "\uD83E\uDDCD\uD83C\uDFFB\u200D♀️", + [":woman_standing::skin-tone-2:"] = "\uD83E\uDDCD\uD83C\uDFFC\u200D♀️", + [":woman_standing::skin-tone-3:"] = "\uD83E\uDDCD\uD83C\uDFFD\u200D♀️", + [":woman_standing::skin-tone-4:"] = "\uD83E\uDDCD\uD83C\uDFFE\u200D♀️", + [":woman_standing::skin-tone-5:"] = "\uD83E\uDDCD\uD83C\uDFFF\u200D♀️", + [":woman_standing_dark_skin_tone:"] = "\uD83E\uDDCD\uD83C\uDFFF\u200D♀️", + [":woman_standing_light_skin_tone:"] = "\uD83E\uDDCD\uD83C\uDFFB\u200D♀️", + [":woman_standing_medium_dark_skin_tone:"] = "\uD83E\uDDCD\uD83C\uDFFE\u200D♀️", + [":woman_standing_medium_light_skin_tone:"] = "\uD83E\uDDCD\uD83C\uDFFC\u200D♀️", + [":woman_standing_medium_skin_tone:"] = "\uD83E\uDDCD\uD83C\uDFFD\u200D♀️", + [":woman_standing_tone1:"] = "\uD83E\uDDCD\uD83C\uDFFB\u200D♀️", + [":woman_standing_tone2:"] = "\uD83E\uDDCD\uD83C\uDFFC\u200D♀️", + [":woman_standing_tone3:"] = "\uD83E\uDDCD\uD83C\uDFFD\u200D♀️", + [":woman_standing_tone4:"] = "\uD83E\uDDCD\uD83C\uDFFE\u200D♀️", + [":woman_standing_tone5:"] = "\uD83E\uDDCD\uD83C\uDFFF\u200D♀️", + [":woman_student:"] = "\uD83D\uDC69\u200D\uD83C\uDF93", + [":woman_student::skin-tone-1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDF93", + [":woman_student::skin-tone-2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDF93", + [":woman_student::skin-tone-3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDF93", + [":woman_student::skin-tone-4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDF93", + [":woman_student::skin-tone-5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDF93", + [":woman_student_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDF93", + [":woman_student_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDF93", + [":woman_student_medium_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDF93", + [":woman_student_medium_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDF93", + [":woman_student_medium_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDF93", + [":woman_student_tone1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDF93", + [":woman_student_tone2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDF93", + [":woman_student_tone3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDF93", + [":woman_student_tone4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDF93", + [":woman_student_tone5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDF93", + [":woman_superhero:"] = "\uD83E\uDDB8\u200D♀️", + [":woman_superhero::skin-tone-1:"] = "\uD83E\uDDB8\uD83C\uDFFB\u200D♀️", + [":woman_superhero::skin-tone-2:"] = "\uD83E\uDDB8\uD83C\uDFFC\u200D♀️", + [":woman_superhero::skin-tone-3:"] = "\uD83E\uDDB8\uD83C\uDFFD\u200D♀️", + [":woman_superhero::skin-tone-4:"] = "\uD83E\uDDB8\uD83C\uDFFE\u200D♀️", + [":woman_superhero::skin-tone-5:"] = "\uD83E\uDDB8\uD83C\uDFFF\u200D♀️", + [":woman_superhero_dark_skin_tone:"] = "\uD83E\uDDB8\uD83C\uDFFF\u200D♀️", + [":woman_superhero_light_skin_tone:"] = "\uD83E\uDDB8\uD83C\uDFFB\u200D♀️", + [":woman_superhero_medium_dark_skin_tone:"] = "\uD83E\uDDB8\uD83C\uDFFE\u200D♀️", + [":woman_superhero_medium_light_skin_tone:"] = "\uD83E\uDDB8\uD83C\uDFFC\u200D♀️", + [":woman_superhero_medium_skin_tone:"] = "\uD83E\uDDB8\uD83C\uDFFD\u200D♀️", + [":woman_superhero_tone1:"] = "\uD83E\uDDB8\uD83C\uDFFB\u200D♀️", + [":woman_superhero_tone2:"] = "\uD83E\uDDB8\uD83C\uDFFC\u200D♀️", + [":woman_superhero_tone3:"] = "\uD83E\uDDB8\uD83C\uDFFD\u200D♀️", + [":woman_superhero_tone4:"] = "\uD83E\uDDB8\uD83C\uDFFE\u200D♀️", + [":woman_superhero_tone5:"] = "\uD83E\uDDB8\uD83C\uDFFF\u200D♀️", + [":woman_supervillain:"] = "\uD83E\uDDB9\u200D♀️", + [":woman_supervillain::skin-tone-1:"] = "\uD83E\uDDB9\uD83C\uDFFB\u200D♀️", + [":woman_supervillain::skin-tone-2:"] = "\uD83E\uDDB9\uD83C\uDFFC\u200D♀️", + [":woman_supervillain::skin-tone-3:"] = "\uD83E\uDDB9\uD83C\uDFFD\u200D♀️", + [":woman_supervillain::skin-tone-4:"] = "\uD83E\uDDB9\uD83C\uDFFE\u200D♀️", + [":woman_supervillain::skin-tone-5:"] = "\uD83E\uDDB9\uD83C\uDFFF\u200D♀️", + [":woman_supervillain_dark_skin_tone:"] = "\uD83E\uDDB9\uD83C\uDFFF\u200D♀️", + [":woman_supervillain_light_skin_tone:"] = "\uD83E\uDDB9\uD83C\uDFFB\u200D♀️", + [":woman_supervillain_medium_dark_skin_tone:"] = "\uD83E\uDDB9\uD83C\uDFFE\u200D♀️", + [":woman_supervillain_medium_light_skin_tone:"] = "\uD83E\uDDB9\uD83C\uDFFC\u200D♀️", + [":woman_supervillain_medium_skin_tone:"] = "\uD83E\uDDB9\uD83C\uDFFD\u200D♀️", + [":woman_supervillain_tone1:"] = "\uD83E\uDDB9\uD83C\uDFFB\u200D♀️", + [":woman_supervillain_tone2:"] = "\uD83E\uDDB9\uD83C\uDFFC\u200D♀️", + [":woman_supervillain_tone3:"] = "\uD83E\uDDB9\uD83C\uDFFD\u200D♀️", + [":woman_supervillain_tone4:"] = "\uD83E\uDDB9\uD83C\uDFFE\u200D♀️", + [":woman_supervillain_tone5:"] = "\uD83E\uDDB9\uD83C\uDFFF\u200D♀️", + [":woman_surfing:"] = "\uD83C\uDFC4\u200D♀️", + [":woman_surfing::skin-tone-1:"] = "\uD83C\uDFC4\uD83C\uDFFB\u200D♀️", + [":woman_surfing::skin-tone-2:"] = "\uD83C\uDFC4\uD83C\uDFFC\u200D♀️", + [":woman_surfing::skin-tone-3:"] = "\uD83C\uDFC4\uD83C\uDFFD\u200D♀️", + [":woman_surfing::skin-tone-4:"] = "\uD83C\uDFC4\uD83C\uDFFE\u200D♀️", + [":woman_surfing::skin-tone-5:"] = "\uD83C\uDFC4\uD83C\uDFFF\u200D♀️", + [":woman_surfing_dark_skin_tone:"] = "\uD83C\uDFC4\uD83C\uDFFF\u200D♀️", + [":woman_surfing_light_skin_tone:"] = "\uD83C\uDFC4\uD83C\uDFFB\u200D♀️", + [":woman_surfing_medium_dark_skin_tone:"] = "\uD83C\uDFC4\uD83C\uDFFE\u200D♀️", + [":woman_surfing_medium_light_skin_tone:"] = "\uD83C\uDFC4\uD83C\uDFFC\u200D♀️", + [":woman_surfing_medium_skin_tone:"] = "\uD83C\uDFC4\uD83C\uDFFD\u200D♀️", + [":woman_surfing_tone1:"] = "\uD83C\uDFC4\uD83C\uDFFB\u200D♀️", + [":woman_surfing_tone2:"] = "\uD83C\uDFC4\uD83C\uDFFC\u200D♀️", + [":woman_surfing_tone3:"] = "\uD83C\uDFC4\uD83C\uDFFD\u200D♀️", + [":woman_surfing_tone4:"] = "\uD83C\uDFC4\uD83C\uDFFE\u200D♀️", + [":woman_surfing_tone5:"] = "\uD83C\uDFC4\uD83C\uDFFF\u200D♀️", + [":woman_swimming:"] = "\uD83C\uDFCA\u200D♀️", + [":woman_swimming::skin-tone-1:"] = "\uD83C\uDFCA\uD83C\uDFFB\u200D♀️", + [":woman_swimming::skin-tone-2:"] = "\uD83C\uDFCA\uD83C\uDFFC\u200D♀️", + [":woman_swimming::skin-tone-3:"] = "\uD83C\uDFCA\uD83C\uDFFD\u200D♀️", + [":woman_swimming::skin-tone-4:"] = "\uD83C\uDFCA\uD83C\uDFFE\u200D♀️", + [":woman_swimming::skin-tone-5:"] = "\uD83C\uDFCA\uD83C\uDFFF\u200D♀️", + [":woman_swimming_dark_skin_tone:"] = "\uD83C\uDFCA\uD83C\uDFFF\u200D♀️", + [":woman_swimming_light_skin_tone:"] = "\uD83C\uDFCA\uD83C\uDFFB\u200D♀️", + [":woman_swimming_medium_dark_skin_tone:"] = "\uD83C\uDFCA\uD83C\uDFFE\u200D♀️", + [":woman_swimming_medium_light_skin_tone:"] = "\uD83C\uDFCA\uD83C\uDFFC\u200D♀️", + [":woman_swimming_medium_skin_tone:"] = "\uD83C\uDFCA\uD83C\uDFFD\u200D♀️", + [":woman_swimming_tone1:"] = "\uD83C\uDFCA\uD83C\uDFFB\u200D♀️", + [":woman_swimming_tone2:"] = "\uD83C\uDFCA\uD83C\uDFFC\u200D♀️", + [":woman_swimming_tone3:"] = "\uD83C\uDFCA\uD83C\uDFFD\u200D♀️", + [":woman_swimming_tone4:"] = "\uD83C\uDFCA\uD83C\uDFFE\u200D♀️", + [":woman_swimming_tone5:"] = "\uD83C\uDFCA\uD83C\uDFFF\u200D♀️", + [":woman_teacher:"] = "\uD83D\uDC69\u200D\uD83C\uDFEB", + [":woman_teacher::skin-tone-1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDFEB", + [":woman_teacher::skin-tone-2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDFEB", + [":woman_teacher::skin-tone-3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDFEB", + [":woman_teacher::skin-tone-4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDFEB", + [":woman_teacher::skin-tone-5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDFEB", + [":woman_teacher_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDFEB", + [":woman_teacher_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDFEB", + [":woman_teacher_medium_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDFEB", + [":woman_teacher_medium_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDFEB", + [":woman_teacher_medium_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDFEB", + [":woman_teacher_tone1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDFEB", + [":woman_teacher_tone2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDFEB", + [":woman_teacher_tone3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDFEB", + [":woman_teacher_tone4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDFEB", + [":woman_teacher_tone5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDFEB", + [":woman_technologist:"] = "\uD83D\uDC69\u200D\uD83D\uDCBB", + [":woman_technologist::skin-tone-1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDCBB", + [":woman_technologist::skin-tone-2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDCBB", + [":woman_technologist::skin-tone-3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDCBB", + [":woman_technologist::skin-tone-4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDCBB", + [":woman_technologist::skin-tone-5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDCBB", + [":woman_technologist_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDCBB", + [":woman_technologist_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDCBB", + [":woman_technologist_medium_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDCBB", + [":woman_technologist_medium_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDCBB", + [":woman_technologist_medium_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDCBB", + [":woman_technologist_tone1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDCBB", + [":woman_technologist_tone2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDCBB", + [":woman_technologist_tone3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDCBB", + [":woman_technologist_tone4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDCBB", + [":woman_technologist_tone5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDCBB", + [":woman_tipping_hand:"] = "\uD83D\uDC81\u200D♀️", + [":woman_tipping_hand::skin-tone-1:"] = "\uD83D\uDC81\uD83C\uDFFB\u200D♀️", + [":woman_tipping_hand::skin-tone-2:"] = "\uD83D\uDC81\uD83C\uDFFC\u200D♀️", + [":woman_tipping_hand::skin-tone-3:"] = "\uD83D\uDC81\uD83C\uDFFD\u200D♀️", + [":woman_tipping_hand::skin-tone-4:"] = "\uD83D\uDC81\uD83C\uDFFE\u200D♀️", + [":woman_tipping_hand::skin-tone-5:"] = "\uD83D\uDC81\uD83C\uDFFF\u200D♀️", + [":woman_tipping_hand_dark_skin_tone:"] = "\uD83D\uDC81\uD83C\uDFFF\u200D♀️", + [":woman_tipping_hand_light_skin_tone:"] = "\uD83D\uDC81\uD83C\uDFFB\u200D♀️", + [":woman_tipping_hand_medium_dark_skin_tone:"] = "\uD83D\uDC81\uD83C\uDFFE\u200D♀️", + [":woman_tipping_hand_medium_light_skin_tone:"] = "\uD83D\uDC81\uD83C\uDFFC\u200D♀️", + [":woman_tipping_hand_medium_skin_tone:"] = "\uD83D\uDC81\uD83C\uDFFD\u200D♀️", + [":woman_tipping_hand_tone1:"] = "\uD83D\uDC81\uD83C\uDFFB\u200D♀️", + [":woman_tipping_hand_tone2:"] = "\uD83D\uDC81\uD83C\uDFFC\u200D♀️", + [":woman_tipping_hand_tone3:"] = "\uD83D\uDC81\uD83C\uDFFD\u200D♀️", + [":woman_tipping_hand_tone4:"] = "\uD83D\uDC81\uD83C\uDFFE\u200D♀️", + [":woman_tipping_hand_tone5:"] = "\uD83D\uDC81\uD83C\uDFFF\u200D♀️", + [":woman_tone1:"] = "\uD83D\uDC69\uD83C\uDFFB", + [":woman_tone2:"] = "\uD83D\uDC69\uD83C\uDFFC", + [":woman_tone3:"] = "\uD83D\uDC69\uD83C\uDFFD", + [":woman_tone4:"] = "\uD83D\uDC69\uD83C\uDFFE", + [":woman_tone5:"] = "\uD83D\uDC69\uD83C\uDFFF", + [":woman_vampire:"] = "\uD83E\uDDDB\u200D♀️", + [":woman_vampire::skin-tone-1:"] = "\uD83E\uDDDB\uD83C\uDFFB\u200D♀️", + [":woman_vampire::skin-tone-2:"] = "\uD83E\uDDDB\uD83C\uDFFC\u200D♀️", + [":woman_vampire::skin-tone-3:"] = "\uD83E\uDDDB\uD83C\uDFFD\u200D♀️", + [":woman_vampire::skin-tone-4:"] = "\uD83E\uDDDB\uD83C\uDFFE\u200D♀️", + [":woman_vampire::skin-tone-5:"] = "\uD83E\uDDDB\uD83C\uDFFF\u200D♀️", + [":woman_vampire_dark_skin_tone:"] = "\uD83E\uDDDB\uD83C\uDFFF\u200D♀️", + [":woman_vampire_light_skin_tone:"] = "\uD83E\uDDDB\uD83C\uDFFB\u200D♀️", + [":woman_vampire_medium_dark_skin_tone:"] = "\uD83E\uDDDB\uD83C\uDFFE\u200D♀️", + [":woman_vampire_medium_light_skin_tone:"] = "\uD83E\uDDDB\uD83C\uDFFC\u200D♀️", + [":woman_vampire_medium_skin_tone:"] = "\uD83E\uDDDB\uD83C\uDFFD\u200D♀️", + [":woman_vampire_tone1:"] = "\uD83E\uDDDB\uD83C\uDFFB\u200D♀️", + [":woman_vampire_tone2:"] = "\uD83E\uDDDB\uD83C\uDFFC\u200D♀️", + [":woman_vampire_tone3:"] = "\uD83E\uDDDB\uD83C\uDFFD\u200D♀️", + [":woman_vampire_tone4:"] = "\uD83E\uDDDB\uD83C\uDFFE\u200D♀️", + [":woman_vampire_tone5:"] = "\uD83E\uDDDB\uD83C\uDFFF\u200D♀️", + [":woman_walking:"] = "\uD83D\uDEB6\u200D♀️", + [":woman_walking::skin-tone-1:"] = "\uD83D\uDEB6\uD83C\uDFFB\u200D♀️", + [":woman_walking::skin-tone-2:"] = "\uD83D\uDEB6\uD83C\uDFFC\u200D♀️", + [":woman_walking::skin-tone-3:"] = "\uD83D\uDEB6\uD83C\uDFFD\u200D♀️", + [":woman_walking::skin-tone-4:"] = "\uD83D\uDEB6\uD83C\uDFFE\u200D♀️", + [":woman_walking::skin-tone-5:"] = "\uD83D\uDEB6\uD83C\uDFFF\u200D♀️", + [":woman_walking_dark_skin_tone:"] = "\uD83D\uDEB6\uD83C\uDFFF\u200D♀️", + [":woman_walking_light_skin_tone:"] = "\uD83D\uDEB6\uD83C\uDFFB\u200D♀️", + [":woman_walking_medium_dark_skin_tone:"] = "\uD83D\uDEB6\uD83C\uDFFE\u200D♀️", + [":woman_walking_medium_light_skin_tone:"] = "\uD83D\uDEB6\uD83C\uDFFC\u200D♀️", + [":woman_walking_medium_skin_tone:"] = "\uD83D\uDEB6\uD83C\uDFFD\u200D♀️", + [":woman_walking_tone1:"] = "\uD83D\uDEB6\uD83C\uDFFB\u200D♀️", + [":woman_walking_tone2:"] = "\uD83D\uDEB6\uD83C\uDFFC\u200D♀️", + [":woman_walking_tone3:"] = "\uD83D\uDEB6\uD83C\uDFFD\u200D♀️", + [":woman_walking_tone4:"] = "\uD83D\uDEB6\uD83C\uDFFE\u200D♀️", + [":woman_walking_tone5:"] = "\uD83D\uDEB6\uD83C\uDFFF\u200D♀️", + [":woman_wearing_turban:"] = "\uD83D\uDC73\u200D♀️", + [":woman_wearing_turban::skin-tone-1:"] = "\uD83D\uDC73\uD83C\uDFFB\u200D♀️", + [":woman_wearing_turban::skin-tone-2:"] = "\uD83D\uDC73\uD83C\uDFFC\u200D♀️", + [":woman_wearing_turban::skin-tone-3:"] = "\uD83D\uDC73\uD83C\uDFFD\u200D♀️", + [":woman_wearing_turban::skin-tone-4:"] = "\uD83D\uDC73\uD83C\uDFFE\u200D♀️", + [":woman_wearing_turban::skin-tone-5:"] = "\uD83D\uDC73\uD83C\uDFFF\u200D♀️", + [":woman_wearing_turban_dark_skin_tone:"] = "\uD83D\uDC73\uD83C\uDFFF\u200D♀️", + [":woman_wearing_turban_light_skin_tone:"] = "\uD83D\uDC73\uD83C\uDFFB\u200D♀️", + [":woman_wearing_turban_medium_dark_skin_tone:"] = "\uD83D\uDC73\uD83C\uDFFE\u200D♀️", + [":woman_wearing_turban_medium_light_skin_tone:"] = "\uD83D\uDC73\uD83C\uDFFC\u200D♀️", + [":woman_wearing_turban_medium_skin_tone:"] = "\uD83D\uDC73\uD83C\uDFFD\u200D♀️", + [":woman_wearing_turban_tone1:"] = "\uD83D\uDC73\uD83C\uDFFB\u200D♀️", + [":woman_wearing_turban_tone2:"] = "\uD83D\uDC73\uD83C\uDFFC\u200D♀️", + [":woman_wearing_turban_tone3:"] = "\uD83D\uDC73\uD83C\uDFFD\u200D♀️", + [":woman_wearing_turban_tone4:"] = "\uD83D\uDC73\uD83C\uDFFE\u200D♀️", + [":woman_wearing_turban_tone5:"] = "\uD83D\uDC73\uD83C\uDFFF\u200D♀️", + [":woman_white_haired:"] = "\uD83D\uDC69\u200D\uD83E\uDDB3", + [":woman_white_haired::skin-tone-1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDB3", + [":woman_white_haired::skin-tone-2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDB3", + [":woman_white_haired::skin-tone-3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDB3", + [":woman_white_haired::skin-tone-4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDB3", + [":woman_white_haired::skin-tone-5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDB3", + [":woman_white_haired_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDB3", + [":woman_white_haired_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDB3", + [":woman_white_haired_medium_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDB3", + [":woman_white_haired_medium_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDB3", + [":woman_white_haired_medium_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDB3", + [":woman_white_haired_tone1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDB3", + [":woman_white_haired_tone2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDB3", + [":woman_white_haired_tone3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDB3", + [":woman_white_haired_tone4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDB3", + [":woman_white_haired_tone5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDB3", + [":woman_with_headscarf:"] = "\uD83E\uDDD5", + [":woman_with_headscarf::skin-tone-1:"] = "\uD83E\uDDD5\uD83C\uDFFB", + [":woman_with_headscarf::skin-tone-2:"] = "\uD83E\uDDD5\uD83C\uDFFC", + [":woman_with_headscarf::skin-tone-3:"] = "\uD83E\uDDD5\uD83C\uDFFD", + [":woman_with_headscarf::skin-tone-4:"] = "\uD83E\uDDD5\uD83C\uDFFE", + [":woman_with_headscarf::skin-tone-5:"] = "\uD83E\uDDD5\uD83C\uDFFF", + [":woman_with_headscarf_dark_skin_tone:"] = "\uD83E\uDDD5\uD83C\uDFFF", + [":woman_with_headscarf_light_skin_tone:"] = "\uD83E\uDDD5\uD83C\uDFFB", + [":woman_with_headscarf_medium_dark_skin_tone:"] = "\uD83E\uDDD5\uD83C\uDFFE", + [":woman_with_headscarf_medium_light_skin_tone:"] = "\uD83E\uDDD5\uD83C\uDFFC", + [":woman_with_headscarf_medium_skin_tone:"] = "\uD83E\uDDD5\uD83C\uDFFD", + [":woman_with_headscarf_tone1:"] = "\uD83E\uDDD5\uD83C\uDFFB", + [":woman_with_headscarf_tone2:"] = "\uD83E\uDDD5\uD83C\uDFFC", + [":woman_with_headscarf_tone3:"] = "\uD83E\uDDD5\uD83C\uDFFD", + [":woman_with_headscarf_tone4:"] = "\uD83E\uDDD5\uD83C\uDFFE", + [":woman_with_headscarf_tone5:"] = "\uD83E\uDDD5\uD83C\uDFFF", + [":woman_with_probing_cane:"] = "\uD83D\uDC69\u200D\uD83E\uDDAF", + [":woman_with_probing_cane::skin-tone-1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDAF", + [":woman_with_probing_cane::skin-tone-2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDAF", + [":woman_with_probing_cane::skin-tone-3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDAF", + [":woman_with_probing_cane::skin-tone-4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDAF", + [":woman_with_probing_cane::skin-tone-5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDAF", + [":woman_with_probing_cane_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDAF", + [":woman_with_probing_cane_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDAF", + [":woman_with_probing_cane_medium_dark_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDAF", + [":woman_with_probing_cane_medium_light_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDAF", + [":woman_with_probing_cane_medium_skin_tone:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDAF", + [":woman_with_probing_cane_tone1:"] = "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDAF", + [":woman_with_probing_cane_tone2:"] = "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDAF", + [":woman_with_probing_cane_tone3:"] = "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDAF", + [":woman_with_probing_cane_tone4:"] = "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDAF", + [":woman_with_probing_cane_tone5:"] = "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDAF", + [":woman_zombie:"] = "\uD83E\uDDDF\u200D♀️", + [":womans_clothes:"] = "\uD83D\uDC5A", + [":womans_flat_shoe:"] = "\uD83E\uDD7F", + [":womans_hat:"] = "\uD83D\uDC52", + [":women_with_bunny_ears_partying:"] = "\uD83D\uDC6F\u200D♀️", + [":women_wrestling:"] = "\uD83E\uDD3C\u200D♀️", + [":womens:"] = "\uD83D\uDEBA", + [":woozy_face:"] = "\uD83E\uDD74", + [":world_map:"] = "\uD83D\uDDFA️", + [":worried:"] = "\uD83D\uDE1F", + [":worship_symbol:"] = "\uD83D\uDED0", + [":wrench:"] = "\uD83D\uDD27", + [":wrestlers:"] = "\uD83E\uDD3C", + [":wrestling:"] = "\uD83E\uDD3C", + [":writing_hand:"] = "✍️", + [":writing_hand::skin-tone-1:"] = "✍\uD83C\uDFFB", + [":writing_hand::skin-tone-2:"] = "✍\uD83C\uDFFC", + [":writing_hand::skin-tone-3:"] = "✍\uD83C\uDFFD", + [":writing_hand::skin-tone-4:"] = "✍\uD83C\uDFFE", + [":writing_hand::skin-tone-5:"] = "✍\uD83C\uDFFF", + [":writing_hand_tone1:"] = "✍\uD83C\uDFFB", + [":writing_hand_tone2:"] = "✍\uD83C\uDFFC", + [":writing_hand_tone3:"] = "✍\uD83C\uDFFD", + [":writing_hand_tone4:"] = "✍\uD83C\uDFFE", + [":writing_hand_tone5:"] = "✍\uD83C\uDFFF", + [":x:"] = "❌", + [":yarn:"] = "\uD83E\uDDF6", + [":yawning_face:"] = "\uD83E\uDD71", + [":yellow_circle:"] = "\uD83D\uDFE1", + [":yellow_heart:"] = "\uD83D\uDC9B", + [":yellow_square:"] = "\uD83D\uDFE8", + [":yen:"] = "\uD83D\uDCB4", + [":yin_yang:"] = "☯️", + [":yo_yo:"] = "\uD83E\uDE80", + [":yum:"] = "\uD83D\uDE0B", + [":z"] = "\uD83D\uDE12", + [":zany_face:"] = "\uD83E\uDD2A", + [":zap:"] = "⚡", + [":zebra:"] = "\uD83E\uDD93", + [":zero:"] = "0️⃣", + [":zipper_mouth:"] = "\uD83E\uDD10", + [":zipper_mouth_face:"] = "\uD83E\uDD10", + [":zombie:"] = "\uD83E\uDDDF", + [":zzz:"] = "\uD83D\uDCA4", + [":|"] = "\uD83D\uDE10", + [";("] = "\uD83D\uDE2D", + [";)"] = "\uD83D\uDE09", + [";-("] = "\uD83D\uDE2D", + [";-)"] = "\uD83D\uDE09", + [":("] = "\uD83D\uDE20", + [">:-("] = "\uD83D\uDE20", + [">=("] = "\uD83D\uDE20", + [">=-("] = "\uD83D\uDE20", + ["B-)"] = "\uD83D\uDE0E", + ["O:)"] = "\uD83D\uDE07", + ["O:-)"] = "\uD83D\uDE07", + ["O=)"] = "\uD83D\uDE07", + ["O=-)"] = "\uD83D\uDE07", + ["X-)"] = "\uD83D\uDE06", + ["]:("] = "\uD83D\uDC7F", + ["]:)"] = "\uD83D\uDE08", + ["]:-("] = "\uD83D\uDC7F", + ["]:-)"] = "\uD83D\uDE08", + ["]=("] = "\uD83D\uDC7F", + ["]=)"] = "\uD83D\uDE08", + ["]=-("] = "\uD83D\uDC7F", + ["]=-)"] = "\uD83D\uDE08", + ["o:)"] = "\uD83D\uDE07", + ["o:-)"] = "\uD83D\uDE07", + ["o=)"] = "\uD83D\uDE07", + ["o=-)"] = "\uD83D\uDE07", + ["x-)"] = "\uD83D\uDE06", + ["♡"] = "❤️" + }; + + private static IReadOnlyCollection _unicodes; + private static IReadOnlyCollection Unicodes + { + get + { + _unicodes ??= NamesAndUnicodes.Select(kvp => kvp.Value).ToImmutableHashSet(); + return _unicodes; + } + } + + private static IReadOnlyDictionary> _unicodesAndNames; + private static IReadOnlyDictionary> UnicodesAndNames + { + get + { + _unicodesAndNames ??= + NamesAndUnicodes + .GroupBy(kvp => kvp.Value) + .ToImmutableDictionary( + grouping => grouping.Key, + grouping => grouping.Select(kvp => kvp.Key) + .ToList() + .AsReadOnly() + ); + return _unicodesAndNames; + } + } + + public static implicit operator Emoji(string s) => Parse(s); } } diff --git a/src/Discord.Net.Core/Entities/Emotes/Emote.cs b/src/Discord.Net.Core/Entities/Emotes/Emote.cs index 6054b3f74..cd88f97cc 100644 --- a/src/Discord.Net.Core/Entities/Emotes/Emote.cs +++ b/src/Discord.Net.Core/Entities/Emotes/Emote.cs @@ -102,5 +102,7 @@ namespace Discord /// A string representing the raw presentation of the emote (e.g. <:thonkang:282745590985523200>). /// public override string ToString() => $"<{(Animated ? "a" : "")}:{Name}:{Id}>"; + + public static implicit operator Emote(string s) => Parse(s); } } diff --git a/src/Discord.Net.Core/Entities/Guilds/GuildFeature.cs b/src/Discord.Net.Core/Entities/Guilds/GuildFeature.cs new file mode 100644 index 000000000..e3c325227 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Guilds/GuildFeature.cs @@ -0,0 +1,105 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord +{ + [Flags] + public enum GuildFeature + { + /// + /// The guild has no features. + /// + None = 0, + /// + /// The guild has access to set an animated guild icon. + /// + AnimatedIcon = 1 << 0, + /// + /// The guild has access to set a guild banner image. + /// + Banner = 1 << 1, + /// + /// The guild has access to use commerce features (i.e. create store channels). + /// + Commerce = 1 << 2, + /// + /// The guild can enable welcome screen, Membership Screening, stage channels and discovery, and receives community updates. + /// + Community = 1 << 3, + /// + /// The guild is able to be discovered in the directory. + /// + Discoverable = 1 << 4, + /// + /// The guild is able to be featured in the directory. + /// + Featureable = 1 << 5, + /// + /// The guild has access to set an invite splash background. + /// + InviteSplash = 1 << 6, + /// + /// The guild has enabled Membership Screening. + /// + MemberVerificationGateEnabled = 1 << 7, + /// + /// The guild has enabled monetization. + /// + MonetizationEnabled = 1 << 8, + /// + /// The guild has increased custom sticker slots. + /// + MoreStickers = 1 << 9, + /// + /// The guild has access to create news channels. + /// + News = 1 << 10, + /// + /// The guild is partnered. + /// + Partnered = 1 << 11, + /// + /// The guild can be previewed before joining via Membership Screening or the directory. + /// + PreviewEnabled = 1 << 12, + /// + /// The guild has access to create private threads. + /// + PrivateThreads = 1 << 13, + /// + /// The guild is able to set role icons. + /// + RoleIcons = 1 << 14, + /// + /// The guild has access to the seven day archive time for threads. + /// + SevenDayThreadArchive = 1 << 15, + /// + /// The guild has access to the three day archive time for threads. + /// + ThreeDayThreadArchive = 1 << 16, + /// + /// The guild has enabled ticketed events. + /// + TicketedEventsEnabled = 1 << 17, + /// + /// The guild has access to set a vanity URL. + /// + VanityUrl = 1 << 18, + /// + /// The guild is verified. + /// + Verified = 1 << 19, + /// + /// The guild has access to set 384kbps bitrate in voice (previously VIP voice servers). + /// + VIPRegions = 1 << 20, + /// + /// The guild has enabled the welcome screen. + /// + WelcomeScreenEnabled = 1 << 21, + } +} diff --git a/src/Discord.Net.Core/Entities/Guilds/GuildFeatures.cs b/src/Discord.Net.Core/Entities/Guilds/GuildFeatures.cs new file mode 100644 index 000000000..699e47cf3 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Guilds/GuildFeatures.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord +{ + public class GuildFeatures + { + /// + /// Gets the flags of recognized features for this guild. + /// + public GuildFeature Value { get; } + + /// + /// Gets a collection of experimental features for this guild. + /// + public IReadOnlyCollection Experimental { get; } + + + internal GuildFeatures(GuildFeature value, string[] experimental) + { + Value = value; + Experimental = experimental.ToImmutableArray(); + } + + public bool HasFeature(GuildFeature feature) + => Value.HasFlag(feature); + public bool HasFeature(string feature) + => Experimental.Contains(feature); + + internal void EnsureFeature(GuildFeature feature) + { + if (!HasFeature(feature)) + { + var vals = Enum.GetValues(typeof(GuildFeature)).Cast(); + + var missingValues = vals.Where(x => feature.HasFlag(x) && !Value.HasFlag(x)); + + throw new InvalidOperationException($"Missing required guild feature{(missingValues.Count() > 1 ? "s" : "")} {string.Join(", ", missingValues.Select(x => x.ToString()))} in order to execute this operation."); + } + } + } +} diff --git a/src/Discord.Net.Core/Entities/Guilds/GuildProperties.cs b/src/Discord.Net.Core/Entities/Guilds/GuildProperties.cs index 981e1198c..d50b2ac38 100644 --- a/src/Discord.Net.Core/Entities/Guilds/GuildProperties.cs +++ b/src/Discord.Net.Core/Entities/Guilds/GuildProperties.cs @@ -85,8 +85,9 @@ namespace Discord /// given that the has also been set. /// A value of will deny guild boost messages from being sent, and allow all /// other types of messages. - /// Refer to the extension methods and - /// to check if these system channel message types + /// Refer to the extension methods , + /// , , + /// and to check if these system channel message types /// are enabled, without the need to manipulate the logic of the flag. /// public Optional SystemChannelFlags { get; set; } @@ -108,5 +109,9 @@ namespace Discord /// the value of will be unused. /// public Optional PreferredCulture { get; set; } + /// + /// Gets or sets if the boost progress bar is enabled. + /// + public Optional IsBoostProgressBarEnabled { get; set; } } } diff --git a/src/Discord.Net.Core/Entities/Guilds/GuildScheduledEventPrivacyLevel.cs b/src/Discord.Net.Core/Entities/Guilds/GuildScheduledEventPrivacyLevel.cs new file mode 100644 index 000000000..87881104c --- /dev/null +++ b/src/Discord.Net.Core/Entities/Guilds/GuildScheduledEventPrivacyLevel.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord +{ + /// + /// Represents the privacy level of a guild scheduled event. + /// + public enum GuildScheduledEventPrivacyLevel + { + /// + /// The scheduled event is public and available in discovery. + /// + [Obsolete("This event type isn't supported yet! check back later.", true)] + Public = 1, + + /// + /// The scheduled event is only accessible to guild members. + /// + Private = 2, + } +} diff --git a/src/Discord.Net.Core/Entities/Guilds/GuildScheduledEventStatus.cs b/src/Discord.Net.Core/Entities/Guilds/GuildScheduledEventStatus.cs new file mode 100644 index 000000000..6e3aa1ab3 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Guilds/GuildScheduledEventStatus.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord +{ + /// + /// Represents the status of a guild event. + /// + public enum GuildScheduledEventStatus + { + /// + /// The event is scheduled for a set time. + /// + Scheduled = 1, + + /// + /// The event has started. + /// + Active = 2, + + /// + /// The event was completed. + /// + Completed = 3, + + /// + /// The event was canceled. + /// + Cancelled = 4, + } +} diff --git a/src/Discord.Net.Core/Entities/Guilds/GuildScheduledEventType.cs b/src/Discord.Net.Core/Entities/Guilds/GuildScheduledEventType.cs new file mode 100644 index 000000000..ad741eee1 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Guilds/GuildScheduledEventType.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord +{ + /// + /// Represents the type of a guild scheduled event. + /// + public enum GuildScheduledEventType + { + /// + /// The event doesn't have a set type. + /// + None = 0, + + /// + /// The event is set in a stage channel. + /// + Stage = 1, + + /// + /// The event is set in a voice channel. + /// + Voice = 2, + + /// + /// The event is set for somewhere externally from discord. + /// + External = 3, + } +} diff --git a/src/Discord.Net.Core/Entities/Guilds/GuildScheduledEventsProperties.cs b/src/Discord.Net.Core/Entities/Guilds/GuildScheduledEventsProperties.cs new file mode 100644 index 000000000..a3fd729e5 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Guilds/GuildScheduledEventsProperties.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord +{ + /// + /// Provides properties that are used to modify an with the specified changes. + /// + public class GuildScheduledEventsProperties + { + /// + /// Gets or sets the channel id of the event. + /// + public Optional ChannelId { get; set; } + + /// + /// Gets or sets the location of this event. + /// + public Optional Location { get; set; } + + /// + /// Gets or sets the name of the event. + /// + public Optional Name { get; set; } + + /// + /// Gets or sets the privacy level of the event. + /// + public Optional PrivacyLevel { get; set; } + + /// + /// Gets or sets the start time of the event. + /// + public Optional StartTime { get; set; } + /// + /// Gets or sets the end time of the event. + /// + public Optional EndTime { get; set; } + + /// + /// Gets or sets the description of the event. + /// + public Optional Description { get; set; } + + /// + /// Gets or sets the type of the event. + /// + public Optional Type { get; set; } + + /// + /// Gets or sets the status of the event. + /// + public Optional Status { get; set; } + } +} diff --git a/src/Discord.Net.Core/Entities/Guilds/IGuild.cs b/src/Discord.Net.Core/Entities/Guilds/IGuild.cs index b8fd858df..ebf2ccd4a 100644 --- a/src/Discord.Net.Core/Entities/Guilds/IGuild.cs +++ b/src/Discord.Net.Core/Entities/Guilds/IGuild.cs @@ -2,6 +2,7 @@ using Discord.Audio; using System; using System.Collections.Generic; using System.Globalization; +using System.IO; using System.Threading.Tasks; namespace Discord @@ -199,12 +200,19 @@ namespace Discord /// IReadOnlyCollection Emotes { get; } /// - /// Gets a collection of all extra features added to this guild. + /// Gets a collection of all custom stickers for this guild. /// /// - /// A read-only collection of enabled features in this guild. + /// A read-only collection of all custom stickers for this guild. /// - IReadOnlyCollection Features { get; } + IReadOnlyCollection Stickers { get; } + /// + /// Gets the features for this guild. + /// + /// + /// A flags enum containing all the features for the guild. + /// + GuildFeatures Features { get; } /// /// Gets a collection of all roles in this guild. /// @@ -316,6 +324,14 @@ namespace Discord /// string PreferredLocale { get; } + /// + /// Gets the NSFW level of this guild. + /// + /// + /// The NSFW level of this guild. + /// + NsfwLevel NsfwLevel { get; } + /// /// Gets the preferred culture of this guild. /// @@ -323,6 +339,13 @@ namespace Discord /// The preferred culture information of this guild. /// CultureInfo PreferredCulture { get; } + /// + /// Gets whether the guild has the boost progress bar enabled. + /// + /// + /// if the boost progress bar is enabled; otherwise . + /// + bool IsBoostProgressBarEnabled { get; } /// /// Modifies this guild. @@ -522,6 +545,27 @@ namespace Discord /// Task GetVoiceChannelAsync(ulong id, CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); /// + /// Gets a stage channel in this guild. + /// + /// The snowflake identifier for the stage channel. + /// The that determines whether the object should be fetched from cache. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains the stage channel associated + /// with the specified ; if none is found. + /// + Task GetStageChannelAsync(ulong id, CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); + /// + /// Gets a collection of all stage channels in this guild. + /// + /// The that determines whether the object should be fetched from cache. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains a read-only collection of + /// stage channels found within this guild. + /// + Task> GetStageChannelsAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); + /// /// Gets the AFK voice channel in this guild. /// /// The that determines whether the object should be fetched from cache. @@ -572,15 +616,35 @@ namespace Discord /// Task GetRulesChannelAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); /// - /// Gets the text channel channel where admins and moderators of Community guilds receive notices from Discord. + /// Gets the text channel where admins and moderators of Community guilds receive notices from Discord. /// /// The that determines whether the object should be fetched from cache. /// The options to be used when sending the request. /// - /// A task that represents the asynchronous get operation. The task result contains the text channel channel where + /// A task that represents the asynchronous get operation. The task result contains the text channel where /// admins and moderators of Community guilds receive notices from Discord; if none is set. /// Task GetPublicUpdatesChannelAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); + /// + /// Gets a thread channel within this guild. + /// + /// The id of the thread channel. + /// The that determines whether the object should be fetched from cache. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains the thread channel. + /// + Task GetThreadChannelAsync(ulong id, CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); + /// + /// Gets a collection of all thread channels in this guild. + /// + /// The that determines whether the object should be fetched from cache. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains a read-only collection of + /// thread channels found within this guild. + /// + Task> GetThreadChannelsAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); /// /// Creates a new text channel in this guild. @@ -610,6 +674,17 @@ namespace Discord /// Task CreateVoiceChannelAsync(string name, Action func = null, RequestOptions options = null); /// + /// Creates a new stage channel in this guild. + /// + /// The new name for the stage channel. + /// The delegate containing the properties to be applied to the channel upon its creation. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous creation operation. The task result contains the newly created + /// stage channel. + /// + Task CreateStageChannelAsync(string name, Action func = null, RequestOptions options = null); + /// /// Creates a new channel category in this guild. /// /// The new name for the category. @@ -703,6 +778,12 @@ namespace Discord /// A guild user associated with the specified ; if the user is already in the guild. Task AddGuildUserAsync(ulong userId, string accessToken, Action func = null, RequestOptions options = null); /// + /// Disconnects the user from its current voice channel. + /// + /// The user to disconnect. + /// A task that represents the asynchronous operation for disconnecting a user. + Task DisconnectAsync(IGuildUser user); + /// /// Gets a collection of all users in this guild. /// /// @@ -760,7 +841,7 @@ namespace Discord /// Downloads all users for this guild if the current list is incomplete. /// /// - /// This method downloads all users found within this guild throught the Gateway and caches them. + /// This method downloads all users found within this guild through the Gateway and caches them. /// /// /// A task that represents the asynchronous download operation. @@ -883,6 +964,15 @@ namespace Discord /// emote. /// Task ModifyEmoteAsync(GuildEmote emote, Action func, RequestOptions options = null); + + /// + /// Moves the user to the voice channel. + /// + /// The user to move. + /// the channel where the user gets moved to. + /// A task that represents the asynchronous operation for moving a user. + Task MoveAsync(IGuildUser user, IVoiceChannel targetChannel); + /// /// Deletes an existing from this guild. /// @@ -892,5 +982,174 @@ namespace Discord /// A task that represents the asynchronous removal operation. /// Task DeleteEmoteAsync(GuildEmote emote, RequestOptions options = null); + + /// + /// Creates a new sticker in this guild. + /// + /// The name of the sticker. + /// The description of the sticker. + /// The tags of the sticker. + /// The image of the new emote. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous creation operation. The task result contains the created sticker. + /// + Task CreateStickerAsync(string name, string description, IEnumerable tags, Image image, RequestOptions options = null); + + /// + /// Creates a new sticker in this guild. + /// + /// The name of the sticker. + /// The description of the sticker. + /// The tags of the sticker. + /// The path of the file to upload. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous creation operation. The task result contains the created sticker. + /// + Task CreateStickerAsync(string name, string description, IEnumerable tags, string path, RequestOptions options = null); + + /// + /// Creates a new sticker in this guild. + /// + /// The name of the sticker. + /// The description of the sticker. + /// The tags of the sticker. + /// The stream containing the file data. + /// The name of the file with the extension, ex: image.png. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous creation operation. The task result contains the created sticker. + /// + Task CreateStickerAsync(string name, string description, IEnumerable tags, Stream stream, string filename, RequestOptions options = null); + + /// + /// Gets a specific sticker within this guild. + /// + /// The id of the sticker to get. + /// The that determines whether the object should be fetched from cache. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains the sticker found with the + /// specified ; if none is found. + /// + Task GetStickerAsync(ulong id, CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); + + /// + /// Gets a collection of all stickers within this guild. + /// + /// The that determines whether the object should be fetched from cache. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains a read-only collection + /// of stickers found within the guild. + /// + Task> GetStickersAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); + + /// + /// Deletes a sticker within this guild. + /// + /// The sticker to delete. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous removal operation. + /// + Task DeleteStickerAsync(ICustomSticker sticker, RequestOptions options = null); + + /// + /// Gets a event within this guild. + /// + /// The id of the event. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. + /// + Task GetEventAsync(ulong id, RequestOptions options = null); + + /// + /// Gets a collection of events within this guild. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. + /// + Task> GetEventsAsync(RequestOptions options = null); + + /// + /// Creates an event within this guild. + /// + /// The name of the event. + /// The privacy level of the event. + /// The start time of the event. + /// The type of the event. + /// The description of the event. + /// The end time of the event. + /// + /// The channel id of the event. + /// + /// The event must have a type of or + /// in order to use this property. + /// + /// + /// A collection of speakers for the event. + /// The location of the event; links are supported + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous create operation. + /// + Task CreateEventAsync( + string name, + DateTimeOffset startTime, + GuildScheduledEventType type, + GuildScheduledEventPrivacyLevel privacyLevel = GuildScheduledEventPrivacyLevel.Private, + string description = null, + DateTimeOffset? endTime = null, + ulong? channelId = null, + string location = null, + RequestOptions options = null); + + /// + /// Gets this guilds application commands. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains a read-only collection + /// of application commands found within the guild. + /// + Task> GetApplicationCommandsAsync(RequestOptions options = null); + + /// + /// Gets an application command within this guild with the specified id. + /// + /// The id of the application command to get. + /// The that determines whether the object should be fetched from cache. + /// The options to be used when sending the request. + /// + /// A ValueTask that represents the asynchronous get operation. The task result contains a + /// if found, otherwise . + /// + Task GetApplicationCommandAsync(ulong id, CacheMode mode = CacheMode.AllowDownload, + RequestOptions options = null); + + /// + /// Creates an application command within this guild. + /// + /// The properties to use when creating the command. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous creation operation. The task result contains the command that was created. + /// + Task CreateApplicationCommandAsync(ApplicationCommandProperties properties, RequestOptions options = null); + + /// + /// Overwrites the application commands within this guild. + /// + /// A collection of properties to use when creating the commands. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous creation operation. The task result contains a collection of commands that was created. + /// + Task> BulkOverwriteApplicationCommandsAsync(ApplicationCommandProperties[] properties, + RequestOptions options = null); } } diff --git a/src/Discord.Net.Core/Entities/Guilds/IGuildScheduledEvent.cs b/src/Discord.Net.Core/Entities/Guilds/IGuildScheduledEvent.cs new file mode 100644 index 000000000..e50f4cc2b --- /dev/null +++ b/src/Discord.Net.Core/Entities/Guilds/IGuildScheduledEvent.cs @@ -0,0 +1,170 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord +{ + /// + /// Represents a generic guild scheduled event. + /// + public interface IGuildScheduledEvent : IEntity + { + /// + /// Gets the guild this event is scheduled in. + /// + IGuild Guild { get; } + + /// + /// Gets the optional channel id where this event will be hosted. + /// + ulong? ChannelId { get; } + + /// + /// Gets the user who created the event. + /// + IUser Creator { get; } + + /// + /// Gets the name of the event. + /// + string Name { get; } + + /// + /// Gets the description of the event. + /// + /// + /// This field is when the event doesn't have a discription. + /// + string Description { get; } + + /// + /// Gets the start time of the event. + /// + DateTimeOffset StartTime { get; } + + /// + /// Gets the optional end time of the event. + /// + DateTimeOffset? EndTime { get; } + + /// + /// Gets the privacy level of the event. + /// + GuildScheduledEventPrivacyLevel PrivacyLevel { get; } + + /// + /// Gets the status of the event. + /// + GuildScheduledEventStatus Status { get; } + + /// + /// Gets the type of the event. + /// + GuildScheduledEventType Type { get; } + + /// + /// Gets the optional entity id of the event. The "entity" of the event + /// can be a stage instance event as is seperate from . + /// + ulong? EntityId { get; } + + /// + /// Gets the location of the event if the is external. + /// + string Location { get; } + + /// + /// Gets the user count of the event. + /// + int? UserCount { get; } + + /// + /// Starts the event. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous start operation. + /// + Task StartAsync(RequestOptions options = null); + /// + /// Ends or canceles the event. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous end operation. + /// + Task EndAsync(RequestOptions options = null); + + /// + /// Modifies the guild event. + /// + /// The delegate containing the properties to modify the event with. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous modification operation. + /// + Task ModifyAsync(Action func, RequestOptions options = null); + + /// + /// Deletes the current event. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous delete operation. + /// + Task DeleteAsync(RequestOptions options = null); + + /// + /// Gets a collection of N users interested in the event. + /// + /// + /// + /// The returned collection is an asynchronous enumerable object; one must call + /// to access the individual messages as a + /// collection. + /// + /// This method will attempt to fetch all users that are interested in the event. + /// The library will attempt to split up the requests according to and . + /// In other words, if there are 300 users, and the constant + /// is 100, the request will be split into 3 individual requests; thus returning 3 individual asynchronous + /// responses, hence the need of flattening. + /// + /// The options to be used when sending the request. + /// + /// Paged collection of users. + /// + IAsyncEnumerable> GetUsersAsync(RequestOptions options = null); + + /// + /// Gets a collection of N users interested in the event. + /// + /// + /// + /// The returned collection is an asynchronous enumerable object; one must call + /// to access the individual users as a + /// collection. + /// + /// + /// Do not fetch too many users at once! This may cause unwanted preemptive rate limit or even actual + /// rate limit, causing your bot to freeze! + /// + /// This method will attempt to fetch the number of users specified under around + /// the user depending on the . The library will + /// attempt to split up the requests according to your and + /// . In other words, should the user request 500 users, + /// and the constant is 100, the request will + /// be split into 5 individual requests; thus returning 5 individual asynchronous responses, hence the need + /// of flattening. + /// + /// The ID of the starting user to get the users from. + /// The direction of the users to be gotten from. + /// The numbers of users to be gotten from. + /// The options to be used when sending the request. + /// + /// Paged collection of users. + /// + IAsyncEnumerable> GetUsersAsync(ulong fromUserId, Direction dir, int limit = DiscordConfig.MaxGuildEventUsersPerBatch, RequestOptions options = null); + } +} diff --git a/src/Discord.Net.Core/Entities/Guilds/NsfwLevel.cs b/src/Discord.Net.Core/Entities/Guilds/NsfwLevel.cs new file mode 100644 index 000000000..e3ac345d9 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Guilds/NsfwLevel.cs @@ -0,0 +1,22 @@ +namespace Discord +{ + public enum NsfwLevel + { + /// + /// Default or unset. + /// + Default = 0, + /// + /// Guild has extremely suggestive or mature content that would only be suitable for users 18 or over. + /// + Explicit = 1, + /// + /// Guild has no content that could be deemed NSFW; in other words, SFW. + /// + Safe = 2, + /// + /// Guild has mildly NSFW content that may not be suitable for users under 18. + /// + AgeRestricted = 3 + } +} \ No newline at end of file diff --git a/src/Discord.Net.Core/Entities/Guilds/SystemChannelMessageDeny.cs b/src/Discord.Net.Core/Entities/Guilds/SystemChannelMessageDeny.cs index 3f69693d0..06de7b812 100644 --- a/src/Discord.Net.Core/Entities/Guilds/SystemChannelMessageDeny.cs +++ b/src/Discord.Net.Core/Entities/Guilds/SystemChannelMessageDeny.cs @@ -17,6 +17,14 @@ namespace Discord /// /// Deny the messages that are sent when a user boosts the guild. /// - GuildBoost = 0b10 + GuildBoost = 0b10, + /// + /// Deny the messages that are related to guild setup. + /// + GuildSetupTip = 0b100, + /// + /// Deny the reply with sticker button on welcome messages. + /// + WelcomeMessageReply = 0b1000 } } diff --git a/src/Discord.Net.Core/Entities/IApplication.cs b/src/Discord.Net.Core/Entities/IApplication.cs index 2174baff9..9f9881340 100644 --- a/src/Discord.Net.Core/Entities/IApplication.cs +++ b/src/Discord.Net.Core/Entities/IApplication.cs @@ -1,3 +1,5 @@ +using System.Collections.Generic; + namespace Discord { /// @@ -16,8 +18,16 @@ namespace Discord /// /// Gets the RPC origins of the application. /// - string[] RPCOrigins { get; } - ulong Flags { get; } + IReadOnlyCollection RPCOrigins { get; } + ApplicationFlags Flags { get; } + /// + /// Gets a collection of install parameters for this application. + /// + ApplicationInstallParams InstallParams { get; } + /// + /// Gets a collection of tags related to the application. + /// + IReadOnlyCollection Tags { get; } /// /// Gets the icon URL of the application. /// diff --git a/src/Discord.Net.Core/Entities/Interactions/ApplicationCommandOption.cs b/src/Discord.Net.Core/Entities/Interactions/ApplicationCommandOption.cs new file mode 100644 index 000000000..9a69d9d18 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/ApplicationCommandOption.cs @@ -0,0 +1,95 @@ +using System; +using System.Collections.Generic; +using System.Text.RegularExpressions; + +namespace Discord +{ + /// + /// Represents a for making slash commands. + /// + public class ApplicationCommandOptionProperties + { + private string _name; + private string _description; + + /// + /// Gets or sets the name of this option. + /// + public string Name + { + get => _name; + set + { + if (value == null) + throw new ArgumentNullException(nameof(value), $"{nameof(Name)} cannot be null."); + + if (value.Length > 32) + throw new ArgumentOutOfRangeException(nameof(value), "Name length must be less than or equal to 32."); + + if (!Regex.IsMatch(value, @"^[\w-]{1,32}$")) + throw new FormatException($"{nameof(value)} must match the regex ^[\\w-]{{1,32}}$"); + + _name = value; + } + } + + /// + /// Gets or sets the description of this option. + /// + public string Description + { + get => _description; + set => _description = value?.Length switch + { + > 100 => throw new ArgumentOutOfRangeException(nameof(value), "Description length must be less than or equal to 100."), + 0 => throw new ArgumentOutOfRangeException(nameof(value), "Description length must be at least 1."), + _ => value + }; + } + + /// + /// Gets or sets the type of this option. + /// + public ApplicationCommandOptionType Type { get; set; } + + /// + /// Gets or sets whether or not this options is the first required option for the user to complete. only one option can be default. + /// + public bool? IsDefault { get; set; } + + /// + /// Gets or sets if the option is required. + /// + public bool? IsRequired { get; set; } + + /// + /// Gets or sets whether or not this option supports autocomplete. + /// + public bool IsAutocomplete { get; set; } + + /// + /// Gets or sets the smallest number value the user can input. + /// + public double? MinValue { get; set; } + + /// + /// Gets or sets the largest number value the user can input. + /// + public double? MaxValue { get; set; } + + /// + /// Gets or sets the choices for string and int types for the user to pick from. + /// + public List Choices { get; set; } + + /// + /// Gets or sets if this option is a subcommand or subcommand group type, these nested options will be the parameters. + /// + public List Options { get; set; } + + /// + /// Gets or sets the allowed channel types for this option. + /// + public List ChannelTypes { get; set; } + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/ApplicationCommandOptionChoice.cs b/src/Discord.Net.Core/Entities/Interactions/ApplicationCommandOptionChoice.cs new file mode 100644 index 000000000..6a908b075 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/ApplicationCommandOptionChoice.cs @@ -0,0 +1,44 @@ +using System; + +namespace Discord +{ + /// + /// Represents a choice for a . This class is used when making new commands. + /// + public class ApplicationCommandOptionChoiceProperties + { + private string _name; + private object _value; + + /// + /// Gets or sets the name of this choice. + /// + public string Name + { + get => _name; + set => _name = value?.Length switch + { + > 100 => throw new ArgumentOutOfRangeException(nameof(value), "Name length must be less than or equal to 100."), + 0 => throw new ArgumentOutOfRangeException(nameof(value), "Name length must at least 1."), + _ => value + }; + } + + /// + /// Gets the value of this choice. + /// + /// Discord only accepts int, double/floats, and string as the input. + /// + /// + public object Value + { + get => _value; + set + { + if (value != null && value is not string && !value.IsNumericType()) + throw new ArgumentException("The value of a choice must be a string or a numeric type!"); + _value = value; + } + } + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/ApplicationCommandOptionType.cs b/src/Discord.Net.Core/Entities/Interactions/ApplicationCommandOptionType.cs new file mode 100644 index 000000000..0f919f1f6 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/ApplicationCommandOptionType.cs @@ -0,0 +1,58 @@ +namespace Discord +{ + /// + /// The option type of the Slash command parameter, See the discord docs. + /// + public enum ApplicationCommandOptionType : byte + { + /// + /// A sub command. + /// + SubCommand = 1, + + /// + /// A group of sub commands. + /// + SubCommandGroup = 2, + + /// + /// A of text. + /// + String = 3, + + /// + /// An . + /// + Integer = 4, + + /// + /// A . + /// + Boolean = 5, + + /// + /// A . + /// + User = 6, + + /// + /// A . + /// + Channel = 7, + + /// + /// A . + /// + Role = 8, + + /// + /// A or . + /// + Mentionable = 9, + + /// + /// A . + /// + Number = 10 + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/ApplicationCommandProperties.cs b/src/Discord.Net.Core/Entities/Interactions/ApplicationCommandProperties.cs new file mode 100644 index 000000000..501a0e905 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/ApplicationCommandProperties.cs @@ -0,0 +1,22 @@ +namespace Discord +{ + /// + /// Represents the base class to create/modify application commands. + /// + public abstract class ApplicationCommandProperties + { + internal abstract ApplicationCommandType Type { get; } + + /// + /// Gets or sets the name of this command. + /// + public Optional Name { get; set; } + + /// + /// Gets or sets whether the command is enabled by default when the app is added to a guild. Default is + /// + public Optional IsDefaultPermission { get; set; } + + internal ApplicationCommandProperties() { } + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/ApplicationCommandTypes.cs b/src/Discord.Net.Core/Entities/Interactions/ApplicationCommandTypes.cs new file mode 100644 index 000000000..8cd31a420 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/ApplicationCommandTypes.cs @@ -0,0 +1,23 @@ +namespace Discord +{ + /// + /// Represents the types of application commands. + /// + public enum ApplicationCommandType : byte + { + /// + /// A Slash command type + /// + Slash = 1, + + /// + /// A Context Menu User command type + /// + User = 2, + + /// + /// A Context Menu Message command type + /// + Message = 3 + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/AutocompleteOption.cs b/src/Discord.Net.Core/Entities/Interactions/AutocompleteOption.cs new file mode 100644 index 000000000..eb22a9d27 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/AutocompleteOption.cs @@ -0,0 +1,36 @@ +namespace Discord +{ + /// + /// Represents an autocomplete option. + /// + public class AutocompleteOption + { + /// + /// Gets the type of this option. + /// + public ApplicationCommandOptionType Type { get; } + + /// + /// Gets the name of the option. + /// + public string Name { get; } + + /// + /// Gets the value of the option. + /// + public object Value { get; } + + /// + /// Gets whether or not this option is focused by the executing user. + /// + public bool Focused { get; } + + internal AutocompleteOption(ApplicationCommandOptionType type, string name, object value, bool focused) + { + Type = type; + Name = name; + Value = value; + Focused = focused; + } + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/AutocompleteResult.cs b/src/Discord.Net.Core/Entities/Interactions/AutocompleteResult.cs new file mode 100644 index 000000000..0603a5a50 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/AutocompleteResult.cs @@ -0,0 +1,73 @@ +using System; + +namespace Discord +{ + /// + /// Represents a result to an autocomplete interaction. + /// + public class AutocompleteResult + { + private object _value; + private string _name; + + /// + /// Gets or sets the name of the result. + /// + /// + /// Name cannot be null and has to be between 1-100 characters in length. + /// + /// + /// + public string Name + { + get => _name; + set + { + if (value == null) + throw new ArgumentNullException(nameof(value), $"{nameof(Name)} cannot be null."); + _name = value.Length switch + { + > 100 => throw new ArgumentOutOfRangeException(nameof(value), "Name length must be less than or equal to 100."), + 0 => throw new ArgumentOutOfRangeException(nameof(value), "Name length must be at least 1."), + _ => value + }; + } + } + + /// + /// Gets or sets the value of the result. + /// + /// + /// Only , , and are allowed for a value. + /// + /// + /// + public object Value + { + get => _value; + set + { + if (value is not string && !value.IsNumericType()) + throw new ArgumentException($"{nameof(value)} must be a numeric type or a string!"); + + _value = value; + } + } + + /// + /// Creates a new . + /// + public AutocompleteResult() { } + + /// + /// Creates a new with the passed in and . + /// + /// + /// + public AutocompleteResult(string name, object value) + { + Name = name; + Value = value; + } + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/ContextMenus/IMessageCommandInteraction.cs b/src/Discord.Net.Core/Entities/Interactions/ContextMenus/IMessageCommandInteraction.cs new file mode 100644 index 000000000..b1b331e8b --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/ContextMenus/IMessageCommandInteraction.cs @@ -0,0 +1,13 @@ +namespace Discord +{ + /// + /// Represents a Message Command interaction. + /// + public interface IMessageCommandInteraction : IDiscordInteraction + { + /// + /// Gets the data associated with this interaction. + /// + new IMessageCommandInteractionData Data { get; } + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/ContextMenus/IMessageCommandInteractionData.cs b/src/Discord.Net.Core/Entities/Interactions/ContextMenus/IMessageCommandInteractionData.cs new file mode 100644 index 000000000..311eef2d6 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/ContextMenus/IMessageCommandInteractionData.cs @@ -0,0 +1,13 @@ +namespace Discord +{ + /// + /// Represents the data tied with the interaction. + /// + public interface IMessageCommandInteractionData : IApplicationCommandInteractionData + { + /// + /// Gets the message associated with this message command. + /// + IMessage Message { get; } + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/ContextMenus/IUserCommandInteraction.cs b/src/Discord.Net.Core/Entities/Interactions/ContextMenus/IUserCommandInteraction.cs new file mode 100644 index 000000000..f7cfd67f0 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/ContextMenus/IUserCommandInteraction.cs @@ -0,0 +1,13 @@ +namespace Discord +{ + /// + /// Represents a User Command interaction. + /// + public interface IUserCommandInteraction : IDiscordInteraction + { + /// + /// Gets the data associated with this interaction. + /// + new IUserCommandInteractionData Data { get; } + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/ContextMenus/IUserCommandInteractionData.cs b/src/Discord.Net.Core/Entities/Interactions/ContextMenus/IUserCommandInteractionData.cs new file mode 100644 index 000000000..36e482ec9 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/ContextMenus/IUserCommandInteractionData.cs @@ -0,0 +1,13 @@ +namespace Discord +{ + /// + /// Represents the data tied with the interaction. + /// + public interface IUserCommandInteractionData : IApplicationCommandInteractionData + { + /// + /// Gets the user who this command targets. + /// + IUser User { get; } + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/ContextMenus/MessageCommandBuilder.cs b/src/Discord.Net.Core/Entities/Interactions/ContextMenus/MessageCommandBuilder.cs new file mode 100644 index 000000000..c7a7cf741 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/ContextMenus/MessageCommandBuilder.cs @@ -0,0 +1,77 @@ +namespace Discord +{ + /// + /// A class used to build Message commands. + /// + public class MessageCommandBuilder + { + /// + /// Returns the maximum length a commands name allowed by Discord + /// + public const int MaxNameLength = 32; + + /// + /// Gets or sets the name of this Message command. + /// + public string Name + { + get => _name; + set + { + Preconditions.NotNullOrEmpty(value, nameof(Name)); + Preconditions.AtLeast(value.Length, 1, nameof(Name)); + Preconditions.AtMost(value.Length, MaxNameLength, nameof(Name)); + + _name = value; + } + } + + /// + /// Gets or sets whether the command is enabled by default when the app is added to a guild + /// + public bool IsDefaultPermission { get; set; } = true; + + private string _name; + + /// + /// Build the current builder into a class. + /// + /// + /// A that can be used to create message commands. + /// + public MessageCommandProperties Build() + { + var props = new MessageCommandProperties + { + Name = Name, + IsDefaultPermission = IsDefaultPermission + }; + + return props; + } + + /// + /// Sets the field name. + /// + /// The value to set the field name to. + /// + /// The current builder. + /// + public MessageCommandBuilder WithName(string name) + { + Name = name; + return this; + } + + /// + /// Sets the default permission of the current command. + /// + /// The default permission value to set. + /// The current builder. + public MessageCommandBuilder WithDefaultPermission(bool isDefaultPermission) + { + IsDefaultPermission = isDefaultPermission; + return this; + } + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/ContextMenus/MessageCommandProperties.cs b/src/Discord.Net.Core/Entities/Interactions/ContextMenus/MessageCommandProperties.cs new file mode 100644 index 000000000..356ed23d6 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/ContextMenus/MessageCommandProperties.cs @@ -0,0 +1,10 @@ +namespace Discord +{ + /// + /// A class used to create message commands. + /// + public class MessageCommandProperties : ApplicationCommandProperties + { + internal override ApplicationCommandType Type => ApplicationCommandType.Message; + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/ContextMenus/UserCommandBuilder.cs b/src/Discord.Net.Core/Entities/Interactions/ContextMenus/UserCommandBuilder.cs new file mode 100644 index 000000000..bd1078be3 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/ContextMenus/UserCommandBuilder.cs @@ -0,0 +1,75 @@ +namespace Discord +{ + /// + /// A class used to build user commands. + /// + public class UserCommandBuilder + { + /// + /// Returns the maximum length a commands name allowed by Discord. + /// + public const int MaxNameLength = 32; + + /// + /// Gets or sets the name of this User command. + /// + public string Name + { + get => _name; + set + { + Preconditions.NotNullOrEmpty(value, nameof(Name)); + Preconditions.AtLeast(value.Length, 1, nameof(Name)); + Preconditions.AtMost(value.Length, MaxNameLength, nameof(Name)); + + _name = value; + } + } + + /// + /// Gets or sets whether the command is enabled by default when the app is added to a guild. + /// + public bool IsDefaultPermission { get; set; } = true; + + private string _name; + + /// + /// Build the current builder into a class. + /// + /// A that can be used to create user commands. + public UserCommandProperties Build() + { + var props = new UserCommandProperties + { + Name = Name, + IsDefaultPermission = IsDefaultPermission + }; + + return props; + } + + /// + /// Sets the field name. + /// + /// The value to set the field name to. + /// + /// The current builder. + /// + public UserCommandBuilder WithName(string name) + { + Name = name; + return this; + } + + /// + /// Sets the default permission of the current command. + /// + /// The default permission value to set. + /// The current builder. + public UserCommandBuilder WithDefaultPermission(bool isDefaultPermission) + { + IsDefaultPermission = isDefaultPermission; + return this; + } + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/ContextMenus/UserCommandProperties.cs b/src/Discord.Net.Core/Entities/Interactions/ContextMenus/UserCommandProperties.cs new file mode 100644 index 000000000..c42e916d9 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/ContextMenus/UserCommandProperties.cs @@ -0,0 +1,10 @@ +namespace Discord +{ + /// + /// A class used to create User commands. + /// + public class UserCommandProperties : ApplicationCommandProperties + { + internal override ApplicationCommandType Type => ApplicationCommandType.User; + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/IApplicationCommand.cs b/src/Discord.Net.Core/Entities/Interactions/IApplicationCommand.cs new file mode 100644 index 000000000..72045a52a --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/IApplicationCommand.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace Discord +{ + /// + /// The base command model that belongs to an application. + /// + public interface IApplicationCommand : ISnowflakeEntity, IDeletable + { + /// + /// Gets the unique id of the parent application. + /// + ulong ApplicationId { get; } + + /// + /// Gets the type of the command. + /// + ApplicationCommandType Type { get; } + + /// + /// Gets the name of the command. + /// + string Name { get; } + + /// + /// Gets the description of the command. + /// + string Description { get; } + + /// + /// Gets whether the command is enabled by default when the app is added to a guild. + /// + bool IsDefaultPermission { get; } + + /// + /// Gets a collection of options for this application command. + /// + IReadOnlyCollection Options { get; } + + /// + /// Modifies the current application command. + /// + /// The new properties to use when modifying the command. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous modification operation. + /// + Task ModifyAsync(Action func, RequestOptions options = null); + + /// + /// Modifies the current application command. + /// + /// The new properties to use when modifying the command. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous modification operation. + /// + /// Thrown when you pass in an invalid type. + Task ModifyAsync(Action func, RequestOptions options = null) + where TArg : ApplicationCommandProperties; + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/IApplicationCommandInteractionData.cs b/src/Discord.Net.Core/Entities/Interactions/IApplicationCommandInteractionData.cs new file mode 100644 index 000000000..428f20fb6 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/IApplicationCommandInteractionData.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; + +namespace Discord +{ + /// + /// Represents data of an Interaction Command, see . + /// + public interface IApplicationCommandInteractionData : IDiscordInteractionData + { + /// + /// Gets the snowflake id of this command. + /// + ulong Id { get; } + + /// + /// Gets the name of this command. + /// + string Name { get; } + + /// + /// Gets the options that the user has provided. + /// + IReadOnlyCollection Options { get; } + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/IApplicationCommandInteractionDataOption.cs b/src/Discord.Net.Core/Entities/Interactions/IApplicationCommandInteractionDataOption.cs new file mode 100644 index 000000000..072d2b32b --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/IApplicationCommandInteractionDataOption.cs @@ -0,0 +1,33 @@ +using System.Collections.Generic; + +namespace Discord +{ + /// + /// Represents a option group for a command. + /// + public interface IApplicationCommandInteractionDataOption + { + /// + /// Gets the name of the parameter. + /// + string Name { get; } + + /// + /// Gets the value of the pair. + /// + /// This objects type can be any one of the option types in . + /// + /// + object Value { get; } + + /// + /// Gets the type of this data's option. + /// + ApplicationCommandOptionType Type { get; } + + /// + /// Gets the nested options of this option. + /// + IReadOnlyCollection Options { get; } + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/IApplicationCommandOption.cs b/src/Discord.Net.Core/Entities/Interactions/IApplicationCommandOption.cs new file mode 100644 index 000000000..440c4bd6b --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/IApplicationCommandOption.cs @@ -0,0 +1,60 @@ +using System.Collections.Generic; + +namespace Discord +{ + /// + /// Options for the . + /// + public interface IApplicationCommandOption + { + /// + /// Gets the type of this . + /// + ApplicationCommandOptionType Type { get; } + + /// + /// Gets the name of this command option. + /// + string Name { get; } + + /// + /// Gets the description of this command option. + /// + string Description { get; } + + /// + /// Gets whether or not this is the first required option for the user to complete. + /// + bool? IsDefault { get; } + + /// + /// Gets whether or not the parameter is required or optional. + /// + bool? IsRequired { get; } + + /// + /// Gets the smallest number value the user can input. + /// + double? MinValue { get; } + + /// + /// Gets the largest number value the user can input. + /// + double? MaxValue { get; } + + /// + /// Gets the choices for string and int types for the user to pick from. + /// + IReadOnlyCollection Choices { get; } + + /// + /// Gets the sub-options for this command option. + /// + IReadOnlyCollection Options { get; } + + /// + /// Gets the allowed channel types for this option. + /// + IReadOnlyCollection ChannelTypes { get; } + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/IApplicationCommandOptionChoice.cs b/src/Discord.Net.Core/Entities/Interactions/IApplicationCommandOptionChoice.cs new file mode 100644 index 000000000..631706c6f --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/IApplicationCommandOptionChoice.cs @@ -0,0 +1,18 @@ +namespace Discord +{ + /// + /// Specifies choices for command group. + /// + public interface IApplicationCommandOptionChoice + { + /// + /// Gets the choice name. + /// + string Name { get; } + + /// + /// Gets the value of the choice. + /// + object Value { get; } + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/IDiscordInteraction.cs b/src/Discord.Net.Core/Entities/Interactions/IDiscordInteraction.cs new file mode 100644 index 000000000..d9e250118 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/IDiscordInteraction.cs @@ -0,0 +1,90 @@ +using System; +using System.Threading.Tasks; + +namespace Discord +{ + /// + /// Represents a discord interaction. + /// + public interface IDiscordInteraction : ISnowflakeEntity + { + /// + /// Gets the id of the interaction. + /// + new ulong Id { get; } + + /// + /// Gets the type of this . + /// + InteractionType Type { get; } + + /// + /// Gets the data sent within this interaction. + /// + IDiscordInteractionData Data { get; } + + /// + /// Gets the continuation token for responding to the interaction. + /// + string Token { get; } + + /// + /// Gets the version of the interaction, always 1. + /// + int Version { get; } + + /// + /// Responds to an Interaction with type . + /// + /// The text of the message to be sent. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// The request options for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + Task RespondAsync(string text = null, Embed[] embeds = null, bool isTTS = false, + bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null); + + /// + /// Sends a followup message for this interaction. + /// + /// The text of the message to be sent. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// The request options for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// + /// The sent message. + /// + Task FollowupAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null); + + /// + /// Gets the original response for this interaction. + /// + /// The request options for this request. + /// A that represents the initial response. + Task GetOriginalResponseAsync(RequestOptions options = null); + + /// + /// Edits original response for this interaction. + /// + /// A delegate containing the properties to modify the message with. + /// The request options for this request. + /// A that represents the initial response. + Task ModifyOriginalResponseAsync(Action func, RequestOptions options = null); + + /// + /// Acknowledges this interaction. + /// + /// + /// A task that represents the asynchronous operation of acknowledging the interaction. + /// + Task DeferAsync(bool ephemeral = false, RequestOptions options = null); + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/IDiscordInteractionData.cs b/src/Discord.Net.Core/Entities/Interactions/IDiscordInteractionData.cs new file mode 100644 index 000000000..42b95738e --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/IDiscordInteractionData.cs @@ -0,0 +1,7 @@ +namespace Discord +{ + /// + /// Represents an interface used to specify classes that they are a valid data type of a class. + /// + public interface IDiscordInteractionData { } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/InteractionResponseType.cs b/src/Discord.Net.Core/Entities/Interactions/InteractionResponseType.cs new file mode 100644 index 000000000..ebdf29781 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/InteractionResponseType.cs @@ -0,0 +1,46 @@ +using System; + +namespace Discord +{ + /// + /// The response type for an . + /// + /// + /// After receiving an interaction, you must respond to acknowledge it. You can choose to respond with a message immediately using + /// or you can choose to send a deferred response with . If choosing a deferred response, the user will see a loading state for the interaction, + /// and you'll have up to 15 minutes to edit the original deferred response using Edit Original Interaction Response. + /// You can read more about Response types Here. + /// + public enum InteractionResponseType : byte + { + /// + /// ACK a Ping. + /// + Pong = 1, + + /// + /// Respond to an interaction with a message. + /// + ChannelMessageWithSource = 4, + + /// + /// ACK an interaction and edit a response later, the user sees a loading state. + /// + DeferredChannelMessageWithSource = 5, + + /// + /// For components: ACK an interaction and edit the original message later; the user does not see a loading state. + /// + DeferredUpdateMessage = 6, + + /// + /// For components: edit the message the component was attached to. + /// + UpdateMessage = 7, + + /// + /// Respond with a set of choices to a autocomplete interaction. + /// + ApplicationCommandAutocompleteResult = 8 + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/InteractionType.cs b/src/Discord.Net.Core/Entities/Interactions/InteractionType.cs new file mode 100644 index 000000000..e09c906b5 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/InteractionType.cs @@ -0,0 +1,28 @@ +namespace Discord +{ + /// + /// Represents a type of Interaction from discord. + /// + public enum InteractionType : byte + { + /// + /// A ping from discord. + /// + Ping = 1, + + /// + /// A sent from discord. + /// + ApplicationCommand = 2, + + /// + /// A sent from discord. + /// + MessageComponent = 3, + + /// + /// An autocomplete request sent from discord. + /// + ApplicationCommandAutocomplete = 4 + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/MessageComponents/ActionRowComponent.cs b/src/Discord.Net.Core/Entities/Interactions/MessageComponents/ActionRowComponent.cs new file mode 100644 index 000000000..202a5687f --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/MessageComponents/ActionRowComponent.cs @@ -0,0 +1,27 @@ +using System.Collections.Generic; + +namespace Discord +{ + /// + /// Represents a Row for child components to live in. + /// + public class ActionRowComponent : IMessageComponent + { + /// + public ComponentType Type => ComponentType.ActionRow; + + /// + /// Gets the child components in this row. + /// + public IReadOnlyCollection Components { get; internal set; } + + internal ActionRowComponent() { } + + internal ActionRowComponent(List components) + { + Components = components; + } + + string IMessageComponent.CustomId => null; + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/MessageComponents/ButtonComponent.cs b/src/Discord.Net.Core/Entities/Interactions/MessageComponents/ButtonComponent.cs new file mode 100644 index 000000000..4b9fa2753 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/MessageComponents/ButtonComponent.cs @@ -0,0 +1,61 @@ +namespace Discord +{ + /// + /// Represents a Button. + /// + public class ButtonComponent : IMessageComponent + { + /// + public ComponentType Type => ComponentType.Button; + + /// + /// Gets the of this button, example buttons with each style can be found Here. + /// + public ButtonStyle Style { get; } + + /// + /// Gets the label of the button, this is the text that is shown. + /// + public string Label { get; } + + /// + /// Gets the displayed with this button. + /// + public IEmote Emote { get; } + + /// + public string CustomId { get; } + + /// + /// Gets the URL for a button. + /// + /// + /// You cannot have a button with a URL and a CustomId. + /// + public string Url { get; } + + /// + /// Gets whether this button is disabled or not. + /// + public bool IsDisabled { get; } + + /// + /// Turns this button into a button builder. + /// + /// + /// A newly created button builder with the same properties as this button. + /// + public ButtonBuilder ToBuilder() + => new ButtonBuilder(Label, CustomId, Style, Url, Emote, IsDisabled); + + internal ButtonComponent(ButtonStyle style, string label, IEmote emote, string customId, string url, bool isDisabled) + { + Style = style; + Label = label; + Emote = emote; + CustomId = customId; + Url = url; + IsDisabled = isDisabled; + } + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/MessageComponents/ButtonStyle.cs b/src/Discord.Net.Core/Entities/Interactions/MessageComponents/ButtonStyle.cs new file mode 100644 index 000000000..92d48ab4f --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/MessageComponents/ButtonStyle.cs @@ -0,0 +1,33 @@ +namespace Discord +{ + /// + /// Represents different styles to use with buttons. You can see an example of the different styles at + /// + public enum ButtonStyle + { + /// + /// A Blurple button + /// + Primary = 1, + + /// + /// A Grey (or gray) button + /// + Secondary = 2, + + /// + /// A Green button + /// + Success = 3, + + /// + /// A Red button + /// + Danger = 4, + + /// + /// A button with a little popup box indicating that this button is a link. + /// + Link = 5 + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/MessageComponents/ComponentBuilder.cs b/src/Discord.Net.Core/Entities/Interactions/MessageComponents/ComponentBuilder.cs new file mode 100644 index 000000000..4461a4205 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/MessageComponents/ComponentBuilder.cs @@ -0,0 +1,1064 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Discord.Utils; + +namespace Discord +{ + /// + /// Represents a builder for creating a . + /// + public class ComponentBuilder + { + /// + /// The max length of a . + /// + public const int MaxCustomIdLength = 100; + + /// + /// The max amount of rows a message can have. + /// + public const int MaxActionRowCount = 5; + + /// + /// Gets or sets the Action Rows for this Component Builder. + /// + /// cannot be null. + /// count exceeds . + public List ActionRows + { + get => _actionRows; + set + { + if (value == null) + throw new ArgumentNullException(nameof(value), $"{nameof(ActionRows)} cannot be null."); + if (value.Count > MaxActionRowCount) + throw new ArgumentOutOfRangeException(nameof(value), $"Action row count must be less than or equal to {MaxActionRowCount}."); + _actionRows = value; + } + } + + private List _actionRows; + + /// + /// Creates a new builder from a message. + /// + /// The message to create the builder from. + /// The newly created builder. + public static ComponentBuilder FromMessage(IMessage message) + => FromComponents(message.Components); + + /// + /// Creates a new builder from the provided list of components. + /// + /// The components to create the builder from. + /// The newly created builder. + public static ComponentBuilder FromComponents(IReadOnlyCollection components) + { + var builder = new ComponentBuilder(); + for (int i = 0; i != components.Count; i++) + { + var component = components.ElementAt(i); + builder.AddComponent(component, i); + } + return builder; + } + + internal void AddComponent(IMessageComponent component, int row) + { + switch (component) + { + case ButtonComponent button: + WithButton(button.Label, button.CustomId, button.Style, button.Emote, button.Url, button.IsDisabled, row); + break; + case ActionRowComponent actionRow: + foreach (var cmp in actionRow.Components) + AddComponent(cmp, row); + break; + case SelectMenuComponent menu: + WithSelectMenu(menu.CustomId, menu.Options.Select(x => new SelectMenuOptionBuilder(x.Label, x.Value, x.Description, x.Emote, x.IsDefault)).ToList(), menu.Placeholder, menu.MinValues, menu.MaxValues, menu.IsDisabled, row); + break; + } + } + + /// + /// Adds a to the at the specific row. + /// If the row cannot accept the component then it will add it to a row that can. + /// + /// The custom id of the menu. + /// The options of the menu. + /// The placeholder of the menu. + /// The min values of the placeholder. + /// The max values of the placeholder. + /// Whether or not the menu is disabled. + /// The row to add the menu to. + /// + public ComponentBuilder WithSelectMenu(string customId, List options, + string placeholder = null, int minValues = 1, int maxValues = 1, bool disabled = false, int row = 0) + { + return WithSelectMenu(new SelectMenuBuilder() + .WithCustomId(customId) + .WithOptions(options) + .WithPlaceholder(placeholder) + .WithMaxValues(maxValues) + .WithMinValues(minValues) + .WithDisabled(disabled), + row); + } + + /// + /// Adds a to the at the specific row. + /// If the row cannot accept the component then it will add it to a row that can. + /// + /// The menu to add. + /// The row to attempt to add this component on. + /// There is no more row to add a menu. + /// must be less than . + /// The current builder. + public ComponentBuilder WithSelectMenu(SelectMenuBuilder menu, int row = 0) + { + Preconditions.LessThan(row, MaxActionRowCount, nameof(row)); + if (menu.Options.Distinct().Count() != menu.Options.Count) + throw new InvalidOperationException("Please make sure that there is no duplicates values."); + + var builtMenu = menu.Build(); + + if (_actionRows == null) + { + _actionRows = new List + { + new ActionRowBuilder().AddComponent(builtMenu) + }; + } + else + { + if (_actionRows.Count == row) + _actionRows.Add(new ActionRowBuilder().AddComponent(builtMenu)); + else + { + ActionRowBuilder actionRow; + if (_actionRows.Count > row) + actionRow = _actionRows.ElementAt(row); + else + { + actionRow = new ActionRowBuilder(); + _actionRows.Add(actionRow); + } + + if (actionRow.CanTakeComponent(builtMenu)) + actionRow.AddComponent(builtMenu); + else if (row < MaxActionRowCount) + WithSelectMenu(menu, row + 1); + else + throw new InvalidOperationException($"There is no more row to add a {nameof(builtMenu)}"); + } + } + + return this; + } + + /// + /// Adds a with specified parameters to the at the specific row. + /// If the row cannot accept the component then it will add it to a row that can. + /// + /// The label text for the newly added button. + /// The style of this newly added button. + /// A to be used with this button. + /// The custom id of the newly added button. + /// A URL to be used only if the is a Link. + /// Whether or not the newly created button is disabled. + /// The row the button should be placed on. + /// The current builder. + public ComponentBuilder WithButton( + string label = null, + string customId = null, + ButtonStyle style = ButtonStyle.Primary, + IEmote emote = null, + string url = null, + bool disabled = false, + int row = 0) + { + var button = new ButtonBuilder() + .WithLabel(label) + .WithStyle(style) + .WithEmote(emote) + .WithCustomId(customId) + .WithUrl(url) + .WithDisabled(disabled); + + return WithButton(button, row); + } + + /// + /// Adds a to the at the specific row. + /// If the row cannot accept the component then it will add it to a row that can. + /// + /// The button to add. + /// The row to add the button. + /// There is no more row to add a menu. + /// must be less than . + /// The current builder. + public ComponentBuilder WithButton(ButtonBuilder button, int row = 0) + { + Preconditions.LessThan(row, MaxActionRowCount, nameof(row)); + + var builtButton = button.Build(); + + if (_actionRows == null) + { + _actionRows = new List + { + new ActionRowBuilder().AddComponent(builtButton) + }; + } + else + { + if (_actionRows.Count == row) + _actionRows.Add(new ActionRowBuilder().AddComponent(builtButton)); + else + { + ActionRowBuilder actionRow; + if (_actionRows.Count > row) + actionRow = _actionRows.ElementAt(row); + else + { + actionRow = new ActionRowBuilder(); + _actionRows.Add(actionRow); + } + + if (actionRow.CanTakeComponent(builtButton)) + actionRow.AddComponent(builtButton); + else if (row < MaxActionRowCount) + WithButton(button, row + 1); + else + throw new InvalidOperationException($"There is no more row to add a {nameof(button)}"); + } + } + + return this; + } + + /// + /// Builds this builder into a used to send your components. + /// + /// A that can be sent with . + public MessageComponent Build() + { + return _actionRows != null + ? new MessageComponent(_actionRows.Select(x => x.Build()).ToList()) + : MessageComponent.Empty; + } + } + + /// + /// Represents a class used to build Action rows. + /// + public class ActionRowBuilder + { + /// + /// The max amount of child components this row can hold. + /// + public const int MaxChildCount = 5; + + /// + /// Gets or sets the components inside this row. + /// + /// cannot be null. + /// count exceeds . + public List Components + { + get => _components; + set + { + if (value == null) + throw new ArgumentNullException(nameof(value), $"{nameof(Components)} cannot be null."); + + _components = value.Count switch + { + 0 => throw new ArgumentOutOfRangeException(nameof(value), "There must be at least 1 component in a row."), + > MaxChildCount => throw new ArgumentOutOfRangeException(nameof(value), $"Action row can only contain {MaxChildCount} child components!"), + _ => value + }; + } + } + + private List _components = new List(); + + /// + /// Adds a list of components to the current row. + /// + /// The list of components to add. + /// + /// The current builder. + public ActionRowBuilder WithComponents(List components) + { + Components = components; + return this; + } + + /// + /// Adds a component at the end of the current row. + /// + /// The component to add. + /// Components count reached + /// The current builder. + public ActionRowBuilder AddComponent(IMessageComponent component) + { + if (Components.Count >= MaxChildCount) + throw new InvalidOperationException($"Components count reached {MaxChildCount}"); + + Components.Add(component); + return this; + } + + /// + /// Builds the current builder to a that can be used within a + /// + /// A that can be used within a + public ActionRowComponent Build() + { + return new ActionRowComponent(_components); + } + + internal bool CanTakeComponent(IMessageComponent component) + { + switch (component.Type) + { + case ComponentType.ActionRow: + return false; + case ComponentType.Button: + if (Components.Any(x => x.Type == ComponentType.SelectMenu)) + return false; + else + return Components.Count < 5; + case ComponentType.SelectMenu: + return Components.Count == 0; + default: + return false; + } + } + } + + /// + /// Represents a class used to build 's. + /// + public class ButtonBuilder + { + /// + /// The max length of a . + /// + public const int MaxButtonLabelLength = 80; + + /// + /// Gets or sets the label of the current button. + /// + /// length exceeds . + /// length exceeds . + public string Label + { + get => _label; + set => _label = value?.Length switch + { + > MaxButtonLabelLength => throw new ArgumentOutOfRangeException(nameof(value), $"Label length must be less or equal to {MaxButtonLabelLength}."), + 0 => throw new ArgumentOutOfRangeException(nameof(value), "Label length must be at least 1."), + _ => value + }; + } + + /// + /// Gets or sets the custom id of the current button. + /// + /// length exceeds + /// length subceeds 1. + public string CustomId + { + get => _customId; + set => _customId = value?.Length switch + { + > ComponentBuilder.MaxCustomIdLength => throw new ArgumentOutOfRangeException(nameof(value), $"Custom Id length must be less or equal to {ComponentBuilder.MaxCustomIdLength}."), + 0 => throw new ArgumentOutOfRangeException(nameof(value), "Custom Id length must be at least 1."), + _ => value + }; + } + + /// + /// Gets or sets the of the current button. + /// + public ButtonStyle Style { get; set; } + + /// + /// Gets or sets the of the current button. + /// + public IEmote Emote { get; set; } + + /// + /// Gets or sets the url of the current button. + /// + public string Url { get; set; } + + /// + /// Gets or sets whether the current button is disabled. + /// + public bool IsDisabled { get; set; } + + private string _label; + private string _customId; + + /// + /// Creates a new instance of a . + /// + public ButtonBuilder() { } + + /// + /// Creates a new instance of a . + /// + /// The label to use on the newly created link button. + /// The url of this button. + /// The custom ID of this button. + /// The custom ID of this button. + /// The emote of this button. + /// Disabled this button or not. + public ButtonBuilder(string label = null, string customId = null, ButtonStyle style = ButtonStyle.Primary, string url = null, IEmote emote = null, bool isDisabled = false) + { + CustomId = customId; + Style = style; + Url = url; + Label = label; + IsDisabled = isDisabled; + Emote = emote; + } + + /// + /// Creates a new instance of a from instance of a . + /// + public ButtonBuilder(ButtonComponent button) + { + CustomId = button.CustomId; + Style = button.Style; + Url = button.Url; + Label = button.Label; + IsDisabled = button.IsDisabled; + Emote = button.Emote; + } + + /// + /// Creates a button with the style. + /// + /// The label for this link button. + /// The url for this link button to go to. + /// The emote for this link button. + /// A builder with the newly created button. + public static ButtonBuilder CreateLinkButton(string label, string url, IEmote emote = null) + => new ButtonBuilder(label, null, ButtonStyle.Link, url, emote: emote); + + /// + /// Creates a button with the style. + /// + /// The label for this danger button. + /// The custom id for this danger button. + /// The emote for this danger button. + /// A builder with the newly created button. + public static ButtonBuilder CreateDangerButton(string label, string customId, IEmote emote = null) + => new ButtonBuilder(label, customId, ButtonStyle.Danger, emote: emote); + + /// + /// Creates a button with the style. + /// + /// The label for this primary button. + /// The custom id for this primary button. + /// The emote for this primary button. + /// A builder with the newly created button. + public static ButtonBuilder CreatePrimaryButton(string label, string customId, IEmote emote = null) + => new ButtonBuilder(label, customId, emote: emote); + + /// + /// Creates a button with the style. + /// + /// The label for this secondary button. + /// The custom id for this secondary button. + /// The emote for this secondary button. + /// A builder with the newly created button. + public static ButtonBuilder CreateSecondaryButton(string label, string customId, IEmote emote = null) + => new ButtonBuilder(label, customId, ButtonStyle.Secondary, emote: emote); + + /// + /// Creates a button with the style. + /// + /// The label for this success button. + /// The custom id for this success button. + /// The emote for this success button. + /// A builder with the newly created button. + public static ButtonBuilder CreateSuccessButton(string label, string customId, IEmote emote = null) + => new ButtonBuilder(label, customId, ButtonStyle.Success, emote: emote); + + /// + /// Sets the current buttons label to the specified text. + /// + /// The text for the label. + /// + /// The current builder. + public ButtonBuilder WithLabel(string label) + { + Label = label; + return this; + } + + /// + /// Sets the current buttons style. + /// + /// The style for this builders button. + /// The current builder. + public ButtonBuilder WithStyle(ButtonStyle style) + { + Style = style; + return this; + } + + /// + /// Sets the current buttons emote. + /// + /// The emote to use for the current button. + /// The current builder. + public ButtonBuilder WithEmote(IEmote emote) + { + Emote = emote; + return this; + } + + /// + /// Sets the current buttons url. + /// + /// The url to use for the current button. + /// The current builder. + public ButtonBuilder WithUrl(string url) + { + Url = url; + return this; + } + + /// + /// Sets the custom id of the current button. + /// + /// The id to use for the current button. + /// + /// The current builder. + public ButtonBuilder WithCustomId(string id) + { + CustomId = id; + return this; + } + + /// + /// Sets whether the current button is disabled. + /// + /// Whether the current button is disabled or not. + /// The current builder. + public ButtonBuilder WithDisabled(bool isDisabled) + { + IsDisabled = isDisabled; + return this; + } + + /// + /// Builds this builder into a to be used in a . + /// + /// A to be used in a . + /// A button must contain either a or a , but not both. + /// A button must have an or a . + /// A link button must contain a URL. + /// A URL must include a protocol (http or https). + /// A non-link button must contain a custom id + public ButtonComponent Build() + { + if (string.IsNullOrEmpty(Label) && Emote == null) + throw new InvalidOperationException("A button must have an Emote or a label!"); + + if (!(string.IsNullOrEmpty(Url) ^ string.IsNullOrEmpty(CustomId))) + throw new InvalidOperationException("A button must contain either a URL or a CustomId, but not both!"); + + if (Style == ButtonStyle.Link) + { + if (string.IsNullOrEmpty(Url)) + throw new InvalidOperationException("Link buttons must have a link associated with them"); + UrlValidation.ValidateButton(Url); + } + else if (string.IsNullOrEmpty(CustomId)) + throw new InvalidOperationException("Non-link buttons must have a custom id associated with them"); + + return new ButtonComponent(Style, Label, Emote, CustomId, Url, IsDisabled); + } + } + + /// + /// Represents a class used to build 's. + /// + public class SelectMenuBuilder + { + /// + /// The max length of a . + /// + public const int MaxPlaceholderLength = 100; + + /// + /// The maximum number of values for the and properties. + /// + public const int MaxValuesCount = 25; + + /// + /// The maximum number of options a can have. + /// + public const int MaxOptionCount = 25; + + /// + /// Gets or sets the custom id of the current select menu. + /// + /// length exceeds + /// length subceeds 1. + public string CustomId + { + get => _customId; + set => _customId = value?.Length switch + { + > ComponentBuilder.MaxCustomIdLength => throw new ArgumentOutOfRangeException(nameof(value), $"Custom Id length must be less or equal to {ComponentBuilder.MaxCustomIdLength}."), + 0 => throw new ArgumentOutOfRangeException(nameof(value), "Custom Id length must be at least 1."), + _ => value + }; + } + + /// + /// Gets or sets the placeholder text of the current select menu. + /// + /// length exceeds . + /// length subceeds 1. + public string Placeholder + { + get => _placeholder; + set => _placeholder = value?.Length switch + { + > MaxPlaceholderLength => throw new ArgumentOutOfRangeException(nameof(value), $"Placeholder length must be less or equal to {MaxPlaceholderLength}."), + 0 => throw new ArgumentOutOfRangeException(nameof(value), "Placeholder length must be at least 1."), + _ => value + }; + } + + /// + /// Gets or sets the minimum values of the current select menu. + /// + /// exceeds . + public int MinValues + { + get => _minValues; + set + { + Preconditions.AtMost(value, MaxValuesCount, nameof(MinValues)); + _minValues = value; + } + } + + /// + /// Gets or sets the maximum values of the current select menu. + /// + /// exceeds . + public int MaxValues + { + get => _maxValues; + set + { + Preconditions.AtMost(value, MaxValuesCount, nameof(MaxValues)); + _maxValues = value; + } + } + + /// + /// Gets or sets a collection of for this current select menu. + /// + /// count exceeds . + /// is null. + public List Options + { + get => _options; + set + { + if (value != null) + Preconditions.AtMost(value.Count, MaxOptionCount, nameof(Options)); + else + throw new ArgumentNullException(nameof(value), $"{nameof(Options)} cannot be null."); + + _options = value; + } + } + + /// + /// Gets or sets whether the current menu is disabled. + /// + public bool IsDisabled { get; set; } + + private List _options = new List(); + private int _minValues = 1; + private int _maxValues = 1; + private string _placeholder; + private string _customId; + + /// + /// Creates a new instance of a . + /// + public SelectMenuBuilder() { } + + /// + /// Creates a new instance of a from instance of . + /// + public SelectMenuBuilder(SelectMenuComponent selectMenu) + { + Placeholder = selectMenu.Placeholder; + CustomId = selectMenu.Placeholder; + MaxValues = selectMenu.MaxValues; + MinValues = selectMenu.MinValues; + IsDisabled = selectMenu.IsDisabled; + Options = selectMenu.Options? + .Select(x => new SelectMenuOptionBuilder(x.Label, x.Value, x.Description, x.Emote, x.IsDefault)) + .ToList(); + } + + /// + /// Creates a new instance of a . + /// + /// The custom id of this select menu. + /// The options for this select menu. + /// The placeholder of this select menu. + /// The max values of this select menu. + /// The min values of this select menu. + /// Disabled this select menu or not. + public SelectMenuBuilder(string customId, List options, string placeholder = null, int maxValues = 1, int minValues = 1, bool isDisabled = false) + { + CustomId = customId; + Options = options; + Placeholder = placeholder; + IsDisabled = isDisabled; + MaxValues = maxValues; + MinValues = minValues; + } + + /// + /// Sets the field CustomId. + /// + /// The value to set the field CustomId to. + /// + /// + /// The current builder. + /// + public SelectMenuBuilder WithCustomId(string customId) + { + CustomId = customId; + return this; + } + + /// + /// Sets the field placeholder. + /// + /// The value to set the field placeholder to. + /// + /// + /// The current builder. + /// + public SelectMenuBuilder WithPlaceholder(string placeholder) + { + Placeholder = placeholder; + return this; + } + + /// + /// Sets the field minValues. + /// + /// The value to set the field minValues to. + /// + /// + /// The current builder. + /// + public SelectMenuBuilder WithMinValues(int minValues) + { + MinValues = minValues; + return this; + } + + /// + /// Sets the field maxValues. + /// + /// The value to set the field maxValues to. + /// + /// + /// The current builder. + /// + public SelectMenuBuilder WithMaxValues(int maxValues) + { + MaxValues = maxValues; + return this; + } + + /// + /// Sets the field options. + /// + /// The value to set the field options to. + /// + /// + /// The current builder. + /// + public SelectMenuBuilder WithOptions(List options) + { + Options = options; + return this; + } + + /// + /// Add one option to menu options. + /// + /// The option builder class containing the option properties. + /// Options count reached . + /// + /// The current builder. + /// + public SelectMenuBuilder AddOption(SelectMenuOptionBuilder option) + { + if (Options.Count >= MaxOptionCount) + throw new InvalidOperationException($"Options count reached {MaxOptionCount}."); + + Options.Add(option); + return this; + } + + /// + /// Add one option to menu options. + /// + /// The label for this option. + /// The value of this option. + /// The description of this option. + /// The emote of this option. + /// Render this option as selected by default or not. + /// Options count reached . + /// + /// The current builder. + /// + public SelectMenuBuilder AddOption(string label, string value, string description = null, IEmote emote = null, bool? isDefault = null) + { + AddOption(new SelectMenuOptionBuilder(label, value, description, emote, isDefault)); + return this; + } + + /// + /// Sets whether the current menu is disabled. + /// + /// Whether the current menu is disabled or not. + /// + /// The current builder. + /// + public SelectMenuBuilder WithDisabled(bool isDisabled) + { + IsDisabled = isDisabled; + return this; + } + + /// + /// Builds a + /// + /// The newly built + public SelectMenuComponent Build() + { + var options = Options?.Select(x => x.Build()).ToList(); + + return new SelectMenuComponent(CustomId, options, Placeholder, MinValues, MaxValues, IsDisabled); + } + } + + /// + /// Represents a class used to build 's. + /// + public class SelectMenuOptionBuilder + { + /// + /// The maximum length of a . + /// + public const int MaxSelectLabelLength = 100; + + /// + /// The maximum length of a . + /// + public const int MaxDescriptionLength = 100; + + /// + /// The maximum length of a . + /// + public const int MaxSelectValueLength = 100; + + /// + /// Gets or sets the label of the current select menu. + /// + /// length exceeds + /// length subceeds 1. + public string Label + { + get => _label; + set => _label = value?.Length switch + { + > MaxSelectLabelLength => throw new ArgumentOutOfRangeException(nameof(value), $"Label length must be less or equal to {MaxSelectLabelLength}."), + 0 => throw new ArgumentOutOfRangeException(nameof(value), "Label length must be at least 1."), + _ => value + }; + } + + /// + /// Gets or sets the value of the current select menu. + /// + /// length exceeds . + /// length subceeds 1. + public string Value + { + get => _value; + set => _value = value?.Length switch + { + > MaxSelectValueLength => throw new ArgumentOutOfRangeException(nameof(value), $"Value length must be less or equal to {MaxSelectValueLength}."), + 0 => throw new ArgumentOutOfRangeException(nameof(value), "Value length must be at least 1."), + _ => value + }; + } + + /// + /// Gets or sets this menu options description. + /// + /// length exceeds . + /// length subceeds 1. + public string Description + { + get => _description; + set => _description = value?.Length switch + { + > MaxDescriptionLength => throw new ArgumentOutOfRangeException(nameof(value), $"Description length must be less or equal to {MaxDescriptionLength}."), + 0 => throw new ArgumentOutOfRangeException(nameof(value), "Description length must be at least 1."), + _ => value + }; + } + + /// + /// Gets or sets the emote of this option. + /// + public IEmote Emote { get; set; } + + /// + /// Gets or sets the whether or not this option will render selected by default. + /// + public bool? IsDefault { get; set; } + + private string _label; + private string _value; + private string _description; + + /// + /// Creates a new instance of a . + /// + public SelectMenuOptionBuilder() { } + + /// + /// Creates a new instance of a . + /// + /// The label for this option. + /// The value of this option. + /// The description of this option. + /// The emote of this option. + /// Render this option as selected by default or not. + public SelectMenuOptionBuilder(string label, string value, string description = null, IEmote emote = null, bool? isDefault = null) + { + Label = label; + Value = value; + Description = description; + Emote = emote; + IsDefault = isDefault; + } + + /// + /// Creates a new instance of a from instance of a . + /// + public SelectMenuOptionBuilder(SelectMenuOption option) + { + Label = option.Label; + Value = option.Value; + Description = option.Description; + Emote = option.Emote; + IsDefault = option.IsDefault; + } + + /// + /// Sets the field label. + /// + /// The value to set the field label to. + /// + /// + /// The current builder. + /// + public SelectMenuOptionBuilder WithLabel(string label) + { + Label = label; + return this; + } + + /// + /// Sets the field value. + /// + /// The value to set the field value to. + /// + /// + /// The current builder. + /// + public SelectMenuOptionBuilder WithValue(string value) + { + Value = value; + return this; + } + + /// + /// Sets the field description. + /// + /// The value to set the field description to. + /// + /// + /// The current builder. + /// + public SelectMenuOptionBuilder WithDescription(string description) + { + Description = description; + return this; + } + + /// + /// Sets the field emote. + /// + /// The value to set the field emote to. + /// + /// The current builder. + /// + public SelectMenuOptionBuilder WithEmote(IEmote emote) + { + Emote = emote; + return this; + } + + /// + /// Sets the field default. + /// + /// The value to set the field default to. + /// + /// The current builder. + /// + public SelectMenuOptionBuilder WithDefault(bool isDefault) + { + IsDefault = isDefault; + return this; + } + + /// + /// Builds a . + /// + /// The newly built . + public SelectMenuOption Build() + { + return new SelectMenuOption(Label, Value, Description, Emote, IsDefault); + } + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/MessageComponents/ComponentType.cs b/src/Discord.Net.Core/Entities/Interactions/MessageComponents/ComponentType.cs new file mode 100644 index 000000000..70bc1f301 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/MessageComponents/ComponentType.cs @@ -0,0 +1,23 @@ +namespace Discord +{ + /// + /// Represents a type of a component. + /// + public enum ComponentType + { + /// + /// A container for other components. + /// + ActionRow = 1, + + /// + /// A clickable button. + /// + Button = 2, + + /// + /// A select menu for picking from choices. + /// + SelectMenu = 3 + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/MessageComponents/IComponentInteraction.cs b/src/Discord.Net.Core/Entities/Interactions/MessageComponents/IComponentInteraction.cs new file mode 100644 index 000000000..2a46e8f18 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/MessageComponents/IComponentInteraction.cs @@ -0,0 +1,18 @@ +namespace Discord +{ + /// + /// Represents an interaction type for Message Components. + /// + public interface IComponentInteraction : IDiscordInteraction + { + /// + /// Gets the data received with this interaction, contains the button that was clicked. + /// + new IComponentInteractionData Data { get; } + + /// + /// Gets the message that contained the trigger for this interaction. + /// + IUserMessage Message { get; } + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/MessageComponents/IComponentInteractionData.cs b/src/Discord.Net.Core/Entities/Interactions/MessageComponents/IComponentInteractionData.cs new file mode 100644 index 000000000..99b9b6f6c --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/MessageComponents/IComponentInteractionData.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; + +namespace Discord +{ + /// + /// Represents the data sent with the . + /// + public interface IComponentInteractionData : IDiscordInteractionData + { + /// + /// Gets the components Custom Id that was clicked. + /// + string CustomId { get; } + + /// + /// Gets the type of the component clicked. + /// + ComponentType Type { get; } + + /// + /// Gets the value(s) of a interaction response. + /// + IReadOnlyCollection Values { get; } + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/MessageComponents/IMessageComponent.cs b/src/Discord.Net.Core/Entities/Interactions/MessageComponents/IMessageComponent.cs new file mode 100644 index 000000000..9366a44d6 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/MessageComponents/IMessageComponent.cs @@ -0,0 +1,18 @@ +namespace Discord +{ + /// + /// Represents a message component on a message. + /// + public interface IMessageComponent + { + /// + /// Gets the of this Message Component. + /// + ComponentType Type { get; } + + /// + /// Gets the custom id of the component if possible; otherwise . + /// + string CustomId { get; } + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/MessageComponents/MessageComponent.cs b/src/Discord.Net.Core/Entities/Interactions/MessageComponents/MessageComponent.cs new file mode 100644 index 000000000..720588681 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/MessageComponents/MessageComponent.cs @@ -0,0 +1,26 @@ +using System.Collections.Generic; + +namespace Discord +{ + /// + /// Represents a component object used to send components with messages. + /// + public class MessageComponent + { + /// + /// Gets the components to be used in a message. + /// + public IReadOnlyCollection Components { get; } + + internal MessageComponent(List components) + { + Components = components; + } + + /// + /// Returns a empty . + /// + internal static MessageComponent Empty + => new MessageComponent(new List()); + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/MessageComponents/SelectMenuComponent.cs b/src/Discord.Net.Core/Entities/Interactions/MessageComponents/SelectMenuComponent.cs new file mode 100644 index 000000000..229c1e148 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/MessageComponents/SelectMenuComponent.cs @@ -0,0 +1,67 @@ +using System.Collections.Generic; +using System.Linq; + +namespace Discord +{ + /// + /// Represents a select menu component defined at + /// + public class SelectMenuComponent : IMessageComponent + { + /// + public ComponentType Type => ComponentType.SelectMenu; + + /// + public string CustomId { get; } + + /// + /// Gets the menus options to select from. + /// + public IReadOnlyCollection Options { get; } + + /// + /// Gets the custom placeholder text if nothing is selected. + /// + public string Placeholder { get; } + + /// + /// Gets the minimum number of items that must be chosen. + /// + public int MinValues { get; } + + /// + /// Gets the maximum number of items that can be chosen. + /// + public int MaxValues { get; } + + /// + /// Gets whether this menu is disabled or not. + /// + public bool IsDisabled { get; } + + /// + /// Turns this select menu into a builder. + /// + /// + /// A newly create builder with the same properties as this select menu. + /// + public SelectMenuBuilder ToBuilder() + => new SelectMenuBuilder( + CustomId, + Options.Select(x => new SelectMenuOptionBuilder(x.Label, x.Value, x.Description, x.Emote, x.IsDefault)).ToList(), + Placeholder, + MaxValues, + MinValues, + IsDisabled); + + internal SelectMenuComponent(string customId, List options, string placeholder, int minValues, int maxValues, bool disabled) + { + CustomId = customId; + Options = options; + Placeholder = placeholder; + MinValues = minValues; + MaxValues = maxValues; + IsDisabled = disabled; + } + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/MessageComponents/SelectMenuOption.cs b/src/Discord.Net.Core/Entities/Interactions/MessageComponents/SelectMenuOption.cs new file mode 100644 index 000000000..6856e1ee3 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/MessageComponents/SelectMenuOption.cs @@ -0,0 +1,42 @@ +namespace Discord +{ + /// + /// Represents a choice for a . + /// + public class SelectMenuOption + { + /// + /// Gets the user-facing name of the option. + /// + public string Label { get; } + + /// + /// Gets the dev-define value of the option. + /// + public string Value { get; } + + /// + /// Gets a description of the option. + /// + public string Description { get; } + + /// + /// Gets the displayed with this menu option. + /// + public IEmote Emote { get; } + + /// + /// Gets whether or not this option will render as selected by default. + /// + public bool? IsDefault { get; } + + internal SelectMenuOption(string label, string value, string description, IEmote emote, bool? defaultValue) + { + Label = label; + Value = value; + Description = description; + Emote = emote; + IsDefault = defaultValue; + } + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/SlashCommands/IAutocompleteInteraction.cs b/src/Discord.Net.Core/Entities/Interactions/SlashCommands/IAutocompleteInteraction.cs new file mode 100644 index 000000000..bb5343d84 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/SlashCommands/IAutocompleteInteraction.cs @@ -0,0 +1,13 @@ +namespace Discord +{ + /// + /// Represents a . + /// + public interface IAutocompleteInteraction : IDiscordInteraction + { + /// + /// Gets the autocomplete data of this interaction. + /// + new IAutocompleteInteractionData Data { get; } + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/SlashCommands/IAutocompleteInteractionData.cs b/src/Discord.Net.Core/Entities/Interactions/SlashCommands/IAutocompleteInteractionData.cs new file mode 100644 index 000000000..e6d1e9fae --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/SlashCommands/IAutocompleteInteractionData.cs @@ -0,0 +1,40 @@ +using System.Collections.Generic; + +namespace Discord +{ + /// + /// Represents data for a slash commands autocomplete interaction. + /// + public interface IAutocompleteInteractionData : IDiscordInteractionData + { + /// + /// Gets the name of the invoked command. + /// + string CommandName { get; } + + /// + /// Gets the id of the invoked command. + /// + ulong CommandId { get; } + + /// + /// Gets the type of the invoked command. + /// + ApplicationCommandType Type { get; } + + /// + /// Gets the version of the invoked command. + /// + ulong Version { get; } + + /// + /// Gets the current autocomplete option that is actively being filled out. + /// + AutocompleteOption Current { get; } + + /// + /// Gets a collection of all the other options the executing users has filled out. + /// + IReadOnlyCollection Options { get; } + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/SlashCommands/ISlashCommandInteraction.cs b/src/Discord.Net.Core/Entities/Interactions/SlashCommands/ISlashCommandInteraction.cs new file mode 100644 index 000000000..556182987 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/SlashCommands/ISlashCommandInteraction.cs @@ -0,0 +1,13 @@ +namespace Discord +{ + /// + /// Represents a slash command interaction. + /// + public interface ISlashCommandInteraction : IDiscordInteraction + { + /// + /// Gets the data associated with this interaction. + /// + new IApplicationCommandInteractionData Data { get; } + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/SlashCommands/SlashCommandBuilder.cs b/src/Discord.Net.Core/Entities/Interactions/SlashCommands/SlashCommandBuilder.cs new file mode 100644 index 000000000..b4fc89cc2 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/SlashCommands/SlashCommandBuilder.cs @@ -0,0 +1,640 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.RegularExpressions; + +namespace Discord +{ + /// + /// Represents a class used to build slash commands. + /// + public class SlashCommandBuilder + { + /// + /// Returns the maximum length a commands name allowed by Discord + /// + public const int MaxNameLength = 32; + /// + /// Returns the maximum length of a commands description allowed by Discord. + /// + public const int MaxDescriptionLength = 100; + /// + /// Returns the maximum count of command options allowed by Discord + /// + public const int MaxOptionsCount = 25; + + /// + /// Gets or sets the name of this slash command. + /// + public string Name + { + get => _name; + set + { + Preconditions.NotNullOrEmpty(value, nameof(value)); + Preconditions.AtLeast(value.Length, 1, nameof(value)); + Preconditions.AtMost(value.Length, MaxNameLength, nameof(value)); + + // Discord updated the docs, this regex prevents special characters like @!$%(... etc, + // https://discord.com/developers/docs/interactions/slash-commands#applicationcommand + if (!Regex.IsMatch(value, @"^[\w-]{1,32}$")) + throw new ArgumentException("Command name cannot contain any special characters or whitespaces!", nameof(value)); + + _name = value; + } + } + + /// + /// Gets or sets a 1-100 length description of this slash command + /// + public string Description + { + get => _description; + set + { + Preconditions.NotNullOrEmpty(value, nameof(Description)); + Preconditions.AtLeast(value.Length, 1, nameof(Description)); + Preconditions.AtMost(value.Length, MaxDescriptionLength, nameof(Description)); + + _description = value; + } + } + + /// + /// Gets or sets the options for this command. + /// + public List Options + { + get => _options; + set + { + Preconditions.AtMost(value?.Count ?? 0, MaxOptionsCount, nameof(value)); + _options = value; + } + } + + /// + /// Gets or sets whether the command is enabled by default when the app is added to a guild + /// + public bool IsDefaultPermission { get; set; } = true; + + private string _name; + private string _description; + private List _options; + + /// + /// Build the current builder into a class. + /// + /// A that can be used to create slash commands. + public SlashCommandProperties Build() + { + var props = new SlashCommandProperties + { + Name = Name, + Description = Description, + IsDefaultPermission = IsDefaultPermission, + }; + + if (Options != null && Options.Any()) + { + var options = new List(); + + Options.OrderByDescending(x => x.IsRequired ?? false).ToList().ForEach(x => options.Add(x.Build())); + + props.Options = options; + } + + return props; + } + + /// + /// Sets the field name. + /// + /// The value to set the field name to. + /// + /// The current builder. + /// + public SlashCommandBuilder WithName(string name) + { + Name = name; + return this; + } + + /// + /// Sets the description of the current command. + /// + /// The description of this command. + /// The current builder. + public SlashCommandBuilder WithDescription(string description) + { + Description = description; + return this; + } + + /// + /// Sets the default permission of the current command. + /// + /// The default permission value to set. + /// The current builder. + public SlashCommandBuilder WithDefaultPermission(bool value) + { + IsDefaultPermission = value; + return this; + } + + /// + /// Adds an option to the current slash command. + /// + /// The name of the option to add. + /// The type of this option. + /// The description of this option. + /// If this option is required for this command. + /// If this option is the default option. + /// If this option is set to autocomplete. + /// The options of the option to add. + /// The allowed channel types for this option. + /// The choices of this option. + /// The smallest number value the user can input. + /// The largest number value the user can input. + /// The current builder. + public SlashCommandBuilder AddOption(string name, ApplicationCommandOptionType type, + string description, bool? isRequired = null, bool? isDefault = null, bool isAutocomplete = false, double? minValue = null, double? maxValue = null, + List options = null, List channelTypes = null, params ApplicationCommandOptionChoiceProperties[] choices) + { + // Make sure the name matches the requirements from discord + Preconditions.NotNullOrEmpty(name, nameof(name)); + Preconditions.AtLeast(name.Length, 1, nameof(name)); + Preconditions.AtMost(name.Length, MaxNameLength, nameof(name)); + + // Discord updated the docs, this regex prevents special characters like @!$%( and s p a c e s.. etc, + // https://discord.com/developers/docs/interactions/slash-commands#applicationcommand + if (!Regex.IsMatch(name, @"^[\w-]{1,32}$")) + throw new ArgumentException("Command name cannot contain any special characters or whitespaces!", nameof(name)); + + // same with description + Preconditions.NotNullOrEmpty(description, nameof(description)); + Preconditions.AtLeast(description.Length, 1, nameof(description)); + Preconditions.AtMost(description.Length, MaxDescriptionLength, nameof(description)); + + // make sure theres only one option with default set to true + if (isDefault == true && Options?.Any(x => x.IsDefault == true) == true) + throw new ArgumentException("There can only be one command option with default set to true!", nameof(isDefault)); + + var option = new SlashCommandOptionBuilder + { + Name = name, + Description = description, + IsRequired = isRequired, + IsDefault = isDefault, + Options = options, + Type = type, + IsAutocomplete = isAutocomplete, + Choices = (choices ?? Array.Empty()).ToList(), + ChannelTypes = channelTypes, + MinValue = minValue, + MaxValue = maxValue, + }; + + return AddOption(option); + } + + /// + /// Adds an option to this slash command. + /// + /// The option to add. + /// The current builder. + public SlashCommandBuilder AddOption(SlashCommandOptionBuilder option) + { + Options ??= new List(); + + if (Options.Count >= MaxOptionsCount) + throw new InvalidOperationException($"Cannot have more than {MaxOptionsCount} options!"); + + Preconditions.NotNull(option, nameof(option)); + + Options.Add(option); + return this; + } + /// + /// Adds a collection of options to the current slash command. + /// + /// The collection of options to add. + /// The current builder. + public SlashCommandBuilder AddOptions(params SlashCommandOptionBuilder[] options) + { + if (options == null) + throw new ArgumentNullException(nameof(options), "Options cannot be null!"); + + if (options.Length == 0) + throw new ArgumentException("Options cannot be empty!", nameof(options)); + + Options ??= new List(); + + if (Options.Count + options.Length > MaxOptionsCount) + throw new ArgumentOutOfRangeException(nameof(options), $"Cannot have more than {MaxOptionsCount} options!"); + + Options.AddRange(options); + return this; + } + } + + /// + /// Represents a class used to build options for the . + /// + public class SlashCommandOptionBuilder + { + /// + /// The max length of a choice's name allowed by Discord. + /// + public const int ChoiceNameMaxLength = 100; + + /// + /// The maximum number of choices allowed by Discord. + /// + public const int MaxChoiceCount = 25; + + private string _name; + private string _description; + + /// + /// Gets or sets the name of this option. + /// + public string Name + { + get => _name; + set + { + if (value != null) + { + Preconditions.AtLeast(value.Length, 1, nameof(value)); + Preconditions.AtMost(value.Length, SlashCommandBuilder.MaxNameLength, nameof(value)); + if (!Regex.IsMatch(value, @"^[\w-]{1,32}$")) + throw new ArgumentException("Option name cannot contain any special characters or whitespaces!", nameof(value)); + } + + _name = value; + } + } + + /// + /// Gets or sets the description of this option. + /// + public string Description + { + get => _description; + set + { + if (value != null) + { + Preconditions.AtLeast(value.Length, 1, nameof(value)); + Preconditions.AtMost(value.Length, SlashCommandBuilder.MaxDescriptionLength, nameof(value)); + } + + _description = value; + } + } + + /// + /// Gets or sets the type of this option. + /// + public ApplicationCommandOptionType Type { get; set; } + + /// + /// Gets or sets whether or not this options is the first required option for the user to complete. only one option can be default. + /// + public bool? IsDefault { get; set; } + + /// + /// Gets or sets if the option is required. + /// + public bool? IsRequired { get; set; } = null; + + /// + /// Gets or sets whether or not this option supports autocomplete. + /// + public bool IsAutocomplete { get; set; } + + /// + /// Gets or sets the smallest number value the user can input. + /// + public double? MinValue { get; set; } + + /// + /// Gets or sets the largest number value the user can input. + /// + public double? MaxValue { get; set; } + + /// + /// Gets or sets the choices for string and int types for the user to pick from. + /// + public List Choices { get; set; } + + /// + /// Gets or sets if this option is a subcommand or subcommand group type, these nested options will be the parameters. + /// + public List Options { get; set; } + + /// + /// Gets or sets the allowed channel types for this option. + /// + public List ChannelTypes { get; set; } + + /// + /// Builds the current option. + /// + /// The built version of this option. + public ApplicationCommandOptionProperties Build() + { + bool isSubType = Type == ApplicationCommandOptionType.SubCommandGroup; + bool isIntType = Type == ApplicationCommandOptionType.Integer; + + if (isSubType && (Options == null || !Options.Any())) + throw new InvalidOperationException("SubCommands/SubCommandGroups must have at least one option"); + + if (!isSubType && Options != null && Options.Any() && Type != ApplicationCommandOptionType.SubCommand) + throw new InvalidOperationException($"Cannot have options on {Type} type"); + + if (isIntType && MinValue != null && MinValue % 1 != 0) + throw new InvalidOperationException("MinValue cannot have decimals on Integer command options."); + + if (isIntType && MaxValue != null && MaxValue % 1 != 0) + throw new InvalidOperationException("MaxValue cannot have decimals on Integer command options."); + + return new ApplicationCommandOptionProperties + { + Name = Name, + Description = Description, + IsDefault = IsDefault, + IsRequired = IsRequired, + Type = Type, + Options = Options?.Count > 0 + ? Options.OrderByDescending(x => x.IsRequired ?? false).Select(x => x.Build()).ToList() + : new List(), + Choices = Choices, + IsAutocomplete = IsAutocomplete, + ChannelTypes = ChannelTypes, + MinValue = MinValue, + MaxValue = MaxValue + }; + } + + /// + /// Adds an option to the current slash command. + /// + /// The name of the option to add. + /// The type of this option. + /// The description of this option. + /// If this option is required for this command. + /// If this option is the default option. + /// If this option supports autocomplete. + /// The options of the option to add. + /// The allowed channel types for this option. + /// The choices of this option. + /// The smallest number value the user can input. + /// The largest number value the user can input. + /// The current builder. + public SlashCommandOptionBuilder AddOption(string name, ApplicationCommandOptionType type, + string description, bool? required = null, bool isDefault = false, bool isAutocomplete = false, double? minValue = null, double? maxValue = null, + List options = null, List channelTypes = null, params ApplicationCommandOptionChoiceProperties[] choices) + { + // Make sure the name matches the requirements from discord + Preconditions.NotNullOrEmpty(name, nameof(name)); + Preconditions.AtLeast(name.Length, 1, nameof(name)); + Preconditions.AtMost(name.Length, SlashCommandBuilder.MaxNameLength, nameof(name)); + + // Discord updated the docs, this regex prevents special characters like @!$%( and s p a c e s.. etc, + // https://discord.com/developers/docs/interactions/slash-commands#applicationcommand + if (!Regex.IsMatch(name, @"^[\w-]{1,32}$")) + throw new ArgumentException("Command name cannot contain any special characters or whitespaces!", nameof(name)); + + // same with description + Preconditions.NotNullOrEmpty(description, nameof(description)); + Preconditions.AtLeast(description.Length, 1, nameof(description)); + Preconditions.AtMost(description.Length, SlashCommandBuilder.MaxDescriptionLength, nameof(description)); + + // make sure theres only one option with default set to true + if (isDefault && Options?.Any(x => x.IsDefault == true) == true) + throw new ArgumentException("There can only be one command option with default set to true!", nameof(isDefault)); + + var option = new SlashCommandOptionBuilder + { + Name = name, + Description = description, + IsRequired = required, + IsDefault = isDefault, + IsAutocomplete = isAutocomplete, + MinValue = minValue, + MaxValue = maxValue, + Options = options, + Type = type, + Choices = (choices ?? Array.Empty()).ToList(), + ChannelTypes = channelTypes + }; + + return AddOption(option); + } + /// + /// Adds a sub option to the current option. + /// + /// The sub option to add. + /// The current builder. + public SlashCommandOptionBuilder AddOption(SlashCommandOptionBuilder option) + { + Options ??= new List(); + + if (Options.Count >= SlashCommandBuilder.MaxOptionsCount) + throw new InvalidOperationException($"There can only be {SlashCommandBuilder.MaxOptionsCount} options per sub command group!"); + + Preconditions.NotNull(option, nameof(option)); + + Options.Add(option); + return this; + } + + /// + /// Adds a choice to the current option. + /// + /// The name of the choice. + /// The value of the choice. + /// The current builder. + public SlashCommandOptionBuilder AddChoice(string name, int value) + { + return AddChoiceInternal(name, value); + } + + /// + /// Adds a choice to the current option. + /// + /// The name of the choice. + /// The value of the choice. + /// The current builder. + public SlashCommandOptionBuilder AddChoice(string name, string value) + { + return AddChoiceInternal(name, value); + } + + /// + /// Adds a choice to the current option. + /// + /// The name of the choice. + /// The value of the choice. + /// The current builder. + public SlashCommandOptionBuilder AddChoice(string name, double value) + { + return AddChoiceInternal(name, value); + } + + /// + /// Adds a choice to the current option. + /// + /// The name of the choice. + /// The value of the choice. + /// The current builder. + public SlashCommandOptionBuilder AddChoice(string name, float value) + { + return AddChoiceInternal(name, value); + } + + /// + /// Adds a choice to the current option. + /// + /// The name of the choice. + /// The value of the choice. + /// The current builder. + public SlashCommandOptionBuilder AddChoice(string name, long value) + { + return AddChoiceInternal(name, value); + } + + private SlashCommandOptionBuilder AddChoiceInternal(string name, object value) + { + Choices ??= new List(); + + if (Choices.Count >= MaxChoiceCount) + throw new InvalidOperationException($"Cannot add more than {MaxChoiceCount} choices!"); + + Preconditions.NotNull(name, nameof(name)); + Preconditions.NotNull(value, nameof(value)); + + Preconditions.AtLeast(name.Length, 1, nameof(name)); + Preconditions.AtMost(name.Length, 100, nameof(name)); + + if(value is string str) + { + Preconditions.AtLeast(str.Length, 1, nameof(value)); + Preconditions.AtMost(str.Length, 100, nameof(value)); + } + + Choices.Add(new ApplicationCommandOptionChoiceProperties + { + Name = name, + Value = value + }); + + return this; + } + + /// + /// Adds a channel type to the current option. + /// + /// The to add. + /// The current builder. + public SlashCommandOptionBuilder AddChannelType(ChannelType channelType) + { + ChannelTypes ??= new List(); + + ChannelTypes.Add(channelType); + + return this; + } + + /// + /// Sets the current builders name. + /// + /// The name to set the current option builder. + /// The current builder. + public SlashCommandOptionBuilder WithName(string name) + { + Name = name; + + return this; + } + + /// + /// Sets the current builders description. + /// + /// The description to set. + /// The current builder. + public SlashCommandOptionBuilder WithDescription(string description) + { + Description = description; + return this; + } + + /// + /// Sets the current builders required field. + /// + /// The value to set. + /// The current builder. + public SlashCommandOptionBuilder WithRequired(bool value) + { + IsRequired = value; + return this; + } + + /// + /// Sets the current builders default field. + /// + /// The value to set. + /// The current builder. + public SlashCommandOptionBuilder WithDefault(bool value) + { + IsDefault = value; + return this; + } + + /// + /// Sets the current builders autocomplete field. + /// + /// The value to set. + /// The current builder. + public SlashCommandOptionBuilder WithAutocomplete(bool value) + { + IsAutocomplete = value; + return this; + } + + /// + /// Sets the current builders min value field. + /// + /// The value to set. + /// The current builder. + public SlashCommandOptionBuilder WithMinValue(double value) + { + MinValue = value; + return this; + } + + /// + /// Sets the current builders max value field. + /// + /// The value to set. + /// The current builder. + public SlashCommandOptionBuilder WithMaxValue(double value) + { + MaxValue = value; + return this; + } + + /// + /// Sets the current type of this builder. + /// + /// The type to set. + /// The current builder. + public SlashCommandOptionBuilder WithType(ApplicationCommandOptionType type) + { + Type = type; + return this; + } + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/SlashCommands/SlashCommandProperties.cs b/src/Discord.Net.Core/Entities/Interactions/SlashCommands/SlashCommandProperties.cs new file mode 100644 index 000000000..20ba2868f --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/SlashCommands/SlashCommandProperties.cs @@ -0,0 +1,24 @@ +using System.Collections.Generic; + +namespace Discord +{ + /// + /// Represents a class used to create slash commands. + /// + public class SlashCommandProperties : ApplicationCommandProperties + { + internal override ApplicationCommandType Type => ApplicationCommandType.Slash; + + /// + /// Gets or sets the discription of this command. + /// + public Optional Description { get; set; } + + /// + /// Gets or sets the options for this command. + /// + public Optional> Options { get; set; } + + internal SlashCommandProperties() { } + } +} diff --git a/src/Discord.Net.Core/Entities/Invites/TargetUserType.cs b/src/Discord.Net.Core/Entities/Invites/TargetUserType.cs index 74263b888..e1818d7a9 100644 --- a/src/Discord.Net.Core/Entities/Invites/TargetUserType.cs +++ b/src/Discord.Net.Core/Entities/Invites/TargetUserType.cs @@ -9,6 +9,10 @@ namespace Discord /// /// The invite is for a Go Live stream. /// - Stream = 1 + Stream = 1, + /// + /// The invite is for embedded application. + /// + EmbeddedApplication = 2 } } diff --git a/src/Discord.Net.Core/Entities/Messages/EmbedBuilder.cs b/src/Discord.Net.Core/Entities/Messages/EmbedBuilder.cs index 89aaf5fde..0304120f5 100644 --- a/src/Discord.Net.Core/Entities/Messages/EmbedBuilder.cs +++ b/src/Discord.Net.Core/Entities/Messages/EmbedBuilder.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Collections.Immutable; using System.Linq; +using Discord.Utils; namespace Discord { @@ -16,20 +17,20 @@ namespace Discord private EmbedThumbnail? _thumbnail; private List _fields; - /// - /// Returns the maximum number of fields allowed by Discord. + /// + /// Returns the maximum number of fields allowed by Discord. /// public const int MaxFieldCount = 25; - /// - /// Returns the maximum length of title allowed by Discord. + /// + /// Returns the maximum length of title allowed by Discord. /// public const int MaxTitleLength = 256; - /// - /// Returns the maximum length of description allowed by Discord. + /// + /// Returns the maximum length of description allowed by Discord. /// public const int MaxDescriptionLength = 4096; - /// - /// Returns the maximum length of total characters allowed by Discord. + /// + /// Returns the maximum length of total characters allowed by Discord. /// public const int MaxEmbedLength = 6000; @@ -88,9 +89,9 @@ namespace Discord } /// Gets or sets the list of of an . - /// An embed builder's fields collection is set to + /// An embed builder's fields collection is set to /// null. - /// Description length exceeds . + /// Fields count exceeds . /// /// The list of existing . public List Fields @@ -137,7 +138,7 @@ namespace Discord /// Gets the total length of all embed properties. /// /// - /// The combined length of , , , + /// The combined length of , , , /// , , and . /// public int Length @@ -166,7 +167,7 @@ namespace Discord Title = title; return this; } - /// + /// /// Sets the description of an . /// /// The description to be set. @@ -178,7 +179,7 @@ namespace Discord Description = description; return this; } - /// + /// /// Sets the URL of an . /// /// The URL to be set. @@ -190,7 +191,7 @@ namespace Discord Url = url; return this; } - /// + /// /// Sets the thumbnail URL of an . /// /// The thumbnail URL to be set. @@ -401,11 +402,29 @@ namespace Discord /// The built embed object. /// /// Total embed length exceeds . + /// Any Url must include its protocols (i.e http:// or https://). public Embed Build() { if (Length > MaxEmbedLength) throw new InvalidOperationException($"Total embed length must be less than or equal to {MaxEmbedLength}."); - + if (!string.IsNullOrEmpty(Url)) + UrlValidation.Validate(Url, true); + if (!string.IsNullOrEmpty(ThumbnailUrl)) + UrlValidation.Validate(ThumbnailUrl, true); + if (!string.IsNullOrEmpty(ImageUrl)) + UrlValidation.Validate(ImageUrl, true); + if (Author != null) + { + if (!string.IsNullOrEmpty(Author.Url)) + UrlValidation.Validate(Author.Url, true); + if (!string.IsNullOrEmpty(Author.IconUrl)) + UrlValidation.Validate(Author.IconUrl, true); + } + if(Footer != null) + { + if (!string.IsNullOrEmpty(Footer.IconUrl)) + UrlValidation.Validate(Footer.IconUrl, true); + } var fields = ImmutableArray.CreateBuilder(Fields.Count); for (int i = 0; i < Fields.Count; i++) fields.Add(Fields[i].Build()); diff --git a/src/Discord.Net.Core/Entities/Messages/FileAttachment.cs b/src/Discord.Net.Core/Entities/Messages/FileAttachment.cs new file mode 100644 index 000000000..dc5437861 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Messages/FileAttachment.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord +{ + public struct FileAttachment : IDisposable + { + public string FileName { get; set; } + public string Description { get; set; } + public bool IsSpoiler { get; set; } + +#pragma warning disable IDISP008 + public Stream Stream { get; } +#pragma warning restore IDISP008 + + private bool _isDisposed; + + /// + /// Creates a file attachment from a stream. + /// + /// The stream to create the attachment from. + /// The name of the attachment. + /// The description of the attachment. + public FileAttachment(Stream stream, string fileName, string description = null, bool isSpoiler = false) + { + _isDisposed = false; + FileName = fileName; + Description = description; + Stream = stream; + IsSpoiler = isSpoiler; + } + + /// + /// Create the file attachment from a file path. + /// + /// + /// This file path is NOT validated and is passed directly into a + /// . + /// + /// The path to the file. + /// + /// is a zero-length string, contains only white space, or contains one or more invalid + /// characters as defined by . + /// + /// is null. + /// + /// The specified path, file name, or both exceed the system-defined maximum length. For example, on + /// Windows-based platforms, paths must be less than 248 characters, and file names must be less than 260 + /// characters. + /// + /// is in an invalid format. + /// + /// The specified is invalid, (for example, it is on an unmapped drive). + /// + /// + /// specified a directory.-or- The caller does not have the required permission. + /// + /// The file specified in was not found. + /// + /// An I/O error occurred while opening the file. + public FileAttachment(string path, string description = null, bool isSpoiler = false) + { + _isDisposed = false; + Stream = File.OpenRead(path); + FileName = Path.GetFileName(path); + Description = description; + IsSpoiler = isSpoiler; + } + + public void Dispose() + { + if (!_isDisposed) + { + Stream?.Dispose(); + _isDisposed = true; + } + } + } +} diff --git a/src/Discord.Net.Core/Entities/Messages/IAttachment.cs b/src/Discord.Net.Core/Entities/Messages/IAttachment.cs index 655777998..e94e9f97c 100644 --- a/src/Discord.Net.Core/Entities/Messages/IAttachment.cs +++ b/src/Discord.Net.Core/Entities/Messages/IAttachment.cs @@ -55,5 +55,12 @@ namespace Discord /// The width of this attachment if it is a picture; otherwise null. /// int? Width { get; } + /// + /// Gets whether or not this attachment is ephemeral. + /// + /// + /// if the attachment is ephemeral; otherwise . + /// + bool Ephemeral { get; } } } diff --git a/src/Discord.Net.Core/Entities/Messages/IMessage.cs b/src/Discord.Net.Core/Entities/Messages/IMessage.cs index b5023eb59..f5f2ca007 100644 --- a/src/Discord.Net.Core/Entities/Messages/IMessage.cs +++ b/src/Discord.Net.Core/Entities/Messages/IMessage.cs @@ -53,6 +53,13 @@ namespace Discord /// string Content { get; } /// + /// Gets the clean content for this message. + /// + /// + /// A string that contains the body of the message stripped of mentions, markdown, emojis and pings; note that this field may be empty if there is an embed. + /// + string CleanContent { get; } + /// /// Gets the time this message was sent. /// /// @@ -165,12 +172,17 @@ namespace Discord IReadOnlyDictionary Reactions { get; } /// - /// Gets all stickers included in this message. + /// The 's attached to this message + /// + IReadOnlyCollection Components { get; } + + /// + /// Gets all stickers items included in this message. /// /// - /// A read-only collection of sticker objects. + /// A read-only collection of sticker item objects. /// - IReadOnlyCollection Stickers { get; } + IReadOnlyCollection Stickers { get; } /// /// Gets the flags related to this message. @@ -183,6 +195,14 @@ namespace Discord /// MessageFlags? Flags { get; } + /// + /// Gets the interaction this message is a response to. + /// + /// + /// A if the message is a response to an interaction; otherwise . + /// + IMessageInteraction Interaction { get; } + /// /// Adds a reaction to this message. /// diff --git a/src/Discord.Net.Core/Entities/Messages/IMessageInteraction.cs b/src/Discord.Net.Core/Entities/Messages/IMessageInteraction.cs new file mode 100644 index 000000000..ebd03b627 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Messages/IMessageInteraction.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord +{ + /// + /// Represents a partial within a message. + /// + public interface IMessageInteraction + { + /// + /// Gets the snowflake id of the interaction. + /// + ulong Id { get; } + + /// + /// Gets the type of the interaction. + /// + InteractionType Type { get; } + + /// + /// Gets the name of the application command used. + /// + string Name { get; } + + /// + /// Gets the who invoked the interaction. + /// + IUser User { get; } + } +} diff --git a/src/Discord.Net.Core/Entities/Messages/MessageFlags.cs b/src/Discord.Net.Core/Entities/Messages/MessageFlags.cs index 52d0f0e9e..6f9450372 100644 --- a/src/Discord.Net.Core/Entities/Messages/MessageFlags.cs +++ b/src/Discord.Net.Core/Entities/Messages/MessageFlags.cs @@ -32,5 +32,17 @@ namespace Discord /// Flag given to messages that came from the urgent message system. /// Urgent = 1 << 4, + /// + /// Flag given to messages has an associated thread, with the same id as the message + /// + HasThread = 1 << 5, + /// + /// Flag given to messages that is only visible to the user who invoked the Interaction. + /// + Ephemeral = 1 << 6, + /// + /// Flag given to messages that is an Interaction Response and the bot is "thinking" + /// + Loading = 1 << 7 } } diff --git a/src/Discord.Net.Core/Entities/Messages/MessageInteraction.cs b/src/Discord.Net.Core/Entities/Messages/MessageInteraction.cs new file mode 100644 index 000000000..cbbebd932 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Messages/MessageInteraction.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord +{ + /// + /// Represents a partial within a message. + /// + /// The type of the user. + public class MessageInteraction : IMessageInteraction where TUser : IUser + { + /// + /// Gets the snowflake id of the interaction. + /// + public ulong Id { get; } + + /// + /// Gets the type of the interaction. + /// + public InteractionType Type { get; } + + /// + /// Gets the name of the application command used. + /// + public string Name { get; } + + /// + /// Gets the who invoked the interaction. + /// + public TUser User { get; } + + internal MessageInteraction(ulong id, InteractionType type, string name, TUser user) + { + Id = id; + Type = type; + Name = name; + User = user; + } + + IUser IMessageInteraction.User => User; + } +} diff --git a/src/Discord.Net.Core/Entities/Messages/MessageProperties.cs b/src/Discord.Net.Core/Entities/Messages/MessageProperties.cs index 9504e04cb..1a4eaff2d 100644 --- a/src/Discord.Net.Core/Entities/Messages/MessageProperties.cs +++ b/src/Discord.Net.Core/Entities/Messages/MessageProperties.cs @@ -1,10 +1,12 @@ +using System.Collections.Generic; + namespace Discord { /// /// Properties that are used to modify an with the specified changes. /// /// - /// The content of a message can be cleared with if and only if an + /// The content of a message can be cleared with if and only if an /// is present. /// /// @@ -17,10 +19,25 @@ namespace Discord /// This must be less than the constant defined by . /// public Optional Content { get; set; } + /// - /// Gets or sets the embed the message should display. + /// Gets or sets a single embed for this message. /// + /// + /// This property will be added to the array, in the future please use the array rather than this property. + /// public Optional Embed { get; set; } + + /// + /// Gets or sets the embeds of the message. + /// + public Optional Embeds { get; set; } + + /// + /// Gets or sets the components for this message. + /// + public Optional Components { get; set; } + /// /// Gets or sets the flags of the message. /// @@ -33,5 +50,10 @@ namespace Discord /// Gets or sets the allowed mentions of the message. /// public Optional AllowedMentions { get; set; } + + /// + /// Gets or sets the attachments for the message. + /// + public Optional> Attachments { get; set; } } } diff --git a/src/Discord.Net.Core/Entities/Messages/MessageType.cs b/src/Discord.Net.Core/Entities/Messages/MessageType.cs index bfe763cad..b83f88434 100644 --- a/src/Discord.Net.Core/Entities/Messages/MessageType.cs +++ b/src/Discord.Net.Core/Entities/Messages/MessageType.cs @@ -58,8 +58,53 @@ namespace Discord /// ChannelFollowAdd = 12, /// + /// The message for when a guild is disqualified from discovery. + /// + GuildDiscoveryDisqualified = 14, + /// + /// The message for when a guild is requalified for discovery. + /// + GuildDiscoveryRequalified = 15, + /// + /// The message for when the initial warning is sent for the initial grace period discovery. + /// + GuildDiscoveryGracePeriodInitialWarning = 16, + /// + /// The message for when the final warning is sent for the initial grace period discovery. + /// + GuildDiscoveryGracePeriodFinalWarning = 17, + /// + /// The message for when a thread is created. + /// + ThreadCreated = 18, + /// /// The message is an inline reply. /// + /// + /// Only available in API v8. + /// Reply = 19, + /// + /// The message is an Application Command. + /// + /// + /// Only available in API v8. + /// + ApplicationCommand = 20, + /// + /// The message that starts a thread. + /// + /// + /// Only available in API v9. + /// + ThreadStarterMessage = 21, + /// + /// The message for a invite reminder. + /// + GuildInviteReminder = 22, + /// + /// The message for a context menu command. + /// + ContextMenuCommand = 23, } } diff --git a/src/Discord.Net.Core/Entities/Messages/StickerFormatType.cs b/src/Discord.Net.Core/Entities/Messages/StickerFormatType.cs new file mode 100644 index 000000000..82e6b15a4 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Messages/StickerFormatType.cs @@ -0,0 +1,25 @@ +namespace Discord +{ + /// + /// Defines the types of formats for stickers. + /// + public enum StickerFormatType + { + /// + /// Default value for a sticker format type. + /// + None = 0, + /// + /// The sticker format type is png. + /// + Png = 1, + /// + /// The sticker format type is apng. + /// + Apng = 2, + /// + /// The sticker format type is lottie. + /// + Lottie = 3 + } +} diff --git a/src/Discord.Net.Core/Entities/Messages/SticketFormatType.cs b/src/Discord.Net.Core/Entities/Messages/SticketFormatType.cs deleted file mode 100644 index d24a38534..000000000 --- a/src/Discord.Net.Core/Entities/Messages/SticketFormatType.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace Discord -{ - /// Defines the types of formats for stickers. - public enum StickerFormatType - { - /// Default value for a sticker format type. - None = 0, - /// The sticker format type is png. - Png = 1, - /// The sticker format type is apng. - Apng = 2, - /// The sticker format type is lottie. - Lottie = 3, - } -} diff --git a/src/Discord.Net.Core/Entities/Messages/TimestampTag.cs b/src/Discord.Net.Core/Entities/Messages/TimestampTag.cs new file mode 100644 index 000000000..347b0daaa --- /dev/null +++ b/src/Discord.Net.Core/Entities/Messages/TimestampTag.cs @@ -0,0 +1,47 @@ +using System; + +namespace Discord +{ + /// + /// Represents a class used to make timestamps in messages. see . + /// + public class TimestampTag + { + /// + /// Gets or sets the style of the timestamp tag. + /// + public TimestampTagStyles Style { get; set; } = TimestampTagStyles.ShortDateTime; + + /// + /// Gets or sets the time for this timestamp tag. + /// + public DateTime Time { get; set; } + + /// + /// Converts the current timestamp tag to the string representation supported by discord. + /// + /// If the is null then the default 0 will be used. + /// + /// + /// A string that is compatible in a discord message, ex: <t:1625944201:f> + public override string ToString() + { + return $""; + } + + /// + /// Creates a new timestamp tag with the specified datetime object. + /// + /// The time of this timestamp tag. + /// The style for this timestamp tag. + /// The newly create timestamp tag. + public static TimestampTag FromDateTime(DateTime time, TimestampTagStyles style = TimestampTagStyles.ShortDateTime) + { + return new TimestampTag + { + Style = style, + Time = time + }; + } + } +} diff --git a/src/Discord.Net.Core/Entities/Messages/TimestampTagStyle.cs b/src/Discord.Net.Core/Entities/Messages/TimestampTagStyle.cs new file mode 100644 index 000000000..89f3c79b5 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Messages/TimestampTagStyle.cs @@ -0,0 +1,43 @@ +namespace Discord +{ + /// + /// Represents a set of styles to use with a + /// + public enum TimestampTagStyles + { + /// + /// A short time string: 16:20 + /// + ShortTime = 116, + + /// + /// A long time string: 16:20:30 + /// + LongTime = 84, + + /// + /// A short date string: 20/04/2021 + /// + ShortDate = 100, + + /// + /// A long date string: 20 April 2021 + /// + LongDate = 68, + + /// + /// A short datetime string: 20 April 2021 16:20 + /// + ShortDateTime = 102, + + /// + /// A long datetime string: Tuesday, 20 April 2021 16:20 + /// + LongDateTime = 70, + + /// + /// The relative time to the user: 2 months ago + /// + Relative = 82 + } +} diff --git a/src/Discord.Net.Core/Entities/Permissions/ApplicationCommandPermissionTarget.cs b/src/Discord.Net.Core/Entities/Permissions/ApplicationCommandPermissionTarget.cs new file mode 100644 index 000000000..9a99b34f1 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Permissions/ApplicationCommandPermissionTarget.cs @@ -0,0 +1,17 @@ +namespace Discord +{ + /// + /// Specifies the target of the permission. + /// + public enum ApplicationCommandPermissionTarget + { + /// + /// The target of the permission is a role. + /// + Role = 1, + /// + /// The target of the permission is a user. + /// + User = 2 + } +} diff --git a/src/Discord.Net.Core/Entities/Permissions/ApplicationCommandPermissions.cs b/src/Discord.Net.Core/Entities/Permissions/ApplicationCommandPermissions.cs new file mode 100644 index 000000000..28a6455e2 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Permissions/ApplicationCommandPermissions.cs @@ -0,0 +1,62 @@ +namespace Discord +{ + /// + /// Application command permissions allow you to enable or disable commands for specific users or roles within a guild. + /// + public class ApplicationCommandPermission + { + /// + /// The id of the role or user. + /// + public ulong TargetId { get; } + + /// + /// The target of this permission. + /// + public ApplicationCommandPermissionTarget TargetType { get; } + + /// + /// to allow, otherwise . + /// + public bool Permission { get; } + + internal ApplicationCommandPermission() { } + + /// + /// Creates a new . + /// + /// The id you want to target this permission value for. + /// The type of the targetId parameter. + /// The value of this permission. + public ApplicationCommandPermission(ulong targetId, ApplicationCommandPermissionTarget targetType, bool allow) + { + TargetId = targetId; + TargetType = targetType; + Permission = allow; + } + + /// + /// Creates a new targeting . + /// + /// The user you want to target this permission value for. + /// The value of this permission. + public ApplicationCommandPermission(IUser target, bool allow) + { + TargetId = target.Id; + Permission = allow; + TargetType = ApplicationCommandPermissionTarget.User; + } + + /// + /// Creates a new targeting . + /// + /// The role you want to target this permission value for. + /// The value of this permission. + public ApplicationCommandPermission(IRole target, bool allow) + { + TargetId = target.Id; + Permission = allow; + TargetType = ApplicationCommandPermissionTarget.Role; + } + } +} diff --git a/src/Discord.Net.Core/Entities/Permissions/ChannelPermission.cs b/src/Discord.Net.Core/Entities/Permissions/ChannelPermission.cs index bf08887bd..45e24b7fa 100644 --- a/src/Discord.Net.Core/Entities/Permissions/ChannelPermission.cs +++ b/src/Discord.Net.Core/Entities/Permissions/ChannelPermission.cs @@ -10,94 +10,141 @@ namespace Discord /// /// Allows creation of instant invites. /// - CreateInstantInvite = 0x00_00_00_01, + CreateInstantInvite = 0x00_00_00_00_01, /// /// Allows management and editing of channels. /// - ManageChannels = 0x00_00_00_10, + ManageChannels = 0x00_00_00_00_10, // Text /// /// Allows for the addition of reactions to messages. /// - AddReactions = 0x00_00_00_40, + AddReactions = 0x00_00_00_00_40, /// /// Allows guild members to view a channel, which includes reading messages in text channels. /// - ViewChannel = 0x00_00_04_00, + ViewChannel = 0x00_00_00_04_00, /// /// Allows for sending messages in a channel. /// - SendMessages = 0x00_00_08_00, + SendMessages = 0x00_00_00_08_00, /// /// Allows for sending of text-to-speech messages. /// - SendTTSMessages = 0x00_00_10_00, + SendTTSMessages = 0x00_00_00_10_00, /// /// Allows for deletion of other users messages. /// - ManageMessages = 0x00_00_20_00, + ManageMessages = 0x00_00_00_20_00, /// /// Allows links sent by users with this permission will be auto-embedded. /// - EmbedLinks = 0x00_00_40_00, + EmbedLinks = 0x00_00_00_40_00, /// /// Allows for uploading images and files. /// - AttachFiles = 0x00_00_80_00, + AttachFiles = 0x00_00_00_80_00, /// /// Allows for reading of message history. /// - ReadMessageHistory = 0x00_01_00_00, + ReadMessageHistory = 0x00_00_01_00_00, /// /// Allows for using the @everyone tag to notify all users in a channel, and the @here tag to notify all /// online users in a channel. /// - MentionEveryone = 0x00_02_00_00, + MentionEveryone = 0x00_00_02_00_00, /// /// Allows the usage of custom emojis from other servers. /// - UseExternalEmojis = 0x00_04_00_00, + UseExternalEmojis = 0x00_00_04_00_00, // Voice /// /// Allows for joining of a voice channel. /// - Connect = 0x00_10_00_00, + Connect = 0x00_00_10_00_00, /// /// Allows for speaking in a voice channel. /// - Speak = 0x00_20_00_00, + Speak = 0x00_00_20_00_00, /// /// Allows for muting members in a voice channel. /// - MuteMembers = 0x00_40_00_00, + MuteMembers = 0x00_00_40_00_00, /// /// Allows for deafening of members in a voice channel. /// - DeafenMembers = 0x00_80_00_00, + DeafenMembers = 0x00_00_80_00_00, /// /// Allows for moving of members between voice channels. /// - MoveMembers = 0x01_00_00_00, + MoveMembers = 0x00_01_00_00_00, /// /// Allows for using voice-activity-detection in a voice channel. /// - UseVAD = 0x02_00_00_00, - PrioritySpeaker = 0x00_00_01_00, + UseVAD = 0x00_02_00_00_00, + + /// + /// Allows for using priority speaker in a voice channel. + /// + PrioritySpeaker = 0x00_00_00_01_00, + /// /// Allows video streaming in a voice channel. /// - Stream = 0x00_00_02_00, + Stream = 0x00_00_00_02_00, // More General /// /// Allows management and editing of roles. /// - ManageRoles = 0x10_00_00_00, + ManageRoles = 0x00_10_00_00_00, /// /// Allows management and editing of webhooks. /// - ManageWebhooks = 0x20_00_00_00, + ManageWebhooks = 0x00_20_00_00_00, + + /// + /// Allows management and editing of emojis. + /// + ManageEmojis = 0x00_40_00_00_00, + + /// + /// Allows members to use slash commands in text channels. + /// + UseApplicationCommands = 0x00_80_00_00_00, + + /// + /// Allows for requesting to speak in stage channels. (This permission is under active development and may be changed or removed.) + /// + RequestToSpeak = 0x01_00_00_00_00, + + /// + /// Allows for deleting and archiving threads, and viewing all private threads + /// + ManageThreads = 0x04_00_00_00_00, + + /// + /// Allows for creating public threads. + /// + CreatePublicThreads = 0x08_00_00_00_00, + /// + /// Allows for creating private threads. + /// + CreatePrivateThreads = 0x10_00_00_00_00, + /// + /// Allows the usage of custom stickers from other servers. + /// + UseExternalStickers = 0x20_00_00_00_00, + /// + /// Allows for sending messages in threads. + /// + SendMessagesInThreads = 0x40_00_00_00_00, + /// + /// Allows for launching activities (applications with the EMBEDDED flag) in a voice channel. + /// + StartEmbeddedActivities = 0x80_00_00_00_00 + } } diff --git a/src/Discord.Net.Core/Entities/Permissions/ChannelPermissions.cs b/src/Discord.Net.Core/Entities/Permissions/ChannelPermissions.cs index d774cc51d..ee5c9984a 100644 --- a/src/Discord.Net.Core/Entities/Permissions/ChannelPermissions.cs +++ b/src/Discord.Net.Core/Entities/Permissions/ChannelPermissions.cs @@ -7,87 +7,106 @@ namespace Discord [DebuggerDisplay("{DebuggerDisplay,nq}")] public struct ChannelPermissions { - /// Gets a blank that grants no permissions. - /// A structure that does not contain any set permissions. + /// Gets a blank that grants no permissions. + /// A structure that does not contain any set permissions. public static readonly ChannelPermissions None = new ChannelPermissions(); - /// Gets a that grants all permissions for text channels. - public static readonly ChannelPermissions Text = new ChannelPermissions(0b01100_0000000_1111111110001_010001); - /// Gets a that grants all permissions for voice channels. - public static readonly ChannelPermissions Voice = new ChannelPermissions(0b00100_1111110_0000000011100_010001); - /// Gets a that grants all permissions for category channels. + /// Gets a that grants all permissions for text channels. + public static readonly ChannelPermissions Text = new ChannelPermissions(0b0_11111_0101100_0000000_1111111110001_010001); + /// Gets a that grants all permissions for voice channels. + public static readonly ChannelPermissions Voice = new ChannelPermissions(0b1_00000_0000100_1111110_0000000011100_010001); + /// Gets a that grants all permissions for stage channels. + public static readonly ChannelPermissions Stage = new ChannelPermissions(0b0_00000_1000100_0111010_0000000010000_010001); + /// Gets a that grants all permissions for category channels. public static readonly ChannelPermissions Category = new ChannelPermissions(0b01100_1111110_1111111110001_010001); - /// Gets a that grants all permissions for direct message channels. + /// Gets a that grants all permissions for direct message channels. public static readonly ChannelPermissions DM = new ChannelPermissions(0b00000_1000110_1011100110001_000000); - /// Gets a that grants all permissions for group channels. + /// Gets a that grants all permissions for group channels. public static readonly ChannelPermissions Group = new ChannelPermissions(0b00000_1000110_0001101100000_000000); - /// Gets a that grants all permissions for a given channel type. + /// Gets a that grants all permissions for a given channel type. /// Unknown channel type. public static ChannelPermissions All(IChannel channel) { - switch (channel) + return channel switch { - case ITextChannel _: return Text; - case IVoiceChannel _: return Voice; - case ICategoryChannel _: return Category; - case IDMChannel _: return DM; - case IGroupChannel _: return Group; - default: throw new ArgumentException(message: "Unknown channel type.", paramName: nameof(channel)); - } + ITextChannel _ => Text, + IStageChannel _ => Stage, + IVoiceChannel _ => Voice, + ICategoryChannel _ => Category, + IDMChannel _ => DM, + IGroupChannel _ => Group, + _ => throw new ArgumentException(message: "Unknown channel type.", paramName: nameof(channel)), + }; } - /// Gets a packed value representing all the permissions in this . + /// Gets a packed value representing all the permissions in this . public ulong RawValue { get; } - /// If true, a user may create invites. + /// If true, a user may create invites. public bool CreateInstantInvite => Permissions.GetValue(RawValue, ChannelPermission.CreateInstantInvite); - /// If true, a user may create, delete and modify this channel. + /// If true, a user may create, delete and modify this channel. public bool ManageChannel => Permissions.GetValue(RawValue, ChannelPermission.ManageChannels); - /// If true, a user may add reactions. + /// If true, a user may add reactions. public bool AddReactions => Permissions.GetValue(RawValue, ChannelPermission.AddReactions); - /// If true, a user may view channels. + /// If true, a user may view channels. public bool ViewChannel => Permissions.GetValue(RawValue, ChannelPermission.ViewChannel); - /// If true, a user may send messages. + /// If true, a user may send messages. public bool SendMessages => Permissions.GetValue(RawValue, ChannelPermission.SendMessages); - /// If true, a user may send text-to-speech messages. + /// If true, a user may send text-to-speech messages. public bool SendTTSMessages => Permissions.GetValue(RawValue, ChannelPermission.SendTTSMessages); - /// If true, a user may delete messages. + /// If true, a user may delete messages. public bool ManageMessages => Permissions.GetValue(RawValue, ChannelPermission.ManageMessages); - /// If true, Discord will auto-embed links sent by this user. + /// If true, Discord will auto-embed links sent by this user. public bool EmbedLinks => Permissions.GetValue(RawValue, ChannelPermission.EmbedLinks); - /// If true, a user may send files. + /// If true, a user may send files. public bool AttachFiles => Permissions.GetValue(RawValue, ChannelPermission.AttachFiles); - /// If true, a user may read previous messages. + /// If true, a user may read previous messages. public bool ReadMessageHistory => Permissions.GetValue(RawValue, ChannelPermission.ReadMessageHistory); - /// If true, a user may mention @everyone. + /// If true, a user may mention @everyone. public bool MentionEveryone => Permissions.GetValue(RawValue, ChannelPermission.MentionEveryone); - /// If true, a user may use custom emoji from other guilds. + /// If true, a user may use custom emoji from other guilds. public bool UseExternalEmojis => Permissions.GetValue(RawValue, ChannelPermission.UseExternalEmojis); - /// If true, a user may connect to a voice channel. + /// If true, a user may connect to a voice channel. public bool Connect => Permissions.GetValue(RawValue, ChannelPermission.Connect); - /// If true, a user may speak in a voice channel. + /// If true, a user may speak in a voice channel. public bool Speak => Permissions.GetValue(RawValue, ChannelPermission.Speak); - /// If true, a user may mute users. + /// If true, a user may mute users. public bool MuteMembers => Permissions.GetValue(RawValue, ChannelPermission.MuteMembers); - /// If true, a user may deafen users. + /// If true, a user may deafen users. public bool DeafenMembers => Permissions.GetValue(RawValue, ChannelPermission.DeafenMembers); - /// If true, a user may move other users between voice channels. + /// If true, a user may move other users between voice channels. public bool MoveMembers => Permissions.GetValue(RawValue, ChannelPermission.MoveMembers); - /// If true, a user may use voice-activity-detection rather than push-to-talk. + /// If true, a user may use voice-activity-detection rather than push-to-talk. public bool UseVAD => Permissions.GetValue(RawValue, ChannelPermission.UseVAD); - /// If true, a user may use priority speaker in a voice channel. + /// If true, a user may use priority speaker in a voice channel. public bool PrioritySpeaker => Permissions.GetValue(RawValue, ChannelPermission.PrioritySpeaker); - /// If true, a user may stream video in a voice channel. + /// If true, a user may stream video in a voice channel. public bool Stream => Permissions.GetValue(RawValue, ChannelPermission.Stream); - /// If true, a user may adjust role permissions. This also implictly grants all other permissions. + /// If true, a user may adjust role permissions. This also implicitly grants all other permissions. public bool ManageRoles => Permissions.GetValue(RawValue, ChannelPermission.ManageRoles); - /// If true, a user may edit the webhooks for this channel. + /// If true, a user may edit the webhooks for this channel. public bool ManageWebhooks => Permissions.GetValue(RawValue, ChannelPermission.ManageWebhooks); + /// If true, a user may use application commands in this guild. + public bool UseApplicationCommands => Permissions.GetValue(RawValue, ChannelPermission.UseApplicationCommands); + /// If true, a user may request to speak in stage channels. + public bool RequestToSpeak => Permissions.GetValue(RawValue, ChannelPermission.RequestToSpeak); + /// If true, a user may manage threads in this guild. + public bool ManageThreads => Permissions.GetValue(RawValue, ChannelPermission.ManageThreads); + /// If true, a user may create public threads in this guild. + public bool CreatePublicThreads => Permissions.GetValue(RawValue, ChannelPermission.CreatePublicThreads); + /// If true, a user may create private threads in this guild. + public bool CreatePrivateThreads => Permissions.GetValue(RawValue, ChannelPermission.CreatePrivateThreads); + /// If true, a user may use external stickers in this guild. + public bool UseExternalStickers => Permissions.GetValue(RawValue, ChannelPermission.UseExternalStickers); + /// If true, a user may send messages in threads in this guild. + public bool SendMessagesInThreads => Permissions.GetValue(RawValue, ChannelPermission.SendMessagesInThreads); + /// If true, a user launch application activities in voice channels in this guild. + public bool StartEmbeddedActivities => Permissions.GetValue(RawValue, ChannelPermission.StartEmbeddedActivities); - /// Creates a new with the provided packed value. + /// Creates a new with the provided packed value. public ChannelPermissions(ulong rawValue) { RawValue = rawValue; } private ChannelPermissions(ulong initialValue, @@ -112,7 +131,15 @@ namespace Discord bool? prioritySpeaker = null, bool? stream = null, bool? manageRoles = null, - bool? manageWebhooks = null) + bool? manageWebhooks = null, + bool? useApplicationCommands = null, + bool? requestToSpeak = null, + bool? manageThreads = null, + bool? createPublicThreads = null, + bool? createPrivateThreads = null, + bool? useExternalStickers = null, + bool? sendMessagesInThreads = null, + bool? startEmbeddedActivities = null) { ulong value = initialValue; @@ -138,11 +165,19 @@ namespace Discord Permissions.SetValue(ref value, stream, ChannelPermission.Stream); Permissions.SetValue(ref value, manageRoles, ChannelPermission.ManageRoles); Permissions.SetValue(ref value, manageWebhooks, ChannelPermission.ManageWebhooks); + Permissions.SetValue(ref value, useApplicationCommands, ChannelPermission.UseApplicationCommands); + Permissions.SetValue(ref value, requestToSpeak, ChannelPermission.RequestToSpeak); + Permissions.SetValue(ref value, manageThreads, ChannelPermission.ManageThreads); + Permissions.SetValue(ref value, createPublicThreads, ChannelPermission.CreatePublicThreads); + Permissions.SetValue(ref value, createPrivateThreads, ChannelPermission.CreatePrivateThreads); + Permissions.SetValue(ref value, useExternalStickers, ChannelPermission.UseExternalStickers); + Permissions.SetValue(ref value, sendMessagesInThreads, ChannelPermission.SendMessagesInThreads); + Permissions.SetValue(ref value, startEmbeddedActivities, ChannelPermission.StartEmbeddedActivities); RawValue = value; } - /// Creates a new with the provided permissions. + /// Creates a new with the provided permissions. public ChannelPermissions( bool createInstantInvite = false, bool manageChannel = false, @@ -165,13 +200,23 @@ namespace Discord bool prioritySpeaker = false, bool stream = false, bool manageRoles = false, - bool manageWebhooks = false) + bool manageWebhooks = false, + bool useApplicationCommands = false, + bool requestToSpeak = false, + bool manageThreads = false, + bool createPublicThreads = false, + bool createPrivateThreads = false, + bool useExternalStickers = false, + bool sendMessagesInThreads = false, + bool startEmbeddedActivities = false) : this(0, createInstantInvite, manageChannel, addReactions, viewChannel, sendMessages, sendTTSMessages, manageMessages, embedLinks, attachFiles, readMessageHistory, mentionEveryone, useExternalEmojis, connect, - speak, muteMembers, deafenMembers, moveMembers, useVoiceActivation, prioritySpeaker, stream, manageRoles, manageWebhooks) + speak, muteMembers, deafenMembers, moveMembers, useVoiceActivation, prioritySpeaker, stream, manageRoles, manageWebhooks, + useApplicationCommands, requestToSpeak, manageThreads, createPublicThreads, createPrivateThreads, useExternalStickers, sendMessagesInThreads, + startEmbeddedActivities) { } - /// Creates a new from this one, changing the provided non-null permissions. + /// Creates a new from this one, changing the provided non-null permissions. public ChannelPermissions Modify( bool? createInstantInvite = null, bool? manageChannel = null, @@ -194,7 +239,15 @@ namespace Discord bool? prioritySpeaker = null, bool? stream = null, bool? manageRoles = null, - bool? manageWebhooks = null) + bool? manageWebhooks = null, + bool? useApplicationCommands = null, + bool? requestToSpeak = null, + bool? manageThreads = null, + bool? createPublicThreads = null, + bool? createPrivateThreads = null, + bool? useExternalStickers = null, + bool? sendMessagesInThreads = null, + bool? startEmbeddedActivities = null) => new ChannelPermissions(RawValue, createInstantInvite, manageChannel, @@ -217,7 +270,15 @@ namespace Discord prioritySpeaker, stream, manageRoles, - manageWebhooks); + manageWebhooks, + useApplicationCommands, + requestToSpeak, + manageThreads, + createPublicThreads, + createPrivateThreads, + useExternalStickers, + sendMessagesInThreads, + startEmbeddedActivities); public bool Has(ChannelPermission permission) => Permissions.GetValue(RawValue, permission); diff --git a/src/Discord.Net.Core/Entities/Permissions/GuildApplicationCommandPermissions.cs b/src/Discord.Net.Core/Entities/Permissions/GuildApplicationCommandPermissions.cs new file mode 100644 index 000000000..e738fec4c --- /dev/null +++ b/src/Discord.Net.Core/Entities/Permissions/GuildApplicationCommandPermissions.cs @@ -0,0 +1,39 @@ +using System.Collections.Generic; + +namespace Discord +{ + /// + /// Returned when fetching the permissions for a command in a guild. + /// + public class GuildApplicationCommandPermission + + { + /// + /// The id of the command. + /// + public ulong CommandId { get; } + + /// + /// The id of the application the command belongs to. + /// + public ulong ApplicationId { get; } + + /// + /// The id of the guild. + /// + public ulong GuildId { get; } + + /// + /// The permissions for the command in the guild. + /// + public IReadOnlyCollection Permissions { get; } + + internal GuildApplicationCommandPermission(ulong commandId, ulong appId, ulong guildId, ApplicationCommandPermission[] permissions) + { + CommandId = commandId; + ApplicationId = appId; + GuildId = guildId; + Permissions = permissions; + } + } +} diff --git a/src/Discord.Net.Core/Entities/Permissions/GuildPermission.cs b/src/Discord.Net.Core/Entities/Permissions/GuildPermission.cs index 31bd6164a..5a5827c1d 100644 --- a/src/Discord.Net.Core/Entities/Permissions/GuildPermission.cs +++ b/src/Discord.Net.Core/Entities/Permissions/GuildPermission.cs @@ -10,7 +10,7 @@ namespace Discord /// /// Allows creation of instant invites. /// - CreateInstantInvite = 0x00_00_00_01, + CreateInstantInvite = 0x00_00_00_01, /// /// Allows kicking members. /// @@ -18,7 +18,7 @@ namespace Discord /// This permission requires the owner account to use two-factor /// authentication when used on a guild that has server-wide 2FA enabled. /// - KickMembers = 0x00_00_00_02, + KickMembers = 0x00_00_00_02, /// /// Allows banning members. /// @@ -26,7 +26,7 @@ namespace Discord /// This permission requires the owner account to use two-factor /// authentication when used on a guild that has server-wide 2FA enabled. /// - BanMembers = 0x00_00_00_04, + BanMembers = 0x00_00_00_04, /// /// Allows all permissions and bypasses channel permission overwrites. /// @@ -34,7 +34,7 @@ namespace Discord /// This permission requires the owner account to use two-factor /// authentication when used on a guild that has server-wide 2FA enabled. /// - Administrator = 0x00_00_00_08, + Administrator = 0x00_00_00_08, /// /// Allows management and editing of channels. /// @@ -42,7 +42,7 @@ namespace Discord /// This permission requires the owner account to use two-factor /// authentication when used on a guild that has server-wide 2FA enabled. /// - ManageChannels = 0x00_00_00_10, + ManageChannels = 0x00_00_00_10, /// /// Allows management and editing of the guild. /// @@ -50,27 +50,33 @@ namespace Discord /// This permission requires the owner account to use two-factor /// authentication when used on a guild that has server-wide 2FA enabled. /// - ManageGuild = 0x00_00_00_20, + ManageGuild = 0x00_00_00_20, /// /// Allows for viewing of guild insights /// - ViewGuildInsights = 0x00_08_00_00, + ViewGuildInsights = 0x00_08_00_00, // Text /// /// Allows for the addition of reactions to messages. /// - AddReactions = 0x00_00_00_40, + AddReactions = 0x00_00_00_40, /// /// Allows for viewing of audit logs. /// - ViewAuditLog = 0x00_00_00_80, - ViewChannel = 0x00_00_04_00, - SendMessages = 0x00_00_08_00, + ViewAuditLog = 0x00_00_00_80, + /// + /// Allows guild members to view a channel, which includes reading messages in text channels. + /// + ViewChannel = 0x00_00_04_00, + /// + /// Allows for sending messages in a channel + /// + SendMessages = 0x00_00_08_00, /// /// Allows for sending of text-to-speech messages. /// - SendTTSMessages = 0x00_00_10_00, + SendTTSMessages = 0x00_00_10_00, /// /// Allows for deletion of other users messages. /// @@ -78,70 +84,73 @@ namespace Discord /// This permission requires the owner account to use two-factor /// authentication when used on a guild that has server-wide 2FA enabled. /// - ManageMessages = 0x00_00_20_00, + ManageMessages = 0x00_00_20_00, /// /// Allows links sent by users with this permission will be auto-embedded. /// - EmbedLinks = 0x00_00_40_00, + EmbedLinks = 0x00_00_40_00, /// /// Allows for uploading images and files. /// - AttachFiles = 0x00_00_80_00, + AttachFiles = 0x00_00_80_00, /// /// Allows for reading of message history. /// - ReadMessageHistory = 0x00_01_00_00, + ReadMessageHistory = 0x00_01_00_00, /// /// Allows for using the @everyone tag to notify all users in a channel, and the @here tag to notify all /// online users in a channel. /// - MentionEveryone = 0x00_02_00_00, + MentionEveryone = 0x00_02_00_00, /// /// Allows the usage of custom emojis from other servers. /// - UseExternalEmojis = 0x00_04_00_00, + UseExternalEmojis = 0x00_04_00_00, // Voice /// /// Allows for joining of a voice channel. /// - Connect = 0x00_10_00_00, + Connect = 0x00_10_00_00, /// /// Allows for speaking in a voice channel. /// - Speak = 0x00_20_00_00, + Speak = 0x00_20_00_00, /// /// Allows for muting members in a voice channel. /// - MuteMembers = 0x00_40_00_00, + MuteMembers = 0x00_40_00_00, /// /// Allows for deafening of members in a voice channel. /// - DeafenMembers = 0x00_80_00_00, + DeafenMembers = 0x00_80_00_00, /// /// Allows for moving of members between voice channels. /// - MoveMembers = 0x01_00_00_00, + MoveMembers = 0x01_00_00_00, /// /// Allows for using voice-activity-detection in a voice channel. /// - UseVAD = 0x02_00_00_00, - PrioritySpeaker = 0x00_00_01_00, + UseVAD = 0x02_00_00_00, + /// + /// Allows for using priority speaker in a voice channel. + /// + PrioritySpeaker = 0x00_00_01_00, /// /// Allows video streaming in a voice channel. /// - Stream = 0x00_00_02_00, + Stream = 0x00_00_02_00, // General 2 /// /// Allows for modification of own nickname. /// - ChangeNickname = 0x04_00_00_00, + ChangeNickname = 0x04_00_00_00, /// /// Allows for modification of other users nicknames. /// - ManageNicknames = 0x08_00_00_00, + ManageNicknames = 0x08_00_00_00, /// /// Allows management and editing of roles. /// @@ -149,7 +158,7 @@ namespace Discord /// This permission requires the owner account to use two-factor /// authentication when used on a guild that has server-wide 2FA enabled. /// - ManageRoles = 0x10_00_00_00, + ManageRoles = 0x10_00_00_00, /// /// Allows management and editing of webhooks. /// @@ -157,14 +166,55 @@ namespace Discord /// This permission requires the owner account to use two-factor /// authentication when used on a guild that has server-wide 2FA enabled. /// - ManageWebhooks = 0x20_00_00_00, + ManageWebhooks = 0x20_00_00_00, /// - /// Allows management and editing of emojis. + /// Allows management and editing of emojis and stickers. /// /// /// This permission requires the owner account to use two-factor /// authentication when used on a guild that has server-wide 2FA enabled. /// - ManageEmojis = 0x40_00_00_00 + ManageEmojisAndStickers = 0x40_00_00_00, + /// + /// Allows members to use application commands like slash commands and context menus in text channels. + /// + UseApplicationCommands = 0x80_00_00_00, + /// + /// Allows for requesting to speak in stage channels. + /// + RequestToSpeak = 0x01_00_00_00_00, + /// + /// Allows for creating, editing, and deleting guild scheduled events. + /// + ManageEvents = 0x02_00_00_00_00, + /// + /// Allows for deleting and archiving threads, and viewing all private threads. + /// + /// + /// This permission requires the owner account to use two-factor + /// authentication when used on a guild that has server-wide 2FA enabled. + /// + ManageThreads = 0x04_00_00_00_00, + /// + /// Allows for creating public threads. + /// + CreatePublicThreads = 0x08_00_00_00_00, + /// + /// Allows for creating private threads. + /// + CreatePrivateThreads = 0x10_00_00_00_00, + /// + /// Allows the usage of custom stickers from other servers. + /// + UseExternalStickers = 0x20_00_00_00_00, + /// + /// Allows for sending messages in threads. + /// + SendMessagesInThreads = 0x40_00_00_00_00, + /// + /// Allows for launching activities (applications with the EMBEDDED flag) in a voice channel. + /// + StartEmbeddedActivities = 0x80_00_00_00_00 + } } diff --git a/src/Discord.Net.Core/Entities/Permissions/GuildPermissions.cs b/src/Discord.Net.Core/Entities/Permissions/GuildPermissions.cs index b03c0e1a8..8a4ad2189 100644 --- a/src/Discord.Net.Core/Entities/Permissions/GuildPermissions.cs +++ b/src/Discord.Net.Core/Entities/Permissions/GuildPermissions.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Diagnostics; +using System.Linq; namespace Discord { @@ -10,9 +11,9 @@ namespace Discord /// Gets a blank that grants no permissions. public static readonly GuildPermissions None = new GuildPermissions(); /// Gets a that grants all guild permissions for webhook users. - public static readonly GuildPermissions Webhook = new GuildPermissions(0b00000_0000000_0001101100000_000000); + public static readonly GuildPermissions Webhook = new GuildPermissions(0b0_00000_0000000_0000000_0001101100000_000000); /// Gets a that grants all guild permissions. - public static readonly GuildPermissions All = new GuildPermissions(0b11111_1111111_1111111111111_111111); + public static readonly GuildPermissions All = new GuildPermissions(0b1_11111_1111111_1111111_1111111111111_111111); /// Gets a packed value representing all the permissions in this . public ulong RawValue { get; } @@ -81,8 +82,26 @@ namespace Discord public bool ManageRoles => Permissions.GetValue(RawValue, GuildPermission.ManageRoles); /// If true, a user may edit the webhooks for this guild. public bool ManageWebhooks => Permissions.GetValue(RawValue, GuildPermission.ManageWebhooks); - /// If true, a user may edit the emojis for this guild. - public bool ManageEmojis => Permissions.GetValue(RawValue, GuildPermission.ManageEmojis); + /// If true, a user may edit the emojis and stickers for this guild. + public bool ManageEmojisAndStickers => Permissions.GetValue(RawValue, GuildPermission.ManageEmojisAndStickers); + /// If true, a user may use slash commands in this guild. + public bool UseApplicationCommands => Permissions.GetValue(RawValue, GuildPermission.UseApplicationCommands); + /// If true, a user may request to speak in stage channels. + public bool RequestToSpeak => Permissions.GetValue(RawValue, GuildPermission.RequestToSpeak); + /// If true, a user may create, edit, and delete events. + public bool ManageEvents => Permissions.GetValue(RawValue, GuildPermission.ManageEvents); + /// If true, a user may manage threads in this guild. + public bool ManageThreads => Permissions.GetValue(RawValue, GuildPermission.ManageThreads); + /// If true, a user may create public threads in this guild. + public bool CreatePublicThreads => Permissions.GetValue(RawValue, GuildPermission.CreatePublicThreads); + /// If true, a user may create private threads in this guild. + public bool CreatePrivateThreads => Permissions.GetValue(RawValue, GuildPermission.CreatePrivateThreads); + /// If true, a user may use external stickers in this guild. + public bool UseExternalStickers => Permissions.GetValue(RawValue, GuildPermission.UseExternalStickers); + /// If true, a user may send messages in threads in this guild. + public bool SendMessagesInThreads => Permissions.GetValue(RawValue, GuildPermission.SendMessagesInThreads); + /// If true, a user launch application activities in voice channels in this guild. + public bool StartEmbeddedActivities => Permissions.GetValue(RawValue, GuildPermission.StartEmbeddedActivities); /// Creates a new with the provided packed value. public GuildPermissions(ulong rawValue) { RawValue = rawValue; } @@ -121,7 +140,16 @@ namespace Discord bool? manageNicknames = null, bool? manageRoles = null, bool? manageWebhooks = null, - bool? manageEmojis = null) + bool? manageEmojisAndStickers = null, + bool? useApplicationCommands = null, + bool? requestToSpeak = null, + bool? manageEvents = null, + bool? manageThreads = null, + bool? createPublicThreads = null, + bool? createPrivateThreads = null, + bool? useExternalStickers = null, + bool? sendMessagesInThreads = null, + bool? startEmbeddedActivities = null) { ulong value = initialValue; @@ -155,7 +183,16 @@ namespace Discord Permissions.SetValue(ref value, manageNicknames, GuildPermission.ManageNicknames); Permissions.SetValue(ref value, manageRoles, GuildPermission.ManageRoles); Permissions.SetValue(ref value, manageWebhooks, GuildPermission.ManageWebhooks); - Permissions.SetValue(ref value, manageEmojis, GuildPermission.ManageEmojis); + Permissions.SetValue(ref value, manageEmojisAndStickers, GuildPermission.ManageEmojisAndStickers); + Permissions.SetValue(ref value, useApplicationCommands, GuildPermission.UseApplicationCommands); + Permissions.SetValue(ref value, requestToSpeak, GuildPermission.RequestToSpeak); + Permissions.SetValue(ref value, manageEvents, GuildPermission.ManageEvents); + Permissions.SetValue(ref value, manageThreads, GuildPermission.ManageThreads); + Permissions.SetValue(ref value, createPublicThreads, GuildPermission.CreatePublicThreads); + Permissions.SetValue(ref value, createPrivateThreads, GuildPermission.CreatePrivateThreads); + Permissions.SetValue(ref value, useExternalStickers, GuildPermission.UseExternalStickers); + Permissions.SetValue(ref value, sendMessagesInThreads, GuildPermission.SendMessagesInThreads); + Permissions.SetValue(ref value, startEmbeddedActivities, GuildPermission.StartEmbeddedActivities); RawValue = value; } @@ -192,7 +229,16 @@ namespace Discord bool manageNicknames = false, bool manageRoles = false, bool manageWebhooks = false, - bool manageEmojis = false) + bool manageEmojisAndStickers = false, + bool useApplicationCommands = false, + bool requestToSpeak = false, + bool manageEvents = false, + bool manageThreads = false, + bool createPublicThreads = false, + bool createPrivateThreads = false, + bool useExternalStickers = false, + bool sendMessagesInThreads = false, + bool startEmbeddedActivities = false) : this(0, createInstantInvite: createInstantInvite, manageRoles: manageRoles, @@ -224,7 +270,16 @@ namespace Discord changeNickname: changeNickname, manageNicknames: manageNicknames, manageWebhooks: manageWebhooks, - manageEmojis: manageEmojis) + manageEmojisAndStickers: manageEmojisAndStickers, + useApplicationCommands: useApplicationCommands, + requestToSpeak: requestToSpeak, + manageEvents: manageEvents, + manageThreads: manageThreads, + createPublicThreads: createPublicThreads, + createPrivateThreads: createPrivateThreads, + useExternalStickers: useExternalStickers, + sendMessagesInThreads: sendMessagesInThreads, + startEmbeddedActivities: startEmbeddedActivities) { } /// Creates a new from this one, changing the provided non-null permissions. @@ -259,11 +314,22 @@ namespace Discord bool? manageNicknames = null, bool? manageRoles = null, bool? manageWebhooks = null, - bool? manageEmojis = null) + bool? manageEmojisAndStickers = null, + bool? useApplicationCommands = null, + bool? requestToSpeak = null, + bool? manageEvents = null, + bool? manageThreads = null, + bool? createPublicThreads = null, + bool? createPrivateThreads = null, + bool? useExternalStickers = null, + bool? sendMessagesInThreads = null, + bool? startEmbeddedActivities = null) => new GuildPermissions(RawValue, createInstantInvite, kickMembers, banMembers, administrator, manageChannels, manageGuild, addReactions, viewAuditLog, viewGuildInsights, viewChannel, sendMessages, sendTTSMessages, manageMessages, embedLinks, attachFiles, readMessageHistory, mentionEveryone, useExternalEmojis, connect, speak, muteMembers, deafenMembers, moveMembers, - useVoiceActivation, prioritySpeaker, stream, changeNickname, manageNicknames, manageRoles, manageWebhooks, manageEmojis); + useVoiceActivation, prioritySpeaker, stream, changeNickname, manageNicknames, manageRoles, manageWebhooks, manageEmojisAndStickers, + useApplicationCommands, requestToSpeak, manageEvents, manageThreads, createPublicThreads, createPrivateThreads, useExternalStickers, sendMessagesInThreads, + startEmbeddedActivities); /// /// Returns a value that indicates if a specific is enabled @@ -293,6 +359,18 @@ namespace Discord return perms; } + internal void Ensure(GuildPermission permissions) + { + if (!Has(permissions)) + { + var vals = Enum.GetValues(typeof(GuildPermission)).Cast(); + var currentValues = RawValue; + var missingValues = vals.Where(x => permissions.HasFlag(x) && !Permissions.GetValue(currentValues, x)); + + throw new InvalidOperationException($"Missing required guild permission{(missingValues.Count() > 1 ? "s" : "")} {string.Join(", ", missingValues.Select(x => x.ToString()))} in order to execute this operation."); + } + } + public override string ToString() => RawValue.ToString(); private string DebuggerDisplay => $"{string.Join(", ", ToList())}"; } diff --git a/src/Discord.Net.Core/Entities/Permissions/OverwritePermissions.cs b/src/Discord.Net.Core/Entities/Permissions/OverwritePermissions.cs index 4f144c74b..0e634ad1a 100644 --- a/src/Discord.Net.Core/Entities/Permissions/OverwritePermissions.cs +++ b/src/Discord.Net.Core/Entities/Permissions/OverwritePermissions.cs @@ -1,3 +1,4 @@ +using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Diagnostics; @@ -82,6 +83,22 @@ namespace Discord public PermValue ManageRoles => Permissions.GetValue(AllowValue, DenyValue, ChannelPermission.ManageRoles); /// If True, a user may edit the webhooks for this channel. public PermValue ManageWebhooks => Permissions.GetValue(AllowValue, DenyValue, ChannelPermission.ManageWebhooks); + /// If true, a user may use slash commands in this guild. + public PermValue UseApplicationCommands => Permissions.GetValue(AllowValue, DenyValue, ChannelPermission.UseApplicationCommands); + /// If true, a user may request to speak in stage channels. + public PermValue RequestToSpeak => Permissions.GetValue(AllowValue, DenyValue, ChannelPermission.RequestToSpeak); + /// If true, a user may manage threads in this guild. + public PermValue ManageThreads => Permissions.GetValue(AllowValue, DenyValue, ChannelPermission.ManageThreads); + /// If true, a user may create public threads in this guild. + public PermValue CreatePublicThreads => Permissions.GetValue(AllowValue, DenyValue, ChannelPermission.CreatePublicThreads); + /// If true, a user may create private threads in this guild. + public PermValue CreatePrivateThreads => Permissions.GetValue(AllowValue, DenyValue, ChannelPermission.CreatePrivateThreads); + /// If true, a user may use external stickers in this guild. + public PermValue UseExternalStickers => Permissions.GetValue(AllowValue, DenyValue, ChannelPermission.UseExternalStickers); + /// If true, a user may send messages in threads in this guild. + public PermValue SendMessagesInThreads => Permissions.GetValue(AllowValue, DenyValue, ChannelPermission.SendMessagesInThreads); + /// If true, a user launch application activities in voice channels in this guild. + public PermValue StartEmbeddedActivities => Permissions.GetValue(AllowValue, DenyValue, ChannelPermission.StartEmbeddedActivities); /// Creates a new OverwritePermissions with the provided allow and deny packed values. public OverwritePermissions(ulong allowValue, ulong denyValue) @@ -119,7 +136,18 @@ namespace Discord PermValue? manageRoles = null, PermValue? manageWebhooks = null, PermValue? prioritySpeaker = null, - PermValue? stream = null) + PermValue? stream = null, + PermValue? useSlashCommands = null, + PermValue? useApplicationCommands = null, + PermValue? requestToSpeak = null, + PermValue? manageThreads = null, + PermValue? createPublicThreads = null, + PermValue? createPrivateThreads = null, + PermValue? usePublicThreads = null, + PermValue? usePrivateThreads = null, + PermValue? useExternalStickers = null, + PermValue? sendMessagesInThreads = null, + PermValue? startEmbeddedActivities = null) { Permissions.SetValue(ref allowValue, ref denyValue, createInstantInvite, ChannelPermission.CreateInstantInvite); Permissions.SetValue(ref allowValue, ref denyValue, manageChannel, ChannelPermission.ManageChannels); @@ -143,6 +171,14 @@ namespace Discord Permissions.SetValue(ref allowValue, ref denyValue, stream, ChannelPermission.Stream); Permissions.SetValue(ref allowValue, ref denyValue, manageRoles, ChannelPermission.ManageRoles); Permissions.SetValue(ref allowValue, ref denyValue, manageWebhooks, ChannelPermission.ManageWebhooks); + Permissions.SetValue(ref allowValue, ref denyValue, useApplicationCommands, ChannelPermission.UseApplicationCommands); + Permissions.SetValue(ref allowValue, ref denyValue, requestToSpeak, ChannelPermission.RequestToSpeak); + Permissions.SetValue(ref allowValue, ref denyValue, manageThreads, ChannelPermission.ManageThreads); + Permissions.SetValue(ref allowValue, ref denyValue, createPublicThreads, ChannelPermission.CreatePublicThreads); + Permissions.SetValue(ref allowValue, ref denyValue, createPrivateThreads, ChannelPermission.CreatePrivateThreads); + Permissions.SetValue(ref allowValue, ref denyValue, useExternalStickers, ChannelPermission.UseExternalStickers); + Permissions.SetValue(ref allowValue, ref denyValue, sendMessagesInThreads, ChannelPermission.SendMessagesInThreads); + Permissions.SetValue(ref allowValue, ref denyValue, startEmbeddedActivities, ChannelPermission.StartEmbeddedActivities); AllowValue = allowValue; DenyValue = denyValue; @@ -173,10 +209,23 @@ namespace Discord PermValue manageRoles = PermValue.Inherit, PermValue manageWebhooks = PermValue.Inherit, PermValue prioritySpeaker = PermValue.Inherit, - PermValue stream = PermValue.Inherit) + PermValue stream = PermValue.Inherit, + PermValue useSlashCommands = PermValue.Inherit, + PermValue useApplicationCommands = PermValue.Inherit, + PermValue requestToSpeak = PermValue.Inherit, + PermValue manageThreads = PermValue.Inherit, + PermValue createPublicThreads = PermValue.Inherit, + PermValue createPrivateThreads = PermValue.Inherit, + PermValue usePublicThreads = PermValue.Inherit, + PermValue usePrivateThreads = PermValue.Inherit, + PermValue useExternalStickers = PermValue.Inherit, + PermValue sendMessagesInThreads = PermValue.Inherit, + PermValue startEmbeddedActivities = PermValue.Inherit) : this(0, 0, createInstantInvite, manageChannel, addReactions, viewChannel, sendMessages, sendTTSMessages, manageMessages, embedLinks, attachFiles, readMessageHistory, mentionEveryone, useExternalEmojis, connect, speak, muteMembers, deafenMembers, - moveMembers, useVoiceActivation, manageRoles, manageWebhooks, prioritySpeaker, stream) { } + moveMembers, useVoiceActivation, manageRoles, manageWebhooks, prioritySpeaker, stream, useSlashCommands, useApplicationCommands, + requestToSpeak, manageThreads, createPublicThreads, createPrivateThreads, usePublicThreads, usePrivateThreads, useExternalStickers, + sendMessagesInThreads, startEmbeddedActivities) { } /// /// Initializes a new from the current one, changing the provided @@ -204,10 +253,23 @@ namespace Discord PermValue? manageRoles = null, PermValue? manageWebhooks = null, PermValue? prioritySpeaker = null, - PermValue? stream = null) + PermValue? stream = null, + PermValue? useSlashCommands = null, + PermValue? useApplicationCommands = null, + PermValue? requestToSpeak = null, + PermValue? manageThreads = null, + PermValue? createPublicThreads = null, + PermValue? createPrivateThreads = null, + PermValue? usePublicThreads = null, + PermValue? usePrivateThreads = null, + PermValue? useExternalStickers = null, + PermValue? sendMessagesInThreads = null, + PermValue? startEmbeddedActivities = null) => new OverwritePermissions(AllowValue, DenyValue, createInstantInvite, manageChannel, addReactions, viewChannel, sendMessages, sendTTSMessages, manageMessages, embedLinks, attachFiles, readMessageHistory, mentionEveryone, useExternalEmojis, connect, speak, muteMembers, deafenMembers, - moveMembers, useVoiceActivation, manageRoles, manageWebhooks, prioritySpeaker, stream); + moveMembers, useVoiceActivation, manageRoles, manageWebhooks, prioritySpeaker, stream, useSlashCommands, useApplicationCommands, + requestToSpeak, manageThreads, createPublicThreads, createPrivateThreads, usePublicThreads, usePrivateThreads, useExternalStickers, + sendMessagesInThreads, startEmbeddedActivities); /// /// Creates a of all the values that are allowed. diff --git a/src/Discord.Net.Core/Entities/Roles/Color.cs b/src/Discord.Net.Core/Entities/Roles/Color.cs index 7c2d152a4..ee50710e8 100644 --- a/src/Discord.Net.Core/Entities/Roles/Color.cs +++ b/src/Discord.Net.Core/Entities/Roles/Color.cs @@ -10,68 +10,70 @@ namespace Discord [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public struct Color { + /// Gets the max decimal value of color. + public const uint MaxDecimalValue = 0xFFFFFF; /// Gets the default user color value. - public static readonly Color Default = new Color(0); + public static readonly Color Default = new(0); /// Gets the teal color value. /// A color struct with the hex value of 1ABC9C. - public static readonly Color Teal = new Color(0x1ABC9C); + public static readonly Color Teal = new(0x1ABC9C); /// Gets the dark teal color value. /// A color struct with the hex value of 11806A. - public static readonly Color DarkTeal = new Color(0x11806A); + public static readonly Color DarkTeal = new(0x11806A); /// Gets the green color value. /// A color struct with the hex value of 2ECC71. - public static readonly Color Green = new Color(0x2ECC71); + public static readonly Color Green = new(0x2ECC71); /// Gets the dark green color value. /// A color struct with the hex value of 1F8B4C. - public static readonly Color DarkGreen = new Color(0x1F8B4C); + public static readonly Color DarkGreen = new(0x1F8B4C); /// Gets the blue color value. /// A color struct with the hex value of 3498DB. - public static readonly Color Blue = new Color(0x3498DB); + public static readonly Color Blue = new(0x3498DB); /// Gets the dark blue color value. /// A color struct with the hex value of 206694. - public static readonly Color DarkBlue = new Color(0x206694); + public static readonly Color DarkBlue = new(0x206694); /// Gets the purple color value. /// A color struct with the hex value of 9B59B6. - public static readonly Color Purple = new Color(0x9B59B6); + public static readonly Color Purple = new(0x9B59B6); /// Gets the dark purple color value. /// A color struct with the hex value of 71368A. - public static readonly Color DarkPurple = new Color(0x71368A); + public static readonly Color DarkPurple = new(0x71368A); /// Gets the magenta color value. /// A color struct with the hex value of E91E63. - public static readonly Color Magenta = new Color(0xE91E63); + public static readonly Color Magenta = new(0xE91E63); /// Gets the dark magenta color value. /// A color struct with the hex value of AD1457. - public static readonly Color DarkMagenta = new Color(0xAD1457); + public static readonly Color DarkMagenta = new(0xAD1457); /// Gets the gold color value. /// A color struct with the hex value of F1C40F. - public static readonly Color Gold = new Color(0xF1C40F); + public static readonly Color Gold = new(0xF1C40F); /// Gets the light orange color value. /// A color struct with the hex value of C27C0E. - public static readonly Color LightOrange = new Color(0xC27C0E); + public static readonly Color LightOrange = new(0xC27C0E); /// Gets the orange color value. /// A color struct with the hex value of E67E22. - public static readonly Color Orange = new Color(0xE67E22); + public static readonly Color Orange = new(0xE67E22); /// Gets the dark orange color value. /// A color struct with the hex value of A84300. - public static readonly Color DarkOrange = new Color(0xA84300); + public static readonly Color DarkOrange = new(0xA84300); /// Gets the red color value. /// A color struct with the hex value of E74C3C. - public static readonly Color Red = new Color(0xE74C3C); + public static readonly Color Red = new(0xE74C3C); /// Gets the dark red color value. /// A color struct with the hex value of 992D22. - public static readonly Color DarkRed = new Color(0x992D22); + public static readonly Color DarkRed = new(0x992D22); /// Gets the light grey color value. /// A color struct with the hex value of 979C9F. - public static readonly Color LightGrey = new Color(0x979C9F); + public static readonly Color LightGrey = new(0x979C9F); /// Gets the lighter grey color value. /// A color struct with the hex value of 95A5A6. - public static readonly Color LighterGrey = new Color(0x95A5A6); + public static readonly Color LighterGrey = new(0x95A5A6); /// Gets the dark grey color value. /// A color struct with the hex value of 607D8B. - public static readonly Color DarkGrey = new Color(0x607D8B); + public static readonly Color DarkGrey = new(0x607D8B); /// Gets the darker grey color value. /// A color struct with the hex value of 546E7A. - public static readonly Color DarkerGrey = new Color(0x546E7A); + public static readonly Color DarkerGrey = new(0x546E7A); /// Gets the encoded value for this color. /// @@ -91,22 +93,27 @@ namespace Discord /// Initializes a struct with the given raw value. /// /// - /// The following will create a color that has a hex value of + /// The following will create a color that has a hex value of /// #607D8B. /// /// Color darkGrey = new Color(0x607D8B); /// /// /// The raw value of the color (e.g. 0x607D8B). + /// Value exceeds . public Color(uint rawValue) { + if (rawValue > MaxDecimalValue) + throw new ArgumentException($"{nameof(RawValue)} of color cannot be greater than {MaxDecimalValue}!", nameof(rawValue)); + RawValue = rawValue; } + /// /// Initializes a struct with the given RGB bytes. /// /// - /// The following will create a color that has a value of + /// The following will create a color that has a value of /// #607D8B. /// /// Color darkGrey = new Color((byte)0b_01100000, (byte)0b_01111101, (byte)0b_10001011); @@ -115,19 +122,24 @@ namespace Discord /// The byte that represents the red color. /// The byte that represents the green color. /// The byte that represents the blue color. + /// Value exceeds . public Color(byte r, byte g, byte b) { - RawValue = - ((uint)r << 16) | - ((uint)g << 8) | - (uint)b; + uint value = ((uint)r << 16) + | ((uint)g << 8) + | (uint)b; + + if (value > MaxDecimalValue) + throw new ArgumentException($"{nameof(RawValue)} of color cannot be greater than {MaxDecimalValue}!"); + + RawValue = value; } /// /// Initializes a struct with the given RGB value. /// /// - /// The following will create a color that has a value of + /// The following will create a color that has a value of /// #607D8B. /// /// Color darkGrey = new Color(96, 125, 139); @@ -145,16 +157,15 @@ namespace Discord throw new ArgumentOutOfRangeException(nameof(g), "Value must be within [0,255]."); if (b < 0 || b > 255) throw new ArgumentOutOfRangeException(nameof(b), "Value must be within [0,255]."); - RawValue = - ((uint)r << 16) | - ((uint)g << 8) | - (uint)b; + RawValue = ((uint)r << 16) + | ((uint)g << 8) + | (uint)b; } /// /// Initializes a struct with the given RGB float value. /// /// - /// The following will create a color that has a value of + /// The following will create a color that has a value of /// #607c8c. /// /// Color darkGrey = new Color(0.38f, 0.49f, 0.55f); @@ -172,10 +183,9 @@ namespace Discord throw new ArgumentOutOfRangeException(nameof(g), "Value must be within [0,1]."); if (b < 0.0f || b > 1.0f) throw new ArgumentOutOfRangeException(nameof(b), "Value must be within [0,1]."); - RawValue = - ((uint)(r * 255.0f) << 16) | - ((uint)(g * 255.0f) << 8) | - (uint)(b * 255.0f); + RawValue = ((uint)(r * 255.0f) << 16) + | ((uint)(g * 255.0f) << 8) + | (uint)(b * 255.0f); } public static bool operator ==(Color lhs, Color rhs) @@ -184,15 +194,22 @@ namespace Discord public static bool operator !=(Color lhs, Color rhs) => lhs.RawValue != rhs.RawValue; + public static implicit operator Color(uint rawValue) + => new(rawValue); + + public static implicit operator uint(Color color) + => color.RawValue; + public override bool Equals(object obj) - => (obj is Color c && RawValue == c.RawValue); + => obj is Color c && RawValue == c.RawValue; public override int GetHashCode() => RawValue.GetHashCode(); - public static implicit operator StandardColor(Color color) => - StandardColor.FromArgb((int)color.RawValue); - public static explicit operator Color(StandardColor color) => - new Color((uint)color.ToArgb() << 8 >> 8); + public static implicit operator StandardColor(Color color) + => StandardColor.FromArgb((int)color.RawValue); + + public static explicit operator Color(StandardColor color) + => new((uint)color.ToArgb() << 8 >> 8); /// /// Gets the hexadecimal representation of the color (e.g. #000ccc). diff --git a/src/Discord.Net.Core/Entities/Roles/IRole.cs b/src/Discord.Net.Core/Entities/Roles/IRole.cs index c02322be9..59ca41e31 100644 --- a/src/Discord.Net.Core/Entities/Roles/IRole.cs +++ b/src/Discord.Net.Core/Entities/Roles/IRole.cs @@ -52,6 +52,20 @@ namespace Discord /// string Name { get; } /// + /// Gets the icon of this role. + /// + /// + /// A string containing the hash of this role's icon. + /// + string Icon { get; } + /// + /// Gets the unicode emoji of this role. + /// + /// + /// This field is mutually exclusive with , either icon is set or emoji is set. + /// + Emoji Emoji { get; } + /// /// Gets the permissions granted to members of this role. /// /// @@ -86,5 +100,13 @@ namespace Discord /// A task that represents the asynchronous modification operation. /// Task ModifyAsync(Action func, RequestOptions options = null); + + /// + /// Gets the image url of the icon role. + /// + /// + /// An image url of the icon role. + /// + string GetIconUrl(); } } diff --git a/src/Discord.Net.Core/Entities/Roles/RoleProperties.cs b/src/Discord.Net.Core/Entities/Roles/RoleProperties.cs index a58112b28..93cda8d5b 100644 --- a/src/Discord.Net.Core/Entities/Roles/RoleProperties.cs +++ b/src/Discord.Net.Core/Entities/Roles/RoleProperties.cs @@ -50,6 +50,11 @@ namespace Discord /// This value may not be set if the role is an @everyone role. /// public Optional Hoist { get; set; } + + /// + /// Gets or sets the icon of the role. + /// + public Optional Icon { get; set; } /// /// Gets or sets whether or not this role can be mentioned. /// diff --git a/src/Discord.Net.Core/Entities/Stickers/ICustomSticker.cs b/src/Discord.Net.Core/Entities/Stickers/ICustomSticker.cs new file mode 100644 index 000000000..9cba38c80 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Stickers/ICustomSticker.cs @@ -0,0 +1,59 @@ +using System; +using System.Threading.Tasks; + +namespace Discord +{ + /// + /// Represents a custom sticker within a guild. + /// + public interface ICustomSticker : ISticker + { + /// + /// Gets the users id who uploaded the sticker. + /// + /// + /// In order to get the author id, the bot needs the MANAGE_EMOJIS_AND_STICKERS permission. + /// + ulong? AuthorId { get; } + + /// + /// Gets the guild that this custom sticker is in. + /// + IGuild Guild { get; } + + /// + /// Modifies this sticker. + /// + /// + /// This method modifies this sticker with the specified properties. To see an example of this + /// method and what properties are available, please refer to . + ///
+ ///
+ /// The bot needs the MANAGE_EMOJIS_AND_STICKERS permission within the guild in order to modify stickers. + ///
+ /// + /// The following example replaces the name of the sticker with kekw. + /// + /// await sticker.ModifyAsync(x => x.Name = "kekw"); + /// + /// + /// A delegate containing the properties to modify the sticker with. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous modification operation. + /// + Task ModifyAsync(Action func, RequestOptions options = null); + + /// + /// Deletes the current sticker. + /// + /// + /// The bot needs the MANAGE_EMOJIS_AND_STICKERS permission inside the guild in order to delete stickers. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous deletion operation. + /// + Task DeleteAsync(RequestOptions options = null); + } +} diff --git a/src/Discord.Net.Core/Entities/Messages/ISticker.cs b/src/Discord.Net.Core/Entities/Stickers/ISticker.cs similarity index 71% rename from src/Discord.Net.Core/Entities/Messages/ISticker.cs rename to src/Discord.Net.Core/Entities/Stickers/ISticker.cs index e7e4405b6..9deea753f 100644 --- a/src/Discord.Net.Core/Entities/Messages/ISticker.cs +++ b/src/Discord.Net.Core/Entities/Stickers/ISticker.cs @@ -5,7 +5,7 @@ namespace Discord /// /// Represents a discord sticker. /// - public interface ISticker + public interface ISticker : IStickerItem { /// /// Gets the ID of this sticker. @@ -13,7 +13,7 @@ namespace Discord /// /// A snowflake ID associated with this sticker. /// - ulong Id { get; } + new ulong Id { get; } /// /// Gets the ID of the pack of this sticker. /// @@ -27,7 +27,7 @@ namespace Discord /// /// A with the name of this sticker. /// - string Name { get; } + new string Name { get; } /// /// Gets the description of this sticker. /// @@ -43,25 +43,29 @@ namespace Discord /// IReadOnlyCollection Tags { get; } /// - /// Gets the asset hash of this sticker. + /// Gets the type of this sticker. /// - /// - /// A with the asset hash of this sticker. - /// - string Asset { get; } - /// - /// Gets the preview asset hash of this sticker. - /// - /// - /// A with the preview asset hash of this sticker. - /// - string PreviewAsset { get; } + StickerType Type { get; } /// /// Gets the format type of this sticker. /// /// /// A with the format type of this sticker. /// - StickerFormatType FormatType { get; } + new StickerFormatType Format { get; } + + /// + /// Gets whether this guild sticker can be used, may be false due to loss of Server Boosts. + /// + bool? IsAvailable { get; } + + /// + /// Gets the standard sticker's sort order within its pack. + /// + int? SortOrder { get; } + /// + /// Gets the image url for this sticker. + /// + string GetStickerUrl(); } } diff --git a/src/Discord.Net.Core/Entities/Stickers/IStickerItem.cs b/src/Discord.Net.Core/Entities/Stickers/IStickerItem.cs new file mode 100644 index 000000000..07ea63db9 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Stickers/IStickerItem.cs @@ -0,0 +1,23 @@ +namespace Discord +{ + /// + /// Represents a partial sticker item received with a message. + /// + public interface IStickerItem + { + /// + /// The id of the sticker. + /// + ulong Id { get; } + + /// + /// The name of the sticker. + /// + string Name { get; } + + /// + /// The format of the sticker. + /// + StickerFormatType Format { get; } + } +} diff --git a/src/Discord.Net.Core/Entities/Stickers/StickerPack.cs b/src/Discord.Net.Core/Entities/Stickers/StickerPack.cs new file mode 100644 index 000000000..c0c90aa69 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Stickers/StickerPack.cs @@ -0,0 +1,59 @@ +using System.Collections.Generic; +using System.Collections.Immutable; + +namespace Discord +{ + /// + /// Represents a discord sticker pack. + /// + /// The type of the stickers within the collection. + public class StickerPack where TSticker : ISticker + { + /// + /// Gets the id of the sticker pack. + /// + public ulong Id { get; } + + /// + /// Gets a collection of the stickers in the pack. + /// + public IReadOnlyCollection Stickers { get; } + + /// + /// Gets the name of the sticker pack. + /// + public string Name { get; } + + /// + /// Gets the id of the pack's SKU. + /// + public ulong SkuId { get; } + + /// + /// Gets the id of a sticker in the pack which is shown as the pack's icon. + /// + public ulong? CoverStickerId { get; } + + /// + /// Gets the description of the sticker pack. + /// + public string Description { get; } + + /// + /// Gets the id of the sticker pack's banner image + /// + public ulong BannerAssetId { get; } + + internal StickerPack(string name, ulong id, ulong skuid, ulong? coverStickerId, string description, ulong bannerAssetId, IEnumerable stickers) + { + Name = name; + Id = id; + SkuId = skuid; + CoverStickerId = coverStickerId; + Description = description; + BannerAssetId = bannerAssetId; + + Stickers = stickers.ToImmutableArray(); + } + } +} diff --git a/src/Discord.Net.Core/Entities/Stickers/StickerProperties.cs b/src/Discord.Net.Core/Entities/Stickers/StickerProperties.cs new file mode 100644 index 000000000..5f51e5f3d --- /dev/null +++ b/src/Discord.Net.Core/Entities/Stickers/StickerProperties.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; + +namespace Discord +{ + /// + /// Represents a class used to modify stickers. + /// + public class StickerProperties + { + /// + /// Gets or sets the name of the sticker. + /// + public Optional Name { get; set; } + + /// + /// Gets or sets the description of the sticker. + /// + public Optional Description { get; set; } + + /// + /// Gets or sets the tags of the sticker. + /// + public Optional> Tags { get; set; } + } +} diff --git a/src/Discord.Net.Core/Entities/Stickers/StickerType.cs b/src/Discord.Net.Core/Entities/Stickers/StickerType.cs new file mode 100644 index 000000000..0db550772 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Stickers/StickerType.cs @@ -0,0 +1,18 @@ +namespace Discord +{ + /// + /// Represents a type of sticker.. + /// + public enum StickerType + { + /// + /// Represents a discord standard sticker, this type of sticker cannot be modified by an application. + /// + Standard = 1, + + /// + /// Represents a sticker that was created within a guild. + /// + Guild = 2 + } +} diff --git a/src/Discord.Net.Core/Entities/Users/IGuildUser.cs b/src/Discord.Net.Core/Entities/Users/IGuildUser.cs index 492cb9566..947ff8521 100644 --- a/src/Discord.Net.Core/Entities/Users/IGuildUser.cs +++ b/src/Discord.Net.Core/Entities/Users/IGuildUser.cs @@ -25,6 +25,13 @@ namespace Discord /// string Nickname { get; } /// + /// Gets the guild specific avatar for this users. + /// + /// + /// The users guild avatar hash if they have one; otherwise . + /// + string GuildAvatarId { get; } + /// /// Gets the guild-level permissions for this user. /// /// @@ -73,13 +80,18 @@ namespace Discord /// bool? IsPending { get; } + /// + /// Gets the users position within the role hierarchy. + /// + int Hierarchy { get; } + /// /// Gets the level permissions granted to this user to a given channel. /// /// /// The following example checks if the current user has the ability to send a message with attachment in /// this channel; if so, uploads a file via . - /// + /// /// if (currentUser?.GetPermissions(targetChannel)?.AttachFiles) /// await targetChannel.SendFileAsync("fortnite.png"); /// @@ -91,6 +103,20 @@ namespace Discord /// ChannelPermissions GetPermissions(IGuildChannel channel); + /// + /// Gets the guild avatar URL for this user. + /// + /// + /// This property retrieves a URL for this guild user's guild specific avatar. In event that the user does not have a valid guild avatar + /// (i.e. their avatar identifier is not set), this method will return null. + /// + /// The format to return. + /// The size of the image to return in. This can be any power of two between 16 and 2048. + /// + /// + /// A string representing the user's avatar URL; null if the user does not have an avatar in place. + /// + string GetGuildAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128); /// /// Kicks this user from this guild. /// diff --git a/src/Discord.Net.Core/Entities/Users/IUser.cs b/src/Discord.Net.Core/Entities/Users/IUser.cs index 9596a8338..2f79450f3 100644 --- a/src/Discord.Net.Core/Entities/Users/IUser.cs +++ b/src/Discord.Net.Core/Entities/Users/IUser.cs @@ -10,19 +10,20 @@ namespace Discord /// /// Gets the identifier of this user's avatar. /// - string AvatarId { get; } + string AvatarId { get; } /// /// Gets the avatar URL for this user. /// /// /// This property retrieves a URL for this user's avatar. In event that the user does not have a valid avatar - /// (i.e. their avatar identifier is not set), this property will return null. If you wish to + /// (i.e. their avatar identifier is not set), this method will return null. If you wish to /// retrieve the default avatar for this user, consider using (see /// example). /// /// - /// The following example attempts to retrieve the user's current avatar and send it to a channel; if one is - /// not set, a default avatar for this user will be returned instead. + /// The following example attempts to retrieve the user's current avatar and send it to a channel; if one is + /// not set, a default avatar for this user will be returned instead. /// /// @@ -93,8 +94,8 @@ namespace Discord /// This method is used to obtain or create a channel used to send a direct message. /// /// In event that the current user cannot send a message to the target user, a channel can and will - /// still be created by Discord. However, attempting to send a message will yield a - /// with a 403 as its + /// still be created by Discord. However, attempting to send a message will yield a + /// with a 403 as its /// . There are currently no official workarounds by /// Discord. /// diff --git a/src/Discord.Net.Core/Entities/Users/IVoiceState.cs b/src/Discord.Net.Core/Entities/Users/IVoiceState.cs index a9b347003..c9a22761f 100644 --- a/src/Discord.Net.Core/Entities/Users/IVoiceState.cs +++ b/src/Discord.Net.Core/Entities/Users/IVoiceState.cs @@ -1,3 +1,5 @@ +using System; + namespace Discord { /// @@ -62,5 +64,9 @@ namespace Discord /// true if the user is streaming; otherwise false. /// bool IsStreaming { get; } + /// + /// Gets the time on which the user requested to speak. + /// + DateTimeOffset? RequestToSpeakTimestamp { get; } } } diff --git a/src/Discord.Net.Core/Entities/Users/UserProperties.cs b/src/Discord.Net.Core/Entities/Users/UserProperties.cs index 68232b254..4cf4162a9 100644 --- a/src/Discord.Net.Core/Entities/Users/UserProperties.cs +++ b/src/Discord.Net.Core/Entities/Users/UserProperties.cs @@ -61,9 +61,13 @@ namespace Discord /// Flag given to users that developed bots and early verified their accounts. /// EarlyVerifiedBotDeveloper = 1 << 17, - /// + /// /// Flag given to users that are discord certified moderators who has give discord's exam. /// DiscordCertifiedModerator = 1 << 18, + /// + /// Flag given to bots that use only outgoing webhooks, exclusively. + /// + BotHTTPInteractions = 1 << 19, } } diff --git a/src/Discord.Net.Core/Entities/Webhooks/IWebhook.cs b/src/Discord.Net.Core/Entities/Webhooks/IWebhook.cs index b2d017316..d5bc70d71 100644 --- a/src/Discord.Net.Core/Entities/Webhooks/IWebhook.cs +++ b/src/Discord.Net.Core/Entities/Webhooks/IWebhook.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Threading.Tasks; namespace Discord @@ -49,6 +49,11 @@ namespace Discord /// IUser Creator { get; } + /// + /// Gets the ID of the application owning this webhook. + /// + ulong? ApplicationId { get; } + /// /// Modifies this webhook. /// diff --git a/src/Discord.Net.Core/Extensions/GuildExtensions.cs b/src/Discord.Net.Core/Extensions/GuildExtensions.cs index 58b749cc4..9dd8de82e 100644 --- a/src/Discord.Net.Core/Extensions/GuildExtensions.cs +++ b/src/Discord.Net.Core/Extensions/GuildExtensions.cs @@ -20,5 +20,21 @@ namespace Discord /// A bool indicating if the guild boost messages are enabled in the system channel. public static bool GetGuildBoostMessagesEnabled(this IGuild guild) => !guild.SystemChannelFlags.HasFlag(SystemChannelMessageDeny.GuildBoost); + + /// + /// Gets if guild setup system messages are enabled. + /// + /// The guild to check. + /// A bool indicating if the guild setup messages are enabled in the system channel. + public static bool GetGuildSetupTipMessagesEnabled(this IGuild guild) + => !guild.SystemChannelFlags.HasFlag(SystemChannelMessageDeny.GuildSetupTip); + + /// + /// Gets if guild welcome messages have a reply with sticker button. + /// + /// The guild to check. + /// A bool indicating if the guild welcome messages have a reply with sticker button. + public static bool GetGuildWelcomeMessageReplyEnabled(this IGuild guild) + => !guild.SystemChannelFlags.HasFlag(SystemChannelMessageDeny.WelcomeMessageReply); } } diff --git a/src/Discord.Net.Core/Extensions/MessageExtensions.cs b/src/Discord.Net.Core/Extensions/MessageExtensions.cs index b043d7b77..c187ecd5b 100644 --- a/src/Discord.Net.Core/Extensions/MessageExtensions.cs +++ b/src/Discord.Net.Core/Extensions/MessageExtensions.cs @@ -24,7 +24,7 @@ namespace Discord /// Add multiple reactions to a message. ///
/// - /// This method does not bulk add reactions! It will send a request for each reaction inculded. + /// This method does not bulk add reactions! It will send a request for each reaction included. /// /// /// @@ -34,7 +34,7 @@ namespace Discord /// /// /// The message to add reactions to. - /// An array of reactions to add to the message + /// An array of reactions to add to the message. /// The options to be used when sending the request. /// /// A task that represents the asynchronous operation for adding a reaction to this message. @@ -59,7 +59,8 @@ namespace Discord /// ///
/// The message to remove reactions from. - /// An array of reactions to remove from the message + /// The user who removed the reaction. + /// An array of reactions to remove from the message. /// The options to be used when sending the request. /// /// A task that represents the asynchronous operation for removing a reaction to this message. @@ -75,21 +76,25 @@ namespace Discord /// /// Sends an inline reply that references a message. /// + /// The message that is being replied on. /// The message to be sent. /// Determines whether the message should be read aloud by Discord or not. /// The to be sent. + /// A array of s to send with this response. Max 10. /// /// Specifies if notifications are sent for mentioned users and roles in the message . /// If null, all mentioned roles and users will be notified. /// /// The options to be used when sending the request. + /// The message components to be included with this message. Used for interactions. + /// A collection of stickers to send with the message. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - public static async Task ReplyAsync(this IUserMessage msg, string text = null, bool isTTS = false, Embed embed = null, AllowedMentions allowedMentions = null, RequestOptions options = null) + public static async Task ReplyAsync(this IUserMessage msg, string text = null, bool isTTS = false, Embed embed = null, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) { - return await msg.Channel.SendMessageAsync(text, isTTS, embed, options, allowedMentions, new MessageReference(messageId: msg.Id)).ConfigureAwait(false); + return await msg.Channel.SendMessageAsync(text, isTTS, embed, options, allowedMentions, new MessageReference(messageId: msg.Id), components, stickers, embeds).ConfigureAwait(false); } } } diff --git a/src/Discord.Net.Core/Extensions/ObjectExtensions.cs b/src/Discord.Net.Core/Extensions/ObjectExtensions.cs new file mode 100644 index 000000000..240fb47aa --- /dev/null +++ b/src/Discord.Net.Core/Extensions/ObjectExtensions.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord +{ + internal static class ObjectExtensions + { + public static bool IsNumericType(this object o) + { + switch (Type.GetTypeCode(o.GetType())) + { + case TypeCode.Byte: + case TypeCode.SByte: + case TypeCode.UInt16: + case TypeCode.UInt32: + case TypeCode.UInt64: + case TypeCode.Int16: + case TypeCode.Int32: + case TypeCode.Int64: + case TypeCode.Decimal: + case TypeCode.Double: + case TypeCode.Single: + return true; + default: + return false; + } + } + } +} diff --git a/src/Discord.Net.Core/Extensions/UserExtensions.cs b/src/Discord.Net.Core/Extensions/UserExtensions.cs index 3e46308e6..e268eae84 100644 --- a/src/Discord.Net.Core/Extensions/UserExtensions.cs +++ b/src/Discord.Net.Core/Extensions/UserExtensions.cs @@ -32,6 +32,8 @@ namespace Discord /// Specifies if notifications are sent for mentioned users and roles in the message . /// If null, all mentioned roles and users will be notified. /// + /// The message components to be included with this message. Used for interactions. + /// A array of s to send with this response. Max 10. /// /// A task that represents the asynchronous send operation. The task result contains the sent message. /// @@ -40,9 +42,11 @@ namespace Discord bool isTTS = false, Embed embed = null, RequestOptions options = null, - AllowedMentions allowedMentions = null) + AllowedMentions allowedMentions = null, + MessageComponent component = null, + Embed[] embeds = null) { - return await (await user.CreateDMChannelAsync().ConfigureAwait(false)).SendMessageAsync(text, isTTS, embed, options, allowedMentions).ConfigureAwait(false); + return await (await user.CreateDMChannelAsync().ConfigureAwait(false)).SendMessageAsync(text, isTTS, embed, options, allowedMentions, component: component, embeds: embeds).ConfigureAwait(false); } /// @@ -81,6 +85,8 @@ namespace Discord /// Whether the message should be read aloud by Discord or not. /// The to be sent. /// The options to be used when sending the request. + /// The message component to be included with this message. Used for interactions. + /// A array of s to send with this response. Max 10. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. @@ -91,10 +97,11 @@ namespace Discord string text = null, bool isTTS = false, Embed embed = null, - RequestOptions options = null - ) + RequestOptions options = null, + MessageComponent component = null, + Embed[] embeds = null) { - return await (await user.CreateDMChannelAsync().ConfigureAwait(false)).SendFileAsync(stream, filename, text, isTTS, embed, options).ConfigureAwait(false); + return await (await user.CreateDMChannelAsync().ConfigureAwait(false)).SendFileAsync(stream, filename, text, isTTS, embed, options, component: component, embeds: embeds).ConfigureAwait(false); } /// @@ -138,6 +145,8 @@ namespace Discord /// Whether the message should be read aloud by Discord or not. /// The to be sent. /// The options to be used when sending the request. + /// The message component to be included with this message. Used for interactions. + /// A array of s to send with this response. Max 10. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. @@ -147,9 +156,11 @@ namespace Discord string text = null, bool isTTS = false, Embed embed = null, - RequestOptions options = null) + RequestOptions options = null, + MessageComponent component = null, + Embed[] embeds = null) { - return await (await user.CreateDMChannelAsync().ConfigureAwait(false)).SendFileAsync(filePath, text, isTTS, embed, options).ConfigureAwait(false); + return await (await user.CreateDMChannelAsync().ConfigureAwait(false)).SendFileAsync(filePath, text, isTTS, embed, options, component: component, embeds: embeds).ConfigureAwait(false); } /// diff --git a/src/Discord.Net.Core/Format.cs b/src/Discord.Net.Core/Format.cs index 0ab70f89c..63f9d15a6 100644 --- a/src/Discord.Net.Core/Format.cs +++ b/src/Discord.Net.Core/Format.cs @@ -1,4 +1,5 @@ using System.Text; +using System.Text.RegularExpressions; namespace Discord { @@ -14,7 +15,7 @@ namespace Discord public static string Italics(string text) => $"*{text}*"; /// Returns a markdown-formatted string with underline formatting. public static string Underline(string text) => $"__{text}__"; - /// Returns a markdown-formatted string with strikethrough formatting. + /// Returns a markdown-formatted string with strike-through formatting. public static string Strikethrough(string text) => $"~~{text}~~"; /// Returns a string with spoiler formatting. public static string Spoiler(string text) => $"||{text}||"; @@ -91,5 +92,17 @@ namespace Discord return $">>> {text}"; } + + /// + /// Remove discord supported markdown from text. + /// + /// The to remove markdown from. + /// Gets the unformatted text. + public static string StripMarkDown(string text) + { + //Remove discord supported markdown + var newText = Regex.Replace(text, @"(\*|_|`|~|>|\\)", ""); + return newText; + } } } diff --git a/src/Discord.Net.Core/GatewayIntents.cs b/src/Discord.Net.Core/GatewayIntents.cs index 6976806b2..f2a99e44c 100644 --- a/src/Discord.Net.Core/GatewayIntents.cs +++ b/src/Discord.Net.Core/GatewayIntents.cs @@ -39,13 +39,15 @@ namespace Discord DirectMessageReactions = 1 << 13, /// This intent includes TYPING_START DirectMessageTyping = 1 << 14, + /// This intent includes GUILD_SCHEDULED_EVENT_CREATE, GUILD_SCHEDULED_EVENT_UPDATE, GUILD_SCHEDULED_EVENT_DELETE, GUILD_SCHEDULED_EVENT_USER_ADD, GUILD_SCHEDULED_EVENT_USER_REMOVE + GuildScheduledEvents = 1 << 16, /// - /// This intent includes all but and - /// that are privileged must be enabled for the application. + /// This intent includes all but and + /// which are privileged and must be enabled in the Developer Portal. /// AllUnprivileged = Guilds | GuildBans | GuildEmojis | GuildIntegrations | GuildWebhooks | GuildInvites | GuildVoiceStates | GuildMessages | GuildMessageReactions | GuildMessageTyping | DirectMessages | - DirectMessageReactions | DirectMessageTyping, + DirectMessageReactions | DirectMessageTyping | GuildScheduledEvents, /// /// This intent includes all of them, including privileged ones. /// diff --git a/src/Discord.Net.Core/IDiscordClient.cs b/src/Discord.Net.Core/IDiscordClient.cs index d7d6d2856..f6981d552 100644 --- a/src/Discord.Net.Core/IDiscordClient.cs +++ b/src/Discord.Net.Core/IDiscordClient.cs @@ -141,6 +141,47 @@ namespace Discord /// Task> GetConnectionsAsync(RequestOptions options = null); + /// + /// Gets a global application command. + /// + /// The id of the command. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains the application command if found, otherwise + /// . + /// + Task GetGlobalApplicationCommandAsync(ulong id, RequestOptions options = null); + + /// + /// Gets a collection of all global commands. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains a read-only collection of global + /// application commands. + /// + Task> GetGlobalApplicationCommandsAsync(RequestOptions options = null); + + /// + /// Creates a global application command. + /// + /// The properties to use when creating the command. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous creation operation. The task result contains the created application command. + /// + Task CreateGlobalApplicationCommand(ApplicationCommandProperties properties, RequestOptions options = null); + + /// + /// Bulk overwrites all global application commands. + /// + /// A collection of properties to use when creating the commands. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous creation operation. The task result contains a collection of application commands that were created. + /// + Task> BulkOverwriteGlobalApplicationCommand(ApplicationCommandProperties[] properties, RequestOptions options = null); + /// /// Gets a guild. /// diff --git a/src/Discord.Net.Core/Net/ApplicationCommandException.cs b/src/Discord.Net.Core/Net/ApplicationCommandException.cs new file mode 100644 index 000000000..4b4890d12 --- /dev/null +++ b/src/Discord.Net.Core/Net/ApplicationCommandException.cs @@ -0,0 +1,15 @@ +using System; +using System.Linq; + +namespace Discord.Net +{ + [Obsolete("Please use HttpException instead of this. Will be removed in next major version.", false)] + public class ApplicationCommandException : HttpException + { + public ApplicationCommandException(HttpException httpError) + : base(httpError.HttpCode, httpError.Request, httpError.DiscordCode, httpError.Reason, httpError.Errors.ToArray()) + { + + } + } +} diff --git a/src/Discord.Net.Core/Net/HttpException.cs b/src/Discord.Net.Core/Net/HttpException.cs index ff9cf91f2..07551f0e7 100644 --- a/src/Discord.Net.Core/Net/HttpException.cs +++ b/src/Discord.Net.Core/Net/HttpException.cs @@ -1,4 +1,6 @@ using System; +using System.Collections.Generic; +using System.Collections.Immutable; using System.Net; namespace Discord.Net @@ -25,7 +27,7 @@ namespace Discord.Net /// JSON error code /// from Discord, or null if none. /// - public int? DiscordCode { get; } + public DiscordErrorCode? DiscordCode { get; } /// /// Gets the reason of the exception. /// @@ -34,6 +36,10 @@ namespace Discord.Net /// Gets the request object used to send the request. /// public IRequest Request { get; } + /// + /// Gets a collection of json errors describing what went wrong with the request. + /// + public IReadOnlyCollection Errors { get; } /// /// Initializes a new instance of the class. @@ -42,13 +48,14 @@ namespace Discord.Net /// The request that was sent prior to the exception. /// The Discord status code returned. /// The reason behind the exception. - public HttpException(HttpStatusCode httpCode, IRequest request, int? discordCode = null, string reason = null) - : base(CreateMessage(httpCode, discordCode, reason)) + public HttpException(HttpStatusCode httpCode, IRequest request, DiscordErrorCode? discordCode = null, string reason = null, DiscordJsonError[] errors = null) + : base(CreateMessage(httpCode, (int?)discordCode, reason)) { HttpCode = httpCode; Request = request; DiscordCode = discordCode; Reason = reason; + Errors = errors?.ToImmutableArray() ?? ImmutableArray.Empty; } private static string CreateMessage(HttpStatusCode httpCode, int? discordCode = null, string reason = null) diff --git a/src/Discord.Net.Core/Net/Rest/IRateLimitInfo.cs b/src/Discord.Net.Core/Net/Rest/IRateLimitInfo.cs new file mode 100644 index 000000000..816f25af4 --- /dev/null +++ b/src/Discord.Net.Core/Net/Rest/IRateLimitInfo.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord +{ + /// + /// Represents a generic ratelimit info. + /// + public interface IRateLimitInfo + { + /// + /// Gets whether or not this ratelimit info is global. + /// + bool IsGlobal { get; } + + /// + /// Gets the number of requests that can be made. + /// + int? Limit { get; } + + /// + /// Gets the number of remaining requests that can be made. + /// + int? Remaining { get; } + + /// + /// Gets the total time (in seconds) of when the current rate limit bucket will reset. Can have decimals to match previous millisecond ratelimit precision. + /// + int? RetryAfter { get; } + + /// + /// Gets the at which the rate limit resets. + /// + DateTimeOffset? Reset { get; } + + /// + /// Gets the absolute time when this ratelimit resets. + /// + TimeSpan? ResetAfter { get; } + + /// + /// Gets a unique string denoting the rate limit being encountered (non-inclusive of major parameters in the route path). + /// + string Bucket { get; } + + /// + /// Gets the amount of lag for the request. This is used to denote the precise time of when the ratelimit expires. + /// + TimeSpan? Lag { get; } + + /// + /// Gets the endpoint that this ratelimit info came from. + /// + string Endpoint { get; } + } +} diff --git a/src/Discord.Net.Core/RequestOptions.cs b/src/Discord.Net.Core/RequestOptions.cs index dbb240273..46aa2681f 100644 --- a/src/Discord.Net.Core/RequestOptions.cs +++ b/src/Discord.Net.Core/RequestOptions.cs @@ -1,5 +1,7 @@ using Discord.Net; +using System; using System.Threading; +using System.Threading.Tasks; namespace Discord { @@ -14,10 +16,10 @@ namespace Discord public static RequestOptions Default => new RequestOptions(); /// - /// Gets or sets the maximum time to wait for for this request to complete. + /// Gets or sets the maximum time to wait for this request to complete. /// /// - /// Gets or set the max time, in milliseconds, to wait for for this request to complete. If + /// Gets or set the max time, in milliseconds, to wait for this request to complete. If /// null, a request will not time out. If a rate limit has been triggered for this request's bucket /// and will not be unpaused in time, this request will fail immediately. /// @@ -57,6 +59,11 @@ namespace Discord /// public bool? UseSystemClock { get; set; } + /// + /// Gets or sets the callback to execute regarding ratelimits for this request. + /// + public Func RatelimitCallback { get; set; } + internal bool IgnoreState { get; set; } internal BucketId BucketId { get; set; } internal bool IsClientBucket { get; set; } @@ -71,6 +78,17 @@ namespace Discord return options.Clone(); } + internal void ExecuteRatelimitCallback(IRateLimitInfo info) + { + if (RatelimitCallback != null) + { + _ = Task.Run(async () => + { + await RatelimitCallback(info); + }); + } + } + /// /// Initializes a new class with the default request timeout set in /// . diff --git a/src/Discord.Net.Core/Utils/Cacheable.cs b/src/Discord.Net.Core/Utils/Cacheable.cs index 1857ae7a0..4aa768292 100644 --- a/src/Discord.Net.Core/Utils/Cacheable.cs +++ b/src/Discord.Net.Core/Utils/Cacheable.cs @@ -63,4 +63,60 @@ namespace Discord /// public async Task GetOrDownloadAsync() => HasValue ? Value : await DownloadAsync().ConfigureAwait(false); } + public struct Cacheable + where TCachedEntity : IEntity, TRelationship + where TDownloadableEntity : IEntity, TRelationship + where TId : IEquatable + { + /// + /// Gets whether this entity is cached. + /// + public bool HasValue { get; } + /// + /// Gets the ID of this entity. + /// + public TId Id { get; } + /// + /// Gets the entity if it could be pulled from cache. + /// + /// + /// This value is not guaranteed to be set; in cases where the entity cannot be pulled from cache, it is + /// null. + /// + public TCachedEntity Value { get; } + private Func> DownloadFunc { get; } + + internal Cacheable(TCachedEntity value, TId id, bool hasValue, Func> downloadFunc) + { + Value = value; + Id = id; + HasValue = hasValue; + DownloadFunc = downloadFunc; + } + + /// + /// Downloads this entity. + /// + /// Thrown when used from a user account. + /// Thrown when the message is deleted. + /// + /// A task that represents the asynchronous download operation. The task result contains the downloaded + /// entity. + /// + public async Task DownloadAsync() + { + return await DownloadFunc().ConfigureAwait(false); + } + + /// + /// Returns the cached entity if it exists; otherwise downloads it. + /// + /// Thrown when used from a user account. + /// Thrown when the message is deleted and is not in cache. + /// + /// A task that represents the asynchronous operation that attempts to get the message via cache or to + /// download the message. The task result contains the downloaded entity. + /// + public async Task GetOrDownloadAsync() => HasValue ? Value : await DownloadAsync().ConfigureAwait(false); + } } diff --git a/src/Discord.Net.Core/Utils/MentionUtils.cs b/src/Discord.Net.Core/Utils/MentionUtils.cs index 6ffb7eee6..059df6b5a 100644 --- a/src/Discord.Net.Core/Utils/MentionUtils.cs +++ b/src/Discord.Net.Core/Utils/MentionUtils.cs @@ -40,6 +40,7 @@ namespace Discord /// /// Parses a provided user mention string. /// + /// The user mention. /// Invalid mention format. public static ulong ParseUser(string text) { @@ -50,6 +51,8 @@ namespace Discord /// /// Tries to parse a provided user mention string. /// + /// The user mention. + /// The UserId of the user. public static bool TryParseUser(string text, out ulong userId) { if (text.Length >= 3 && text[0] == '<' && text[1] == '@' && text[text.Length - 1] == '>') diff --git a/src/Discord.Net.Core/Utils/Optional.cs b/src/Discord.Net.Core/Utils/Optional.cs index 348179699..985be9240 100644 --- a/src/Discord.Net.Core/Utils/Optional.cs +++ b/src/Discord.Net.Core/Utils/Optional.cs @@ -7,7 +7,7 @@ namespace Discord [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public struct Optional { - public static Optional Unspecified => default(Optional); + public static Optional Unspecified => default; private readonly T _value; /// Gets the value for this parameter. @@ -43,18 +43,18 @@ namespace Discord public override int GetHashCode() => IsSpecified ? _value.GetHashCode() : 0; public override string ToString() => IsSpecified ? _value?.ToString() : null; - private string DebuggerDisplay => IsSpecified ? (_value?.ToString() ?? "") : ""; + private string DebuggerDisplay => IsSpecified ? _value?.ToString() ?? "" : ""; - public static implicit operator Optional(T value) => new Optional(value); + public static implicit operator Optional(T value) => new(value); public static explicit operator T(Optional value) => value.Value; } public static class Optional { public static Optional Create() => Optional.Unspecified; - public static Optional Create(T value) => new Optional(value); + public static Optional Create(T value) => new(value); public static T? ToNullable(this Optional val) where T : struct - => val.IsSpecified ? val.Value : (T?)null; + => val.IsSpecified ? val.Value : null; } } diff --git a/src/Discord.Net.Core/Utils/Preconditions.cs b/src/Discord.Net.Core/Utils/Preconditions.cs index 60415852c..ff8eb7c0d 100644 --- a/src/Discord.Net.Core/Utils/Preconditions.cs +++ b/src/Discord.Net.Core/Utils/Preconditions.cs @@ -4,7 +4,7 @@ namespace Discord { internal static class Preconditions { - //Objects + #region Objects /// must not be . public static void NotNull(T obj, string name, string msg = null) where T : class { if (obj == null) throw CreateNotNullException(name, msg); } /// must not be . @@ -15,8 +15,9 @@ namespace Discord if (msg == null) return new ArgumentNullException(paramName: name); else return new ArgumentNullException(paramName: name, message: msg); } + #endregion - //Strings + #region Strings /// cannot be blank. public static void NotEmpty(string obj, string name, string msg = null) { if (obj.Length == 0) throw CreateNotEmptyException(name, msg); } /// cannot be blank. @@ -58,8 +59,9 @@ namespace Discord private static ArgumentException CreateNotEmptyException(string name, string msg) => new ArgumentException(message: msg ?? "Argument cannot be blank.", paramName: name); + #endregion - //Numerics + #region Numerics /// Value may not be equal to . public static void NotEqual(sbyte obj, sbyte value, string name, string msg = null) { if (obj == value) throw CreateNotEqualException(name, msg, value); } /// Value may not be equal to . @@ -271,8 +273,9 @@ namespace Discord private static ArgumentException CreateLessThanException(string name, string msg, T value) => new ArgumentException(message: msg ?? $"Value must be less than {value}.", paramName: name); + #endregion - // Bulk Delete + #region Bulk Delete /// Messages are younger than 2 weeks. public static void YoungerThanTwoWeeks(ulong[] collection, string name) { @@ -293,5 +296,6 @@ namespace Discord throw new ArgumentException(message: "The everyone role cannot be assigned to a user.", paramName: name); } } + #endregion } } diff --git a/src/Discord.Net.Core/Utils/UrlValidation.cs b/src/Discord.Net.Core/Utils/UrlValidation.cs new file mode 100644 index 000000000..8e877bd4e --- /dev/null +++ b/src/Discord.Net.Core/Utils/UrlValidation.cs @@ -0,0 +1,42 @@ +using System; + +namespace Discord.Utils +{ + internal static class UrlValidation + { + /// + /// Not full URL validation right now. Just ensures protocol is present and that it's either http or https + /// should be used for url buttons. + /// + /// The URL to validate before sending to Discord. + /// to allow the attachment:// protocol; otherwise . + /// A URL must include a protocol (http or https). + /// true if URL is valid by our standard, false if null, throws an error upon invalid. + public static bool Validate(string url, bool allowAttachments = false) + { + if (string.IsNullOrEmpty(url)) + return false; + if (!(url.StartsWith("http://", StringComparison.OrdinalIgnoreCase) || url.StartsWith("https://", StringComparison.OrdinalIgnoreCase) || (allowAttachments ? url.StartsWith("attachment://", StringComparison.Ordinal) : false))) + throw new InvalidOperationException($"The url {url} must include a protocol (either {(allowAttachments ? "HTTP, HTTPS, or ATTACHMENT" : "HTTP or HTTPS")})"); + return true; + } + + /// + /// Not full URL validation right now. Just Ensures the protocol is either http, https, or discord + /// should be used everything other than url buttons. + /// + /// The URL to validate before sending to discord. + /// A URL must include a protocol (either http, https, or discord). + /// true if the URL is valid by our standard, false if null, throws an error upon invalid. + public static bool ValidateButton(string url) + { + if (string.IsNullOrEmpty(url)) + return false; + if (!(url.StartsWith("http://", StringComparison.OrdinalIgnoreCase) || + url.StartsWith("https://", StringComparison.OrdinalIgnoreCase) || + url.StartsWith("discord://", StringComparison.OrdinalIgnoreCase))) + throw new InvalidOperationException($"The url {url} must include a protocol (either HTTP, HTTPS, or DISCORD)"); + return true; + } + } +} diff --git a/src/Discord.Net.Examples/Core/Entities/Channels/IMessageChannel.Examples.cs b/src/Discord.Net.Examples/Core/Entities/Channels/IMessageChannel.Examples.cs index 5f9d4b5d6..d920e9710 100644 --- a/src/Discord.Net.Examples/Core/Entities/Channels/IMessageChannel.Examples.cs +++ b/src/Discord.Net.Examples/Core/Entities/Channels/IMessageChannel.Examples.cs @@ -108,7 +108,6 @@ namespace Discord.Net.Examples.Core.Entities.Channels using (channel.EnterTypingState()) await LongRunningAsync(); #endregion - } } } diff --git a/src/Discord.Net.Examples/Discord.Net.Examples.csproj b/src/Discord.Net.Examples/Discord.Net.Examples.csproj index ec0253428..3371432b8 100644 --- a/src/Discord.Net.Examples/Discord.Net.Examples.csproj +++ b/src/Discord.Net.Examples/Discord.Net.Examples.csproj @@ -15,7 +15,7 @@ - + diff --git a/src/Discord.Net.Rest/API/Common/ActionRowComponent.cs b/src/Discord.Net.Rest/API/Common/ActionRowComponent.cs new file mode 100644 index 000000000..9dede7e03 --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/ActionRowComponent.cs @@ -0,0 +1,32 @@ +using Newtonsoft.Json; +using System.Linq; + +namespace Discord.API +{ + internal class ActionRowComponent : IMessageComponent + { + [JsonProperty("type")] + public ComponentType Type { get; set; } + + [JsonProperty("components")] + public IMessageComponent[] Components { get; set; } + + internal ActionRowComponent() { } + internal ActionRowComponent(Discord.ActionRowComponent c) + { + Type = c.Type; + Components = c.Components?.Select(x => + { + return x.Type switch + { + ComponentType.Button => new ButtonComponent(x as Discord.ButtonComponent), + ComponentType.SelectMenu => new SelectMenuComponent(x as Discord.SelectMenuComponent), + _ => null + }; + }).ToArray(); + } + + [JsonIgnore] + string IMessageComponent.CustomId => null; + } +} diff --git a/src/Discord.Net.Rest/API/Common/Application.cs b/src/Discord.Net.Rest/API/Common/Application.cs index aba3e524b..4ef6940a2 100644 --- a/src/Discord.Net.Rest/API/Common/Application.cs +++ b/src/Discord.Net.Rest/API/Common/Application.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API @@ -8,7 +7,7 @@ namespace Discord.API [JsonProperty("description")] public string Description { get; set; } [JsonProperty("rpc_origins")] - public string[] RPCOrigins { get; set; } + public Optional RPCOrigins { get; set; } [JsonProperty("name")] public string Name { get; set; } [JsonProperty("id")] @@ -19,12 +18,16 @@ namespace Discord.API public bool IsBotPublic { get; set; } [JsonProperty("bot_require_code_grant")] public bool BotRequiresCodeGrant { get; set; } + [JsonProperty("install_params")] + public Optional InstallParams { get; set; } + [JsonProperty("team")] public Team Team { get; set; } [JsonProperty("flags"), Int53] - public Optional Flags { get; set; } + public Optional Flags { get; set; } [JsonProperty("owner")] public Optional Owner { get; set; } + public Optional Tags { get; set; } } } diff --git a/src/Discord.Net.Rest/API/Common/ApplicationCommand.cs b/src/Discord.Net.Rest/API/Common/ApplicationCommand.cs new file mode 100644 index 000000000..81598b96e --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/ApplicationCommand.cs @@ -0,0 +1,28 @@ +using Newtonsoft.Json; + +namespace Discord.API +{ + internal class ApplicationCommand + { + [JsonProperty("id")] + public ulong Id { get; set; } + + [JsonProperty("type")] + public ApplicationCommandType Type { get; set; } = ApplicationCommandType.Slash; // defaults to 1 which is slash. + + [JsonProperty("application_id")] + public ulong ApplicationId { get; set; } + + [JsonProperty("name")] + public string Name { get; set; } + + [JsonProperty("description")] + public string Description { get; set; } + + [JsonProperty("options")] + public Optional Options { get; set; } + + [JsonProperty("default_permission")] + public Optional DefaultPermissions { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Common/ApplicationCommandInteractionData.cs b/src/Discord.Net.Rest/API/Common/ApplicationCommandInteractionData.cs new file mode 100644 index 000000000..a98ed77d6 --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/ApplicationCommandInteractionData.cs @@ -0,0 +1,22 @@ +using Newtonsoft.Json; + +namespace Discord.API +{ + internal class ApplicationCommandInteractionData : IResolvable, IDiscordInteractionData + { + [JsonProperty("id")] + public ulong Id { get; set; } + + [JsonProperty("name")] + public string Name { get; set; } + + [JsonProperty("options")] + public Optional Options { get; set; } + + [JsonProperty("resolved")] + public Optional Resolved { get; set; } + + [JsonProperty("type")] + public ApplicationCommandType Type { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Common/ApplicationCommandInteractionDataOption.cs b/src/Discord.Net.Rest/API/Common/ApplicationCommandInteractionDataOption.cs new file mode 100644 index 000000000..1e488c4e6 --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/ApplicationCommandInteractionDataOption.cs @@ -0,0 +1,19 @@ +using Newtonsoft.Json; + +namespace Discord.API +{ + internal class ApplicationCommandInteractionDataOption + { + [JsonProperty("name")] + public string Name { get; set; } + + [JsonProperty("type")] + public ApplicationCommandOptionType Type { get; set; } + + [JsonProperty("value")] + public Optional Value { get; set; } + + [JsonProperty("options")] + public Optional Options { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Common/ApplicationCommandInteractionDataResolved.cs b/src/Discord.Net.Rest/API/Common/ApplicationCommandInteractionDataResolved.cs new file mode 100644 index 000000000..5b4b83e23 --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/ApplicationCommandInteractionDataResolved.cs @@ -0,0 +1,22 @@ +using Newtonsoft.Json; +using System.Collections.Generic; + +namespace Discord.API +{ + internal class ApplicationCommandInteractionDataResolved + { + [JsonProperty("users")] + public Optional> Users { get; set; } + + [JsonProperty("members")] + public Optional> Members { get; set; } + + [JsonProperty("channels")] + public Optional> Channels { get; set; } + + [JsonProperty("roles")] + public Optional> Roles { get; set; } + [JsonProperty("messages")] + public Optional> Messages { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Common/ApplicationCommandOption.cs b/src/Discord.Net.Rest/API/Common/ApplicationCommandOption.cs new file mode 100644 index 000000000..1207df282 --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/ApplicationCommandOption.cs @@ -0,0 +1,88 @@ +using Newtonsoft.Json; +using System.Linq; + +namespace Discord.API +{ + internal class ApplicationCommandOption + { + [JsonProperty("type")] + public ApplicationCommandOptionType Type { get; set; } + + [JsonProperty("name")] + public string Name { get; set; } + + [JsonProperty("description")] + public string Description { get; set; } + + [JsonProperty("default")] + public Optional Default { get; set; } + + [JsonProperty("required")] + public Optional Required { get; set; } + + [JsonProperty("choices")] + public Optional Choices { get; set; } + + [JsonProperty("options")] + public Optional Options { get; set; } + + [JsonProperty("autocomplete")] + public Optional Autocomplete { get; set; } + + [JsonProperty("min_value")] + public Optional MinValue { get; set; } + + [JsonProperty("max_value")] + public Optional MaxValue { get; set; } + + [JsonProperty("channel_types")] + public Optional ChannelTypes { get; set; } + + public ApplicationCommandOption() { } + + public ApplicationCommandOption(IApplicationCommandOption cmd) + { + Choices = cmd.Choices.Select(x => new ApplicationCommandOptionChoice + { + Name = x.Name, + Value = x.Value + }).ToArray(); + + Options = cmd.Options.Select(x => new ApplicationCommandOption(x)).ToArray(); + + ChannelTypes = cmd.ChannelTypes.ToArray(); + + Required = cmd.IsRequired ?? Optional.Unspecified; + Default = cmd.IsDefault ?? Optional.Unspecified; + MinValue = cmd.MinValue ?? Optional.Unspecified; + MaxValue = cmd.MaxValue ?? Optional.Unspecified; + + Name = cmd.Name; + Type = cmd.Type; + Description = cmd.Description; + } + public ApplicationCommandOption(ApplicationCommandOptionProperties option) + { + Choices = option.Choices?.Select(x => new ApplicationCommandOptionChoice + { + Name = x.Name, + Value = x.Value + }).ToArray() ?? Optional.Unspecified; + + Options = option.Options?.Select(x => new ApplicationCommandOption(x)).ToArray() ?? Optional.Unspecified; + + Required = option.IsRequired ?? Optional.Unspecified; + + Default = option.IsDefault ?? Optional.Unspecified; + MinValue = option.MinValue ?? Optional.Unspecified; + MaxValue = option.MaxValue ?? Optional.Unspecified; + + ChannelTypes = option.ChannelTypes?.ToArray() ?? Optional.Unspecified; + + Name = option.Name; + Type = option.Type; + Description = option.Description; + Autocomplete = option.IsAutocomplete; + } + } +} diff --git a/src/Discord.Net.Rest/API/Common/ApplicationCommandOptionChoice.cs b/src/Discord.Net.Rest/API/Common/ApplicationCommandOptionChoice.cs new file mode 100644 index 000000000..6f84437f6 --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/ApplicationCommandOptionChoice.cs @@ -0,0 +1,13 @@ +using Newtonsoft.Json; + +namespace Discord.API +{ + internal class ApplicationCommandOptionChoice + { + [JsonProperty("name")] + public string Name { get; set; } + + [JsonProperty("value")] + public object Value { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Common/ApplicationCommandPermissions.cs b/src/Discord.Net.Rest/API/Common/ApplicationCommandPermissions.cs new file mode 100644 index 000000000..8bde80f50 --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/ApplicationCommandPermissions.cs @@ -0,0 +1,16 @@ +using Newtonsoft.Json; + +namespace Discord.API +{ + internal class ApplicationCommandPermissions + { + [JsonProperty("id")] + public ulong Id { get; set; } + + [JsonProperty("type")] + public ApplicationCommandPermissionTarget Type { get; set; } + + [JsonProperty("permission")] + public bool Permission { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Common/Attachment.cs b/src/Discord.Net.Rest/API/Common/Attachment.cs index 4a651d9fa..7970dc9a5 100644 --- a/src/Discord.Net.Rest/API/Common/Attachment.cs +++ b/src/Discord.Net.Rest/API/Common/Attachment.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API @@ -9,6 +8,10 @@ namespace Discord.API public ulong Id { get; set; } [JsonProperty("filename")] public string Filename { get; set; } + [JsonProperty("description")] + public Optional Description { get; set; } + [JsonProperty("content_type")] + public Optional ContentType { get; set; } [JsonProperty("size")] public int Size { get; set; } [JsonProperty("url")] @@ -19,5 +22,7 @@ namespace Discord.API public Optional Height { get; set; } [JsonProperty("width")] public Optional Width { get; set; } + [JsonProperty("ephemeral")] + public Optional Ephemeral { get; set; } } } diff --git a/src/Discord.Net.Rest/API/Common/AuditLog.cs b/src/Discord.Net.Rest/API/Common/AuditLog.cs index cd8ad147d..c8bd6d3e2 100644 --- a/src/Discord.Net.Rest/API/Common/AuditLog.cs +++ b/src/Discord.Net.Rest/API/Common/AuditLog.cs @@ -1,4 +1,4 @@ -using Newtonsoft.Json; +using Newtonsoft.Json; namespace Discord.API { @@ -7,6 +7,12 @@ namespace Discord.API [JsonProperty("webhooks")] public Webhook[] Webhooks { get; set; } + [JsonProperty("threads")] + public Channel[] Threads { get; set; } + + [JsonProperty("integrations")] + public Integration[] Integrations { get; set; } + [JsonProperty("users")] public User[] Users { get; set; } diff --git a/src/Discord.Net.Rest/API/Common/AuditLogEntry.cs b/src/Discord.Net.Rest/API/Common/AuditLogEntry.cs index 7458a19cb..9626ad67e 100644 --- a/src/Discord.Net.Rest/API/Common/AuditLogEntry.cs +++ b/src/Discord.Net.Rest/API/Common/AuditLogEntry.cs @@ -1,4 +1,4 @@ -using Newtonsoft.Json; +using Newtonsoft.Json; namespace Discord.API { diff --git a/src/Discord.Net.Rest/API/Common/AutocompleteInteractionData.cs b/src/Discord.Net.Rest/API/Common/AutocompleteInteractionData.cs new file mode 100644 index 000000000..2184a0e98 --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/AutocompleteInteractionData.cs @@ -0,0 +1,22 @@ +using Newtonsoft.Json; + +namespace Discord.API +{ + internal class AutocompleteInteractionData : IDiscordInteractionData + { + [JsonProperty("id")] + public ulong Id { get; set; } + + [JsonProperty("name")] + public string Name { get; set; } + + [JsonProperty("type")] + public ApplicationCommandType Type { get; set; } + + [JsonProperty("version")] + public ulong Version { get; set; } + + [JsonProperty("options")] + public AutocompleteInteractionDataOption[] Options { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Common/AutocompleteInteractionDataOption.cs b/src/Discord.Net.Rest/API/Common/AutocompleteInteractionDataOption.cs new file mode 100644 index 000000000..1419f93b6 --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/AutocompleteInteractionDataOption.cs @@ -0,0 +1,22 @@ +using Newtonsoft.Json; + +namespace Discord.API +{ + internal class AutocompleteInteractionDataOption + { + [JsonProperty("type")] + public ApplicationCommandOptionType Type { get; set; } + + [JsonProperty("name")] + public string Name { get; set; } + + [JsonProperty("options")] + public Optional Options { get; set; } + + [JsonProperty("value")] + public Optional Value { get; set; } + + [JsonProperty("focused")] + public Optional Focused { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Common/Ban.cs b/src/Discord.Net.Rest/API/Common/Ban.cs index 202004f53..ff47c7904 100644 --- a/src/Discord.Net.Rest/API/Common/Ban.cs +++ b/src/Discord.Net.Rest/API/Common/Ban.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API diff --git a/src/Discord.Net.Rest/API/Common/ButtonComponent.cs b/src/Discord.Net.Rest/API/Common/ButtonComponent.cs new file mode 100644 index 000000000..7f737d7ad --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/ButtonComponent.cs @@ -0,0 +1,63 @@ +using Newtonsoft.Json; + +namespace Discord.API +{ + internal class ButtonComponent : IMessageComponent + { + [JsonProperty("type")] + public ComponentType Type { get; set; } + + [JsonProperty("style")] + public ButtonStyle Style { get; set; } + + [JsonProperty("label")] + public Optional Label { get; set; } + + [JsonProperty("emoji")] + public Optional Emote { get; set; } + + [JsonProperty("custom_id")] + public Optional CustomId { get; set; } + + [JsonProperty("url")] + public Optional Url { get; set; } + + [JsonProperty("disabled")] + public Optional Disabled { get; set; } + + public ButtonComponent() { } + + public ButtonComponent(Discord.ButtonComponent c) + { + Type = c.Type; + Style = c.Style; + Label = c.Label; + CustomId = c.CustomId; + Url = c.Url; + Disabled = c.IsDisabled; + + if (c.Emote != null) + { + if (c.Emote is Emote e) + { + Emote = new Emoji + { + Name = e.Name, + Animated = e.Animated, + Id = e.Id + }; + } + else + { + Emote = new Emoji + { + Name = c.Emote.Name + }; + } + } + } + + [JsonIgnore] + string IMessageComponent.CustomId => CustomId.GetValueOrDefault(); + } +} diff --git a/src/Discord.Net.Rest/API/Common/Channel.cs b/src/Discord.Net.Rest/API/Common/Channel.cs index 57a5ce9ab..afd219b63 100644 --- a/src/Discord.Net.Rest/API/Common/Channel.cs +++ b/src/Discord.Net.Rest/API/Common/Channel.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; using System; @@ -49,5 +48,21 @@ namespace Discord.API //GroupChannel [JsonProperty("icon")] public Optional Icon { get; set; } + + //ThreadChannel + [JsonProperty("member")] + public Optional ThreadMember { get; set; } + + [JsonProperty("thread_metadata")] + public Optional ThreadMetadata { get; set; } + + [JsonProperty("owner_id")] + public Optional OwnerId { get; set; } + + [JsonProperty("message_count")] + public Optional MessageCount { get; set; } + + [JsonProperty("member_count")] + public Optional MemberCount { get; set; } } } diff --git a/src/Discord.Net.Rest/API/Common/ChannelThreads.cs b/src/Discord.Net.Rest/API/Common/ChannelThreads.cs new file mode 100644 index 000000000..94b2396bf --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/ChannelThreads.cs @@ -0,0 +1,16 @@ +using Newtonsoft.Json; + +namespace Discord.API.Rest +{ + internal class ChannelThreads + { + [JsonProperty("threads")] + public Channel[] Threads { get; set; } + + [JsonProperty("members")] + public ThreadMember[] Members { get; set; } + + [JsonProperty("has_more")] + public bool HasMore { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Common/Connection.cs b/src/Discord.Net.Rest/API/Common/Connection.cs index ad0a76ac1..bd8de3902 100644 --- a/src/Discord.Net.Rest/API/Common/Connection.cs +++ b/src/Discord.Net.Rest/API/Common/Connection.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; using System.Collections.Generic; diff --git a/src/Discord.Net.Rest/API/Common/DiscordError.cs b/src/Discord.Net.Rest/API/Common/DiscordError.cs new file mode 100644 index 000000000..ac1e5e13d --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/DiscordError.cs @@ -0,0 +1,20 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord.API +{ + [JsonConverter(typeof(Discord.Net.Converters.DiscordErrorConverter))] + internal class DiscordError + { + [JsonProperty("message")] + public string Message { get; set; } + [JsonProperty("code")] + public DiscordErrorCode Code { get; set; } + [JsonProperty("errors")] + public Optional Errors { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Common/Embed.cs b/src/Discord.Net.Rest/API/Common/Embed.cs index fbf20d987..77efa12aa 100644 --- a/src/Discord.Net.Rest/API/Common/Embed.cs +++ b/src/Discord.Net.Rest/API/Common/Embed.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using System; using Newtonsoft.Json; using Discord.Net.Converters; diff --git a/src/Discord.Net.Rest/API/Common/EmbedImage.cs b/src/Discord.Net.Rest/API/Common/EmbedImage.cs index e650d99f4..6b5db0681 100644 --- a/src/Discord.Net.Rest/API/Common/EmbedImage.cs +++ b/src/Discord.Net.Rest/API/Common/EmbedImage.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API diff --git a/src/Discord.Net.Rest/API/Common/EmbedProvider.cs b/src/Discord.Net.Rest/API/Common/EmbedProvider.cs index e01261483..ed0f7c3c8 100644 --- a/src/Discord.Net.Rest/API/Common/EmbedProvider.cs +++ b/src/Discord.Net.Rest/API/Common/EmbedProvider.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API diff --git a/src/Discord.Net.Rest/API/Common/EmbedThumbnail.cs b/src/Discord.Net.Rest/API/Common/EmbedThumbnail.cs index 9c87ca46b..dd25a1a26 100644 --- a/src/Discord.Net.Rest/API/Common/EmbedThumbnail.cs +++ b/src/Discord.Net.Rest/API/Common/EmbedThumbnail.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API diff --git a/src/Discord.Net.Rest/API/Common/EmbedVideo.cs b/src/Discord.Net.Rest/API/Common/EmbedVideo.cs index 3a034d244..f668217f0 100644 --- a/src/Discord.Net.Rest/API/Common/EmbedVideo.cs +++ b/src/Discord.Net.Rest/API/Common/EmbedVideo.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API diff --git a/src/Discord.Net.Rest/API/Common/Emoji.cs b/src/Discord.Net.Rest/API/Common/Emoji.cs index 945cc6d7e..ff0baa73e 100644 --- a/src/Discord.Net.Rest/API/Common/Emoji.cs +++ b/src/Discord.Net.Rest/API/Common/Emoji.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API diff --git a/src/Discord.Net.Rest/API/Common/Error.cs b/src/Discord.Net.Rest/API/Common/Error.cs new file mode 100644 index 000000000..a2b1777a3 --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/Error.cs @@ -0,0 +1,12 @@ +using Newtonsoft.Json; + +namespace Discord.API +{ + internal class Error + { + [JsonProperty("code")] + public string Code { get; set; } + [JsonProperty("message")] + public string Message { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Common/Game.cs b/src/Discord.Net.Rest/API/Common/Game.cs index d3a618697..105ce0d73 100644 --- a/src/Discord.Net.Rest/API/Common/Game.cs +++ b/src/Discord.Net.Rest/API/Common/Game.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; using Newtonsoft.Json.Serialization; using System.Runtime.Serialization; @@ -41,6 +40,8 @@ namespace Discord.API public Optional Emoji { get; set; } [JsonProperty("created_at")] public Optional CreatedAt { get; set; } + //[JsonProperty("buttons")] + //public Optional Buttons { get; set; } [OnError] internal void OnError(StreamingContext context, ErrorContext errorContext) diff --git a/src/Discord.Net.Rest/API/Common/Guild.cs b/src/Discord.Net.Rest/API/Common/Guild.cs index bd25c7e1a..d550c54a0 100644 --- a/src/Discord.Net.Rest/API/Common/Guild.cs +++ b/src/Discord.Net.Rest/API/Common/Guild.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API @@ -36,7 +35,7 @@ namespace Discord.API [JsonProperty("emojis")] public Emoji[] Emojis { get; set; } [JsonProperty("features")] - public string[] Features { get; set; } + public GuildFeatures Features { get; set; } [JsonProperty("mfa_level")] public MfaLevel MfaLevel { get; set; } [JsonProperty("application_id")] @@ -76,5 +75,13 @@ namespace Discord.API public Optional ApproximateMemberCount { get; set; } [JsonProperty("approximate_presence_count")] public Optional ApproximatePresenceCount { get; set; } + [JsonProperty("threads")] + public Optional Threads { get; set; } + [JsonProperty("nsfw_level")] + public NsfwLevel NsfwLevel { get; set; } + [JsonProperty("stickers")] + public Sticker[] Stickers { get; set; } + [JsonProperty("premium_progress_bar_enabled")] + public Optional IsBoostProgressBarEnabled { get; set; } } } diff --git a/src/Discord.Net.Rest/API/Common/GuildApplicationCommandPermissions.cs b/src/Discord.Net.Rest/API/Common/GuildApplicationCommandPermissions.cs new file mode 100644 index 000000000..cc74299f7 --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/GuildApplicationCommandPermissions.cs @@ -0,0 +1,19 @@ +using Newtonsoft.Json; + +namespace Discord.API +{ + internal class GuildApplicationCommandPermission + { + [JsonProperty("id")] + public ulong Id { get; set; } + + [JsonProperty("application_id")] + public ulong ApplicationId { get; set; } + + [JsonProperty("guild_id")] + public ulong GuildId { get; set; } + + [JsonProperty("permissions")] + public ApplicationCommandPermissions[] Permissions { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Common/GuildMember.cs b/src/Discord.Net.Rest/API/Common/GuildMember.cs index fc2092d6c..9b888e86a 100644 --- a/src/Discord.Net.Rest/API/Common/GuildMember.cs +++ b/src/Discord.Net.Rest/API/Common/GuildMember.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; using System; @@ -10,6 +9,8 @@ namespace Discord.API public User User { get; set; } [JsonProperty("nick")] public Optional Nick { get; set; } + [JsonProperty("avatar")] + public Optional Avatar { get; set; } [JsonProperty("roles")] public Optional Roles { get; set; } [JsonProperty("joined_at")] diff --git a/src/Discord.Net.Rest/API/Common/GuildScheduledEvent.cs b/src/Discord.Net.Rest/API/Common/GuildScheduledEvent.cs new file mode 100644 index 000000000..338c24dc9 --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/GuildScheduledEvent.cs @@ -0,0 +1,43 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord.API +{ + internal class GuildScheduledEvent + { + [JsonProperty("id")] + public ulong Id { get; set; } + [JsonProperty("guild_id")] + public ulong GuildId { get; set; } + [JsonProperty("channel_id")] + public Optional ChannelId { get; set; } + [JsonProperty("creator_id")] + public Optional CreatorId { get; set; } + [JsonProperty("name")] + public string Name { get; set; } + [JsonProperty("description")] + public Optional Description { get; set; } + [JsonProperty("scheduled_start_time")] + public DateTimeOffset ScheduledStartTime { get; set; } + [JsonProperty("scheduled_end_time")] + public DateTimeOffset? ScheduledEndTime { get; set; } + [JsonProperty("privacy_level")] + public GuildScheduledEventPrivacyLevel PrivacyLevel { get; set; } + [JsonProperty("status")] + public GuildScheduledEventStatus Status { get; set; } + [JsonProperty("entity_type")] + public GuildScheduledEventType EntityType { get; set; } + [JsonProperty("entity_id")] + public ulong? EntityId { get; set; } + [JsonProperty("entity_metadata")] + public GuildScheduledEventEntityMetadata EntityMetadata { get; set; } + [JsonProperty("creator")] + public Optional Creator { get; set; } + [JsonProperty("user_count")] + public Optional UserCount { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Common/GuildScheduledEventEntityMetadata.cs b/src/Discord.Net.Rest/API/Common/GuildScheduledEventEntityMetadata.cs new file mode 100644 index 000000000..1db38c0ae --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/GuildScheduledEventEntityMetadata.cs @@ -0,0 +1,15 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord.API +{ + internal class GuildScheduledEventEntityMetadata + { + [JsonProperty("location")] + public Optional Location { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Common/GuildScheduledEventUser.cs b/src/Discord.Net.Rest/API/Common/GuildScheduledEventUser.cs new file mode 100644 index 000000000..1b0b93763 --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/GuildScheduledEventUser.cs @@ -0,0 +1,19 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord.API +{ + internal class GuildScheduledEventUser + { + [JsonProperty("user")] + public User User { get; set; } + [JsonProperty("member")] + public Optional Member { get; set; } + [JsonProperty("guild_scheduled_event_id")] + public ulong GuildScheduledEventId { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Common/GuildWidget.cs b/src/Discord.Net.Rest/API/Common/GuildWidget.cs index c15ad8aac..6b1d29cce 100644 --- a/src/Discord.Net.Rest/API/Common/GuildWidget.cs +++ b/src/Discord.Net.Rest/API/Common/GuildWidget.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API diff --git a/src/Discord.Net.Rest/API/Common/InstallParams.cs b/src/Discord.Net.Rest/API/Common/InstallParams.cs new file mode 100644 index 000000000..1fb987f30 --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/InstallParams.cs @@ -0,0 +1,17 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord.API +{ + internal class InstallParams + { + [JsonProperty("scopes")] + public string[] Scopes { get; set; } + [JsonProperty("permissions")] + public ulong Permission { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Common/Integration.cs b/src/Discord.Net.Rest/API/Common/Integration.cs index 821359975..47d67e149 100644 --- a/src/Discord.Net.Rest/API/Common/Integration.cs +++ b/src/Discord.Net.Rest/API/Common/Integration.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; using System; diff --git a/src/Discord.Net.Rest/API/Common/IntegrationAccount.cs b/src/Discord.Net.Rest/API/Common/IntegrationAccount.cs index 22831e795..a8d33931c 100644 --- a/src/Discord.Net.Rest/API/Common/IntegrationAccount.cs +++ b/src/Discord.Net.Rest/API/Common/IntegrationAccount.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API diff --git a/src/Discord.Net.Rest/API/Common/Interaction.cs b/src/Discord.Net.Rest/API/Common/Interaction.cs new file mode 100644 index 000000000..7f953384d --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/Interaction.cs @@ -0,0 +1,41 @@ +using Newtonsoft.Json; + +namespace Discord.API +{ + [JsonConverter(typeof(Net.Converters.InteractionConverter))] + internal class Interaction + { + [JsonProperty("id")] + public ulong Id { get; set; } + + [JsonProperty("application_id")] + public ulong ApplicationId { get; set; } + + [JsonProperty("type")] + public InteractionType Type { get; set; } + + [JsonProperty("data")] + public Optional Data { get; set; } + + [JsonProperty("guild_id")] + public Optional GuildId { get; set; } + + [JsonProperty("channel_id")] + public Optional ChannelId { get; set; } + + [JsonProperty("member")] + public Optional Member { get; set; } + + [JsonProperty("user")] + public Optional User { get; set; } + + [JsonProperty("token")] + public string Token { get; set; } + + [JsonProperty("version")] + public int Version { get; set; } + + [JsonProperty("message")] + public Optional Message { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Common/InteractionCallbackData.cs b/src/Discord.Net.Rest/API/Common/InteractionCallbackData.cs new file mode 100644 index 000000000..b07ebff49 --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/InteractionCallbackData.cs @@ -0,0 +1,28 @@ +using Newtonsoft.Json; + +namespace Discord.API +{ + internal class InteractionCallbackData + { + [JsonProperty("tts")] + public Optional TTS { get; set; } + + [JsonProperty("content")] + public Optional Content { get; set; } + + [JsonProperty("embeds")] + public Optional Embeds { get; set; } + + [JsonProperty("allowed_mentions")] + public Optional AllowedMentions { get; set; } + + [JsonProperty("flags")] + public Optional Flags { get; set; } + + [JsonProperty("components")] + public Optional Components { get; set; } + + [JsonProperty("choices")] + public Optional Choices { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Common/InteractionResponse.cs b/src/Discord.Net.Rest/API/Common/InteractionResponse.cs new file mode 100644 index 000000000..93d4cd307 --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/InteractionResponse.cs @@ -0,0 +1,13 @@ +using Newtonsoft.Json; + +namespace Discord.API +{ + internal class InteractionResponse + { + [JsonProperty("type")] + public InteractionResponseType Type { get; set; } + + [JsonProperty("data")] + public Optional Data { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Common/Invite.cs b/src/Discord.Net.Rest/API/Common/Invite.cs index aba267f34..f9d53bad6 100644 --- a/src/Discord.Net.Rest/API/Common/Invite.cs +++ b/src/Discord.Net.Rest/API/Common/Invite.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API diff --git a/src/Discord.Net.Rest/API/Common/InviteChannel.cs b/src/Discord.Net.Rest/API/Common/InviteChannel.cs index f8f2a34f2..d601e65fe 100644 --- a/src/Discord.Net.Rest/API/Common/InviteChannel.cs +++ b/src/Discord.Net.Rest/API/Common/InviteChannel.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API diff --git a/src/Discord.Net.Rest/API/Common/InviteGuild.cs b/src/Discord.Net.Rest/API/Common/InviteGuild.cs index 3d6d7cd74..f5c634e4e 100644 --- a/src/Discord.Net.Rest/API/Common/InviteGuild.cs +++ b/src/Discord.Net.Rest/API/Common/InviteGuild.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API diff --git a/src/Discord.Net.Rest/API/Common/InviteMetadata.cs b/src/Discord.Net.Rest/API/Common/InviteMetadata.cs index f818de699..a06d06969 100644 --- a/src/Discord.Net.Rest/API/Common/InviteMetadata.cs +++ b/src/Discord.Net.Rest/API/Common/InviteMetadata.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; using System; diff --git a/src/Discord.Net.Rest/API/Common/InviteVanity.cs b/src/Discord.Net.Rest/API/Common/InviteVanity.cs index a36ddee46..412795aa6 100644 --- a/src/Discord.Net.Rest/API/Common/InviteVanity.cs +++ b/src/Discord.Net.Rest/API/Common/InviteVanity.cs @@ -2,10 +2,20 @@ using Newtonsoft.Json; namespace Discord.API { + /// + /// Represents a vanity invite. + /// public class InviteVanity { + /// + /// The unique code for the invite link. + /// [JsonProperty("code")] public string Code { get; set; } + + /// + /// The total amount of vanity invite uses. + /// [JsonProperty("uses")] public int Uses { get; set; } } diff --git a/src/Discord.Net.Rest/API/Common/Message.cs b/src/Discord.Net.Rest/API/Common/Message.cs index 6ea2c29ff..d33a03fe5 100644 --- a/src/Discord.Net.Rest/API/Common/Message.cs +++ b/src/Discord.Net.Rest/API/Common/Message.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; using System; @@ -33,7 +32,7 @@ namespace Discord.API [JsonProperty("mention_everyone")] public Optional MentionEveryone { get; set; } [JsonProperty("mentions")] - public Optional[]> UserMentions { get; set; } + public Optional UserMentions { get; set; } [JsonProperty("mention_roles")] public Optional RoleMentions { get; set; } [JsonProperty("attachments")] @@ -58,7 +57,10 @@ namespace Discord.API public Optional AllowedMentions { get; set; } [JsonProperty("referenced_message")] public Optional ReferencedMessage { get; set; } - [JsonProperty("stickers")] - public Optional Stickers { get; set; } + [JsonProperty("components")] + public Optional Components { get; set; } + public Optional Interaction { get; set; } + [JsonProperty("sticker_items")] + public Optional StickerItems { get; set; } } } diff --git a/src/Discord.Net.Rest/API/Common/MessageComponentInteractionData.cs b/src/Discord.Net.Rest/API/Common/MessageComponentInteractionData.cs new file mode 100644 index 000000000..a7760911c --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/MessageComponentInteractionData.cs @@ -0,0 +1,16 @@ +using Newtonsoft.Json; + +namespace Discord.API +{ + internal class MessageComponentInteractionData : IDiscordInteractionData + { + [JsonProperty("custom_id")] + public string CustomId { get; set; } + + [JsonProperty("component_type")] + public ComponentType ComponentType { get; set; } + + [JsonProperty("values")] + public Optional Values { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Common/MessageInteraction.cs b/src/Discord.Net.Rest/API/Common/MessageInteraction.cs new file mode 100644 index 000000000..48f278396 --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/MessageInteraction.cs @@ -0,0 +1,21 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord.API +{ + internal class MessageInteraction + { + [JsonProperty("id")] + public ulong Id { get; set; } + [JsonProperty("type")] + public InteractionType Type { get; set; } + [JsonProperty("name")] + public string Name { get; set; } + [JsonProperty("user")] + public User User { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Common/NitroStickerPacks.cs b/src/Discord.Net.Rest/API/Common/NitroStickerPacks.cs new file mode 100644 index 000000000..cc2f0d963 --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/NitroStickerPacks.cs @@ -0,0 +1,11 @@ +using Newtonsoft.Json; +using System.Collections.Generic; + +namespace Discord.API +{ + internal class NitroStickerPacks + { + [JsonProperty("sticker_packs")] + public List StickerPacks { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Common/Overwrite.cs b/src/Discord.Net.Rest/API/Common/Overwrite.cs index 3d94b0640..a1fb534d8 100644 --- a/src/Discord.Net.Rest/API/Common/Overwrite.cs +++ b/src/Discord.Net.Rest/API/Common/Overwrite.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API diff --git a/src/Discord.Net.Rest/API/Common/Presence.cs b/src/Discord.Net.Rest/API/Common/Presence.cs index b44e9185d..23f871ae6 100644 --- a/src/Discord.Net.Rest/API/Common/Presence.cs +++ b/src/Discord.Net.Rest/API/Common/Presence.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; using System; using System.Collections.Generic; diff --git a/src/Discord.Net.Rest/API/Common/PropertyErrorDescription.cs b/src/Discord.Net.Rest/API/Common/PropertyErrorDescription.cs new file mode 100644 index 000000000..145288e5d --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/PropertyErrorDescription.cs @@ -0,0 +1,17 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord.API +{ + internal class ErrorDetails + { + [JsonProperty("name")] + public Optional Name { get; set; } + [JsonProperty("errors")] + public Error[] Errors { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Common/ReadState.cs b/src/Discord.Net.Rest/API/Common/ReadState.cs index 6ea6e4bd0..9a66880c6 100644 --- a/src/Discord.Net.Rest/API/Common/ReadState.cs +++ b/src/Discord.Net.Rest/API/Common/ReadState.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API diff --git a/src/Discord.Net.Rest/API/Common/Relationship.cs b/src/Discord.Net.Rest/API/Common/Relationship.cs index ecbb96f80..d17f766af 100644 --- a/src/Discord.Net.Rest/API/Common/Relationship.cs +++ b/src/Discord.Net.Rest/API/Common/Relationship.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API diff --git a/src/Discord.Net.Rest/API/Common/RelationshipType.cs b/src/Discord.Net.Rest/API/Common/RelationshipType.cs index 0ed99f396..776ba156b 100644 --- a/src/Discord.Net.Rest/API/Common/RelationshipType.cs +++ b/src/Discord.Net.Rest/API/Common/RelationshipType.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 namespace Discord.API { internal enum RelationshipType diff --git a/src/Discord.Net.Rest/API/Common/Role.cs b/src/Discord.Net.Rest/API/Common/Role.cs index c655175da..81f54ccc0 100644 --- a/src/Discord.Net.Rest/API/Common/Role.cs +++ b/src/Discord.Net.Rest/API/Common/Role.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API @@ -9,6 +8,10 @@ namespace Discord.API public ulong Id { get; set; } [JsonProperty("name")] public string Name { get; set; } + [JsonProperty("icon")] + public Optional Icon { get; set; } + [JsonProperty("unicode_emoji")] + public Optional Emoji { get; set; } [JsonProperty("color")] public uint Color { get; set; } [JsonProperty("hoist")] diff --git a/src/Discord.Net.Rest/API/Common/RoleTags.cs b/src/Discord.Net.Rest/API/Common/RoleTags.cs index 6446f2037..9ddd39a64 100644 --- a/src/Discord.Net.Rest/API/Common/RoleTags.cs +++ b/src/Discord.Net.Rest/API/Common/RoleTags.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API diff --git a/src/Discord.Net.Rest/API/Common/SelectMenuComponent.cs b/src/Discord.Net.Rest/API/Common/SelectMenuComponent.cs new file mode 100644 index 000000000..0886a8fe9 --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/SelectMenuComponent.cs @@ -0,0 +1,42 @@ +using Newtonsoft.Json; +using System.Linq; + +namespace Discord.API +{ + internal class SelectMenuComponent : IMessageComponent + { + [JsonProperty("type")] + public ComponentType Type { get; set; } + + [JsonProperty("custom_id")] + public string CustomId { get; set; } + + [JsonProperty("options")] + public SelectMenuOption[] Options { get; set; } + + [JsonProperty("placeholder")] + public Optional Placeholder { get; set; } + + [JsonProperty("min_values")] + public int MinValues { get; set; } + + [JsonProperty("max_values")] + public int MaxValues { get; set; } + + [JsonProperty("disabled")] + public bool Disabled { get; set; } + + public SelectMenuComponent() { } + + public SelectMenuComponent(Discord.SelectMenuComponent component) + { + Type = component.Type; + CustomId = component.CustomId; + Options = component.Options.Select(x => new SelectMenuOption(x)).ToArray(); + Placeholder = component.Placeholder; + MinValues = component.MinValues; + MaxValues = component.MaxValues; + Disabled = component.IsDisabled; + } + } +} diff --git a/src/Discord.Net.Rest/API/Common/SelectMenuOption.cs b/src/Discord.Net.Rest/API/Common/SelectMenuOption.cs new file mode 100644 index 000000000..d0a25a829 --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/SelectMenuOption.cs @@ -0,0 +1,53 @@ +using Newtonsoft.Json; + +namespace Discord.API +{ + internal class SelectMenuOption + { + [JsonProperty("label")] + public string Label { get; set; } + + [JsonProperty("value")] + public string Value { get; set; } + + [JsonProperty("description")] + public Optional Description { get; set; } + + [JsonProperty("emoji")] + public Optional Emoji { get; set; } + + [JsonProperty("default")] + public Optional Default { get; set; } + + public SelectMenuOption() { } + + public SelectMenuOption(Discord.SelectMenuOption option) + { + Label = option.Label; + Value = option.Value; + Description = option.Description; + + if (option.Emote != null) + { + if (option.Emote is Emote e) + { + Emoji = new Emoji + { + Name = e.Name, + Animated = e.Animated, + Id = e.Id + }; + } + else + { + Emoji = new Emoji + { + Name = option.Emote.Name + }; + } + } + + Default = option.IsDefault ?? Optional.Unspecified; + } + } +} diff --git a/src/Discord.Net.Rest/API/Common/StageInstance.cs b/src/Discord.Net.Rest/API/Common/StageInstance.cs new file mode 100644 index 000000000..3ec623949 --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/StageInstance.cs @@ -0,0 +1,25 @@ +using Newtonsoft.Json; + +namespace Discord.API +{ + internal class StageInstance + { + [JsonProperty("id")] + public ulong Id { get; set; } + + [JsonProperty("guild_id")] + public ulong GuildId { get; set; } + + [JsonProperty("channel_id")] + public ulong ChannelId { get; set; } + + [JsonProperty("topic")] + public string Topic { get; set; } + + [JsonProperty("privacy_level")] + public StagePrivacyLevel PrivacyLevel { get; set; } + + [JsonProperty("discoverable_disabled")] + public bool DiscoverableDisabled { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Common/Sticker.cs b/src/Discord.Net.Rest/API/Common/Sticker.cs index 0d1cac974..b2c58d57c 100644 --- a/src/Discord.Net.Rest/API/Common/Sticker.cs +++ b/src/Discord.Net.Rest/API/Common/Sticker.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API @@ -12,14 +11,20 @@ namespace Discord.API [JsonProperty("name")] public string Name { get; set; } [JsonProperty("description")] - public string Desription { get; set; } + public string Description { get; set; } [JsonProperty("tags")] public Optional Tags { get; set; } - [JsonProperty("asset")] - public string Asset { get; set; } - [JsonProperty("preview_asset")] - public string PreviewAsset { get; set; } + [JsonProperty("type")] + public StickerType Type { get; set; } [JsonProperty("format_type")] public StickerFormatType FormatType { get; set; } + [JsonProperty("available")] + public bool? Available { get; set; } + [JsonProperty("guild_id")] + public Optional GuildId { get; set; } + [JsonProperty("user")] + public Optional User { get; set; } + [JsonProperty("sort_value")] + public int? SortValue { get; set; } } } diff --git a/src/Discord.Net.Rest/API/Common/StickerItem.cs b/src/Discord.Net.Rest/API/Common/StickerItem.cs new file mode 100644 index 000000000..4b24f711b --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/StickerItem.cs @@ -0,0 +1,16 @@ +using Newtonsoft.Json; + +namespace Discord.API +{ + internal class StickerItem + { + [JsonProperty("id")] + public ulong Id { get; set; } + + [JsonProperty("name")] + public string Name { get; set; } + + [JsonProperty("format_type")] + public StickerFormatType FormatType { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Common/StickerPack.cs b/src/Discord.Net.Rest/API/Common/StickerPack.cs new file mode 100644 index 000000000..3daaac5bf --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/StickerPack.cs @@ -0,0 +1,22 @@ +using Newtonsoft.Json; + +namespace Discord.API +{ + internal class StickerPack + { + [JsonProperty("id")] + public ulong Id { get; set; } + [JsonProperty("stickers")] + public Sticker[] Stickers { get; set; } + [JsonProperty("name")] + public string Name { get; set; } + [JsonProperty("sku_id")] + public ulong SkuId { get; set; } + [JsonProperty("cover_sticker_id")] + public Optional CoverStickerId { get; set; } + [JsonProperty("description")] + public string Description { get; set; } + [JsonProperty("banner_asset_id")] + public ulong BannerAssetId { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Common/Team.cs b/src/Discord.Net.Rest/API/Common/Team.cs index 852368522..b421dc18c 100644 --- a/src/Discord.Net.Rest/API/Common/Team.cs +++ b/src/Discord.Net.Rest/API/Common/Team.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API diff --git a/src/Discord.Net.Rest/API/Common/TeamMember.cs b/src/Discord.Net.Rest/API/Common/TeamMember.cs index 788f73b61..f3cba608e 100644 --- a/src/Discord.Net.Rest/API/Common/TeamMember.cs +++ b/src/Discord.Net.Rest/API/Common/TeamMember.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API diff --git a/src/Discord.Net.Rest/API/Common/ThreadMember.cs b/src/Discord.Net.Rest/API/Common/ThreadMember.cs new file mode 100644 index 000000000..3e30d2c95 --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/ThreadMember.cs @@ -0,0 +1,26 @@ +using Newtonsoft.Json; +using System; + +namespace Discord.API +{ + internal class ThreadMember + { + [JsonProperty("id")] + public Optional Id { get; set; } + + [JsonProperty("user_id")] + public Optional UserId { get; set; } + + [JsonProperty("join_timestamp")] + public DateTimeOffset JoinTimestamp { get; set; } + + [JsonProperty("presence")] + public Optional Presence { get; set; } + + [JsonProperty("member")] + public Optional Member { get; set; } + + [JsonProperty("flags")] + public int Flags { get; set; } // No enum type (yet?) + } +} diff --git a/src/Discord.Net.Rest/API/Common/ThreadMetadata.cs b/src/Discord.Net.Rest/API/Common/ThreadMetadata.cs new file mode 100644 index 000000000..39e9bd13e --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/ThreadMetadata.cs @@ -0,0 +1,20 @@ +using Newtonsoft.Json; +using System; + +namespace Discord.API +{ + internal class ThreadMetadata + { + [JsonProperty("archived")] + public bool Archived { get; set; } + + [JsonProperty("auto_archive_duration")] + public ThreadArchiveDuration AutoArchiveDuration { get; set; } + + [JsonProperty("archive_timestamp")] + public DateTimeOffset ArchiveTimestamp { get; set; } + + [JsonProperty("locked")] + public Optional Locked { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Common/User.cs b/src/Discord.Net.Rest/API/Common/User.cs index d1f436afb..08fe88cb0 100644 --- a/src/Discord.Net.Rest/API/Common/User.cs +++ b/src/Discord.Net.Rest/API/Common/User.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API @@ -15,6 +14,10 @@ namespace Discord.API public Optional Bot { get; set; } [JsonProperty("avatar")] public Optional Avatar { get; set; } + [JsonProperty("banner")] + public Optional Banner { get; set; } + [JsonProperty("accent_color")] + public Optional AccentColor { get; set; } //CurrentUser [JsonProperty("verified")] diff --git a/src/Discord.Net.Rest/API/Common/UserGuild.cs b/src/Discord.Net.Rest/API/Common/UserGuild.cs index 825e9a09a..fc1fe833d 100644 --- a/src/Discord.Net.Rest/API/Common/UserGuild.cs +++ b/src/Discord.Net.Rest/API/Common/UserGuild.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API diff --git a/src/Discord.Net.Rest/API/Common/VoiceRegion.cs b/src/Discord.Net.Rest/API/Common/VoiceRegion.cs index 606af07bd..3cc66a0ef 100644 --- a/src/Discord.Net.Rest/API/Common/VoiceRegion.cs +++ b/src/Discord.Net.Rest/API/Common/VoiceRegion.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API diff --git a/src/Discord.Net.Rest/API/Common/VoiceState.cs b/src/Discord.Net.Rest/API/Common/VoiceState.cs index c7a571ed0..f7cd54a72 100644 --- a/src/Discord.Net.Rest/API/Common/VoiceState.cs +++ b/src/Discord.Net.Rest/API/Common/VoiceState.cs @@ -1,5 +1,5 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; +using System; namespace Discord.API { @@ -28,5 +28,7 @@ namespace Discord.API public bool Suppress { get; set; } [JsonProperty("self_stream")] public bool SelfStream { get; set; } + [JsonProperty("request_to_speak_timestamp")] + public Optional RequestToSpeakTimestamp { get; set; } } } diff --git a/src/Discord.Net.Rest/API/Common/Webhook.cs b/src/Discord.Net.Rest/API/Common/Webhook.cs index cbd5fdad5..23b682bd3 100644 --- a/src/Discord.Net.Rest/API/Common/Webhook.cs +++ b/src/Discord.Net.Rest/API/Common/Webhook.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API @@ -21,5 +20,7 @@ namespace Discord.API [JsonProperty("user")] public Optional Creator { get; set; } + [JsonProperty("application_id")] + public ulong? ApplicationId { get; set; } } } diff --git a/src/Discord.Net.Rest/API/Int53Attribute.cs b/src/Discord.Net.Rest/API/Int53Attribute.cs index 70ef2f185..3a21b583d 100644 --- a/src/Discord.Net.Rest/API/Int53Attribute.cs +++ b/src/Discord.Net.Rest/API/Int53Attribute.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using System; namespace Discord.API diff --git a/src/Discord.Net.Rest/API/Net/IResolvable.cs b/src/Discord.Net.Rest/API/Net/IResolvable.cs new file mode 100644 index 000000000..7485f5de8 --- /dev/null +++ b/src/Discord.Net.Rest/API/Net/IResolvable.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord.API +{ + internal interface IResolvable + { + Optional Resolved { get; } + } +} diff --git a/src/Discord.Net.Rest/API/Net/MultipartFile.cs b/src/Discord.Net.Rest/API/Net/MultipartFile.cs index 604852e90..d6bc4c7ab 100644 --- a/src/Discord.Net.Rest/API/Net/MultipartFile.cs +++ b/src/Discord.Net.Rest/API/Net/MultipartFile.cs @@ -1,4 +1,4 @@ -using System.IO; +using System.IO; namespace Discord.Net.Rest { @@ -6,11 +6,13 @@ namespace Discord.Net.Rest { public Stream Stream { get; } public string Filename { get; } + public string ContentType { get; } - public MultipartFile(Stream stream, string filename) + public MultipartFile(Stream stream, string filename, string contentType = null) { Stream = stream; Filename = filename; + ContentType = contentType; } } } diff --git a/src/Discord.Net.Rest/API/Rest/CreateApplicationCommandParams.cs b/src/Discord.Net.Rest/API/Rest/CreateApplicationCommandParams.cs new file mode 100644 index 000000000..82f0befcd --- /dev/null +++ b/src/Discord.Net.Rest/API/Rest/CreateApplicationCommandParams.cs @@ -0,0 +1,31 @@ +using Newtonsoft.Json; + +namespace Discord.API.Rest +{ + internal class CreateApplicationCommandParams + { + [JsonProperty("name")] + public string Name { get; set; } + + [JsonProperty("type")] + public ApplicationCommandType Type { get; set; } + + [JsonProperty("description")] + public string Description { get; set; } + + [JsonProperty("options")] + public Optional Options { get; set; } + + [JsonProperty("default_permission")] + public Optional DefaultPermission { get; set; } + + public CreateApplicationCommandParams() { } + public CreateApplicationCommandParams(string name, string description, ApplicationCommandType type, ApplicationCommandOption[] options = null) + { + Name = name; + Description = description; + Options = Optional.Create(options); + Type = type; + } + } +} diff --git a/src/Discord.Net.Rest/API/Rest/CreateChannelInviteParams.cs b/src/Discord.Net.Rest/API/Rest/CreateChannelInviteParams.cs index db79bc314..852abe301 100644 --- a/src/Discord.Net.Rest/API/Rest/CreateChannelInviteParams.cs +++ b/src/Discord.Net.Rest/API/Rest/CreateChannelInviteParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest @@ -14,5 +13,11 @@ namespace Discord.API.Rest public Optional IsTemporary { get; set; } [JsonProperty("unique")] public Optional IsUnique { get; set; } + [JsonProperty("target_type")] + public Optional TargetType { get; set; } + [JsonProperty("target_user_id")] + public Optional TargetUserId { get; set; } + [JsonProperty("target_application_id")] + public Optional TargetApplicationId { get; set; } } } diff --git a/src/Discord.Net.Rest/API/Rest/CreateDMChannelParams.cs b/src/Discord.Net.Rest/API/Rest/CreateDMChannelParams.cs index f32796e02..0a710dd1b 100644 --- a/src/Discord.Net.Rest/API/Rest/CreateDMChannelParams.cs +++ b/src/Discord.Net.Rest/API/Rest/CreateDMChannelParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest diff --git a/src/Discord.Net.Rest/API/Rest/CreateGuildBanParams.cs b/src/Discord.Net.Rest/API/Rest/CreateGuildBanParams.cs index f0432e517..fce9df11f 100644 --- a/src/Discord.Net.Rest/API/Rest/CreateGuildBanParams.cs +++ b/src/Discord.Net.Rest/API/Rest/CreateGuildBanParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 namespace Discord.API.Rest { internal class CreateGuildBanParams diff --git a/src/Discord.Net.Rest/API/Rest/CreateGuildChannelParams.cs b/src/Discord.Net.Rest/API/Rest/CreateGuildChannelParams.cs index aec43dbef..57816e448 100644 --- a/src/Discord.Net.Rest/API/Rest/CreateGuildChannelParams.cs +++ b/src/Discord.Net.Rest/API/Rest/CreateGuildChannelParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest diff --git a/src/Discord.Net.Rest/API/Rest/CreateGuildEmoteParams.cs b/src/Discord.Net.Rest/API/Rest/CreateGuildEmoteParams.cs index 308199820..c81f62f4c 100644 --- a/src/Discord.Net.Rest/API/Rest/CreateGuildEmoteParams.cs +++ b/src/Discord.Net.Rest/API/Rest/CreateGuildEmoteParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest diff --git a/src/Discord.Net.Rest/API/Rest/CreateGuildIntegrationParams.cs b/src/Discord.Net.Rest/API/Rest/CreateGuildIntegrationParams.cs index 1053a0ed3..7358e5201 100644 --- a/src/Discord.Net.Rest/API/Rest/CreateGuildIntegrationParams.cs +++ b/src/Discord.Net.Rest/API/Rest/CreateGuildIntegrationParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest diff --git a/src/Discord.Net.Rest/API/Rest/CreateGuildParams.cs b/src/Discord.Net.Rest/API/Rest/CreateGuildParams.cs index cda6caedf..e89c2b119 100644 --- a/src/Discord.Net.Rest/API/Rest/CreateGuildParams.cs +++ b/src/Discord.Net.Rest/API/Rest/CreateGuildParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest diff --git a/src/Discord.Net.Rest/API/Rest/CreateGuildScheduledEventParams.cs b/src/Discord.Net.Rest/API/Rest/CreateGuildScheduledEventParams.cs new file mode 100644 index 000000000..a207d3374 --- /dev/null +++ b/src/Discord.Net.Rest/API/Rest/CreateGuildScheduledEventParams.cs @@ -0,0 +1,29 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord.API.Rest +{ + internal class CreateGuildScheduledEventParams + { + [JsonProperty("channel_id")] + public Optional ChannelId { get; set; } + [JsonProperty("entity_metadata")] + public Optional EntityMetadata { get; set; } + [JsonProperty("name")] + public string Name { get; set; } + [JsonProperty("privacy_level")] + public GuildScheduledEventPrivacyLevel PrivacyLevel { get; set; } + [JsonProperty("scheduled_start_time")] + public DateTimeOffset StartTime { get; set; } + [JsonProperty("scheduled_end_time")] + public Optional EndTime { get; set; } + [JsonProperty("description")] + public Optional Description { get; set; } + [JsonProperty("entity_type")] + public GuildScheduledEventType Type { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Rest/CreateMessageParams.cs b/src/Discord.Net.Rest/API/Rest/CreateMessageParams.cs index e64532864..5996c7e83 100644 --- a/src/Discord.Net.Rest/API/Rest/CreateMessageParams.cs +++ b/src/Discord.Net.Rest/API/Rest/CreateMessageParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest @@ -11,15 +10,25 @@ namespace Discord.API.Rest [JsonProperty("nonce")] public Optional Nonce { get; set; } + [JsonProperty("tts")] public Optional IsTTS { get; set; } - [JsonProperty("embed")] - public Optional Embed { get; set; } + + [JsonProperty("embeds")] + public Optional Embeds { get; set; } + [JsonProperty("allowed_mentions")] public Optional AllowedMentions { get; set; } + [JsonProperty("message_reference")] public Optional MessageReference { get; set; } + [JsonProperty("components")] + public Optional Components { get; set; } + + [JsonProperty("sticker_ids")] + public Optional Stickers { get; set; } + public CreateMessageParams(string content) { Content = content; diff --git a/src/Discord.Net.Rest/API/Rest/CreateStageInstanceParams.cs b/src/Discord.Net.Rest/API/Rest/CreateStageInstanceParams.cs new file mode 100644 index 000000000..a1d59bb51 --- /dev/null +++ b/src/Discord.Net.Rest/API/Rest/CreateStageInstanceParams.cs @@ -0,0 +1,16 @@ +using Newtonsoft.Json; + +namespace Discord.API.Rest +{ + internal class CreateStageInstanceParams + { + [JsonProperty("channel_id")] + public ulong ChannelId { get; set; } + + [JsonProperty("topic")] + public string Topic { get; set; } + + [JsonProperty("privacy_level")] + public Optional PrivacyLevel { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Rest/CreateStickerParams.cs b/src/Discord.Net.Rest/API/Rest/CreateStickerParams.cs new file mode 100644 index 000000000..b330a0111 --- /dev/null +++ b/src/Discord.Net.Rest/API/Rest/CreateStickerParams.cs @@ -0,0 +1,35 @@ +using Discord.Net.Rest; +using System.Collections.Generic; +using System.IO; +namespace Discord.API.Rest +{ + internal class CreateStickerParams + { + public Stream File { get; set; } + public string Name { get; set; } + public string Description { get; set; } + public string Tags { get; set; } + public string FileName { get; set; } + + public IReadOnlyDictionary ToDictionary() + { + var d = new Dictionary + { + ["name"] = $"{Name}", + ["description"] = Description, + ["tags"] = Tags + }; + + string contentType = "image/png"; + + if (File is FileStream fileStream) + contentType = $"image/{Path.GetExtension(fileStream.Name)}"; + else if (FileName != null) + contentType = $"image/{Path.GetExtension(FileName)}"; + + d["file"] = new MultipartFile(File, FileName ?? "image", contentType.Replace(".", "")); + + return d; + } + } +} diff --git a/src/Discord.Net.Rest/API/Rest/CreateWebhookMessageParams.cs b/src/Discord.Net.Rest/API/Rest/CreateWebhookMessageParams.cs index 0a4f80a3c..bda0f7ff1 100644 --- a/src/Discord.Net.Rest/API/Rest/CreateWebhookMessageParams.cs +++ b/src/Discord.Net.Rest/API/Rest/CreateWebhookMessageParams.cs @@ -1,30 +1,84 @@ -#pragma warning disable CS1591 +using Discord.Net.Converters; +using Discord.Net.Rest; using Newtonsoft.Json; +using System.Collections.Generic; +using System.IO; +using System.Text; namespace Discord.API.Rest { [JsonObject(MemberSerialization = MemberSerialization.OptIn)] internal class CreateWebhookMessageParams { + private static JsonSerializer _serializer = new JsonSerializer { ContractResolver = new DiscordContractResolver() }; + [JsonProperty("content")] - public string Content { get; } + public string Content { get; set; } [JsonProperty("nonce")] public Optional Nonce { get; set; } + [JsonProperty("tts")] public Optional IsTTS { get; set; } + [JsonProperty("embeds")] public Optional Embeds { get; set; } + [JsonProperty("username")] public Optional Username { get; set; } + [JsonProperty("avatar_url")] public Optional AvatarUrl { get; set; } + [JsonProperty("allowed_mentions")] public Optional AllowedMentions { get; set; } - public CreateWebhookMessageParams(string content) + [JsonProperty("flags")] + public Optional Flags { get; set; } + + [JsonProperty("components")] + public Optional Components { get; set; } + + [JsonProperty("file")] + public Optional File { get; set; } + + public IReadOnlyDictionary ToDictionary() { - Content = content; + var d = new Dictionary(); + + if (File.IsSpecified) + { + d["file"] = File.Value; + } + + var payload = new Dictionary + { + ["content"] = Content + }; + + if (IsTTS.IsSpecified) + payload["tts"] = IsTTS.Value.ToString(); + if (Nonce.IsSpecified) + payload["nonce"] = Nonce.Value; + if (Username.IsSpecified) + payload["username"] = Username.Value; + if (AvatarUrl.IsSpecified) + payload["avatar_url"] = AvatarUrl.Value; + if (Embeds.IsSpecified) + payload["embeds"] = Embeds.Value; + if (AllowedMentions.IsSpecified) + payload["allowed_mentions"] = AllowedMentions.Value; + if (Components.IsSpecified) + payload["components"] = Components.Value; + + var json = new StringBuilder(); + using (var text = new StringWriter(json)) + using (var writer = new JsonTextWriter(text)) + _serializer.Serialize(writer, payload); + + d["payload_json"] = json.ToString(); + + return d; } } } diff --git a/src/Discord.Net.Rest/API/Rest/CreateWebhookParams.cs b/src/Discord.Net.Rest/API/Rest/CreateWebhookParams.cs index 0d1059fab..242f451cb 100644 --- a/src/Discord.Net.Rest/API/Rest/CreateWebhookParams.cs +++ b/src/Discord.Net.Rest/API/Rest/CreateWebhookParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest diff --git a/src/Discord.Net.Rest/API/Rest/DeleteMessagesParams.cs b/src/Discord.Net.Rest/API/Rest/DeleteMessagesParams.cs index ca9d8c26e..ca6b78406 100644 --- a/src/Discord.Net.Rest/API/Rest/DeleteMessagesParams.cs +++ b/src/Discord.Net.Rest/API/Rest/DeleteMessagesParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest diff --git a/src/Discord.Net.Rest/API/Rest/GetBotGatewayResponse.cs b/src/Discord.Net.Rest/API/Rest/GetBotGatewayResponse.cs index d3285051b..3f8318cd1 100644 --- a/src/Discord.Net.Rest/API/Rest/GetBotGatewayResponse.cs +++ b/src/Discord.Net.Rest/API/Rest/GetBotGatewayResponse.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest diff --git a/src/Discord.Net.Rest/API/Rest/GetChannelMessagesParams.cs b/src/Discord.Net.Rest/API/Rest/GetChannelMessagesParams.cs index ea5327667..52dd84836 100644 --- a/src/Discord.Net.Rest/API/Rest/GetChannelMessagesParams.cs +++ b/src/Discord.Net.Rest/API/Rest/GetChannelMessagesParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 namespace Discord.API.Rest { internal class GetChannelMessagesParams diff --git a/src/Discord.Net.Rest/API/Rest/GetEventUsersParams.cs b/src/Discord.Net.Rest/API/Rest/GetEventUsersParams.cs new file mode 100644 index 000000000..db3ac666e --- /dev/null +++ b/src/Discord.Net.Rest/API/Rest/GetEventUsersParams.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord.API.Rest +{ + internal class GetEventUsersParams + { + public Optional Limit { get; set; } + public Optional RelativeDirection { get; set; } + public Optional RelativeUserId { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Rest/GetGatewayResponse.cs b/src/Discord.Net.Rest/API/Rest/GetGatewayResponse.cs index ce3630170..11207633d 100644 --- a/src/Discord.Net.Rest/API/Rest/GetGatewayResponse.cs +++ b/src/Discord.Net.Rest/API/Rest/GetGatewayResponse.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest diff --git a/src/Discord.Net.Rest/API/Rest/GetGuildMembersParams.cs b/src/Discord.Net.Rest/API/Rest/GetGuildMembersParams.cs index 66023cb43..67d380035 100644 --- a/src/Discord.Net.Rest/API/Rest/GetGuildMembersParams.cs +++ b/src/Discord.Net.Rest/API/Rest/GetGuildMembersParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 namespace Discord.API.Rest { internal class GetGuildMembersParams diff --git a/src/Discord.Net.Rest/API/Rest/GetGuildPruneCountResponse.cs b/src/Discord.Net.Rest/API/Rest/GetGuildPruneCountResponse.cs index 4af85acfa..1e7fc8c7b 100644 --- a/src/Discord.Net.Rest/API/Rest/GetGuildPruneCountResponse.cs +++ b/src/Discord.Net.Rest/API/Rest/GetGuildPruneCountResponse.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest diff --git a/src/Discord.Net.Rest/API/Rest/GetGuildSummariesParams.cs b/src/Discord.Net.Rest/API/Rest/GetGuildSummariesParams.cs index f770ef398..1d3f70f07 100644 --- a/src/Discord.Net.Rest/API/Rest/GetGuildSummariesParams.cs +++ b/src/Discord.Net.Rest/API/Rest/GetGuildSummariesParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 namespace Discord.API.Rest { internal class GetGuildSummariesParams diff --git a/src/Discord.Net.Rest/API/Rest/GuildPruneParams.cs b/src/Discord.Net.Rest/API/Rest/GuildPruneParams.cs index e4c9192ad..c6caa1eb1 100644 --- a/src/Discord.Net.Rest/API/Rest/GuildPruneParams.cs +++ b/src/Discord.Net.Rest/API/Rest/GuildPruneParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest diff --git a/src/Discord.Net.Rest/API/Rest/ModifyApplicationCommandParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyApplicationCommandParams.cs new file mode 100644 index 000000000..5891c2c28 --- /dev/null +++ b/src/Discord.Net.Rest/API/Rest/ModifyApplicationCommandParams.cs @@ -0,0 +1,19 @@ +using Newtonsoft.Json; + +namespace Discord.API.Rest +{ + internal class ModifyApplicationCommandParams + { + [JsonProperty("name")] + public Optional Name { get; set; } + + [JsonProperty("description")] + public Optional Description { get; set; } + + [JsonProperty("options")] + public Optional Options { get; set; } + + [JsonProperty("default_permission")] + public Optional DefaultPermission { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Rest/ModifyChannelPermissionsParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyChannelPermissionsParams.cs index 269111a61..acb81034a 100644 --- a/src/Discord.Net.Rest/API/Rest/ModifyChannelPermissionsParams.cs +++ b/src/Discord.Net.Rest/API/Rest/ModifyChannelPermissionsParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest diff --git a/src/Discord.Net.Rest/API/Rest/ModifyCurrentUserNickParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyCurrentUserNickParams.cs index ba44e34cf..c10f2e4ec 100644 --- a/src/Discord.Net.Rest/API/Rest/ModifyCurrentUserNickParams.cs +++ b/src/Discord.Net.Rest/API/Rest/ModifyCurrentUserNickParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest diff --git a/src/Discord.Net.Rest/API/Rest/ModifyCurrentUserParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyCurrentUserParams.cs index 7ba27c3a5..e28deb32b 100644 --- a/src/Discord.Net.Rest/API/Rest/ModifyCurrentUserParams.cs +++ b/src/Discord.Net.Rest/API/Rest/ModifyCurrentUserParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest diff --git a/src/Discord.Net.Rest/API/Rest/ModifyGuildApplicationCommandPermissions.cs b/src/Discord.Net.Rest/API/Rest/ModifyGuildApplicationCommandPermissions.cs new file mode 100644 index 000000000..a557061f3 --- /dev/null +++ b/src/Discord.Net.Rest/API/Rest/ModifyGuildApplicationCommandPermissions.cs @@ -0,0 +1,13 @@ +using Newtonsoft.Json; + +namespace Discord.API.Rest +{ + internal class ModifyGuildApplicationCommandPermissions + { + [JsonProperty("id")] + public ulong Id { get; set; } + + [JsonProperty("permissions")] + public ApplicationCommandPermissions[] Permissions { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Rest/ModifyGuildApplicationCommandPermissionsParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyGuildApplicationCommandPermissionsParams.cs new file mode 100644 index 000000000..322875b8e --- /dev/null +++ b/src/Discord.Net.Rest/API/Rest/ModifyGuildApplicationCommandPermissionsParams.cs @@ -0,0 +1,10 @@ +using Newtonsoft.Json; + +namespace Discord.API.Rest +{ + internal class ModifyGuildApplicationCommandPermissionsParams + { + [JsonProperty("permissions")] + public ApplicationCommandPermissions[] Permissions { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Rest/ModifyGuildChannelParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyGuildChannelParams.cs index e5e8a4632..dfe9cd980 100644 --- a/src/Discord.Net.Rest/API/Rest/ModifyGuildChannelParams.cs +++ b/src/Discord.Net.Rest/API/Rest/ModifyGuildChannelParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest diff --git a/src/Discord.Net.Rest/API/Rest/ModifyGuildChannelsParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyGuildChannelsParams.cs index f97fbda0b..91567be3d 100644 --- a/src/Discord.Net.Rest/API/Rest/ModifyGuildChannelsParams.cs +++ b/src/Discord.Net.Rest/API/Rest/ModifyGuildChannelsParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest diff --git a/src/Discord.Net.Rest/API/Rest/ModifyGuildEmbedParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyGuildEmbedParams.cs index 487744c65..420bdbeaf 100644 --- a/src/Discord.Net.Rest/API/Rest/ModifyGuildEmbedParams.cs +++ b/src/Discord.Net.Rest/API/Rest/ModifyGuildEmbedParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest diff --git a/src/Discord.Net.Rest/API/Rest/ModifyGuildEmoteParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyGuildEmoteParams.cs index a2295dd5d..08b196daa 100644 --- a/src/Discord.Net.Rest/API/Rest/ModifyGuildEmoteParams.cs +++ b/src/Discord.Net.Rest/API/Rest/ModifyGuildEmoteParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest diff --git a/src/Discord.Net.Rest/API/Rest/ModifyGuildIntegrationParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyGuildIntegrationParams.cs index 0a1b4f9fa..cf869c838 100644 --- a/src/Discord.Net.Rest/API/Rest/ModifyGuildIntegrationParams.cs +++ b/src/Discord.Net.Rest/API/Rest/ModifyGuildIntegrationParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest diff --git a/src/Discord.Net.Rest/API/Rest/ModifyGuildMemberParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyGuildMemberParams.cs index a381d6f8f..37625de09 100644 --- a/src/Discord.Net.Rest/API/Rest/ModifyGuildMemberParams.cs +++ b/src/Discord.Net.Rest/API/Rest/ModifyGuildMemberParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest diff --git a/src/Discord.Net.Rest/API/Rest/ModifyGuildParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyGuildParams.cs index cfb107bcd..c1a20cb83 100644 --- a/src/Discord.Net.Rest/API/Rest/ModifyGuildParams.cs +++ b/src/Discord.Net.Rest/API/Rest/ModifyGuildParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest @@ -36,5 +35,7 @@ namespace Discord.API.Rest public Optional SystemChannelFlags { get; set; } [JsonProperty("preferred_locale")] public string PreferredLocale { get; set; } + [JsonProperty("premium_progress_bar_enabled")] + public Optional IsBoostProgressBarEnabled { get; set; } } } diff --git a/src/Discord.Net.Rest/API/Rest/ModifyGuildRoleParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyGuildRoleParams.cs index 8605411c5..fbb9c3e48 100644 --- a/src/Discord.Net.Rest/API/Rest/ModifyGuildRoleParams.cs +++ b/src/Discord.Net.Rest/API/Rest/ModifyGuildRoleParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest @@ -14,6 +13,8 @@ namespace Discord.API.Rest public Optional Color { get; set; } [JsonProperty("hoist")] public Optional Hoist { get; set; } + [JsonProperty("icon")] + public Optional Icon { get; set; } [JsonProperty("mentionable")] public Optional Mentionable { get; set; } } diff --git a/src/Discord.Net.Rest/API/Rest/ModifyGuildRolesParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyGuildRolesParams.cs index 0e816a260..eeb724523 100644 --- a/src/Discord.Net.Rest/API/Rest/ModifyGuildRolesParams.cs +++ b/src/Discord.Net.Rest/API/Rest/ModifyGuildRolesParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest diff --git a/src/Discord.Net.Rest/API/Rest/ModifyGuildScheduledEventParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyGuildScheduledEventParams.cs new file mode 100644 index 000000000..3d191a0b3 --- /dev/null +++ b/src/Discord.Net.Rest/API/Rest/ModifyGuildScheduledEventParams.cs @@ -0,0 +1,31 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord.API.Rest +{ + internal class ModifyGuildScheduledEventParams + { + [JsonProperty("channel_id")] + public Optional ChannelId { get; set; } + [JsonProperty("entity_metadata")] + public Optional EntityMetadata { get; set; } + [JsonProperty("name")] + public Optional Name { get; set; } + [JsonProperty("privacy_level")] + public Optional PrivacyLevel { get; set; } + [JsonProperty("scheduled_start_time")] + public Optional StartTime { get; set; } + [JsonProperty("scheduled_end_time")] + public Optional EndTime { get; set; } + [JsonProperty("description")] + public Optional Description { get; set; } + [JsonProperty("entity_type")] + public Optional Type { get; set; } + [JsonProperty("status")] + public Optional Status { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Rest/ModifyGuildWidgetParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyGuildWidgetParams.cs index 506f1dfbb..2e5658d51 100644 --- a/src/Discord.Net.Rest/API/Rest/ModifyGuildWidgetParams.cs +++ b/src/Discord.Net.Rest/API/Rest/ModifyGuildWidgetParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest diff --git a/src/Discord.Net.Rest/API/Rest/ModifyInteractionResponseParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyInteractionResponseParams.cs new file mode 100644 index 000000000..a2c7cbee6 --- /dev/null +++ b/src/Discord.Net.Rest/API/Rest/ModifyInteractionResponseParams.cs @@ -0,0 +1,22 @@ +using Newtonsoft.Json; + +namespace Discord.API.Rest +{ + internal class ModifyInteractionResponseParams + { + [JsonProperty("content")] + public Optional Content { get; set; } + + [JsonProperty("embeds")] + public Optional Embeds { get; set; } + + [JsonProperty("allowed_mentions")] + public Optional AllowedMentions { get; set; } + + [JsonProperty("components")] + public Optional Components { get; set; } + + [JsonProperty("flags")] + public Optional Flags { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Rest/ModifyMessageParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyMessageParams.cs index 3752df3a2..3dba45a5b 100644 --- a/src/Discord.Net.Rest/API/Rest/ModifyMessageParams.cs +++ b/src/Discord.Net.Rest/API/Rest/ModifyMessageParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest @@ -8,8 +7,10 @@ namespace Discord.API.Rest { [JsonProperty("content")] public Optional Content { get; set; } - [JsonProperty("embed")] - public Optional Embed { get; set; } + [JsonProperty("embeds")] + public Optional Embeds { get; set; } + [JsonProperty("components")] + public Optional Components { get; set; } [JsonProperty("flags")] public Optional Flags { get; set; } [JsonProperty("allowed_mentions")] diff --git a/src/Discord.Net.Rest/API/Rest/ModifyStageInstanceParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyStageInstanceParams.cs new file mode 100644 index 000000000..c09d8f216 --- /dev/null +++ b/src/Discord.Net.Rest/API/Rest/ModifyStageInstanceParams.cs @@ -0,0 +1,13 @@ +using Newtonsoft.Json; + +namespace Discord.API.Rest +{ + internal class ModifyStageInstanceParams + { + [JsonProperty("topic")] + public Optional Topic { get; set; } + + [JsonProperty("privacy_level")] + public Optional PrivacyLevel { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Rest/ModifyStickerParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyStickerParams.cs new file mode 100644 index 000000000..bd538c72e --- /dev/null +++ b/src/Discord.Net.Rest/API/Rest/ModifyStickerParams.cs @@ -0,0 +1,14 @@ +using Newtonsoft.Json; + +namespace Discord.API.Rest +{ + internal class ModifyStickerParams + { + [JsonProperty("name")] + public Optional Name { get; set; } + [JsonProperty("description")] + public Optional Description { get; set; } + [JsonProperty("tags")] + public Optional Tags { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Rest/ModifyTextChannelParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyTextChannelParams.cs index 94f149fc1..409d90c3f 100644 --- a/src/Discord.Net.Rest/API/Rest/ModifyTextChannelParams.cs +++ b/src/Discord.Net.Rest/API/Rest/ModifyTextChannelParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest diff --git a/src/Discord.Net.Rest/API/Rest/ModifyThreadParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyThreadParams.cs new file mode 100644 index 000000000..8c9216c3f --- /dev/null +++ b/src/Discord.Net.Rest/API/Rest/ModifyThreadParams.cs @@ -0,0 +1,22 @@ +using Newtonsoft.Json; + +namespace Discord.API.Rest +{ + internal class ModifyThreadParams + { + [JsonProperty("name")] + public Optional Name { get; set; } + + [JsonProperty("archived")] + public Optional Archived { get; set; } + + [JsonProperty("auto_archive_duration")] + public Optional AutoArchiveDuration { get; set; } + + [JsonProperty("locked")] + public Optional Locked { get; set; } + + [JsonProperty("rate_limit_per_user")] + public Optional Slowmode { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Rest/ModifyVoiceChannelParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyVoiceChannelParams.cs index ce36eb11f..2f8cacc69 100644 --- a/src/Discord.Net.Rest/API/Rest/ModifyVoiceChannelParams.cs +++ b/src/Discord.Net.Rest/API/Rest/ModifyVoiceChannelParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest @@ -10,5 +9,7 @@ namespace Discord.API.Rest public Optional Bitrate { get; set; } [JsonProperty("user_limit")] public Optional UserLimit { get; set; } + [JsonProperty("rtc_region")] + public Optional RTCRegion { get; set; } } } diff --git a/src/Discord.Net.Rest/API/Rest/ModifyVoiceStateParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyVoiceStateParams.cs new file mode 100644 index 000000000..1ff0f3e08 --- /dev/null +++ b/src/Discord.Net.Rest/API/Rest/ModifyVoiceStateParams.cs @@ -0,0 +1,17 @@ +using Newtonsoft.Json; +using System; + +namespace Discord.API.Rest +{ + internal class ModifyVoiceStateParams + { + [JsonProperty("channel_id")] + public ulong ChannelId { get; set; } + + [JsonProperty("suppress")] + public Optional Suppressed { get; set; } + + [JsonProperty("request_to_speak_timestamp")] + public Optional RequestToSpeakTimestamp { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Rest/ModifyWebhookMessageParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyWebhookMessageParams.cs index ba8fcbb4e..e73efaf36 100644 --- a/src/Discord.Net.Rest/API/Rest/ModifyWebhookMessageParams.cs +++ b/src/Discord.Net.Rest/API/Rest/ModifyWebhookMessageParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest @@ -12,5 +11,7 @@ namespace Discord.API.Rest public Optional Embeds { get; set; } [JsonProperty("allowed_mentions")] public Optional AllowedMentions { get; set; } + [JsonProperty("components")] + public Optional Components { get; set; } } } diff --git a/src/Discord.Net.Rest/API/Rest/ModifyWebhookParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyWebhookParams.cs index 0f2d6e33b..2e4e6a4c4 100644 --- a/src/Discord.Net.Rest/API/Rest/ModifyWebhookParams.cs +++ b/src/Discord.Net.Rest/API/Rest/ModifyWebhookParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Rest diff --git a/src/Discord.Net.Rest/API/Rest/SearchGuildMembersParams.cs b/src/Discord.Net.Rest/API/Rest/SearchGuildMembersParams.cs index 7c933ff82..56b3595fa 100644 --- a/src/Discord.Net.Rest/API/Rest/SearchGuildMembersParams.cs +++ b/src/Discord.Net.Rest/API/Rest/SearchGuildMembersParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 namespace Discord.API.Rest { internal class SearchGuildMembersParams diff --git a/src/Discord.Net.Rest/API/Rest/StartThreadParams.cs b/src/Discord.Net.Rest/API/Rest/StartThreadParams.cs new file mode 100644 index 000000000..a13161cd4 --- /dev/null +++ b/src/Discord.Net.Rest/API/Rest/StartThreadParams.cs @@ -0,0 +1,22 @@ +using Newtonsoft.Json; + +namespace Discord.API.Rest +{ + internal class StartThreadParams + { + [JsonProperty("name")] + public string Name { get; set; } + + [JsonProperty("auto_archive_duration")] + public ThreadArchiveDuration Duration { get; set; } + + [JsonProperty("type")] + public ThreadType Type { get; set; } + + [JsonProperty("invitable")] + public Optional Invitable { get; set; } + + [JsonProperty("rate_limit_per_user")] + public Optional Ratelimit { get; set; } + } +} diff --git a/src/Discord.Net.Rest/API/Rest/UploadFileParams.cs b/src/Discord.Net.Rest/API/Rest/UploadFileParams.cs index dd442a6de..6340c3e38 100644 --- a/src/Discord.Net.Rest/API/Rest/UploadFileParams.cs +++ b/src/Discord.Net.Rest/API/Rest/UploadFileParams.cs @@ -1,9 +1,9 @@ -#pragma warning disable CS1591 using Discord.Net.Converters; using Discord.Net.Rest; using Newtonsoft.Json; using System.Collections.Generic; using System.IO; +using System.Linq; using System.Text; namespace Discord.API.Rest @@ -12,30 +12,27 @@ namespace Discord.API.Rest { private static JsonSerializer _serializer = new JsonSerializer { ContractResolver = new DiscordContractResolver() }; - public Stream File { get; } + public FileAttachment[] Files { get; } - public Optional Filename { get; set; } public Optional Content { get; set; } public Optional Nonce { get; set; } public Optional IsTTS { get; set; } - public Optional Embed { get; set; } + public Optional Embeds { get; set; } public Optional AllowedMentions { get; set; } public Optional MessageReference { get; set; } - public bool IsSpoiler { get; set; } = false; + public Optional MessageComponent { get; set; } + public Optional Flags { get; set; } + public Optional Stickers { get; set; } - public UploadFileParams(Stream file) + public UploadFileParams(params Discord.FileAttachment[] attachments) { - File = file; + Files = attachments; } public IReadOnlyDictionary ToDictionary() { var d = new Dictionary(); - var filename = Filename.GetValueOrDefault("unknown.dat"); - if (IsSpoiler && !filename.StartsWith(AttachmentExtensions.SpoilerPrefix)) - filename = filename.Insert(0, AttachmentExtensions.SpoilerPrefix); - d["file"] = new MultipartFile(File, filename); - + var payload = new Dictionary(); if (Content.IsSpecified) payload["content"] = Content.Value; @@ -43,14 +40,39 @@ namespace Discord.API.Rest payload["tts"] = IsTTS.Value.ToString(); if (Nonce.IsSpecified) payload["nonce"] = Nonce.Value; - if (Embed.IsSpecified) - payload["embed"] = Embed.Value; + if (Embeds.IsSpecified) + payload["embeds"] = Embeds.Value; if (AllowedMentions.IsSpecified) payload["allowed_mentions"] = AllowedMentions.Value; - if (IsSpoiler) - payload["hasSpoiler"] = IsSpoiler.ToString(); + if (MessageComponent.IsSpecified) + payload["components"] = MessageComponent.Value; if (MessageReference.IsSpecified) payload["message_reference"] = MessageReference.Value; + if (Stickers.IsSpecified) + payload["sticker_ids"] = Stickers.Value; + if (Flags.IsSpecified) + payload["flags"] = Flags; + + List attachments = new(); + + for(int n = 0; n != Files.Length; n++) + { + var attachment = Files[n]; + + var filename = attachment.FileName ?? "unknown.dat"; + if (attachment.IsSpoiler && !filename.StartsWith(AttachmentExtensions.SpoilerPrefix)) + filename = filename.Insert(0, AttachmentExtensions.SpoilerPrefix); + d[$"files[{n}]"] = new MultipartFile(attachment.Stream, filename); + + attachments.Add(new + { + id = (ulong)n, + filename = filename, + description = attachment.Description ?? Optional.Unspecified + }); + } + + payload["attachments"] = attachments; var json = new StringBuilder(); using (var text = new StringWriter(json)) diff --git a/src/Discord.Net.Rest/API/Rest/UploadWebhookFileParams.cs b/src/Discord.Net.Rest/API/Rest/UploadWebhookFileParams.cs index 8da7681ae..d925e0108 100644 --- a/src/Discord.Net.Rest/API/Rest/UploadWebhookFileParams.cs +++ b/src/Discord.Net.Rest/API/Rest/UploadWebhookFileParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using System.Collections.Generic; using System.IO; using System.Text; diff --git a/src/Discord.Net.Rest/BaseDiscordClient.cs b/src/Discord.Net.Rest/BaseDiscordClient.cs index 68589a4f1..525875232 100644 --- a/src/Discord.Net.Rest/BaseDiscordClient.cs +++ b/src/Discord.Net.Rest/BaseDiscordClient.cs @@ -10,6 +10,7 @@ namespace Discord.Rest { public abstract class BaseDiscordClient : IDiscordClient { + #region BaseDiscordClient public event Func Log { add { _logEvent.Add(value); } remove { _logEvent.Remove(value); } } internal readonly AsyncEvent> _logEvent = new AsyncEvent>(); @@ -34,6 +35,7 @@ namespace Discord.Rest public ISelfUser CurrentUser { get; protected set; } /// public TokenType TokenType => ApiClient.AuthTokenType; + internal bool UseInteractionSnowflakeDate { get; private set; } /// Creates a new REST-only Discord client. internal BaseDiscordClient(DiscordRestConfig config, API.DiscordRestApiClient client) @@ -46,6 +48,8 @@ namespace Discord.Rest _restLogger = LogManager.CreateLogger("Rest"); _isFirstLogin = config.DisplayInitialLog; + UseInteractionSnowflakeDate = config.UseInteractionSnowflakeDate; + ApiClient.RequestQueue.RateLimitTriggered += async (id, info, endpoint) => { if (info == null) @@ -155,8 +159,9 @@ namespace Discord.Rest /// public Task GetBotGatewayAsync(RequestOptions options = null) => ClientHelper.GetBotGatewayAsync(this, options); + #endregion - //IDiscordClient + #region IDiscordClient /// ConnectionState IDiscordClient.ConnectionState => ConnectionState.Disconnected; /// @@ -216,11 +221,25 @@ namespace Discord.Rest Task IDiscordClient.GetWebhookAsync(ulong id, RequestOptions options) => Task.FromResult(null); + /// + Task IDiscordClient.GetGlobalApplicationCommandAsync(ulong id, RequestOptions options) + => Task.FromResult(null); + + /// + Task> IDiscordClient.GetGlobalApplicationCommandsAsync(RequestOptions options) + => Task.FromResult>(ImmutableArray.Create()); + Task IDiscordClient.CreateGlobalApplicationCommand(ApplicationCommandProperties properties, RequestOptions options) + => Task.FromResult(null); + Task> IDiscordClient.BulkOverwriteGlobalApplicationCommand(ApplicationCommandProperties[] properties, + RequestOptions options) + => Task.FromResult>(ImmutableArray.Create()); + /// Task IDiscordClient.StartAsync() => Task.Delay(0); /// Task IDiscordClient.StopAsync() => Task.Delay(0); + #endregion } } diff --git a/src/Discord.Net.Rest/ClientHelper.cs b/src/Discord.Net.Rest/ClientHelper.cs index 3ff8212fe..5debea27e 100644 --- a/src/Discord.Net.Rest/ClientHelper.cs +++ b/src/Discord.Net.Rest/ClientHelper.cs @@ -10,7 +10,7 @@ namespace Discord.Rest { internal static class ClientHelper { - //Applications + #region Applications public static async Task GetApplicationInfoAsync(BaseDiscordClient client, RequestOptions options) { var model = await client.ApiClient.GetMyApplicationAsync(options).ConfigureAwait(false); @@ -193,9 +193,76 @@ namespace Discord.Rest } }; } + + public static async Task> GetGlobalApplicationCommandsAsync(BaseDiscordClient client, + RequestOptions options = null) + { + var response = await client.ApiClient.GetGlobalApplicationCommandsAsync(options).ConfigureAwait(false); + + if (!response.Any()) + return Array.Empty(); + + return response.Select(x => RestGlobalCommand.Create(client, x)).ToArray(); + } + public static async Task GetGlobalApplicationCommandAsync(BaseDiscordClient client, ulong id, + RequestOptions options = null) + { + var model = await client.ApiClient.GetGlobalApplicationCommandAsync(id, options); + + return model != null ? RestGlobalCommand.Create(client, model) : null; + } + + public static async Task> GetGuildApplicationCommandsAsync(BaseDiscordClient client, ulong guildId, + RequestOptions options = null) + { + var response = await client.ApiClient.GetGuildApplicationCommandsAsync(guildId, options).ConfigureAwait(false); + + if (!response.Any()) + return ImmutableArray.Create(); + + return response.Select(x => RestGuildCommand.Create(client, x, guildId)).ToImmutableArray(); + } + public static async Task GetGuildApplicationCommandAsync(BaseDiscordClient client, ulong id, ulong guildId, + RequestOptions options = null) + { + var model = await client.ApiClient.GetGuildApplicationCommandAsync(guildId, id, options); + + return model != null ? RestGuildCommand.Create(client, model, guildId) : null; + } + public static async Task CreateGuildApplicationCommandAsync(BaseDiscordClient client, ulong guildId, ApplicationCommandProperties properties, + RequestOptions options = null) + { + var model = await InteractionHelper.CreateGuildCommandAsync(client, guildId, properties, options); + + return RestGuildCommand.Create(client, model, guildId); + } + public static async Task CreateGlobalApplicationCommandAsync(BaseDiscordClient client, ApplicationCommandProperties properties, + RequestOptions options = null) + { + var model = await InteractionHelper.CreateGlobalCommandAsync(client, properties, options); + + return RestGlobalCommand.Create(client, model); + } + public static async Task> BulkOverwriteGlobalApplicationCommandAsync(BaseDiscordClient client, ApplicationCommandProperties[] properties, + RequestOptions options = null) + { + var models = await InteractionHelper.BulkOverwriteGlobalCommandsAsync(client, properties, options); + + return models.Select(x => RestGlobalCommand.Create(client, x)).ToImmutableArray(); + } + public static async Task> BulkOverwriteGuildApplicationCommandAsync(BaseDiscordClient client, ulong guildId, + ApplicationCommandProperties[] properties, RequestOptions options = null) + { + var models = await InteractionHelper.BulkOverwriteGuildCommandsAsync(client, guildId, properties, options); + + return models.Select(x => RestGuildCommand.Create(client, x, guildId)).ToImmutableArray(); + } + public static Task AddRoleAsync(BaseDiscordClient client, ulong guildId, ulong userId, ulong roleId, RequestOptions options = null) => client.ApiClient.AddRoleAsync(guildId, userId, roleId, options); + public static Task RemoveRoleAsync(BaseDiscordClient client, ulong guildId, ulong userId, ulong roleId, RequestOptions options = null) => client.ApiClient.RemoveRoleAsync(guildId, userId, roleId, options); + #endregion } } diff --git a/src/Discord.Net.Rest/DiscordRestApiClient.cs b/src/Discord.Net.Rest/DiscordRestApiClient.cs index d7978db5c..abe059c64 100644 --- a/src/Discord.Net.Rest/DiscordRestApiClient.cs +++ b/src/Discord.Net.Rest/DiscordRestApiClient.cs @@ -1,5 +1,4 @@ -#pragma warning disable CS1591 using Discord.API.Rest; using Discord.Net; using Discord.Net.Converters; @@ -24,6 +23,7 @@ namespace Discord.API { internal class DiscordRestApiClient : IDisposable { + #region DiscordRestApiClient private static readonly ConcurrentDictionary> _bucketIdGenerators = new ConcurrentDictionary>(); public event Func SentRequest { add { _sentRequestEvent.Add(value); } remove { _sentRequestEvent.Remove(value); } } @@ -45,8 +45,7 @@ namespace Discord.API internal string AuthToken { get; private set; } internal IRestClient RestClient { get; private set; } internal ulong? CurrentUserId { get; set; } - internal bool UseSystemClock { get; set; } - + internal bool UseSystemClock { get; set; } internal JsonSerializer Serializer => _serializer; /// Unknown OAuth token type. @@ -57,7 +56,7 @@ namespace Discord.API UserAgent = userAgent; DefaultRetryMode = defaultRetryMode; _serializer = serializer ?? new JsonSerializer { ContractResolver = new DiscordContractResolver() }; - UseSystemClock = useSystemClock; + UseSystemClock = useSystemClock; RequestQueue = new RequestQueue(); _stateLock = new SemaphoreSlim(1, 1); @@ -168,15 +167,16 @@ namespace Discord.API internal virtual Task ConnectInternalAsync() => Task.Delay(0); internal virtual Task DisconnectInternalAsync(Exception ex = null) => Task.Delay(0); + #endregion - //Core + #region Core internal Task SendAsync(string method, Expression> endpointExpr, BucketIds ids, ClientBucketType clientBucket = ClientBucketType.Unbucketed, RequestOptions options = null, [CallerMemberName] string funcName = null) => SendAsync(method, GetEndpoint(endpointExpr), GetBucketId(method, ids, endpointExpr, funcName), clientBucket, options); public async Task SendAsync(string method, string endpoint, BucketId bucketId = null, ClientBucketType clientBucket = ClientBucketType.Unbucketed, RequestOptions options = null) { - options = options ?? new RequestOptions(); + options ??= new RequestOptions(); options.HeaderOnly = true; options.BucketId = bucketId; @@ -190,7 +190,7 @@ namespace Discord.API public async Task SendJsonAsync(string method, string endpoint, object payload, BucketId bucketId = null, ClientBucketType clientBucket = ClientBucketType.Unbucketed, RequestOptions options = null) { - options = options ?? new RequestOptions(); + options ??= new RequestOptions(); options.HeaderOnly = true; options.BucketId = bucketId; @@ -205,7 +205,7 @@ namespace Discord.API public async Task SendMultipartAsync(string method, string endpoint, IReadOnlyDictionary multipartArgs, BucketId bucketId = null, ClientBucketType clientBucket = ClientBucketType.Unbucketed, RequestOptions options = null) { - options = options ?? new RequestOptions(); + options ??= new RequestOptions(); options.HeaderOnly = true; options.BucketId = bucketId; @@ -219,7 +219,7 @@ namespace Discord.API public async Task SendAsync(string method, string endpoint, BucketId bucketId = null, ClientBucketType clientBucket = ClientBucketType.Unbucketed, RequestOptions options = null) where TResponse : class { - options = options ?? new RequestOptions(); + options ??= new RequestOptions(); options.BucketId = bucketId; var request = new RestRequest(RestClient, method, endpoint, options); @@ -232,10 +232,11 @@ namespace Discord.API public async Task SendJsonAsync(string method, string endpoint, object payload, BucketId bucketId = null, ClientBucketType clientBucket = ClientBucketType.Unbucketed, RequestOptions options = null) where TResponse : class { - options = options ?? new RequestOptions(); + options ??= new RequestOptions(); options.BucketId = bucketId; string json = payload != null ? SerializeJson(payload) : null; + var request = new JsonRestRequest(RestClient, method, endpoint, json, options); return DeserializeJson(await SendInternalAsync(method, endpoint, request).ConfigureAwait(false)); } @@ -246,7 +247,7 @@ namespace Discord.API public async Task SendMultipartAsync(string method, string endpoint, IReadOnlyDictionary multipartArgs, BucketId bucketId = null, ClientBucketType clientBucket = ClientBucketType.Unbucketed, RequestOptions options = null) { - options = options ?? new RequestOptions(); + options ??= new RequestOptions(); options.BucketId = bucketId; var request = new MultipartRestRequest(RestClient, method, endpoint, multipartArgs, options); @@ -259,8 +260,8 @@ namespace Discord.API CheckState(); if (request.Options.RetryMode == null) request.Options.RetryMode = DefaultRetryMode; - if (request.Options.UseSystemClock == null) - request.Options.UseSystemClock = UseSystemClock; + if (request.Options.UseSystemClock == null) + request.Options.UseSystemClock = UseSystemClock; var stopwatch = Stopwatch.StartNew(); var responseStream = await RequestQueue.SendAsync(request).ConfigureAwait(false); @@ -271,15 +272,17 @@ namespace Discord.API return responseStream; } + #endregion - //Auth + #region Auth public async Task ValidateTokenAsync(RequestOptions options = null) { options = RequestOptions.CreateOrClone(options); await SendAsync("GET", () => "auth/login", new BucketIds(), options: options).ConfigureAwait(false); } + #endregion - //Gateway + #region Gateway public async Task GetGatewayAsync(RequestOptions options = null) { options = RequestOptions.CreateOrClone(options); @@ -290,8 +293,9 @@ namespace Discord.API options = RequestOptions.CreateOrClone(options); return await SendAsync("GET", () => "gateway/bot", new BucketIds(), options: options).ConfigureAwait(false); } + #endregion - //Channels + #region Channels public async Task GetChannelAsync(ulong channelId, RequestOptions options = null) { Preconditions.NotEqual(channelId, 0, nameof(channelId)); @@ -316,6 +320,7 @@ namespace Discord.API var model = await SendAsync("GET", () => $"channels/{channelId}", ids, options: options).ConfigureAwait(false); if (!model.GuildId.IsSpecified || model.GuildId.Value != guildId) return null; + return model; } catch (HttpException ex) when (ex.HttpCode == HttpStatusCode.NotFound) { return null; } @@ -334,11 +339,16 @@ namespace Discord.API Preconditions.NotNull(args, nameof(args)); Preconditions.GreaterThan(args.Bitrate, 0, nameof(args.Bitrate)); Preconditions.NotNullOrWhitespace(args.Name, nameof(args.Name)); + Preconditions.AtMost(args.Name.Length, 100, nameof(args.Name)); + if (args.Topic.IsSpecified) + Preconditions.AtMost(args.Topic.Value.Length, 1024, nameof(args.Name)); + options = RequestOptions.CreateOrClone(options); var ids = new BucketIds(guildId: guildId); return await SendJsonAsync("POST", () => $"guilds/{guildId}/channels", args, ids, options: options).ConfigureAwait(false); } + public async Task DeleteChannelAsync(ulong channelId, RequestOptions options = null) { Preconditions.NotEqual(channelId, 0, nameof(channelId)); @@ -362,18 +372,29 @@ namespace Discord.API Preconditions.NotEqual(channelId, 0, nameof(channelId)); Preconditions.NotNull(args, nameof(args)); Preconditions.AtLeast(args.Position, 0, nameof(args.Position)); - Preconditions.NotNullOrEmpty(args.Name, nameof(args.Name)); + Preconditions.NotNullOrWhitespace(args.Name, nameof(args.Name)); + + if(args.Name.IsSpecified) + Preconditions.AtMost(args.Name.Value.Length, 100, nameof(args.Name)); + options = RequestOptions.CreateOrClone(options); var ids = new BucketIds(channelId: channelId); return await SendJsonAsync("PATCH", () => $"channels/{channelId}", args, ids, options: options).ConfigureAwait(false); } + public async Task ModifyGuildChannelAsync(ulong channelId, Rest.ModifyTextChannelParams args, RequestOptions options = null) { Preconditions.NotEqual(channelId, 0, nameof(channelId)); Preconditions.NotNull(args, nameof(args)); Preconditions.AtLeast(args.Position, 0, nameof(args.Position)); - Preconditions.NotNullOrEmpty(args.Name, nameof(args.Name)); + Preconditions.NotNullOrWhitespace(args.Name, nameof(args.Name)); + + if(args.Name.IsSpecified) + Preconditions.AtMost(args.Name.Value.Length, 100, nameof(args.Name)); + if(args.Topic.IsSpecified) + Preconditions.AtMost(args.Topic.Value.Length, 1024, nameof(args.Name)); + Preconditions.AtLeast(args.SlowModeInterval, 0, nameof(args.SlowModeInterval)); Preconditions.AtMost(args.SlowModeInterval, 21600, nameof(args.SlowModeInterval)); options = RequestOptions.CreateOrClone(options); @@ -381,6 +402,7 @@ namespace Discord.API var ids = new BucketIds(channelId: channelId); return await SendJsonAsync("PATCH", () => $"channels/{channelId}", args, ids, options: options).ConfigureAwait(false); } + public async Task ModifyGuildChannelAsync(ulong channelId, Rest.ModifyVoiceChannelParams args, RequestOptions options = null) { Preconditions.NotEqual(channelId, 0, nameof(channelId)); @@ -388,12 +410,13 @@ namespace Discord.API Preconditions.AtLeast(args.Bitrate, 8000, nameof(args.Bitrate)); Preconditions.AtLeast(args.UserLimit, 0, nameof(args.UserLimit)); Preconditions.AtLeast(args.Position, 0, nameof(args.Position)); - Preconditions.NotNullOrEmpty(args.Name, nameof(args.Name)); + Preconditions.NotNullOrWhitespace(args.Name, nameof(args.Name)); options = RequestOptions.CreateOrClone(options); var ids = new BucketIds(channelId: channelId); return await SendJsonAsync("PATCH", () => $"channels/{channelId}", args, ids, options: options).ConfigureAwait(false); } + public async Task ModifyGuildChannelsAsync(ulong guildId, IEnumerable args, RequestOptions options = null) { Preconditions.NotEqual(guildId, 0, nameof(guildId)); @@ -414,6 +437,266 @@ namespace Discord.API break; } } + #endregion + + #region Threads + public async Task ModifyThreadAsync(ulong channelId, ModifyThreadParams args, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + + var bucket = new BucketIds(channelId: channelId); + + return await SendJsonAsync("PATCH", () => $"channels/{channelId}", args, bucket, options: options); + } + + public async Task StartThreadAsync(ulong channelId, ulong messageId, StartThreadParams args, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + Preconditions.NotEqual(messageId, 0, nameof(messageId)); + + options = RequestOptions.CreateOrClone(options); + + var bucket = new BucketIds(0, channelId); + + return await SendJsonAsync("POST", () => $"channels/{channelId}/messages/{messageId}/threads", args, bucket, options: options).ConfigureAwait(false); + } + + public async Task StartThreadAsync(ulong channelId, StartThreadParams args, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + + options = RequestOptions.CreateOrClone(options); + + var bucket = new BucketIds(channelId: channelId); + + return await SendJsonAsync("POST", () => $"channels/{channelId}/threads", args, bucket, options: options).ConfigureAwait(false); + } + + public async Task JoinThreadAsync(ulong channelId, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + + options = RequestOptions.CreateOrClone(options); + + var bucket = new BucketIds(channelId: channelId); + + await SendAsync("PUT", () => $"channels/{channelId}/thread-members/@me", bucket, options: options).ConfigureAwait(false); + } + + public async Task AddThreadMemberAsync(ulong channelId, ulong userId, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + Preconditions.NotEqual(userId, 0, nameof(channelId)); + + options = RequestOptions.CreateOrClone(options); + + var bucket = new BucketIds(channelId: channelId); + + await SendAsync("PUT", () => $"channels/{channelId}/thread-members/{userId}", bucket, options: options).ConfigureAwait(false); + } + + public async Task LeaveThreadAsync(ulong channelId, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + + options = RequestOptions.CreateOrClone(options); + + var bucket = new BucketIds(channelId: channelId); + + await SendAsync("DELETE", () => $"channels/{channelId}/thread-members/@me", bucket, options: options).ConfigureAwait(false); + } + + public async Task RemoveThreadMemberAsync(ulong channelId, ulong userId, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + Preconditions.NotEqual(userId, 0, nameof(channelId)); + + options = RequestOptions.CreateOrClone(options); + var bucket = new BucketIds(channelId: channelId); + + await SendAsync("DELETE", () => $"channels/{channelId}/thread-members/{userId}", bucket, options: options).ConfigureAwait(false); + } + + public async Task ListThreadMembersAsync(ulong channelId, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + + options = RequestOptions.CreateOrClone(options); + + var bucket = new BucketIds(channelId: channelId); + + return await SendAsync("GET", () => $"channels/{channelId}/thread-members", bucket, options: options).ConfigureAwait(false); + } + + public async Task GetThreadMemberAsync(ulong channelId, ulong userId, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + Preconditions.NotEqual(userId, 0, nameof(userId)); + + options = RequestOptions.CreateOrClone(options); + + var bucket = new BucketIds(channelId: channelId); + + return await SendAsync("GET", () => $"channels/{channelId}/thread-members/{userId}", bucket, options: options).ConfigureAwait(false); + } + + public async Task GetActiveThreadsAsync(ulong channelId, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + + options = RequestOptions.CreateOrClone(options); + + var bucket = new BucketIds(channelId: channelId); + + return await SendAsync("GET", () => $"channels/{channelId}/threads/active", bucket, options: options); + } + + public async Task GetPublicArchivedThreadsAsync(ulong channelId, DateTimeOffset? before = null, int? limit = null, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + + options = RequestOptions.CreateOrClone(options); + + var bucket = new BucketIds(channelId: channelId); + + string query = ""; + + if (limit.HasValue) + { + query = $"?before={before.GetValueOrDefault(DateTimeOffset.UtcNow).ToString("O")}&limit={limit.Value}"; + } + else if (before.HasValue) + { + query = $"?before={before.Value.ToString("O")}"; + } + + return await SendAsync("GET", () => $"channels/{channelId}/threads/archived/public{query}", bucket, options: options); + } + + public async Task GetPrivateArchivedThreadsAsync(ulong channelId, DateTimeOffset? before = null, int? limit = null, + RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + + options = RequestOptions.CreateOrClone(options); + + var bucket = new BucketIds(channelId: channelId); + + string query = ""; + + if (limit.HasValue) + { + query = $"?before={before.GetValueOrDefault(DateTimeOffset.UtcNow).ToString("O")}&limit={limit.Value}"; + } + else if (before.HasValue) + { + query = $"?before={before.Value.ToString("O")}"; + } + + return await SendAsync("GET", () => $"channels/{channelId}/threads/archived/private{query}", bucket, options: options); + } + + public async Task GetJoinedPrivateArchivedThreadsAsync(ulong channelId, DateTimeOffset? before = null, int? limit = null, + RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + + options = RequestOptions.CreateOrClone(options); + + var bucket = new BucketIds(channelId: channelId); + + string query = ""; + + if (limit.HasValue) + { + query = $"?before={SnowflakeUtils.ToSnowflake(before.GetValueOrDefault(DateTimeOffset.UtcNow))}&limit={limit.Value}"; + } + else if (before.HasValue) + { + query = $"?before={before.Value.ToString("O")}"; + } + + return await SendAsync("GET", () => $"channels/{channelId}/users/@me/threads/archived/private{query}", bucket, options: options); + } + #endregion + + #region Stage + public async Task CreateStageInstanceAsync(CreateStageInstanceParams args, RequestOptions options = null) + { + options = RequestOptions.CreateOrClone(options); + + var bucket = new BucketIds(); + + return await SendJsonAsync("POST", () => $"stage-instances", args, bucket, options: options).ConfigureAwait(false); + } + + public async Task ModifyStageInstanceAsync(ulong channelId, ModifyStageInstanceParams args, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + + options = RequestOptions.CreateOrClone(options); + + var bucket = new BucketIds(channelId: channelId); + + return await SendJsonAsync("PATCH", () => $"stage-instances/{channelId}", args, bucket, options: options).ConfigureAwait(false); + } + + public async Task DeleteStageInstanceAsync(ulong channelId, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + + options = RequestOptions.CreateOrClone(options); + + try + { + await SendAsync("DELETE", $"stage-instances/{channelId}", options: options).ConfigureAwait(false); + } + catch (HttpException httpEx) when (httpEx.HttpCode == HttpStatusCode.NotFound) { } + } + + public async Task GetStageInstanceAsync(ulong channelId, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + + options = RequestOptions.CreateOrClone(options); + + var bucket = new BucketIds(channelId: channelId); + + try + { + return await SendAsync("POST", () => $"stage-instances/{channelId}", bucket, options: options).ConfigureAwait(false); + } + catch (HttpException httpEx) when (httpEx.HttpCode == HttpStatusCode.NotFound) + { + return null; + } + } + + public async Task ModifyMyVoiceState(ulong guildId, ModifyVoiceStateParams args, RequestOptions options = null) + { + Preconditions.NotEqual(guildId, 0, nameof(guildId)); + + options = RequestOptions.CreateOrClone(options); + + var bucket = new BucketIds(); + + await SendJsonAsync("PATCH", () => $"guilds/{guildId}/voice-states/@me", args, bucket, options: options).ConfigureAwait(false); + } + + public async Task ModifyUserVoiceState(ulong guildId, ulong userId, ModifyVoiceStateParams args, RequestOptions options = null) + { + Preconditions.NotEqual(guildId, 0, nameof(guildId)); + Preconditions.NotEqual(userId, 0, nameof(userId)); + + options = RequestOptions.CreateOrClone(options); + + var bucket = new BucketIds(); + + await SendJsonAsync("PATCH", () => $"guilds/{guildId}/voice-states/{userId}", args, bucket, options: options).ConfigureAwait(false); + } + #endregion + + #region Roles public async Task AddRoleAsync(ulong guildId, ulong userId, ulong roleId, RequestOptions options = null) { Preconditions.NotEqual(guildId, 0, nameof(guildId)); @@ -436,8 +719,9 @@ namespace Discord.API var ids = new BucketIds(guildId: guildId); await SendAsync("DELETE", () => $"guilds/{guildId}/members/{userId}/roles/{roleId}", ids, options: options).ConfigureAwait(false); } + #endregion - //Channel Messages + #region Channel Messages public async Task GetChannelMessageAsync(ulong channelId, ulong messageId, RequestOptions options = null) { Preconditions.NotEqual(channelId, 0, nameof(channelId)); @@ -461,22 +745,12 @@ namespace Discord.API int limit = args.Limit.GetValueOrDefault(DiscordConfig.MaxMessagesPerBatch); ulong? relativeId = args.RelativeMessageId.IsSpecified ? args.RelativeMessageId.Value : (ulong?)null; - string relativeDir; - - switch (args.RelativeDirection.GetValueOrDefault(Direction.Before)) + var relativeDir = args.RelativeDirection.GetValueOrDefault(Direction.Before) switch { - case Direction.Before: - default: - relativeDir = "before"; - break; - case Direction.After: - relativeDir = "after"; - break; - case Direction.Around: - relativeDir = "around"; - break; - } - + Direction.After => "after", + Direction.Around => "around", + _ => "before", + }; var ids = new BucketIds(channelId: channelId); Expression> endpoint; if (relativeId != null) @@ -490,7 +764,7 @@ namespace Discord.API { Preconditions.NotNull(args, nameof(args)); Preconditions.NotEqual(channelId, 0, nameof(channelId)); - if (!args.Embed.IsSpecified || args.Embed.Value == null) + if ((!args.Embeds.IsSpecified || args.Embeds.Value == null || args.Embeds.Value.Length == 0) && (!args.Stickers.IsSpecified || args.Stickers.Value == null || args.Stickers.Value.Length == 0)) Preconditions.NotNullOrEmpty(args.Content, nameof(args.Content)); if (args.Content?.Length > DiscordConfig.MaxMessageSize) @@ -627,189 +901,518 @@ namespace Discord.API break; } } - /// Message content is too long, length must be less or equal to . - public async Task ModifyMessageAsync(ulong channelId, ulong messageId, Rest.ModifyMessageParams args, RequestOptions options = null) + /// Message content is too long, length must be less or equal to . + public async Task ModifyMessageAsync(ulong channelId, ulong messageId, Rest.ModifyMessageParams args, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + Preconditions.NotEqual(messageId, 0, nameof(messageId)); + Preconditions.NotNull(args, nameof(args)); + if (args.Content.IsSpecified && args.Content.Value?.Length > DiscordConfig.MaxMessageSize) + throw new ArgumentOutOfRangeException($"Message content is too long, length must be less or equal to {DiscordConfig.MaxMessageSize}.", nameof(args.Content)); + options = RequestOptions.CreateOrClone(options); + + var ids = new BucketIds(channelId: channelId); + return await SendJsonAsync("PATCH", () => $"channels/{channelId}/messages/{messageId}", args, ids, clientBucket: ClientBucketType.SendEdit, options: options).ConfigureAwait(false); + } + + public async Task ModifyMessageAsync(ulong channelId, ulong messageId, Rest.UploadFileParams args, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + Preconditions.NotEqual(messageId, 0, nameof(messageId)); + Preconditions.NotNull(args, nameof(args)); + if (args.Content.IsSpecified && args.Content.Value?.Length > DiscordConfig.MaxMessageSize) + throw new ArgumentOutOfRangeException($"Message content is too long, length must be less or equal to {DiscordConfig.MaxMessageSize}.", nameof(args.Content)); + options = RequestOptions.CreateOrClone(options); + + var ids = new BucketIds(channelId: channelId); + return await SendMultipartAsync("PATCH", () => $"channels/{channelId}/messages/{messageId}", args.ToDictionary(), ids, clientBucket: ClientBucketType.SendEdit, options: options).ConfigureAwait(false); + } + #endregion + + #region Stickers, Reactions, Crosspost, and Acks + public async Task GetStickerAsync(ulong id, RequestOptions options = null) + { + Preconditions.NotEqual(id, 0, nameof(id)); + + options = RequestOptions.CreateOrClone(options); + + return await NullifyNotFound(SendAsync("GET", () => $"stickers/{id}", new BucketIds(), options: options)).ConfigureAwait(false); + } + public async Task GetGuildStickerAsync(ulong guildId, ulong id, RequestOptions options = null) + { + Preconditions.NotEqual(id, 0, nameof(id)); + Preconditions.NotEqual(guildId, 0, nameof(guildId)); + + options = RequestOptions.CreateOrClone(options); + + return await NullifyNotFound(SendAsync("GET", () => $"guilds/{guildId}/stickers/{id}", new BucketIds(guildId), options: options)).ConfigureAwait(false); + } + public async Task ListGuildStickersAsync(ulong guildId, RequestOptions options = null) + { + Preconditions.NotEqual(guildId, 0, nameof(guildId)); + + options = RequestOptions.CreateOrClone(options); + + return await SendAsync("GET", () => $"guilds/{guildId}/stickers", new BucketIds(guildId), options: options).ConfigureAwait(false); + } + public async Task ListNitroStickerPacksAsync(RequestOptions options = null) + { + options = RequestOptions.CreateOrClone(options); + + return await SendAsync("GET", () => $"sticker-packs", new BucketIds(), options: options).ConfigureAwait(false); + } + public async Task CreateGuildStickerAsync(CreateStickerParams args, ulong guildId, RequestOptions options = null) + { + Preconditions.NotNull(args, nameof(args)); + Preconditions.NotEqual(guildId, 0, nameof(guildId)); + + options = RequestOptions.CreateOrClone(options); + + return await SendMultipartAsync("POST", () => $"guilds/{guildId}/stickers", args.ToDictionary(), new BucketIds(guildId), options: options).ConfigureAwait(false); + } + public async Task ModifyStickerAsync(ModifyStickerParams args, ulong guildId, ulong stickerId, RequestOptions options = null) + { + Preconditions.NotNull(args, nameof(args)); + Preconditions.NotEqual(guildId, 0, nameof(guildId)); + Preconditions.NotEqual(stickerId, 0, nameof(stickerId)); + + options = RequestOptions.CreateOrClone(options); + + return await SendJsonAsync("PATCH", () => $"guilds/{guildId}/stickers/{stickerId}", args, new BucketIds(guildId), options: options).ConfigureAwait(false); + } + public async Task DeleteStickerAsync(ulong guildId, ulong stickerId, RequestOptions options = null) + { + Preconditions.NotEqual(guildId, 0, nameof(guildId)); + Preconditions.NotEqual(stickerId, 0, nameof(stickerId)); + + options = RequestOptions.CreateOrClone(options); + + await SendAsync("DELETE", () => $"guilds/{guildId}/stickers/{stickerId}", new BucketIds(guildId), options: options).ConfigureAwait(false); + } + + public async Task AddReactionAsync(ulong channelId, ulong messageId, string emoji, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + Preconditions.NotEqual(messageId, 0, nameof(messageId)); + Preconditions.NotNullOrWhitespace(emoji, nameof(emoji)); + + options = RequestOptions.CreateOrClone(options); + options.IsReactionBucket = true; + + var ids = new BucketIds(channelId: channelId); + + // @me is non-const to fool the ratelimiter, otherwise it will put add/remove in separate buckets + var me = "@me"; + await SendAsync("PUT", () => $"channels/{channelId}/messages/{messageId}/reactions/{emoji}/{me}", ids, options: options).ConfigureAwait(false); + } + public async Task RemoveReactionAsync(ulong channelId, ulong messageId, ulong userId, string emoji, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + Preconditions.NotEqual(messageId, 0, nameof(messageId)); + Preconditions.NotNullOrWhitespace(emoji, nameof(emoji)); + + options = RequestOptions.CreateOrClone(options); + options.IsReactionBucket = true; + + var ids = new BucketIds(channelId: channelId); + + var user = CurrentUserId.HasValue ? (userId == CurrentUserId.Value ? "@me" : userId.ToString()) : userId.ToString(); + await SendAsync("DELETE", () => $"channels/{channelId}/messages/{messageId}/reactions/{emoji}/{user}", ids, options: options).ConfigureAwait(false); + } + public async Task RemoveAllReactionsAsync(ulong channelId, ulong messageId, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + Preconditions.NotEqual(messageId, 0, nameof(messageId)); + + options = RequestOptions.CreateOrClone(options); + + var ids = new BucketIds(channelId: channelId); + + await SendAsync("DELETE", () => $"channels/{channelId}/messages/{messageId}/reactions", ids, options: options).ConfigureAwait(false); + } + public async Task RemoveAllReactionsForEmoteAsync(ulong channelId, ulong messageId, string emoji, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + Preconditions.NotEqual(messageId, 0, nameof(messageId)); + Preconditions.NotNullOrWhitespace(emoji, nameof(emoji)); + + options = RequestOptions.CreateOrClone(options); + + var ids = new BucketIds(channelId: channelId); + + await SendAsync("DELETE", () => $"channels/{channelId}/messages/{messageId}/reactions/{emoji}", ids, options: options).ConfigureAwait(false); + } + public async Task> GetReactionUsersAsync(ulong channelId, ulong messageId, string emoji, GetReactionUsersParams args, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + Preconditions.NotEqual(messageId, 0, nameof(messageId)); + Preconditions.NotNullOrWhitespace(emoji, nameof(emoji)); + Preconditions.NotNull(args, nameof(args)); + Preconditions.GreaterThan(args.Limit, 0, nameof(args.Limit)); + Preconditions.AtMost(args.Limit, DiscordConfig.MaxUserReactionsPerBatch, nameof(args.Limit)); + Preconditions.GreaterThan(args.AfterUserId, 0, nameof(args.AfterUserId)); + options = RequestOptions.CreateOrClone(options); + + int limit = args.Limit.GetValueOrDefault(DiscordConfig.MaxUserReactionsPerBatch); + ulong afterUserId = args.AfterUserId.GetValueOrDefault(0); + + var ids = new BucketIds(channelId: channelId); + Expression> endpoint = () => $"channels/{channelId}/messages/{messageId}/reactions/{emoji}?limit={limit}&after={afterUserId}"; + return await SendAsync>("GET", endpoint, ids, options: options).ConfigureAwait(false); + } + public async Task AckMessageAsync(ulong channelId, ulong messageId, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + Preconditions.NotEqual(messageId, 0, nameof(messageId)); + options = RequestOptions.CreateOrClone(options); + + var ids = new BucketIds(channelId: channelId); + await SendAsync("POST", () => $"channels/{channelId}/messages/{messageId}/ack", ids, options: options).ConfigureAwait(false); + } + public async Task TriggerTypingIndicatorAsync(ulong channelId, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + options = RequestOptions.CreateOrClone(options); + + var ids = new BucketIds(channelId: channelId); + await SendAsync("POST", () => $"channels/{channelId}/typing", ids, options: options).ConfigureAwait(false); + } + public async Task CrosspostAsync(ulong channelId, ulong messageId, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + Preconditions.NotEqual(messageId, 0, nameof(messageId)); + options = RequestOptions.CreateOrClone(options); + + var ids = new BucketIds(channelId: channelId); + await SendAsync("POST", () => $"channels/{channelId}/messages/{messageId}/crosspost", ids, options: options).ConfigureAwait(false); + } + #endregion + + #region Channel Permissions + public async Task ModifyChannelPermissionsAsync(ulong channelId, ulong targetId, ModifyChannelPermissionsParams args, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + Preconditions.NotEqual(targetId, 0, nameof(targetId)); + Preconditions.NotNull(args, nameof(args)); + options = RequestOptions.CreateOrClone(options); + + var ids = new BucketIds(channelId: channelId); + await SendJsonAsync("PUT", () => $"channels/{channelId}/permissions/{targetId}", args, ids, options: options).ConfigureAwait(false); + } + public async Task DeleteChannelPermissionAsync(ulong channelId, ulong targetId, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + Preconditions.NotEqual(targetId, 0, nameof(targetId)); + options = RequestOptions.CreateOrClone(options); + + var ids = new BucketIds(channelId: channelId); + await SendAsync("DELETE", () => $"channels/{channelId}/permissions/{targetId}", ids, options: options).ConfigureAwait(false); + } + #endregion + + #region Channel Pins + public async Task AddPinAsync(ulong channelId, ulong messageId, RequestOptions options = null) + { + Preconditions.GreaterThan(channelId, 0, nameof(channelId)); + Preconditions.GreaterThan(messageId, 0, nameof(messageId)); + options = RequestOptions.CreateOrClone(options); + + var ids = new BucketIds(channelId: channelId); + await SendAsync("PUT", () => $"channels/{channelId}/pins/{messageId}", ids, options: options).ConfigureAwait(false); + + } + public async Task RemovePinAsync(ulong channelId, ulong messageId, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + Preconditions.NotEqual(messageId, 0, nameof(messageId)); + options = RequestOptions.CreateOrClone(options); + + var ids = new BucketIds(channelId: channelId); + await SendAsync("DELETE", () => $"channels/{channelId}/pins/{messageId}", ids, options: options).ConfigureAwait(false); + } + public async Task> GetPinsAsync(ulong channelId, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + options = RequestOptions.CreateOrClone(options); + + var ids = new BucketIds(channelId: channelId); + return await SendAsync>("GET", () => $"channels/{channelId}/pins", ids, options: options).ConfigureAwait(false); + } + #endregion + + #region Channel Recipients + public async Task AddGroupRecipientAsync(ulong channelId, ulong userId, RequestOptions options = null) + { + Preconditions.GreaterThan(channelId, 0, nameof(channelId)); + Preconditions.GreaterThan(userId, 0, nameof(userId)); + options = RequestOptions.CreateOrClone(options); + + var ids = new BucketIds(channelId: channelId); + await SendAsync("PUT", () => $"channels/{channelId}/recipients/{userId}", ids, options: options).ConfigureAwait(false); + + } + public async Task RemoveGroupRecipientAsync(ulong channelId, ulong userId, RequestOptions options = null) + { + Preconditions.NotEqual(channelId, 0, nameof(channelId)); + Preconditions.NotEqual(userId, 0, nameof(userId)); + options = RequestOptions.CreateOrClone(options); + + var ids = new BucketIds(channelId: channelId); + await SendAsync("DELETE", () => $"channels/{channelId}/recipients/{userId}", ids, options: options).ConfigureAwait(false); + } + #endregion + + #region Interactions + public async Task GetGlobalApplicationCommandsAsync(RequestOptions options = null) + { + options = RequestOptions.CreateOrClone(options); + + return await SendAsync("GET", () => $"applications/{CurrentUserId}/commands", new BucketIds(), options: options).ConfigureAwait(false); + } + + public async Task GetGlobalApplicationCommandAsync(ulong id, RequestOptions options = null) + { + Preconditions.NotEqual(id, 0, nameof(id)); + + options = RequestOptions.CreateOrClone(options); + + try + { + return await SendAsync("GET", () => $"applications/{CurrentUserId}/commands/{id}", new BucketIds(), options: options).ConfigureAwait(false); + } + catch (HttpException x) when (x.HttpCode == HttpStatusCode.NotFound) { return null; } + } + + public async Task CreateGlobalApplicationCommandAsync(CreateApplicationCommandParams command, RequestOptions options = null) + { + Preconditions.NotNull(command, nameof(command)); + Preconditions.AtMost(command.Name.Length, 32, nameof(command.Name)); + Preconditions.AtLeast(command.Name.Length, 1, nameof(command.Name)); + + if (command.Type == ApplicationCommandType.Slash) + { + Preconditions.NotNullOrEmpty(command.Description, nameof(command.Description)); + Preconditions.AtMost(command.Description.Length, 100, nameof(command.Description)); + Preconditions.AtLeast(command.Description.Length, 1, nameof(command.Description)); + } + + options = RequestOptions.CreateOrClone(options); + + return await TrySendApplicationCommandAsync(SendJsonAsync("POST", () => $"applications/{CurrentUserId}/commands", command, new BucketIds(), options: options)).ConfigureAwait(false); + } + public async Task ModifyGlobalApplicationCommandAsync(ModifyApplicationCommandParams command, ulong commandId, RequestOptions options = null) + { + options = RequestOptions.CreateOrClone(options); + + return await TrySendApplicationCommandAsync(SendJsonAsync("PATCH", () => $"applications/{CurrentUserId}/commands/{commandId}", command, new BucketIds(), options: options)).ConfigureAwait(false); + } + public async Task ModifyGlobalApplicationUserCommandAsync(ModifyApplicationCommandParams command, ulong commandId, RequestOptions options = null) + { + options = RequestOptions.CreateOrClone(options); + + return await TrySendApplicationCommandAsync(SendJsonAsync("PATCH", () => $"applications/{CurrentUserId}/commands/{commandId}", command, new BucketIds(), options: options)).ConfigureAwait(false); + } + public async Task ModifyGlobalApplicationMessageCommandAsync(ModifyApplicationCommandParams command, ulong commandId, RequestOptions options = null) + { + options = RequestOptions.CreateOrClone(options); + + return await TrySendApplicationCommandAsync(SendJsonAsync("PATCH", () => $"applications/{CurrentUserId}/commands/{commandId}", command, new BucketIds(), options: options)).ConfigureAwait(false); + } + public async Task DeleteGlobalApplicationCommandAsync(ulong commandId, RequestOptions options = null) { - Preconditions.NotEqual(channelId, 0, nameof(channelId)); - Preconditions.NotEqual(messageId, 0, nameof(messageId)); - Preconditions.NotNull(args, nameof(args)); - if (args.Content.IsSpecified && args.Content.Value?.Length > DiscordConfig.MaxMessageSize) - throw new ArgumentOutOfRangeException($"Message content is too long, length must be less or equal to {DiscordConfig.MaxMessageSize}.", nameof(args.Content)); options = RequestOptions.CreateOrClone(options); - var ids = new BucketIds(channelId: channelId); - return await SendJsonAsync("PATCH", () => $"channels/{channelId}/messages/{messageId}", args, ids, clientBucket: ClientBucketType.SendEdit, options: options).ConfigureAwait(false); + await SendAsync("DELETE", () => $"applications/{CurrentUserId}/commands/{commandId}", new BucketIds(), options: options).ConfigureAwait(false); } - public async Task AddReactionAsync(ulong channelId, ulong messageId, string emoji, RequestOptions options = null) + public async Task BulkOverwriteGlobalApplicationCommandsAsync(CreateApplicationCommandParams[] commands, RequestOptions options = null) { - Preconditions.NotEqual(channelId, 0, nameof(channelId)); - Preconditions.NotEqual(messageId, 0, nameof(messageId)); - Preconditions.NotNullOrWhitespace(emoji, nameof(emoji)); + options = RequestOptions.CreateOrClone(options); + return await TrySendApplicationCommandAsync(SendJsonAsync("PUT", () => $"applications/{CurrentUserId}/commands", commands, new BucketIds(), options: options)).ConfigureAwait(false); + } + + public async Task GetGuildApplicationCommandsAsync(ulong guildId, RequestOptions options = null) + { options = RequestOptions.CreateOrClone(options); - options.IsReactionBucket = true; - var ids = new BucketIds(channelId: channelId); + var bucket = new BucketIds(guildId: guildId); - // @me is non-const to fool the ratelimiter, otherwise it will put add/remove in separate buckets - var me = "@me"; - await SendAsync("PUT", () => $"channels/{channelId}/messages/{messageId}/reactions/{emoji}/{me}", ids, options: options).ConfigureAwait(false); + return await SendAsync("GET", () => $"applications/{CurrentUserId}/guilds/{guildId}/commands", bucket, options: options).ConfigureAwait(false); } - public async Task RemoveReactionAsync(ulong channelId, ulong messageId, ulong userId, string emoji, RequestOptions options = null) - { - Preconditions.NotEqual(channelId, 0, nameof(channelId)); - Preconditions.NotEqual(messageId, 0, nameof(messageId)); - Preconditions.NotNullOrWhitespace(emoji, nameof(emoji)); + public async Task GetGuildApplicationCommandAsync(ulong guildId, ulong commandId, RequestOptions options = null) + { options = RequestOptions.CreateOrClone(options); - options.IsReactionBucket = true; - var ids = new BucketIds(channelId: channelId); + var bucket = new BucketIds(guildId: guildId); - var user = CurrentUserId.HasValue ? (userId == CurrentUserId.Value ? "@me" : userId.ToString()) : userId.ToString(); - await SendAsync("DELETE", () => $"channels/{channelId}/messages/{messageId}/reactions/{emoji}/{user}", ids, options: options).ConfigureAwait(false); + try + { + return await SendAsync("GET", () => $"applications/{CurrentUserId}/guilds/{guildId}/commands/{commandId}", bucket, options: options); + } + catch (HttpException x) when (x.HttpCode == HttpStatusCode.NotFound) { return null; } } - public async Task RemoveAllReactionsAsync(ulong channelId, ulong messageId, RequestOptions options = null) + + public async Task CreateGuildApplicationCommandAsync(CreateApplicationCommandParams command, ulong guildId, RequestOptions options = null) { - Preconditions.NotEqual(channelId, 0, nameof(channelId)); - Preconditions.NotEqual(messageId, 0, nameof(messageId)); + Preconditions.NotNull(command, nameof(command)); + Preconditions.AtMost(command.Name.Length, 32, nameof(command.Name)); + Preconditions.AtLeast(command.Name.Length, 1, nameof(command.Name)); + + if (command.Type == ApplicationCommandType.Slash) + { + Preconditions.NotNullOrEmpty(command.Description, nameof(command.Description)); + Preconditions.AtMost(command.Description.Length, 100, nameof(command.Description)); + Preconditions.AtLeast(command.Description.Length, 1, nameof(command.Description)); + } options = RequestOptions.CreateOrClone(options); - var ids = new BucketIds(channelId: channelId); + var bucket = new BucketIds(guildId: guildId); - await SendAsync("DELETE", () => $"channels/{channelId}/messages/{messageId}/reactions", ids, options: options).ConfigureAwait(false); + return await TrySendApplicationCommandAsync(SendJsonAsync("POST", () => $"applications/{CurrentUserId}/guilds/{guildId}/commands", command, bucket, options: options)).ConfigureAwait(false); } - public async Task RemoveAllReactionsForEmoteAsync(ulong channelId, ulong messageId, string emoji, RequestOptions options = null) + public async Task ModifyGuildApplicationCommandAsync(ModifyApplicationCommandParams command, ulong guildId, ulong commandId, RequestOptions options = null) { - Preconditions.NotEqual(channelId, 0, nameof(channelId)); - Preconditions.NotEqual(messageId, 0, nameof(messageId)); - Preconditions.NotNullOrWhitespace(emoji, nameof(emoji)); - options = RequestOptions.CreateOrClone(options); - var ids = new BucketIds(channelId: channelId); + var bucket = new BucketIds(guildId: guildId); - await SendAsync("DELETE", () => $"channels/{channelId}/messages/{messageId}/reactions/{emoji}", ids, options: options).ConfigureAwait(false); + return await TrySendApplicationCommandAsync(SendJsonAsync("PATCH", () => $"applications/{CurrentUserId}/guilds/{guildId}/commands/{commandId}", command, bucket, options: options)).ConfigureAwait(false); } - public async Task> GetReactionUsersAsync(ulong channelId, ulong messageId, string emoji, GetReactionUsersParams args, RequestOptions options = null) + public async Task DeleteGuildApplicationCommandAsync(ulong guildId, ulong commandId, RequestOptions options = null) { - Preconditions.NotEqual(channelId, 0, nameof(channelId)); - Preconditions.NotEqual(messageId, 0, nameof(messageId)); - Preconditions.NotNullOrWhitespace(emoji, nameof(emoji)); - Preconditions.NotNull(args, nameof(args)); - Preconditions.GreaterThan(args.Limit, 0, nameof(args.Limit)); - Preconditions.AtMost(args.Limit, DiscordConfig.MaxUserReactionsPerBatch, nameof(args.Limit)); - Preconditions.GreaterThan(args.AfterUserId, 0, nameof(args.AfterUserId)); options = RequestOptions.CreateOrClone(options); - int limit = args.Limit.GetValueOrDefault(DiscordConfig.MaxUserReactionsPerBatch); - ulong afterUserId = args.AfterUserId.GetValueOrDefault(0); + var bucket = new BucketIds(guildId: guildId); - var ids = new BucketIds(channelId: channelId); - Expression> endpoint = () => $"channels/{channelId}/messages/{messageId}/reactions/{emoji}?limit={limit}&after={afterUserId}"; - return await SendAsync>("GET", endpoint, ids, options: options).ConfigureAwait(false); + await SendAsync("DELETE", () => $"applications/{CurrentUserId}/guilds/{guildId}/commands/{commandId}", bucket, options: options).ConfigureAwait(false); } - public async Task AckMessageAsync(ulong channelId, ulong messageId, RequestOptions options = null) + + public async Task BulkOverwriteGuildApplicationCommandsAsync(ulong guildId, CreateApplicationCommandParams[] commands, RequestOptions options = null) { - Preconditions.NotEqual(channelId, 0, nameof(channelId)); - Preconditions.NotEqual(messageId, 0, nameof(messageId)); options = RequestOptions.CreateOrClone(options); - var ids = new BucketIds(channelId: channelId); - await SendAsync("POST", () => $"channels/{channelId}/messages/{messageId}/ack", ids, options: options).ConfigureAwait(false); + var bucket = new BucketIds(guildId: guildId); + + return await TrySendApplicationCommandAsync(SendJsonAsync("PUT", () => $"applications/{CurrentUserId}/guilds/{guildId}/commands", commands, bucket, options: options)).ConfigureAwait(false); } - public async Task TriggerTypingIndicatorAsync(ulong channelId, RequestOptions options = null) + #endregion + + #region Interaction Responses + public async Task CreateInteractionResponseAsync(InteractionResponse response, ulong interactionId, string interactionToken, RequestOptions options = null) { - Preconditions.NotEqual(channelId, 0, nameof(channelId)); + if (response.Data.IsSpecified && response.Data.Value.Content.IsSpecified) + Preconditions.AtMost(response.Data.Value.Content.Value?.Length ?? 0, 2000, nameof(response.Data.Value.Content)); + options = RequestOptions.CreateOrClone(options); - var ids = new BucketIds(channelId: channelId); - await SendAsync("POST", () => $"channels/{channelId}/typing", ids, options: options).ConfigureAwait(false); + await SendJsonAsync("POST", () => $"interactions/{interactionId}/{interactionToken}/callback", response, new BucketIds(), options: options); } - public async Task CrosspostAsync(ulong channelId, ulong messageId, RequestOptions options = null) + public async Task GetInteractionResponseAsync(string interactionToken, RequestOptions options = null) { - Preconditions.NotEqual(channelId, 0, nameof(channelId)); - Preconditions.NotEqual(messageId, 0, nameof(messageId)); + Preconditions.NotNullOrEmpty(interactionToken, nameof(interactionToken)); + options = RequestOptions.CreateOrClone(options); - var ids = new BucketIds(channelId: channelId); - await SendAsync("POST", () => $"channels/{channelId}/messages/{messageId}/crosspost", ids, options: options).ConfigureAwait(false); + return await SendAsync("GET", () => $"webhooks/{CurrentUserId}/{interactionToken}/messages/@original", new BucketIds(), options: options).ConfigureAwait(false); } - - //Channel Permissions - public async Task ModifyChannelPermissionsAsync(ulong channelId, ulong targetId, ModifyChannelPermissionsParams args, RequestOptions options = null) + public async Task ModifyInteractionResponseAsync(ModifyInteractionResponseParams args, string interactionToken, RequestOptions options = null) { - Preconditions.NotEqual(channelId, 0, nameof(channelId)); - Preconditions.NotEqual(targetId, 0, nameof(targetId)); - Preconditions.NotNull(args, nameof(args)); options = RequestOptions.CreateOrClone(options); - var ids = new BucketIds(channelId: channelId); - await SendJsonAsync("PUT", () => $"channels/{channelId}/permissions/{targetId}", args, ids, options: options).ConfigureAwait(false); + return await SendJsonAsync("PATCH", () => $"webhooks/{CurrentUserId}/{interactionToken}/messages/@original", args, new BucketIds(), options: options); } - public async Task DeleteChannelPermissionAsync(ulong channelId, ulong targetId, RequestOptions options = null) + public async Task DeleteInteractionResponseAsync(string interactionToken, RequestOptions options = null) { - Preconditions.NotEqual(channelId, 0, nameof(channelId)); - Preconditions.NotEqual(targetId, 0, nameof(targetId)); options = RequestOptions.CreateOrClone(options); - var ids = new BucketIds(channelId: channelId); - await SendAsync("DELETE", () => $"channels/{channelId}/permissions/{targetId}", ids, options: options).ConfigureAwait(false); + await SendAsync("DELETE", () => $"webhooks/{CurrentUserId}/{interactionToken}/messages/@original", new BucketIds(), options: options); } - //Channel Pins - public async Task AddPinAsync(ulong channelId, ulong messageId, RequestOptions options = null) + public async Task CreateInteractionFollowupMessageAsync(CreateWebhookMessageParams args, string token, RequestOptions options = null) { - Preconditions.GreaterThan(channelId, 0, nameof(channelId)); - Preconditions.GreaterThan(messageId, 0, nameof(messageId)); + if ((!args.Embeds.IsSpecified || args.Embeds.Value == null || args.Embeds.Value.Length == 0) && !args.File.IsSpecified) + Preconditions.NotNullOrEmpty(args.Content, nameof(args.Content)); + + if (args.Content?.Length > DiscordConfig.MaxMessageSize) + throw new ArgumentException(message: $"Message content is too long, length must be less or equal to {DiscordConfig.MaxMessageSize}.", paramName: nameof(args.Content)); + options = RequestOptions.CreateOrClone(options); - var ids = new BucketIds(channelId: channelId); - await SendAsync("PUT", () => $"channels/{channelId}/pins/{messageId}", ids, options: options).ConfigureAwait(false); + if (!args.File.IsSpecified) + return await SendJsonAsync("POST", () => $"webhooks/{CurrentUserId}/{token}?wait=true", args, new BucketIds(), options: options).ConfigureAwait(false); + else + return await SendMultipartAsync("POST", () => $"webhooks/{CurrentUserId}/{token}?wait=true", args.ToDictionary(), new BucketIds(), options: options).ConfigureAwait(false); + } + + public async Task ModifyInteractionFollowupMessageAsync(ModifyInteractionResponseParams args, ulong id, string token, RequestOptions options = null) + { + Preconditions.NotNull(args, nameof(args)); + Preconditions.NotEqual(id, 0, nameof(id)); + if (args.Content.IsSpecified) + if (args.Content.Value.Length > DiscordConfig.MaxMessageSize) + throw new ArgumentException(message: $"Message content is too long, length must be less or equal to {DiscordConfig.MaxMessageSize}.", paramName: nameof(args.Content)); + + options = RequestOptions.CreateOrClone(options); + + return await SendJsonAsync("PATCH", () => $"webhooks/{CurrentUserId}/{token}/messages/{id}", args, new BucketIds(), options: options).ConfigureAwait(false); } - public async Task RemovePinAsync(ulong channelId, ulong messageId, RequestOptions options = null) + + public async Task DeleteInteractionFollowupMessageAsync(ulong id, string token, RequestOptions options = null) { - Preconditions.NotEqual(channelId, 0, nameof(channelId)); - Preconditions.NotEqual(messageId, 0, nameof(messageId)); + Preconditions.NotEqual(id, 0, nameof(id)); + options = RequestOptions.CreateOrClone(options); - var ids = new BucketIds(channelId: channelId); - await SendAsync("DELETE", () => $"channels/{channelId}/pins/{messageId}", ids, options: options).ConfigureAwait(false); + await SendAsync("DELETE", () => $"webhooks/{CurrentUserId}/{token}/messages/{id}", new BucketIds(), options: options).ConfigureAwait(false); } - public async Task> GetPinsAsync(ulong channelId, RequestOptions options = null) + #endregion + + #region Application Command permissions + public async Task GetGuildApplicationCommandPermissionsAsync(ulong guildId, RequestOptions options = null) { - Preconditions.NotEqual(channelId, 0, nameof(channelId)); + Preconditions.NotEqual(guildId, 0, nameof(guildId)); + options = RequestOptions.CreateOrClone(options); - var ids = new BucketIds(channelId: channelId); - return await SendAsync>("GET", () => $"channels/{channelId}/pins", ids, options: options).ConfigureAwait(false); + return await SendAsync("GET", () => $"applications/{CurrentUserId}/guilds/{guildId}/commands/permissions", new BucketIds(), options: options).ConfigureAwait(false); } - //Channel Recipients - public async Task AddGroupRecipientAsync(ulong channelId, ulong userId, RequestOptions options = null) + public async Task GetGuildApplicationCommandPermissionAsync(ulong guildId, ulong commandId, RequestOptions options = null) { - Preconditions.GreaterThan(channelId, 0, nameof(channelId)); - Preconditions.GreaterThan(userId, 0, nameof(userId)); + Preconditions.NotEqual(guildId, 0, nameof(guildId)); + Preconditions.NotEqual(commandId, 0, nameof(commandId)); + options = RequestOptions.CreateOrClone(options); - var ids = new BucketIds(channelId: channelId); - await SendAsync("PUT", () => $"channels/{channelId}/recipients/{userId}", ids, options: options).ConfigureAwait(false); + return await SendAsync("GET", () => $"applications/{CurrentUserId}/guilds/{guildId}/commands/{commandId}/permissions", new BucketIds(), options: options).ConfigureAwait(false); + } + + public async Task ModifyApplicationCommandPermissionsAsync(ModifyGuildApplicationCommandPermissionsParams permissions, ulong guildId, ulong commandId, RequestOptions options = null) + { + Preconditions.NotEqual(guildId, 0, nameof(guildId)); + Preconditions.NotEqual(commandId, 0, nameof(commandId)); + options = RequestOptions.CreateOrClone(options); + + return await SendJsonAsync("PUT", () => $"applications/{CurrentUserId}/guilds/{guildId}/commands/{commandId}/permissions", permissions, new BucketIds(), options: options).ConfigureAwait(false); } - public async Task RemoveGroupRecipientAsync(ulong channelId, ulong userId, RequestOptions options = null) + + public async Task> BatchModifyApplicationCommandPermissionsAsync(ModifyGuildApplicationCommandPermissions[] permissions, ulong guildId, RequestOptions options = null) { - Preconditions.NotEqual(channelId, 0, nameof(channelId)); - Preconditions.NotEqual(userId, 0, nameof(userId)); + Preconditions.NotEqual(guildId, 0, nameof(guildId)); + Preconditions.NotNull(permissions, nameof(permissions)); + options = RequestOptions.CreateOrClone(options); - var ids = new BucketIds(channelId: channelId); - await SendAsync("DELETE", () => $"channels/{channelId}/recipients/{userId}", ids, options: options).ConfigureAwait(false); + return await SendJsonAsync("PUT", () => $"applications/{CurrentUserId}/guilds/{guildId}/commands/permissions", permissions, new BucketIds(), options: options).ConfigureAwait(false); } + #endregion - //Guilds + #region Guilds public async Task GetGuildAsync(ulong guildId, bool withCounts, RequestOptions options = null) { Preconditions.NotEqual(guildId, 0, nameof(guildId)); @@ -882,8 +1485,9 @@ namespace Discord.API var ids = new BucketIds(guildId: guildId); return await SendAsync("GET", () => $"guilds/{guildId}/prune?days={args.Days}{endpointRoleIds}", ids, options: options).ConfigureAwait(false); } + #endregion - //Guild Bans + #region Guild Bans public async Task> GetGuildBansAsync(ulong guildId, RequestOptions options = null) { Preconditions.NotEqual(guildId, 0, nameof(guildId)); @@ -934,8 +1538,9 @@ namespace Discord.API var ids = new BucketIds(guildId: guildId); await SendAsync("DELETE", () => $"guilds/{guildId}/bans/{userId}", ids, options: options).ConfigureAwait(false); } + #endregion - //Guild Widget + #region Guild Widget /// must not be equal to zero. public async Task GetGuildWidgetAsync(ulong guildId, RequestOptions options = null) { @@ -960,8 +1565,9 @@ namespace Discord.API var ids = new BucketIds(guildId: guildId); return await SendJsonAsync("PATCH", () => $"guilds/{guildId}/widget", args, ids, options: options).ConfigureAwait(false); } + #endregion - //Guild Integrations + #region Guild Integrations /// must not be equal to zero. public async Task> GetGuildIntegrationsAsync(ulong guildId, RequestOptions options = null) { @@ -1013,8 +1619,9 @@ namespace Discord.API var ids = new BucketIds(guildId: guildId); return await SendAsync("POST", () => $"guilds/{guildId}/integrations/{integrationId}/sync", ids, options: options).ConfigureAwait(false); } + #endregion - //Guild Invites + #region Guild Invites /// cannot be blank. /// must not be . public async Task GetInviteAsync(string inviteId, RequestOptions options = null) @@ -1079,6 +1686,12 @@ namespace Discord.API Preconditions.AtLeast(args.MaxUses, 0, nameof(args.MaxUses)); Preconditions.AtMost(args.MaxAge, 86400, nameof(args.MaxAge), "The maximum age of an invite must be less than or equal to a day (86400 seconds)."); + if (args.TargetType.IsSpecified) + { + Preconditions.NotEqual((int)args.TargetType.Value, (int)TargetUserType.Undefined, nameof(args.TargetType)); + if (args.TargetType.Value == TargetUserType.Stream) Preconditions.GreaterThan(args.TargetUserId, 0, nameof(args.TargetUserId)); + if (args.TargetType.Value == TargetUserType.EmbeddedApplication) Preconditions.GreaterThan(args.TargetApplicationId, 0, nameof(args.TargetUserId)); + } options = RequestOptions.CreateOrClone(options); var ids = new BucketIds(channelId: channelId); @@ -1091,8 +1704,9 @@ namespace Discord.API return await SendAsync("DELETE", () => $"invites/{inviteId}", new BucketIds(), options: options).ConfigureAwait(false); } + #endregion - //Guild Members + #region Guild Members public async Task AddGuildMemberAsync(ulong guildId, ulong userId, AddGuildMemberParams args, RequestOptions options = null) { Preconditions.NotEqual(guildId, 0, nameof(guildId)); @@ -1190,8 +1804,9 @@ namespace Discord.API Expression> endpoint = () => $"guilds/{guildId}/members/search?limit={limit}&query={query}"; return await SendAsync>("GET", endpoint, ids, options: options).ConfigureAwait(false); } + #endregion - //Guild Roles + #region Guild Roles public async Task> GetGuildRolesAsync(ulong guildId, RequestOptions options = null) { Preconditions.NotEqual(guildId, 0, nameof(guildId)); @@ -1238,8 +1853,9 @@ namespace Discord.API var ids = new BucketIds(guildId: guildId); return await SendJsonAsync>("PATCH", () => $"guilds/{guildId}/roles", args, ids, options: options).ConfigureAwait(false); } + #endregion - //Guild emoji + #region Guild emoji public async Task> GetGuildEmotesAsync(ulong guildId, RequestOptions options = null) { Preconditions.NotEqual(guildId, 0, nameof(guildId)); @@ -1291,8 +1907,108 @@ namespace Discord.API var ids = new BucketIds(guildId: guildId); await SendAsync("DELETE", () => $"guilds/{guildId}/emojis/{emoteId}", ids, options: options).ConfigureAwait(false); } + #endregion + + #region Guild Events + + public async Task ListGuildScheduledEventsAsync(ulong guildId, RequestOptions options = null) + { + Preconditions.NotEqual(guildId, 0, nameof(guildId)); + options = RequestOptions.CreateOrClone(options); + + var ids = new BucketIds(guildId: guildId); + return await SendAsync("GET", () => $"guilds/{guildId}/scheduled-events?with_user_count=true", ids, options: options).ConfigureAwait(false); + } + + public async Task GetGuildScheduledEventAsync(ulong eventId, ulong guildId, RequestOptions options = null) + { + Preconditions.NotEqual(guildId, 0, nameof(guildId)); + Preconditions.NotEqual(eventId, 0, nameof(eventId)); + options = RequestOptions.CreateOrClone(options); + + var ids = new BucketIds(guildId: guildId); + + return await NullifyNotFound(SendAsync("GET", () => $"guilds/{guildId}/scheduled-events/{eventId}?with_user_count=true", ids, options: options)).ConfigureAwait(false); + } + + public async Task CreateGuildScheduledEventAsync(CreateGuildScheduledEventParams args, ulong guildId, RequestOptions options = null) + { + Preconditions.NotEqual(guildId, 0, nameof(guildId)); + Preconditions.NotNull(args, nameof(args)); + + options = RequestOptions.CreateOrClone(options); + + var ids = new BucketIds(guildId: guildId); + + return await SendJsonAsync("POST", () => $"guilds/{guildId}/scheduled-events", args, ids, options: options).ConfigureAwait(false); + } + + public async Task ModifyGuildScheduledEventAsync(ModifyGuildScheduledEventParams args, ulong eventId, ulong guildId, RequestOptions options = null) + { + Preconditions.NotEqual(guildId, 0, nameof(guildId)); + Preconditions.NotEqual(eventId, 0, nameof(eventId)); + Preconditions.NotNull(args, nameof(args)); + + options = RequestOptions.CreateOrClone(options); + + var ids = new BucketIds(guildId: guildId); + + return await SendJsonAsync("PATCH", () => $"guilds/{guildId}/scheduled-events/{eventId}", args, ids, options: options).ConfigureAwait(false); + } + + public async Task DeleteGuildScheduledEventAsync(ulong eventId, ulong guildId, RequestOptions options = null) + { + Preconditions.NotEqual(guildId, 0, nameof(guildId)); + Preconditions.NotEqual(eventId, 0, nameof(eventId)); + + options = RequestOptions.CreateOrClone(options); + + var ids = new BucketIds(guildId: guildId); + + await SendAsync("DELETE", () => $"guilds/{guildId}/scheduled-events/{eventId}", ids, options: options).ConfigureAwait(false); + } + + public async Task GetGuildScheduledEventUsersAsync(ulong eventId, ulong guildId, int limit = 100, RequestOptions options = null) + { + Preconditions.NotEqual(guildId, 0, nameof(guildId)); + Preconditions.NotEqual(eventId, 0, nameof(eventId)); + + options = RequestOptions.CreateOrClone(options); + + var ids = new BucketIds(guildId: guildId); + + return await SendAsync("GET", () => $"guilds/{guildId}/scheduled-events/{eventId}/users?limit={limit}&with_member=true", ids, options: options).ConfigureAwait(false); + } + + public async Task GetGuildScheduledEventUsersAsync(ulong eventId, ulong guildId, GetEventUsersParams args, RequestOptions options = null) + { + Preconditions.NotEqual(eventId, 0, nameof(eventId)); + Preconditions.NotNull(args, nameof(args)); + Preconditions.AtLeast(args.Limit, 0, nameof(args.Limit)); + Preconditions.AtMost(args.Limit, DiscordConfig.MaxMessagesPerBatch, nameof(args.Limit)); + options = RequestOptions.CreateOrClone(options); + + int limit = args.Limit.GetValueOrDefault(DiscordConfig.MaxGuildEventUsersPerBatch); + ulong? relativeId = args.RelativeUserId.IsSpecified ? args.RelativeUserId.Value : (ulong?)null; + var relativeDir = args.RelativeDirection.GetValueOrDefault(Direction.Before) switch + { + Direction.After => "after", + Direction.Around => "around", + _ => "before", + }; + var ids = new BucketIds(guildId: guildId); + Expression> endpoint; + if (relativeId != null) + endpoint = () => $"guilds/{guildId}/scheduled-events/{eventId}/users?with_member=true&limit={limit}&{relativeDir}={relativeId}"; + else + endpoint = () => $"guilds/{guildId}/scheduled-events/{eventId}/users?with_member=true&limit={limit}"; + + return await SendAsync("GET", endpoint, ids, options: options).ConfigureAwait(false); + } + + #endregion - //Users + #region Users public async Task GetUserAsync(ulong userId, RequestOptions options = null) { Preconditions.NotEqual(userId, 0, nameof(userId)); @@ -1304,8 +2020,9 @@ namespace Discord.API } catch (HttpException ex) when (ex.HttpCode == HttpStatusCode.NotFound) { return null; } } + #endregion - //Current User/DMs + #region Current User/DMs public async Task GetMyUserAsync(RequestOptions options = null) { options = RequestOptions.CreateOrClone(options); @@ -1364,8 +2081,9 @@ namespace Discord.API return await SendJsonAsync("POST", () => "users/@me/channels", args, new BucketIds(), options: options).ConfigureAwait(false); } + #endregion - //Voice Regions + #region Voice Regions public async Task> GetVoiceRegionsAsync(RequestOptions options = null) { options = RequestOptions.CreateOrClone(options); @@ -1379,8 +2097,9 @@ namespace Discord.API var ids = new BucketIds(guildId: guildId); return await SendAsync>("GET", () => $"guilds/{guildId}/regions", ids, options: options).ConfigureAwait(false); } + #endregion - //Audit logs + #region Audit logs public async Task GetAuditLogsAsync(ulong guildId, GetAuditLogsParams args, RequestOptions options = null) { Preconditions.NotEqual(guildId, 0, nameof(guildId)); @@ -1409,12 +2128,13 @@ namespace Discord.API .Append(args.ActionType.Value); } - // still use string interp for the query w/o params, as this is necessary for CreateBucketId + // Still use string interp for the query w/o params, as this is necessary for CreateBucketId endpoint = () => $"guilds/{guildId}/audit-logs?limit={limit}{queryArgs.ToString()}"; return await SendAsync("GET", endpoint, ids, options: options).ConfigureAwait(false); } + #endregion - //Webhooks + #region Webhooks public async Task CreateWebhookAsync(ulong channelId, CreateWebhookParams args, RequestOptions options = null) { Preconditions.NotEqual(channelId, 0, nameof(channelId)); @@ -1477,8 +2197,9 @@ namespace Discord.API var ids = new BucketIds(channelId: channelId); return await SendAsync>("GET", () => $"channels/{channelId}/webhooks", ids, options: options).ConfigureAwait(false); } + #endregion - //Helpers + #region Helpers /// Client is not logged in. protected void CheckState() { @@ -1501,6 +2222,66 @@ namespace Discord.API return _serializer.Deserialize(reader); } + protected async Task TrySendApplicationCommandAsync(Task sendTask) + { + try + { + var result = await sendTask.ConfigureAwait(false); + + if (sendTask.Exception != null) + { + if (sendTask.Exception.InnerException is HttpException x) + { + if (x.HttpCode == HttpStatusCode.BadRequest) + { + var json = (x.Request as JsonRestRequest).Json; + throw new ApplicationCommandException(x); + } + } + + throw sendTask.Exception; + } + else + return result; + } + catch (HttpException x) + { + if (x.HttpCode == HttpStatusCode.BadRequest) + { + var json = (x.Request as JsonRestRequest).Json; + throw new ApplicationCommandException(x); + } + + throw; + } + } + + protected async Task NullifyNotFound(Task sendTask) where T : class + { + try + { + var result = await sendTask.ConfigureAwait(false); + + if (sendTask.Exception != null) + { + if (sendTask.Exception.InnerException is HttpException x) + { + if (x.HttpCode == HttpStatusCode.NotFound) + { + return null; + } + } + + throw sendTask.Exception; + } + else + return result; + } + catch (HttpException x) when (x.HttpCode == HttpStatusCode.NotFound) + { + return null; + } + } internal class BucketIds { public ulong GuildId { get; internal set; } @@ -1532,15 +2313,14 @@ namespace Discord.API internal static int? GetIndex(string name) { - switch (name) + return name switch { - case "httpMethod": return 0; - case "guildId": return 1; - case "channelId": return 2; - case "webhookId": return 3; - default: - return null; - } + "httpMethod" => 0, + "guildId" => 1, + "channelId" => 2, + "webhookId" => 3, + _ => null, + }; } } @@ -1576,7 +2356,7 @@ namespace Discord.API Array.Copy(elements, 0, methodArgs, 1, elements.Length); } - int endIndex = format.IndexOf('?'); //Dont include params + int endIndex = format.IndexOf('?'); //Don't include params if (endIndex == -1) endIndex = format.Length; @@ -1628,5 +2408,6 @@ namespace Discord.API return (expr as MemberExpression).Member.Name; } + #endregion } } diff --git a/src/Discord.Net.Rest/DiscordRestClient.cs b/src/Discord.Net.Rest/DiscordRestClient.cs index b5bdc4235..93183161b 100644 --- a/src/Discord.Net.Rest/DiscordRestClient.cs +++ b/src/Discord.Net.Rest/DiscordRestClient.cs @@ -1,7 +1,13 @@ +//using Discord.Rest.Entities.Interactions; +using Discord.Net; +using Discord.Net.Converters; +using Discord.Net.ED25519; +using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Collections.Immutable; using System.IO; +using System.Text; using System.Threading.Tasks; namespace Discord.Rest @@ -11,13 +17,15 @@ namespace Discord.Rest /// public class DiscordRestClient : BaseDiscordClient, IDiscordClient { + #region DiscordRestClient private RestApplication _applicationInfo; + internal static JsonSerializer Serializer = new JsonSerializer() { ContractResolver = new DiscordContractResolver(), NullValueHandling = NullValueHandling.Include }; /// /// Gets the logged-in user. /// public new RestSelfUser CurrentUser { get => base.CurrentUser as RestSelfUser; internal set => base.CurrentUser = value; } - + /// public DiscordRestClient() : this(new DiscordRestConfig()) { } /// @@ -29,7 +37,7 @@ namespace Discord.Rest internal DiscordRestClient(DiscordRestConfig config, API.DiscordRestApiClient api) : base(config, api) { } private static API.DiscordRestApiClient CreateApiClient(DiscordRestConfig config) - => new API.DiscordRestApiClient(config.RestClientProvider, DiscordRestConfig.UserAgent, useSystemClock: config.UseSystemClock); + => new API.DiscordRestApiClient(config.RestClientProvider, DiscordRestConfig.UserAgent, serializer: Serializer, useSystemClock: config.UseSystemClock); internal override void Dispose(bool disposing) { @@ -46,6 +54,11 @@ namespace Discord.Rest ApiClient.CurrentUserId = user.Id; base.CurrentUser = RestSelfUser.Create(this, user); } + + internal void CreateRestSelfUser(API.User user) + { + base.CurrentUser = RestSelfUser.Create(this, user); + } /// internal override Task OnLogoutAsync() { @@ -53,9 +66,73 @@ namespace Discord.Rest return Task.Delay(0); } + #region Rest interactions + + public bool IsValidHttpInteraction(string publicKey, string signature, string timestamp, string body) + => IsValidHttpInteraction(publicKey, signature, timestamp, Encoding.UTF8.GetBytes(body)); + public bool IsValidHttpInteraction(string publicKey, string signature, string timestamp, byte[] body) + { + var key = HexConverter.HexToByteArray(publicKey); + var sig = HexConverter.HexToByteArray(signature); + var tsp = Encoding.UTF8.GetBytes(timestamp); + + var message = new List(); + message.AddRange(tsp); + message.AddRange(body); + + return IsValidHttpInteraction(key, sig, message.ToArray()); + } + + private bool IsValidHttpInteraction(byte[] publicKey, byte[] signature, byte[] message) + { + return Ed25519.Verify(signature, message, publicKey); + } + + /// + /// Creates a from a http message. + /// + /// The public key of your application + /// The signature sent with the interaction. + /// The timestamp sent with the interaction. + /// The body of the http message. + /// + /// A that represents the incoming http interaction. + /// + /// Thrown when the signature doesn't match the public key. + public Task ParseHttpInteractionAsync(string publicKey, string signature, string timestamp, string body) + => ParseHttpInteractionAsync(publicKey, signature, timestamp, Encoding.UTF8.GetBytes(body)); + + /// + /// Creates a from a http message. + /// + /// The public key of your application + /// The signature sent with the interaction. + /// The timestamp sent with the interaction. + /// The body of the http message. + /// + /// A that represents the incoming http interaction. + /// + /// Thrown when the signature doesn't match the public key. + public async Task ParseHttpInteractionAsync(string publicKey, string signature, string timestamp, byte[] body) + { + if (!IsValidHttpInteraction(publicKey, signature, timestamp, body)) + { + throw new BadSignatureException(); + } + + using (var textReader = new StringReader(Encoding.UTF8.GetString(body))) + using (var jsonReader = new JsonTextReader(textReader)) + { + var model = Serializer.Deserialize(jsonReader); + return await RestInteraction.CreateAsync(this, model); + } + } + + #endregion + public async Task GetApplicationInfoAsync(RequestOptions options = null) { - return _applicationInfo ?? (_applicationInfo = await ClientHelper.GetApplicationInfoAsync(this, options).ConfigureAwait(false)); + return _applicationInfo ??= await ClientHelper.GetApplicationInfoAsync(this, options).ConfigureAwait(false); } public Task GetChannelAsync(ulong id, RequestOptions options = null) @@ -101,6 +178,24 @@ namespace Discord.Rest => ClientHelper.GetVoiceRegionAsync(this, id, options); public Task GetWebhookAsync(ulong id, RequestOptions options = null) => ClientHelper.GetWebhookAsync(this, id, options); + + public Task CreateGlobalCommand(ApplicationCommandProperties properties, RequestOptions options = null) + => ClientHelper.CreateGlobalApplicationCommandAsync(this, properties, options); + public Task CreateGuildCommand(ApplicationCommandProperties properties, ulong guildId, RequestOptions options = null) + => ClientHelper.CreateGuildApplicationCommandAsync(this, guildId, properties, options); + public Task> GetGlobalApplicationCommands(RequestOptions options = null) + => ClientHelper.GetGlobalApplicationCommandsAsync(this, options); + public Task> GetGuildApplicationCommands(ulong guildId, RequestOptions options = null) + => ClientHelper.GetGuildApplicationCommandsAsync(this, guildId, options); + public Task> BulkOverwriteGlobalCommands(ApplicationCommandProperties[] commandProperties, RequestOptions options = null) + => ClientHelper.BulkOverwriteGlobalApplicationCommandAsync(this, commandProperties, options); + public Task> BulkOverwriteGuildCommands(ApplicationCommandProperties[] commandProperties, ulong guildId, RequestOptions options = null) + => ClientHelper.BulkOverwriteGuildApplicationCommandAsync(this, guildId, commandProperties, options); + public Task> BatchEditGuildCommandPermissions(ulong guildId, IDictionary permissions, RequestOptions options = null) + => InteractionHelper.BatchEditGuildCommandPermissionsAsync(this, guildId, permissions, options); + public Task DeleteAllGlobalCommandsAsync(RequestOptions options = null) + => InteractionHelper.DeleteAllGlobalCommandsAsync(this, options); + public Task AddRoleAsync(ulong guildId, ulong userId, ulong roleId) => ClientHelper.AddRoleAsync(this, guildId, userId, roleId); public Task RemoveRoleAsync(ulong guildId, ulong userId, ulong roleId) @@ -114,7 +209,9 @@ namespace Discord.Rest => MessageHelper.RemoveAllReactionsAsync(channelId, messageId, this, options); public Task RemoveAllReactionsForEmoteAsync(ulong channelId, ulong messageId, IEmote emote, RequestOptions options = null) => MessageHelper.RemoveAllReactionsForEmoteAsync(channelId, messageId, emote, this, options); - //IDiscordClient +#endregion + + #region IDiscordClient /// async Task IDiscordClient.GetApplicationInfoAsync(RequestOptions options) => await GetApplicationInfoAsync(options).ConfigureAwait(false); @@ -198,5 +295,13 @@ namespace Discord.Rest /// async Task IDiscordClient.GetWebhookAsync(ulong id, RequestOptions options) => await GetWebhookAsync(id, options).ConfigureAwait(false); + + /// + async Task> IDiscordClient.GetGlobalApplicationCommandsAsync(RequestOptions options) + => await GetGlobalApplicationCommands(options).ConfigureAwait(false); + /// + async Task IDiscordClient.GetGlobalApplicationCommandAsync(ulong id, RequestOptions options) + => await ClientHelper.GetGlobalApplicationCommandAsync(this, id, options).ConfigureAwait(false); + #endregion } } diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/AuditLogHelper.cs b/src/Discord.Net.Rest/Entities/AuditLogs/AuditLogHelper.cs index 696917203..b3aaf582c 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/AuditLogHelper.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/AuditLogHelper.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using Model = Discord.API.AuditLog; @@ -51,6 +51,7 @@ namespace Discord.Rest [ActionType.MessageBulkDeleted] = MessageBulkDeleteAuditLogData.Create, [ActionType.MessagePinned] = MessagePinAuditLogData.Create, [ActionType.MessageUnpinned] = MessageUnpinAuditLogData.Create, + }; public static IAuditLogData CreateData(BaseDiscordClient discord, Model log, EntryModel entry) diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/StageInfo.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/StageInfo.cs new file mode 100644 index 000000000..3700796e6 --- /dev/null +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/StageInfo.cs @@ -0,0 +1,30 @@ +namespace Discord.Rest +{ + /// + /// Represents information for a stage. + /// + public class StageInfo + { + /// + /// Gets the topic of the stage channel. + /// + public string Topic { get; } + + /// + /// Gets the privacy level of the stage channel. + /// + public StagePrivacyLevel? PrivacyLevel { get; } + + /// + /// Gets the user who started the stage channel. + /// + public IUser User { get; } + + internal StageInfo(IUser user, StagePrivacyLevel? level, string topic) + { + Topic = topic; + PrivacyLevel = level; + User = user; + } + } +} diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/StageInstanceCreateAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/StageInstanceCreateAuditLogData.cs new file mode 100644 index 000000000..eac99e87b --- /dev/null +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/StageInstanceCreateAuditLogData.cs @@ -0,0 +1,50 @@ +using System.Linq; +using Model = Discord.API.AuditLog; +using EntryModel = Discord.API.AuditLogEntry; + +namespace Discord.Rest +{ + /// + /// Contains a piece of audit log data related to a stage going live. + /// + public class StageInstanceCreateAuditLogData : IAuditLogData + { + /// + /// Gets the topic of the stage channel. + /// + public string Topic { get; } + + /// + /// Gets the privacy level of the stage channel. + /// + public StagePrivacyLevel PrivacyLevel { get; } + + /// + /// Gets the user who started the stage channel. + /// + public IUser User { get; } + + /// + /// Gets the Id of the stage channel. + /// + public ulong StageChannelId { get; } + + internal StageInstanceCreateAuditLogData(string topic, StagePrivacyLevel privacyLevel, IUser user, ulong channelId) + { + Topic = topic; + PrivacyLevel = privacyLevel; + User = user; + StageChannelId = channelId; + } + + internal static StageInstanceCreateAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) + { + var topic = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "topic").NewValue.ToObject(discord.ApiClient.Serializer); + var privacyLevel = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "privacy_level").NewValue.ToObject(discord.ApiClient.Serializer); + var user = log.Users.FirstOrDefault(x => x.Id == entry.UserId); + var channelId = entry.Options.ChannelId; + + return new StageInstanceCreateAuditLogData(topic, privacyLevel, RestUser.Create(discord, user), channelId ?? 0); + } + } +} diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/StageInstanceDeleteAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/StageInstanceDeleteAuditLogData.cs new file mode 100644 index 000000000..d22c56010 --- /dev/null +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/StageInstanceDeleteAuditLogData.cs @@ -0,0 +1,50 @@ +using System.Linq; +using Model = Discord.API.AuditLog; +using EntryModel = Discord.API.AuditLogEntry; + +namespace Discord.Rest +{ + /// + /// Contains a piece of audit log data related to a stage instance deleted. + /// + public class StageInstanceDeleteAuditLogData + { + /// + /// Gets the topic of the stage channel. + /// + public string Topic { get; } + + /// + /// Gets the privacy level of the stage channel. + /// + public StagePrivacyLevel PrivacyLevel { get; } + + /// + /// Gets the user who started the stage channel. + /// + public IUser User { get; } + + /// + /// Gets the Id of the stage channel. + /// + public ulong StageChannelId { get; } + + internal StageInstanceDeleteAuditLogData(string topic, StagePrivacyLevel privacyLevel, IUser user, ulong channelId) + { + Topic = topic; + PrivacyLevel = privacyLevel; + User = user; + StageChannelId = channelId; + } + + internal static StageInstanceDeleteAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) + { + var topic = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "topic").OldValue.ToObject(discord.ApiClient.Serializer); + var privacyLevel = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "privacy_level").OldValue.ToObject(discord.ApiClient.Serializer); + var user = log.Users.FirstOrDefault(x => x.Id == entry.UserId); + var channelId = entry.Options.ChannelId; + + return new StageInstanceDeleteAuditLogData(topic, privacyLevel, RestUser.Create(discord, user), channelId ?? 0); + } + } +} diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/StageInstanceUpdatedAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/StageInstanceUpdatedAuditLogData.cs new file mode 100644 index 000000000..93a0344b2 --- /dev/null +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/StageInstanceUpdatedAuditLogData.cs @@ -0,0 +1,51 @@ +using System.Linq; +using Model = Discord.API.AuditLog; +using EntryModel = Discord.API.AuditLogEntry; + +namespace Discord.Rest +{ + /// + /// Contains a piece of audit log data related to a stage instance update. + /// + public class StageInstanceUpdatedAuditLogData + { + /// + /// Gets the Id of the stage channel. + /// + public ulong StageChannelId { get; } + + /// + /// Gets the stage information before the changes. + /// + public StageInfo Before { get; } + + /// + /// Gets the stage information after the changes. + /// + public StageInfo After { get; } + + internal StageInstanceUpdatedAuditLogData(ulong channelId, StageInfo before, StageInfo after) + { + StageChannelId = channelId; + Before = before; + After = after; + } + + internal static StageInstanceUpdatedAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) + { + var channelId = entry.Options.ChannelId.Value; + + var topic = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "topic"); + var privacy = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "privacy"); + + var user = RestUser.Create(discord, log.Users.FirstOrDefault(x => x.Id == entry.UserId)); + + var oldTopic = topic?.OldValue.ToObject(); + var newTopic = topic?.NewValue.ToObject(); + var oldPrivacy = privacy?.OldValue.ToObject(); + var newPrivacy = privacy?.NewValue.ToObject(); + + return new StageInstanceUpdatedAuditLogData(channelId, new StageInfo(user, oldPrivacy, oldTopic), new StageInfo(user, newPrivacy, newTopic)); + } + } +} diff --git a/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs b/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs index 22395ab3a..2956d6443 100644 --- a/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs +++ b/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs @@ -6,12 +6,13 @@ using System.IO; using System.Linq; using System.Threading.Tasks; using Model = Discord.API.Channel; +using StageInstance = Discord.API.StageInstance; namespace Discord.Rest { internal static class ChannelHelper { - //General + #region General public static async Task DeleteAsync(IChannel channel, BaseDiscordClient client, RequestOptions options) { @@ -76,6 +77,7 @@ namespace Discord.Rest { Bitrate = args.Bitrate, Name = args.Name, + RTCRegion = args.RTCRegion, Position = args.Position, CategoryId = args.CategoryId, UserLimit = args.UserLimit.IsSpecified ? (args.UserLimit.Value ?? 0) : Optional.Create(), @@ -92,7 +94,23 @@ namespace Discord.Rest return await client.ApiClient.ModifyGuildChannelAsync(channel.Id, apiArgs, options).ConfigureAwait(false); } - //Invites + public static async Task ModifyAsync(IStageChannel channel, BaseDiscordClient client, + Action func, RequestOptions options = null) + { + var args = new StageInstanceProperties(); + func(args); + + var apiArgs = new ModifyStageInstanceParams() + { + PrivacyLevel = args.PrivacyLevel, + Topic = args.Topic + }; + + return await client.ApiClient.ModifyStageInstanceAsync(channel.Id, apiArgs, options); + } + #endregion + + #region Invites public static async Task> GetInvitesAsync(IGuildChannel channel, BaseDiscordClient client, RequestOptions options) { @@ -120,7 +138,56 @@ namespace Discord.Rest return RestInviteMetadata.Create(client, null, channel, model); } - //Messages + /// + /// may not be equal to zero. + /// -and- + /// and must be greater than zero. + /// -and- + /// must be lesser than 86400. + /// + public static async Task CreateInviteToStreamAsync(IGuildChannel channel, BaseDiscordClient client, + int? maxAge, int? maxUses, bool isTemporary, bool isUnique, IUser user, + RequestOptions options) + { + var args = new API.Rest.CreateChannelInviteParams + { + IsTemporary = isTemporary, + IsUnique = isUnique, + MaxAge = maxAge ?? 0, + MaxUses = maxUses ?? 0, + TargetType = TargetUserType.Stream, + TargetUserId = user.Id + }; + var model = await client.ApiClient.CreateChannelInviteAsync(channel.Id, args, options).ConfigureAwait(false); + return RestInviteMetadata.Create(client, null, channel, model); + } + + /// + /// may not be equal to zero. + /// -and- + /// and must be greater than zero. + /// -and- + /// must be lesser than 86400. + /// + public static async Task CreateInviteToApplicationAsync(IGuildChannel channel, BaseDiscordClient client, + int? maxAge, int? maxUses, bool isTemporary, bool isUnique, ulong applicationId, + RequestOptions options) + { + var args = new API.Rest.CreateChannelInviteParams + { + IsTemporary = isTemporary, + IsUnique = isUnique, + MaxAge = maxAge ?? 0, + MaxUses = maxUses ?? 0, + TargetType = TargetUserType.EmbeddedApplication, + TargetApplicationId = applicationId + }; + var model = await client.ApiClient.CreateChannelInviteAsync(channel.Id, args, options).ConfigureAwait(false); + return RestInviteMetadata.Create(client, null, channel, model); + } + #endregion + + #region Messages public static async Task GetMessageAsync(IMessageChannel channel, BaseDiscordClient client, ulong id, RequestOptions options) { @@ -200,10 +267,15 @@ namespace Discord.Rest /// Message content is too long, length must be less or equal to . public static async Task SendMessageAsync(IMessageChannel channel, BaseDiscordClient client, - string text, bool isTTS, Embed embed, AllowedMentions allowedMentions, MessageReference messageReference, RequestOptions options) + string text, bool isTTS, Embed embed, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, RequestOptions options, Embed[] embeds) { + embeds ??= Array.Empty(); + if (embed != null) + embeds = new[] { embed }.Concat(embeds).ToArray(); + 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, 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 if (allowedMentions != null && allowedMentions.AllowedTypes.HasValue) @@ -221,7 +293,20 @@ namespace Discord.Rest } } - var args = new CreateMessageParams(text) { IsTTS = isTTS, Embed = embed?.ToModel(), AllowedMentions = allowedMentions?.ToModel(), MessageReference = messageReference?.ToModel() }; + if (stickers != null) + { + Preconditions.AtMost(stickers.Length, 3, nameof(stickers), "A max of 3 stickers are allowed."); + } + + var args = new CreateMessageParams(text) + { + IsTTS = isTTS, + Embeds = embeds.Any() ? embeds.Select(x => x.ToModel()).ToArray() : Optional.Unspecified, + AllowedMentions = allowedMentions?.ToModel(), + MessageReference = messageReference?.ToModel(), + Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified, + Stickers = stickers?.Any() ?? false ? stickers.Select(x => x.Id).ToArray() : Optional.Unspecified + }; var model = await client.ApiClient.CreateMessageAsync(channel.Id, args, options).ConfigureAwait(false); return RestUserMessage.Create(client, channel, client.CurrentUser, model); } @@ -251,19 +336,40 @@ namespace Discord.Rest /// An I/O error occurred while opening the file. /// Message content is too long, length must be less or equal to . public static async Task SendFileAsync(IMessageChannel channel, BaseDiscordClient client, - string filePath, string text, bool isTTS, Embed embed, AllowedMentions allowedMentions, MessageReference messageReference, RequestOptions options, bool isSpoiler) + string filePath, string text, bool isTTS, Embed embed, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, RequestOptions options, bool isSpoiler, Embed[] embeds) { string filename = Path.GetFileName(filePath); using (var file = File.OpenRead(filePath)) - return await SendFileAsync(channel, client, file, filename, text, isTTS, embed, allowedMentions, messageReference, options, isSpoiler).ConfigureAwait(false); + return await SendFileAsync(channel, client, file, filename, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, isSpoiler, embeds).ConfigureAwait(false); } /// Message content is too long, length must be less or equal to . - public static async Task SendFileAsync(IMessageChannel channel, BaseDiscordClient client, - Stream stream, string filename, string text, bool isTTS, Embed embed, AllowedMentions allowedMentions, MessageReference messageReference, RequestOptions options, bool isSpoiler) + public static Task SendFileAsync(IMessageChannel channel, BaseDiscordClient client, + Stream stream, string filename, string text, bool isTTS, Embed embed, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, RequestOptions options, bool isSpoiler, Embed[] embeds) + { + return SendFileAsync(channel, client, new FileAttachment(stream, filename, isSpoiler: isSpoiler), text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); + } + + /// Message content is too long, length must be less or equal to . + public static Task SendFileAsync(IMessageChannel channel, BaseDiscordClient client, + FileAttachment attachment, string text, bool isTTS, Embed embed, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, RequestOptions options, Embed[] embeds) + => SendFilesAsync(channel, client, new[] { attachment }, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); + + public static async Task SendFilesAsync(IMessageChannel channel, BaseDiscordClient client, + IEnumerable attachments, string text, bool isTTS, Embed embed, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, RequestOptions options, Embed[] embeds) { + embeds ??= Array.Empty(); + if (embed != null) + embeds = new[] { embed }.Concat(embeds).ToArray(); + 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, 10, nameof(embeds), "A max of 10 embeds are allowed."); + + foreach(var attachment in attachments) + { + Preconditions.NotNullOrEmpty(attachment.FileName, nameof(attachment.FileName), "File Name must not be empty or null"); + } // check that user flag and user Id list are exclusive, same with role flag and role Id list if (allowedMentions != null && allowedMentions.AllowedTypes.HasValue) @@ -281,7 +387,12 @@ namespace Discord.Rest } } - var args = new UploadFileParams(stream) { Filename = filename, Content = text, IsTTS = isTTS, Embed = embed?.ToModel() ?? Optional.Unspecified, AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, MessageReference = messageReference?.ToModel() ?? Optional.Unspecified, IsSpoiler = isSpoiler }; + if (stickers != null) + { + Preconditions.AtMost(stickers.Length, 3, nameof(stickers), "A max of 3 stickers are allowed."); + } + + var args = new UploadFileParams(attachments.ToArray()) { Content = text, IsTTS = isTTS, Embeds = embeds.Any() ? embeds.Select(x => x.ToModel()).ToArray() : Optional.Unspecified, AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, MessageReference = messageReference?.ToModel() ?? Optional.Unspecified, MessageComponent = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified, Stickers = stickers?.Any() ?? false ? stickers.Select(x => x.Id).ToArray() : Optional.Unspecified }; var model = await client.ApiClient.UploadFileAsync(channel.Id, args, options).ConfigureAwait(false); return RestUserMessage.Create(client, channel, client.CurrentUser, model); } @@ -323,8 +434,9 @@ namespace Discord.Rest await client.ApiClient.DeleteMessagesAsync(channel.Id, args, options).ConfigureAwait(false); } } + #endregion - //Permission Overwrites + #region Permission Overwrites public static async Task AddPermissionOverwriteAsync(IGuildChannel channel, BaseDiscordClient client, IUser user, OverwritePermissions perms, RequestOptions options) { @@ -347,8 +459,9 @@ namespace Discord.Rest { await client.ApiClient.DeleteChannelPermissionAsync(channel.Id, role.Id, options).ConfigureAwait(false); } + #endregion - //Users + #region Users /// Resolving permissions requires the parent guild to be downloaded. public static async Task GetUserAsync(IGuildChannel channel, IGuild guild, BaseDiscordClient client, ulong id, RequestOptions options) @@ -393,8 +506,9 @@ namespace Discord.Rest count: limit ); } + #endregion - //Typing + #region Typing public static async Task TriggerTypingAsync(IMessageChannel channel, BaseDiscordClient client, RequestOptions options = null) { @@ -403,8 +517,9 @@ namespace Discord.Rest public static IDisposable EnterTypingState(IMessageChannel channel, BaseDiscordClient client, RequestOptions options) => new TypingNotifier(channel, options); + #endregion - //Webhooks + #region Webhooks public static async Task CreateWebhookAsync(ITextChannel channel, BaseDiscordClient client, string name, Stream avatar, RequestOptions options) { var args = new CreateWebhookParams { Name = name }; @@ -427,7 +542,9 @@ namespace Discord.Rest return models.Select(x => RestWebhook.Create(client, channel, x)) .ToImmutableArray(); } - // Categories + #endregion + + #region Categories public static async Task GetCategoryAsync(INestedChannel channel, BaseDiscordClient client, RequestOptions options) { // if no category id specified, return null @@ -441,7 +558,8 @@ namespace Discord.Rest public static async Task SyncPermissionsAsync(INestedChannel channel, BaseDiscordClient client, RequestOptions options) { var category = await GetCategoryAsync(channel, client, options).ConfigureAwait(false); - if (category == null) throw new InvalidOperationException("This channel does not have a parent channel."); + if (category == null) + throw new InvalidOperationException("This channel does not have a parent channel."); var apiArgs = new ModifyGuildChannelParams { @@ -456,5 +574,6 @@ namespace Discord.Rest }; await client.ApiClient.ModifyGuildChannelAsync(channel.Id, apiArgs, options).ConfigureAwait(false); } + #endregion } } diff --git a/src/Discord.Net.Rest/Entities/Channels/IRestMessageChannel.cs b/src/Discord.Net.Rest/Entities/Channels/IRestMessageChannel.cs index 09404d836..159735798 100644 --- a/src/Discord.Net.Rest/Entities/Channels/IRestMessageChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/IRestMessageChannel.cs @@ -25,17 +25,20 @@ namespace Discord.Rest /// If null, all mentioned roles and users will be notified. /// /// The message references to be included. Used to reply to specific messages. + /// The message components to be included with this message. Used for interactions. + /// A collection of stickers to send with the message. + /// A array of s to send with this response. Max 10. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - new Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null); + new Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null); /// /// Sends a file to this message channel with an optional caption. /// /// - /// This method follows the same behavior as described in - /// . Please visit + /// This method follows the same behavior as described in + /// . Please visit /// its documentation for more details on this method. /// /// The file path of the file. @@ -49,16 +52,19 @@ namespace Discord.Rest /// If null, all mentioned roles and users will be notified. /// /// The message references to be included. Used to reply to specific messages. + /// The message components to be included with this message. Used for interactions. + /// A collection of stickers to send with the message. + /// A array of s to send with this response. Max 10. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - new Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null); + new Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null); /// /// Sends a file to this message channel with an optional caption. /// /// - /// This method follows the same behavior as described in . + /// This method follows the same behavior as described in . /// Please visit its documentation for more details on this method. /// /// The of the file to be sent. @@ -73,11 +79,14 @@ namespace Discord.Rest /// If null, all mentioned roles and users will be notified. /// /// The message references to be included. Used to reply to specific messages. + /// The message components to be included with this message. Used for interactions. + /// A collection of stickers to send with the message. + /// A array of s to send with this response. Max 10. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - new Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null); + new Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null); /// /// Gets a message from this message channel. diff --git a/src/Discord.Net.Rest/Entities/Channels/RestCategoryChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestCategoryChannel.cs index 177bde21d..9f944501b 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestCategoryChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestCategoryChannel.cs @@ -12,6 +12,7 @@ namespace Discord.Rest [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class RestCategoryChannel : RestGuildChannel, ICategoryChannel { + #region RestCategoryChannel internal RestCategoryChannel(BaseDiscordClient discord, IGuild guild, ulong id) : base(discord, guild, id) { @@ -24,8 +25,9 @@ namespace Discord.Rest } private string DebuggerDisplay => $"{Name} ({Id}, Category)"; + #endregion - //IChannel + #region IChannel /// /// This method is not supported with category channels. IAsyncEnumerable> IChannel.GetUsersAsync(CacheMode mode, RequestOptions options) @@ -34,5 +36,6 @@ namespace Discord.Rest /// This method is not supported with category channels. Task IChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options) => throw new NotSupportedException(); + #endregion } } diff --git a/src/Discord.Net.Rest/Entities/Channels/RestChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestChannel.cs index 6f6a1f0d3..83c6d8bfb 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestChannel.cs @@ -11,6 +11,7 @@ namespace Discord.Rest /// public class RestChannel : RestEntity, IChannel, IUpdateable { + #region RestChannel /// public DateTimeOffset CreatedAt => SnowflakeUtils.FromSnowflake(Id); @@ -21,40 +22,55 @@ namespace Discord.Rest /// Unexpected channel type. internal static RestChannel Create(BaseDiscordClient discord, Model model) { - switch (model.Type) + return model.Type switch { - case ChannelType.News: - case ChannelType.Text: - case ChannelType.Voice: - return RestGuildChannel.Create(discord, new RestGuild(discord, model.GuildId.Value), model); - case ChannelType.DM: - case ChannelType.Group: - return CreatePrivate(discord, model) as RestChannel; - case ChannelType.Category: - return RestCategoryChannel.Create(discord, new RestGuild(discord, model.GuildId.Value), model); - default: - return new RestChannel(discord, model.Id); - } + ChannelType.News or + ChannelType.Text or + ChannelType.Voice or + ChannelType.Stage or + ChannelType.NewsThread or + ChannelType.PrivateThread or + ChannelType.PublicThread + => RestGuildChannel.Create(discord, new RestGuild(discord, model.GuildId.Value), model), + ChannelType.DM or ChannelType.Group => CreatePrivate(discord, model) as RestChannel, + ChannelType.Category => RestCategoryChannel.Create(discord, new RestGuild(discord, model.GuildId.Value), model), + _ => new RestChannel(discord, model.Id), + }; + } + internal static RestChannel Create(BaseDiscordClient discord, Model model, IGuild guild) + { + return model.Type switch + { + ChannelType.News or + ChannelType.Text or + ChannelType.Voice or + ChannelType.Stage or + ChannelType.NewsThread or + ChannelType.PrivateThread or + ChannelType.PublicThread + => RestGuildChannel.Create(discord, guild, model), + ChannelType.DM or ChannelType.Group => CreatePrivate(discord, model) as RestChannel, + ChannelType.Category => RestCategoryChannel.Create(discord, guild, model), + _ => new RestChannel(discord, model.Id), + }; } /// Unexpected channel type. internal static IRestPrivateChannel CreatePrivate(BaseDiscordClient discord, Model model) { - switch (model.Type) + return model.Type switch { - case ChannelType.DM: - return RestDMChannel.Create(discord, model); - case ChannelType.Group: - return RestGroupChannel.Create(discord, model); - default: - throw new InvalidOperationException($"Unexpected channel type: {model.Type}"); - } + ChannelType.DM => RestDMChannel.Create(discord, model), + ChannelType.Group => RestGroupChannel.Create(discord, model), + _ => throw new InvalidOperationException($"Unexpected channel type: {model.Type}"), + }; } internal virtual void Update(Model model) { } /// public virtual Task UpdateAsync(RequestOptions options = null) => Task.Delay(0); + #endregion - //IChannel + #region IChannel /// string IChannel.Name => null; @@ -64,5 +80,6 @@ namespace Discord.Rest /// IAsyncEnumerable> IChannel.GetUsersAsync(CacheMode mode, RequestOptions options) => AsyncEnumerable.Empty>(); //Overridden + #endregion } } diff --git a/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs index 6ccfd204c..1b91c6e62 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs @@ -15,6 +15,7 @@ namespace Discord.Rest [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class RestDMChannel : RestChannel, IDMChannel, IRestPrivateChannel, IRestMessageChannel { + #region RestDMChannel /// /// Gets the current logged-in user. /// @@ -93,8 +94,8 @@ namespace Discord.Rest /// /// Message content is too long, length must be less or equal to . - public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null) - => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, options); + public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); /// /// @@ -121,12 +122,22 @@ namespace Discord.Rest /// is in an invalid format. /// An I/O error occurred while opening the file. /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) - => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, options, isSpoiler); + public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, isSpoiler, embeds); /// /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) - => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, options, isSpoiler); + public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, isSpoiler, embeds); + + /// + /// Message content is too long, length must be less or equal to . + public Task SendFileAsync(FileAttachment attachment, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, attachment, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); + + /// + /// Message content is too long, length must be less or equal to . + public Task SendFilesAsync(IEnumerable attachments, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFilesAsync(this, Discord, attachments, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); /// public Task DeleteMessageAsync(ulong messageId, RequestOptions options = null) @@ -154,20 +165,24 @@ namespace Discord.Rest /// public override string ToString() => $"@{Recipient}"; private string DebuggerDisplay => $"@{Recipient} ({Id}, DM)"; + #endregion - //IDMChannel + #region IDMChannel /// IUser IDMChannel.Recipient => Recipient; + #endregion - //IRestPrivateChannel + #region IRestPrivateChannel /// IReadOnlyCollection IRestPrivateChannel.Recipients => ImmutableArray.Create(Recipient); + #endregion - //IPrivateChannel + #region IPrivateChannel /// IReadOnlyCollection IPrivateChannel.Recipients => ImmutableArray.Create(Recipient); + #endregion - //IMessageChannel + #region IMessageChannel /// async Task IMessageChannel.GetMessageAsync(ulong id, CacheMode mode, RequestOptions options) { @@ -204,16 +219,23 @@ namespace Discord.Rest async Task> IMessageChannel.GetPinnedMessagesAsync(RequestOptions options) => await GetPinnedMessagesAsync(options).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference) - => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + /// + async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + /// + async Task IMessageChannel.SendFileAsync(FileAttachment attachment, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(attachment, text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference) - => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference).ConfigureAwait(false); + async Task IMessageChannel.SendFilesAsync(IEnumerable attachments, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendFilesAsync(attachments, text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); /// - async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference) - => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference).ConfigureAwait(false); + async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + #endregion - //IChannel + #region IChannel /// string IChannel.Name => $"@{Recipient}"; @@ -223,5 +245,6 @@ namespace Discord.Rest /// IAsyncEnumerable> IChannel.GetUsersAsync(CacheMode mode, RequestOptions options) => ImmutableArray.Create>(Users).ToAsyncEnumerable(); + #endregion } } diff --git a/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs index 2b0ab8b42..83ff3f558 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs @@ -16,6 +16,7 @@ namespace Discord.Rest [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class RestGroupChannel : RestChannel, IGroupChannel, IRestPrivateChannel, IRestMessageChannel, IRestAudioChannel { + #region RestGroupChannel private string _iconId; private ImmutableDictionary _users; @@ -99,8 +100,8 @@ namespace Discord.Rest /// /// Message content is too long, length must be less or equal to . - public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null) - => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, options); + public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); /// /// @@ -127,13 +128,20 @@ namespace Discord.Rest /// is in an invalid format. /// An I/O error occurred while opening the file. /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) - => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, options, isSpoiler); + public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, isSpoiler, embeds); /// /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) - => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, options, isSpoiler); - + public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, isSpoiler, embeds); + /// + /// Message content is too long, length must be less or equal to . + public Task SendFileAsync(FileAttachment attachment, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, attachment, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); + /// + /// Message content is too long, length must be less or equal to . + public Task SendFilesAsync(IEnumerable attachments, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFilesAsync(this, Discord, attachments, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); /// public Task TriggerTypingAsync(RequestOptions options = null) => ChannelHelper.TriggerTypingAsync(this, Discord, options); @@ -143,14 +151,17 @@ namespace Discord.Rest public override string ToString() => Name; private string DebuggerDisplay => $"{Name} ({Id}, Group)"; + #endregion - //ISocketPrivateChannel + #region ISocketPrivateChannel IReadOnlyCollection IRestPrivateChannel.Recipients => Recipients; + #endregion - //IPrivateChannel + #region IPrivateChannel IReadOnlyCollection IPrivateChannel.Recipients => Recipients; + #endregion - //IMessageChannel + #region IMessageChannel async Task IMessageChannel.GetMessageAsync(ulong id, CacheMode mode, RequestOptions options) { if (mode == CacheMode.AllowDownload) @@ -182,25 +193,31 @@ namespace Discord.Rest async Task> IMessageChannel.GetPinnedMessagesAsync(RequestOptions options) => await GetPinnedMessagesAsync(options).ConfigureAwait(false); - async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference) - => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference).ConfigureAwait(false); - - async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference) - => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); - async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference) - => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(FileAttachment attachment, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(attachment, text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendFilesAsync(IEnumerable attachments, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendFilesAsync(attachments, text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + #endregion - //IAudioChannel + #region IAudioChannel /// /// Connecting to a group channel is not supported. Task IAudioChannel.ConnectAsync(bool selfDeaf, bool selfMute, bool external) { throw new NotSupportedException(); } Task IAudioChannel.DisconnectAsync() { throw new NotSupportedException(); } + #endregion - //IChannel + #region IChannel Task IChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options) => Task.FromResult(GetUser(id)); IAsyncEnumerable> IChannel.GetUsersAsync(CacheMode mode, RequestOptions options) => ImmutableArray.Create>(Users).ToAsyncEnumerable(); + #endregion } } diff --git a/src/Discord.Net.Rest/Entities/Channels/RestGuildChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestGuildChannel.cs index fdfee39ea..bc9d4110a 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestGuildChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestGuildChannel.cs @@ -12,6 +12,7 @@ namespace Discord.Rest /// public class RestGuildChannel : RestChannel, IGuildChannel { + #region RestGuildChannel private ImmutableArray _overwrites; /// @@ -32,30 +33,34 @@ namespace Discord.Rest } internal static RestGuildChannel Create(BaseDiscordClient discord, IGuild guild, Model model) { - switch (model.Type) + return model.Type switch { - case ChannelType.News: - return RestNewsChannel.Create(discord, guild, model); - case ChannelType.Text: - return RestTextChannel.Create(discord, guild, model); - case ChannelType.Voice: - return RestVoiceChannel.Create(discord, guild, model); - case ChannelType.Category: - return RestCategoryChannel.Create(discord, guild, model); - default: - return new RestGuildChannel(discord, guild, model.Id); - } + ChannelType.News => RestNewsChannel.Create(discord, guild, model), + ChannelType.Text => RestTextChannel.Create(discord, guild, model), + ChannelType.Voice => RestVoiceChannel.Create(discord, guild, model), + ChannelType.Stage => RestStageChannel.Create(discord, guild, model), + ChannelType.Category => RestCategoryChannel.Create(discord, guild, model), + ChannelType.PublicThread or ChannelType.PrivateThread or ChannelType.NewsThread => RestThreadChannel.Create(discord, guild, model), + _ => new RestGuildChannel(discord, guild, model.Id), + }; } internal override void Update(Model model) { Name = model.Name.Value; - Position = model.Position.Value; - var overwrites = model.PermissionOverwrites.Value; - var newOverwrites = ImmutableArray.CreateBuilder(overwrites.Length); - for (int i = 0; i < overwrites.Length; i++) - newOverwrites.Add(overwrites[i].ToEntity()); - _overwrites = newOverwrites.ToImmutable(); + if (model.Position.IsSpecified) + { + Position = model.Position.Value; + } + + if (model.PermissionOverwrites.IsSpecified) + { + var overwrites = model.PermissionOverwrites.Value; + var newOverwrites = ImmutableArray.CreateBuilder(overwrites.Length); + for (int i = 0; i < overwrites.Length; i++) + newOverwrites.Add(overwrites[i].ToEntity()); + _overwrites = newOverwrites.ToImmutable(); + } } /// @@ -187,8 +192,9 @@ namespace Discord.Rest /// A string that is the name of this channel. /// public override string ToString() => Name; + #endregion - //IGuildChannel + #region IGuildChannel /// IGuild IGuildChannel.Guild { @@ -225,13 +231,15 @@ namespace Discord.Rest /// Task IGuildChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options) => Task.FromResult(null); //Overridden in Text/Voice + #endregion - //IChannel + #region IChannel /// IAsyncEnumerable> IChannel.GetUsersAsync(CacheMode mode, RequestOptions options) => AsyncEnumerable.Empty>(); //Overridden in Text/Voice /// Task IChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options) => Task.FromResult(null); //Overridden in Text/Voice + #endregion } } diff --git a/src/Discord.Net.Rest/Entities/Channels/RestStageChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestStageChannel.cs new file mode 100644 index 000000000..c01df96fd --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Channels/RestStageChannel.cs @@ -0,0 +1,150 @@ +using Discord.API; +using Discord.API.Rest; +using System; +using System.Threading.Tasks; +using Model = Discord.API.Channel; + +namespace Discord.Rest +{ + /// + /// Represents a REST-based stage channel in a guild. + /// + public class RestStageChannel : RestVoiceChannel, IStageChannel + { + /// + public string Topic { get; private set; } + + /// + public StagePrivacyLevel? PrivacyLevel { get; private set; } + + /// + public bool? IsDiscoverableDisabled { get; private set; } + + /// + public bool IsLive { get; private set; } + internal RestStageChannel(BaseDiscordClient discord, IGuild guild, ulong id) + : base(discord, guild, id) { } + + internal new static RestStageChannel Create(BaseDiscordClient discord, IGuild guild, Model model) + { + var entity = new RestStageChannel(discord, guild, model.Id); + entity.Update(model); + return entity; + } + + internal void Update(StageInstance model, bool isLive = false) + { + IsLive = isLive; + if(isLive) + { + Topic = model.Topic; + PrivacyLevel = model.PrivacyLevel; + IsDiscoverableDisabled = model.DiscoverableDisabled; + } + else + { + Topic = null; + PrivacyLevel = null; + IsDiscoverableDisabled = null; + } + } + + /// + public async Task ModifyInstanceAsync(Action func, RequestOptions options = null) + { + var model = await ChannelHelper.ModifyAsync(this, Discord, func, options); + + Update(model, true); + } + + /// + public async Task StartStageAsync(string topic, StagePrivacyLevel privacyLevel = StagePrivacyLevel.GuildOnly, RequestOptions options = null) + { + var args = new CreateStageInstanceParams + { + ChannelId = Id, + PrivacyLevel = privacyLevel, + Topic = topic + }; + + var model = await Discord.ApiClient.CreateStageInstanceAsync(args, options); + + Update(model, true); + } + + /// + public async Task StopStageAsync(RequestOptions options = null) + { + await Discord.ApiClient.DeleteStageInstanceAsync(Id, options); + + Update(null); + } + + /// + public override async Task UpdateAsync(RequestOptions options = null) + { + await base.UpdateAsync(options); + + var model = await Discord.ApiClient.GetStageInstanceAsync(Id, options); + + Update(model, model != null); + } + + /// + public Task RequestToSpeakAsync(RequestOptions options = null) + { + var args = new ModifyVoiceStateParams + { + ChannelId = Id, + RequestToSpeakTimestamp = DateTimeOffset.UtcNow + }; + return Discord.ApiClient.ModifyMyVoiceState(Guild.Id, args, options); + } + + /// + public Task BecomeSpeakerAsync(RequestOptions options = null) + { + var args = new ModifyVoiceStateParams + { + ChannelId = Id, + Suppressed = false + }; + return Discord.ApiClient.ModifyMyVoiceState(Guild.Id, args, options); + } + + /// + public Task StopSpeakingAsync(RequestOptions options = null) + { + var args = new ModifyVoiceStateParams + { + ChannelId = Id, + Suppressed = true + }; + return Discord.ApiClient.ModifyMyVoiceState(Guild.Id, args, options); + } + + /// + public Task MoveToSpeakerAsync(IGuildUser user, RequestOptions options = null) + { + var args = new ModifyVoiceStateParams + { + ChannelId = Id, + Suppressed = false + }; + + return Discord.ApiClient.ModifyUserVoiceState(Guild.Id, user.Id, args); + } + + /// + public Task RemoveFromSpeakerAsync(IGuildUser user, RequestOptions options = null) + { + var args = new ModifyVoiceStateParams + { + ChannelId = Id, + Suppressed = true + }; + + return Discord.ApiClient.ModifyUserVoiceState(Guild.Id, user.Id, args); + } + } +} diff --git a/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs index c6d0b0509..f14bc2ecf 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs @@ -14,10 +14,11 @@ namespace Discord.Rest [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class RestTextChannel : RestGuildChannel, IRestMessageChannel, ITextChannel { + #region RestTextChannel /// public string Topic { get; private set; } /// - public virtual int SlowModeInterval { get; private set; } + public virtual int SlowModeInterval { get; private set; } /// public ulong? CategoryId { get; private set; } @@ -41,14 +42,14 @@ namespace Discord.Rest { base.Update(model); CategoryId = model.CategoryId; - Topic = model.Topic.Value; + Topic = model.Topic.GetValueOrDefault(); if (model.SlowMode.IsSpecified) SlowModeInterval = model.SlowMode.Value; IsNsfw = model.Nsfw.GetValueOrDefault(); } /// - public async Task ModifyAsync(Action func, RequestOptions options = null) + public virtual async Task ModifyAsync(Action func, RequestOptions options = null) { var model = await ChannelHelper.ModifyAsync(this, Discord, func, options).ConfigureAwait(false); Update(model); @@ -78,7 +79,7 @@ namespace Discord.Rest /// /// /// A paged collection containing a collection of guild users that can access this channel. Flattening the - /// paginated response into a collection of users with + /// paginated response into a collection of users with /// is required if you wish to access the users. /// public IAsyncEnumerable> GetUsersAsync(RequestOptions options = null) @@ -102,8 +103,8 @@ namespace Discord.Rest /// /// Message content is too long, length must be less or equal to . - public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null) - => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, options); + public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); /// /// @@ -130,13 +131,23 @@ namespace Discord.Rest /// is in an invalid format. /// An I/O error occurred while opening the file. /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) - => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, options, isSpoiler); + public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, isSpoiler, embeds); /// /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) - => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, options, isSpoiler); + public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, isSpoiler, embeds); + + /// + /// Message content is too long, length must be less or equal to . + public Task SendFileAsync(FileAttachment attachment, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, attachment, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); + + /// + /// Message content is too long, length must be less or equal to . + public Task SendFilesAsync(IEnumerable attachments, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFilesAsync(this, Discord, attachments, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); /// public Task DeleteMessageAsync(ulong messageId, RequestOptions options = null) @@ -173,7 +184,7 @@ namespace Discord.Rest /// A task that represents the asynchronous creation operation. The task result contains the newly created /// webhook. /// - public Task CreateWebhookAsync(string name, Stream avatar = null, RequestOptions options = null) + public virtual Task CreateWebhookAsync(string name, Stream avatar = null, RequestOptions options = null) => ChannelHelper.CreateWebhookAsync(this, Discord, name, avatar, options); /// /// Gets a webhook available in this text channel. @@ -184,7 +195,7 @@ namespace Discord.Rest /// A task that represents the asynchronous get operation. The task result contains a webhook associated /// with the identifier; null if the webhook is not found. /// - public Task GetWebhookAsync(ulong id, RequestOptions options = null) + public virtual Task GetWebhookAsync(ulong id, RequestOptions options = null) => ChannelHelper.GetWebhookAsync(this, Discord, id, options); /// /// Gets the webhooks available in this text channel. @@ -194,7 +205,7 @@ namespace Discord.Rest /// A task that represents the asynchronous get operation. The task result contains a read-only collection /// of webhooks that is available in this channel. /// - public Task> GetWebhooksAsync(RequestOptions options = null) + public virtual Task> GetWebhooksAsync(RequestOptions options = null) => ChannelHelper.GetWebhooksAsync(this, Discord, options); /// @@ -205,23 +216,66 @@ namespace Discord.Rest /// A task that represents the asynchronous get operation. The task result contains the category channel /// representing the parent of this channel; null if none is set. /// - public Task GetCategoryAsync(RequestOptions options = null) + public virtual Task GetCategoryAsync(RequestOptions options = null) => ChannelHelper.GetCategoryAsync(this, Discord, options); /// public Task SyncPermissionsAsync(RequestOptions options = null) => ChannelHelper.SyncPermissionsAsync(this, Discord, options); + #endregion - //Invites + #region Invites /// - public async Task CreateInviteAsync(int? maxAge = 86400, int? maxUses = null, bool isTemporary = false, bool isUnique = false, RequestOptions options = null) + public virtual async Task CreateInviteAsync(int? maxAge = 86400, int? maxUses = null, bool isTemporary = false, bool isUnique = false, RequestOptions options = null) => await ChannelHelper.CreateInviteAsync(this, Discord, maxAge, maxUses, isTemporary, isUnique, options).ConfigureAwait(false); + public virtual Task CreateInviteToApplicationAsync(ulong applicationId, int? maxAge, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null) + => throw new NotImplementedException(); + public virtual Task CreateInviteToStreamAsync(IUser user, int? maxAge, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null) + => throw new NotImplementedException(); /// - public async Task> GetInvitesAsync(RequestOptions options = null) + public virtual async Task> GetInvitesAsync(RequestOptions options = null) => await ChannelHelper.GetInvitesAsync(this, Discord, options).ConfigureAwait(false); private string DebuggerDisplay => $"{Name} ({Id}, Text)"; - //ITextChannel + /// + /// Creates a thread within this . + /// + /// + /// When is the thread type will be based off of the + /// channel its created in. When called on a , it creates a . + /// When called on a , it creates a . The id of the created + /// thread will be the same as the id of the message, and as such a message can only have a + /// single thread created from it. + /// + /// The name of the thread. + /// + /// The type of the thread. + /// + /// Note: This parameter is not used if the parameter is not specified. + /// + /// + /// + /// The duration on which this thread archives after. + /// + /// Note: Options and + /// are only available for guilds that are boosted. You can check in the to see if the + /// guild has the THREE_DAY_THREAD_ARCHIVE and SEVEN_DAY_THREAD_ARCHIVE. + /// + /// + /// The message which to start the thread from. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous create operation. The task result contains a + /// + public async Task CreateThreadAsync(string name, ThreadType type = ThreadType.PublicThread, + ThreadArchiveDuration autoArchiveDuration = ThreadArchiveDuration.OneDay, IMessage message = null, bool? invitable = null, int? slowmode = null, RequestOptions options = null) + { + var model = await ThreadHelper.CreateThreadAsync(Discord, this, name, type, autoArchiveDuration, message, invitable, slowmode, options); + return RestThreadChannel.Create(Discord, Guild, model); + } + #endregion + + #region ITextChannel /// async Task ITextChannel.CreateWebhookAsync(string name, Stream avatar, RequestOptions options) => await CreateWebhookAsync(name, avatar, options).ConfigureAwait(false); @@ -232,7 +286,11 @@ namespace Discord.Rest async Task> ITextChannel.GetWebhooksAsync(RequestOptions options) => await GetWebhooksAsync(options).ConfigureAwait(false); - //IMessageChannel + async Task ITextChannel.CreateThreadAsync(string name, ThreadType type, ThreadArchiveDuration autoArchiveDuration, IMessage message, bool? invitable, int? slowmode, RequestOptions options) + => await CreateThreadAsync(name, type, autoArchiveDuration, message, invitable, slowmode, options); + #endregion + + #region IMessageChannel /// async Task IMessageChannel.GetMessageAsync(ulong id, CacheMode mode, RequestOptions options) { @@ -271,17 +329,27 @@ namespace Discord.Rest => await GetPinnedMessagesAsync(options).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference) - => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference) - => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + + /// + async Task IMessageChannel.SendFileAsync(FileAttachment attachment, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(attachment, text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + + /// + async Task IMessageChannel.SendFilesAsync(IEnumerable attachments, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendFilesAsync(attachments, text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + /// - async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference) - => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference).ConfigureAwait(false); + async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + #endregion - //IGuildChannel + #region IGuildChannel /// async Task IGuildChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options) { @@ -298,8 +366,9 @@ namespace Discord.Rest else return AsyncEnumerable.Empty>(); } + #endregion - //IChannel + #region IChannel /// async Task IChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options) { @@ -316,8 +385,9 @@ namespace Discord.Rest else return AsyncEnumerable.Empty>(); } + #endregion - // INestedChannel + #region INestedChannel /// async Task INestedChannel.GetCategoryAsync(CacheMode mode, RequestOptions options) { @@ -325,5 +395,6 @@ namespace Discord.Rest return (await Guild.GetChannelAsync(CategoryId.Value, mode, options).ConfigureAwait(false)) as ICategoryChannel; return null; } + #endregion } } diff --git a/src/Discord.Net.Rest/Entities/Channels/RestThreadChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestThreadChannel.cs new file mode 100644 index 000000000..63071b9a5 --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Channels/RestThreadChannel.cs @@ -0,0 +1,223 @@ +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.IO; +using System.Threading.Tasks; +using Model = Discord.API.Channel; + +namespace Discord.Rest +{ + /// + /// Represents a thread channel received over REST. + /// + public class RestThreadChannel : RestTextChannel, IThreadChannel + { + public ThreadType Type { get; private set; } + /// + public bool HasJoined { get; private set; } + + /// + public bool IsArchived { get; private set; } + + /// + public ThreadArchiveDuration AutoArchiveDuration { get; private set; } + + /// + public DateTimeOffset ArchiveTimestamp { get; private set; } + + /// + public bool IsLocked { get; private set; } + + /// + public int MemberCount { get; private set; } + + /// + public int MessageCount { get; private set; } + + /// + /// Gets the parent text channel id. + /// + public ulong ParentChannelId { get; private set; } + + internal RestThreadChannel(BaseDiscordClient discord, IGuild guild, ulong id) + : base(discord, guild, id) { } + + internal new static RestThreadChannel Create(BaseDiscordClient discord, IGuild guild, Model model) + { + var entity = new RestThreadChannel(discord, guild, model.Id); + entity.Update(model); + return entity; + } + + internal override void Update(Model model) + { + base.Update(model); + + HasJoined = model.ThreadMember.IsSpecified; + + if (model.ThreadMetadata.IsSpecified) + { + IsArchived = model.ThreadMetadata.Value.Archived; + AutoArchiveDuration = model.ThreadMetadata.Value.AutoArchiveDuration; + ArchiveTimestamp = model.ThreadMetadata.Value.ArchiveTimestamp; + IsLocked = model.ThreadMetadata.Value.Locked.GetValueOrDefault(false); + } + + MemberCount = model.MemberCount.GetValueOrDefault(0); + MessageCount = model.MessageCount.GetValueOrDefault(0); + Type = (ThreadType)model.Type; + ParentChannelId = model.CategoryId.Value; + } + + /// + /// Gets a user within this thread. + /// + /// The id of the user to fetch. + /// The options to be used when sending the request. + /// + /// A task representing the asynchronous get operation. The task returns a + /// if found, otherwise . + /// + public new Task GetUserAsync(ulong userId, RequestOptions options = null) + => ThreadHelper.GetUserAsync(userId, this, Discord, options); + + /// + /// Gets a collection of users within this thread. + /// + /// The options to be used when sending the request. + /// + /// A task representing the asynchronous get operation. The task returns a + /// of 's. + /// + public new async Task> GetUsersAsync(RequestOptions options = null) + => (await ThreadHelper.GetUsersAsync(this, Discord, options).ConfigureAwait(false)).ToImmutableArray(); + + /// + public override async Task ModifyAsync(Action func, RequestOptions options = null) + { + var model = await ThreadHelper.ModifyAsync(this, Discord, func, options); + Update(model); + } + + /// + /// + /// This method is not supported in threads. + /// + public override Task AddPermissionOverwriteAsync(IRole role, OverwritePermissions permissions, RequestOptions options = null) + => throw new NotSupportedException("This method is not supported in threads."); + + /// + /// + /// This method is not supported in threads. + /// + public override Task AddPermissionOverwriteAsync(IUser user, OverwritePermissions permissions, RequestOptions options = null) + => throw new NotSupportedException("This method is not supported in threads."); + + /// + /// + /// This method is not supported in threads. + /// + public override Task CreateInviteAsync(int? maxAge = 86400, int? maxUses = null, bool isTemporary = false, bool isUnique = false, RequestOptions options = null) + => throw new NotSupportedException("This method is not supported in threads."); + + /// + /// + /// This method is not supported in threads. + /// + public override Task CreateInviteToApplicationAsync(ulong applicationId, int? maxAge, int? maxUses = null, bool isTemporary = false, bool isUnique = false, RequestOptions options = null) + => throw new NotSupportedException("This method is not supported in threads."); + + /// + /// + /// This method is not supported in threads. + /// + public override Task CreateInviteToStreamAsync(IUser user, int? maxAge, int? maxUses = null, bool isTemporary = false, bool isUnique = false, RequestOptions options = null) + => throw new NotSupportedException("This method is not supported in threads."); + + /// + /// + /// This method is not supported in threads. + /// + public override Task CreateWebhookAsync(string name, Stream avatar = null, RequestOptions options = null) + => throw new NotSupportedException("This method is not supported in threads."); + + /// + /// + /// This method is not supported in threads. + /// + public override Task GetCategoryAsync(RequestOptions options = null) + => throw new NotSupportedException("This method is not supported in threads."); + + /// + /// + /// This method is not supported in threads. + /// + public override Task> GetInvitesAsync(RequestOptions options = null) + => throw new NotSupportedException("This method is not supported in threads."); + + /// + /// + /// This method is not supported in threads. + /// + public override OverwritePermissions? GetPermissionOverwrite(IRole role) + => throw new NotSupportedException("This method is not supported in threads."); + + /// + /// + /// This method is not supported in threads. + /// + public override OverwritePermissions? GetPermissionOverwrite(IUser user) + => throw new NotSupportedException("This method is not supported in threads."); + + /// + /// + /// This method is not supported in threads. + /// + public override Task GetWebhookAsync(ulong id, RequestOptions options = null) + => throw new NotSupportedException("This method is not supported in threads."); + + /// + /// + /// This method is not supported in threads. + /// + public override Task> GetWebhooksAsync(RequestOptions options = null) + => throw new NotSupportedException("This method is not supported in threads."); + + /// + /// + /// This method is not supported in threads. + /// + public override Task RemovePermissionOverwriteAsync(IRole role, RequestOptions options = null) + => throw new NotSupportedException("This method is not supported in threads."); + + /// + /// + /// This method is not supported in threads. + /// + public override Task RemovePermissionOverwriteAsync(IUser user, RequestOptions options = null) + => throw new NotSupportedException("This method is not supported in threads."); + + /// + /// + /// This method is not supported in threads. + /// + public override IReadOnlyCollection PermissionOverwrites + => throw new NotSupportedException("This method is not supported in threads."); + + /// + public Task JoinAsync(RequestOptions options = null) + => Discord.ApiClient.JoinThreadAsync(Id, options); + + /// + public Task LeaveAsync(RequestOptions options = null) + => Discord.ApiClient.LeaveThreadAsync(Id, options); + + /// + public Task AddUserAsync(IGuildUser user, RequestOptions options = null) + => Discord.ApiClient.AddThreadMemberAsync(Id, user.Id, options); + + /// + public Task RemoveUserAsync(IGuildUser user, RequestOptions options = null) + => Discord.ApiClient.RemoveThreadMemberAsync(Id, user.Id, options); + } +} diff --git a/src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs index e958f2c03..48fc11dcb 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs @@ -14,6 +14,7 @@ namespace Discord.Rest [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class RestVoiceChannel : RestGuildChannel, IVoiceChannel, IRestAudioChannel { + #region RestVoiceChannel /// public int Bitrate { get; private set; } /// @@ -39,8 +40,12 @@ namespace Discord.Rest { base.Update(model); CategoryId = model.CategoryId; - Bitrate = model.Bitrate.Value; - UserLimit = model.UserLimit.Value != 0 ? model.UserLimit.Value : (int?)null; + + if(model.Bitrate.IsSpecified) + Bitrate = model.Bitrate.Value; + + if(model.UserLimit.IsSpecified) + UserLimit = model.UserLimit.Value != 0 ? model.UserLimit.Value : (int?)null; } /// @@ -63,32 +68,42 @@ namespace Discord.Rest /// public Task SyncPermissionsAsync(RequestOptions options = null) => ChannelHelper.SyncPermissionsAsync(this, Discord, options); + #endregion - //Invites + #region Invites /// public async Task CreateInviteAsync(int? maxAge = 86400, int? maxUses = null, bool isTemporary = false, bool isUnique = false, RequestOptions options = null) => await ChannelHelper.CreateInviteAsync(this, Discord, maxAge, maxUses, isTemporary, isUnique, options).ConfigureAwait(false); /// + public async Task CreateInviteToApplicationAsync(ulong applicationId, int? maxAge, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null) + => await ChannelHelper.CreateInviteToApplicationAsync(this, Discord, maxAge, maxUses, isTemporary, isUnique, applicationId, options).ConfigureAwait(false); + /// + public async Task CreateInviteToStreamAsync(IUser user, int? maxAge, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null) + => await ChannelHelper.CreateInviteToStreamAsync(this, Discord, maxAge, maxUses, isTemporary, isUnique, user, options).ConfigureAwait(false); + /// public async Task> GetInvitesAsync(RequestOptions options = null) => await ChannelHelper.GetInvitesAsync(this, Discord, options).ConfigureAwait(false); private string DebuggerDisplay => $"{Name} ({Id}, Voice)"; + #endregion - //IAudioChannel + #region IAudioChannel /// /// Connecting to a REST-based channel is not supported. Task IAudioChannel.ConnectAsync(bool selfDeaf, bool selfMute, bool external) { throw new NotSupportedException(); } Task IAudioChannel.DisconnectAsync() { throw new NotSupportedException(); } + #endregion - //IGuildChannel + #region IGuildChannel /// Task IGuildChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options) => Task.FromResult(null); /// IAsyncEnumerable> IGuildChannel.GetUsersAsync(CacheMode mode, RequestOptions options) => AsyncEnumerable.Empty>(); + #endregion - // INestedChannel + #region INestedChannel /// async Task INestedChannel.GetCategoryAsync(CacheMode mode, RequestOptions options) { @@ -96,5 +111,6 @@ namespace Discord.Rest return (await Guild.GetChannelAsync(CategoryId.Value, mode, options).ConfigureAwait(false)) as ICategoryChannel; return null; } + #endregion } } diff --git a/src/Discord.Net.Rest/Entities/Channels/ThreadHelper.cs b/src/Discord.Net.Rest/Entities/Channels/ThreadHelper.cs new file mode 100644 index 000000000..917410f98 --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Channels/ThreadHelper.cs @@ -0,0 +1,74 @@ +using Discord.API.Rest; +using System; +using System.Linq; +using System.Threading.Tasks; +using Model = Discord.API.Channel; + +namespace Discord.Rest +{ + internal static class ThreadHelper + { + public static async Task CreateThreadAsync(BaseDiscordClient client, ITextChannel channel, string name, ThreadType type = ThreadType.PublicThread, + ThreadArchiveDuration autoArchiveDuration = ThreadArchiveDuration.OneDay, IMessage message = null, bool? invitable = null, int? slowmode = null, RequestOptions options = null) + { + var features = channel.Guild.Features; + if (autoArchiveDuration == ThreadArchiveDuration.OneWeek && !features.HasFeature(GuildFeature.SevenDayThreadArchive)) + throw new ArgumentException($"The guild {channel.Guild.Name} does not have the SEVEN_DAY_THREAD_ARCHIVE feature!", nameof(autoArchiveDuration)); + + if (autoArchiveDuration == ThreadArchiveDuration.ThreeDays && !features.HasFeature(GuildFeature.ThreeDayThreadArchive)) + throw new ArgumentException($"The guild {channel.Guild.Name} does not have the THREE_DAY_THREAD_ARCHIVE feature!", nameof(autoArchiveDuration)); + + if (type == ThreadType.PrivateThread && !features.HasFeature(GuildFeature.PrivateThreads)) + throw new ArgumentException($"The guild {channel.Guild.Name} does not have the PRIVATE_THREADS feature!", nameof(type)); + + var args = new StartThreadParams + { + Name = name, + Duration = autoArchiveDuration, + Type = type, + Invitable = invitable.HasValue ? invitable.Value : Optional.Unspecified, + Ratelimit = slowmode.HasValue ? slowmode.Value : Optional.Unspecified, + }; + + Model model; + + if (message != null) + model = await client.ApiClient.StartThreadAsync(channel.Id, message.Id, args, options).ConfigureAwait(false); + else + model = await client.ApiClient.StartThreadAsync(channel.Id, args, options).ConfigureAwait(false); + + return model; + } + + public static async Task ModifyAsync(IThreadChannel channel, BaseDiscordClient client, + Action func, + RequestOptions options) + { + var args = new TextChannelProperties(); + func(args); + var apiArgs = new ModifyThreadParams + { + Name = args.Name, + Archived = args.Archived, + AutoArchiveDuration = args.AutoArchiveDuration, + Locked = args.Locked, + Slowmode = args.SlowModeInterval + }; + return await client.ApiClient.ModifyThreadAsync(channel.Id, apiArgs, options).ConfigureAwait(false); + } + + public static async Task GetUsersAsync(IThreadChannel channel, BaseDiscordClient client, RequestOptions options = null) + { + var users = await client.ApiClient.ListThreadMembersAsync(channel.Id, options); + + return users.Select(x => RestThreadUser.Create(client, channel.Guild, x, channel)).ToArray(); + } + + public static async Task GetUserAsync(ulong userId, IThreadChannel channel, BaseDiscordClient client, RequestOptions options = null) + { + var model = await client.ApiClient.GetThreadMemberAsync(channel.Id, userId, options).ConfigureAwait(false); + + return RestThreadUser.Create(client, channel.Guild, model, channel); + } + } +} diff --git a/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs b/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs index 58a4ea2c8..2cdbbb7b5 100644 --- a/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs +++ b/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs @@ -8,12 +8,13 @@ using WidgetModel = Discord.API.GuildWidget; using Model = Discord.API.Guild; using RoleModel = Discord.API.Role; using ImageModel = Discord.API.Image; +using System.IO; namespace Discord.Rest { internal static class GuildHelper { - //General + #region General /// is null. public static async Task ModifyAsync(IGuild guild, BaseDiscordClient client, Action func, RequestOptions options) @@ -35,7 +36,8 @@ namespace Discord.Rest Banner = args.Banner.IsSpecified ? args.Banner.Value?.ToModel() : Optional.Create(), VerificationLevel = args.VerificationLevel, ExplicitContentFilter = args.ExplicitContentFilter, - SystemChannelFlags = args.SystemChannelFlags + SystemChannelFlags = args.SystemChannelFlags, + IsBoostProgressBarEnabled = args.IsBoostProgressBarEnabled }; if (args.AfkChannel.IsSpecified) @@ -122,8 +124,9 @@ namespace Discord.Rest { await client.ApiClient.DeleteGuildAsync(guild.Id, options).ConfigureAwait(false); } + #endregion - //Bans + #region Bans public static async Task> GetBansAsync(IGuild guild, BaseDiscordClient client, RequestOptions options) { @@ -147,8 +150,9 @@ namespace Discord.Rest { await client.ApiClient.RemoveGuildBanAsync(guild.Id, userId, options).ConfigureAwait(false); } + #endregion - //Channels + #region Channels public static async Task GetChannelAsync(IGuild guild, BaseDiscordClient client, ulong id, RequestOptions options) { @@ -220,6 +224,34 @@ namespace Discord.Rest var model = await client.ApiClient.CreateGuildChannelAsync(guild.Id, args, options).ConfigureAwait(false); return RestVoiceChannel.Create(client, guild, model); } + public static async Task CreateStageChannelAsync(IGuild guild, BaseDiscordClient client, + string name, RequestOptions options, Action func = null) + { + if (name == null) + throw new ArgumentNullException(paramName: nameof(name)); + + var props = new VoiceChannelProperties(); + func?.Invoke(props); + + var args = new CreateGuildChannelParams(name, ChannelType.Stage) + { + CategoryId = props.CategoryId, + Bitrate = props.Bitrate, + UserLimit = props.UserLimit, + Position = props.Position, + Overwrites = props.PermissionOverwrites.IsSpecified + ? props.PermissionOverwrites.Value.Select(overwrite => new API.Overwrite + { + TargetId = overwrite.TargetId, + TargetType = overwrite.TargetType, + Allow = overwrite.Permissions.AllowValue.ToString(), + Deny = overwrite.Permissions.DenyValue.ToString() + }).ToArray() + : Optional.Create(), + }; + var model = await client.ApiClient.CreateGuildChannelAsync(guild.Id, args, options).ConfigureAwait(false); + return RestStageChannel.Create(client, guild, model); + } /// is null. public static async Task CreateCategoryChannelAsync(IGuild guild, BaseDiscordClient client, string name, RequestOptions options, Action func = null) @@ -246,16 +278,18 @@ namespace Discord.Rest var model = await client.ApiClient.CreateGuildChannelAsync(guild.Id, args, options).ConfigureAwait(false); return RestCategoryChannel.Create(client, guild, model); } + #endregion - //Voice Regions + #region Voice Regions public static async Task> GetVoiceRegionsAsync(IGuild guild, BaseDiscordClient client, RequestOptions options) { var models = await client.ApiClient.GetGuildVoiceRegionsAsync(guild.Id, options).ConfigureAwait(false); return models.Select(x => RestVoiceRegion.Create(client, x)).ToImmutableArray(); } + #endregion - //Integrations + #region Integrations public static async Task> GetIntegrationsAsync(IGuild guild, BaseDiscordClient client, RequestOptions options) { @@ -269,8 +303,24 @@ namespace Discord.Rest var model = await client.ApiClient.CreateGuildIntegrationAsync(guild.Id, args, options).ConfigureAwait(false); return RestGuildIntegration.Create(client, guild, model); } + #endregion + + #region Interactions + public static async Task> GetSlashCommandsAsync(IGuild guild, BaseDiscordClient client, + RequestOptions options) + { + var models = await client.ApiClient.GetGuildApplicationCommandsAsync(guild.Id, options); + return models.Select(x => RestGuildCommand.Create(client, x, guild.Id)).ToImmutableArray(); + } + public static async Task GetSlashCommandAsync(IGuild guild, ulong id, BaseDiscordClient client, + RequestOptions options) + { + var model = await client.ApiClient.GetGuildApplicationCommandAsync(guild.Id, id, options); + return RestGuildCommand.Create(client, model, guild.Id); + } + #endregion - //Invites + #region Invites public static async Task> GetInvitesAsync(IGuild guild, BaseDiscordClient client, RequestOptions options) { @@ -286,8 +336,9 @@ namespace Discord.Rest inviteModel.Uses = vanityModel.Uses; return RestInviteMetadata.Create(client, guild, null, inviteModel); } + #endregion - //Roles + #region Roles /// is null. public static async Task CreateRoleAsync(IGuild guild, BaseDiscordClient client, string name, GuildPermissions? permissions, Color? color, bool isHoisted, bool isMentionable, RequestOptions options) @@ -307,8 +358,9 @@ namespace Discord.Rest return RestRole.Create(client, guild, model); } + #endregion - //Users + #region Users public static async Task AddGuildUserAsync(IGuild guild, BaseDiscordClient client, ulong userId, string accessToken, Action func, RequestOptions options) { @@ -427,8 +479,9 @@ namespace Discord.Rest var models = await client.ApiClient.SearchGuildMembersAsync(guild.Id, apiArgs, options).ConfigureAwait(false); return models.Select(x => RestGuildUser.Create(client, guild, x)).ToImmutableArray(); } + #endregion - // Audit logs + #region Audit logs public static IAsyncEnumerable> GetAuditLogsAsync(IGuild guild, BaseDiscordClient client, ulong? from, int? limit, RequestOptions options, ulong? userId = null, ActionType? actionType = null) { @@ -460,8 +513,9 @@ namespace Discord.Rest count: limit ); } + #endregion - //Webhooks + #region Webhooks public static async Task GetWebhookAsync(IGuild guild, BaseDiscordClient client, ulong id, RequestOptions options) { var model = await client.ApiClient.GetWebhookAsync(id, options: options).ConfigureAwait(false); @@ -474,8 +528,9 @@ namespace Discord.Rest var models = await client.ApiClient.GetGuildWebhooksAsync(guild.Id, options).ConfigureAwait(false); return models.Select(x => RestWebhook.Create(client, guild, x)).ToImmutableArray(); } + #endregion - //Emotes + #region Emotes public static async Task> GetEmotesAsync(IGuild guild, BaseDiscordClient client, RequestOptions options) { var models = await client.ApiClient.GetGuildEmotesAsync(guild.Id, options).ConfigureAwait(false); @@ -521,5 +576,308 @@ namespace Discord.Rest } public static Task DeleteEmoteAsync(IGuild guild, BaseDiscordClient client, ulong id, RequestOptions options) => client.ApiClient.DeleteGuildEmoteAsync(guild.Id, id, options); + + public static async Task CreateStickerAsync(BaseDiscordClient client, IGuild guild, string name, string description, IEnumerable tags, + Image image, RequestOptions options = null) + { + Preconditions.NotNull(name, nameof(name)); + Preconditions.NotNull(description, nameof(description)); + + Preconditions.AtLeast(name.Length, 2, nameof(name)); + Preconditions.AtLeast(description.Length, 2, nameof(description)); + + Preconditions.AtMost(name.Length, 30, nameof(name)); + Preconditions.AtMost(description.Length, 100, nameof(name)); + + var apiArgs = new CreateStickerParams() + { + Name = name, + Description = description, + File = image.Stream, + Tags = string.Join(", ", tags) + }; + + return await client.ApiClient.CreateGuildStickerAsync(apiArgs, guild.Id, options).ConfigureAwait(false); + } + + public static async Task CreateStickerAsync(BaseDiscordClient client, IGuild guild, string name, string description, IEnumerable tags, + Stream file, string filename, RequestOptions options = null) + { + Preconditions.NotNull(name, nameof(name)); + Preconditions.NotNull(description, nameof(description)); + Preconditions.NotNull(file, nameof(file)); + Preconditions.NotNull(filename, nameof(filename)); + + Preconditions.AtLeast(name.Length, 2, nameof(name)); + Preconditions.AtLeast(description.Length, 2, nameof(description)); + + Preconditions.AtMost(name.Length, 30, nameof(name)); + Preconditions.AtMost(description.Length, 100, nameof(name)); + + var apiArgs = new CreateStickerParams() + { + Name = name, + Description = description, + File = file, + Tags = string.Join(", ", tags), + FileName = filename + }; + + return await client.ApiClient.CreateGuildStickerAsync(apiArgs, guild.Id, options).ConfigureAwait(false); + } + + public static async Task ModifyStickerAsync(BaseDiscordClient client, ulong guildId, ISticker sticker, Action func, + RequestOptions options = null) + { + if (func == null) + throw new ArgumentNullException(paramName: nameof(func)); + + var props = new StickerProperties(); + func(props); + + var apiArgs = new ModifyStickerParams() + { + Description = props.Description, + Name = props.Name, + Tags = props.Tags.IsSpecified ? + string.Join(", ", props.Tags.Value) : + Optional.Unspecified + }; + + return await client.ApiClient.ModifyStickerAsync(apiArgs, guildId, sticker.Id, options).ConfigureAwait(false); + } + + public static async Task DeleteStickerAsync(BaseDiscordClient client, ulong guildId, ISticker sticker, RequestOptions options = null) + => await client.ApiClient.DeleteStickerAsync(guildId, sticker.Id, options).ConfigureAwait(false); + #endregion + + #region Events + + public static async Task> GetEventUsersAsync(BaseDiscordClient client, IGuildScheduledEvent guildEvent, int limit = 100, RequestOptions options = null) + { + var models = await client.ApiClient.GetGuildScheduledEventUsersAsync(guildEvent.Id, guildEvent.Guild.Id, limit, options).ConfigureAwait(false); + + return models.Select(x => RestUser.Create(client, guildEvent.Guild, x)).ToImmutableArray(); + } + + public static IAsyncEnumerable> GetEventUsersAsync(BaseDiscordClient client, IGuildScheduledEvent guildEvent, + ulong? fromUserId, int? limit, RequestOptions options) + { + return new PagedAsyncEnumerable( + DiscordConfig.MaxGuildEventUsersPerBatch, + async (info, ct) => + { + var args = new GetEventUsersParams + { + Limit = info.PageSize, + RelativeDirection = Direction.After, + }; + if (info.Position != null) + args.RelativeUserId = info.Position.Value; + var models = await client.ApiClient.GetGuildScheduledEventUsersAsync(guildEvent.Id, guildEvent.Guild.Id, args, options).ConfigureAwait(false); + return models + .Select(x => RestUser.Create(client, guildEvent.Guild, x)) + .ToImmutableArray(); + }, + nextPage: (info, lastPage) => + { + if (lastPage.Count != DiscordConfig.MaxGuildEventUsersPerBatch) + return false; + info.Position = lastPage.Max(x => x.Id); + return true; + }, + start: fromUserId, + count: limit + ); + } + + public static IAsyncEnumerable> GetEventUsersAsync(BaseDiscordClient client, IGuildScheduledEvent guildEvent, + ulong? fromUserId, Direction dir, int limit, RequestOptions options = null) + { + if (dir == Direction.Around && limit > DiscordConfig.MaxMessagesPerBatch) + { + int around = limit / 2; + if (fromUserId.HasValue) + return GetEventUsersAsync(client, guildEvent, fromUserId.Value + 1, Direction.Before, around + 1, options) //Need to include the message itself + .Concat(GetEventUsersAsync(client, guildEvent, fromUserId, Direction.After, around, options)); + else //Shouldn't happen since there's no public overload for ulong? and Direction + return GetEventUsersAsync(client, guildEvent, null, Direction.Before, around + 1, options); + } + + return new PagedAsyncEnumerable( + DiscordConfig.MaxGuildEventUsersPerBatch, + async (info, ct) => + { + var args = new GetEventUsersParams + { + RelativeDirection = dir, + Limit = info.PageSize + }; + if (info.Position != null) + args.RelativeUserId = info.Position.Value; + + var models = await client.ApiClient.GetGuildScheduledEventUsersAsync(guildEvent.Id, guildEvent.Guild.Id, args, options).ConfigureAwait(false); + var builder = ImmutableArray.CreateBuilder(); + foreach (var model in models) + { + builder.Add(RestUser.Create(client, guildEvent.Guild, model)); + } + return builder.ToImmutable(); + }, + nextPage: (info, lastPage) => + { + if (lastPage.Count != DiscordConfig.MaxGuildEventUsersPerBatch) + return false; + if (dir == Direction.Before) + info.Position = lastPage.Min(x => x.Id); + else + info.Position = lastPage.Max(x => x.Id); + return true; + }, + start: fromUserId, + count: limit + ); + } + + public static async Task ModifyGuildEventAsync(BaseDiscordClient client, Action func, + IGuildScheduledEvent guildEvent, RequestOptions options = null) + { + var args = new GuildScheduledEventsProperties(); + + func(args); + + if (args.Status.IsSpecified) + { + switch (args.Status.Value) + { + case GuildScheduledEventStatus.Active when guildEvent.Status != GuildScheduledEventStatus.Scheduled: + case GuildScheduledEventStatus.Completed when guildEvent.Status != GuildScheduledEventStatus.Active: + case GuildScheduledEventStatus.Cancelled when guildEvent.Status != GuildScheduledEventStatus.Scheduled: + throw new ArgumentException($"Cannot set event to {args.Status.Value} when events status is {guildEvent.Status}"); + } + } + + if (args.Type.IsSpecified) + { + // taken from https://discord.com/developers/docs/resources/guild-scheduled-event#modify-guild-scheduled-event + switch (args.Type.Value) + { + case GuildScheduledEventType.External: + if (!args.Location.IsSpecified) + throw new ArgumentException("Location must be specified for external events."); + if (!args.EndTime.IsSpecified) + throw new ArgumentException("End time must be specified for external events."); + if (!args.ChannelId.IsSpecified) + throw new ArgumentException("Channel id must be set to null!"); + if (args.ChannelId.Value != null) + throw new ArgumentException("Channel id must be set to null!"); + break; + } + } + + var apiArgs = new ModifyGuildScheduledEventParams() + { + ChannelId = args.ChannelId, + Description = args.Description, + EndTime = args.EndTime, + Name = args.Name, + PrivacyLevel = args.PrivacyLevel, + StartTime = args.StartTime, + Status = args.Status, + Type = args.Type + }; + + if(args.Location.IsSpecified) + { + apiArgs.EntityMetadata = new API.GuildScheduledEventEntityMetadata() + { + Location = args.Location, + }; + } + + return await client.ApiClient.ModifyGuildScheduledEventAsync(apiArgs, guildEvent.Id, guildEvent.Guild.Id, options).ConfigureAwait(false); + } + + public static async Task GetGuildEventAsync(BaseDiscordClient client, ulong id, IGuild guild, RequestOptions options = null) + { + var model = await client.ApiClient.GetGuildScheduledEventAsync(id, guild.Id, options).ConfigureAwait(false); + + if (model == null) + return null; + + return RestGuildEvent.Create(client, guild, model); + } + + public static async Task> GetGuildEventsAsync(BaseDiscordClient client, IGuild guild, RequestOptions options = null) + { + var models = await client.ApiClient.ListGuildScheduledEventsAsync(guild.Id, options).ConfigureAwait(false); + + return models.Select(x => RestGuildEvent.Create(client, guild, x)).ToImmutableArray(); + } + + public static async Task CreateGuildEventAsync(BaseDiscordClient client, IGuild guild, + string name, + GuildScheduledEventPrivacyLevel privacyLevel, + DateTimeOffset startTime, + GuildScheduledEventType type, + string description = null, + DateTimeOffset? endTime = null, + ulong? channelId = null, + string location = null, + RequestOptions options = null) + { + if(location != null) + { + Preconditions.AtMost(location.Length, 100, nameof(location)); + } + + switch (type) + { + case GuildScheduledEventType.Stage or GuildScheduledEventType.Voice when channelId == null: + throw new ArgumentException($"{nameof(channelId)} must not be null when type is {type}", nameof(channelId)); + case GuildScheduledEventType.External when channelId != null: + throw new ArgumentException($"{nameof(channelId)} must be null when using external event type", nameof(channelId)); + case GuildScheduledEventType.External when location == null: + throw new ArgumentException($"{nameof(location)} must not be null when using external event type", nameof(location)); + case GuildScheduledEventType.External when endTime == null: + throw new ArgumentException($"{nameof(endTime)} must not be null when using external event type", nameof(endTime)); + } + + if (startTime <= DateTimeOffset.Now) + throw new ArgumentOutOfRangeException(nameof(startTime), "The start time for an event cannot be in the past"); + + if (endTime != null && endTime <= startTime) + throw new ArgumentOutOfRangeException(nameof(endTime), $"{nameof(endTime)} cannot be before the start time"); + + var apiArgs = new CreateGuildScheduledEventParams() + { + ChannelId = channelId ?? Optional.Unspecified, + Description = description ?? Optional.Unspecified, + EndTime = endTime ?? Optional.Unspecified, + Name = name, + PrivacyLevel = privacyLevel, + StartTime = startTime, + Type = type + }; + + if(location != null) + { + apiArgs.EntityMetadata = new API.GuildScheduledEventEntityMetadata() + { + Location = location + }; + } + + var model = await client.ApiClient.CreateGuildScheduledEventAsync(apiArgs, guild.Id, options).ConfigureAwait(false); + + return RestGuildEvent.Create(client, guild, client.CurrentUser, model); + } + + public static async Task DeleteEventAsync(BaseDiscordClient client, IGuildScheduledEvent guildEvent, RequestOptions options = null) + { + await client.ApiClient.DeleteGuildScheduledEventAsync(guildEvent.Id, guildEvent.Guild.Id, options).ConfigureAwait(false); + } + + #endregion } } diff --git a/src/Discord.Net.Rest/Entities/Guilds/RestBan.cs b/src/Discord.Net.Rest/Entities/Guilds/RestBan.cs index ec8f60ae5..d77d3b626 100644 --- a/src/Discord.Net.Rest/Entities/Guilds/RestBan.cs +++ b/src/Discord.Net.Rest/Entities/Guilds/RestBan.cs @@ -9,6 +9,7 @@ namespace Discord.Rest [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class RestBan : IBan { + #region RestBan /// /// Gets the banned user. /// @@ -37,9 +38,11 @@ namespace Discord.Rest /// public override string ToString() => User.ToString(); private string DebuggerDisplay => $"{User}: {Reason}"; +#endregion - //IBan + #region IBan /// IUser IBan.User => User; + #endregion } } diff --git a/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs b/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs index ea703a26a..9b0b66633 100644 --- a/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs +++ b/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs @@ -8,6 +8,7 @@ using System.Linq; using System.Threading.Tasks; using WidgetModel = Discord.API.GuildWidget; using Model = Discord.API.Guild; +using System.IO; namespace Discord.Rest { @@ -17,9 +18,10 @@ namespace Discord.Rest [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class RestGuild : RestEntity, IGuild, IUpdateable { + #region RestGuild private ImmutableDictionary _roles; private ImmutableArray _emotes; - private ImmutableArray _features; + private ImmutableArray _stickers; /// public string Name { get; private set; } @@ -83,9 +85,14 @@ namespace Discord.Rest public int? ApproximateMemberCount { get; private set; } /// public int? ApproximatePresenceCount { get; private set; } - + /// + public NsfwLevel NsfwLevel { get; private set; } + /// + public bool IsBoostProgressBarEnabled { get; private set; } /// public CultureInfo PreferredCulture { get; private set; } + /// + public GuildFeatures Features { get; private set; } /// public DateTimeOffset CreatedAt => SnowflakeUtils.FromSnowflake(Id); @@ -97,7 +104,7 @@ namespace Discord.Rest /// public string DiscoverySplashUrl => CDN.GetGuildDiscoverySplashUrl(Id, DiscoverySplashId); /// - public string BannerUrl => CDN.GetGuildBannerUrl(Id, BannerId); + public string BannerUrl => CDN.GetGuildBannerUrl(Id, BannerId, ImageFormat.Auto); /// /// Gets the built-in role containing all users in this guild. @@ -110,8 +117,7 @@ namespace Discord.Rest public IReadOnlyCollection Roles => _roles.ToReadOnlyCollection(); /// public IReadOnlyCollection Emotes => _emotes; - /// - public IReadOnlyCollection Features => _features; + public IReadOnlyCollection Stickers => _stickers; internal RestGuild(BaseDiscordClient client, ulong id) : base(client, id) @@ -151,6 +157,7 @@ namespace Discord.Rest SystemChannelFlags = model.SystemChannelFlags; Description = model.Description; PremiumSubscriptionCount = model.PremiumSubscriptionCount.GetValueOrDefault(); + NsfwLevel = model.NsfwLevel; if (model.MaxPresences.IsSpecified) MaxPresences = model.MaxPresences.Value ?? 25000; if (model.MaxMembers.IsSpecified) @@ -163,6 +170,8 @@ namespace Discord.Rest ApproximateMemberCount = model.ApproximateMemberCount.Value; if (model.ApproximatePresenceCount.IsSpecified) ApproximatePresenceCount = model.ApproximatePresenceCount.Value; + if (model.IsBoostProgressBarEnabled.IsSpecified) + IsBoostProgressBarEnabled = model.IsBoostProgressBarEnabled.Value; if (model.Emojis != null) { @@ -174,10 +183,7 @@ namespace Discord.Rest else _emotes = ImmutableArray.Create(); - if (model.Features != null) - _features = model.Features.ToImmutableArray(); - else - _features = ImmutableArray.Create(); + Features = model.Features; var roles = ImmutableDictionary.CreateBuilder(); if (model.Roles != null) @@ -187,6 +193,23 @@ namespace Discord.Rest } _roles = roles.ToImmutable(); + if (model.Stickers != null) + { + var stickers = ImmutableArray.CreateBuilder(); + for (int i = 0; i < model.Stickers.Length; i++) + { + var sticker = model.Stickers[i]; + + var entity = CustomSticker.Create(Discord, sticker, this, sticker.User.IsSpecified ? sticker.User.Value.Id : null); + + stickers.Add(entity); + } + + _stickers = stickers.ToImmutable(); + } + else + _stickers = ImmutableArray.Create(); + Available = true; } internal void Update(WidgetModel model) @@ -194,8 +217,9 @@ namespace Discord.Rest WidgetChannelId = model.ChannelId; IsWidgetEnabled = model.Enabled; } + #endregion - //General + #region General /// public async Task UpdateAsync(RequestOptions options = null) => Update(await Discord.ApiClient.GetGuildAsync(Id, false, options).ConfigureAwait(false)); @@ -254,9 +278,44 @@ namespace Discord.Rest /// public Task LeaveAsync(RequestOptions options = null) => GuildHelper.LeaveAsync(this, Discord, options); + #endregion + + #region Interactions + /// + /// Deletes all slash commands in the current guild. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous delete operation. + /// + public Task DeleteSlashCommandsAsync(RequestOptions options = null) + => InteractionHelper.DeleteAllGuildCommandsAsync(Discord, Id, options); + + /// + /// Gets a collection of slash commands created by the current user in this guild. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains a read-only collection of + /// slash commands created by the current user. + /// + public Task> GetSlashCommandsAsync(RequestOptions options = null) + => GuildHelper.GetSlashCommandsAsync(this, Discord, options); + + /// + /// Gets a slash command in the current guild. + /// + /// The unique identifier of the slash command. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains a + /// slash command created by the current user. + /// + public Task GetSlashCommandAsync(ulong id, RequestOptions options = null) + => GuildHelper.GetSlashCommandAsync(this, id, Discord, options); + #endregion - //Bans - //Bans + #region Bans /// /// Gets a collection of all users banned in this guild. /// @@ -304,8 +363,9 @@ namespace Discord.Rest /// public Task RemoveBanAsync(ulong userId, RequestOptions options = null) => GuildHelper.RemoveBanAsync(this, Discord, userId, options); + #endregion - //Channels + #region Channels /// /// Gets a collection of all channels in this guild. /// @@ -358,6 +418,35 @@ namespace Discord.Rest return channels.OfType().ToImmutableArray(); } + /// + /// Gets a thread channel in this guild. + /// + /// The snowflake identifier for the thread channel. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains the thread channel associated + /// with the specified ; if none is found. + /// + public async Task GetThreadChannelAsync(ulong id, RequestOptions options = null) + { + var channel = await GuildHelper.GetChannelAsync(this, Discord, id, options).ConfigureAwait(false); + return channel as RestThreadChannel; + } + + /// + /// Gets a collection of all thread in this guild. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains a read-only collection of + /// threads found within this guild. + /// + public async Task> GetThreadChannelsAsync(RequestOptions options = null) + { + var channels = await GuildHelper.GetChannelsAsync(this, Discord, options).ConfigureAwait(false); + return channels.OfType().ToImmutableArray(); + } + /// /// Gets a voice channel in this guild. /// @@ -386,6 +475,34 @@ namespace Discord.Rest var channels = await GuildHelper.GetChannelsAsync(this, Discord, options).ConfigureAwait(false); return channels.OfType().ToImmutableArray(); } + /// + /// Gets a stage channel in this guild + /// + /// The snowflake identifier for the stage channel. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains the stage channel associated + /// with the specified ; if none is found. + /// + public async Task GetStageChannelAsync(ulong id, RequestOptions options = null) + { + var channel = await GuildHelper.GetChannelAsync(this, Discord, id, options).ConfigureAwait(false); + return channel as RestStageChannel; + } + + /// + /// Gets a collection of all stage channels in this guild. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains a read-only collection of + /// stage channels found within this guild. + /// + public async Task> GetStageChannelsAsync(RequestOptions options = null) + { + var channels = await GuildHelper.GetChannelsAsync(this, Discord, options).ConfigureAwait(false); + return channels.OfType().ToImmutableArray(); + } /// /// Gets a collection of all category channels in this guild. @@ -460,7 +577,7 @@ namespace Discord.Rest /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains the text channel - /// where guild notices such as welcome messages and boost events are poste; if none is found. + /// where guild notices such as welcome messages and boost events are post; if none is found. /// public async Task GetSystemChannelAsync(RequestOptions options = null) { @@ -493,11 +610,11 @@ namespace Discord.Rest } /// - /// Gets the text channel channel where admins and moderators of Community guilds receive notices from Discord. + /// Gets the text channel where admins and moderators of Community guilds receive notices from Discord. /// /// The options to be used when sending the request. /// - /// A task that represents the asynchronous get operation. The task result contains the text channel channel where + /// A task that represents the asynchronous get operation. The task result contains the text channel where /// admins and moderators of Community guilds receive notices from Discord; if none is set. /// public async Task GetPublicUpdatesChannelAsync(RequestOptions options = null) @@ -549,6 +666,18 @@ namespace Discord.Rest public Task CreateVoiceChannelAsync(string name, Action func = null, RequestOptions options = null) => GuildHelper.CreateVoiceChannelAsync(this, Discord, name, options, func); /// + /// Creates a new stage channel in this guild. + /// + /// The new name for the stage channel. + /// The delegate containing the properties to be applied to the channel upon its creation. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous creation operation. The task result contains the newly created + /// stage channel. + /// + public Task CreateStageChannelAsync(string name, Action func = null, RequestOptions options = null) + => GuildHelper.CreateStageChannelAsync(this, Discord, name, options, func); + /// /// Creates a category channel with the provided name. /// /// The name of the new channel. @@ -571,14 +700,16 @@ namespace Discord.Rest /// public Task> GetVoiceRegionsAsync(RequestOptions options = null) => GuildHelper.GetVoiceRegionsAsync(this, Discord, options); + #endregion - //Integrations + #region Integrations public Task> GetIntegrationsAsync(RequestOptions options = null) => GuildHelper.GetIntegrationsAsync(this, Discord, options); public Task CreateIntegrationAsync(ulong id, string type, RequestOptions options = null) => GuildHelper.CreateIntegrationAsync(this, Discord, id, type, options); + #endregion - //Invites + #region Invites /// /// Gets a collection of all invites in this guild. /// @@ -598,8 +729,9 @@ namespace Discord.Rest /// public Task GetVanityInviteAsync(RequestOptions options = null) => GuildHelper.GetVanityInviteAsync(this, Discord, options); + #endregion - //Roles + #region Roles /// /// Gets a role in this guild. /// @@ -639,8 +771,9 @@ namespace Discord.Rest _roles = _roles.Add(role.Id, role); return role; } + #endregion - //Users + #region Users /// /// Gets a collection of all users in this guild. /// @@ -734,8 +867,9 @@ namespace Discord.Rest /// public Task> SearchUsersAsync(string query, int limit = DiscordConfig.MaxUsersPerBatch, RequestOptions options = null) => GuildHelper.SearchUsersAsync(this, Discord, query, limit, options); + #endregion - //Audit logs + #region Audit logs /// /// Gets the specified number of audit log entries for this guild. /// @@ -750,8 +884,9 @@ namespace Discord.Rest /// public IAsyncEnumerable> GetAuditLogsAsync(int limit, RequestOptions options = null, ulong? beforeId = null, ulong? userId = null, ActionType? actionType = null) => GuildHelper.GetAuditLogsAsync(this, Discord, beforeId, limit, options, userId: userId, actionType: actionType); + #endregion - //Webhooks + #region Webhooks /// /// Gets a webhook found within this guild. /// @@ -774,6 +909,59 @@ namespace Discord.Rest /// public Task> GetWebhooksAsync(RequestOptions options = null) => GuildHelper.GetWebhooksAsync(this, Discord, options); + #endregion + + #region Interactions + /// + /// Gets this guilds slash commands + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains a read-only collection + /// of application commands found within the guild. + /// + public async Task> GetApplicationCommandsAsync (RequestOptions options = null) + => await ClientHelper.GetGuildApplicationCommandsAsync(Discord, Id, options).ConfigureAwait(false); + /// + /// Gets an application command within this guild with the specified id. + /// + /// The id of the application command to get. + /// The options to be used when sending the request. + /// + /// A ValueTask that represents the asynchronous get operation. The task result contains a + /// if found, otherwise . + /// + public async Task GetApplicationCommandAsync(ulong id, RequestOptions options = null) + => await ClientHelper.GetGuildApplicationCommandAsync(Discord, id, Id, options); + /// + /// Creates an application command within this guild. + /// + /// The properties to use when creating the command. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous creation operation. The task result contains the command that was created. + /// + public async Task CreateApplicationCommandAsync(ApplicationCommandProperties properties, RequestOptions options = null) + { + var model = await InteractionHelper.CreateGuildCommandAsync(Discord, Id, properties, options); + + return RestGuildCommand.Create(Discord, model, Id); + } + /// + /// Overwrites the application commands within this guild. + /// + /// A collection of properties to use when creating the commands. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous creation operation. The task result contains a collection of commands that was created. + /// + public async Task> BulkOverwriteApplicationCommandsAsync(ApplicationCommandProperties[] properties, + RequestOptions options = null) + { + var models = await InteractionHelper.BulkOverwriteGuildCommandsAsync(Discord, Id, properties, options); + + return models.Select(x => RestGuildCommand.Create(Discord, x, Id)).ToImmutableArray(); + } /// /// Returns the name of the guild. @@ -783,8 +971,9 @@ namespace Discord.Rest /// public override string ToString() => Name; private string DebuggerDisplay => $"{Name} ({Id})"; + #endregion - //Emotes + #region Emotes /// public Task> GetEmotesAsync(RequestOptions options = null) => GuildHelper.GetEmotesAsync(this, Discord, options); @@ -798,11 +987,188 @@ namespace Discord.Rest /// is . public Task ModifyEmoteAsync(GuildEmote emote, Action func, RequestOptions options = null) => GuildHelper.ModifyEmoteAsync(this, Discord, emote.Id, func, options); + /// + /// Moves the user to the voice channel. + /// + /// The user to move. + /// the channel where the user gets moved to. + /// A task that represents the asynchronous operation for moving a user. + public Task MoveAsync(IGuildUser user, IVoiceChannel targetChannel) + => user.ModifyAsync(x => x.Channel = new Optional(targetChannel)); /// public Task DeleteEmoteAsync(GuildEmote emote, RequestOptions options = null) => GuildHelper.DeleteEmoteAsync(this, Discord, emote.Id, options); + #endregion + + #region Stickers + /// + /// Creates a new sticker in this guild. + /// + /// The name of the sticker. + /// The description of the sticker. + /// The tags of the sticker. + /// The image of the new emote. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous creation operation. The task result contains the created sticker. + /// + public async Task CreateStickerAsync(string name, string description, IEnumerable tags, Image image, RequestOptions options = null) + { + var model = await GuildHelper.CreateStickerAsync(Discord, this, name, description, tags, image, options).ConfigureAwait(false); + + return CustomSticker.Create(Discord, model, this, model.User.IsSpecified ? model.User.Value.Id : null); + } + /// + /// Creates a new sticker in this guild + /// + /// The name of the sticker. + /// The description of the sticker. + /// The tags of the sticker. + /// The path of the file to upload. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous creation operation. The task result contains the created sticker. + /// + public Task CreateStickerAsync(string name, string description, IEnumerable tags, string path, + RequestOptions options = null) + { + var fs = File.OpenRead(path); + return CreateStickerAsync(name, description, tags, fs, Path.GetFileName(fs.Name), options); + } + /// + /// Creates a new sticker in this guild + /// + /// The name of the sticker. + /// The description of the sticker. + /// The tags of the sticker. + /// The stream containing the file data. + /// The name of the file with the extension, ex: image.png. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous creation operation. The task result contains the created sticker. + /// + public async Task CreateStickerAsync(string name, string description, IEnumerable tags, Stream stream, + string filename, RequestOptions options = null) + { + var model = await GuildHelper.CreateStickerAsync(Discord, this, name, description, tags, stream, filename, options).ConfigureAwait(false); + + return CustomSticker.Create(Discord, model, this, model.User.IsSpecified ? model.User.Value.Id : null); + } + /// + /// Gets a specific sticker within this guild. + /// + /// The id of the sticker to get. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains the sticker found with the + /// specified ; if none is found. + /// + public async Task GetStickerAsync(ulong id, RequestOptions options = null) + { + var model = await Discord.ApiClient.GetGuildStickerAsync(Id, id, options).ConfigureAwait(false); + + if (model == null) + return null; + + return CustomSticker.Create(Discord, model, this, model.User.IsSpecified ? model.User.Value.Id : null); + } + /// + /// Gets a collection of all stickers within this guild. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains a read-only collection + /// of stickers found within the guild. + /// + public async Task> GetStickersAsync(RequestOptions options = null) + { + var models = await Discord.ApiClient.ListGuildStickersAsync(Id, options).ConfigureAwait(false); + + if (models.Length == 0) + return null; - //IGuild + List stickers = new List(); + + foreach(var model in models) + { + var entity = CustomSticker.Create(Discord, model, this, model.User.IsSpecified ? model.User.Value.Id : null); + stickers.Add(entity); + } + + return stickers.ToImmutableArray(); + } + /// + /// Deletes a sticker within this guild. + /// + /// The sticker to delete. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous removal operation. + /// + public Task DeleteStickerAsync(CustomSticker sticker, RequestOptions options = null) + => sticker.DeleteAsync(options); + #endregion + + #region Guild Events + + /// + /// Gets an event within this guild. + /// + /// The snowflake identifier for the event. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. + /// + public Task GetEventAsync(ulong id, RequestOptions options = null) + => GuildHelper.GetGuildEventAsync(Discord, id, this, options); + + /// + /// Gets all active events within this guild. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. + /// + public Task> GetEventsAsync(RequestOptions options = null) + => GuildHelper.GetGuildEventsAsync(Discord, this, options); + + /// + /// Creates an event within this guild. + /// + /// The name of the event. + /// The privacy level of the event. + /// The start time of the event. + /// The type of the event. + /// The description of the event. + /// The end time of the event. + /// + /// The channel id of the event. + /// + /// The event must have a type of or + /// in order to use this property. + /// + /// + /// A collection of speakers for the event. + /// The location of the event; links are supported + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous create operation. + /// + public Task CreateEventAsync( + string name, + DateTimeOffset startTime, + GuildScheduledEventType type, + GuildScheduledEventPrivacyLevel privacyLevel = GuildScheduledEventPrivacyLevel.Private, + string description = null, + DateTimeOffset? endTime = null, + ulong? channelId = null, + string location = null, + RequestOptions options = null) + => GuildHelper.CreateGuildEventAsync(Discord, this, name, privacyLevel, startTime, type, description, endTime, channelId, location, options); + + #endregion + + #region IGuild /// bool IGuild.Available => Available; /// @@ -812,6 +1178,20 @@ namespace Discord.Rest /// IReadOnlyCollection IGuild.Roles => Roles; + IReadOnlyCollection IGuild.Stickers => Stickers; + + /// + async Task IGuild.CreateEventAsync(string name, DateTimeOffset startTime, GuildScheduledEventType type, GuildScheduledEventPrivacyLevel privacyLevel, string description, DateTimeOffset? endTime, ulong? channelId, string location, RequestOptions options) + => await CreateEventAsync(name, startTime, type, privacyLevel, description, endTime, channelId, location, options).ConfigureAwait(false); + + /// + async Task IGuild.GetEventAsync(ulong id, RequestOptions options) + => await GetEventAsync(id, options).ConfigureAwait(false); + + /// + async Task> IGuild.GetEventsAsync(RequestOptions options) + => await GetEventsAsync(options).ConfigureAwait(false); + /// async Task> IGuild.GetBansAsync(RequestOptions options) => await GetBansAsync(options).ConfigureAwait(false); @@ -855,6 +1235,22 @@ namespace Discord.Rest return null; } /// + async Task IGuild.GetThreadChannelAsync(ulong id, CacheMode mode, RequestOptions options) + { + if (mode == CacheMode.AllowDownload) + return await GetThreadChannelAsync(id, options).ConfigureAwait(false); + else + return null; + } + /// + async Task> IGuild.GetThreadChannelsAsync(CacheMode mode, RequestOptions options) + { + if (mode == CacheMode.AllowDownload) + return await GetThreadChannelsAsync(options).ConfigureAwait(false); + else + return null; + } + /// async Task> IGuild.GetVoiceChannelsAsync(CacheMode mode, RequestOptions options) { if (mode == CacheMode.AllowDownload) @@ -871,6 +1267,22 @@ namespace Discord.Rest return null; } /// + async Task IGuild.GetStageChannelAsync(ulong id, CacheMode mode, RequestOptions options ) + { + if (mode == CacheMode.AllowDownload) + return await GetStageChannelAsync(id, options).ConfigureAwait(false); + else + return null; + } + /// + async Task> IGuild.GetStageChannelsAsync(CacheMode mode, RequestOptions options) + { + if (mode == CacheMode.AllowDownload) + return await GetStageChannelsAsync(options).ConfigureAwait(false); + else + return null; + } + /// async Task IGuild.GetVoiceChannelAsync(ulong id, CacheMode mode, RequestOptions options) { if (mode == CacheMode.AllowDownload) @@ -933,6 +1345,9 @@ namespace Discord.Rest async Task IGuild.CreateVoiceChannelAsync(string name, Action func, RequestOptions options) => await CreateVoiceChannelAsync(name, func, options).ConfigureAwait(false); /// + async Task IGuild.CreateStageChannelAsync(string name, Action func, RequestOptions options) + => await CreateStageChannelAsync(name, func, options).ConfigureAwait(false); + /// async Task IGuild.CreateCategoryAsync(string name, Action func, RequestOptions options) => await CreateCategoryChannelAsync(name, func, options).ConfigureAwait(false); @@ -968,6 +1383,13 @@ namespace Discord.Rest async Task IGuild.AddGuildUserAsync(ulong userId, string accessToken, Action func, RequestOptions options) => await AddGuildUserAsync(userId, accessToken, func, options); + /// + /// Disconnects the user from its current voice channel + /// + /// The user to disconnect. + /// A task that represents the asynchronous operation for disconnecting a user. + async Task IGuild.DisconnectAsync(IGuildUser user) => await user.ModifyAsync(x => x.Channel = new Optional()); + /// async Task IGuild.GetUserAsync(ulong id, CacheMode mode, RequestOptions options) { @@ -1028,5 +1450,54 @@ namespace Discord.Rest /// async Task> IGuild.GetWebhooksAsync(RequestOptions options) => await GetWebhooksAsync(options).ConfigureAwait(false); + /// + async Task> IGuild.GetApplicationCommandsAsync (RequestOptions options) + => await GetApplicationCommandsAsync(options).ConfigureAwait(false); + /// + async Task IGuild.CreateStickerAsync(string name, string description, IEnumerable tags, Image image, RequestOptions options) + => await CreateStickerAsync(name, description, tags, image, options); + /// + async Task IGuild.CreateStickerAsync(string name, string description, IEnumerable tags, Stream stream, string filename, RequestOptions options) + => await CreateStickerAsync(name, description, tags, stream, filename, options); + /// + async Task IGuild.CreateStickerAsync(string name, string description, IEnumerable tags, string path, RequestOptions options) + => await CreateStickerAsync(name, description, tags, path, options); + /// + async Task IGuild.GetStickerAsync(ulong id, CacheMode mode, RequestOptions options) + { + if (mode != CacheMode.AllowDownload) + return null; + + return await GetStickerAsync(id, options); + } + /// + async Task> IGuild.GetStickersAsync(CacheMode mode, RequestOptions options) + { + if (mode != CacheMode.AllowDownload) + return null; + + return await GetStickersAsync(options); + } + /// + Task IGuild.DeleteStickerAsync(ICustomSticker sticker, RequestOptions options) + => sticker.DeleteAsync(); + /// + async Task IGuild.CreateApplicationCommandAsync(ApplicationCommandProperties properties, RequestOptions options) + => await CreateApplicationCommandAsync(properties, options); + /// + async Task> IGuild.BulkOverwriteApplicationCommandsAsync(ApplicationCommandProperties[] properties, + RequestOptions options) + => await BulkOverwriteApplicationCommandsAsync(properties, options); + /// + async Task IGuild.GetApplicationCommandAsync(ulong id, CacheMode mode, RequestOptions options) + { + if (mode == CacheMode.AllowDownload) + { + return await GetApplicationCommandAsync(id, options); + } + else + return null; + } + #endregion } } diff --git a/src/Discord.Net.Rest/Entities/Guilds/RestGuildEvent.cs b/src/Discord.Net.Rest/Entities/Guilds/RestGuildEvent.cs new file mode 100644 index 000000000..d3ec11fc6 --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Guilds/RestGuildEvent.cs @@ -0,0 +1,188 @@ +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Model = Discord.API.GuildScheduledEvent; + +namespace Discord.Rest +{ + public class RestGuildEvent : RestEntity, IGuildScheduledEvent + { + /// + public IGuild Guild { get; private set; } + + /// + public ulong? ChannelId { get; private set; } + + /// + public IUser Creator { get; private set; } + + /// + public ulong CreatorId { get; private set; } + + /// + public string Name { get; private set; } + + /// + public string Description { get; private set; } + + /// + public DateTimeOffset StartTime { get; private set; } + + /// + public DateTimeOffset? EndTime { get; private set; } + + /// + public GuildScheduledEventPrivacyLevel PrivacyLevel { get; private set; } + + /// + public GuildScheduledEventStatus Status { get; private set; } + + /// + public GuildScheduledEventType Type { get; private set; } + + /// + public ulong? EntityId { get; private set; } + + /// + public string Location { get; private set; } + + /// + public int? UserCount { get; private set; } + + internal RestGuildEvent(BaseDiscordClient client, IGuild guild, ulong id) + : base(client, id) + { + Guild = guild; + } + + internal static RestGuildEvent Create(BaseDiscordClient client, IGuild guild, Model model) + { + var entity = new RestGuildEvent(client, guild, model.Id); + entity.Update(model); + return entity; + } + + internal static RestGuildEvent Create(BaseDiscordClient client, IGuild guild, IUser creator, Model model) + { + var entity = new RestGuildEvent(client, guild, model.Id); + entity.Update(model, creator); + return entity; + } + + internal void Update(Model model, IUser creator) + { + Update(model); + Creator = creator; + CreatorId = creator.Id; + } + + internal void Update(Model model) + { + if (model.Creator.IsSpecified) + { + Creator = RestUser.Create(Discord, model.Creator.Value); + } + + CreatorId = model.CreatorId.ToNullable() ?? 0; // should be changed? + ChannelId = model.ChannelId.IsSpecified ? model.ChannelId.Value : null; + Name = model.Name; + Description = model.Description.GetValueOrDefault(); + StartTime = model.ScheduledStartTime; + EndTime = model.ScheduledEndTime; + PrivacyLevel = model.PrivacyLevel; + Status = model.Status; + Type = model.EntityType; + EntityId = model.EntityId; + Location = model.EntityMetadata?.Location.GetValueOrDefault(); + UserCount = model.UserCount.ToNullable(); + } + + /// + public Task StartAsync(RequestOptions options = null) + => ModifyAsync(x => x.Status = GuildScheduledEventStatus.Active); + + /// + public Task EndAsync(RequestOptions options = null) + => ModifyAsync(x => x.Status = Status == GuildScheduledEventStatus.Scheduled + ? GuildScheduledEventStatus.Cancelled + : GuildScheduledEventStatus.Completed); + + /// + public Task DeleteAsync(RequestOptions options = null) + => GuildHelper.DeleteEventAsync(Discord, this, options); + + /// + public async Task ModifyAsync(Action func, RequestOptions options = null) + { + var model = await GuildHelper.ModifyGuildEventAsync(Discord, func, this, options).ConfigureAwait(false); + Update(model); + } + + /// + /// Gets a collection of N users interested in the event. + /// + /// + /// + /// The returned collection is an asynchronous enumerable object; one must call + /// to access the individual messages as a + /// collection. + /// + /// This method will attempt to fetch all users that are interested in the event. + /// The library will attempt to split up the requests according to and . + /// In other words, if there are 300 users, and the constant + /// is 100, the request will be split into 3 individual requests; thus returning 3 individual asynchronous + /// responses, hence the need of flattening. + /// + /// The options to be used when sending the request. + /// + /// Paged collection of users. + /// + public IAsyncEnumerable> GetUsersAsync(RequestOptions options = null) + => GuildHelper.GetEventUsersAsync(Discord, this, null, null, options); + + /// + /// Gets a collection of N users interested in the event. + /// + /// + /// + /// The returned collection is an asynchronous enumerable object; one must call + /// to access the individual users as a + /// collection. + /// + /// + /// Do not fetch too many users at once! This may cause unwanted preemptive rate limit or even actual + /// rate limit, causing your bot to freeze! + /// + /// This method will attempt to fetch the number of users specified under around + /// the user depending on the . The library will + /// attempt to split up the requests according to your and + /// . In other words, should the user request 500 users, + /// and the constant is 100, the request will + /// be split into 5 individual requests; thus returning 5 individual asynchronous responses, hence the need + /// of flattening. + /// + /// The ID of the starting user to get the users from. + /// The direction of the users to be gotten from. + /// The numbers of users to be gotten from. + /// The options to be used when sending the request. + /// + /// Paged collection of users. + /// + public IAsyncEnumerable> GetUsersAsync(ulong fromUserId, Direction dir, int limit = DiscordConfig.MaxGuildEventUsersPerBatch, RequestOptions options = null) + => GuildHelper.GetEventUsersAsync(Discord, this, fromUserId, dir, limit, options); + + #region IGuildScheduledEvent + + /// + IAsyncEnumerable> IGuildScheduledEvent.GetUsersAsync(RequestOptions options) + => GetUsersAsync(options); + /// + IAsyncEnumerable> IGuildScheduledEvent.GetUsersAsync(ulong fromUserId, Direction dir, int limit, RequestOptions options) + => GetUsersAsync(fromUserId, dir, limit, options); + + #endregion + } +} diff --git a/src/Discord.Net.Rest/Entities/Interactions/CommandBase/RestCommandBase.cs b/src/Discord.Net.Rest/Entities/Interactions/CommandBase/RestCommandBase.cs new file mode 100644 index 000000000..a9efb6de1 --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Interactions/CommandBase/RestCommandBase.cs @@ -0,0 +1,345 @@ +using Discord.Net.Rest; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using DataModel = Discord.API.ApplicationCommandInteractionData; +using Model = Discord.API.Interaction; + +namespace Discord.Rest +{ + /// + /// Represents a REST-based base command interaction. + /// + public class RestCommandBase : RestInteraction + { + /// + /// Gets the name of the invoked command. + /// + public string CommandName + => Data.Name; + + /// + /// Gets the id of the invoked command. + /// + public ulong CommandId + => Data.Id; + + /// + /// The data associated with this interaction. + /// + internal new RestCommandBaseData Data { get; private set; } + + + internal override bool _hasResponded { get; set; } + + private object _lock = new object(); + + internal RestCommandBase(DiscordRestClient client, Model model) + : base(client, model.Id) + { + } + + internal new static async Task CreateAsync(DiscordRestClient client, Model model) + { + var entity = new RestCommandBase(client, model); + await entity.UpdateAsync(client, model).ConfigureAwait(false); + return entity; + } + + internal override async Task UpdateAsync(DiscordRestClient client, Model model) + { + await base.UpdateAsync(client, model).ConfigureAwait(false); + } + + /// + /// Responds to an Interaction with type . + /// + /// The text of the message to be sent. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// The request options for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// Message content is too long, length must be less or equal to . + /// The parameters provided were invalid or the token was invalid. + /// + /// A string that contains json to write back to the incoming http request. + /// + public override string Respond( + string text = null, + Embed[] embeds = null, + bool isTTS = false, + bool ephemeral = false, + AllowedMentions allowedMentions = null, + RequestOptions options = null, + MessageComponent component = null, + Embed embed = null) + { + if (!IsValidToken) + throw new InvalidOperationException("Interaction token is no longer valid"); + + if (!InteractionHelper.CanSendResponse(this)) + throw new TimeoutException($"Cannot respond to an interaction after {InteractionHelper.ResponseTimeLimit} seconds!"); + + embeds ??= Array.Empty(); + if (embed != null) + embeds = new[] { embed }.Concat(embeds).ToArray(); + + 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, 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 + if (allowedMentions != null && allowedMentions.AllowedTypes.HasValue) + { + if (allowedMentions.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Users) && + allowedMentions.UserIds != null && allowedMentions.UserIds.Count > 0) + { + throw new ArgumentException("The Users flag is mutually exclusive with the list of User Ids.", nameof(allowedMentions)); + } + + if (allowedMentions.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Roles) && + allowedMentions.RoleIds != null && allowedMentions.RoleIds.Count > 0) + { + throw new ArgumentException("The Roles flag is mutually exclusive with the list of Role Ids.", nameof(allowedMentions)); + } + } + + var response = new API.InteractionResponse + { + Type = InteractionResponseType.ChannelMessageWithSource, + Data = new API.InteractionCallbackData + { + Content = text, + AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, + Embeds = embeds.Select(x => x.ToModel()).ToArray(), + TTS = isTTS, + Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified, + Flags = ephemeral ? MessageFlags.Ephemeral : Optional.Unspecified + } + }; + + lock (_lock) + { + if (_hasResponded) + { + throw new InvalidOperationException("Cannot respond twice to the same interaction"); + } + } + + lock (_lock) + { + _hasResponded = true; + } + + return SerializePayload(response); + } + + /// + /// Sends a followup message for this interaction. + /// + /// The text of the message to be sent. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// The request options for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// + /// The sent message. + /// + public override async Task FollowupAsync( + string text = null, + Embed[] embeds = null, + bool isTTS = false, + bool ephemeral = false, + AllowedMentions allowedMentions = null, + RequestOptions options = null, + MessageComponent component = null, + Embed embed = null) + { + if (!IsValidToken) + throw new InvalidOperationException("Interaction token is no longer valid"); + + embeds ??= Array.Empty(); + if (embed != null) + embeds = new[] { embed }.Concat(embeds).ToArray(); + + 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, 10, nameof(embeds), "A max of 10 embeds are allowed."); + + var args = new API.Rest.CreateWebhookMessageParams + { + Content = text, + AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, + IsTTS = isTTS, + Embeds = embeds.Select(x => x.ToModel()).ToArray(), + Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified + }; + + if (ephemeral) + args.Flags = MessageFlags.Ephemeral; + + return await InteractionHelper.SendFollowupAsync(Discord, args, Token, Channel, options); + } + + /// + /// Sends a followup message for this interaction. + /// + /// The text of the message to be sent. + /// The file to upload. + /// The file name of the attachment. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// The request options for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// + /// The sent message. + /// + public override async Task FollowupWithFileAsync( + Stream fileStream, + string fileName, + string text = null, + Embed[] embeds = null, + bool isTTS = false, + bool ephemeral = false, + AllowedMentions allowedMentions = null, + RequestOptions options = null, + MessageComponent component = null, + Embed embed = null) + { + if (!IsValidToken) + throw new InvalidOperationException("Interaction token is no longer valid"); + + embeds ??= Array.Empty(); + if (embed != null) + embeds = new[] { embed }.Concat(embeds).ToArray(); + + 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, 10, nameof(embeds), "A max of 10 embeds are allowed."); + Preconditions.NotNull(fileStream, nameof(fileStream), "File Stream must have data"); + Preconditions.NotNullOrEmpty(fileName, nameof(fileName), "File Name must not be empty or null"); + + var args = new API.Rest.CreateWebhookMessageParams + { + Content = text, + AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, + IsTTS = isTTS, + Embeds = embeds.Select(x => x.ToModel()).ToArray(), + Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified, + File = fileStream is not null ? new MultipartFile(fileStream, fileName) : Optional.Unspecified + }; + + if (ephemeral) + args.Flags = MessageFlags.Ephemeral; + + return await InteractionHelper.SendFollowupAsync(Discord, args, Token, Channel, options); + } + + /// + /// Sends a followup message for this interaction. + /// + /// The text of the message to be sent. + /// The file to upload. + /// The file name of the attachment. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// The request options for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// + /// The sent message. + /// + public override async Task FollowupWithFileAsync( + string filePath, + string text = null, + string fileName = null, + Embed[] embeds = null, + bool isTTS = false, + bool ephemeral = false, + AllowedMentions allowedMentions = null, + RequestOptions options = null, + MessageComponent component = null, + Embed embed = null) + { + if (!IsValidToken) + throw new InvalidOperationException("Interaction token is no longer valid"); + + embeds ??= Array.Empty(); + if (embed != null) + embeds = new[] { embed }.Concat(embeds).ToArray(); + + 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, 10, nameof(embeds), "A max of 10 embeds are allowed."); + Preconditions.NotNullOrEmpty(filePath, nameof(filePath), "Path must exist"); + + fileName ??= Path.GetFileName(filePath); + Preconditions.NotNullOrEmpty(fileName, nameof(fileName), "File Name must not be empty or null"); + + var args = new API.Rest.CreateWebhookMessageParams + { + Content = text, + AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, + IsTTS = isTTS, + Embeds = embeds.Select(x => x.ToModel()).ToArray(), + Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified, + File = !string.IsNullOrEmpty(filePath) ? new MultipartFile(new MemoryStream(File.ReadAllBytes(filePath), false), fileName) : Optional.Unspecified + }; + + if (ephemeral) + args.Flags = MessageFlags.Ephemeral; + + return await InteractionHelper.SendFollowupAsync(Discord, args, Token, Channel, options); + } + + /// + /// Acknowledges this interaction with the . + /// + /// + /// A string that contains json to write back to the incoming http request. + /// + public override string Defer(bool ephemeral = false, RequestOptions options = null) + { + if (!InteractionHelper.CanSendResponse(this)) + throw new TimeoutException($"Cannot defer an interaction after {InteractionHelper.ResponseTimeLimit} seconds!"); + + var response = new API.InteractionResponse + { + Type = InteractionResponseType.DeferredChannelMessageWithSource, + Data = new API.InteractionCallbackData + { + Flags = ephemeral ? MessageFlags.Ephemeral : Optional.Unspecified + } + }; + + lock (_lock) + { + if (_hasResponded) + { + throw new InvalidOperationException("Cannot respond or defer twice to the same interaction"); + } + } + + lock (_lock) + { + _hasResponded = true; + } + + return SerializePayload(response); + } + } +} diff --git a/src/Discord.Net.Rest/Entities/Interactions/CommandBase/RestCommandBaseData.cs b/src/Discord.Net.Rest/Entities/Interactions/CommandBase/RestCommandBaseData.cs new file mode 100644 index 000000000..4227c802a --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Interactions/CommandBase/RestCommandBaseData.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Model = Discord.API.ApplicationCommandInteractionData; + +namespace Discord.Rest +{ + /// + /// Represents the base data tied with the interaction. + /// + public class RestCommandBaseData : RestEntity, IApplicationCommandInteractionData where TOption : IApplicationCommandInteractionDataOption + { + /// + public string Name { get; private set; } + + /// + /// Gets a collection of received with this interaction. + /// + public virtual IReadOnlyCollection Options { get; internal set; } + + internal RestResolvableData ResolvableData; + + internal RestCommandBaseData(BaseDiscordClient client, Model model) + : base(client, model.Id) + { + } + + internal static async Task CreateAsync(DiscordRestClient client, Model model, RestGuild guild, IRestMessageChannel channel) + { + var entity = new RestCommandBaseData(client, model); + await entity.UpdateAsync(client, model, guild, channel).ConfigureAwait(false); + return entity; + } + + internal virtual async Task UpdateAsync(DiscordRestClient client, Model model, RestGuild guild, IRestMessageChannel channel) + { + Name = model.Name; + if (model.Resolved.IsSpecified && ResolvableData == null) + { + ResolvableData = new RestResolvableData(); + await ResolvableData.PopulateAsync(client, guild, channel, model).ConfigureAwait(false); + } + } + + IReadOnlyCollection IApplicationCommandInteractionData.Options + => (IReadOnlyCollection)Options; + } + + /// + /// Represents the base data tied with the interaction. + /// + public class RestCommandBaseData : RestCommandBaseData + { + internal RestCommandBaseData(DiscordRestClient client, Model model) + : base(client, model) { } + } +} diff --git a/src/Discord.Net.Rest/Entities/Interactions/CommandBase/RestResolvableData.cs b/src/Discord.Net.Rest/Entities/Interactions/CommandBase/RestResolvableData.cs new file mode 100644 index 000000000..710207ef9 --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Interactions/CommandBase/RestResolvableData.cs @@ -0,0 +1,96 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord.Rest +{ + internal class RestResolvableData where T : API.IResolvable + { + internal readonly Dictionary GuildMembers + = new Dictionary(); + internal readonly Dictionary Users + = new Dictionary(); + internal readonly Dictionary Channels + = new Dictionary(); + internal readonly Dictionary Roles + = new Dictionary(); + internal readonly Dictionary Messages + = new Dictionary(); + + internal async Task PopulateAsync(DiscordRestClient discord, RestGuild guild, IRestMessageChannel channel, T model) + { + var resolved = model.Resolved.Value; + + if (resolved.Users.IsSpecified) + { + foreach (var user in resolved.Users.Value) + { + var restUser = RestUser.Create(discord, user.Value); + + Users.Add(ulong.Parse(user.Key), restUser); + } + } + + if (resolved.Channels.IsSpecified) + { + var channels = await guild.GetChannelsAsync().ConfigureAwait(false); + + foreach (var channelModel in resolved.Channels.Value) + { + var restChannel = channels.FirstOrDefault(x => x.Id == channelModel.Value.Id); + + restChannel.Update(channelModel.Value); + + Channels.Add(ulong.Parse(channelModel.Key), restChannel); + } + } + + if (resolved.Members.IsSpecified) + { + foreach (var member in resolved.Members.Value) + { + // pull the adjacent user model + member.Value.User = resolved.Users.Value.FirstOrDefault(x => x.Key == member.Key).Value; + var restMember = RestGuildUser.Create(discord, guild, member.Value); + + GuildMembers.Add(ulong.Parse(member.Key), restMember); + } + } + + if (resolved.Roles.IsSpecified) + { + foreach (var role in resolved.Roles.Value) + { + var restRole = RestRole.Create(discord, guild, role.Value); + + Roles.Add(ulong.Parse(role.Key), restRole); + } + } + + if (resolved.Messages.IsSpecified) + { + foreach (var msg in resolved.Messages.Value) + { + channel ??= (IRestMessageChannel)(Channels.FirstOrDefault(x => x.Key == msg.Value.ChannelId).Value ?? await discord.GetChannelAsync(msg.Value.ChannelId).ConfigureAwait(false)); + + RestUser author; + + if (msg.Value.Author.IsSpecified) + { + author = RestUser.Create(discord, msg.Value.Author.Value); + } + else + { + author = RestGuildUser.Create(discord, guild, msg.Value.Member.Value); + } + + var message = RestMessage.Create(discord, channel, author, msg.Value); + + Messages.Add(message.Id, message); + } + } + } + } +} diff --git a/src/Discord.Net.Rest/Entities/Interactions/ContextMenuCommands/MessageCommands/RestMessageCommand.cs b/src/Discord.Net.Rest/Entities/Interactions/ContextMenuCommands/MessageCommands/RestMessageCommand.cs new file mode 100644 index 000000000..53055cac3 --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Interactions/ContextMenuCommands/MessageCommands/RestMessageCommand.cs @@ -0,0 +1,45 @@ +using System.Threading.Tasks; +using DataModel = Discord.API.ApplicationCommandInteractionData; +using Model = Discord.API.Interaction; + +namespace Discord.Rest +{ + /// + /// Represents a REST-based message command interaction. + /// + public class RestMessageCommand : RestCommandBase, IMessageCommandInteraction, IDiscordInteraction + { + /// + /// The data associated with this interaction. + /// + public new RestMessageCommandData Data { get; private set; } + + internal RestMessageCommand(DiscordRestClient client, Model model) + : base(client, model) + { + + } + + internal new static async Task CreateAsync(DiscordRestClient client, Model model) + { + var entity = new RestMessageCommand(client, model); + await entity.UpdateAsync(client, model).ConfigureAwait(false); + return entity; + } + + internal override async Task UpdateAsync(DiscordRestClient client, Model model) + { + await base.UpdateAsync(client, model).ConfigureAwait(false); + + var dataModel = model.Data.IsSpecified + ? (DataModel)model.Data.Value + : null; + + Data = await RestMessageCommandData.CreateAsync(client, dataModel, Guild, Channel).ConfigureAwait(false); + } + + //IMessageCommandInteraction + /// + IMessageCommandInteractionData IMessageCommandInteraction.Data => Data; + } +} diff --git a/src/Discord.Net.Rest/Entities/Interactions/ContextMenuCommands/MessageCommands/RestMessageCommandData.cs b/src/Discord.Net.Rest/Entities/Interactions/ContextMenuCommands/MessageCommands/RestMessageCommandData.cs new file mode 100644 index 000000000..8eadab617 --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Interactions/ContextMenuCommands/MessageCommands/RestMessageCommandData.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Model = Discord.API.ApplicationCommandInteractionData; + +namespace Discord.Rest +{ + /// + /// Represents the data for a . + /// + public class RestMessageCommandData : RestCommandBaseData, IMessageCommandInteractionData, IDiscordInteractionData + { + /// + /// Gets the message associated with this message command. + /// + public RestMessage Message + => ResolvableData?.Messages.FirstOrDefault().Value; + + /// + /// + /// Note Not implemented for + /// + public override IReadOnlyCollection Options + => throw new System.NotImplementedException(); + + internal RestMessageCommandData(DiscordRestClient client, Model model) + : base(client, model) { } + + internal new static async Task CreateAsync(DiscordRestClient client, Model model, RestGuild guild, IRestMessageChannel channel) + { + var entity = new RestMessageCommandData(client, model); + await entity.UpdateAsync(client, model, guild, channel).ConfigureAwait(false); + return entity; + } + + //IMessageCommandInteractionData + /// + IMessage IMessageCommandInteractionData.Message => Message; + } +} diff --git a/src/Discord.Net.Rest/Entities/Interactions/ContextMenuCommands/UserCommands/RestUserCommand.cs b/src/Discord.Net.Rest/Entities/Interactions/ContextMenuCommands/UserCommands/RestUserCommand.cs new file mode 100644 index 000000000..58f1ed375 --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Interactions/ContextMenuCommands/UserCommands/RestUserCommand.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using DataModel = Discord.API.ApplicationCommandInteractionData; +using Model = Discord.API.Interaction; + +namespace Discord.Rest +{ + /// + /// Represents a REST-based user command. + /// + public class RestUserCommand : RestCommandBase, IUserCommandInteraction, IDiscordInteraction + { + /// + /// Gets the data associated with this interaction. + /// + public new RestUserCommandData Data { get; private set; } + + internal RestUserCommand(DiscordRestClient client, Model model) + : base(client, model) + { + } + + internal new static async Task CreateAsync(DiscordRestClient client, Model model) + { + var entity = new RestUserCommand(client, model); + await entity.UpdateAsync(client, model).ConfigureAwait(false); + return entity; + } + + internal override async Task UpdateAsync(DiscordRestClient client, Model model) + { + await base.UpdateAsync(client, model).ConfigureAwait(false); + + var dataModel = model.Data.IsSpecified + ? (DataModel)model.Data.Value + : null; + + Data = await RestUserCommandData.CreateAsync(client, dataModel, Guild, Channel).ConfigureAwait(false); + } + + //IUserCommandInteractionData + /// + IUserCommandInteractionData IUserCommandInteraction.Data => Data; + } +} diff --git a/src/Discord.Net.Rest/Entities/Interactions/ContextMenuCommands/UserCommands/RestUserCommandData.cs b/src/Discord.Net.Rest/Entities/Interactions/ContextMenuCommands/UserCommands/RestUserCommandData.cs new file mode 100644 index 000000000..7563eecc7 --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Interactions/ContextMenuCommands/UserCommands/RestUserCommandData.cs @@ -0,0 +1,40 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Model = Discord.API.ApplicationCommandInteractionData; + +namespace Discord.Rest +{ + /// + /// Represents the data for a . + /// + public class RestUserCommandData : RestCommandBaseData, IUserCommandInteractionData, IDiscordInteractionData + { + /// + /// Gets the user who this command targets. + /// + public RestUser Member + => (RestUser)ResolvableData.GuildMembers.Values.FirstOrDefault() ?? ResolvableData.Users.Values.FirstOrDefault(); + + /// + /// + /// Note Not implemented for + /// + public override IReadOnlyCollection Options + => throw new System.NotImplementedException(); + + internal RestUserCommandData(DiscordRestClient client, Model model) + : base(client, model) { } + + internal new static async Task CreateAsync(DiscordRestClient client, Model model, RestGuild guild, IRestMessageChannel channel) + { + var entity = new RestUserCommandData(client, model); + await entity.UpdateAsync(client, model, guild, channel).ConfigureAwait(false); + return entity; + } + + //IUserCommandInteractionData + /// + IUser IUserCommandInteractionData.User => Member; + } +} diff --git a/src/Discord.Net.Rest/Entities/Interactions/InteractionHelper.cs b/src/Discord.Net.Rest/Entities/Interactions/InteractionHelper.cs new file mode 100644 index 000000000..7cfc6a2ec --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Interactions/InteractionHelper.cs @@ -0,0 +1,542 @@ +using Discord.API; +using Discord.API.Rest; +using Discord.Net; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Threading.Tasks; + +namespace Discord.Rest +{ + internal static class InteractionHelper + { + public const double ResponseTimeLimit = 3; + public const double ResponseAndFollowupLimit = 15; + + #region InteractionHelper + public static bool CanSendResponse(IDiscordInteraction interaction) + { + return (DateTime.UtcNow - interaction.CreatedAt).TotalSeconds < ResponseTimeLimit; + } + public static bool CanRespondOrFollowup(IDiscordInteraction interaction) + { + return (DateTime.UtcNow - interaction.CreatedAt).TotalMinutes <= ResponseAndFollowupLimit; + } + + public static Task DeleteAllGuildCommandsAsync(BaseDiscordClient client, ulong guildId, RequestOptions options = null) + { + return client.ApiClient.BulkOverwriteGuildApplicationCommandsAsync(guildId, Array.Empty(), options); + } + + public static Task DeleteAllGlobalCommandsAsync(BaseDiscordClient client, RequestOptions options = null) + { + return client.ApiClient.BulkOverwriteGlobalApplicationCommandsAsync(Array.Empty(), options); + } + + public static Task SendInteractionResponseAsync(BaseDiscordClient client, InteractionResponse response, + ulong interactionId, string interactionToken, RequestOptions options = null) + { + return client.ApiClient.CreateInteractionResponseAsync(response, interactionId, interactionToken, options); + } + + public static async Task GetOriginalResponseAsync(BaseDiscordClient client, IMessageChannel channel, + IDiscordInteraction interaction, RequestOptions options = null) + { + var model = await client.ApiClient.GetInteractionResponseAsync(interaction.Token, options).ConfigureAwait(false); + return RestInteractionMessage.Create(client, model, interaction.Token, channel); + } + + public static async Task SendFollowupAsync(BaseDiscordClient client, CreateWebhookMessageParams args, + string token, IMessageChannel channel, RequestOptions options = null) + { + var model = await client.ApiClient.CreateInteractionFollowupMessageAsync(args, token, options).ConfigureAwait(false); + + var entity = RestFollowupMessage.Create(client, model, token, channel); + return entity; + } + #endregion + + #region Global commands + public static async Task GetGlobalCommandAsync(BaseDiscordClient client, ulong id, + RequestOptions options = null) + { + var model = await client.ApiClient.GetGlobalApplicationCommandAsync(id, options).ConfigureAwait(false); + + return RestGlobalCommand.Create(client, model); + } + public static Task CreateGlobalCommandAsync(BaseDiscordClient client, + Action func, RequestOptions options = null) where TArg : ApplicationCommandProperties + { + var args = Activator.CreateInstance(typeof(TArg)); + func((TArg)args); + return CreateGlobalCommandAsync(client, (TArg)args, options); + } + public static async Task CreateGlobalCommandAsync(BaseDiscordClient client, + ApplicationCommandProperties arg, RequestOptions options = null) + { + Preconditions.NotNullOrEmpty(arg.Name, nameof(arg.Name)); + + var model = new CreateApplicationCommandParams + { + Name = arg.Name.Value, + Type = arg.Type, + DefaultPermission = arg.IsDefaultPermission.IsSpecified + ? arg.IsDefaultPermission.Value + : Optional.Unspecified + }; + + if (arg is SlashCommandProperties slashProps) + { + Preconditions.NotNullOrEmpty(slashProps.Description, nameof(slashProps.Description)); + + model.Description = slashProps.Description.Value; + + model.Options = slashProps.Options.IsSpecified + ? slashProps.Options.Value.Select(x => new ApplicationCommandOption(x)).ToArray() + : Optional.Unspecified; + } + + return await client.ApiClient.CreateGlobalApplicationCommandAsync(model, options).ConfigureAwait(false); + } + + public static async Task BulkOverwriteGlobalCommandsAsync(BaseDiscordClient client, + ApplicationCommandProperties[] args, RequestOptions options = null) + { + Preconditions.NotNull(args, nameof(args)); + + var models = new List(); + + foreach (var arg in args) + { + Preconditions.NotNullOrEmpty(arg.Name, nameof(arg.Name)); + + var model = new CreateApplicationCommandParams + { + Name = arg.Name.Value, + Type = arg.Type, + DefaultPermission = arg.IsDefaultPermission.IsSpecified + ? arg.IsDefaultPermission.Value + : Optional.Unspecified + }; + + if (arg is SlashCommandProperties slashProps) + { + Preconditions.NotNullOrEmpty(slashProps.Description, nameof(slashProps.Description)); + + model.Description = slashProps.Description.Value; + + model.Options = slashProps.Options.IsSpecified + ? slashProps.Options.Value.Select(x => new ApplicationCommandOption(x)).ToArray() + : Optional.Unspecified; + } + + models.Add(model); + } + + return await client.ApiClient.BulkOverwriteGlobalApplicationCommandsAsync(models.ToArray(), options).ConfigureAwait(false); + } + + public static async Task> BulkOverwriteGuildCommandsAsync(BaseDiscordClient client, ulong guildId, + ApplicationCommandProperties[] args, RequestOptions options = null) + { + Preconditions.NotNull(args, nameof(args)); + + var models = new List(); + + foreach (var arg in args) + { + Preconditions.NotNullOrEmpty(arg.Name, nameof(arg.Name)); + + var model = new CreateApplicationCommandParams + { + Name = arg.Name.Value, + Type = arg.Type, + DefaultPermission = arg.IsDefaultPermission.IsSpecified + ? arg.IsDefaultPermission.Value + : Optional.Unspecified + }; + + if (arg is SlashCommandProperties slashProps) + { + Preconditions.NotNullOrEmpty(slashProps.Description, nameof(slashProps.Description)); + + model.Description = slashProps.Description.Value; + + model.Options = slashProps.Options.IsSpecified + ? slashProps.Options.Value.Select(x => new ApplicationCommandOption(x)).ToArray() + : Optional.Unspecified; + } + + models.Add(model); + } + + return await client.ApiClient.BulkOverwriteGuildApplicationCommandsAsync(guildId, models.ToArray(), options).ConfigureAwait(false); + } + + private static TArg GetApplicationCommandProperties(IApplicationCommand command) + where TArg : ApplicationCommandProperties + { + bool isBaseClass = typeof(TArg) == typeof(ApplicationCommandProperties); + + switch (true) + { + case true when (typeof(TArg) == typeof(SlashCommandProperties) || isBaseClass) && command.Type == ApplicationCommandType.Slash: + return new SlashCommandProperties() as TArg; + case true when (typeof(TArg) == typeof(MessageCommandProperties) || isBaseClass) && command.Type == ApplicationCommandType.Message: + return new MessageCommandProperties() as TArg; + case true when (typeof(TArg) == typeof(UserCommandProperties) || isBaseClass) && command.Type == ApplicationCommandType.User: + return new UserCommandProperties() as TArg; + default: + throw new InvalidOperationException($"Cannot modify application command of type {command.Type} with the parameter type {typeof(TArg).FullName}"); + } + } + + public static Task ModifyGlobalCommandAsync(BaseDiscordClient client, IApplicationCommand command, + Action func, RequestOptions options = null) where TArg : ApplicationCommandProperties + { + var arg = GetApplicationCommandProperties(command); + func(arg); + return ModifyGlobalCommandAsync(client, command, arg, options); + } + + public static async Task ModifyGlobalCommandAsync(BaseDiscordClient client, IApplicationCommand command, + ApplicationCommandProperties args, RequestOptions options = null) + { + if (args.Name.IsSpecified) + { + Preconditions.AtMost(args.Name.Value.Length, 32, nameof(args.Name)); + Preconditions.AtLeast(args.Name.Value.Length, 1, nameof(args.Name)); + } + + var model = new ModifyApplicationCommandParams + { + Name = args.Name, + DefaultPermission = args.IsDefaultPermission.IsSpecified + ? args.IsDefaultPermission.Value + : Optional.Unspecified + }; + + if (args is SlashCommandProperties slashProps) + { + if (slashProps.Description.IsSpecified) + { + Preconditions.AtMost(slashProps.Description.Value.Length, 100, nameof(slashProps.Description)); + Preconditions.AtLeast(slashProps.Description.Value.Length, 1, nameof(slashProps.Description)); + } + + if (slashProps.Options.IsSpecified) + { + if (slashProps.Options.Value.Count > 10) + throw new ArgumentException("Option count must be 10 or less"); + } + + model.Description = slashProps.Description; + + model.Options = slashProps.Options.IsSpecified + ? slashProps.Options.Value.Select(x => new ApplicationCommandOption(x)).ToArray() + : Optional.Unspecified; + } + + return await client.ApiClient.ModifyGlobalApplicationCommandAsync(model, command.Id, options).ConfigureAwait(false); + } + + public static async Task DeleteGlobalCommandAsync(BaseDiscordClient client, IApplicationCommand command, RequestOptions options = null) + { + Preconditions.NotNull(command, nameof(command)); + Preconditions.NotEqual(command.Id, 0, nameof(command.Id)); + + await client.ApiClient.DeleteGlobalApplicationCommandAsync(command.Id, options).ConfigureAwait(false); + } + #endregion + + #region Guild Commands + public static Task CreateGuildCommandAsync(BaseDiscordClient client, ulong guildId, + Action func, RequestOptions options) where TArg : ApplicationCommandProperties + { + var args = Activator.CreateInstance(typeof(TArg)); + func((TArg)args); + return CreateGuildCommandAsync(client, guildId, (TArg)args, options); + } + + public static async Task CreateGuildCommandAsync(BaseDiscordClient client, ulong guildId, + ApplicationCommandProperties arg, RequestOptions options = null) + { + var model = new CreateApplicationCommandParams + { + Name = arg.Name.Value, + Type = arg.Type, + DefaultPermission = arg.IsDefaultPermission.IsSpecified + ? arg.IsDefaultPermission.Value + : Optional.Unspecified + }; + + if (arg is SlashCommandProperties slashProps) + { + Preconditions.NotNullOrEmpty(slashProps.Description, nameof(slashProps.Description)); + + model.Description = slashProps.Description.Value; + + model.Options = slashProps.Options.IsSpecified + ? slashProps.Options.Value.Select(x => new ApplicationCommandOption(x)).ToArray() + : Optional.Unspecified; + } + + return await client.ApiClient.CreateGuildApplicationCommandAsync(model, guildId, options).ConfigureAwait(false); + } + + public static Task ModifyGuildCommandAsync(BaseDiscordClient client, IApplicationCommand command, ulong guildId, + Action func, RequestOptions options = null) where TArg : ApplicationCommandProperties + { + var arg = GetApplicationCommandProperties(command); + func(arg); + return ModifyGuildCommandAsync(client, command, guildId, arg, options); + } + + public static async Task ModifyGuildCommandAsync(BaseDiscordClient client, IApplicationCommand command, ulong guildId, + ApplicationCommandProperties arg, RequestOptions options = null) + { + var model = new ModifyApplicationCommandParams + { + Name = arg.Name, + DefaultPermission = arg.IsDefaultPermission.IsSpecified + ? arg.IsDefaultPermission.Value + : Optional.Unspecified + }; + + if (arg is SlashCommandProperties slashProps) + { + Preconditions.NotNullOrEmpty(slashProps.Description, nameof(slashProps.Description)); + + model.Description = slashProps.Description.Value; + + model.Options = slashProps.Options.IsSpecified + ? slashProps.Options.Value.Select(x => new ApplicationCommandOption(x)).ToArray() + : Optional.Unspecified; + } + + return await client.ApiClient.ModifyGuildApplicationCommandAsync(model, guildId, command.Id, options).ConfigureAwait(false); + } + + public static async Task DeleteGuildCommandAsync(BaseDiscordClient client, ulong guildId, IApplicationCommand command, RequestOptions options = null) + { + Preconditions.NotNull(command, nameof(command)); + Preconditions.NotEqual(command.Id, 0, nameof(command.Id)); + + await client.ApiClient.DeleteGuildApplicationCommandAsync(guildId, command.Id, options).ConfigureAwait(false); + } + + public static Task DeleteUnknownApplicationCommandAsync(BaseDiscordClient client, ulong? guildId, IApplicationCommand command, RequestOptions options = null) + { + return guildId.HasValue + ? DeleteGuildCommandAsync(client, guildId.Value, command, options) + : DeleteGlobalCommandAsync(client, command, options); + } + #endregion + + #region Responses + public static async Task ModifyFollowupMessageAsync(BaseDiscordClient client, RestFollowupMessage message, Action func, + RequestOptions options = null) + { + var args = new MessageProperties(); + func(args); + + var embed = args.Embed; + var embeds = args.Embeds; + + bool hasText = args.Content.IsSpecified ? !string.IsNullOrEmpty(args.Content.Value) : !string.IsNullOrEmpty(message.Content); + bool hasEmbeds = embed.IsSpecified && embed.Value != null || embeds.IsSpecified && embeds.Value?.Length > 0 || message.Embeds.Any(); + bool hasComponents = args.Components.IsSpecified && args.Components.Value != null; + + if (!hasComponents && !hasText && !hasEmbeds) + Preconditions.NotNullOrEmpty(args.Content.IsSpecified ? args.Content.Value : string.Empty, nameof(args.Content)); + + var apiEmbeds = embed.IsSpecified || embeds.IsSpecified ? new List() : null; + + if (embed.IsSpecified && embed.Value != null) + { + apiEmbeds.Add(embed.Value.ToModel()); + } + + if (embeds.IsSpecified && embeds.Value != null) + { + apiEmbeds.AddRange(embeds.Value.Select(x => x.ToModel())); + } + + Preconditions.AtMost(apiEmbeds?.Count ?? 0, 10, nameof(args.Embeds), "A max of 10 embeds are allowed."); + + var apiArgs = new ModifyInteractionResponseParams + { + Content = args.Content, + Embeds = apiEmbeds?.ToArray() ?? Optional.Unspecified, + AllowedMentions = args.AllowedMentions.IsSpecified ? args.AllowedMentions.Value.ToModel() : Optional.Unspecified, + Components = args.Components.IsSpecified ? args.Components.Value?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() : Optional.Unspecified + }; + + return await client.ApiClient.ModifyInteractionFollowupMessageAsync(apiArgs, message.Id, message.Token, options).ConfigureAwait(false); + } + public static async Task DeleteFollowupMessageAsync(BaseDiscordClient client, RestFollowupMessage message, RequestOptions options = null) + => await client.ApiClient.DeleteInteractionFollowupMessageAsync(message.Id, message.Token, options); + public static async Task ModifyInteractionResponseAsync(BaseDiscordClient client, string token, Action func, + RequestOptions options = null) + { + var args = new MessageProperties(); + func(args); + + var embed = args.Embed; + var embeds = args.Embeds; + + bool hasText = !string.IsNullOrEmpty(args.Content.GetValueOrDefault()); + bool hasEmbeds = embed.IsSpecified && embed.Value != null || embeds.IsSpecified && embeds.Value?.Length > 0; + bool hasComponents = args.Components.IsSpecified && args.Components.Value != null; + + if (!hasComponents && !hasText && !hasEmbeds) + Preconditions.NotNullOrEmpty(args.Content.IsSpecified ? args.Content.Value : string.Empty, nameof(args.Content)); + + var apiEmbeds = embed.IsSpecified || embeds.IsSpecified ? new List() : null; + + if (embed.IsSpecified && embed.Value != null) + { + apiEmbeds.Add(embed.Value.ToModel()); + } + + if (embeds.IsSpecified && embeds.Value != null) + { + apiEmbeds.AddRange(embeds.Value.Select(x => x.ToModel())); + } + + Preconditions.AtMost(apiEmbeds?.Count ?? 0, 10, nameof(args.Embeds), "A max of 10 embeds are allowed."); + + var apiArgs = new ModifyInteractionResponseParams + { + Content = args.Content, + Embeds = apiEmbeds?.ToArray() ?? Optional.Unspecified, + AllowedMentions = args.AllowedMentions.IsSpecified ? args.AllowedMentions.Value?.ToModel() : Optional.Unspecified, + Components = args.Components.IsSpecified ? args.Components.Value?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() : Optional.Unspecified, + Flags = args.Flags + }; + + return await client.ApiClient.ModifyInteractionResponseAsync(apiArgs, token, options).ConfigureAwait(false); + } + + public static async Task DeleteInteractionResponseAsync(BaseDiscordClient client, RestInteractionMessage message, RequestOptions options = null) + => await client.ApiClient.DeleteInteractionFollowupMessageAsync(message.Id, message.Token, options); + + public static Task SendAutocompleteResultAsync(BaseDiscordClient client, IEnumerable result, ulong interactionId, + string interactionToken, RequestOptions options) + { + result ??= Array.Empty(); + + Preconditions.AtMost(result.Count(), 20, nameof(result), "A maximum of 20 choices are allowed!"); + + var apiArgs = new InteractionResponse + { + Type = InteractionResponseType.ApplicationCommandAutocompleteResult, + Data = new InteractionCallbackData + { + Choices = result.Any() + ? result.Select(x => new ApplicationCommandOptionChoice { Name = x.Name, Value = x.Value }).ToArray() + : Array.Empty() + } + }; + + return client.ApiClient.CreateInteractionResponseAsync(apiArgs, interactionId, interactionToken, options); + } + #endregion + + #region Guild permissions + public static async Task> GetGuildCommandPermissionsAsync(BaseDiscordClient client, + ulong guildId, RequestOptions options) + { + var models = await client.ApiClient.GetGuildApplicationCommandPermissionsAsync(guildId, options); + return models.Select(x => + new GuildApplicationCommandPermission(x.Id, x.ApplicationId, guildId, x.Permissions.Select( + y => new ApplicationCommandPermission(y.Id, y.Type, y.Permission)) + .ToArray()) + ).ToArray(); + } + + public static async Task GetGuildCommandPermissionAsync(BaseDiscordClient client, + ulong guildId, ulong commandId, RequestOptions options) + { + try + { + var model = await client.ApiClient.GetGuildApplicationCommandPermissionAsync(guildId, commandId, options); + return new GuildApplicationCommandPermission(model.Id, model.ApplicationId, guildId, model.Permissions.Select( + y => new ApplicationCommandPermission(y.Id, y.Type, y.Permission)).ToArray()); + } + catch (HttpException x) + { + if (x.HttpCode == HttpStatusCode.NotFound) + return null; + throw; + } + } + + public static async Task ModifyGuildCommandPermissionsAsync(BaseDiscordClient client, ulong guildId, ulong commandId, + ApplicationCommandPermission[] args, RequestOptions options) + { + Preconditions.NotNull(args, nameof(args)); + Preconditions.AtMost(args.Length, 10, nameof(args)); + Preconditions.AtLeast(args.Length, 0, nameof(args)); + + var permissionsList = new List(); + + foreach (var arg in args) + { + var permissions = new ApplicationCommandPermissions + { + Id = arg.TargetId, + Permission = arg.Permission, + Type = arg.TargetType + }; + + permissionsList.Add(permissions); + } + + var model = new ModifyGuildApplicationCommandPermissionsParams + { + Permissions = permissionsList.ToArray() + }; + + var apiModel = await client.ApiClient.ModifyApplicationCommandPermissionsAsync(model, guildId, commandId, options); + + return new GuildApplicationCommandPermission(apiModel.Id, apiModel.ApplicationId, guildId, apiModel.Permissions.Select( + x => new ApplicationCommandPermission(x.Id, x.Type, x.Permission)).ToArray()); + } + + public static async Task> BatchEditGuildCommandPermissionsAsync(BaseDiscordClient client, ulong guildId, + IDictionary args, RequestOptions options) + { + Preconditions.NotNull(args, nameof(args)); + Preconditions.NotEqual(args.Count, 0, nameof(args)); + + var models = new List(); + + foreach (var arg in args) + { + Preconditions.AtMost(arg.Value.Length, 10, nameof(args)); + + var model = new ModifyGuildApplicationCommandPermissions + { + Id = arg.Key, + Permissions = arg.Value.Select(x => new ApplicationCommandPermissions + { + Id = x.TargetId, + Permission = x.Permission, + Type = x.TargetType + }).ToArray() + }; + + models.Add(model); + } + + var apiModels = await client.ApiClient.BatchModifyApplicationCommandPermissionsAsync(models.ToArray(), guildId, options); + + return apiModels.Select( + x => new GuildApplicationCommandPermission(x.Id, x.ApplicationId, x.GuildId, x.Permissions.Select( + y => new ApplicationCommandPermission(y.Id, y.Type, y.Permission)).ToArray())).ToArray(); + } + #endregion + } +} diff --git a/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs b/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs new file mode 100644 index 000000000..eb47e15aa --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs @@ -0,0 +1,452 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Model = Discord.API.Interaction; +using DataModel = Discord.API.MessageComponentInteractionData; +using System.IO; +using Discord.Net.Rest; + +namespace Discord.Rest +{ + /// + /// Represents a REST-based message component. + /// + internal class RestMessageComponent : RestInteraction, IComponentInteraction, IDiscordInteraction + { + /// + /// Gets the data received with this interaction, contains the button that was clicked. + /// + public new RestMessageComponentData Data { get; } + + /// + /// Gets the message that contained the trigger for this interaction. + /// + public RestUserMessage Message { get; private set; } + + private object _lock = new object(); + internal override bool _hasResponded { get; set; } = false; + + internal RestMessageComponent(BaseDiscordClient client, Model model) + : base(client, model.Id) + { + var dataModel = model.Data.IsSpecified + ? (DataModel)model.Data.Value + : null; + + Data = new RestMessageComponentData(dataModel); + } + + internal new static async Task CreateAsync(DiscordRestClient client, Model model) + { + var entity = new RestMessageComponent(client, model); + await entity.UpdateAsync(client, model).ConfigureAwait(false); + return entity; + } + internal override async Task UpdateAsync(DiscordRestClient discord, Model model) + { + await base.UpdateAsync(discord, model).ConfigureAwait(false); + + if (model.Message.IsSpecified && model.ChannelId.IsSpecified) + { + if (Message == null) + { + Message = RestUserMessage.Create(Discord, Channel, User, model.Message.Value); + } + } + } + /// + /// Responds to an Interaction with type . + /// + /// The text of the message to be sent. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// The request options for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// + /// A string that contains json to write back to the incoming http request. + /// + public override string Respond( + string text = null, + Embed[] embeds = null, + bool isTTS = false, + bool ephemeral = false, + AllowedMentions allowedMentions = null, + RequestOptions options = null, + MessageComponent component = null, + Embed embed = null) + { + if (!IsValidToken) + throw new InvalidOperationException("Interaction token is no longer valid"); + + if (!InteractionHelper.CanSendResponse(this)) + throw new TimeoutException($"Cannot respond to an interaction after {InteractionHelper.ResponseTimeLimit} seconds!"); + + embeds ??= Array.Empty(); + if (embed != null) + embeds = new[] { embed }.Concat(embeds).ToArray(); + + 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, 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 + if (allowedMentions != null && allowedMentions.AllowedTypes.HasValue) + { + if (allowedMentions.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Users) && + allowedMentions.UserIds != null && allowedMentions.UserIds.Count > 0) + { + throw new ArgumentException("The Users flag is mutually exclusive with the list of User Ids.", nameof(allowedMentions)); + } + + if (allowedMentions.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Roles) && + allowedMentions.RoleIds != null && allowedMentions.RoleIds.Count > 0) + { + throw new ArgumentException("The Roles flag is mutually exclusive with the list of Role Ids.", nameof(allowedMentions)); + } + } + + var response = new API.InteractionResponse + { + Type = InteractionResponseType.ChannelMessageWithSource, + Data = new API.InteractionCallbackData + { + Content = text ?? Optional.Unspecified, + AllowedMentions = allowedMentions?.ToModel(), + Embeds = embeds.Select(x => x.ToModel()).ToArray(), + TTS = isTTS, + Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified + } + }; + + if (ephemeral) + response.Data.Value.Flags = MessageFlags.Ephemeral; + + lock (_lock) + { + if (_hasResponded) + { + throw new InvalidOperationException("Cannot respond, update, or defer twice to the same interaction"); + } + } + + lock (_lock) + { + _hasResponded = true; + } + + return SerializePayload(response); + } + + /// + /// Updates the message which this component resides in with the type + /// + /// A delegate containing the properties to modify the message with. + /// The request options for this request. + /// A string that contains json to write back to the incoming http request. + public string Update(Action func, RequestOptions options = null) + { + var args = new MessageProperties(); + func(args); + + if (!IsValidToken) + throw new InvalidOperationException("Interaction token is no longer valid"); + + if (!InteractionHelper.CanSendResponse(this)) + throw new TimeoutException($"Cannot respond to an interaction after {InteractionHelper.ResponseTimeLimit} seconds!"); + + if (args.AllowedMentions.IsSpecified) + { + var allowedMentions = args.AllowedMentions.Value; + Preconditions.AtMost(allowedMentions?.RoleIds?.Count ?? 0, 100, nameof(allowedMentions), "A max of 100 role Ids are allowed."); + Preconditions.AtMost(allowedMentions?.UserIds?.Count ?? 0, 100, nameof(allowedMentions), "A max of 100 user Ids are allowed."); + } + + var embed = args.Embed; + var embeds = args.Embeds; + + bool hasText = args.Content.IsSpecified ? !string.IsNullOrEmpty(args.Content.Value) : !string.IsNullOrEmpty(Message.Content); + bool hasEmbeds = embed.IsSpecified && embed.Value != null || embeds.IsSpecified && embeds.Value?.Length > 0 || Message.Embeds.Any(); + + if (!hasText && !hasEmbeds) + Preconditions.NotNullOrEmpty(args.Content.IsSpecified ? args.Content.Value : string.Empty, nameof(args.Content)); + + var apiEmbeds = embed.IsSpecified || embeds.IsSpecified ? new List() : null; + + if (embed.IsSpecified && embed.Value != null) + { + apiEmbeds.Add(embed.Value.ToModel()); + } + + if (embeds.IsSpecified && embeds.Value != null) + { + apiEmbeds.AddRange(embeds.Value.Select(x => x.ToModel())); + } + + Preconditions.AtMost(apiEmbeds?.Count ?? 0, 10, nameof(args.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 + if (args.AllowedMentions.IsSpecified && args.AllowedMentions.Value != null && args.AllowedMentions.Value.AllowedTypes.HasValue) + { + var allowedMentions = args.AllowedMentions.Value; + if (allowedMentions.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Users) + && allowedMentions.UserIds != null && allowedMentions.UserIds.Count > 0) + { + throw new ArgumentException("The Users flag is mutually exclusive with the list of User Ids.", nameof(args.AllowedMentions)); + } + + if (allowedMentions.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Roles) + && allowedMentions.RoleIds != null && allowedMentions.RoleIds.Count > 0) + { + throw new ArgumentException("The Roles flag is mutually exclusive with the list of Role Ids.", nameof(args.AllowedMentions)); + } + } + + var response = new API.InteractionResponse + { + Type = InteractionResponseType.UpdateMessage, + Data = new API.InteractionCallbackData + { + Content = args.Content, + AllowedMentions = args.AllowedMentions.IsSpecified ? args.AllowedMentions.Value?.ToModel() : Optional.Unspecified, + Embeds = apiEmbeds?.ToArray() ?? Optional.Unspecified, + Components = args.Components.IsSpecified + ? args.Components.Value?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Array.Empty() + : Optional.Unspecified, + Flags = args.Flags.IsSpecified ? args.Flags.Value ?? Optional.Unspecified : Optional.Unspecified + } + }; + + lock (_lock) + { + if (_hasResponded) + { + throw new InvalidOperationException("Cannot respond, update, or defer twice to the same interaction"); + } + } + + lock (_lock) + { + _hasResponded = true; + } + + return SerializePayload(response); + } + + /// + /// Sends a followup message for this interaction. + /// + /// The text of the message to be sent. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// The request options for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// + /// The sent message. + /// + public override async Task FollowupAsync( + string text = null, + Embed[] embeds = null, + bool isTTS = false, + bool ephemeral = false, + AllowedMentions allowedMentions = null, + RequestOptions options = null, + MessageComponent component = null, + Embed embed = null) + { + if (!IsValidToken) + throw new InvalidOperationException("Interaction token is no longer valid"); + + embeds ??= Array.Empty(); + if (embed != null) + embeds = new[] { embed }.Concat(embeds).ToArray(); + + 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, 10, nameof(embeds), "A max of 10 embeds are allowed."); + + var args = new API.Rest.CreateWebhookMessageParams + { + Content = text, + AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, + IsTTS = isTTS, + Embeds = embeds.Select(x => x.ToModel()).ToArray(), + Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified + }; + + if (ephemeral) + args.Flags = MessageFlags.Ephemeral; + + return await InteractionHelper.SendFollowupAsync(Discord, args, Token, Message.Channel, options).ConfigureAwait(false); + } + + /// + public override async Task FollowupWithFileAsync( + Stream fileStream, + string fileName, + string text = null, + Embed[] embeds = null, + bool isTTS = false, + bool ephemeral = false, + AllowedMentions allowedMentions = null, + RequestOptions options = null, + MessageComponent component = null, + Embed embed = null) + { + if (!IsValidToken) + throw new InvalidOperationException("Interaction token is no longer valid"); + + embeds ??= Array.Empty(); + if (embed != null) + embeds = new[] { embed }.Concat(embeds).ToArray(); + + 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, 10, nameof(embeds), "A max of 10 embeds are allowed."); + Preconditions.NotNull(fileStream, nameof(fileStream), "File Stream must have data"); + Preconditions.NotNullOrWhitespace(fileName, nameof(fileName), "File Name must not be empty or null"); + + var args = new API.Rest.CreateWebhookMessageParams + { + Content = text, + AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, + IsTTS = isTTS, + Embeds = embeds.Select(x => x.ToModel()).ToArray(), + Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified, + File = fileStream is not null ? new MultipartFile(fileStream, fileName) : Optional.Unspecified + }; + + if (ephemeral) + args.Flags = MessageFlags.Ephemeral; + + return await InteractionHelper.SendFollowupAsync(Discord, args, Token, Message.Channel, options).ConfigureAwait(false); + } + + /// + public override async Task FollowupWithFileAsync( + string filePath, + string text = null, + string fileName = null, + Embed[] embeds = null, + bool isTTS = false, + bool ephemeral = false, + AllowedMentions allowedMentions = null, + RequestOptions options = null, + MessageComponent component = null, + Embed embed = null) + { + if (!IsValidToken) + throw new InvalidOperationException("Interaction token is no longer valid"); + + embeds ??= Array.Empty(); + if (embed != null) + embeds = new[] { embed }.Concat(embeds).ToArray(); + + 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, 10, nameof(embeds), "A max of 10 embeds are allowed."); + Preconditions.NotNullOrWhitespace(filePath, nameof(filePath), "Path must exist"); + + var args = new API.Rest.CreateWebhookMessageParams + { + Content = text, + AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, + IsTTS = isTTS, + Embeds = embeds.Select(x => x.ToModel()).ToArray(), + Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified, + File = !string.IsNullOrEmpty(filePath) ? new MultipartFile(new MemoryStream(File.ReadAllBytes(filePath), false), fileName) : Optional.Unspecified + }; + + if (ephemeral) + args.Flags = MessageFlags.Ephemeral; + + return await InteractionHelper.SendFollowupAsync(Discord, args, Token, Message.Channel, options).ConfigureAwait(false); + } + + /// + /// Defers an interaction and responds with type 5 () + /// + /// to send this message ephemerally, otherwise . + /// The request options for this request. + /// + /// A string that contains json to write back to the incoming http request. + /// + public string DeferLoading(bool ephemeral = false, RequestOptions options = null) + { + if (!InteractionHelper.CanSendResponse(this)) + throw new TimeoutException($"Cannot defer an interaction after {InteractionHelper.ResponseTimeLimit} seconds of no response/acknowledgement"); + + var response = new API.InteractionResponse + { + Type = InteractionResponseType.DeferredChannelMessageWithSource, + Data = ephemeral ? new API.InteractionCallbackData { Flags = MessageFlags.Ephemeral } : Optional.Unspecified + }; + + lock (_lock) + { + if (_hasResponded) + { + throw new InvalidOperationException("Cannot respond or defer twice to the same interaction"); + } + } + + lock (_lock) + { + _hasResponded = true; + } + + return SerializePayload(response); + } + + /// + /// + /// + /// + /// + /// + /// A string that contains json to write back to the incoming http request. + /// + /// + /// + public override string Defer(bool ephemeral = false, RequestOptions options = null) + { + if (!InteractionHelper.CanSendResponse(this)) + throw new TimeoutException($"Cannot defer an interaction after {InteractionHelper.ResponseTimeLimit} seconds of no response/acknowledgement"); + + var response = new API.InteractionResponse + { + Type = InteractionResponseType.DeferredUpdateMessage, + Data = ephemeral ? new API.InteractionCallbackData { Flags = MessageFlags.Ephemeral } : Optional.Unspecified + }; + + lock (_lock) + { + if (_hasResponded) + { + throw new InvalidOperationException("Cannot respond or defer twice to the same interaction"); + } + } + + lock (_lock) + { + _hasResponded = true; + } + + return SerializePayload(response); + } + + //IComponentInteraction + /// + IComponentInteractionData IComponentInteraction.Data => Data; + + /// + IUserMessage IComponentInteraction.Message => Message; + } +} diff --git a/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponentData.cs b/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponentData.cs new file mode 100644 index 000000000..e865c208c --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponentData.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Model = Discord.API.MessageComponentInteractionData; + +namespace Discord.Rest +{ + /// + /// Represents data for a . + /// + public class RestMessageComponentData : IComponentInteractionData, IDiscordInteractionData + { + /// + /// Gets the components Custom Id that was clicked. + /// + public string CustomId { get; } + + /// + /// Gets the type of the component clicked. + /// + public ComponentType Type { get; } + + /// + /// Gets the value(s) of a interaction response. + /// + public IReadOnlyCollection Values { get; } + + internal RestMessageComponentData(Model model) + { + CustomId = model.CustomId; + Type = model.ComponentType; + Values = model.Values.GetValueOrDefault(); + } + } +} diff --git a/src/Discord.Net.Rest/Entities/Interactions/RestApplicationCommand.cs b/src/Discord.Net.Rest/Entities/Interactions/RestApplicationCommand.cs new file mode 100644 index 000000000..c3edaf6ff --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Interactions/RestApplicationCommand.cs @@ -0,0 +1,77 @@ +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using System.Threading.Tasks; +using Model = Discord.API.ApplicationCommand; + +namespace Discord.Rest +{ + /// + /// Represents a Rest-based implementation of the . + /// + public abstract class RestApplicationCommand : RestEntity, IApplicationCommand + { + /// + public ulong ApplicationId { get; private set; } + + /// + public ApplicationCommandType Type { get; private set; } + + /// + public string Name { get; private set; } + + /// + public string Description { get; private set; } + + /// + public bool IsDefaultPermission { get; private set; } + + /// + /// The options of this command. + /// + public IReadOnlyCollection Options { get; private set; } + + /// + public DateTimeOffset CreatedAt + => SnowflakeUtils.FromSnowflake(Id); + + internal RestApplicationCommand(BaseDiscordClient client, ulong id) + : base(client, id) { } + + internal static RestApplicationCommand Create(BaseDiscordClient client, Model model, ulong? guildId) + { + return guildId.HasValue + ? RestGuildCommand.Create(client, model, guildId.Value) + : RestGlobalCommand.Create(client, model); + } + + internal virtual void Update(Model model) + { + Type = model.Type; + ApplicationId = model.ApplicationId; + Name = model.Name; + Description = model.Description; + IsDefaultPermission = model.DefaultPermissions.GetValueOrDefault(true); + + Options = model.Options.IsSpecified + ? model.Options.Value.Select(RestApplicationCommandOption.Create).ToImmutableArray() + : ImmutableArray.Create(); + } + + /// + public abstract Task DeleteAsync(RequestOptions options = null); + + /// + public Task ModifyAsync(Action func, RequestOptions options = null) + { + return ModifyAsync(func, options); + } + + /// + public abstract Task ModifyAsync(Action func, RequestOptions options = null) + where TArg : ApplicationCommandProperties; + + IReadOnlyCollection IApplicationCommand.Options => Options; + } +} diff --git a/src/Discord.Net.Rest/Entities/Interactions/RestApplicationCommandChoice.cs b/src/Discord.Net.Rest/Entities/Interactions/RestApplicationCommandChoice.cs new file mode 100644 index 000000000..a40491a2c --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Interactions/RestApplicationCommandChoice.cs @@ -0,0 +1,22 @@ +using Model = Discord.API.ApplicationCommandOptionChoice; + +namespace Discord.Rest +{ + /// + /// Represents a Rest-based implementation of . + /// + public class RestApplicationCommandChoice : IApplicationCommandOptionChoice + { + /// + public string Name { get; } + + /// + public object Value { get; } + + internal RestApplicationCommandChoice(Model model) + { + Name = model.Name; + Value = model.Value; + } + } +} diff --git a/src/Discord.Net.Rest/Entities/Interactions/RestApplicationCommandOption.cs b/src/Discord.Net.Rest/Entities/Interactions/RestApplicationCommandOption.cs new file mode 100644 index 000000000..d5c261e0b --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Interactions/RestApplicationCommandOption.cs @@ -0,0 +1,98 @@ +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using Model = Discord.API.ApplicationCommandOption; + +namespace Discord.Rest +{ + /// + /// Represents a Rest-based implementation of . + /// + public class RestApplicationCommandOption : IApplicationCommandOption + { + #region RestApplicationCommandOption + /// + public ApplicationCommandOptionType Type { get; private set; } + + /// + public string Name { get; private set; } + + /// + public string Description { get; private set; } + + /// + public bool? IsDefault { get; private set; } + + /// + public bool? IsRequired { get; private set; } + + /// + public double? MinValue { get; private set; } + + /// + public double? MaxValue { get; private set; } + + /// + /// A collection of 's for this command. + /// + public IReadOnlyCollection Choices { get; private set; } + + /// + /// A collection of 's for this command. + /// + public IReadOnlyCollection Options { get; private set; } + + /// + /// The allowed channel types for this option. + /// + public IReadOnlyCollection ChannelTypes { get; private set; } + + internal RestApplicationCommandOption() { } + + internal static RestApplicationCommandOption Create(Model model) + { + var options = new RestApplicationCommandOption(); + options.Update(model); + return options; + } + + internal void Update(Model model) + { + Type = model.Type; + Name = model.Name; + Description = model.Description; + + if (model.Default.IsSpecified) + IsDefault = model.Default.Value; + + if (model.Required.IsSpecified) + IsRequired = model.Required.Value; + + if (model.MinValue.IsSpecified) + MinValue = model.MinValue.Value; + + if (model.MaxValue.IsSpecified) + MaxValue = model.MaxValue.Value; + + Options = model.Options.IsSpecified + ? model.Options.Value.Select(Create).ToImmutableArray() + : ImmutableArray.Create(); + + Choices = model.Choices.IsSpecified + ? model.Choices.Value.Select(x => new RestApplicationCommandChoice(x)).ToImmutableArray() + : ImmutableArray.Create(); + + ChannelTypes = model.ChannelTypes.IsSpecified + ? model.ChannelTypes.Value.ToImmutableArray() + : ImmutableArray.Create(); + } + #endregion + + #region IApplicationCommandOption + IReadOnlyCollection IApplicationCommandOption.Options + => Options; + IReadOnlyCollection IApplicationCommandOption.Choices + => Choices; + #endregion + } +} diff --git a/src/Discord.Net.Rest/Entities/Interactions/RestGlobalCommand.cs b/src/Discord.Net.Rest/Entities/Interactions/RestGlobalCommand.cs new file mode 100644 index 000000000..c319bcf34 --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Interactions/RestGlobalCommand.cs @@ -0,0 +1,40 @@ +using System; +using System.Threading.Tasks; +using Model = Discord.API.ApplicationCommand; + +namespace Discord.Rest +{ + /// + /// Represents a Rest-based global application command. + /// + public class RestGlobalCommand : RestApplicationCommand + { + internal RestGlobalCommand(BaseDiscordClient client, ulong id) + : base(client, id) { } + + internal static RestGlobalCommand Create(BaseDiscordClient client, Model model) + { + var entity = new RestGlobalCommand(client, model.Id); + entity.Update(model); + return entity; + } + + /// + public override async Task DeleteAsync(RequestOptions options = null) + => await InteractionHelper.DeleteGlobalCommandAsync(Discord, this).ConfigureAwait(false); + + /// + /// Modifies this . + /// + /// The delegate containing the properties to modify the command with. + /// The options to be used when sending the request. + /// + /// The modified command. + /// + public override async Task ModifyAsync(Action func, RequestOptions options = null) + { + var cmd = await InteractionHelper.ModifyGlobalCommandAsync(Discord, this, func, options).ConfigureAwait(false); + Update(cmd); + } + } +} diff --git a/src/Discord.Net.Rest/Entities/Interactions/RestGuildCommand.cs b/src/Discord.Net.Rest/Entities/Interactions/RestGuildCommand.cs new file mode 100644 index 000000000..00804e57e --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Interactions/RestGuildCommand.cs @@ -0,0 +1,83 @@ +using System; +using System.Threading.Tasks; +using Model = Discord.API.ApplicationCommand; + +namespace Discord.Rest +{ + /// + /// Represents a Rest-based guild application command. + /// + public class RestGuildCommand : RestApplicationCommand + { + /// + /// The guild Id where this command originates. + /// + public ulong GuildId { get; private set; } + + internal RestGuildCommand(BaseDiscordClient client, ulong id, ulong guildId) + : base(client, id) + { + GuildId = guildId; + } + + internal static RestGuildCommand Create(BaseDiscordClient client, Model model, ulong guildId) + { + var entity = new RestGuildCommand(client, model.Id, guildId); + entity.Update(model); + return entity; + } + + /// + public override async Task DeleteAsync(RequestOptions options = null) + => await InteractionHelper.DeleteGuildCommandAsync(Discord, GuildId, this).ConfigureAwait(false); + + /// + /// Modifies this . + /// + /// The delegate containing the properties to modify the command with. + /// The options to be used when sending the request. + /// + /// The modified command + /// + public override async Task ModifyAsync(Action func, RequestOptions options = null) + { + var model = await InteractionHelper.ModifyGuildCommandAsync(Discord, this, GuildId, func, options).ConfigureAwait(false); + Update(model); + } + + /// + /// Gets this commands permissions inside of the current guild. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains a + /// object defining the permissions of the current slash command. + /// + public Task GetCommandPermission(RequestOptions options = null) + => InteractionHelper.GetGuildCommandPermissionAsync(Discord, GuildId, Id, options); + + /// + /// Modifies the current command permissions for this guild command. + /// + /// The permissions to overwrite. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous modification operation. The task result contains a + /// object containing the modified permissions. + /// + public Task ModifyCommandPermissions(ApplicationCommandPermission[] permissions, RequestOptions options = null) + => InteractionHelper.ModifyGuildCommandPermissionsAsync(Discord, GuildId, Id, permissions, options); + + /// + /// Gets the guild that this slash command resides in. + /// + /// if you want the approximate member and presence counts for the guild, otherwise . + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains a + /// . + /// + public Task GetGuild(bool withCounts = false, RequestOptions options = null) + => ClientHelper.GetGuildAsync(Discord, GuildId, withCounts, options); + } +} diff --git a/src/Discord.Net.Rest/Entities/Interactions/RestInteraction.cs b/src/Discord.Net.Rest/Entities/Interactions/RestInteraction.cs new file mode 100644 index 000000000..103c43ffb --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Interactions/RestInteraction.cs @@ -0,0 +1,224 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Model = Discord.API.Interaction; +using DataModel = Discord.API.ApplicationCommandInteractionData; +using Newtonsoft.Json; + +namespace Discord.Rest +{ + /// + /// Represents a REST-based interaction. + /// + public abstract class RestInteraction : RestEntity, IDiscordInteraction + { + /// + public InteractionType Type { get; private set; } + + /// + public IDiscordInteractionData Data { get; private set; } + + /// + public string Token { get; private set; } + + /// + public int Version { get; private set; } + + /// + /// Gets the user who invoked the interaction. + /// + public RestUser User { get; private set; } + + /// + public DateTimeOffset CreatedAt { get; private set; } + + internal abstract bool _hasResponded { get; set; } + + /// + /// if the token is valid for replying to, otherwise . + /// + public bool IsValidToken + => InteractionHelper.CanRespondOrFollowup(this); + + /// + /// Gets the channel that this interaction was executed in. + /// + public IRestMessageChannel Channel { get; private set; } + + /// + /// Gets the guild this interaction was executed in. + /// + public RestGuild Guild { get; private set; } + + internal RestInteraction(BaseDiscordClient discord, ulong id) + : base(discord, id) + { + CreatedAt = discord.UseInteractionSnowflakeDate + ? SnowflakeUtils.FromSnowflake(Id) + : DateTime.UtcNow; + } + + internal static async Task CreateAsync(DiscordRestClient client, Model model) + { + if(model.Type == InteractionType.Ping) + { + return await RestPingInteraction.CreateAsync(client, model); + } + + if (model.Type == InteractionType.ApplicationCommand) + { + var dataModel = model.Data.IsSpecified + ? (DataModel)model.Data.Value + : null; + + if (dataModel == null) + return null; + + return dataModel.Type switch + { + ApplicationCommandType.Slash => await RestSlashCommand.CreateAsync(client, model).ConfigureAwait(false), + ApplicationCommandType.Message => await RestMessageCommand.CreateAsync(client, model).ConfigureAwait(false), + ApplicationCommandType.User => await RestUserCommand.CreateAsync(client, model).ConfigureAwait(false), + _ => null + }; + } + + if (model.Type == InteractionType.MessageComponent) + return await RestMessageComponent.CreateAsync(client, model).ConfigureAwait(false); + + if (model.Type == InteractionType.ApplicationCommandAutocomplete) + return await RestAutocompleteInteraction.CreateAsync(client, model).ConfigureAwait(false); + + return null; + } + + internal virtual async Task UpdateAsync(DiscordRestClient discord, Model model) + { + Data = model.Data.IsSpecified + ? model.Data.Value + : null; + Token = model.Token; + Version = model.Version; + Type = model.Type; + + if(Guild == null && model.GuildId.IsSpecified) + { + Guild = await discord.GetGuildAsync(model.GuildId.Value); + } + + if (User == null) + { + if (model.Member.IsSpecified && model.GuildId.IsSpecified) + { + User = RestGuildUser.Create(Discord, Guild, model.Member.Value); + } + else + { + User = RestUser.Create(Discord, model.User.Value); + } + } + + if(Channel == null && model.ChannelId.IsSpecified) + { + Channel = (IRestMessageChannel)await discord.GetChannelAsync(model.ChannelId.Value); + } + } + + internal string SerializePayload(object payload) + { + var json = new StringBuilder(); + using (var text = new StringWriter(json)) + using (var writer = new JsonTextWriter(text)) + DiscordRestClient.Serializer.Serialize(writer, payload); + + return json.ToString(); + } + + /// + public abstract string Defer(bool ephemeral = false, RequestOptions options = null); + /// + public abstract Task FollowupAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null); + /// + /// Gets the original response for this interaction. + /// + /// The request options for this request. + /// A that represents the initial response. + public Task GetOriginalResponseAsync(RequestOptions options = null) + => InteractionHelper.GetOriginalResponseAsync(Discord, Channel, this, options); + + /// + /// Edits original response for this interaction. + /// + /// A delegate containing the properties to modify the message with. + /// The request options for this request. + /// A that represents the initial response. + public async Task ModifyOriginalResponseAsync(Action func, RequestOptions options = null) + { + var model = await InteractionHelper.ModifyInteractionResponseAsync(Discord, Token, func, options); + return RestInteractionMessage.Create(Discord, model, Token, Channel); + } + /// + public abstract string Respond(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null); + /// + /// Sends a followup message for this interaction. + /// + /// The text of the message to be sent. + /// The file to upload. + /// The file name of the attachment. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// The request options for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// + /// The sent message. + /// + public abstract Task FollowupWithFileAsync(Stream fileStream, string fileName, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null); + /// + /// Sends a followup message for this interaction. + /// + /// The text of the message to be sent. + /// The file to upload. + /// The file name of the attachment. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// The request options for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// + /// The sent message. + /// + public abstract Task FollowupWithFileAsync(string filePath, string text = null, string fileName = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null); + + #region IDiscordInteraction + /// + Task IDiscordInteraction.RespondAsync(string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, RequestOptions options, MessageComponent component, Embed embed) + => Task.FromResult(Respond(text, embeds, isTTS, ephemeral, allowedMentions, options, component, embed)); + + Task IDiscordInteraction.DeferAsync(bool ephemeral, RequestOptions options) + => Task.FromResult(Defer(ephemeral, options)); + + /// + async Task IDiscordInteraction.FollowupAsync(string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, + RequestOptions options, MessageComponent component, Embed embed) + => await FollowupAsync(text, embeds, isTTS, ephemeral, allowedMentions, options, component, embed).ConfigureAwait(false); + + /// + async Task IDiscordInteraction.GetOriginalResponseAsync(RequestOptions options) + => await GetOriginalResponseAsync(options).ConfigureAwait(false); + + /// + async Task IDiscordInteraction.ModifyOriginalResponseAsync(Action func, RequestOptions options) + => await ModifyOriginalResponseAsync(func, options).ConfigureAwait(false); + #endregion + } +} diff --git a/src/Discord.Net.Rest/Entities/Interactions/RestPingInteraction.cs b/src/Discord.Net.Rest/Entities/Interactions/RestPingInteraction.cs new file mode 100644 index 000000000..f979a4df2 --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Interactions/RestPingInteraction.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Model = Discord.API.Interaction; + +namespace Discord.Rest +{ + /// + /// Represents a REST-based ping interaction. + /// + public class RestPingInteraction : RestInteraction, IDiscordInteraction + { + internal override bool _hasResponded { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } + + internal RestPingInteraction(BaseDiscordClient client, ulong id) + : base(client, id) + { + } + + internal static new async Task CreateAsync(DiscordRestClient client, Model model) + { + var entity = new RestPingInteraction(client, model.Id); + await entity.UpdateAsync(client, model); + return entity; + } + + public string AcknowledgePing() + { + var model = new API.InteractionResponse() + { + Type = InteractionResponseType.Pong + }; + + return SerializePayload(model); + } + + public override string Defer(bool ephemeral = false, RequestOptions options = null) => throw new NotSupportedException(); + public override Task FollowupAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) => throw new NotSupportedException(); + public override Task FollowupWithFileAsync(Stream fileStream, string fileName, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) => throw new NotSupportedException(); + public override Task FollowupWithFileAsync(string filePath, string text = null, string fileName = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) => throw new NotSupportedException(); + public override string Respond(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) => throw new NotSupportedException(); + } +} diff --git a/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestAutocompleteInteraction.cs b/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestAutocompleteInteraction.cs new file mode 100644 index 000000000..3b879cd4e --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestAutocompleteInteraction.cs @@ -0,0 +1,135 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Model = Discord.API.Interaction; +using DataModel = Discord.API.AutocompleteInteractionData; +using System.IO; + +namespace Discord.Rest +{ + /// + /// Represents a REST-based autocomplete interaction. + /// + public class RestAutocompleteInteraction : RestInteraction, IAutocompleteInteraction, IDiscordInteraction + { + /// + /// Gets the autocomplete data of this interaction. + /// + public new RestAutocompleteInteractionData Data { get; } + + internal override bool _hasResponded { get; set; } + private object _lock = new object(); + + internal RestAutocompleteInteraction(DiscordRestClient client, Model model) + : base(client, model.Id) + { + var dataModel = model.Data.IsSpecified + ? (DataModel)model.Data.Value + : null; + + if (dataModel != null) + Data = new RestAutocompleteInteractionData(dataModel); + } + + internal new static async Task CreateAsync(DiscordRestClient client, Model model) + { + var entity = new RestAutocompleteInteraction(client, model); + await entity.UpdateAsync(client, model).ConfigureAwait(false); + return entity; + } + + /// + /// Responds to this interaction with a set of choices. + /// + /// + /// The set of choices for the user to pick from. + /// + /// A max of 20 choices are allowed. Passing for this argument will show the executing user that + /// there is no choices for their autocompleted input. + /// + /// + /// The request options for this response. + /// + /// A string that contains json to write back to the incoming http request. + /// + public string Respond(IEnumerable result, RequestOptions options = null) + { + if (!InteractionHelper.CanSendResponse(this)) + throw new TimeoutException($"Cannot respond to an interaction after {InteractionHelper.ResponseTimeLimit} seconds!"); + + lock (_lock) + { + if (_hasResponded) + { + throw new InvalidOperationException("Cannot respond twice to the same interaction"); + } + } + + lock (_lock) + { + _hasResponded = true; + } + + var model = new API.InteractionResponse + { + Type = InteractionResponseType.ApplicationCommandAutocompleteResult, + Data = new API.InteractionCallbackData + { + Choices = result.Any() + ? result.Select(x => new API.ApplicationCommandOptionChoice { Name = x.Name, Value = x.Value }).ToArray() + : Array.Empty() + } + }; + + return SerializePayload(model); + } + + /// + /// Responds to this interaction with a set of choices. + /// + /// The request options for this response. + /// + /// The set of choices for the user to pick from. + /// + /// A max of 20 choices are allowed. Passing for this argument will show the executing user that + /// there is no choices for their autocompleted input. + /// + /// + /// + /// A string that contains json to write back to the incoming http request. + /// + public string Respond(RequestOptions options = null, params AutocompleteResult[] result) + => Respond(result, options); + + /// + [Obsolete("Autocomplete interactions cannot be deferred!", true)] + public override string Defer(bool ephemeral = false, RequestOptions options = null) + => throw new NotSupportedException("Autocomplete interactions cannot be deferred!"); + + /// + [Obsolete("Autocomplete interactions cannot have followups!", true)] + public override Task FollowupAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) + => throw new NotSupportedException("Autocomplete interactions cannot be deferred!"); + + /// + [Obsolete("Autocomplete interactions cannot have followups!", true)] + public override Task FollowupWithFileAsync(Stream fileStream, string fileName, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) + => throw new NotSupportedException("Autocomplete interactions cannot be deferred!"); + + /// + [Obsolete("Autocomplete interactions cannot have followups!", true)] + public override Task FollowupWithFileAsync(string filePath, string text = null, string fileName = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) + => throw new NotSupportedException("Autocomplete interactions cannot be deferred!"); + + /// + [Obsolete("Autocomplete interactions cannot have normal responses!", true)] + public override string Respond(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) + => throw new NotSupportedException("Autocomplete interactions cannot be deferred!"); + + //IAutocompleteInteraction + /// + IAutocompleteInteractionData IAutocompleteInteraction.Data => Data; + } +} diff --git a/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestAutocompleteInteractionData.cs b/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestAutocompleteInteractionData.cs new file mode 100644 index 000000000..135eb88ea --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestAutocompleteInteractionData.cs @@ -0,0 +1,76 @@ +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using DataModel = Discord.API.AutocompleteInteractionData; + +namespace Discord.Rest +{ + /// + /// Represents the data for a . + /// + public class RestAutocompleteInteractionData : IAutocompleteInteractionData + { + /// + /// Gets the name of the invoked command. + /// + public string CommandName { get; } + + /// + /// Gets the id of the invoked command. + /// + public ulong CommandId { get; } + + /// + /// Gets the type of the invoked command. + /// + public ApplicationCommandType Type { get; } + + /// + /// Gets the version of the invoked command. + /// + public ulong Version { get; } + + /// + /// Gets the current autocomplete option that is actively being filled out. + /// + public AutocompleteOption Current { get; } + + /// + /// Gets a collection of all the other options the executing users has filled out. + /// + public IReadOnlyCollection Options { get; } + + internal RestAutocompleteInteractionData(DataModel model) + { + var options = model.Options.SelectMany(GetOptions); + + Current = options.FirstOrDefault(x => x.Focused); + Options = options.ToImmutableArray(); + + if (Options.Count == 1 && Current == null) + Current = Options.FirstOrDefault(); + + CommandName = model.Name; + CommandId = model.Id; + Type = model.Type; + Version = model.Version; + } + + private List GetOptions(API.AutocompleteInteractionDataOption model) + { + var options = new List(); + + options.Add(new AutocompleteOption(model.Type, model.Name, model.Value.GetValueOrDefault(null), model.Focused.GetValueOrDefault(false))); + + if (model.Options.IsSpecified) + { + options.AddRange(model.Options.Value.SelectMany(GetOptions)); + } + + return options; + } + } +} diff --git a/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestSlashCommand.cs b/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestSlashCommand.cs new file mode 100644 index 000000000..785e39a12 --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestSlashCommand.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using DataModel = Discord.API.ApplicationCommandInteractionData; +using Model = Discord.API.Interaction; + +namespace Discord.Rest +{ + /// + /// Represents a REST-based slash command. + /// + public class RestSlashCommand : RestCommandBase, ISlashCommandInteraction, IDiscordInteraction + { + /// + /// Gets the data associated with this interaction. + /// + public new RestSlashCommandData Data { get; private set; } + + internal RestSlashCommand(DiscordRestClient client, Model model) + : base(client, model) + { + } + + internal new static async Task CreateAsync(DiscordRestClient client, Model model) + { + var entity = new RestSlashCommand(client, model); + await entity.UpdateAsync(client, model).ConfigureAwait(false); + return entity; + } + + internal override async Task UpdateAsync(DiscordRestClient client, Model model) + { + await base.UpdateAsync(client, model).ConfigureAwait(false); + + var dataModel = model.Data.IsSpecified + ? (DataModel)model.Data.Value + : null; + + Data = await RestSlashCommandData.CreateAsync(client, dataModel, Guild, Channel).ConfigureAwait(false); + } + + //ISlashCommandInteraction + /// + IApplicationCommandInteractionData ISlashCommandInteraction.Data => Data; + } +} diff --git a/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestSlashCommandData.cs b/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestSlashCommandData.cs new file mode 100644 index 000000000..f967cc628 --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestSlashCommandData.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Model = Discord.API.ApplicationCommandInteractionData; + +namespace Discord.Rest +{ + + public class RestSlashCommandData : RestCommandBaseData, IDiscordInteractionData + { + internal RestSlashCommandData(DiscordRestClient client, Model model) + : base(client, model) { } + + internal static new async Task CreateAsync(DiscordRestClient client, Model model, RestGuild guild, IRestMessageChannel channel) + { + var entity = new RestSlashCommandData(client, model); + await entity.UpdateAsync(client, model, guild, channel).ConfigureAwait(false); + return entity; + } + internal override async Task UpdateAsync(DiscordRestClient client, Model model, RestGuild guild, IRestMessageChannel channel) + { + await base.UpdateAsync(client, model, guild, channel).ConfigureAwait(false); + + Options = model.Options.IsSpecified + ? model.Options.Value.Select(x => new RestSlashCommandDataOption(this, x)).ToImmutableArray() + : ImmutableArray.Create(); + } + } +} diff --git a/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestSlashCommandDataOption.cs b/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestSlashCommandDataOption.cs new file mode 100644 index 000000000..bb931f68e --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestSlashCommandDataOption.cs @@ -0,0 +1,139 @@ +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Model = Discord.API.ApplicationCommandInteractionDataOption; + + +namespace Discord.Rest +{ + /// + /// Represents a REST-based option for a slash command. + /// + public class RestSlashCommandDataOption : IApplicationCommandInteractionDataOption + { + #region RestSlashCommandDataOption + /// + public string Name { get; private set; } + + /// + public object Value { get; private set; } + + /// + public ApplicationCommandOptionType Type { get; private set; } + + /// + /// Gets a collection of sub command options received for this sub command group. + /// + public IReadOnlyCollection Options { get; private set; } + + internal RestSlashCommandDataOption() { } + internal RestSlashCommandDataOption(RestSlashCommandData data, Model model) + { + Name = model.Name; + Type = model.Type; + + if (model.Value.IsSpecified) + { + switch (Type) + { + case ApplicationCommandOptionType.User: + case ApplicationCommandOptionType.Role: + case ApplicationCommandOptionType.Channel: + case ApplicationCommandOptionType.Mentionable: + if (ulong.TryParse($"{model.Value.Value}", out var valueId)) + { + switch (Type) + { + case ApplicationCommandOptionType.User: + { + var guildUser = data.ResolvableData.GuildMembers.FirstOrDefault(x => x.Key == valueId).Value; + + if (guildUser != null) + Value = guildUser; + else + Value = data.ResolvableData.Users.FirstOrDefault(x => x.Key == valueId).Value; + } + break; + case ApplicationCommandOptionType.Channel: + Value = data.ResolvableData.Channels.FirstOrDefault(x => x.Key == valueId).Value; + break; + case ApplicationCommandOptionType.Role: + Value = data.ResolvableData.Roles.FirstOrDefault(x => x.Key == valueId).Value; + break; + case ApplicationCommandOptionType.Mentionable: + { + if (data.ResolvableData.GuildMembers.Any(x => x.Key == valueId) || data.ResolvableData.Users.Any(x => x.Key == valueId)) + { + var guildUser = data.ResolvableData.GuildMembers.FirstOrDefault(x => x.Key == valueId).Value; + + if (guildUser != null) + Value = guildUser; + else + Value = data.ResolvableData.Users.FirstOrDefault(x => x.Key == valueId).Value; + } + else if (data.ResolvableData.Roles.Any(x => x.Key == valueId)) + { + Value = data.ResolvableData.Roles.FirstOrDefault(x => x.Key == valueId).Value; + } + } + break; + default: + Value = model.Value.Value; + break; + } + } + break; + case ApplicationCommandOptionType.String: + Value = model.Value.ToString(); + break; + case ApplicationCommandOptionType.Integer: + { + if (model.Value.Value is long val) + Value = val; + else if (long.TryParse(model.Value.Value.ToString(), out long res)) + Value = res; + } + break; + case ApplicationCommandOptionType.Boolean: + { + if (model.Value.Value is bool val) + Value = val; + else if (bool.TryParse(model.Value.Value.ToString(), out bool res)) + Value = res; + } + break; + case ApplicationCommandOptionType.Number: + { + if (model.Value.Value is int val) + Value = val; + else if (double.TryParse(model.Value.Value.ToString(), out double res)) + Value = res; + } + break; + } + } + + Options = model.Options.IsSpecified + ? model.Options.Value.Select(x => new RestSlashCommandDataOption(data, x)).ToImmutableArray() + : ImmutableArray.Create(); + } + #endregion + + #region Converters + public static explicit operator bool(RestSlashCommandDataOption option) + => (bool)option.Value; + public static explicit operator int(RestSlashCommandDataOption option) + => (int)option.Value; + public static explicit operator string(RestSlashCommandDataOption option) + => option.Value.ToString(); + #endregion + + #region IApplicationCommandInteractionDataOption + IReadOnlyCollection IApplicationCommandInteractionDataOption.Options + => Options; + #endregion + } +} diff --git a/src/Discord.Net.Rest/Entities/Messages/Attachment.cs b/src/Discord.Net.Rest/Entities/Messages/Attachment.cs index 1cd73518a..4e4849c51 100644 --- a/src/Discord.Net.Rest/Entities/Messages/Attachment.cs +++ b/src/Discord.Net.Rest/Entities/Messages/Attachment.cs @@ -21,8 +21,10 @@ namespace Discord public int? Height { get; } /// public int? Width { get; } + /// + public bool Ephemeral { get; } - internal Attachment(ulong id, string filename, string url, string proxyUrl, int size, int? height, int? width) + internal Attachment(ulong id, string filename, string url, string proxyUrl, int size, int? height, int? width, bool? ephemeral) { Id = id; Filename = filename; @@ -31,12 +33,14 @@ namespace Discord Size = size; Height = height; Width = width; + Ephemeral = ephemeral.GetValueOrDefault(false); } internal static Attachment Create(Model model) { return new Attachment(model.Id, model.Filename, model.Url, model.ProxyUrl, model.Size, model.Height.IsSpecified ? model.Height.Value : (int?)null, - model.Width.IsSpecified ? model.Width.Value : (int?)null); + model.Width.IsSpecified ? model.Width.Value : (int?)null, + model.Ephemeral.ToNullable()); } /// diff --git a/src/Discord.Net.Rest/Entities/Messages/CustomSticker.cs b/src/Discord.Net.Rest/Entities/Messages/CustomSticker.cs new file mode 100644 index 000000000..6fd0f7700 --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Messages/CustomSticker.cs @@ -0,0 +1,74 @@ +using System; +using System.Diagnostics; +using System.Threading.Tasks; +using Model = Discord.API.Sticker; + +namespace Discord.Rest +{ + /// + /// Represents a Rest-based custom sticker within a guild. + /// + [DebuggerDisplay(@"{DebuggerDisplay,nq}")] + public class CustomSticker : Sticker, ICustomSticker + { + /// + /// Gets the users id who uploaded the sticker. + /// + /// + /// In order to get the author id, the bot needs the MANAGE_EMOJIS_AND_STICKERS permission. + /// + public ulong? AuthorId { get; private set; } + + /// + /// Gets the guild that this custom sticker is in. + /// + /// + /// Note: This property can be if the sticker wasn't fetched from a guild. + /// + public RestGuild Guild { get; private set; } + + private ulong GuildId { get; set; } + + internal CustomSticker(BaseDiscordClient client, ulong id, RestGuild guild, ulong? authorId = null) + : base(client, id) + { + AuthorId = authorId; + Guild = guild; + } + internal CustomSticker(BaseDiscordClient client, ulong id, ulong guildId, ulong? authorId = null) + : base(client, id) + { + AuthorId = authorId; + GuildId = guildId; + } + + internal static CustomSticker Create(BaseDiscordClient client, Model model, RestGuild guild, ulong? authorId = null) + { + var entity = new CustomSticker(client, model.Id, guild, authorId); + entity.Update(model); + return entity; + } + + internal static CustomSticker Create(BaseDiscordClient client, Model model, ulong guildId, ulong? authorId = null) + { + var entity = new CustomSticker(client, model.Id, guildId, authorId); + entity.Update(model); + return entity; + } + + /// + public Task DeleteAsync(RequestOptions options = null) + => GuildHelper.DeleteStickerAsync(Discord, GuildId, this, options); + + /// + public async Task ModifyAsync(Action func, RequestOptions options = null) + { + var model = await GuildHelper.ModifyStickerAsync(Discord, GuildId, this, func, options); + Update(model); + } + + private string DebuggerDisplay => Guild != null ? $"{Name} in {Guild.Name} ({Id})" : $"{Name} ({Id})"; + + IGuild ICustomSticker.Guild => Guild; + } +} diff --git a/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs b/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs index 31252466b..309500c96 100644 --- a/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs +++ b/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs @@ -1,3 +1,4 @@ +using Discord.API; using Discord.API.Rest; using System; using System.Collections.Generic; @@ -24,18 +25,25 @@ namespace Discord.Rest /// Only the author of a message may modify the message. /// Message content is too long, length must be less or equal to . - public static async Task ModifyAsync(IMessage msg, BaseDiscordClient client, Action func, + public static Task ModifyAsync(IMessage msg, BaseDiscordClient client, Action func, + RequestOptions options) + => ModifyAsync(msg.Channel.Id, msg.Id, client, func, options); + + public static async Task ModifyAsync(ulong channelId, ulong msgId, BaseDiscordClient client, Action func, RequestOptions options) { var args = new MessageProperties(); func(args); - if (msg.Author.Id != client.CurrentUser.Id && (args.Content.IsSpecified || args.Embed.IsSpecified || args.AllowedMentions.IsSpecified)) - throw new InvalidOperationException("Only the author of a message may modify the message content, embed, or allowed mentions."); + var embed = args.Embed; + var embeds = args.Embeds; - bool hasText = args.Content.IsSpecified ? !string.IsNullOrEmpty(args.Content.Value) : !string.IsNullOrEmpty(msg.Content); - bool hasEmbed = args.Embed.IsSpecified ? args.Embed.Value != null : msg.Embeds.Any(); - if (!hasText && !hasEmbed) + bool hasText = args.Content.IsSpecified && string.IsNullOrEmpty(args.Content.Value); + bool hasEmbeds = embed.IsSpecified && embed.Value != null || embeds.IsSpecified && embeds.Value?.Length > 0; + bool hasComponents = args.Components.IsSpecified && args.Components.Value != null; + bool hasAttachments = args.Attachments.IsSpecified; + + if (!hasComponents && !hasText && !hasEmbeds && !hasAttachments) Preconditions.NotNullOrEmpty(args.Content.IsSpecified ? args.Content.Value : string.Empty, nameof(args.Content)); if (args.AllowedMentions.IsSpecified) @@ -43,6 +51,7 @@ namespace Discord.Rest AllowedMentions allowedMentions = args.AllowedMentions.Value; 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(args.Embeds.Value?.Length ?? 0, 10, nameof(args.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 if (allowedMentions != null && allowedMentions.AllowedTypes.HasValue) @@ -61,56 +70,45 @@ namespace Discord.Rest } } - var apiArgs = new API.Rest.ModifyMessageParams + var apiEmbeds = embed.IsSpecified || embeds.IsSpecified ? new List() : null; + + if (embed.IsSpecified && embed.Value != null) { - Content = args.Content, - Embed = args.Embed.IsSpecified ? args.Embed.Value.ToModel() : Optional.Create(), - Flags = args.Flags.IsSpecified ? args.Flags.Value : Optional.Create(), - AllowedMentions = args.AllowedMentions.IsSpecified ? args.AllowedMentions.Value.ToModel() : Optional.Create(), - }; - return await client.ApiClient.ModifyMessageAsync(msg.Channel.Id, msg.Id, apiArgs, options).ConfigureAwait(false); - } + apiEmbeds.Add(embed.Value.ToModel()); + } - public static async Task ModifyAsync(ulong channelId, ulong msgId, BaseDiscordClient client, Action func, - RequestOptions options) - { - var args = new MessageProperties(); - func(args); + if (embeds.IsSpecified && embeds.Value != null) + { + apiEmbeds.AddRange(embeds.Value.Select(x => x.ToModel())); + } - if ((args.Content.IsSpecified && string.IsNullOrEmpty(args.Content.Value)) && (args.Embed.IsSpecified && args.Embed.Value == null)) - Preconditions.NotNullOrEmpty(args.Content.IsSpecified ? args.Content.Value : string.Empty, nameof(args.Content)); + Preconditions.AtMost(apiEmbeds?.Count ?? 0, 10, nameof(args.Embeds), "A max of 10 embeds are allowed."); - if (args.AllowedMentions.IsSpecified) + if(!args.Attachments.IsSpecified) { - AllowedMentions allowedMentions = args.AllowedMentions.Value; - 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."); - - // check that user flag and user Id list are exclusive, same with role flag and role Id list - if (allowedMentions != null && allowedMentions.AllowedTypes.HasValue) + var apiArgs = new API.Rest.ModifyMessageParams { - if (allowedMentions.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Users) && - allowedMentions.UserIds != null && allowedMentions.UserIds.Count > 0) - { - throw new ArgumentException("The Users flag is mutually exclusive with the list of User Ids.", nameof(allowedMentions)); - } - - if (allowedMentions.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Roles) && - allowedMentions.RoleIds != null && allowedMentions.RoleIds.Count > 0) - { - throw new ArgumentException("The Roles flag is mutually exclusive with the list of Role Ids.", nameof(allowedMentions)); - } - } + Content = args.Content, + Embeds = apiEmbeds?.ToArray() ?? Optional.Unspecified, + Flags = args.Flags.IsSpecified ? args.Flags.Value : Optional.Create(), + AllowedMentions = args.AllowedMentions.IsSpecified ? args.AllowedMentions.Value.ToModel() : Optional.Create(), + Components = args.Components.IsSpecified ? args.Components.Value?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Array.Empty() : Optional.Unspecified, + }; + return await client.ApiClient.ModifyMessageAsync(channelId, msgId, apiArgs, options).ConfigureAwait(false); } - - var apiArgs = new API.Rest.ModifyMessageParams + else { - Content = args.Content, - Embed = args.Embed.IsSpecified ? args.Embed.Value.ToModel() : Optional.Create(), - Flags = args.Flags.IsSpecified ? args.Flags.Value : Optional.Create(), - AllowedMentions = args.AllowedMentions.IsSpecified ? args.AllowedMentions.Value.ToModel() : Optional.Create(), - }; - return await client.ApiClient.ModifyMessageAsync(channelId, msgId, apiArgs, options).ConfigureAwait(false); + var apiArgs = new UploadFileParams(args.Attachments.Value.ToArray()) + { + Content = args.Content, + Embeds = apiEmbeds?.ToArray() ?? Optional.Unspecified, + Flags = args.Flags.IsSpecified ? args.Flags.Value : Optional.Create(), + AllowedMentions = args.AllowedMentions.IsSpecified ? args.AllowedMentions.Value.ToModel() : Optional.Create(), + MessageComponent = args.Components.IsSpecified ? args.Components.Value?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Array.Empty() : Optional.Unspecified + }; + + return await client.ApiClient.ModifyMessageAsync(channelId, msgId, apiArgs, options).ConfigureAwait(false); + } } public static Task DeleteAsync(IMessage msg, BaseDiscordClient client, RequestOptions options) @@ -203,6 +201,12 @@ namespace Discord.Rest return System.Web.HttpUtility.UrlEncode(text); #endif } + public static string SanitizeMessage(IMessage message) + { + var newContent = MentionUtils.Resolve(message, 0, TagHandling.FullName, TagHandling.FullName, TagHandling.FullName, TagHandling.FullName, TagHandling.FullName); + newContent = Format.StripMarkDown(newContent); + return newContent; + } public static async Task PinAsync(IMessage msg, BaseDiscordClient client, RequestOptions options) @@ -301,7 +305,7 @@ namespace Discord.Rest tags.Add(new Tag(TagType.Emoji, index, content.Length, emoji.Id, emoji)); else //Bad Tag { - index = index + 1; + index++; continue; } index = endIndex + 1; diff --git a/src/Discord.Net.Rest/Entities/Messages/RestFollowupMessage.cs b/src/Discord.Net.Rest/Entities/Messages/RestFollowupMessage.cs new file mode 100644 index 000000000..693d36e56 --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Messages/RestFollowupMessage.cs @@ -0,0 +1,78 @@ +using System; +using System.Threading.Tasks; +using Model = Discord.API.Message; + +namespace Discord.Rest +{ + /// + /// Represents a REST-based follow up message sent by a bot responding to a slash command. + /// + public class RestFollowupMessage : RestUserMessage + { + // Token used to delete/modify this followup message + internal string Token { get; } + + internal RestFollowupMessage(BaseDiscordClient discord, ulong id, IUser author, string token, IMessageChannel channel) + : base(discord, id, channel, author, MessageSource.Bot) + { + Token = token; + } + + internal static RestFollowupMessage Create(BaseDiscordClient discord, Model model, string token, IMessageChannel channel) + { + var entity = new RestFollowupMessage(discord, model.Id, model.Author.IsSpecified ? RestUser.Create(discord, model.Author.Value) : discord.CurrentUser, token, channel); + entity.Update(model); + return entity; + } + + internal new void Update(Model model) + { + base.Update(model); + } + + /// + /// Deletes this object and all of it's children. + /// + /// A task that represents the asynchronous delete operation. + public Task DeleteAsync() + => InteractionHelper.DeleteFollowupMessageAsync(Discord, this); + + /// + /// Modifies this interaction followup message. + /// + /// + /// This method modifies this message with the specified properties. To see an example of this + /// method and what properties are available, please refer to . + /// + /// + /// The following example replaces the content of the message with Hello World!. + /// + /// await msg.ModifyAsync(x => x.Content = "Hello World!"); + /// + /// + /// A delegate containing the properties to modify the message with. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous modification operation. + /// + /// The token used to modify/delete this message expired. + /// /// Something went wrong during the request. + public new async Task ModifyAsync(Action func, RequestOptions options = null) + { + try + { + var model = await InteractionHelper.ModifyFollowupMessageAsync(Discord, this, func, options).ConfigureAwait(false); + Update(model); + } + catch (Net.HttpException x) + { + if (x.HttpCode == System.Net.HttpStatusCode.NotFound) + { + throw new InvalidOperationException("The token of this message has expired!", x); + } + + throw; + } + } + } +} diff --git a/src/Discord.Net.Rest/Entities/Messages/RestInteractionMessage.cs b/src/Discord.Net.Rest/Entities/Messages/RestInteractionMessage.cs new file mode 100644 index 000000000..26beb03b6 --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Messages/RestInteractionMessage.cs @@ -0,0 +1,78 @@ +using System; +using System.Threading.Tasks; +using Model = Discord.API.Message; + +namespace Discord.Rest +{ + /// + /// Represents the initial REST-based response to a slash command. + /// + public class RestInteractionMessage : RestUserMessage + { + // Token used to delete/modify this followup message + internal string Token { get; } + + internal RestInteractionMessage(BaseDiscordClient discord, ulong id, IUser author, string token, IMessageChannel channel) + : base(discord, id, channel, author, MessageSource.Bot) + { + Token = token; + } + + internal static RestInteractionMessage Create(BaseDiscordClient discord, Model model, string token, IMessageChannel channel) + { + var entity = new RestInteractionMessage(discord, model.Id, model.Author.IsSpecified ? RestUser.Create(discord, model.Author.Value) : discord.CurrentUser, token, channel); + entity.Update(model); + return entity; + } + + internal new void Update(Model model) + { + base.Update(model); + } + + /// + /// Deletes this object and all of it's children. + /// + /// A task that represents the asynchronous delete operation. + public Task DeleteAsync() + => InteractionHelper.DeleteInteractionResponseAsync(Discord, this); + + /// + /// Modifies this interaction response + /// + /// + /// This method modifies this message with the specified properties. To see an example of this + /// method and what properties are available, please refer to . + /// + /// + /// The following example replaces the content of the message with Hello World!. + /// + /// await msg.ModifyAsync(x => x.Content = "Hello World!"); + /// + /// + /// A delegate containing the properties to modify the message with. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous modification operation. + /// + /// The token used to modify/delete this message expired. + /// /// Something went wrong during the request. + public new async Task ModifyAsync(Action func, RequestOptions options = null) + { + try + { + var model = await InteractionHelper.ModifyInteractionResponseAsync(Discord, Token, func, options).ConfigureAwait(false); + Update(model); + } + catch (Net.HttpException x) + { + if (x.HttpCode == System.Net.HttpStatusCode.NotFound) + { + throw new InvalidOperationException("The token of this message has expired!", x); + } + + throw; + } + } + } +} diff --git a/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs b/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs index 0c54743a6..c48a60aac 100644 --- a/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs +++ b/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs @@ -1,3 +1,4 @@ +using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Collections.Immutable; @@ -14,6 +15,7 @@ namespace Discord.Rest { private long _timestampTicks; private ImmutableArray _reactions = ImmutableArray.Create(); + private ImmutableArray _userMentions = ImmutableArray.Create(); /// public IMessageChannel Channel { get; } @@ -27,6 +29,9 @@ namespace Discord.Rest /// public string Content { get; private set; } + /// + public string CleanContent => MessageHelper.SanitizeMessage(this); + /// public DateTimeOffset CreatedAt => SnowflakeUtils.FromSnowflake(Id); /// @@ -52,14 +57,10 @@ namespace Discord.Rest public virtual IReadOnlyCollection MentionedChannelIds => ImmutableArray.Create(); /// public virtual IReadOnlyCollection MentionedRoleIds => ImmutableArray.Create(); - /// - /// Gets a collection of the mentioned users in the message. - /// - public virtual IReadOnlyCollection MentionedUsers => ImmutableArray.Create(); /// public virtual IReadOnlyCollection Tags => ImmutableArray.Create(); /// - public virtual IReadOnlyCollection Stickers => ImmutableArray.Create(); + public virtual IReadOnlyCollection Stickers => ImmutableArray.Create(); /// public DateTimeOffset Timestamp => DateTimeUtils.FromTicks(_timestampTicks); @@ -69,11 +70,23 @@ namespace Discord.Rest public MessageApplication Application { get; private set; } /// public MessageReference Reference { get; private set; } + + /// + /// Gets the interaction this message is a response to. + /// + public MessageInteraction Interaction { get; private set; } /// public MessageFlags? Flags { get; private set; } /// public MessageType Type { get; private set; } + /// + public IReadOnlyCollection Components { get; private set; } + /// + /// Gets a collection of the mentioned users in the message. + /// + public IReadOnlyCollection MentionedUsers => _userMentions; + internal RestMessage(BaseDiscordClient discord, ulong id, IMessageChannel channel, IUser author, MessageSource source) : base(discord, id) { @@ -83,7 +96,10 @@ namespace Discord.Rest } internal static RestMessage Create(BaseDiscordClient discord, IMessageChannel channel, IUser author, Model model) { - if (model.Type == MessageType.Default || model.Type == MessageType.Reply) + if (model.Type == MessageType.Default || + model.Type == MessageType.Reply || + model.Type == MessageType.ApplicationCommand || + model.Type == MessageType.ThreadStarterMessage) return RestUserMessage.Create(discord, channel, author, model); else return RestSystemMessage.Create(discord, channel, author, model); @@ -121,7 +137,7 @@ namespace Discord.Rest }; } - if(model.Reference.IsSpecified) + if (model.Reference.IsSpecified) { // Creates a new Reference from the API model Reference = new MessageReference @@ -132,6 +148,56 @@ namespace Discord.Rest }; } + if (model.Components.IsSpecified) + { + Components = model.Components.Value.Select(x => new ActionRowComponent(x.Components.Select(y => + { + switch (y.Type) + { + case ComponentType.Button: + { + var parsed = (API.ButtonComponent)y; + return new Discord.ButtonComponent( + parsed.Style, + parsed.Label.GetValueOrDefault(), + parsed.Emote.IsSpecified + ? parsed.Emote.Value.Id.HasValue + ? new Emote(parsed.Emote.Value.Id.Value, parsed.Emote.Value.Name, parsed.Emote.Value.Animated.GetValueOrDefault()) + : new Emoji(parsed.Emote.Value.Name) + : null, + parsed.CustomId.GetValueOrDefault(), + parsed.Url.GetValueOrDefault(), + parsed.Disabled.GetValueOrDefault()); + } + case ComponentType.SelectMenu: + { + var parsed = (API.SelectMenuComponent)y; + return new SelectMenuComponent( + parsed.CustomId, + parsed.Options.Select(z => new SelectMenuOption( + z.Label, + z.Value, + z.Description.GetValueOrDefault(), + z.Emoji.IsSpecified + ? z.Emoji.Value.Id.HasValue + ? new Emote(z.Emoji.Value.Id.Value, z.Emoji.Value.Name, z.Emoji.Value.Animated.GetValueOrDefault()) + : new Emoji(z.Emoji.Value.Name) + : null, + z.Default.ToNullable())).ToList(), + parsed.Placeholder.GetValueOrDefault(), + parsed.MinValues, + parsed.MaxValues, + parsed.Disabled + ); + } + default: + return null; + } + }).ToList())).ToImmutableArray(); + } + else + Components = new List(); + if (model.Flags.IsSpecified) Flags = model.Flags.Value; @@ -150,8 +216,31 @@ namespace Discord.Rest } else _reactions = ImmutableArray.Create(); - } + if (model.Interaction.IsSpecified) + { + Interaction = new MessageInteraction(model.Interaction.Value.Id, + model.Interaction.Value.Type, + model.Interaction.Value.Name, + RestUser.Create(Discord, model.Interaction.Value.User)); + } + + if (model.UserMentions.IsSpecified) + { + var value = model.UserMentions.Value; + if (value.Length > 0) + { + var newMentions = ImmutableArray.CreateBuilder(value.Length); + for (int i = 0; i < value.Length; i++) + { + var val = value[i]; + if (val != null) + newMentions.Add(RestUser.Create(Discord, val)); + } + _userMentions = newMentions.ToImmutable(); + } + } + } /// public async Task UpdateAsync(RequestOptions options = null) { @@ -177,8 +266,15 @@ namespace Discord.Rest IReadOnlyCollection IMessage.Embeds => Embeds; /// IReadOnlyCollection IMessage.MentionedUserIds => MentionedUsers.Select(x => x.Id).ToImmutableArray(); + + /// + IReadOnlyCollection IMessage.Components => Components; + + /// + IMessageInteraction IMessage.Interaction => Interaction; + /// - IReadOnlyCollection IMessage.Stickers => Stickers; + IReadOnlyCollection IMessage.Stickers => Stickers; /// public IReadOnlyDictionary Reactions => _reactions.ToDictionary(x => x.Emote, x => new ReactionMetadata { ReactionCount = x.Count, IsMe = x.Me }); diff --git a/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs b/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs index aa6b44da6..083a8e72c 100644 --- a/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs +++ b/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs @@ -20,8 +20,7 @@ namespace Discord.Rest private ImmutableArray _embeds = ImmutableArray.Create(); private ImmutableArray _tags = ImmutableArray.Create(); private ImmutableArray _roleMentionIds = ImmutableArray.Create(); - private ImmutableArray _userMentions = ImmutableArray.Create(); - private ImmutableArray _stickers = ImmutableArray.Create(); + private ImmutableArray _stickers = ImmutableArray.Create(); /// public override bool IsTTS => _isTTS; @@ -42,11 +41,9 @@ namespace Discord.Rest /// public override IReadOnlyCollection MentionedRoleIds => _roleMentionIds; /// - public override IReadOnlyCollection MentionedUsers => _userMentions; - /// public override IReadOnlyCollection Tags => _tags; /// - public override IReadOnlyCollection Stickers => _stickers; + public override IReadOnlyCollection Stickers => _stickers; /// public IUserMessage ReferencedMessage => _referencedMessage; @@ -104,28 +101,12 @@ namespace Discord.Rest _embeds = ImmutableArray.Create(); } - if (model.UserMentions.IsSpecified) - { - var value = model.UserMentions.Value; - if (value.Length > 0) - { - var newMentions = ImmutableArray.CreateBuilder(value.Length); - for (int i = 0; i < value.Length; i++) - { - var val = value[i]; - if (val.Object != null) - newMentions.Add(RestUser.Create(Discord, val.Object)); - } - _userMentions = newMentions.ToImmutable(); - } - } - var guildId = (Channel as IGuildChannel)?.GuildId; var guild = guildId != null ? (Discord as IDiscordClient).GetGuildAsync(guildId.Value, CacheMode.CacheOnly).Result : null; if (model.Content.IsSpecified) { var text = model.Content.Value; - _tags = MessageHelper.ParseTags(text, null, guild, _userMentions); + _tags = MessageHelper.ParseTags(text, null, guild, MentionedUsers); model.Content = text; } @@ -136,18 +117,18 @@ namespace Discord.Rest _referencedMessage = RestUserMessage.Create(Discord, Channel, refMsgAuthor, refMsg); } - if (model.Stickers.IsSpecified) + if (model.StickerItems.IsSpecified) { - var value = model.Stickers.Value; + var value = model.StickerItems.Value; if (value.Length > 0) { - var stickers = ImmutableArray.CreateBuilder(value.Length); + var stickers = ImmutableArray.CreateBuilder(value.Length); for (int i = 0; i < value.Length; i++) - stickers.Add(Sticker.Create(value[i])); + stickers.Add(new StickerItem(Discord, value[i])); _stickers = stickers.ToImmutable(); } else - _stickers = ImmutableArray.Create(); + _stickers = ImmutableArray.Create(); } } diff --git a/src/Discord.Net.Rest/Entities/Messages/Sticker.cs b/src/Discord.Net.Rest/Entities/Messages/Sticker.cs index 5482bed74..accdbe66a 100644 --- a/src/Discord.Net.Rest/Entities/Messages/Sticker.cs +++ b/src/Discord.Net.Rest/Entities/Messages/Sticker.cs @@ -1,46 +1,55 @@ +using System; using System.Collections.Generic; using System.Diagnostics; +using System.Linq; using Model = Discord.API.Sticker; -namespace Discord +namespace Discord.Rest { /// [DebuggerDisplay(@"{DebuggerDisplay,nq}")] - public class Sticker : ISticker + public class Sticker : RestEntity, ISticker { /// - public ulong Id { get; } + public ulong PackId { get; protected set; } /// - public ulong PackId { get; } + public string Name { get; protected set; } /// - public string Name { get; } + public string Description { get; protected set; } /// - public string Description { get; } + public IReadOnlyCollection Tags { get; protected set; } /// - public IReadOnlyCollection Tags { get; } + public StickerType Type { get; protected set; } /// - public string Asset { get; } + public bool? IsAvailable { get; protected set; } /// - public string PreviewAsset { get; } + public int? SortOrder { get; protected set; } /// - public StickerFormatType FormatType { get; } + public StickerFormatType Format { get; protected set; } - internal Sticker(ulong id, ulong packId, string name, string description, string[] tags, string asset, string previewAsset, StickerFormatType formatType) + /// + public string GetStickerUrl() + => CDN.GetStickerUrl(Id, Format); + + internal Sticker(BaseDiscordClient client, ulong id) + : base(client, id) { } + internal static Sticker Create(BaseDiscordClient client, Model model) { - Id = id; - PackId = packId; - Name = name; - Description = description; - Tags = tags.ToReadOnlyCollection(); - Asset = asset; - PreviewAsset = previewAsset; - FormatType = formatType; + var entity = new Sticker(client, model.Id); + entity.Update(model); + return entity; } - internal static Sticker Create(Model model) + + internal void Update(Model model) { - return new Sticker(model.Id, model.PackId, model.Name, model.Desription, - model.Tags.IsSpecified ? model.Tags.Value.Split(',') : new string[0], - model.Asset, model.PreviewAsset, model.FormatType); + PackId = model.PackId; + Name = model.Name; + Description = model.Description; + Tags = model.Tags.IsSpecified ? model.Tags.Value.Split(',').Select(x => x.Trim()).ToArray() : Array.Empty(); + Type = model.Type; + SortOrder = model.SortValue; + IsAvailable = model.Available; + Format = model.FormatType; } private string DebuggerDisplay => $"{Name} ({Id})"; diff --git a/src/Discord.Net.Rest/Entities/Messages/StickerItem.cs b/src/Discord.Net.Rest/Entities/Messages/StickerItem.cs new file mode 100644 index 000000000..0ce4f634b --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Messages/StickerItem.cs @@ -0,0 +1,39 @@ +using System.Threading.Tasks; +using Model = Discord.API.StickerItem; + +namespace Discord.Rest +{ + /// + /// Represents a partial sticker received in a message. + /// + public class StickerItem : RestEntity, IStickerItem + { + /// + public string Name { get; } + + /// + public StickerFormatType Format { get; } + + internal StickerItem(BaseDiscordClient client, Model model) + : base(client, model.Id) + { + Name = model.Name; + Format = model.FormatType; + } + + /// + /// Resolves this sticker item by fetching the from the API. + /// + /// + /// A task representing the download operation, the result of the task is a sticker object. + /// + public async Task ResolveStickerAsync() + { + var model = await Discord.ApiClient.GetStickerAsync(Id); + + return model.GuildId.IsSpecified + ? CustomSticker.Create(Discord, model, model.GuildId.Value, model.User.IsSpecified ? model.User.Value.Id : null) + : Sticker.Create(Discord, model); + } + } +} diff --git a/src/Discord.Net.Rest/Entities/RestApplication.cs b/src/Discord.Net.Rest/Entities/RestApplication.cs index 5c2f872cf..beec52433 100644 --- a/src/Discord.Net.Rest/Entities/RestApplication.cs +++ b/src/Discord.Net.Rest/Entities/RestApplication.cs @@ -1,4 +1,6 @@ using System; +using System.Collections.Generic; +using System.Collections.Immutable; using System.Diagnostics; using System.Threading.Tasks; using Model = Discord.API.Application; @@ -18,9 +20,9 @@ namespace Discord.Rest /// public string Description { get; private set; } /// - public string[] RPCOrigins { get; private set; } + public IReadOnlyCollection RPCOrigins { get; private set; } /// - public ulong Flags { get; private set; } + public ApplicationFlags Flags { get; private set; } /// public bool IsBotPublic { get; private set; } /// @@ -36,6 +38,10 @@ namespace Discord.Rest /// public string IconUrl => CDN.GetApplicationIconUrl(Id, _iconId); + public ApplicationInstallParams InstallParams { get; private set; } + + public IReadOnlyCollection Tags { get; private set; } + internal RestApplication(BaseDiscordClient discord, ulong id) : base(discord, id) { @@ -49,14 +55,17 @@ namespace Discord.Rest internal void Update(Model model) { Description = model.Description; - RPCOrigins = model.RPCOrigins; + RPCOrigins = model.RPCOrigins.IsSpecified ? model.RPCOrigins.Value.ToImmutableArray() : ImmutableArray.Empty; Name = model.Name; _iconId = model.Icon; IsBotPublic = model.IsBotPublic; BotRequiresCodeGrant = model.BotRequiresCodeGrant; + Tags = model.Tags.GetValueOrDefault(null)?.ToImmutableArray() ?? ImmutableArray.Empty; + var installParams = model.InstallParams.GetValueOrDefault(null); + InstallParams = new ApplicationInstallParams(installParams?.Scopes ?? new string[0], (GuildPermission?)installParams?.Permission ?? null); if (model.Flags.IsSpecified) - Flags = model.Flags.Value; //TODO: Do we still need this? + Flags = model.Flags.Value; if (model.Owner.IsSpecified) Owner = RestUser.Create(Discord, model.Owner.Value); if (model.Team != null) diff --git a/src/Discord.Net.Rest/Entities/Roles/RestRole.cs b/src/Discord.Net.Rest/Entities/Roles/RestRole.cs index aa33ae7e5..a2ad4fd77 100644 --- a/src/Discord.Net.Rest/Entities/Roles/RestRole.cs +++ b/src/Discord.Net.Rest/Entities/Roles/RestRole.cs @@ -11,6 +11,7 @@ namespace Discord.Rest [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class RestRole : RestEntity, IRole { + #region RestRole internal IGuild Guild { get; } /// public Color Color { get; private set; } @@ -23,6 +24,10 @@ namespace Discord.Rest /// public string Name { get; private set; } /// + public string Icon { get; private set; } + /// /> + public Emoji Emoji { get; private set; } + /// public GuildPermissions Permissions { get; private set; } /// public int Position { get; private set; } @@ -60,11 +65,21 @@ namespace Discord.Rest Permissions = new GuildPermissions(model.Permissions); if (model.Tags.IsSpecified) Tags = model.Tags.Value.ToEntity(); + + if (model.Icon.IsSpecified) + { + Icon = model.Icon.Value; + } + + if (model.Emoji.IsSpecified) + { + Emoji = new Emoji(model.Emoji.Value); + } } /// public async Task ModifyAsync(Action func, RequestOptions options = null) - { + { var model = await RoleHelper.ModifyAsync(this, Discord, func, options).ConfigureAwait(false); Update(model); } @@ -72,6 +87,10 @@ namespace Discord.Rest public Task DeleteAsync(RequestOptions options = null) => RoleHelper.DeleteAsync(this, Discord, options); + /// + public string GetIconUrl() + => CDN.GetGuildRoleIconUrl(Id, Icon); + /// public int CompareTo(IRole role) => RoleUtils.Compare(this, role); @@ -83,8 +102,9 @@ namespace Discord.Rest /// public override string ToString() => Name; private string DebuggerDisplay => $"{Name} ({Id})"; + #endregion - //IRole + #region IRole /// IGuild IRole.Guild { @@ -95,5 +115,6 @@ namespace Discord.Rest throw new InvalidOperationException("Unable to return this entity's parent unless it was fetched through that object."); } } + #endregion } } diff --git a/src/Discord.Net.Rest/Entities/Roles/RoleHelper.cs b/src/Discord.Net.Rest/Entities/Roles/RoleHelper.cs index 73ab7ca31..d8552f869 100644 --- a/src/Discord.Net.Rest/Entities/Roles/RoleHelper.cs +++ b/src/Discord.Net.Rest/Entities/Roles/RoleHelper.cs @@ -7,7 +7,7 @@ namespace Discord.Rest { internal static class RoleHelper { - //General + #region General public static async Task DeleteAsync(IRole role, BaseDiscordClient client, RequestOptions options) { @@ -18,13 +18,20 @@ namespace Discord.Rest { var args = new RoleProperties(); func(args); + + if (args.Icon.IsSpecified) + { + role.Guild.Features.EnsureFeature(GuildFeature.RoleIcons); + } + var apiArgs = new API.Rest.ModifyGuildRoleParams { Color = args.Color.IsSpecified ? args.Color.Value.RawValue : Optional.Create(), Hoist = args.Hoist, Mentionable = args.Mentionable, Name = args.Name, - Permissions = args.Permissions.IsSpecified ? args.Permissions.Value.RawValue.ToString() : Optional.Create() + Permissions = args.Permissions.IsSpecified ? args.Permissions.Value.RawValue.ToString() : Optional.Create(), + Icon = args.Icon.IsSpecified ? args.Icon.Value.ToModel() : Optional.Unspecified }; var model = await client.ApiClient.ModifyGuildRoleAsync(role.Guild.Id, role.Id, apiArgs, options).ConfigureAwait(false); @@ -36,5 +43,6 @@ namespace Discord.Rest } return model; } + #endregion } } diff --git a/src/Discord.Net.Rest/Entities/Users/RestGroupUser.cs b/src/Discord.Net.Rest/Entities/Users/RestGroupUser.cs index 55e9843eb..40e45b135 100644 --- a/src/Discord.Net.Rest/Entities/Users/RestGroupUser.cs +++ b/src/Discord.Net.Rest/Entities/Users/RestGroupUser.cs @@ -1,3 +1,4 @@ +using System; using System.Diagnostics; using Model = Discord.API.User; @@ -9,6 +10,7 @@ namespace Discord.Rest [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class RestGroupUser : RestUser, IGroupUser { + #region RestGroupUser internal RestGroupUser(BaseDiscordClient discord, ulong id) : base(discord, id) { @@ -19,8 +21,9 @@ namespace Discord.Rest entity.Update(model); return entity; } +#endregion - //IVoiceState + #region IVoiceState /// bool IVoiceState.IsDeafened => false; /// @@ -37,5 +40,8 @@ namespace Discord.Rest string IVoiceState.VoiceSessionId => null; /// bool IVoiceState.IsStreaming => false; + /// + DateTimeOffset? IVoiceState.RequestToSpeakTimestamp => null; + #endregion } } diff --git a/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs b/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs index 6e6bbe09c..2e184d32e 100644 --- a/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs +++ b/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs @@ -14,12 +14,15 @@ namespace Discord.Rest [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class RestGuildUser : RestUser, IGuildUser { + #region RestGuildUser private long? _premiumSinceTicks; private long? _joinedAtTicks; private ImmutableArray _roleIds; /// public string Nickname { get; private set; } + /// + public string GuildAvatarId { get; private set; } internal IGuild Guild { get; private set; } /// public bool IsDeafened { get; private set; } @@ -31,6 +34,18 @@ namespace Discord.Rest public ulong GuildId => Guild.Id; /// public bool? IsPending { get; private set; } + /// + public int Hierarchy + { + get + { + if (Guild.OwnerId == Id) + return int.MaxValue; + + var orderedRoles = Guild.Roles.OrderByDescending(x => x.Position); + return orderedRoles.Where(x => RoleIds.Contains(x.Id)).Max(x => x.Position); + } + } /// /// Resolving permissions requires the parent guild to be downloaded. @@ -67,6 +82,8 @@ namespace Discord.Rest _joinedAtTicks = model.JoinedAt.Value.UtcTicks; if (model.Nick.IsSpecified) Nickname = model.Nick.Value; + if (model.Avatar.IsSpecified) + GuildAvatarId = model.Avatar.Value; if (model.Deaf.IsSpecified) IsDeafened = model.Deaf.Value; if (model.Mute.IsSpecified) @@ -144,7 +161,11 @@ namespace Discord.Rest return new ChannelPermissions(Permissions.ResolveChannel(Guild, this, channel, guildPerms.RawValue)); } - //IGuildUser + public string GetGuildAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128) + => CDN.GetGuildUserAvatarUrl(Id, GuildId, GuildAvatarId, size, format); +#endregion + + #region IGuildUser /// IGuild IGuildUser.Guild { @@ -155,8 +176,9 @@ namespace Discord.Rest throw new InvalidOperationException("Unable to return this entity's parent unless it was fetched through that object."); } } + #endregion - //IVoiceState + #region IVoiceState /// bool IVoiceState.IsSelfDeafened => false; /// @@ -169,5 +191,8 @@ namespace Discord.Rest string IVoiceState.VoiceSessionId => null; /// bool IVoiceState.IsStreaming => false; + /// + DateTimeOffset? IVoiceState.RequestToSpeakTimestamp => null; + #endregion } } diff --git a/src/Discord.Net.Rest/Entities/Users/RestThreadUser.cs b/src/Discord.Net.Rest/Entities/Users/RestThreadUser.cs new file mode 100644 index 000000000..82830dafd --- /dev/null +++ b/src/Discord.Net.Rest/Entities/Users/RestThreadUser.cs @@ -0,0 +1,56 @@ +using System; +using System.Threading.Tasks; +using Model = Discord.API.ThreadMember; + +namespace Discord.Rest +{ + /// + /// Represents a thread user received over the REST api. + /// + public class RestThreadUser : RestEntity + { + /// + /// Gets the this user is in. + /// + public IThreadChannel Thread { get; } + + /// + /// Gets the timestamp for when this user joined this thread. + /// + public DateTimeOffset JoinedAt { get; private set; } + + /// + /// Gets the guild this user is in. + /// + public IGuild Guild { get; } + + internal RestThreadUser(BaseDiscordClient discord, IGuild guild, IThreadChannel channel, ulong id) + : base(discord, id) + { + Guild = guild; + Thread = channel; + } + + internal static RestThreadUser Create(BaseDiscordClient client, IGuild guild, Model model, IThreadChannel channel) + { + var entity = new RestThreadUser(client, guild, channel, model.UserId.Value); + entity.Update(model); + return entity; + } + + internal void Update(Model model) + { + JoinedAt = model.JoinTimestamp; + } + + /// + /// Gets the guild user for this thread user. + /// + /// + /// A task representing the asynchronous get operation. The task returns a + /// that represents the current thread user. + /// + public Task GetGuildUser() + => Guild.GetUserAsync(Id); + } +} diff --git a/src/Discord.Net.Rest/Entities/Users/RestUser.cs b/src/Discord.Net.Rest/Entities/Users/RestUser.cs index 7bc1447fe..872bab392 100644 --- a/src/Discord.Net.Rest/Entities/Users/RestUser.cs +++ b/src/Discord.Net.Rest/Entities/Users/RestUser.cs @@ -4,6 +4,7 @@ using System.Diagnostics; using System.Globalization; using System.Threading.Tasks; using Model = Discord.API.User; +using EventUserModel = Discord.API.GuildScheduledEventUser; namespace Discord.Rest { @@ -13,6 +14,7 @@ namespace Discord.Rest [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class RestUser : RestEntity, IUser, IUpdateable { + #region RestUser /// public bool IsBot { get; private set; } /// @@ -22,6 +24,10 @@ namespace Discord.Rest /// public string AvatarId { get; private set; } /// + public string BannerId { get; private set; } + /// + public Color? AccentColor { get; private set; } + /// public UserProperties? PublicFlags { get; private set; } /// @@ -57,10 +63,26 @@ namespace Discord.Rest entity.Update(model); return entity; } + internal static RestUser Create(BaseDiscordClient discord, IGuild guild, EventUserModel model) + { + if (model.Member.IsSpecified) + { + var member = model.Member.Value; + member.User = model.User; + return RestGuildUser.Create(discord, guild, member); + } + else + return RestUser.Create(discord, model.User); + } + internal virtual void Update(Model model) { if (model.Avatar.IsSpecified) AvatarId = model.Avatar.Value; + if (model.Banner.IsSpecified) + BannerId = model.Banner.Value; + if (model.AccentColor.IsSpecified) + AccentColor = model.AccentColor.Value; if (model.Discriminator.IsSpecified) DiscriminatorValue = ushort.Parse(model.Discriminator.Value, NumberStyles.None, CultureInfo.InvariantCulture); if (model.Bot.IsSpecified) @@ -92,6 +114,10 @@ namespace Discord.Rest public string GetAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128) => CDN.GetUserAvatarUrl(Id, AvatarId, size, format); + /// + public string GetBannerUrl(ImageFormat format = ImageFormat.Auto, ushort size = 256) + => CDN.GetUserBannerUrl(Id, BannerId, size, format); + /// public string GetDefaultAvatarUrl() => CDN.GetDefaultUserAvatarUrl(DiscriminatorValue); @@ -104,10 +130,12 @@ namespace Discord.Rest /// public override string ToString() => $"{Username}#{Discriminator}"; private string DebuggerDisplay => $"{Username}#{Discriminator} ({Id}{(IsBot ? ", Bot" : "")})"; + #endregion - //IUser + #region IUser /// async Task IUser.CreateDMChannelAsync(RequestOptions options) => await CreateDMChannelAsync(options).ConfigureAwait(false); + #endregion } } diff --git a/src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs b/src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs index 2131fec93..2cd19da41 100644 --- a/src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs +++ b/src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs @@ -10,6 +10,7 @@ namespace Discord.Rest [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class RestWebhookUser : RestUser, IWebhookUser { + #region RestWebhookUser /// public ulong WebhookId { get; } internal IGuild Guild { get; } @@ -33,8 +34,9 @@ namespace Discord.Rest entity.Update(model); return entity; } +#endregion - //IGuildUser + #region IGuildUser /// IGuild IGuildUser.Guild { @@ -52,8 +54,14 @@ namespace Discord.Rest /// string IGuildUser.Nickname => null; /// + string IGuildUser.GuildAvatarId => null; + /// + string IGuildUser.GetGuildAvatarUrl(ImageFormat format, ushort size) => null; + /// bool? IGuildUser.IsPending => null; /// + int IGuildUser.Hierarchy => 0; + /// GuildPermissions IGuildUser.GuildPermissions => GuildPermissions.Webhook; /// @@ -89,8 +97,9 @@ namespace Discord.Rest /// Task IGuildUser.RemoveRolesAsync(IEnumerable roles, RequestOptions options) => throw new NotSupportedException("Roles are not supported on webhook users."); + #endregion - //IVoiceState + #region IVoiceState /// bool IVoiceState.IsDeafened => false; /// @@ -107,5 +116,8 @@ namespace Discord.Rest string IVoiceState.VoiceSessionId => null; /// bool IVoiceState.IsStreaming => false; + /// + DateTimeOffset? IVoiceState.RequestToSpeakTimestamp => null; + #endregion } } diff --git a/src/Discord.Net.Rest/Entities/Webhooks/RestWebhook.cs b/src/Discord.Net.Rest/Entities/Webhooks/RestWebhook.cs index 9baddf003..f40b786cd 100644 --- a/src/Discord.Net.Rest/Entities/Webhooks/RestWebhook.cs +++ b/src/Discord.Net.Rest/Entities/Webhooks/RestWebhook.cs @@ -8,6 +8,7 @@ namespace Discord.Rest [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class RestWebhook : RestEntity, IWebhook, IUpdateable { + #region RestWebhook internal IGuild Guild { get; private set; } internal ITextChannel Channel { get; private set; } @@ -24,6 +25,8 @@ namespace Discord.Rest public ulong? GuildId { get; private set; } /// public IUser Creator { get; private set; } + /// + public ulong? ApplicationId { get; private set; } /// public DateTimeOffset CreatedAt => SnowflakeUtils.FromSnowflake(Id); @@ -66,6 +69,8 @@ namespace Discord.Rest GuildId = model.GuildId.Value; if (model.Name.IsSpecified) Name = model.Name.Value; + + ApplicationId = model.ApplicationId; } /// @@ -91,8 +96,9 @@ namespace Discord.Rest public override string ToString() => $"Webhook: {Name}:{Id}"; private string DebuggerDisplay => $"Webhook: {Name} ({Id})"; + #endregion - //IWebhook + #region IWebhook /// IGuild IWebhook.Guild => Guild ?? throw new InvalidOperationException("Unable to return this entity's parent unless it was fetched through that object."); @@ -102,5 +108,6 @@ namespace Discord.Rest /// Task IWebhook.ModifyAsync(Action func, RequestOptions options) => ModifyAsync(func, options); + #endregion } } diff --git a/src/Discord.Net.Rest/Entities/Webhooks/WebhookHelper.cs b/src/Discord.Net.Rest/Entities/Webhooks/WebhookHelper.cs index 50e9cab78..0b61b6c22 100644 --- a/src/Discord.Net.Rest/Entities/Webhooks/WebhookHelper.cs +++ b/src/Discord.Net.Rest/Entities/Webhooks/WebhookHelper.cs @@ -33,6 +33,5 @@ namespace Discord.Rest { await client.ApiClient.DeleteWebhookAsync(webhook.Id, options).ConfigureAwait(false); } - } } diff --git a/src/Discord.Net.Rest/Extensions/EntityExtensions.cs b/src/Discord.Net.Rest/Extensions/EntityExtensions.cs index f8676c783..61fe330df 100644 --- a/src/Discord.Net.Rest/Extensions/EntityExtensions.cs +++ b/src/Discord.Net.Rest/Extensions/EntityExtensions.cs @@ -39,7 +39,7 @@ namespace Discord.Rest return new RoleTags( model.BotId.IsSpecified ? model.BotId.Value : null, model.IntegrationId.IsSpecified ? model.IntegrationId.Value : null, - model.IsPremiumSubscriber.IsSpecified ? true : false); + model.IsPremiumSubscriber.GetValueOrDefault(false) ?? false); } public static API.Embed ToModel(this Embed entity) { @@ -68,6 +68,7 @@ namespace Discord.Rest model.Video = entity.Video.Value.ToModel(); return model; } + public static API.AllowedMentions ToModel(this AllowedMentions entity) { return new API.AllowedMentions() diff --git a/src/Discord.Net.Rest/Net/BadSignatureException.cs b/src/Discord.Net.Rest/Net/BadSignatureException.cs new file mode 100644 index 000000000..08672df8e --- /dev/null +++ b/src/Discord.Net.Rest/Net/BadSignatureException.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord.Rest +{ + public class BadSignatureException : Exception + { + internal BadSignatureException() : base("Failed to verify authenticity of message: public key doesnt match signature") + { + + } + } +} diff --git a/src/Discord.Net.Rest/Net/Converters/ArrayConverter.cs b/src/Discord.Net.Rest/Net/Converters/ArrayConverter.cs index 3cededb7b..ce2e9b1f7 100644 --- a/src/Discord.Net.Rest/Net/Converters/ArrayConverter.cs +++ b/src/Discord.Net.Rest/Net/Converters/ArrayConverter.cs @@ -1,4 +1,4 @@ -using Newtonsoft.Json; +using Newtonsoft.Json; using System; using System.Collections.Generic; diff --git a/src/Discord.Net.Rest/Net/Converters/DiscordContractResolver.cs b/src/Discord.Net.Rest/Net/Converters/DiscordContractResolver.cs index 931c0c4c9..91ba22460 100644 --- a/src/Discord.Net.Rest/Net/Converters/DiscordContractResolver.cs +++ b/src/Discord.Net.Rest/Net/Converters/DiscordContractResolver.cs @@ -10,9 +10,10 @@ namespace Discord.Net.Converters { internal class DiscordContractResolver : DefaultContractResolver { + #region DiscordContractResolver private static readonly TypeInfo _ienumerable = typeof(IEnumerable).GetTypeInfo(); - private static readonly MethodInfo _shouldSerialize = typeof(DiscordContractResolver).GetTypeInfo().GetDeclaredMethod("ShouldSerialize"); - + private static readonly MethodInfo _shouldSerialize = typeof(DiscordContractResolver).GetTypeInfo().GetDeclaredMethod("ShouldSerialize"); + protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization) { var property = base.CreateProperty(member, memberSerialization); @@ -57,8 +58,9 @@ namespace Discord.Net.Converters else if (genericType == typeof(EntityOrId<>)) return MakeGenericConverter(property, propInfo, typeof(UInt64EntityOrIdConverter<>), type.GenericTypeArguments[0], depth); } + #endregion - //Primitives + #region Primitives bool hasInt53 = propInfo.GetCustomAttribute() != null; if (!hasInt53) { @@ -81,6 +83,14 @@ namespace Discord.Net.Converters //Special if (type == typeof(API.Image)) return ImageConverter.Instance; + if (typeof(IMessageComponent).IsAssignableFrom(type)) + return MessageComponentConverter.Instance; + if (type == typeof(API.Interaction)) + return InteractionConverter.Instance; + if (type == typeof(API.DiscordError)) + return DiscordErrorConverter.Instance; + if (type == typeof(GuildFeatures)) + return GuildFeaturesConverter.Instance; //Entities var typeInfo = type.GetTypeInfo(); @@ -103,5 +113,6 @@ namespace Discord.Net.Converters var innerConverter = GetConverter(property, propInfo, innerType, depth + 1); return genericType.DeclaredConstructors.First().Invoke(new object[] { innerConverter }) as JsonConverter; } + #endregion } } diff --git a/src/Discord.Net.Rest/Net/Converters/DiscordErrorConverter.cs b/src/Discord.Net.Rest/Net/Converters/DiscordErrorConverter.cs new file mode 100644 index 000000000..772ddc6b2 --- /dev/null +++ b/src/Discord.Net.Rest/Net/Converters/DiscordErrorConverter.cs @@ -0,0 +1,88 @@ +using Discord.API; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord.Net.Converters +{ + internal class DiscordErrorConverter : JsonConverter + { + public static DiscordErrorConverter Instance + => new DiscordErrorConverter(); + + public override bool CanConvert(Type objectType) => objectType == typeof(DiscordError); + + public override bool CanRead => true; + public override bool CanWrite => false; + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + var obj = JObject.Load(reader); + var err = new API.DiscordError(); + + + var result = obj.GetValue("errors", StringComparison.OrdinalIgnoreCase); + result?.Parent.Remove(); + + // Populate the remaining properties. + using (var subReader = obj.CreateReader()) + { + serializer.Populate(subReader, err); + } + + if (result != null) + { + var innerReader = result.CreateReader(); + + var errors = ReadErrors(innerReader); + err.Errors = errors.ToArray(); + } + + return err; + } + + private List ReadErrors(JsonReader reader, string path = "") + { + List errs = new List(); + var obj = JObject.Load(reader); + var props = obj.Properties(); + foreach (var prop in props) + { + if (prop.Name == "_errors" && path == "") // root level error + { + errs.Add(new ErrorDetails() + { + Name = Optional.Unspecified, + Errors = prop.Value.ToObject() + }); + } + else if (prop.Name == "_errors") // path errors (not root level) + { + errs.Add(new ErrorDetails() + { + Name = path, + Errors = prop.Value.ToObject() + }); + } + else if(int.TryParse(prop.Name, out var i)) // array value + { + var r = prop.Value.CreateReader(); + errs.AddRange(ReadErrors(r, path + $"[{i}]")); + } + else // property name + { + var r = prop.Value.CreateReader(); + errs.AddRange(ReadErrors(r, path + $"{(path != "" ? "." : "")}{prop.Name[0].ToString().ToUpper() + new string(prop.Name.Skip(1).ToArray())}")); + } + } + + return errs; + } + + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) => throw new NotImplementedException(); + } +} diff --git a/src/Discord.Net.Rest/Net/Converters/EmbedTypeConverter.cs b/src/Discord.Net.Rest/Net/Converters/EmbedTypeConverter.cs index 1e03fb698..cacd2e2e1 100644 --- a/src/Discord.Net.Rest/Net/Converters/EmbedTypeConverter.cs +++ b/src/Discord.Net.Rest/Net/Converters/EmbedTypeConverter.cs @@ -13,28 +13,19 @@ namespace Discord.Net.Converters public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { - switch ((string)reader.Value) + return (string)reader.Value switch { - case "rich": - return EmbedType.Rich; - case "link": - return EmbedType.Link; - case "video": - return EmbedType.Video; - case "image": - return EmbedType.Image; - case "gifv": - return EmbedType.Gifv; - case "article": - return EmbedType.Article; - case "tweet": - return EmbedType.Tweet; - case "html": - return EmbedType.Html; - case "application_news": // TODO 2.2 EmbedType.News - default: - return EmbedType.Unknown; - } + "rich" => EmbedType.Rich, + "link" => EmbedType.Link, + "video" => EmbedType.Video, + "image" => EmbedType.Image, + "gifv" => EmbedType.Gifv, + "article" => EmbedType.Article, + "tweet" => EmbedType.Tweet, + "html" => EmbedType.Html, + // TODO 2.2 EmbedType.News + _ => EmbedType.Unknown, + }; } public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) diff --git a/src/Discord.Net.Rest/Net/Converters/GuildFeaturesConverter.cs b/src/Discord.Net.Rest/Net/Converters/GuildFeaturesConverter.cs new file mode 100644 index 000000000..9f82b440b --- /dev/null +++ b/src/Discord.Net.Rest/Net/Converters/GuildFeaturesConverter.cs @@ -0,0 +1,60 @@ +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; + +namespace Discord.Net.Converters +{ + internal class GuildFeaturesConverter : JsonConverter + { + public static GuildFeaturesConverter Instance + => new GuildFeaturesConverter(); + + public override bool CanConvert(Type objectType) => true; + public override bool CanWrite => false; + public override bool CanRead => true; + + + private Regex _readRegex = new Regex(@"_(\w)"); + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + var obj = JToken.Load(reader); + var arr = obj.ToObject(); + + GuildFeature features = GuildFeature.None; + List experimental = new(); + + foreach(var item in arr) + { + var name = _readRegex.Replace(item.ToLower(), (x) => + { + return x.Groups[1].Value.ToUpper(); + }); + + name = name[0].ToString().ToUpper() + new string(name.Skip(1).ToArray()); + + try + { + var result = (GuildFeature)Enum.Parse(typeof(GuildFeature), name); + + features |= result; + } + catch + { + experimental.Add(item); + } + } + + return new GuildFeatures(features, experimental.ToArray()); + } + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + throw new NotImplementedException(); + } + } +} diff --git a/src/Discord.Net.Rest/Net/Converters/InteractionConverter.cs b/src/Discord.Net.Rest/Net/Converters/InteractionConverter.cs new file mode 100644 index 000000000..f7235841d --- /dev/null +++ b/src/Discord.Net.Rest/Net/Converters/InteractionConverter.cs @@ -0,0 +1,70 @@ +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using System; + +namespace Discord.Net.Converters +{ + internal class InteractionConverter : JsonConverter + { + public static InteractionConverter Instance => new InteractionConverter(); + + public override bool CanRead => true; + public override bool CanWrite => false; + public override bool CanConvert(Type objectType) => true; + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if (reader.TokenType == JsonToken.Null) + return null; + + var obj = JObject.Load(reader); + var interaction = new API.Interaction(); + + + // Remove the data property for manual deserialization + var result = obj.GetValue("data", StringComparison.OrdinalIgnoreCase); + result?.Parent.Remove(); + + // Populate the remaining properties. + using (var subReader = obj.CreateReader()) + { + serializer.Populate(subReader, interaction); + } + + // Process the Result property + if (result != null) + { + switch (interaction.Type) + { + case InteractionType.ApplicationCommand: + { + var appCommandData = new API.ApplicationCommandInteractionData(); + serializer.Populate(result.CreateReader(), appCommandData); + interaction.Data = appCommandData; + } + break; + case InteractionType.MessageComponent: + { + var messageComponent = new API.MessageComponentInteractionData(); + serializer.Populate(result.CreateReader(), messageComponent); + interaction.Data = messageComponent; + } + break; + case InteractionType.ApplicationCommandAutocomplete: + { + var autocompleteData = new API.AutocompleteInteractionData(); + serializer.Populate(result.CreateReader(), autocompleteData); + interaction.Data = autocompleteData; + } + break; + } + } + else + interaction.Data = Optional.Unspecified; + + return interaction; + } + + + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) => throw new NotImplementedException(); + } +} diff --git a/src/Discord.Net.Rest/Net/Converters/MessageComponentConverter.cs b/src/Discord.Net.Rest/Net/Converters/MessageComponentConverter.cs new file mode 100644 index 000000000..0bf11a369 --- /dev/null +++ b/src/Discord.Net.Rest/Net/Converters/MessageComponentConverter.cs @@ -0,0 +1,40 @@ +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using System; + +namespace Discord.Net.Converters +{ + internal class MessageComponentConverter : JsonConverter + { + public static MessageComponentConverter Instance => new MessageComponentConverter(); + + public override bool CanRead => true; + public override bool CanWrite => false; + public override bool CanConvert(Type objectType) => true; + public override void WriteJson(JsonWriter writer, + object value, JsonSerializer serializer) + { + serializer.Serialize(writer, value); + } + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + var jsonObject = JObject.Load(reader); + var messageComponent = default(IMessageComponent); + switch ((ComponentType)jsonObject["type"].Value()) + { + case ComponentType.ActionRow: + messageComponent = new API.ActionRowComponent(); + break; + case ComponentType.Button: + messageComponent = new API.ButtonComponent(); + break; + case ComponentType.SelectMenu: + messageComponent = new API.SelectMenuComponent(); + break; + } + serializer.Populate(jsonObject.CreateReader(), messageComponent); + return messageComponent; + } + } +} diff --git a/src/Discord.Net.Rest/Net/Converters/UnixTimestampConverter.cs b/src/Discord.Net.Rest/Net/Converters/UnixTimestampConverter.cs index 0b50cb166..876254fb9 100644 --- a/src/Discord.Net.Rest/Net/Converters/UnixTimestampConverter.cs +++ b/src/Discord.Net.Rest/Net/Converters/UnixTimestampConverter.cs @@ -27,7 +27,7 @@ namespace Discord.Net.Converters public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - throw new NotImplementedException(); + writer.WriteValue(((DateTimeOffset)value).ToString("O")); } } } diff --git a/src/Discord.Net.Rest/Net/Converters/UserStatusConverter.cs b/src/Discord.Net.Rest/Net/Converters/UserStatusConverter.cs index c0a287c16..8a13e79a5 100644 --- a/src/Discord.Net.Rest/Net/Converters/UserStatusConverter.cs +++ b/src/Discord.Net.Rest/Net/Converters/UserStatusConverter.cs @@ -1,4 +1,4 @@ -using Newtonsoft.Json; +using Newtonsoft.Json; using System; namespace Discord.Net.Converters @@ -13,21 +13,15 @@ namespace Discord.Net.Converters public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { - switch ((string)reader.Value) + return (string)reader.Value switch { - case "online": - return UserStatus.Online; - case "idle": - return UserStatus.Idle; - case "dnd": - return UserStatus.DoNotDisturb; - case "invisible": - return UserStatus.Invisible; //Should never happen - case "offline": - return UserStatus.Offline; - default: - throw new JsonSerializationException("Unknown user status"); - } + "online" => UserStatus.Online, + "idle" => UserStatus.Idle, + "dnd" => UserStatus.DoNotDisturb, + "invisible" => UserStatus.Invisible,//Should never happen + "offline" => UserStatus.Offline, + _ => throw new JsonSerializationException("Unknown user status"), + }; } public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) diff --git a/src/Discord.Net.Rest/Net/DefaultRestClient.cs b/src/Discord.Net.Rest/Net/DefaultRestClient.cs index b5036d94e..1db743609 100644 --- a/src/Discord.Net.Rest/Net/DefaultRestClient.cs +++ b/src/Discord.Net.Rest/Net/DefaultRestClient.cs @@ -7,6 +7,7 @@ using System.IO; using System.Linq; using System.Net; using System.Net.Http; +using System.Net.Http.Headers; using System.Text; using System.Threading; using System.Threading.Tasks; @@ -101,7 +102,7 @@ namespace Discord.Net.Rest switch (p.Value) { #pragma warning disable IDISP004 - case string stringValue: { content.Add(new StringContent(stringValue), p.Key); continue; } + case string stringValue: { content.Add(new StringContent(stringValue, Encoding.UTF8, "text/plain"), p.Key); continue; } case byte[] byteArrayValue: { content.Add(new ByteArrayContent(byteArrayValue), p.Key); continue; } case Stream streamValue: { content.Add(new StreamContent(streamValue), p.Key); continue; } case MultipartFile fileValue: @@ -116,8 +117,16 @@ namespace Discord.Net.Rest stream = memoryStream; #pragma warning restore IDISP001 } - content.Add(new StreamContent(stream), p.Key, fileValue.Filename); + + var streamContent = new StreamContent(stream); + var extension = fileValue.Filename.Split('.').Last(); + + if(fileValue.ContentType != null) + streamContent.Headers.ContentType = new MediaTypeHeaderValue(fileValue.ContentType); + + content.Add(streamContent, p.Key, fileValue.Filename); #pragma warning restore IDISP004 + continue; } default: throw new InvalidOperationException($"Unsupported param type \"{p.Value.GetType().Name}\"."); @@ -148,15 +157,15 @@ namespace Discord.Net.Rest private static readonly HttpMethod Patch = new HttpMethod("PATCH"); private HttpMethod GetMethod(string method) { - switch (method) + return method switch { - case "DELETE": return HttpMethod.Delete; - case "GET": return HttpMethod.Get; - case "PATCH": return Patch; - case "POST": return HttpMethod.Post; - case "PUT": return HttpMethod.Put; - default: throw new ArgumentOutOfRangeException(nameof(method), $"Unknown HttpMethod: {method}"); - } + "DELETE" => HttpMethod.Delete, + "GET" => HttpMethod.Get, + "PATCH" => Patch, + "POST" => HttpMethod.Post, + "PUT" => HttpMethod.Put, + _ => throw new ArgumentOutOfRangeException(nameof(method), $"Unknown HttpMethod: {method}"), + }; } } } diff --git a/src/Discord.Net.Rest/Net/ED25519/Array16.cs b/src/Discord.Net.Rest/Net/ED25519/Array16.cs new file mode 100644 index 000000000..fca8616c5 --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Array16.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; + +namespace Discord.Net.ED25519 +{ + // Array16 Salsa20 state + // Array16 SHA-512 block + internal struct Array16 + { + public T x0; + public T x1; + public T x2; + public T x3; + public T x4; + public T x5; + public T x6; + public T x7; + public T x8; + public T x9; + public T x10; + public T x11; + public T x12; + public T x13; + public T x14; + public T x15; + } +} diff --git a/src/Discord.Net.Rest/Net/ED25519/Array8.cs b/src/Discord.Net.Rest/Net/ED25519/Array8.cs new file mode 100644 index 000000000..b563ac213 --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Array8.cs @@ -0,0 +1,18 @@ +using System; + +namespace Discord.Net.ED25519 +{ + // Array8 Poly1305 key + // Array8 SHA-512 state/output + internal struct Array8 + { + public T x0; + public T x1; + public T x2; + public T x3; + public T x4; + public T x5; + public T x6; + public T x7; + } +} diff --git a/src/Discord.Net.Rest/Net/ED25519/ByteIntegerConverter.cs b/src/Discord.Net.Rest/Net/ED25519/ByteIntegerConverter.cs new file mode 100644 index 000000000..40c7624ba --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/ByteIntegerConverter.cs @@ -0,0 +1,55 @@ +using System; + +namespace Discord.Net.ED25519 +{ + // Loops? Arrays? Never heard of that stuff + // Library avoids unnecessary heap allocations and unsafe code + // so this ugly code becomes necessary :( + internal static class ByteIntegerConverter + { + public static ulong LoadBigEndian64(byte[] buf, int offset) + { + return + (ulong)(buf[offset + 7]) + | (((ulong)(buf[offset + 6])) << 8) + | (((ulong)(buf[offset + 5])) << 16) + | (((ulong)(buf[offset + 4])) << 24) + | (((ulong)(buf[offset + 3])) << 32) + | (((ulong)(buf[offset + 2])) << 40) + | (((ulong)(buf[offset + 1])) << 48) + | (((ulong)(buf[offset + 0])) << 56); + } + + public static void StoreBigEndian64(byte[] buf, int offset, ulong value) + { + buf[offset + 7] = unchecked((byte)value); + buf[offset + 6] = unchecked((byte)(value >> 8)); + buf[offset + 5] = unchecked((byte)(value >> 16)); + buf[offset + 4] = unchecked((byte)(value >> 24)); + buf[offset + 3] = unchecked((byte)(value >> 32)); + buf[offset + 2] = unchecked((byte)(value >> 40)); + buf[offset + 1] = unchecked((byte)(value >> 48)); + buf[offset + 0] = unchecked((byte)(value >> 56)); + } + + public static void Array16LoadBigEndian64(out Array16 output, byte[] input, int inputOffset) + { + output.x0 = LoadBigEndian64(input, inputOffset + 0); + output.x1 = LoadBigEndian64(input, inputOffset + 8); + output.x2 = LoadBigEndian64(input, inputOffset + 16); + output.x3 = LoadBigEndian64(input, inputOffset + 24); + output.x4 = LoadBigEndian64(input, inputOffset + 32); + output.x5 = LoadBigEndian64(input, inputOffset + 40); + output.x6 = LoadBigEndian64(input, inputOffset + 48); + output.x7 = LoadBigEndian64(input, inputOffset + 56); + output.x8 = LoadBigEndian64(input, inputOffset + 64); + output.x9 = LoadBigEndian64(input, inputOffset + 72); + output.x10 = LoadBigEndian64(input, inputOffset + 80); + output.x11 = LoadBigEndian64(input, inputOffset + 88); + output.x12 = LoadBigEndian64(input, inputOffset + 96); + output.x13 = LoadBigEndian64(input, inputOffset + 104); + output.x14 = LoadBigEndian64(input, inputOffset + 112); + output.x15 = LoadBigEndian64(input, inputOffset + 120); + } + } +} diff --git a/src/Discord.Net.Rest/Net/ED25519/CryptoBytes.cs b/src/Discord.Net.Rest/Net/ED25519/CryptoBytes.cs new file mode 100644 index 000000000..cfd64104d --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/CryptoBytes.cs @@ -0,0 +1,272 @@ +using System; +using System.Linq; +using System.Numerics; +using System.Runtime.CompilerServices; + +namespace Discord.Net.ED25519 +{ + internal class CryptoBytes + { + /// + /// Comparison of two arrays. + /// + /// The runtime of this method does not depend on the contents of the arrays. Using constant time + /// prevents timing attacks that allow an attacker to learn if the arrays have a common prefix. + /// + /// It is important to use such a constant time comparison when verifying MACs. + /// + /// Byte array + /// Byte array + /// True if arrays are equal + public static bool ConstantTimeEquals(byte[] x, byte[] y) + { + if (x.Length != y.Length) + return false; + return InternalConstantTimeEquals(x, 0, y, 0, x.Length) != 0; + } + + /// + /// Comparison of two array segments. + /// + /// The runtime of this method does not depend on the contents of the arrays. Using constant time + /// prevents timing attacks that allow an attacker to learn if the arrays have a common prefix. + /// + /// It is important to use such a constant time comparison when verifying MACs. + /// + /// Byte array segment + /// Byte array segment + /// True if contents of x and y are equal + public static bool ConstantTimeEquals(ArraySegment x, ArraySegment y) + { + if (x.Count != y.Count) + return false; + return InternalConstantTimeEquals(x.Array, x.Offset, y.Array, y.Offset, x.Count) != 0; + } + + /// + /// Comparison of two byte sequences. + /// + /// The runtime of this method does not depend on the contents of the arrays. Using constant time + /// prevents timing attacks that allow an attacker to learn if the arrays have a common prefix. + /// + /// It is important to use such a constant time comparison when verifying MACs. + /// + /// Byte array + /// Offset of byte sequence in the x array + /// Byte array + /// Offset of byte sequence in the y array + /// Lengh of byte sequence + /// True if sequences are equal + public static bool ConstantTimeEquals(byte[] x, int xOffset, byte[] y, int yOffset, int length) + { + return InternalConstantTimeEquals(x, xOffset, y, yOffset, length) != 0; + } + + private static uint InternalConstantTimeEquals(byte[] x, int xOffset, byte[] y, int yOffset, int length) + { + int differentbits = 0; + for (int i = 0; i < length; i++) + differentbits |= x[xOffset + i] ^ y[yOffset + i]; + return (1 & (unchecked((uint)differentbits - 1) >> 8)); + } + + /// + /// Overwrites the contents of the array, wiping the previous content. + /// + /// Byte array + public static void Wipe(byte[] data) + { + InternalWipe(data, 0, data.Length); + } + + /// + /// Overwrites the contents of the array, wiping the previous content. + /// + /// Byte array + /// Index of byte sequence + /// Length of byte sequence + public static void Wipe(byte[] data, int offset, int length) + { + InternalWipe(data, offset, length); + } + + /// + /// Overwrites the contents of the array segment, wiping the previous content. + /// + /// Byte array segment + public static void Wipe(ArraySegment data) + { + InternalWipe(data.Array, data.Offset, data.Count); + } + + // Secure wiping is hard + // * the GC can move around and copy memory + // Perhaps this can be avoided by using unmanaged memory or by fixing the position of the array in memory + // * Swap files and error dumps can contain secret information + // It seems possible to lock memory in RAM, no idea about error dumps + // * Compiler could optimize out the wiping if it knows that data won't be read back + // I hope this is enough, suppressing inlining + // but perhaps `RtlSecureZeroMemory` is needed + [MethodImpl(MethodImplOptions.NoInlining)] + internal static void InternalWipe(byte[] data, int offset, int count) + { + Array.Clear(data, offset, count); + } + + // shallow wipe of structs + [MethodImpl(MethodImplOptions.NoInlining)] + internal static void InternalWipe(ref T data) + where T : struct + { + data = default(T); + } + + /// + /// Constant-time conversion of the bytes array to an upper-case hex string. + /// Please see http://stackoverflow.com/a/14333437/445517 for the detailed explanation + /// + /// Byte array + /// Hex representation of byte array + public static string ToHexStringUpper(byte[] data) + { + if (data == null) + return null; + char[] c = new char[data.Length * 2]; + int b; + for (int i = 0; i < data.Length; i++) + { + b = data[i] >> 4; + c[i * 2] = (char)(55 + b + (((b - 10) >> 31) & -7)); + b = data[i] & 0xF; + c[i * 2 + 1] = (char)(55 + b + (((b - 10) >> 31) & -7)); + } + return new string(c); + } + + /// + /// Constant-time conversion of the bytes array to an lower-case hex string. + /// Please see http://stackoverflow.com/a/14333437/445517 for the detailed explanation. + /// + /// Byte array + /// Hex representation of byte array + public static string ToHexStringLower(byte[] data) + { + if (data == null) + return null; + char[] c = new char[data.Length * 2]; + int b; + for (int i = 0; i < data.Length; i++) + { + b = data[i] >> 4; + c[i * 2] = (char)(87 + b + (((b - 10) >> 31) & -39)); + b = data[i] & 0xF; + c[i * 2 + 1] = (char)(87 + b + (((b - 10) >> 31) & -39)); + } + return new string(c); + } + + /// + /// Converts the hex string to bytes. Case insensitive. + /// + /// Hex encoded byte sequence + /// Byte array + public static byte[] FromHexString(string hexString) + { + if (hexString == null) + return null; + if (hexString.Length % 2 != 0) + throw new FormatException("The hex string is invalid because it has an odd length"); + var result = new byte[hexString.Length / 2]; + for (int i = 0; i < result.Length; i++) + result[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16); + return result; + } + + /// + /// Encodes the bytes with the Base64 encoding. + /// More compact than hex, but it is case-sensitive and uses the special characters `+`, `/` and `=`. + /// + /// Byte array + /// Base 64 encoded data + public static string ToBase64String(byte[] data) + { + if (data == null) + return null; + return Convert.ToBase64String(data); + } + + /// + /// Decodes a Base64 encoded string back to bytes. + /// + /// Base 64 encoded data + /// Byte array + public static byte[] FromBase64String(string base64String) + { + if (base64String == null) + return null; + return Convert.FromBase64String(base64String); + } + + private const string strDigits = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"; + + /// + /// Encode a byte sequence as a base58-encoded string + /// + /// Byte sequence + /// Encoding result + public static string Base58Encode(byte[] input) + { + // Decode byte[] to BigInteger + BigInteger intData = 0; + for (int i = 0; i < input.Length; i++) + { + intData = intData * 256 + input[i]; + } + + // Encode BigInteger to Base58 string + string result = ""; + while (intData > 0) + { + int remainder = (int)(intData % 58); + intData /= 58; + result = strDigits[remainder] + result; + } + + // Append `1` for each leading 0 byte + for (int i = 0; i < input.Length && input[i] == 0; i++) + { + result = '1' + result; + } + return result; + } + + /// + /// // Decode a base58-encoded string into byte array + /// + /// Base58 data string + /// Byte array + public static byte[] Base58Decode(string input) + { + // Decode Base58 string to BigInteger + BigInteger intData = 0; + for (int i = 0; i < input.Length; i++) + { + int digit = strDigits.IndexOf(input[i]); //Slow + if (digit < 0) + throw new FormatException(string.Format("Invalid Base58 character `{0}` at position {1}", input[i], i)); + intData = intData * 58 + digit; + } + + // Encode BigInteger to byte[] + // Leading zero bytes get encoded as leading `1` characters + int leadingZeroCount = input.TakeWhile(c => c == '1').Count(); + var leadingZeros = Enumerable.Repeat((byte)0, leadingZeroCount); + var bytesWithoutLeadingZeros = + intData.ToByteArray() + .Reverse()// to big endian + .SkipWhile(b => b == 0);//strip sign byte + var result = leadingZeros.Concat(bytesWithoutLeadingZeros).ToArray(); + return result; + } + } +} diff --git a/src/Discord.Net.Rest/Net/ED25519/Ed25519.cs b/src/Discord.Net.Rest/Net/ED25519/Ed25519.cs new file mode 100644 index 000000000..109620efd --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Ed25519.cs @@ -0,0 +1,67 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord.Net.ED25519 +{ + internal static class Ed25519 + { + /// + /// Public Keys are 32 byte values. All possible values of this size a valid. + /// + public const int PublicKeySize = 32; + /// + /// Signatures are 64 byte values + /// + public const int SignatureSize = 64; + /// + /// Private key seeds are 32 byte arbitrary values. This is the form that should be generated and stored. + /// + public const int PrivateKeySeedSize = 32; + /// + /// A 64 byte expanded form of private key. This form is used internally to improve performance + /// + public const int ExpandedPrivateKeySize = 32 * 2; + + /// + /// Verify Ed25519 signature + /// + /// Signature bytes + /// Message + /// Public key + /// True if signature is valid, false if it's not + public static bool Verify(ArraySegment signature, ArraySegment message, ArraySegment publicKey) + { + if (signature.Count != SignatureSize) + throw new ArgumentException($"Sizeof signature doesnt match defined size of {SignatureSize}"); + + if (publicKey.Count != PublicKeySize) + throw new ArgumentException($"Sizeof public key doesnt match defined size of {PublicKeySize}"); + + return Ed25519Operations.crypto_sign_verify(signature.Array, signature.Offset, message.Array, message.Offset, message.Count, publicKey.Array, publicKey.Offset); + } + + /// + /// Verify Ed25519 signature + /// + /// Signature bytes + /// Message + /// Public key + /// True if signature is valid, false if it's not + public static bool Verify(byte[] signature, byte[] message, byte[] publicKey) + { + Preconditions.NotNull(signature, nameof(signature)); + Preconditions.NotNull(message, nameof(message)); + Preconditions.NotNull(publicKey, nameof(publicKey)); + if (signature.Length != SignatureSize) + throw new ArgumentException($"Sizeof signature doesnt match defined size of {SignatureSize}"); + + if (publicKey.Length != PublicKeySize) + throw new ArgumentException($"Sizeof public key doesnt match defined size of {PublicKeySize}"); + + return Ed25519Operations.crypto_sign_verify(signature, 0, message, 0, message.Length, publicKey, 0); + } + } +} diff --git a/src/Discord.Net.Rest/Net/ED25519/Ed25519Operations.cs b/src/Discord.Net.Rest/Net/ED25519/Ed25519Operations.cs new file mode 100644 index 000000000..4d5ece1e5 --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Ed25519Operations.cs @@ -0,0 +1,45 @@ +using Discord.Net.ED25519.Ed25519Ref10; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord.Net.ED25519 +{ + internal class Ed25519Operations + { + public static bool crypto_sign_verify( + byte[] sig, int sigoffset, + byte[] m, int moffset, int mlen, + byte[] pk, int pkoffset) + { + byte[] h; + byte[] checkr = new byte[32]; + GroupElementP3 A; + GroupElementP2 R; + + if ((sig[sigoffset + 63] & 224) != 0) + return false; + if (GroupOperations.ge_frombytes_negate_vartime(out A, pk, pkoffset) != 0) + return false; + + var hasher = new Sha512(); + hasher.Update(sig, sigoffset, 32); + hasher.Update(pk, pkoffset, 32); + hasher.Update(m, moffset, mlen); + h = hasher.Finalize(); + + ScalarOperations.sc_reduce(h); + + var sm32 = new byte[32]; + Array.Copy(sig, sigoffset + 32, sm32, 0, 32); + GroupOperations.ge_double_scalarmult_vartime(out R, h, ref A, sm32); + GroupOperations.ge_tobytes(checkr, 0, ref R); + var result = CryptoBytes.ConstantTimeEquals(checkr, 0, sig, sigoffset, 32); + CryptoBytes.Wipe(h); + CryptoBytes.Wipe(checkr); + return result; + } + } +} diff --git a/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/FieldElement.cs b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/FieldElement.cs new file mode 100644 index 000000000..d612ff5be --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/FieldElement.cs @@ -0,0 +1,23 @@ +using System; + +namespace Discord.Net.ED25519.Ed25519Ref10 +{ + internal struct FieldElement + { + internal int x0, x1, x2, x3, x4, x5, x6, x7, x8, x9; + + internal FieldElement(params int[] elements) + { + x0 = elements[0]; + x1 = elements[1]; + x2 = elements[2]; + x3 = elements[3]; + x4 = elements[4]; + x5 = elements[5]; + x6 = elements[6]; + x7 = elements[7]; + x8 = elements[8]; + x9 = elements[9]; + } + } +} diff --git a/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/GroupElement.cs b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/GroupElement.cs new file mode 100644 index 000000000..d54b5ada7 --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/GroupElement.cs @@ -0,0 +1,63 @@ +using System; + +namespace Discord.Net.ED25519.Ed25519Ref10 +{ + /* + ge means group element. + + Here the group is the set of pairs (x,y) of field elements (see fe.h) + satisfying -x^2 + y^2 = 1 + d x^2y^2 + where d = -121665/121666. + + Representations: + ge_p2 (projective): (X:Y:Z) satisfying x=X/Z, y=Y/Z + ge_p3 (extended): (X:Y:Z:T) satisfying x=X/Z, y=Y/Z, XY=ZT + ge_p1p1 (completed): ((X:Z),(Y:T)) satisfying x=X/Z, y=Y/T + ge_precomp (Duif): (y+x,y-x,2dxy) + */ + + internal struct GroupElementP2 + { + public FieldElement X; + public FieldElement Y; + public FieldElement Z; + } ; + + internal struct GroupElementP3 + { + public FieldElement X; + public FieldElement Y; + public FieldElement Z; + public FieldElement T; + } ; + + internal struct GroupElementP1P1 + { + public FieldElement X; + public FieldElement Y; + public FieldElement Z; + public FieldElement T; + } ; + + internal struct GroupElementPreComp + { + public FieldElement yplusx; + public FieldElement yminusx; + public FieldElement xy2d; + + public GroupElementPreComp(FieldElement yplusx, FieldElement yminusx, FieldElement xy2d) + { + this.yplusx = yplusx; + this.yminusx = yminusx; + this.xy2d = xy2d; + } + } ; + + internal struct GroupElementCached + { + public FieldElement YplusX; + public FieldElement YminusX; + public FieldElement Z; + public FieldElement T2d; + } ; +} diff --git a/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/base.cs b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/base.cs new file mode 100644 index 000000000..2a25504c9 --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/base.cs @@ -0,0 +1,1355 @@ +namespace Discord.Net.ED25519.Ed25519Ref10 +{ + internal static partial class LookupTables + { + /* base[i][j] = (j+1)*256^i*B */ + //32*8 + internal static GroupElementPreComp[][] Base = new GroupElementPreComp[][] + { + new[]{ + new GroupElementPreComp( + new FieldElement( 25967493,-14356035,29566456,3660896,-12694345,4014787,27544626,-11754271,-6079156,2047605 ), + new FieldElement( -12545711,934262,-2722910,3049990,-727428,9406986,12720692,5043384,19500929,-15469378 ), + new FieldElement( -8738181,4489570,9688441,-14785194,10184609,-12363380,29287919,11864899,-24514362,-4438546 ) + ), + new GroupElementPreComp( + new FieldElement( -12815894,-12976347,-21581243,11784320,-25355658,-2750717,-11717903,-3814571,-358445,-10211303 ), + new FieldElement( -21703237,6903825,27185491,6451973,-29577724,-9554005,-15616551,11189268,-26829678,-5319081 ), + new FieldElement( 26966642,11152617,32442495,15396054,14353839,-12752335,-3128826,-9541118,-15472047,-4166697 ) + ), + new GroupElementPreComp( + new FieldElement( 15636291,-9688557,24204773,-7912398,616977,-16685262,27787600,-14772189,28944400,-1550024 ), + new FieldElement( 16568933,4717097,-11556148,-1102322,15682896,-11807043,16354577,-11775962,7689662,11199574 ), + new FieldElement( 30464156,-5976125,-11779434,-15670865,23220365,15915852,7512774,10017326,-17749093,-9920357 ) + ), + new GroupElementPreComp( + new FieldElement( -17036878,13921892,10945806,-6033431,27105052,-16084379,-28926210,15006023,3284568,-6276540 ), + new FieldElement( 23599295,-8306047,-11193664,-7687416,13236774,10506355,7464579,9656445,13059162,10374397 ), + new FieldElement( 7798556,16710257,3033922,2874086,28997861,2835604,32406664,-3839045,-641708,-101325 ) + ), + new GroupElementPreComp( + new FieldElement( 10861363,11473154,27284546,1981175,-30064349,12577861,32867885,14515107,-15438304,10819380 ), + new FieldElement( 4708026,6336745,20377586,9066809,-11272109,6594696,-25653668,12483688,-12668491,5581306 ), + new FieldElement( 19563160,16186464,-29386857,4097519,10237984,-4348115,28542350,13850243,-23678021,-15815942 ) + ), + new GroupElementPreComp( + new FieldElement( -15371964,-12862754,32573250,4720197,-26436522,5875511,-19188627,-15224819,-9818940,-12085777 ), + new FieldElement( -8549212,109983,15149363,2178705,22900618,4543417,3044240,-15689887,1762328,14866737 ), + new FieldElement( -18199695,-15951423,-10473290,1707278,-17185920,3916101,-28236412,3959421,27914454,4383652 ) + ), + new GroupElementPreComp( + new FieldElement( 5153746,9909285,1723747,-2777874,30523605,5516873,19480852,5230134,-23952439,-15175766 ), + new FieldElement( -30269007,-3463509,7665486,10083793,28475525,1649722,20654025,16520125,30598449,7715701 ), + new FieldElement( 28881845,14381568,9657904,3680757,-20181635,7843316,-31400660,1370708,29794553,-1409300 ) + ), + new GroupElementPreComp( + new FieldElement( 14499471,-2729599,-33191113,-4254652,28494862,14271267,30290735,10876454,-33154098,2381726 ), + new FieldElement( -7195431,-2655363,-14730155,462251,-27724326,3941372,-6236617,3696005,-32300832,15351955 ), + new FieldElement( 27431194,8222322,16448760,-3907995,-18707002,11938355,-32961401,-2970515,29551813,10109425 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( -13657040,-13155431,-31283750,11777098,21447386,6519384,-2378284,-1627556,10092783,-4764171 ), + new FieldElement( 27939166,14210322,4677035,16277044,-22964462,-12398139,-32508754,12005538,-17810127,12803510 ), + new FieldElement( 17228999,-15661624,-1233527,300140,-1224870,-11714777,30364213,-9038194,18016357,4397660 ) + ), + new GroupElementPreComp( + new FieldElement( -10958843,-7690207,4776341,-14954238,27850028,-15602212,-26619106,14544525,-17477504,982639 ), + new FieldElement( 29253598,15796703,-2863982,-9908884,10057023,3163536,7332899,-4120128,-21047696,9934963 ), + new FieldElement( 5793303,16271923,-24131614,-10116404,29188560,1206517,-14747930,4559895,-30123922,-10897950 ) + ), + new GroupElementPreComp( + new FieldElement( -27643952,-11493006,16282657,-11036493,28414021,-15012264,24191034,4541697,-13338309,5500568 ), + new FieldElement( 12650548,-1497113,9052871,11355358,-17680037,-8400164,-17430592,12264343,10874051,13524335 ), + new FieldElement( 25556948,-3045990,714651,2510400,23394682,-10415330,33119038,5080568,-22528059,5376628 ) + ), + new GroupElementPreComp( + new FieldElement( -26088264,-4011052,-17013699,-3537628,-6726793,1920897,-22321305,-9447443,4535768,1569007 ), + new FieldElement( -2255422,14606630,-21692440,-8039818,28430649,8775819,-30494562,3044290,31848280,12543772 ), + new FieldElement( -22028579,2943893,-31857513,6777306,13784462,-4292203,-27377195,-2062731,7718482,14474653 ) + ), + new GroupElementPreComp( + new FieldElement( 2385315,2454213,-22631320,46603,-4437935,-15680415,656965,-7236665,24316168,-5253567 ), + new FieldElement( 13741529,10911568,-33233417,-8603737,-20177830,-1033297,33040651,-13424532,-20729456,8321686 ), + new FieldElement( 21060490,-2212744,15712757,-4336099,1639040,10656336,23845965,-11874838,-9984458,608372 ) + ), + new GroupElementPreComp( + new FieldElement( -13672732,-15087586,-10889693,-7557059,-6036909,11305547,1123968,-6780577,27229399,23887 ), + new FieldElement( -23244140,-294205,-11744728,14712571,-29465699,-2029617,12797024,-6440308,-1633405,16678954 ), + new FieldElement( -29500620,4770662,-16054387,14001338,7830047,9564805,-1508144,-4795045,-17169265,4904953 ) + ), + new GroupElementPreComp( + new FieldElement( 24059557,14617003,19037157,-15039908,19766093,-14906429,5169211,16191880,2128236,-4326833 ), + new FieldElement( -16981152,4124966,-8540610,-10653797,30336522,-14105247,-29806336,916033,-6882542,-2986532 ), + new FieldElement( -22630907,12419372,-7134229,-7473371,-16478904,16739175,285431,2763829,15736322,4143876 ) + ), + new GroupElementPreComp( + new FieldElement( 2379352,11839345,-4110402,-5988665,11274298,794957,212801,-14594663,23527084,-16458268 ), + new FieldElement( 33431127,-11130478,-17838966,-15626900,8909499,8376530,-32625340,4087881,-15188911,-14416214 ), + new FieldElement( 1767683,7197987,-13205226,-2022635,-13091350,448826,5799055,4357868,-4774191,-16323038 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( 6721966,13833823,-23523388,-1551314,26354293,-11863321,23365147,-3949732,7390890,2759800 ), + new FieldElement( 4409041,2052381,23373853,10530217,7676779,-12885954,21302353,-4264057,1244380,-12919645 ), + new FieldElement( -4421239,7169619,4982368,-2957590,30256825,-2777540,14086413,9208236,15886429,16489664 ) + ), + new GroupElementPreComp( + new FieldElement( 1996075,10375649,14346367,13311202,-6874135,-16438411,-13693198,398369,-30606455,-712933 ), + new FieldElement( -25307465,9795880,-2777414,14878809,-33531835,14780363,13348553,12076947,-30836462,5113182 ), + new FieldElement( -17770784,11797796,31950843,13929123,-25888302,12288344,-30341101,-7336386,13847711,5387222 ) + ), + new GroupElementPreComp( + new FieldElement( -18582163,-3416217,17824843,-2340966,22744343,-10442611,8763061,3617786,-19600662,10370991 ), + new FieldElement( 20246567,-14369378,22358229,-543712,18507283,-10413996,14554437,-8746092,32232924,16763880 ), + new FieldElement( 9648505,10094563,26416693,14745928,-30374318,-6472621,11094161,15689506,3140038,-16510092 ) + ), + new GroupElementPreComp( + new FieldElement( -16160072,5472695,31895588,4744994,8823515,10365685,-27224800,9448613,-28774454,366295 ), + new FieldElement( 19153450,11523972,-11096490,-6503142,-24647631,5420647,28344573,8041113,719605,11671788 ), + new FieldElement( 8678025,2694440,-6808014,2517372,4964326,11152271,-15432916,-15266516,27000813,-10195553 ) + ), + new GroupElementPreComp( + new FieldElement( -15157904,7134312,8639287,-2814877,-7235688,10421742,564065,5336097,6750977,-14521026 ), + new FieldElement( 11836410,-3979488,26297894,16080799,23455045,15735944,1695823,-8819122,8169720,16220347 ), + new FieldElement( -18115838,8653647,17578566,-6092619,-8025777,-16012763,-11144307,-2627664,-5990708,-14166033 ) + ), + new GroupElementPreComp( + new FieldElement( -23308498,-10968312,15213228,-10081214,-30853605,-11050004,27884329,2847284,2655861,1738395 ), + new FieldElement( -27537433,-14253021,-25336301,-8002780,-9370762,8129821,21651608,-3239336,-19087449,-11005278 ), + new FieldElement( 1533110,3437855,23735889,459276,29970501,11335377,26030092,5821408,10478196,8544890 ) + ), + new GroupElementPreComp( + new FieldElement( 32173121,-16129311,24896207,3921497,22579056,-3410854,19270449,12217473,17789017,-3395995 ), + new FieldElement( -30552961,-2228401,-15578829,-10147201,13243889,517024,15479401,-3853233,30460520,1052596 ), + new FieldElement( -11614875,13323618,32618793,8175907,-15230173,12596687,27491595,-4612359,3179268,-9478891 ) + ), + new GroupElementPreComp( + new FieldElement( 31947069,-14366651,-4640583,-15339921,-15125977,-6039709,-14756777,-16411740,19072640,-9511060 ), + new FieldElement( 11685058,11822410,3158003,-13952594,33402194,-4165066,5977896,-5215017,473099,5040608 ), + new FieldElement( -20290863,8198642,-27410132,11602123,1290375,-2799760,28326862,1721092,-19558642,-3131606 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( 7881532,10687937,7578723,7738378,-18951012,-2553952,21820786,8076149,-27868496,11538389 ), + new FieldElement( -19935666,3899861,18283497,-6801568,-15728660,-11249211,8754525,7446702,-5676054,5797016 ), + new FieldElement( -11295600,-3793569,-15782110,-7964573,12708869,-8456199,2014099,-9050574,-2369172,-5877341 ) + ), + new GroupElementPreComp( + new FieldElement( -22472376,-11568741,-27682020,1146375,18956691,16640559,1192730,-3714199,15123619,10811505 ), + new FieldElement( 14352098,-3419715,-18942044,10822655,32750596,4699007,-70363,15776356,-28886779,-11974553 ), + new FieldElement( -28241164,-8072475,-4978962,-5315317,29416931,1847569,-20654173,-16484855,4714547,-9600655 ) + ), + new GroupElementPreComp( + new FieldElement( 15200332,8368572,19679101,15970074,-31872674,1959451,24611599,-4543832,-11745876,12340220 ), + new FieldElement( 12876937,-10480056,33134381,6590940,-6307776,14872440,9613953,8241152,15370987,9608631 ), + new FieldElement( -4143277,-12014408,8446281,-391603,4407738,13629032,-7724868,15866074,-28210621,-8814099 ) + ), + new GroupElementPreComp( + new FieldElement( 26660628,-15677655,8393734,358047,-7401291,992988,-23904233,858697,20571223,8420556 ), + new FieldElement( 14620715,13067227,-15447274,8264467,14106269,15080814,33531827,12516406,-21574435,-12476749 ), + new FieldElement( 236881,10476226,57258,-14677024,6472998,2466984,17258519,7256740,8791136,15069930 ) + ), + new GroupElementPreComp( + new FieldElement( 1276410,-9371918,22949635,-16322807,-23493039,-5702186,14711875,4874229,-30663140,-2331391 ), + new FieldElement( 5855666,4990204,-13711848,7294284,-7804282,1924647,-1423175,-7912378,-33069337,9234253 ), + new FieldElement( 20590503,-9018988,31529744,-7352666,-2706834,10650548,31559055,-11609587,18979186,13396066 ) + ), + new GroupElementPreComp( + new FieldElement( 24474287,4968103,22267082,4407354,24063882,-8325180,-18816887,13594782,33514650,7021958 ), + new FieldElement( -11566906,-6565505,-21365085,15928892,-26158305,4315421,-25948728,-3916677,-21480480,12868082 ), + new FieldElement( -28635013,13504661,19988037,-2132761,21078225,6443208,-21446107,2244500,-12455797,-8089383 ) + ), + new GroupElementPreComp( + new FieldElement( -30595528,13793479,-5852820,319136,-25723172,-6263899,33086546,8957937,-15233648,5540521 ), + new FieldElement( -11630176,-11503902,-8119500,-7643073,2620056,1022908,-23710744,-1568984,-16128528,-14962807 ), + new FieldElement( 23152971,775386,27395463,14006635,-9701118,4649512,1689819,892185,-11513277,-15205948 ) + ), + new GroupElementPreComp( + new FieldElement( 9770129,9586738,26496094,4324120,1556511,-3550024,27453819,4763127,-19179614,5867134 ), + new FieldElement( -32765025,1927590,31726409,-4753295,23962434,-16019500,27846559,5931263,-29749703,-16108455 ), + new FieldElement( 27461885,-2977536,22380810,1815854,-23033753,-3031938,7283490,-15148073,-19526700,7734629 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( -8010264,-9590817,-11120403,6196038,29344158,-13430885,7585295,-3176626,18549497,15302069 ), + new FieldElement( -32658337,-6171222,-7672793,-11051681,6258878,13504381,10458790,-6418461,-8872242,8424746 ), + new FieldElement( 24687205,8613276,-30667046,-3233545,1863892,-1830544,19206234,7134917,-11284482,-828919 ) + ), + new GroupElementPreComp( + new FieldElement( 11334899,-9218022,8025293,12707519,17523892,-10476071,10243738,-14685461,-5066034,16498837 ), + new FieldElement( 8911542,6887158,-9584260,-6958590,11145641,-9543680,17303925,-14124238,6536641,10543906 ), + new FieldElement( -28946384,15479763,-17466835,568876,-1497683,11223454,-2669190,-16625574,-27235709,8876771 ) + ), + new GroupElementPreComp( + new FieldElement( -25742899,-12566864,-15649966,-846607,-33026686,-796288,-33481822,15824474,-604426,-9039817 ), + new FieldElement( 10330056,70051,7957388,-9002667,9764902,15609756,27698697,-4890037,1657394,3084098 ), + new FieldElement( 10477963,-7470260,12119566,-13250805,29016247,-5365589,31280319,14396151,-30233575,15272409 ) + ), + new GroupElementPreComp( + new FieldElement( -12288309,3169463,28813183,16658753,25116432,-5630466,-25173957,-12636138,-25014757,1950504 ), + new FieldElement( -26180358,9489187,11053416,-14746161,-31053720,5825630,-8384306,-8767532,15341279,8373727 ), + new FieldElement( 28685821,7759505,-14378516,-12002860,-31971820,4079242,298136,-10232602,-2878207,15190420 ) + ), + new GroupElementPreComp( + new FieldElement( -32932876,13806336,-14337485,-15794431,-24004620,10940928,8669718,2742393,-26033313,-6875003 ), + new FieldElement( -1580388,-11729417,-25979658,-11445023,-17411874,-10912854,9291594,-16247779,-12154742,6048605 ), + new FieldElement( -30305315,14843444,1539301,11864366,20201677,1900163,13934231,5128323,11213262,9168384 ) + ), + new GroupElementPreComp( + new FieldElement( -26280513,11007847,19408960,-940758,-18592965,-4328580,-5088060,-11105150,20470157,-16398701 ), + new FieldElement( -23136053,9282192,14855179,-15390078,-7362815,-14408560,-22783952,14461608,14042978,5230683 ), + new FieldElement( 29969567,-2741594,-16711867,-8552442,9175486,-2468974,21556951,3506042,-5933891,-12449708 ) + ), + new GroupElementPreComp( + new FieldElement( -3144746,8744661,19704003,4581278,-20430686,6830683,-21284170,8971513,-28539189,15326563 ), + new FieldElement( -19464629,10110288,-17262528,-3503892,-23500387,1355669,-15523050,15300988,-20514118,9168260 ), + new FieldElement( -5353335,4488613,-23803248,16314347,7780487,-15638939,-28948358,9601605,33087103,-9011387 ) + ), + new GroupElementPreComp( + new FieldElement( -19443170,-15512900,-20797467,-12445323,-29824447,10229461,-27444329,-15000531,-5996870,15664672 ), + new FieldElement( 23294591,-16632613,-22650781,-8470978,27844204,11461195,13099750,-2460356,18151676,13417686 ), + new FieldElement( -24722913,-4176517,-31150679,5988919,-26858785,6685065,1661597,-12551441,15271676,-15452665 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( 11433042,-13228665,8239631,-5279517,-1985436,-725718,-18698764,2167544,-6921301,-13440182 ), + new FieldElement( -31436171,15575146,30436815,12192228,-22463353,9395379,-9917708,-8638997,12215110,12028277 ), + new FieldElement( 14098400,6555944,23007258,5757252,-15427832,-12950502,30123440,4617780,-16900089,-655628 ) + ), + new GroupElementPreComp( + new FieldElement( -4026201,-15240835,11893168,13718664,-14809462,1847385,-15819999,10154009,23973261,-12684474 ), + new FieldElement( -26531820,-3695990,-1908898,2534301,-31870557,-16550355,18341390,-11419951,32013174,-10103539 ), + new FieldElement( -25479301,10876443,-11771086,-14625140,-12369567,1838104,21911214,6354752,4425632,-837822 ) + ), + new GroupElementPreComp( + new FieldElement( -10433389,-14612966,22229858,-3091047,-13191166,776729,-17415375,-12020462,4725005,14044970 ), + new FieldElement( 19268650,-7304421,1555349,8692754,-21474059,-9910664,6347390,-1411784,-19522291,-16109756 ), + new FieldElement( -24864089,12986008,-10898878,-5558584,-11312371,-148526,19541418,8180106,9282262,10282508 ) + ), + new GroupElementPreComp( + new FieldElement( -26205082,4428547,-8661196,-13194263,4098402,-14165257,15522535,8372215,5542595,-10702683 ), + new FieldElement( -10562541,14895633,26814552,-16673850,-17480754,-2489360,-2781891,6993761,-18093885,10114655 ), + new FieldElement( -20107055,-929418,31422704,10427861,-7110749,6150669,-29091755,-11529146,25953725,-106158 ) + ), + new GroupElementPreComp( + new FieldElement( -4234397,-8039292,-9119125,3046000,2101609,-12607294,19390020,6094296,-3315279,12831125 ), + new FieldElement( -15998678,7578152,5310217,14408357,-33548620,-224739,31575954,6326196,7381791,-2421839 ), + new FieldElement( -20902779,3296811,24736065,-16328389,18374254,7318640,6295303,8082724,-15362489,12339664 ) + ), + new GroupElementPreComp( + new FieldElement( 27724736,2291157,6088201,-14184798,1792727,5857634,13848414,15768922,25091167,14856294 ), + new FieldElement( -18866652,8331043,24373479,8541013,-701998,-9269457,12927300,-12695493,-22182473,-9012899 ), + new FieldElement( -11423429,-5421590,11632845,3405020,30536730,-11674039,-27260765,13866390,30146206,9142070 ) + ), + new GroupElementPreComp( + new FieldElement( 3924129,-15307516,-13817122,-10054960,12291820,-668366,-27702774,9326384,-8237858,4171294 ), + new FieldElement( -15921940,16037937,6713787,16606682,-21612135,2790944,26396185,3731949,345228,-5462949 ), + new FieldElement( -21327538,13448259,25284571,1143661,20614966,-8849387,2031539,-12391231,-16253183,-13582083 ) + ), + new GroupElementPreComp( + new FieldElement( 31016211,-16722429,26371392,-14451233,-5027349,14854137,17477601,3842657,28012650,-16405420 ), + new FieldElement( -5075835,9368966,-8562079,-4600902,-15249953,6970560,-9189873,16292057,-8867157,3507940 ), + new FieldElement( 29439664,3537914,23333589,6997794,-17555561,-11018068,-15209202,-15051267,-9164929,6580396 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( -12185861,-7679788,16438269,10826160,-8696817,-6235611,17860444,-9273846,-2095802,9304567 ), + new FieldElement( 20714564,-4336911,29088195,7406487,11426967,-5095705,14792667,-14608617,5289421,-477127 ), + new FieldElement( -16665533,-10650790,-6160345,-13305760,9192020,-1802462,17271490,12349094,26939669,-3752294 ) + ), + new GroupElementPreComp( + new FieldElement( -12889898,9373458,31595848,16374215,21471720,13221525,-27283495,-12348559,-3698806,117887 ), + new FieldElement( 22263325,-6560050,3984570,-11174646,-15114008,-566785,28311253,5358056,-23319780,541964 ), + new FieldElement( 16259219,3261970,2309254,-15534474,-16885711,-4581916,24134070,-16705829,-13337066,-13552195 ) + ), + new GroupElementPreComp( + new FieldElement( 9378160,-13140186,-22845982,-12745264,28198281,-7244098,-2399684,-717351,690426,14876244 ), + new FieldElement( 24977353,-314384,-8223969,-13465086,28432343,-1176353,-13068804,-12297348,-22380984,6618999 ), + new FieldElement( -1538174,11685646,12944378,13682314,-24389511,-14413193,8044829,-13817328,32239829,-5652762 ) + ), + new GroupElementPreComp( + new FieldElement( -18603066,4762990,-926250,8885304,-28412480,-3187315,9781647,-10350059,32779359,5095274 ), + new FieldElement( -33008130,-5214506,-32264887,-3685216,9460461,-9327423,-24601656,14506724,21639561,-2630236 ), + new FieldElement( -16400943,-13112215,25239338,15531969,3987758,-4499318,-1289502,-6863535,17874574,558605 ) + ), + new GroupElementPreComp( + new FieldElement( -13600129,10240081,9171883,16131053,-20869254,9599700,33499487,5080151,2085892,5119761 ), + new FieldElement( -22205145,-2519528,-16381601,414691,-25019550,2170430,30634760,-8363614,-31999993,-5759884 ), + new FieldElement( -6845704,15791202,8550074,-1312654,29928809,-12092256,27534430,-7192145,-22351378,12961482 ) + ), + new GroupElementPreComp( + new FieldElement( -24492060,-9570771,10368194,11582341,-23397293,-2245287,16533930,8206996,-30194652,-5159638 ), + new FieldElement( -11121496,-3382234,2307366,6362031,-135455,8868177,-16835630,7031275,7589640,8945490 ), + new FieldElement( -32152748,8917967,6661220,-11677616,-1192060,-15793393,7251489,-11182180,24099109,-14456170 ) + ), + new GroupElementPreComp( + new FieldElement( 5019558,-7907470,4244127,-14714356,-26933272,6453165,-19118182,-13289025,-6231896,-10280736 ), + new FieldElement( 10853594,10721687,26480089,5861829,-22995819,1972175,-1866647,-10557898,-3363451,-6441124 ), + new FieldElement( -17002408,5906790,221599,-6563147,7828208,-13248918,24362661,-2008168,-13866408,7421392 ) + ), + new GroupElementPreComp( + new FieldElement( 8139927,-6546497,32257646,-5890546,30375719,1886181,-21175108,15441252,28826358,-4123029 ), + new FieldElement( 6267086,9695052,7709135,-16603597,-32869068,-1886135,14795160,-7840124,13746021,-1742048 ), + new FieldElement( 28584902,7787108,-6732942,-15050729,22846041,-7571236,-3181936,-363524,4771362,-8419958 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( 24949256,6376279,-27466481,-8174608,-18646154,-9930606,33543569,-12141695,3569627,11342593 ), + new FieldElement( 26514989,4740088,27912651,3697550,19331575,-11472339,6809886,4608608,7325975,-14801071 ), + new FieldElement( -11618399,-14554430,-24321212,7655128,-1369274,5214312,-27400540,10258390,-17646694,-8186692 ) + ), + new GroupElementPreComp( + new FieldElement( 11431204,15823007,26570245,14329124,18029990,4796082,-31446179,15580664,9280358,-3973687 ), + new FieldElement( -160783,-10326257,-22855316,-4304997,-20861367,-13621002,-32810901,-11181622,-15545091,4387441 ), + new FieldElement( -20799378,12194512,3937617,-5805892,-27154820,9340370,-24513992,8548137,20617071,-7482001 ) + ), + new GroupElementPreComp( + new FieldElement( -938825,-3930586,-8714311,16124718,24603125,-6225393,-13775352,-11875822,24345683,10325460 ), + new FieldElement( -19855277,-1568885,-22202708,8714034,14007766,6928528,16318175,-1010689,4766743,3552007 ), + new FieldElement( -21751364,-16730916,1351763,-803421,-4009670,3950935,3217514,14481909,10988822,-3994762 ) + ), + new GroupElementPreComp( + new FieldElement( 15564307,-14311570,3101243,5684148,30446780,-8051356,12677127,-6505343,-8295852,13296005 ), + new FieldElement( -9442290,6624296,-30298964,-11913677,-4670981,-2057379,31521204,9614054,-30000824,12074674 ), + new FieldElement( 4771191,-135239,14290749,-13089852,27992298,14998318,-1413936,-1556716,29832613,-16391035 ) + ), + new GroupElementPreComp( + new FieldElement( 7064884,-7541174,-19161962,-5067537,-18891269,-2912736,25825242,5293297,-27122660,13101590 ), + new FieldElement( -2298563,2439670,-7466610,1719965,-27267541,-16328445,32512469,-5317593,-30356070,-4190957 ), + new FieldElement( -30006540,10162316,-33180176,3981723,-16482138,-13070044,14413974,9515896,19568978,9628812 ) + ), + new GroupElementPreComp( + new FieldElement( 33053803,199357,15894591,1583059,27380243,-4580435,-17838894,-6106839,-6291786,3437740 ), + new FieldElement( -18978877,3884493,19469877,12726490,15913552,13614290,-22961733,70104,7463304,4176122 ), + new FieldElement( -27124001,10659917,11482427,-16070381,12771467,-6635117,-32719404,-5322751,24216882,5944158 ) + ), + new GroupElementPreComp( + new FieldElement( 8894125,7450974,-2664149,-9765752,-28080517,-12389115,19345746,14680796,11632993,5847885 ), + new FieldElement( 26942781,-2315317,9129564,-4906607,26024105,11769399,-11518837,6367194,-9727230,4782140 ), + new FieldElement( 19916461,-4828410,-22910704,-11414391,25606324,-5972441,33253853,8220911,6358847,-1873857 ) + ), + new GroupElementPreComp( + new FieldElement( 801428,-2081702,16569428,11065167,29875704,96627,7908388,-4480480,-13538503,1387155 ), + new FieldElement( 19646058,5720633,-11416706,12814209,11607948,12749789,14147075,15156355,-21866831,11835260 ), + new FieldElement( 19299512,1155910,28703737,14890794,2925026,7269399,26121523,15467869,-26560550,5052483 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( -3017432,10058206,1980837,3964243,22160966,12322533,-6431123,-12618185,12228557,-7003677 ), + new FieldElement( 32944382,14922211,-22844894,5188528,21913450,-8719943,4001465,13238564,-6114803,8653815 ), + new FieldElement( 22865569,-4652735,27603668,-12545395,14348958,8234005,24808405,5719875,28483275,2841751 ) + ), + new GroupElementPreComp( + new FieldElement( -16420968,-1113305,-327719,-12107856,21886282,-15552774,-1887966,-315658,19932058,-12739203 ), + new FieldElement( -11656086,10087521,-8864888,-5536143,-19278573,-3055912,3999228,13239134,-4777469,-13910208 ), + new FieldElement( 1382174,-11694719,17266790,9194690,-13324356,9720081,20403944,11284705,-14013818,3093230 ) + ), + new GroupElementPreComp( + new FieldElement( 16650921,-11037932,-1064178,1570629,-8329746,7352753,-302424,16271225,-24049421,-6691850 ), + new FieldElement( -21911077,-5927941,-4611316,-5560156,-31744103,-10785293,24123614,15193618,-21652117,-16739389 ), + new FieldElement( -9935934,-4289447,-25279823,4372842,2087473,10399484,31870908,14690798,17361620,11864968 ) + ), + new GroupElementPreComp( + new FieldElement( -11307610,6210372,13206574,5806320,-29017692,-13967200,-12331205,-7486601,-25578460,-16240689 ), + new FieldElement( 14668462,-12270235,26039039,15305210,25515617,4542480,10453892,6577524,9145645,-6443880 ), + new FieldElement( 5974874,3053895,-9433049,-10385191,-31865124,3225009,-7972642,3936128,-5652273,-3050304 ) + ), + new GroupElementPreComp( + new FieldElement( 30625386,-4729400,-25555961,-12792866,-20484575,7695099,17097188,-16303496,-27999779,1803632 ), + new FieldElement( -3553091,9865099,-5228566,4272701,-5673832,-16689700,14911344,12196514,-21405489,7047412 ), + new FieldElement( 20093277,9920966,-11138194,-5343857,13161587,12044805,-32856851,4124601,-32343828,-10257566 ) + ), + new GroupElementPreComp( + new FieldElement( -20788824,14084654,-13531713,7842147,19119038,-13822605,4752377,-8714640,-21679658,2288038 ), + new FieldElement( -26819236,-3283715,29965059,3039786,-14473765,2540457,29457502,14625692,-24819617,12570232 ), + new FieldElement( -1063558,-11551823,16920318,12494842,1278292,-5869109,-21159943,-3498680,-11974704,4724943 ) + ), + new GroupElementPreComp( + new FieldElement( 17960970,-11775534,-4140968,-9702530,-8876562,-1410617,-12907383,-8659932,-29576300,1903856 ), + new FieldElement( 23134274,-14279132,-10681997,-1611936,20684485,15770816,-12989750,3190296,26955097,14109738 ), + new FieldElement( 15308788,5320727,-30113809,-14318877,22902008,7767164,29425325,-11277562,31960942,11934971 ) + ), + new GroupElementPreComp( + new FieldElement( -27395711,8435796,4109644,12222639,-24627868,14818669,20638173,4875028,10491392,1379718 ), + new FieldElement( -13159415,9197841,3875503,-8936108,-1383712,-5879801,33518459,16176658,21432314,12180697 ), + new FieldElement( -11787308,11500838,13787581,-13832590,-22430679,10140205,1465425,12689540,-10301319,-13872883 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( 5414091,-15386041,-21007664,9643570,12834970,1186149,-2622916,-1342231,26128231,6032912 ), + new FieldElement( -26337395,-13766162,32496025,-13653919,17847801,-12669156,3604025,8316894,-25875034,-10437358 ), + new FieldElement( 3296484,6223048,24680646,-12246460,-23052020,5903205,-8862297,-4639164,12376617,3188849 ) + ), + new GroupElementPreComp( + new FieldElement( 29190488,-14659046,27549113,-1183516,3520066,-10697301,32049515,-7309113,-16109234,-9852307 ), + new FieldElement( -14744486,-9309156,735818,-598978,-20407687,-5057904,25246078,-15795669,18640741,-960977 ), + new FieldElement( -6928835,-16430795,10361374,5642961,4910474,12345252,-31638386,-494430,10530747,1053335 ) + ), + new GroupElementPreComp( + new FieldElement( -29265967,-14186805,-13538216,-12117373,-19457059,-10655384,-31462369,-2948985,24018831,15026644 ), + new FieldElement( -22592535,-3145277,-2289276,5953843,-13440189,9425631,25310643,13003497,-2314791,-15145616 ), + new FieldElement( -27419985,-603321,-8043984,-1669117,-26092265,13987819,-27297622,187899,-23166419,-2531735 ) + ), + new GroupElementPreComp( + new FieldElement( -21744398,-13810475,1844840,5021428,-10434399,-15911473,9716667,16266922,-5070217,726099 ), + new FieldElement( 29370922,-6053998,7334071,-15342259,9385287,2247707,-13661962,-4839461,30007388,-15823341 ), + new FieldElement( -936379,16086691,23751945,-543318,-1167538,-5189036,9137109,730663,9835848,4555336 ) + ), + new GroupElementPreComp( + new FieldElement( -23376435,1410446,-22253753,-12899614,30867635,15826977,17693930,544696,-11985298,12422646 ), + new FieldElement( 31117226,-12215734,-13502838,6561947,-9876867,-12757670,-5118685,-4096706,29120153,13924425 ), + new FieldElement( -17400879,-14233209,19675799,-2734756,-11006962,-5858820,-9383939,-11317700,7240931,-237388 ) + ), + new GroupElementPreComp( + new FieldElement( -31361739,-11346780,-15007447,-5856218,-22453340,-12152771,1222336,4389483,3293637,-15551743 ), + new FieldElement( -16684801,-14444245,11038544,11054958,-13801175,-3338533,-24319580,7733547,12796905,-6335822 ), + new FieldElement( -8759414,-10817836,-25418864,10783769,-30615557,-9746811,-28253339,3647836,3222231,-11160462 ) + ), + new GroupElementPreComp( + new FieldElement( 18606113,1693100,-25448386,-15170272,4112353,10045021,23603893,-2048234,-7550776,2484985 ), + new FieldElement( 9255317,-3131197,-12156162,-1004256,13098013,-9214866,16377220,-2102812,-19802075,-3034702 ), + new FieldElement( -22729289,7496160,-5742199,11329249,19991973,-3347502,-31718148,9936966,-30097688,-10618797 ) + ), + new GroupElementPreComp( + new FieldElement( 21878590,-5001297,4338336,13643897,-3036865,13160960,19708896,5415497,-7360503,-4109293 ), + new FieldElement( 27736861,10103576,12500508,8502413,-3413016,-9633558,10436918,-1550276,-23659143,-8132100 ), + new FieldElement( 19492550,-12104365,-29681976,-852630,-3208171,12403437,30066266,8367329,13243957,8709688 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( 12015105,2801261,28198131,10151021,24818120,-4743133,-11194191,-5645734,5150968,7274186 ), + new FieldElement( 2831366,-12492146,1478975,6122054,23825128,-12733586,31097299,6083058,31021603,-9793610 ), + new FieldElement( -2529932,-2229646,445613,10720828,-13849527,-11505937,-23507731,16354465,15067285,-14147707 ) + ), + new GroupElementPreComp( + new FieldElement( 7840942,14037873,-33364863,15934016,-728213,-3642706,21403988,1057586,-19379462,-12403220 ), + new FieldElement( 915865,-16469274,15608285,-8789130,-24357026,6060030,-17371319,8410997,-7220461,16527025 ), + new FieldElement( 32922597,-556987,20336074,-16184568,10903705,-5384487,16957574,52992,23834301,6588044 ) + ), + new GroupElementPreComp( + new FieldElement( 32752030,11232950,3381995,-8714866,22652988,-10744103,17159699,16689107,-20314580,-1305992 ), + new FieldElement( -4689649,9166776,-25710296,-10847306,11576752,12733943,7924251,-2752281,1976123,-7249027 ), + new FieldElement( 21251222,16309901,-2983015,-6783122,30810597,12967303,156041,-3371252,12331345,-8237197 ) + ), + new GroupElementPreComp( + new FieldElement( 8651614,-4477032,-16085636,-4996994,13002507,2950805,29054427,-5106970,10008136,-4667901 ), + new FieldElement( 31486080,15114593,-14261250,12951354,14369431,-7387845,16347321,-13662089,8684155,-10532952 ), + new FieldElement( 19443825,11385320,24468943,-9659068,-23919258,2187569,-26263207,-6086921,31316348,14219878 ) + ), + new GroupElementPreComp( + new FieldElement( -28594490,1193785,32245219,11392485,31092169,15722801,27146014,6992409,29126555,9207390 ), + new FieldElement( 32382935,1110093,18477781,11028262,-27411763,-7548111,-4980517,10843782,-7957600,-14435730 ), + new FieldElement( 2814918,7836403,27519878,-7868156,-20894015,-11553689,-21494559,8550130,28346258,1994730 ) + ), + new GroupElementPreComp( + new FieldElement( -19578299,8085545,-14000519,-3948622,2785838,-16231307,-19516951,7174894,22628102,8115180 ), + new FieldElement( -30405132,955511,-11133838,-15078069,-32447087,-13278079,-25651578,3317160,-9943017,930272 ), + new FieldElement( -15303681,-6833769,28856490,1357446,23421993,1057177,24091212,-1388970,-22765376,-10650715 ) + ), + new GroupElementPreComp( + new FieldElement( -22751231,-5303997,-12907607,-12768866,-15811511,-7797053,-14839018,-16554220,-1867018,8398970 ), + new FieldElement( -31969310,2106403,-4736360,1362501,12813763,16200670,22981545,-6291273,18009408,-15772772 ), + new FieldElement( -17220923,-9545221,-27784654,14166835,29815394,7444469,29551787,-3727419,19288549,1325865 ) + ), + new GroupElementPreComp( + new FieldElement( 15100157,-15835752,-23923978,-1005098,-26450192,15509408,12376730,-3479146,33166107,-8042750 ), + new FieldElement( 20909231,13023121,-9209752,16251778,-5778415,-8094914,12412151,10018715,2213263,-13878373 ), + new FieldElement( 32529814,-11074689,30361439,-16689753,-9135940,1513226,22922121,6382134,-5766928,8371348 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( 9923462,11271500,12616794,3544722,-29998368,-1721626,12891687,-8193132,-26442943,10486144 ), + new FieldElement( -22597207,-7012665,8587003,-8257861,4084309,-12970062,361726,2610596,-23921530,-11455195 ), + new FieldElement( 5408411,-1136691,-4969122,10561668,24145918,14240566,31319731,-4235541,19985175,-3436086 ) + ), + new GroupElementPreComp( + new FieldElement( -13994457,16616821,14549246,3341099,32155958,13648976,-17577068,8849297,65030,8370684 ), + new FieldElement( -8320926,-12049626,31204563,5839400,-20627288,-1057277,-19442942,6922164,12743482,-9800518 ), + new FieldElement( -2361371,12678785,28815050,4759974,-23893047,4884717,23783145,11038569,18800704,255233 ) + ), + new GroupElementPreComp( + new FieldElement( -5269658,-1773886,13957886,7990715,23132995,728773,13393847,9066957,19258688,-14753793 ), + new FieldElement( -2936654,-10827535,-10432089,14516793,-3640786,4372541,-31934921,2209390,-1524053,2055794 ), + new FieldElement( 580882,16705327,5468415,-2683018,-30926419,-14696000,-7203346,-8994389,-30021019,7394435 ) + ), + new GroupElementPreComp( + new FieldElement( 23838809,1822728,-15738443,15242727,8318092,-3733104,-21672180,-3492205,-4821741,14799921 ), + new FieldElement( 13345610,9759151,3371034,-16137791,16353039,8577942,31129804,13496856,-9056018,7402518 ), + new FieldElement( 2286874,-4435931,-20042458,-2008336,-13696227,5038122,11006906,-15760352,8205061,1607563 ) + ), + new GroupElementPreComp( + new FieldElement( 14414086,-8002132,3331830,-3208217,22249151,-5594188,18364661,-2906958,30019587,-9029278 ), + new FieldElement( -27688051,1585953,-10775053,931069,-29120221,-11002319,-14410829,12029093,9944378,8024 ), + new FieldElement( 4368715,-3709630,29874200,-15022983,-20230386,-11410704,-16114594,-999085,-8142388,5640030 ) + ), + new GroupElementPreComp( + new FieldElement( 10299610,13746483,11661824,16234854,7630238,5998374,9809887,-16694564,15219798,-14327783 ), + new FieldElement( 27425505,-5719081,3055006,10660664,23458024,595578,-15398605,-1173195,-18342183,9742717 ), + new FieldElement( 6744077,2427284,26042789,2720740,-847906,1118974,32324614,7406442,12420155,1994844 ) + ), + new GroupElementPreComp( + new FieldElement( 14012521,-5024720,-18384453,-9578469,-26485342,-3936439,-13033478,-10909803,24319929,-6446333 ), + new FieldElement( 16412690,-4507367,10772641,15929391,-17068788,-4658621,10555945,-10484049,-30102368,-4739048 ), + new FieldElement( 22397382,-7767684,-9293161,-12792868,17166287,-9755136,-27333065,6199366,21880021,-12250760 ) + ), + new GroupElementPreComp( + new FieldElement( -4283307,5368523,-31117018,8163389,-30323063,3209128,16557151,8890729,8840445,4957760 ), + new FieldElement( -15447727,709327,-6919446,-10870178,-29777922,6522332,-21720181,12130072,-14796503,5005757 ), + new FieldElement( -2114751,-14308128,23019042,15765735,-25269683,6002752,10183197,-13239326,-16395286,-2176112 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( -19025756,1632005,13466291,-7995100,-23640451,16573537,-32013908,-3057104,22208662,2000468 ), + new FieldElement( 3065073,-1412761,-25598674,-361432,-17683065,-5703415,-8164212,11248527,-3691214,-7414184 ), + new FieldElement( 10379208,-6045554,8877319,1473647,-29291284,-12507580,16690915,2553332,-3132688,16400289 ) + ), + new GroupElementPreComp( + new FieldElement( 15716668,1254266,-18472690,7446274,-8448918,6344164,-22097271,-7285580,26894937,9132066 ), + new FieldElement( 24158887,12938817,11085297,-8177598,-28063478,-4457083,-30576463,64452,-6817084,-2692882 ), + new FieldElement( 13488534,7794716,22236231,5989356,25426474,-12578208,2350710,-3418511,-4688006,2364226 ) + ), + new GroupElementPreComp( + new FieldElement( 16335052,9132434,25640582,6678888,1725628,8517937,-11807024,-11697457,15445875,-7798101 ), + new FieldElement( 29004207,-7867081,28661402,-640412,-12794003,-7943086,31863255,-4135540,-278050,-15759279 ), + new FieldElement( -6122061,-14866665,-28614905,14569919,-10857999,-3591829,10343412,-6976290,-29828287,-10815811 ) + ), + new GroupElementPreComp( + new FieldElement( 27081650,3463984,14099042,-4517604,1616303,-6205604,29542636,15372179,17293797,960709 ), + new FieldElement( 20263915,11434237,-5765435,11236810,13505955,-10857102,-16111345,6493122,-19384511,7639714 ), + new FieldElement( -2830798,-14839232,25403038,-8215196,-8317012,-16173699,18006287,-16043750,29994677,-15808121 ) + ), + new GroupElementPreComp( + new FieldElement( 9769828,5202651,-24157398,-13631392,-28051003,-11561624,-24613141,-13860782,-31184575,709464 ), + new FieldElement( 12286395,13076066,-21775189,-1176622,-25003198,4057652,-32018128,-8890874,16102007,13205847 ), + new FieldElement( 13733362,5599946,10557076,3195751,-5557991,8536970,-25540170,8525972,10151379,10394400 ) + ), + new GroupElementPreComp( + new FieldElement( 4024660,-16137551,22436262,12276534,-9099015,-2686099,19698229,11743039,-33302334,8934414 ), + new FieldElement( -15879800,-4525240,-8580747,-2934061,14634845,-698278,-9449077,3137094,-11536886,11721158 ), + new FieldElement( 17555939,-5013938,8268606,2331751,-22738815,9761013,9319229,8835153,-9205489,-1280045 ) + ), + new GroupElementPreComp( + new FieldElement( -461409,-7830014,20614118,16688288,-7514766,-4807119,22300304,505429,6108462,-6183415 ), + new FieldElement( -5070281,12367917,-30663534,3234473,32617080,-8422642,29880583,-13483331,-26898490,-7867459 ), + new FieldElement( -31975283,5726539,26934134,10237677,-3173717,-605053,24199304,3795095,7592688,-14992079 ) + ), + new GroupElementPreComp( + new FieldElement( 21594432,-14964228,17466408,-4077222,32537084,2739898,6407723,12018833,-28256052,4298412 ), + new FieldElement( -20650503,-11961496,-27236275,570498,3767144,-1717540,13891942,-1569194,13717174,10805743 ), + new FieldElement( -14676630,-15644296,15287174,11927123,24177847,-8175568,-796431,14860609,-26938930,-5863836 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( 12962541,5311799,-10060768,11658280,18855286,-7954201,13286263,-12808704,-4381056,9882022 ), + new FieldElement( 18512079,11319350,-20123124,15090309,18818594,5271736,-22727904,3666879,-23967430,-3299429 ), + new FieldElement( -6789020,-3146043,16192429,13241070,15898607,-14206114,-10084880,-6661110,-2403099,5276065 ) + ), + new GroupElementPreComp( + new FieldElement( 30169808,-5317648,26306206,-11750859,27814964,7069267,7152851,3684982,1449224,13082861 ), + new FieldElement( 10342826,3098505,2119311,193222,25702612,12233820,23697382,15056736,-21016438,-8202000 ), + new FieldElement( -33150110,3261608,22745853,7948688,19370557,-15177665,-26171976,6482814,-10300080,-11060101 ) + ), + new GroupElementPreComp( + new FieldElement( 32869458,-5408545,25609743,15678670,-10687769,-15471071,26112421,2521008,-22664288,6904815 ), + new FieldElement( 29506923,4457497,3377935,-9796444,-30510046,12935080,1561737,3841096,-29003639,-6657642 ), + new FieldElement( 10340844,-6630377,-18656632,-2278430,12621151,-13339055,30878497,-11824370,-25584551,5181966 ) + ), + new GroupElementPreComp( + new FieldElement( 25940115,-12658025,17324188,-10307374,-8671468,15029094,24396252,-16450922,-2322852,-12388574 ), + new FieldElement( -21765684,9916823,-1300409,4079498,-1028346,11909559,1782390,12641087,20603771,-6561742 ), + new FieldElement( -18882287,-11673380,24849422,11501709,13161720,-4768874,1925523,11914390,4662781,7820689 ) + ), + new GroupElementPreComp( + new FieldElement( 12241050,-425982,8132691,9393934,32846760,-1599620,29749456,12172924,16136752,15264020 ), + new FieldElement( -10349955,-14680563,-8211979,2330220,-17662549,-14545780,10658213,6671822,19012087,3772772 ), + new FieldElement( 3753511,-3421066,10617074,2028709,14841030,-6721664,28718732,-15762884,20527771,12988982 ) + ), + new GroupElementPreComp( + new FieldElement( -14822485,-5797269,-3707987,12689773,-898983,-10914866,-24183046,-10564943,3299665,-12424953 ), + new FieldElement( -16777703,-15253301,-9642417,4978983,3308785,8755439,6943197,6461331,-25583147,8991218 ), + new FieldElement( -17226263,1816362,-1673288,-6086439,31783888,-8175991,-32948145,7417950,-30242287,1507265 ) + ), + new GroupElementPreComp( + new FieldElement( 29692663,6829891,-10498800,4334896,20945975,-11906496,-28887608,8209391,14606362,-10647073 ), + new FieldElement( -3481570,8707081,32188102,5672294,22096700,1711240,-33020695,9761487,4170404,-2085325 ), + new FieldElement( -11587470,14855945,-4127778,-1531857,-26649089,15084046,22186522,16002000,-14276837,-8400798 ) + ), + new GroupElementPreComp( + new FieldElement( -4811456,13761029,-31703877,-2483919,-3312471,7869047,-7113572,-9620092,13240845,10965870 ), + new FieldElement( -7742563,-8256762,-14768334,-13656260,-23232383,12387166,4498947,14147411,29514390,4302863 ), + new FieldElement( -13413405,-12407859,20757302,-13801832,14785143,8976368,-5061276,-2144373,17846988,-13971927 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( -2244452,-754728,-4597030,-1066309,-6247172,1455299,-21647728,-9214789,-5222701,12650267 ), + new FieldElement( -9906797,-16070310,21134160,12198166,-27064575,708126,387813,13770293,-19134326,10958663 ), + new FieldElement( 22470984,12369526,23446014,-5441109,-21520802,-9698723,-11772496,-11574455,-25083830,4271862 ) + ), + new GroupElementPreComp( + new FieldElement( -25169565,-10053642,-19909332,15361595,-5984358,2159192,75375,-4278529,-32526221,8469673 ), + new FieldElement( 15854970,4148314,-8893890,7259002,11666551,13824734,-30531198,2697372,24154791,-9460943 ), + new FieldElement( 15446137,-15806644,29759747,14019369,30811221,-9610191,-31582008,12840104,24913809,9815020 ) + ), + new GroupElementPreComp( + new FieldElement( -4709286,-5614269,-31841498,-12288893,-14443537,10799414,-9103676,13438769,18735128,9466238 ), + new FieldElement( 11933045,9281483,5081055,-5183824,-2628162,-4905629,-7727821,-10896103,-22728655,16199064 ), + new FieldElement( 14576810,379472,-26786533,-8317236,-29426508,-10812974,-102766,1876699,30801119,2164795 ) + ), + new GroupElementPreComp( + new FieldElement( 15995086,3199873,13672555,13712240,-19378835,-4647646,-13081610,-15496269,-13492807,1268052 ), + new FieldElement( -10290614,-3659039,-3286592,10948818,23037027,3794475,-3470338,-12600221,-17055369,3565904 ), + new FieldElement( 29210088,-9419337,-5919792,-4952785,10834811,-13327726,-16512102,-10820713,-27162222,-14030531 ) + ), + new GroupElementPreComp( + new FieldElement( -13161890,15508588,16663704,-8156150,-28349942,9019123,-29183421,-3769423,2244111,-14001979 ), + new FieldElement( -5152875,-3800936,-9306475,-6071583,16243069,14684434,-25673088,-16180800,13491506,4641841 ), + new FieldElement( 10813417,643330,-19188515,-728916,30292062,-16600078,27548447,-7721242,14476989,-12767431 ) + ), + new GroupElementPreComp( + new FieldElement( 10292079,9984945,6481436,8279905,-7251514,7032743,27282937,-1644259,-27912810,12651324 ), + new FieldElement( -31185513,-813383,22271204,11835308,10201545,15351028,17099662,3988035,21721536,-3148940 ), + new FieldElement( 10202177,-6545839,-31373232,-9574638,-32150642,-8119683,-12906320,3852694,13216206,14842320 ) + ), + new GroupElementPreComp( + new FieldElement( -15815640,-10601066,-6538952,-7258995,-6984659,-6581778,-31500847,13765824,-27434397,9900184 ), + new FieldElement( 14465505,-13833331,-32133984,-14738873,-27443187,12990492,33046193,15796406,-7051866,-8040114 ), + new FieldElement( 30924417,-8279620,6359016,-12816335,16508377,9071735,-25488601,15413635,9524356,-7018878 ) + ), + new GroupElementPreComp( + new FieldElement( 12274201,-13175547,32627641,-1785326,6736625,13267305,5237659,-5109483,15663516,4035784 ), + new FieldElement( -2951309,8903985,17349946,601635,-16432815,-4612556,-13732739,-15889334,-22258478,4659091 ), + new FieldElement( -16916263,-4952973,-30393711,-15158821,20774812,15897498,5736189,15026997,-2178256,-13455585 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( -8858980,-2219056,28571666,-10155518,-474467,-10105698,-3801496,278095,23440562,-290208 ), + new FieldElement( 10226241,-5928702,15139956,120818,-14867693,5218603,32937275,11551483,-16571960,-7442864 ), + new FieldElement( 17932739,-12437276,-24039557,10749060,11316803,7535897,22503767,5561594,-3646624,3898661 ) + ), + new GroupElementPreComp( + new FieldElement( 7749907,-969567,-16339731,-16464,-25018111,15122143,-1573531,7152530,21831162,1245233 ), + new FieldElement( 26958459,-14658026,4314586,8346991,-5677764,11960072,-32589295,-620035,-30402091,-16716212 ), + new FieldElement( -12165896,9166947,33491384,13673479,29787085,13096535,6280834,14587357,-22338025,13987525 ) + ), + new GroupElementPreComp( + new FieldElement( -24349909,7778775,21116000,15572597,-4833266,-5357778,-4300898,-5124639,-7469781,-2858068 ), + new FieldElement( 9681908,-6737123,-31951644,13591838,-6883821,386950,31622781,6439245,-14581012,4091397 ), + new FieldElement( -8426427,1470727,-28109679,-1596990,3978627,-5123623,-19622683,12092163,29077877,-14741988 ) + ), + new GroupElementPreComp( + new FieldElement( 5269168,-6859726,-13230211,-8020715,25932563,1763552,-5606110,-5505881,-20017847,2357889 ), + new FieldElement( 32264008,-15407652,-5387735,-1160093,-2091322,-3946900,23104804,-12869908,5727338,189038 ), + new FieldElement( 14609123,-8954470,-6000566,-16622781,-14577387,-7743898,-26745169,10942115,-25888931,-14884697 ) + ), + new GroupElementPreComp( + new FieldElement( 20513500,5557931,-15604613,7829531,26413943,-2019404,-21378968,7471781,13913677,-5137875 ), + new FieldElement( -25574376,11967826,29233242,12948236,-6754465,4713227,-8940970,14059180,12878652,8511905 ), + new FieldElement( -25656801,3393631,-2955415,-7075526,-2250709,9366908,-30223418,6812974,5568676,-3127656 ) + ), + new GroupElementPreComp( + new FieldElement( 11630004,12144454,2116339,13606037,27378885,15676917,-17408753,-13504373,-14395196,8070818 ), + new FieldElement( 27117696,-10007378,-31282771,-5570088,1127282,12772488,-29845906,10483306,-11552749,-1028714 ), + new FieldElement( 10637467,-5688064,5674781,1072708,-26343588,-6982302,-1683975,9177853,-27493162,15431203 ) + ), + new GroupElementPreComp( + new FieldElement( 20525145,10892566,-12742472,12779443,-29493034,16150075,-28240519,14943142,-15056790,-7935931 ), + new FieldElement( -30024462,5626926,-551567,-9981087,753598,11981191,25244767,-3239766,-3356550,9594024 ), + new FieldElement( -23752644,2636870,-5163910,-10103818,585134,7877383,11345683,-6492290,13352335,-10977084 ) + ), + new GroupElementPreComp( + new FieldElement( -1931799,-5407458,3304649,-12884869,17015806,-4877091,-29783850,-7752482,-13215537,-319204 ), + new FieldElement( 20239939,6607058,6203985,3483793,-18386976,-779229,-20723742,15077870,-22750759,14523817 ), + new FieldElement( 27406042,-6041657,27423596,-4497394,4996214,10002360,-28842031,-4545494,-30172742,-4805667 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( 11374242,12660715,17861383,-12540833,10935568,1099227,-13886076,-9091740,-27727044,11358504 ), + new FieldElement( -12730809,10311867,1510375,10778093,-2119455,-9145702,32676003,11149336,-26123651,4985768 ), + new FieldElement( -19096303,341147,-6197485,-239033,15756973,-8796662,-983043,13794114,-19414307,-15621255 ) + ), + new GroupElementPreComp( + new FieldElement( 6490081,11940286,25495923,-7726360,8668373,-8751316,3367603,6970005,-1691065,-9004790 ), + new FieldElement( 1656497,13457317,15370807,6364910,13605745,8362338,-19174622,-5475723,-16796596,-5031438 ), + new FieldElement( -22273315,-13524424,-64685,-4334223,-18605636,-10921968,-20571065,-7007978,-99853,-10237333 ) + ), + new GroupElementPreComp( + new FieldElement( 17747465,10039260,19368299,-4050591,-20630635,-16041286,31992683,-15857976,-29260363,-5511971 ), + new FieldElement( 31932027,-4986141,-19612382,16366580,22023614,88450,11371999,-3744247,4882242,-10626905 ), + new FieldElement( 29796507,37186,19818052,10115756,-11829032,3352736,18551198,3272828,-5190932,-4162409 ) + ), + new GroupElementPreComp( + new FieldElement( 12501286,4044383,-8612957,-13392385,-32430052,5136599,-19230378,-3529697,330070,-3659409 ), + new FieldElement( 6384877,2899513,17807477,7663917,-2358888,12363165,25366522,-8573892,-271295,12071499 ), + new FieldElement( -8365515,-4042521,25133448,-4517355,-6211027,2265927,-32769618,1936675,-5159697,3829363 ) + ), + new GroupElementPreComp( + new FieldElement( 28425966,-5835433,-577090,-4697198,-14217555,6870930,7921550,-6567787,26333140,14267664 ), + new FieldElement( -11067219,11871231,27385719,-10559544,-4585914,-11189312,10004786,-8709488,-21761224,8930324 ), + new FieldElement( -21197785,-16396035,25654216,-1725397,12282012,11008919,1541940,4757911,-26491501,-16408940 ) + ), + new GroupElementPreComp( + new FieldElement( 13537262,-7759490,-20604840,10961927,-5922820,-13218065,-13156584,6217254,-15943699,13814990 ), + new FieldElement( -17422573,15157790,18705543,29619,24409717,-260476,27361681,9257833,-1956526,-1776914 ), + new FieldElement( -25045300,-10191966,15366585,15166509,-13105086,8423556,-29171540,12361135,-18685978,4578290 ) + ), + new GroupElementPreComp( + new FieldElement( 24579768,3711570,1342322,-11180126,-27005135,14124956,-22544529,14074919,21964432,8235257 ), + new FieldElement( -6528613,-2411497,9442966,-5925588,12025640,-1487420,-2981514,-1669206,13006806,2355433 ), + new FieldElement( -16304899,-13605259,-6632427,-5142349,16974359,-10911083,27202044,1719366,1141648,-12796236 ) + ), + new GroupElementPreComp( + new FieldElement( -12863944,-13219986,-8318266,-11018091,-6810145,-4843894,13475066,-3133972,32674895,13715045 ), + new FieldElement( 11423335,-5468059,32344216,8962751,24989809,9241752,-13265253,16086212,-28740881,-15642093 ), + new FieldElement( -1409668,12530728,-6368726,10847387,19531186,-14132160,-11709148,7791794,-27245943,4383347 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( -28970898,5271447,-1266009,-9736989,-12455236,16732599,-4862407,-4906449,27193557,6245191 ), + new FieldElement( -15193956,5362278,-1783893,2695834,4960227,12840725,23061898,3260492,22510453,8577507 ), + new FieldElement( -12632451,11257346,-32692994,13548177,-721004,10879011,31168030,13952092,-29571492,-3635906 ) + ), + new GroupElementPreComp( + new FieldElement( 3877321,-9572739,32416692,5405324,-11004407,-13656635,3759769,11935320,5611860,8164018 ), + new FieldElement( -16275802,14667797,15906460,12155291,-22111149,-9039718,32003002,-8832289,5773085,-8422109 ), + new FieldElement( -23788118,-8254300,1950875,8937633,18686727,16459170,-905725,12376320,31632953,190926 ) + ), + new GroupElementPreComp( + new FieldElement( -24593607,-16138885,-8423991,13378746,14162407,6901328,-8288749,4508564,-25341555,-3627528 ), + new FieldElement( 8884438,-5884009,6023974,10104341,-6881569,-4941533,18722941,-14786005,-1672488,827625 ), + new FieldElement( -32720583,-16289296,-32503547,7101210,13354605,2659080,-1800575,-14108036,-24878478,1541286 ) + ), + new GroupElementPreComp( + new FieldElement( 2901347,-1117687,3880376,-10059388,-17620940,-3612781,-21802117,-3567481,20456845,-1885033 ), + new FieldElement( 27019610,12299467,-13658288,-1603234,-12861660,-4861471,-19540150,-5016058,29439641,15138866 ), + new FieldElement( 21536104,-6626420,-32447818,-10690208,-22408077,5175814,-5420040,-16361163,7779328,109896 ) + ), + new GroupElementPreComp( + new FieldElement( 30279744,14648750,-8044871,6425558,13639621,-743509,28698390,12180118,23177719,-554075 ), + new FieldElement( 26572847,3405927,-31701700,12890905,-19265668,5335866,-6493768,2378492,4439158,-13279347 ), + new FieldElement( -22716706,3489070,-9225266,-332753,18875722,-1140095,14819434,-12731527,-17717757,-5461437 ) + ), + new GroupElementPreComp( + new FieldElement( -5056483,16566551,15953661,3767752,-10436499,15627060,-820954,2177225,8550082,-15114165 ), + new FieldElement( -18473302,16596775,-381660,15663611,22860960,15585581,-27844109,-3582739,-23260460,-8428588 ), + new FieldElement( -32480551,15707275,-8205912,-5652081,29464558,2713815,-22725137,15860482,-21902570,1494193 ) + ), + new GroupElementPreComp( + new FieldElement( -19562091,-14087393,-25583872,-9299552,13127842,759709,21923482,16529112,8742704,12967017 ), + new FieldElement( -28464899,1553205,32536856,-10473729,-24691605,-406174,-8914625,-2933896,-29903758,15553883 ), + new FieldElement( 21877909,3230008,9881174,10539357,-4797115,2841332,11543572,14513274,19375923,-12647961 ) + ), + new GroupElementPreComp( + new FieldElement( 8832269,-14495485,13253511,5137575,5037871,4078777,24880818,-6222716,2862653,9455043 ), + new FieldElement( 29306751,5123106,20245049,-14149889,9592566,8447059,-2077124,-2990080,15511449,4789663 ), + new FieldElement( -20679756,7004547,8824831,-9434977,-4045704,-3750736,-5754762,108893,23513200,16652362 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( -33256173,4144782,-4476029,-6579123,10770039,-7155542,-6650416,-12936300,-18319198,10212860 ), + new FieldElement( 2756081,8598110,7383731,-6859892,22312759,-1105012,21179801,2600940,-9988298,-12506466 ), + new FieldElement( -24645692,13317462,-30449259,-15653928,21365574,-10869657,11344424,864440,-2499677,-16710063 ) + ), + new GroupElementPreComp( + new FieldElement( -26432803,6148329,-17184412,-14474154,18782929,-275997,-22561534,211300,2719757,4940997 ), + new FieldElement( -1323882,3911313,-6948744,14759765,-30027150,7851207,21690126,8518463,26699843,5276295 ), + new FieldElement( -13149873,-6429067,9396249,365013,24703301,-10488939,1321586,149635,-15452774,7159369 ) + ), + new GroupElementPreComp( + new FieldElement( 9987780,-3404759,17507962,9505530,9731535,-2165514,22356009,8312176,22477218,-8403385 ), + new FieldElement( 18155857,-16504990,19744716,9006923,15154154,-10538976,24256460,-4864995,-22548173,9334109 ), + new FieldElement( 2986088,-4911893,10776628,-3473844,10620590,-7083203,-21413845,14253545,-22587149,536906 ) + ), + new GroupElementPreComp( + new FieldElement( 4377756,8115836,24567078,15495314,11625074,13064599,7390551,10589625,10838060,-15420424 ), + new FieldElement( -19342404,867880,9277171,-3218459,-14431572,-1986443,19295826,-15796950,6378260,699185 ), + new FieldElement( 7895026,4057113,-7081772,-13077756,-17886831,-323126,-716039,15693155,-5045064,-13373962 ) + ), + new GroupElementPreComp( + new FieldElement( -7737563,-5869402,-14566319,-7406919,11385654,13201616,31730678,-10962840,-3918636,-9669325 ), + new FieldElement( 10188286,-15770834,-7336361,13427543,22223443,14896287,30743455,7116568,-21786507,5427593 ), + new FieldElement( 696102,13206899,27047647,-10632082,15285305,-9853179,10798490,-4578720,19236243,12477404 ) + ), + new GroupElementPreComp( + new FieldElement( -11229439,11243796,-17054270,-8040865,-788228,-8167967,-3897669,11180504,-23169516,7733644 ), + new FieldElement( 17800790,-14036179,-27000429,-11766671,23887827,3149671,23466177,-10538171,10322027,15313801 ), + new FieldElement( 26246234,11968874,32263343,-5468728,6830755,-13323031,-15794704,-101982,-24449242,10890804 ) + ), + new GroupElementPreComp( + new FieldElement( -31365647,10271363,-12660625,-6267268,16690207,-13062544,-14982212,16484931,25180797,-5334884 ), + new FieldElement( -586574,10376444,-32586414,-11286356,19801893,10997610,2276632,9482883,316878,13820577 ), + new FieldElement( -9882808,-4510367,-2115506,16457136,-11100081,11674996,30756178,-7515054,30696930,-3712849 ) + ), + new GroupElementPreComp( + new FieldElement( 32988917,-9603412,12499366,7910787,-10617257,-11931514,-7342816,-9985397,-32349517,7392473 ), + new FieldElement( -8855661,15927861,9866406,-3649411,-2396914,-16655781,-30409476,-9134995,25112947,-2926644 ), + new FieldElement( -2504044,-436966,25621774,-5678772,15085042,-5479877,-24884878,-13526194,5537438,-13914319 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( -11225584,2320285,-9584280,10149187,-33444663,5808648,-14876251,-1729667,31234590,6090599 ), + new FieldElement( -9633316,116426,26083934,2897444,-6364437,-2688086,609721,15878753,-6970405,-9034768 ), + new FieldElement( -27757857,247744,-15194774,-9002551,23288161,-10011936,-23869595,6503646,20650474,1804084 ) + ), + new GroupElementPreComp( + new FieldElement( -27589786,15456424,8972517,8469608,15640622,4439847,3121995,-10329713,27842616,-202328 ), + new FieldElement( -15306973,2839644,22530074,10026331,4602058,5048462,28248656,5031932,-11375082,12714369 ), + new FieldElement( 20807691,-7270825,29286141,11421711,-27876523,-13868230,-21227475,1035546,-19733229,12796920 ) + ), + new GroupElementPreComp( + new FieldElement( 12076899,-14301286,-8785001,-11848922,-25012791,16400684,-17591495,-12899438,3480665,-15182815 ), + new FieldElement( -32361549,5457597,28548107,7833186,7303070,-11953545,-24363064,-15921875,-33374054,2771025 ), + new FieldElement( -21389266,421932,26597266,6860826,22486084,-6737172,-17137485,-4210226,-24552282,15673397 ) + ), + new GroupElementPreComp( + new FieldElement( -20184622,2338216,19788685,-9620956,-4001265,-8740893,-20271184,4733254,3727144,-12934448 ), + new FieldElement( 6120119,814863,-11794402,-622716,6812205,-15747771,2019594,7975683,31123697,-10958981 ), + new FieldElement( 30069250,-11435332,30434654,2958439,18399564,-976289,12296869,9204260,-16432438,9648165 ) + ), + new GroupElementPreComp( + new FieldElement( 32705432,-1550977,30705658,7451065,-11805606,9631813,3305266,5248604,-26008332,-11377501 ), + new FieldElement( 17219865,2375039,-31570947,-5575615,-19459679,9219903,294711,15298639,2662509,-16297073 ), + new FieldElement( -1172927,-7558695,-4366770,-4287744,-21346413,-8434326,32087529,-1222777,32247248,-14389861 ) + ), + new GroupElementPreComp( + new FieldElement( 14312628,1221556,17395390,-8700143,-4945741,-8684635,-28197744,-9637817,-16027623,-13378845 ), + new FieldElement( -1428825,-9678990,-9235681,6549687,-7383069,-468664,23046502,9803137,17597934,2346211 ), + new FieldElement( 18510800,15337574,26171504,981392,-22241552,7827556,-23491134,-11323352,3059833,-11782870 ) + ), + new GroupElementPreComp( + new FieldElement( 10141598,6082907,17829293,-1947643,9830092,13613136,-25556636,-5544586,-33502212,3592096 ), + new FieldElement( 33114168,-15889352,-26525686,-13343397,33076705,8716171,1151462,1521897,-982665,-6837803 ), + new FieldElement( -32939165,-4255815,23947181,-324178,-33072974,-12305637,-16637686,3891704,26353178,693168 ) + ), + new GroupElementPreComp( + new FieldElement( 30374239,1595580,-16884039,13186931,4600344,406904,9585294,-400668,31375464,14369965 ), + new FieldElement( -14370654,-7772529,1510301,6434173,-18784789,-6262728,32732230,-13108839,17901441,16011505 ), + new FieldElement( 18171223,-11934626,-12500402,15197122,-11038147,-15230035,-19172240,-16046376,8764035,12309598 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( 5975908,-5243188,-19459362,-9681747,-11541277,14015782,-23665757,1228319,17544096,-10593782 ), + new FieldElement( 5811932,-1715293,3442887,-2269310,-18367348,-8359541,-18044043,-15410127,-5565381,12348900 ), + new FieldElement( -31399660,11407555,25755363,6891399,-3256938,14872274,-24849353,8141295,-10632534,-585479 ) + ), + new GroupElementPreComp( + new FieldElement( -12675304,694026,-5076145,13300344,14015258,-14451394,-9698672,-11329050,30944593,1130208 ), + new FieldElement( 8247766,-6710942,-26562381,-7709309,-14401939,-14648910,4652152,2488540,23550156,-271232 ), + new FieldElement( 17294316,-3788438,7026748,15626851,22990044,113481,2267737,-5908146,-408818,-137719 ) + ), + new GroupElementPreComp( + new FieldElement( 16091085,-16253926,18599252,7340678,2137637,-1221657,-3364161,14550936,3260525,-7166271 ), + new FieldElement( -4910104,-13332887,18550887,10864893,-16459325,-7291596,-23028869,-13204905,-12748722,2701326 ), + new FieldElement( -8574695,16099415,4629974,-16340524,-20786213,-6005432,-10018363,9276971,11329923,1862132 ) + ), + new GroupElementPreComp( + new FieldElement( 14763076,-15903608,-30918270,3689867,3511892,10313526,-21951088,12219231,-9037963,-940300 ), + new FieldElement( 8894987,-3446094,6150753,3013931,301220,15693451,-31981216,-2909717,-15438168,11595570 ), + new FieldElement( 15214962,3537601,-26238722,-14058872,4418657,-15230761,13947276,10730794,-13489462,-4363670 ) + ), + new GroupElementPreComp( + new FieldElement( -2538306,7682793,32759013,263109,-29984731,-7955452,-22332124,-10188635,977108,699994 ), + new FieldElement( -12466472,4195084,-9211532,550904,-15565337,12917920,19118110,-439841,-30534533,-14337913 ), + new FieldElement( 31788461,-14507657,4799989,7372237,8808585,-14747943,9408237,-10051775,12493932,-5409317 ) + ), + new GroupElementPreComp( + new FieldElement( -25680606,5260744,-19235809,-6284470,-3695942,16566087,27218280,2607121,29375955,6024730 ), + new FieldElement( 842132,-2794693,-4763381,-8722815,26332018,-12405641,11831880,6985184,-9940361,2854096 ), + new FieldElement( -4847262,-7969331,2516242,-5847713,9695691,-7221186,16512645,960770,12121869,16648078 ) + ), + new GroupElementPreComp( + new FieldElement( -15218652,14667096,-13336229,2013717,30598287,-464137,-31504922,-7882064,20237806,2838411 ), + new FieldElement( -19288047,4453152,15298546,-16178388,22115043,-15972604,12544294,-13470457,1068881,-12499905 ), + new FieldElement( -9558883,-16518835,33238498,13506958,30505848,-1114596,-8486907,-2630053,12521378,4845654 ) + ), + new GroupElementPreComp( + new FieldElement( -28198521,10744108,-2958380,10199664,7759311,-13088600,3409348,-873400,-6482306,-12885870 ), + new FieldElement( -23561822,6230156,-20382013,10655314,-24040585,-11621172,10477734,-1240216,-3113227,13974498 ), + new FieldElement( 12966261,15550616,-32038948,-1615346,21025980,-629444,5642325,7188737,18895762,12629579 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( 14741879,-14946887,22177208,-11721237,1279741,8058600,11758140,789443,32195181,3895677 ), + new FieldElement( 10758205,15755439,-4509950,9243698,-4879422,6879879,-2204575,-3566119,-8982069,4429647 ), + new FieldElement( -2453894,15725973,-20436342,-10410672,-5803908,-11040220,-7135870,-11642895,18047436,-15281743 ) + ), + new GroupElementPreComp( + new FieldElement( -25173001,-11307165,29759956,11776784,-22262383,-15820455,10993114,-12850837,-17620701,-9408468 ), + new FieldElement( 21987233,700364,-24505048,14972008,-7774265,-5718395,32155026,2581431,-29958985,8773375 ), + new FieldElement( -25568350,454463,-13211935,16126715,25240068,8594567,20656846,12017935,-7874389,-13920155 ) + ), + new GroupElementPreComp( + new FieldElement( 6028182,6263078,-31011806,-11301710,-818919,2461772,-31841174,-5468042,-1721788,-2776725 ), + new FieldElement( -12278994,16624277,987579,-5922598,32908203,1248608,7719845,-4166698,28408820,6816612 ), + new FieldElement( -10358094,-8237829,19549651,-12169222,22082623,16147817,20613181,13982702,-10339570,5067943 ) + ), + new GroupElementPreComp( + new FieldElement( -30505967,-3821767,12074681,13582412,-19877972,2443951,-19719286,12746132,5331210,-10105944 ), + new FieldElement( 30528811,3601899,-1957090,4619785,-27361822,-15436388,24180793,-12570394,27679908,-1648928 ), + new FieldElement( 9402404,-13957065,32834043,10838634,-26580150,-13237195,26653274,-8685565,22611444,-12715406 ) + ), + new GroupElementPreComp( + new FieldElement( 22190590,1118029,22736441,15130463,-30460692,-5991321,19189625,-4648942,4854859,6622139 ), + new FieldElement( -8310738,-2953450,-8262579,-3388049,-10401731,-271929,13424426,-3567227,26404409,13001963 ), + new FieldElement( -31241838,-15415700,-2994250,8939346,11562230,-12840670,-26064365,-11621720,-15405155,11020693 ) + ), + new GroupElementPreComp( + new FieldElement( 1866042,-7949489,-7898649,-10301010,12483315,13477547,3175636,-12424163,28761762,1406734 ), + new FieldElement( -448555,-1777666,13018551,3194501,-9580420,-11161737,24760585,-4347088,25577411,-13378680 ), + new FieldElement( -24290378,4759345,-690653,-1852816,2066747,10693769,-29595790,9884936,-9368926,4745410 ) + ), + new GroupElementPreComp( + new FieldElement( -9141284,6049714,-19531061,-4341411,-31260798,9944276,-15462008,-11311852,10931924,-11931931 ), + new FieldElement( -16561513,14112680,-8012645,4817318,-8040464,-11414606,-22853429,10856641,-20470770,13434654 ), + new FieldElement( 22759489,-10073434,-16766264,-1871422,13637442,-10168091,1765144,-12654326,28445307,-5364710 ) + ), + new GroupElementPreComp( + new FieldElement( 29875063,12493613,2795536,-3786330,1710620,15181182,-10195717,-8788675,9074234,1167180 ), + new FieldElement( -26205683,11014233,-9842651,-2635485,-26908120,7532294,-18716888,-9535498,3843903,9367684 ), + new FieldElement( -10969595,-6403711,9591134,9582310,11349256,108879,16235123,8601684,-139197,4242895 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( 22092954,-13191123,-2042793,-11968512,32186753,-11517388,-6574341,2470660,-27417366,16625501 ), + new FieldElement( -11057722,3042016,13770083,-9257922,584236,-544855,-7770857,2602725,-27351616,14247413 ), + new FieldElement( 6314175,-10264892,-32772502,15957557,-10157730,168750,-8618807,14290061,27108877,-1180880 ) + ), + new GroupElementPreComp( + new FieldElement( -8586597,-7170966,13241782,10960156,-32991015,-13794596,33547976,-11058889,-27148451,981874 ), + new FieldElement( 22833440,9293594,-32649448,-13618667,-9136966,14756819,-22928859,-13970780,-10479804,-16197962 ), + new FieldElement( -7768587,3326786,-28111797,10783824,19178761,14905060,22680049,13906969,-15933690,3797899 ) + ), + new GroupElementPreComp( + new FieldElement( 21721356,-4212746,-12206123,9310182,-3882239,-13653110,23740224,-2709232,20491983,-8042152 ), + new FieldElement( 9209270,-15135055,-13256557,-6167798,-731016,15289673,25947805,15286587,30997318,-6703063 ), + new FieldElement( 7392032,16618386,23946583,-8039892,-13265164,-1533858,-14197445,-2321576,17649998,-250080 ) + ), + new GroupElementPreComp( + new FieldElement( -9301088,-14193827,30609526,-3049543,-25175069,-1283752,-15241566,-9525724,-2233253,7662146 ), + new FieldElement( -17558673,1763594,-33114336,15908610,-30040870,-12174295,7335080,-8472199,-3174674,3440183 ), + new FieldElement( -19889700,-5977008,-24111293,-9688870,10799743,-16571957,40450,-4431835,4862400,1133 ) + ), + new GroupElementPreComp( + new FieldElement( -32856209,-7873957,-5422389,14860950,-16319031,7956142,7258061,311861,-30594991,-7379421 ), + new FieldElement( -3773428,-1565936,28985340,7499440,24445838,9325937,29727763,16527196,18278453,15405622 ), + new FieldElement( -4381906,8508652,-19898366,-3674424,-5984453,15149970,-13313598,843523,-21875062,13626197 ) + ), + new GroupElementPreComp( + new FieldElement( 2281448,-13487055,-10915418,-2609910,1879358,16164207,-10783882,3953792,13340839,15928663 ), + new FieldElement( 31727126,-7179855,-18437503,-8283652,2875793,-16390330,-25269894,-7014826,-23452306,5964753 ), + new FieldElement( 4100420,-5959452,-17179337,6017714,-18705837,12227141,-26684835,11344144,2538215,-7570755 ) + ), + new GroupElementPreComp( + new FieldElement( -9433605,6123113,11159803,-2156608,30016280,14966241,-20474983,1485421,-629256,-15958862 ), + new FieldElement( -26804558,4260919,11851389,9658551,-32017107,16367492,-20205425,-13191288,11659922,-11115118 ), + new FieldElement( 26180396,10015009,-30844224,-8581293,5418197,9480663,2231568,-10170080,33100372,-1306171 ) + ), + new GroupElementPreComp( + new FieldElement( 15121113,-5201871,-10389905,15427821,-27509937,-15992507,21670947,4486675,-5931810,-14466380 ), + new FieldElement( 16166486,-9483733,-11104130,6023908,-31926798,-1364923,2340060,-16254968,-10735770,-10039824 ), + new FieldElement( 28042865,-3557089,-12126526,12259706,-3717498,-6945899,6766453,-8689599,18036436,5803270 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( -817581,6763912,11803561,1585585,10958447,-2671165,23855391,4598332,-6159431,-14117438 ), + new FieldElement( -31031306,-14256194,17332029,-2383520,31312682,-5967183,696309,50292,-20095739,11763584 ), + new FieldElement( -594563,-2514283,-32234153,12643980,12650761,14811489,665117,-12613632,-19773211,-10713562 ) + ), + new GroupElementPreComp( + new FieldElement( 30464590,-11262872,-4127476,-12734478,19835327,-7105613,-24396175,2075773,-17020157,992471 ), + new FieldElement( 18357185,-6994433,7766382,16342475,-29324918,411174,14578841,8080033,-11574335,-10601610 ), + new FieldElement( 19598397,10334610,12555054,2555664,18821899,-10339780,21873263,16014234,26224780,16452269 ) + ), + new GroupElementPreComp( + new FieldElement( -30223925,5145196,5944548,16385966,3976735,2009897,-11377804,-7618186,-20533829,3698650 ), + new FieldElement( 14187449,3448569,-10636236,-10810935,-22663880,-3433596,7268410,-10890444,27394301,12015369 ), + new FieldElement( 19695761,16087646,28032085,12999827,6817792,11427614,20244189,-1312777,-13259127,-3402461 ) + ), + new GroupElementPreComp( + new FieldElement( 30860103,12735208,-1888245,-4699734,-16974906,2256940,-8166013,12298312,-8550524,-10393462 ), + new FieldElement( -5719826,-11245325,-1910649,15569035,26642876,-7587760,-5789354,-15118654,-4976164,12651793 ), + new FieldElement( -2848395,9953421,11531313,-5282879,26895123,-12697089,-13118820,-16517902,9768698,-2533218 ) + ), + new GroupElementPreComp( + new FieldElement( -24719459,1894651,-287698,-4704085,15348719,-8156530,32767513,12765450,4940095,10678226 ), + new FieldElement( 18860224,15980149,-18987240,-1562570,-26233012,-11071856,-7843882,13944024,-24372348,16582019 ), + new FieldElement( -15504260,4970268,-29893044,4175593,-20993212,-2199756,-11704054,15444560,-11003761,7989037 ) + ), + new GroupElementPreComp( + new FieldElement( 31490452,5568061,-2412803,2182383,-32336847,4531686,-32078269,6200206,-19686113,-14800171 ), + new FieldElement( -17308668,-15879940,-31522777,-2831,-32887382,16375549,8680158,-16371713,28550068,-6857132 ), + new FieldElement( -28126887,-5688091,16837845,-1820458,-6850681,12700016,-30039981,4364038,1155602,5988841 ) + ), + new GroupElementPreComp( + new FieldElement( 21890435,-13272907,-12624011,12154349,-7831873,15300496,23148983,-4470481,24618407,8283181 ), + new FieldElement( -33136107,-10512751,9975416,6841041,-31559793,16356536,3070187,-7025928,1466169,10740210 ), + new FieldElement( -1509399,-15488185,-13503385,-10655916,32799044,909394,-13938903,-5779719,-32164649,-15327040 ) + ), + new GroupElementPreComp( + new FieldElement( 3960823,-14267803,-28026090,-15918051,-19404858,13146868,15567327,951507,-3260321,-573935 ), + new FieldElement( 24740841,5052253,-30094131,8961361,25877428,6165135,-24368180,14397372,-7380369,-6144105 ), + new FieldElement( -28888365,3510803,-28103278,-1158478,-11238128,-10631454,-15441463,-14453128,-1625486,-6494814 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( 793299,-9230478,8836302,-6235707,-27360908,-2369593,33152843,-4885251,-9906200,-621852 ), + new FieldElement( 5666233,525582,20782575,-8038419,-24538499,14657740,16099374,1468826,-6171428,-15186581 ), + new FieldElement( -4859255,-3779343,-2917758,-6748019,7778750,11688288,-30404353,-9871238,-1558923,-9863646 ) + ), + new GroupElementPreComp( + new FieldElement( 10896332,-7719704,824275,472601,-19460308,3009587,25248958,14783338,-30581476,-15757844 ), + new FieldElement( 10566929,12612572,-31944212,11118703,-12633376,12362879,21752402,8822496,24003793,14264025 ), + new FieldElement( 27713862,-7355973,-11008240,9227530,27050101,2504721,23886875,-13117525,13958495,-5732453 ) + ), + new GroupElementPreComp( + new FieldElement( -23481610,4867226,-27247128,3900521,29838369,-8212291,-31889399,-10041781,7340521,-15410068 ), + new FieldElement( 4646514,-8011124,-22766023,-11532654,23184553,8566613,31366726,-1381061,-15066784,-10375192 ), + new FieldElement( -17270517,12723032,-16993061,14878794,21619651,-6197576,27584817,3093888,-8843694,3849921 ) + ), + new GroupElementPreComp( + new FieldElement( -9064912,2103172,25561640,-15125738,-5239824,9582958,32477045,-9017955,5002294,-15550259 ), + new FieldElement( -12057553,-11177906,21115585,-13365155,8808712,-12030708,16489530,13378448,-25845716,12741426 ), + new FieldElement( -5946367,10645103,-30911586,15390284,-3286982,-7118677,24306472,15852464,28834118,-7646072 ) + ), + new GroupElementPreComp( + new FieldElement( -17335748,-9107057,-24531279,9434953,-8472084,-583362,-13090771,455841,20461858,5491305 ), + new FieldElement( 13669248,-16095482,-12481974,-10203039,-14569770,-11893198,-24995986,11293807,-28588204,-9421832 ), + new FieldElement( 28497928,6272777,-33022994,14470570,8906179,-1225630,18504674,-14165166,29867745,-8795943 ) + ), + new GroupElementPreComp( + new FieldElement( -16207023,13517196,-27799630,-13697798,24009064,-6373891,-6367600,-13175392,22853429,-4012011 ), + new FieldElement( 24191378,16712145,-13931797,15217831,14542237,1646131,18603514,-11037887,12876623,-2112447 ), + new FieldElement( 17902668,4518229,-411702,-2829247,26878217,5258055,-12860753,608397,16031844,3723494 ) + ), + new GroupElementPreComp( + new FieldElement( -28632773,12763728,-20446446,7577504,33001348,-13017745,17558842,-7872890,23896954,-4314245 ), + new FieldElement( -20005381,-12011952,31520464,605201,2543521,5991821,-2945064,7229064,-9919646,-8826859 ), + new FieldElement( 28816045,298879,-28165016,-15920938,19000928,-1665890,-12680833,-2949325,-18051778,-2082915 ) + ), + new GroupElementPreComp( + new FieldElement( 16000882,-344896,3493092,-11447198,-29504595,-13159789,12577740,16041268,-19715240,7847707 ), + new FieldElement( 10151868,10572098,27312476,7922682,14825339,4723128,-32855931,-6519018,-10020567,3852848 ), + new FieldElement( -11430470,15697596,-21121557,-4420647,5386314,15063598,16514493,-15932110,29330899,-15076224 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( -25499735,-4378794,-15222908,-6901211,16615731,2051784,3303702,15490,-27548796,12314391 ), + new FieldElement( 15683520,-6003043,18109120,-9980648,15337968,-5997823,-16717435,15921866,16103996,-3731215 ), + new FieldElement( -23169824,-10781249,13588192,-1628807,-3798557,-1074929,-19273607,5402699,-29815713,-9841101 ) + ), + new GroupElementPreComp( + new FieldElement( 23190676,2384583,-32714340,3462154,-29903655,-1529132,-11266856,8911517,-25205859,2739713 ), + new FieldElement( 21374101,-3554250,-33524649,9874411,15377179,11831242,-33529904,6134907,4931255,11987849 ), + new FieldElement( -7732,-2978858,-16223486,7277597,105524,-322051,-31480539,13861388,-30076310,10117930 ) + ), + new GroupElementPreComp( + new FieldElement( -29501170,-10744872,-26163768,13051539,-25625564,5089643,-6325503,6704079,12890019,15728940 ), + new FieldElement( -21972360,-11771379,-951059,-4418840,14704840,2695116,903376,-10428139,12885167,8311031 ), + new FieldElement( -17516482,5352194,10384213,-13811658,7506451,13453191,26423267,4384730,1888765,-5435404 ) + ), + new GroupElementPreComp( + new FieldElement( -25817338,-3107312,-13494599,-3182506,30896459,-13921729,-32251644,-12707869,-19464434,-3340243 ), + new FieldElement( -23607977,-2665774,-526091,4651136,5765089,4618330,6092245,14845197,17151279,-9854116 ), + new FieldElement( -24830458,-12733720,-15165978,10367250,-29530908,-265356,22825805,-7087279,-16866484,16176525 ) + ), + new GroupElementPreComp( + new FieldElement( -23583256,6564961,20063689,3798228,-4740178,7359225,2006182,-10363426,-28746253,-10197509 ), + new FieldElement( -10626600,-4486402,-13320562,-5125317,3432136,-6393229,23632037,-1940610,32808310,1099883 ), + new FieldElement( 15030977,5768825,-27451236,-2887299,-6427378,-15361371,-15277896,-6809350,2051441,-15225865 ) + ), + new GroupElementPreComp( + new FieldElement( -3362323,-7239372,7517890,9824992,23555850,295369,5148398,-14154188,-22686354,16633660 ), + new FieldElement( 4577086,-16752288,13249841,-15304328,19958763,-14537274,18559670,-10759549,8402478,-9864273 ), + new FieldElement( -28406330,-1051581,-26790155,-907698,-17212414,-11030789,9453451,-14980072,17983010,9967138 ) + ), + new GroupElementPreComp( + new FieldElement( -25762494,6524722,26585488,9969270,24709298,1220360,-1677990,7806337,17507396,3651560 ), + new FieldElement( -10420457,-4118111,14584639,15971087,-15768321,8861010,26556809,-5574557,-18553322,-11357135 ), + new FieldElement( 2839101,14284142,4029895,3472686,14402957,12689363,-26642121,8459447,-5605463,-7621941 ) + ), + new GroupElementPreComp( + new FieldElement( -4839289,-3535444,9744961,2871048,25113978,3187018,-25110813,-849066,17258084,-7977739 ), + new FieldElement( 18164541,-10595176,-17154882,-1542417,19237078,-9745295,23357533,-15217008,26908270,12150756 ), + new FieldElement( -30264870,-7647865,5112249,-7036672,-1499807,-6974257,43168,-5537701,-32302074,16215819 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( -6898905,9824394,-12304779,-4401089,-31397141,-6276835,32574489,12532905,-7503072,-8675347 ), + new FieldElement( -27343522,-16515468,-27151524,-10722951,946346,16291093,254968,7168080,21676107,-1943028 ), + new FieldElement( 21260961,-8424752,-16831886,-11920822,-23677961,3968121,-3651949,-6215466,-3556191,-7913075 ) + ), + new GroupElementPreComp( + new FieldElement( 16544754,13250366,-16804428,15546242,-4583003,12757258,-2462308,-8680336,-18907032,-9662799 ), + new FieldElement( -2415239,-15577728,18312303,4964443,-15272530,-12653564,26820651,16690659,25459437,-4564609 ), + new FieldElement( -25144690,11425020,28423002,-11020557,-6144921,-15826224,9142795,-2391602,-6432418,-1644817 ) + ), + new GroupElementPreComp( + new FieldElement( -23104652,6253476,16964147,-3768872,-25113972,-12296437,-27457225,-16344658,6335692,7249989 ), + new FieldElement( -30333227,13979675,7503222,-12368314,-11956721,-4621693,-30272269,2682242,25993170,-12478523 ), + new FieldElement( 4364628,5930691,32304656,-10044554,-8054781,15091131,22857016,-10598955,31820368,15075278 ) + ), + new GroupElementPreComp( + new FieldElement( 31879134,-8918693,17258761,90626,-8041836,-4917709,24162788,-9650886,-17970238,12833045 ), + new FieldElement( 19073683,14851414,-24403169,-11860168,7625278,11091125,-19619190,2074449,-9413939,14905377 ), + new FieldElement( 24483667,-11935567,-2518866,-11547418,-1553130,15355506,-25282080,9253129,27628530,-7555480 ) + ), + new GroupElementPreComp( + new FieldElement( 17597607,8340603,19355617,552187,26198470,-3176583,4593324,-9157582,-14110875,15297016 ), + new FieldElement( 510886,14337390,-31785257,16638632,6328095,2713355,-20217417,-11864220,8683221,2921426 ), + new FieldElement( 18606791,11874196,27155355,-5281482,-24031742,6265446,-25178240,-1278924,4674690,13890525 ) + ), + new GroupElementPreComp( + new FieldElement( 13609624,13069022,-27372361,-13055908,24360586,9592974,14977157,9835105,4389687,288396 ), + new FieldElement( 9922506,-519394,13613107,5883594,-18758345,-434263,-12304062,8317628,23388070,16052080 ), + new FieldElement( 12720016,11937594,-31970060,-5028689,26900120,8561328,-20155687,-11632979,-14754271,-10812892 ) + ), + new GroupElementPreComp( + new FieldElement( 15961858,14150409,26716931,-665832,-22794328,13603569,11829573,7467844,-28822128,929275 ), + new FieldElement( 11038231,-11582396,-27310482,-7316562,-10498527,-16307831,-23479533,-9371869,-21393143,2465074 ), + new FieldElement( 20017163,-4323226,27915242,1529148,12396362,15675764,13817261,-9658066,2463391,-4622140 ) + ), + new GroupElementPreComp( + new FieldElement( -16358878,-12663911,-12065183,4996454,-1256422,1073572,9583558,12851107,4003896,12673717 ), + new FieldElement( -1731589,-15155870,-3262930,16143082,19294135,13385325,14741514,-9103726,7903886,2348101 ), + new FieldElement( 24536016,-16515207,12715592,-3862155,1511293,10047386,-3842346,-7129159,-28377538,10048127 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( -12622226,-6204820,30718825,2591312,-10617028,12192840,18873298,-7297090,-32297756,15221632 ), + new FieldElement( -26478122,-11103864,11546244,-1852483,9180880,7656409,-21343950,2095755,29769758,6593415 ), + new FieldElement( -31994208,-2907461,4176912,3264766,12538965,-868111,26312345,-6118678,30958054,8292160 ) + ), + new GroupElementPreComp( + new FieldElement( 31429822,-13959116,29173532,15632448,12174511,-2760094,32808831,3977186,26143136,-3148876 ), + new FieldElement( 22648901,1402143,-22799984,13746059,7936347,365344,-8668633,-1674433,-3758243,-2304625 ), + new FieldElement( -15491917,8012313,-2514730,-12702462,-23965846,-10254029,-1612713,-1535569,-16664475,8194478 ) + ), + new GroupElementPreComp( + new FieldElement( 27338066,-7507420,-7414224,10140405,-19026427,-6589889,27277191,8855376,28572286,3005164 ), + new FieldElement( 26287124,4821776,25476601,-4145903,-3764513,-15788984,-18008582,1182479,-26094821,-13079595 ), + new FieldElement( -7171154,3178080,23970071,6201893,-17195577,-4489192,-21876275,-13982627,32208683,-1198248 ) + ), + new GroupElementPreComp( + new FieldElement( -16657702,2817643,-10286362,14811298,6024667,13349505,-27315504,-10497842,-27672585,-11539858 ), + new FieldElement( 15941029,-9405932,-21367050,8062055,31876073,-238629,-15278393,-1444429,15397331,-4130193 ), + new FieldElement( 8934485,-13485467,-23286397,-13423241,-32446090,14047986,31170398,-1441021,-27505566,15087184 ) + ), + new GroupElementPreComp( + new FieldElement( -18357243,-2156491,24524913,-16677868,15520427,-6360776,-15502406,11461896,16788528,-5868942 ), + new FieldElement( -1947386,16013773,21750665,3714552,-17401782,-16055433,-3770287,-10323320,31322514,-11615635 ), + new FieldElement( 21426655,-5650218,-13648287,-5347537,-28812189,-4920970,-18275391,-14621414,13040862,-12112948 ) + ), + new GroupElementPreComp( + new FieldElement( 11293895,12478086,-27136401,15083750,-29307421,14748872,14555558,-13417103,1613711,4896935 ), + new FieldElement( -25894883,15323294,-8489791,-8057900,25967126,-13425460,2825960,-4897045,-23971776,-11267415 ), + new FieldElement( -15924766,-5229880,-17443532,6410664,3622847,10243618,20615400,12405433,-23753030,-8436416 ) + ), + new GroupElementPreComp( + new FieldElement( -7091295,12556208,-20191352,9025187,-17072479,4333801,4378436,2432030,23097949,-566018 ), + new FieldElement( 4565804,-16025654,20084412,-7842817,1724999,189254,24767264,10103221,-18512313,2424778 ), + new FieldElement( 366633,-11976806,8173090,-6890119,30788634,5745705,-7168678,1344109,-3642553,12412659 ) + ), + new GroupElementPreComp( + new FieldElement( -24001791,7690286,14929416,-168257,-32210835,-13412986,24162697,-15326504,-3141501,11179385 ), + new FieldElement( 18289522,-14724954,8056945,16430056,-21729724,7842514,-6001441,-1486897,-18684645,-11443503 ), + new FieldElement( 476239,6601091,-6152790,-9723375,17503545,-4863900,27672959,13403813,11052904,5219329 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( 20678546,-8375738,-32671898,8849123,-5009758,14574752,31186971,-3973730,9014762,-8579056 ), + new FieldElement( -13644050,-10350239,-15962508,5075808,-1514661,-11534600,-33102500,9160280,8473550,-3256838 ), + new FieldElement( 24900749,14435722,17209120,-15292541,-22592275,9878983,-7689309,-16335821,-24568481,11788948 ) + ), + new GroupElementPreComp( + new FieldElement( -3118155,-11395194,-13802089,14797441,9652448,-6845904,-20037437,10410733,-24568470,-1458691 ), + new FieldElement( -15659161,16736706,-22467150,10215878,-9097177,7563911,11871841,-12505194,-18513325,8464118 ), + new FieldElement( -23400612,8348507,-14585951,-861714,-3950205,-6373419,14325289,8628612,33313881,-8370517 ) + ), + new GroupElementPreComp( + new FieldElement( -20186973,-4967935,22367356,5271547,-1097117,-4788838,-24805667,-10236854,-8940735,-5818269 ), + new FieldElement( -6948785,-1795212,-32625683,-16021179,32635414,-7374245,15989197,-12838188,28358192,-4253904 ), + new FieldElement( -23561781,-2799059,-32351682,-1661963,-9147719,10429267,-16637684,4072016,-5351664,5596589 ) + ), + new GroupElementPreComp( + new FieldElement( -28236598,-3390048,12312896,6213178,3117142,16078565,29266239,2557221,1768301,15373193 ), + new FieldElement( -7243358,-3246960,-4593467,-7553353,-127927,-912245,-1090902,-4504991,-24660491,3442910 ), + new FieldElement( -30210571,5124043,14181784,8197961,18964734,-11939093,22597931,7176455,-18585478,13365930 ) + ), + new GroupElementPreComp( + new FieldElement( -7877390,-1499958,8324673,4690079,6261860,890446,24538107,-8570186,-9689599,-3031667 ), + new FieldElement( 25008904,-10771599,-4305031,-9638010,16265036,15721635,683793,-11823784,15723479,-15163481 ), + new FieldElement( -9660625,12374379,-27006999,-7026148,-7724114,-12314514,11879682,5400171,519526,-1235876 ) + ), + new GroupElementPreComp( + new FieldElement( 22258397,-16332233,-7869817,14613016,-22520255,-2950923,-20353881,7315967,16648397,7605640 ), + new FieldElement( -8081308,-8464597,-8223311,9719710,19259459,-15348212,23994942,-5281555,-9468848,4763278 ), + new FieldElement( -21699244,9220969,-15730624,1084137,-25476107,-2852390,31088447,-7764523,-11356529,728112 ) + ), + new GroupElementPreComp( + new FieldElement( 26047220,-11751471,-6900323,-16521798,24092068,9158119,-4273545,-12555558,-29365436,-5498272 ), + new FieldElement( 17510331,-322857,5854289,8403524,17133918,-3112612,-28111007,12327945,10750447,10014012 ), + new FieldElement( -10312768,3936952,9156313,-8897683,16498692,-994647,-27481051,-666732,3424691,7540221 ) + ), + new GroupElementPreComp( + new FieldElement( 30322361,-6964110,11361005,-4143317,7433304,4989748,-7071422,-16317219,-9244265,15258046 ), + new FieldElement( 13054562,-2779497,19155474,469045,-12482797,4566042,5631406,2711395,1062915,-5136345 ), + new FieldElement( -19240248,-11254599,-29509029,-7499965,-5835763,13005411,-6066489,12194497,32960380,1459310 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( 19852034,7027924,23669353,10020366,8586503,-6657907,394197,-6101885,18638003,-11174937 ), + new FieldElement( 31395534,15098109,26581030,8030562,-16527914,-5007134,9012486,-7584354,-6643087,-5442636 ), + new FieldElement( -9192165,-2347377,-1997099,4529534,25766844,607986,-13222,9677543,-32294889,-6456008 ) + ), + new GroupElementPreComp( + new FieldElement( -2444496,-149937,29348902,8186665,1873760,12489863,-30934579,-7839692,-7852844,-8138429 ), + new FieldElement( -15236356,-15433509,7766470,746860,26346930,-10221762,-27333451,10754588,-9431476,5203576 ), + new FieldElement( 31834314,14135496,-770007,5159118,20917671,-16768096,-7467973,-7337524,31809243,7347066 ) + ), + new GroupElementPreComp( + new FieldElement( -9606723,-11874240,20414459,13033986,13716524,-11691881,19797970,-12211255,15192876,-2087490 ), + new FieldElement( -12663563,-2181719,1168162,-3804809,26747877,-14138091,10609330,12694420,33473243,-13382104 ), + new FieldElement( 33184999,11180355,15832085,-11385430,-1633671,225884,15089336,-11023903,-6135662,14480053 ) + ), + new GroupElementPreComp( + new FieldElement( 31308717,-5619998,31030840,-1897099,15674547,-6582883,5496208,13685227,27595050,8737275 ), + new FieldElement( -20318852,-15150239,10933843,-16178022,8335352,-7546022,-31008351,-12610604,26498114,66511 ), + new FieldElement( 22644454,-8761729,-16671776,4884562,-3105614,-13559366,30540766,-4286747,-13327787,-7515095 ) + ), + new GroupElementPreComp( + new FieldElement( -28017847,9834845,18617207,-2681312,-3401956,-13307506,8205540,13585437,-17127465,15115439 ), + new FieldElement( 23711543,-672915,31206561,-8362711,6164647,-9709987,-33535882,-1426096,8236921,16492939 ), + new FieldElement( -23910559,-13515526,-26299483,-4503841,25005590,-7687270,19574902,10071562,6708380,-6222424 ) + ), + new GroupElementPreComp( + new FieldElement( 2101391,-4930054,19702731,2367575,-15427167,1047675,5301017,9328700,29955601,-11678310 ), + new FieldElement( 3096359,9271816,-21620864,-15521844,-14847996,-7592937,-25892142,-12635595,-9917575,6216608 ), + new FieldElement( -32615849,338663,-25195611,2510422,-29213566,-13820213,24822830,-6146567,-26767480,7525079 ) + ), + new GroupElementPreComp( + new FieldElement( -23066649,-13985623,16133487,-7896178,-3389565,778788,-910336,-2782495,-19386633,11994101 ), + new FieldElement( 21691500,-13624626,-641331,-14367021,3285881,-3483596,-25064666,9718258,-7477437,13381418 ), + new FieldElement( 18445390,-4202236,14979846,11622458,-1727110,-3582980,23111648,-6375247,28535282,15779576 ) + ), + new GroupElementPreComp( + new FieldElement( 30098053,3089662,-9234387,16662135,-21306940,11308411,-14068454,12021730,9955285,-16303356 ), + new FieldElement( 9734894,-14576830,-7473633,-9138735,2060392,11313496,-18426029,9924399,20194861,13380996 ), + new FieldElement( -26378102,-7965207,-22167821,15789297,-18055342,-6168792,-1984914,15707771,26342023,10146099 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( -26016874,-219943,21339191,-41388,19745256,-2878700,-29637280,2227040,21612326,-545728 ), + new FieldElement( -13077387,1184228,23562814,-5970442,-20351244,-6348714,25764461,12243797,-20856566,11649658 ), + new FieldElement( -10031494,11262626,27384172,2271902,26947504,-15997771,39944,6114064,33514190,2333242 ) + ), + new GroupElementPreComp( + new FieldElement( -21433588,-12421821,8119782,7219913,-21830522,-9016134,-6679750,-12670638,24350578,-13450001 ), + new FieldElement( -4116307,-11271533,-23886186,4843615,-30088339,690623,-31536088,-10406836,8317860,12352766 ), + new FieldElement( 18200138,-14475911,-33087759,-2696619,-23702521,-9102511,-23552096,-2287550,20712163,6719373 ) + ), + new GroupElementPreComp( + new FieldElement( 26656208,6075253,-7858556,1886072,-28344043,4262326,11117530,-3763210,26224235,-3297458 ), + new FieldElement( -17168938,-14854097,-3395676,-16369877,-19954045,14050420,21728352,9493610,18620611,-16428628 ), + new FieldElement( -13323321,13325349,11432106,5964811,18609221,6062965,-5269471,-9725556,-30701573,-16479657 ) + ), + new GroupElementPreComp( + new FieldElement( -23860538,-11233159,26961357,1640861,-32413112,-16737940,12248509,-5240639,13735342,1934062 ), + new FieldElement( 25089769,6742589,17081145,-13406266,21909293,-16067981,-15136294,-3765346,-21277997,5473616 ), + new FieldElement( 31883677,-7961101,1083432,-11572403,22828471,13290673,-7125085,12469656,29111212,-5451014 ) + ), + new GroupElementPreComp( + new FieldElement( 24244947,-15050407,-26262976,2791540,-14997599,16666678,24367466,6388839,-10295587,452383 ), + new FieldElement( -25640782,-3417841,5217916,16224624,19987036,-4082269,-24236251,-5915248,15766062,8407814 ), + new FieldElement( -20406999,13990231,15495425,16395525,5377168,15166495,-8917023,-4388953,-8067909,2276718 ) + ), + new GroupElementPreComp( + new FieldElement( 30157918,12924066,-17712050,9245753,19895028,3368142,-23827587,5096219,22740376,-7303417 ), + new FieldElement( 2041139,-14256350,7783687,13876377,-25946985,-13352459,24051124,13742383,-15637599,13295222 ), + new FieldElement( 33338237,-8505733,12532113,7977527,9106186,-1715251,-17720195,-4612972,-4451357,-14669444 ) + ), + new GroupElementPreComp( + new FieldElement( -20045281,5454097,-14346548,6447146,28862071,1883651,-2469266,-4141880,7770569,9620597 ), + new FieldElement( 23208068,7979712,33071466,8149229,1758231,-10834995,30945528,-1694323,-33502340,-14767970 ), + new FieldElement( 1439958,-16270480,-1079989,-793782,4625402,10647766,-5043801,1220118,30494170,-11440799 ) + ), + new GroupElementPreComp( + new FieldElement( -5037580,-13028295,-2970559,-3061767,15640974,-6701666,-26739026,926050,-1684339,-13333647 ), + new FieldElement( 13908495,-3549272,30919928,-6273825,-21521863,7989039,9021034,9078865,3353509,4033511 ), + new FieldElement( -29663431,-15113610,32259991,-344482,24295849,-12912123,23161163,8839127,27485041,7356032 ) + ), + }, + new[]{ + new GroupElementPreComp( + new FieldElement( 9661027,705443,11980065,-5370154,-1628543,14661173,-6346142,2625015,28431036,-16771834 ), + new FieldElement( -23839233,-8311415,-25945511,7480958,-17681669,-8354183,-22545972,14150565,15970762,4099461 ), + new FieldElement( 29262576,16756590,26350592,-8793563,8529671,-11208050,13617293,-9937143,11465739,8317062 ) + ), + new GroupElementPreComp( + new FieldElement( -25493081,-6962928,32500200,-9419051,-23038724,-2302222,14898637,3848455,20969334,-5157516 ), + new FieldElement( -20384450,-14347713,-18336405,13884722,-33039454,2842114,-21610826,-3649888,11177095,14989547 ), + new FieldElement( -24496721,-11716016,16959896,2278463,12066309,10137771,13515641,2581286,-28487508,9930240 ) + ), + new GroupElementPreComp( + new FieldElement( -17751622,-2097826,16544300,-13009300,-15914807,-14949081,18345767,-13403753,16291481,-5314038 ), + new FieldElement( -33229194,2553288,32678213,9875984,8534129,6889387,-9676774,6957617,4368891,9788741 ), + new FieldElement( 16660756,7281060,-10830758,12911820,20108584,-8101676,-21722536,-8613148,16250552,-11111103 ) + ), + new GroupElementPreComp( + new FieldElement( -19765507,2390526,-16551031,14161980,1905286,6414907,4689584,10604807,-30190403,4782747 ), + new FieldElement( -1354539,14736941,-7367442,-13292886,7710542,-14155590,-9981571,4383045,22546403,437323 ), + new FieldElement( 31665577,-12180464,-16186830,1491339,-18368625,3294682,27343084,2786261,-30633590,-14097016 ) + ), + new GroupElementPreComp( + new FieldElement( -14467279,-683715,-33374107,7448552,19294360,14334329,-19690631,2355319,-19284671,-6114373 ), + new FieldElement( 15121312,-15796162,6377020,-6031361,-10798111,-12957845,18952177,15496498,-29380133,11754228 ), + new FieldElement( -2637277,-13483075,8488727,-14303896,12728761,-1622493,7141596,11724556,22761615,-10134141 ) + ), + new GroupElementPreComp( + new FieldElement( 16918416,11729663,-18083579,3022987,-31015732,-13339659,-28741185,-12227393,32851222,11717399 ), + new FieldElement( 11166634,7338049,-6722523,4531520,-29468672,-7302055,31474879,3483633,-1193175,-4030831 ), + new FieldElement( -185635,9921305,31456609,-13536438,-12013818,13348923,33142652,6546660,-19985279,-3948376 ) + ), + new GroupElementPreComp( + new FieldElement( -32460596,11266712,-11197107,-7899103,31703694,3855903,-8537131,-12833048,-30772034,-15486313 ), + new FieldElement( -18006477,12709068,3991746,-6479188,-21491523,-10550425,-31135347,-16049879,10928917,3011958 ), + new FieldElement( -6957757,-15594337,31696059,334240,29576716,14796075,-30831056,-12805180,18008031,10258577 ) + ), + new GroupElementPreComp( + new FieldElement( -22448644,15655569,7018479,-4410003,-30314266,-1201591,-1853465,1367120,25127874,6671743 ), + new FieldElement( 29701166,-14373934,-10878120,9279288,-17568,13127210,21382910,11042292,25838796,4642684 ), + new FieldElement( -20430234,14955537,-24126347,8124619,-5369288,-5990470,30468147,-13900640,18423289,4177476 ) + ) + } + }; + } +} diff --git a/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/base2.cs b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/base2.cs new file mode 100644 index 000000000..c86de62a1 --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/base2.cs @@ -0,0 +1,50 @@ +using System; + +namespace Discord.Net.ED25519.Ed25519Ref10 +{ + internal static partial class LookupTables + { + internal static readonly GroupElementPreComp[] Base2 = new GroupElementPreComp[]{ + new GroupElementPreComp( + new FieldElement( 25967493,-14356035,29566456,3660896,-12694345,4014787,27544626,-11754271,-6079156,2047605 ), + new FieldElement( -12545711,934262,-2722910,3049990,-727428,9406986,12720692,5043384,19500929,-15469378 ), + new FieldElement( -8738181,4489570,9688441,-14785194,10184609,-12363380,29287919,11864899,-24514362,-4438546 ) + ), + new GroupElementPreComp( + new FieldElement( 15636291,-9688557,24204773,-7912398,616977,-16685262,27787600,-14772189,28944400,-1550024 ), + new FieldElement( 16568933,4717097,-11556148,-1102322,15682896,-11807043,16354577,-11775962,7689662,11199574 ), + new FieldElement( 30464156,-5976125,-11779434,-15670865,23220365,15915852,7512774,10017326,-17749093,-9920357 ) + ), + new GroupElementPreComp( + new FieldElement( 10861363,11473154,27284546,1981175,-30064349,12577861,32867885,14515107,-15438304,10819380 ), + new FieldElement( 4708026,6336745,20377586,9066809,-11272109,6594696,-25653668,12483688,-12668491,5581306 ), + new FieldElement( 19563160,16186464,-29386857,4097519,10237984,-4348115,28542350,13850243,-23678021,-15815942 ) + ), + new GroupElementPreComp( + new FieldElement( 5153746,9909285,1723747,-2777874,30523605,5516873,19480852,5230134,-23952439,-15175766 ), + new FieldElement( -30269007,-3463509,7665486,10083793,28475525,1649722,20654025,16520125,30598449,7715701 ), + new FieldElement( 28881845,14381568,9657904,3680757,-20181635,7843316,-31400660,1370708,29794553,-1409300 ) + ), + new GroupElementPreComp( + new FieldElement( -22518993,-6692182,14201702,-8745502,-23510406,8844726,18474211,-1361450,-13062696,13821877 ), + new FieldElement( -6455177,-7839871,3374702,-4740862,-27098617,-10571707,31655028,-7212327,18853322,-14220951 ), + new FieldElement( 4566830,-12963868,-28974889,-12240689,-7602672,-2830569,-8514358,-10431137,2207753,-3209784 ) + ), + new GroupElementPreComp( + new FieldElement( -25154831,-4185821,29681144,7868801,-6854661,-9423865,-12437364,-663000,-31111463,-16132436 ), + new FieldElement( 25576264,-2703214,7349804,-11814844,16472782,9300885,3844789,15725684,171356,6466918 ), + new FieldElement( 23103977,13316479,9739013,-16149481,817875,-15038942,8965339,-14088058,-30714912,16193877 ) + ), + new GroupElementPreComp( + new FieldElement( -33521811,3180713,-2394130,14003687,-16903474,-16270840,17238398,4729455,-18074513,9256800 ), + new FieldElement( -25182317,-4174131,32336398,5036987,-21236817,11360617,22616405,9761698,-19827198,630305 ), + new FieldElement( -13720693,2639453,-24237460,-7406481,9494427,-5774029,-6554551,-15960994,-2449256,-14291300 ) + ), + new GroupElementPreComp( + new FieldElement( -3151181,-5046075,9282714,6866145,-31907062,-863023,-18940575,15033784,25105118,-7894876 ), + new FieldElement( -24326370,15950226,-31801215,-14592823,-11662737,-5090925,1573892,-2625887,2198790,-15804619 ), + new FieldElement( -3099351,10324967,-2241613,7453183,-5446979,-2735503,-13812022,-16236442,-32461234,-12290683 ) + ) + }; + } +} diff --git a/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/d.cs b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/d.cs new file mode 100644 index 000000000..b5a957307 --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/d.cs @@ -0,0 +1,9 @@ +using System; + +namespace Discord.Net.ED25519.Ed25519Ref10 +{ + internal static partial class LookupTables + { + internal static FieldElement d = new FieldElement(-10913610, 13857413, -15372611, 6949391, 114729, -8787816, -6275908, -3247719, -18696448, -12055116); + } +} diff --git a/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/d2.cs b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/d2.cs new file mode 100644 index 000000000..5c6bb61e9 --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/d2.cs @@ -0,0 +1,9 @@ +using System; + +namespace Discord.Net.ED25519.Ed25519Ref10 +{ + internal static partial class LookupTables + { + internal static FieldElement d2 = new FieldElement(-21827239, -5839606, -30745221, 13898782, 229458, 15978800, -12551817, -6495438, 29715968, 9444199); + } +} diff --git a/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_0.cs b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_0.cs new file mode 100644 index 000000000..632c1b942 --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_0.cs @@ -0,0 +1,12 @@ +using System; + +namespace Discord.Net.ED25519.Ed25519Ref10 +{ + internal static partial class FieldOperations + { + public static void fe_0(out FieldElement h) + { + h = default(FieldElement); + } + } +} diff --git a/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_1.cs b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_1.cs new file mode 100644 index 000000000..dfed794b5 --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_1.cs @@ -0,0 +1,13 @@ +using System; + +namespace Discord.Net.ED25519.Ed25519Ref10 +{ + internal static partial class FieldOperations + { + public static void fe_1(out FieldElement h) + { + h = default(FieldElement); + h.x0 = 1; + } + } +} diff --git a/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_add.cs b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_add.cs new file mode 100644 index 000000000..7eb6b9ff1 --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_add.cs @@ -0,0 +1,64 @@ +using System; + +namespace Discord.Net.ED25519.Ed25519Ref10 +{ + internal static partial class FieldOperations + { + /* + h = f + g + Can overlap h with f or g. + + Preconditions: + |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. + |g| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. + + Postconditions: + |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. + */ + //void fe_add(fe h,const fe f,const fe g) + internal static void fe_add(out FieldElement h, ref FieldElement f, ref FieldElement g) + { + int f0 = f.x0; + int f1 = f.x1; + int f2 = f.x2; + int f3 = f.x3; + int f4 = f.x4; + int f5 = f.x5; + int f6 = f.x6; + int f7 = f.x7; + int f8 = f.x8; + int f9 = f.x9; + int g0 = g.x0; + int g1 = g.x1; + int g2 = g.x2; + int g3 = g.x3; + int g4 = g.x4; + int g5 = g.x5; + int g6 = g.x6; + int g7 = g.x7; + int g8 = g.x8; + int g9 = g.x9; + int h0 = f0 + g0; + int h1 = f1 + g1; + int h2 = f2 + g2; + int h3 = f3 + g3; + int h4 = f4 + g4; + int h5 = f5 + g5; + int h6 = f6 + g6; + int h7 = f7 + g7; + int h8 = f8 + g8; + int h9 = f9 + g9; + + h.x0 = h0; + h.x1 = h1; + h.x2 = h2; + h.x3 = h3; + h.x4 = h4; + h.x5 = h5; + h.x6 = h6; + h.x7 = h7; + h.x8 = h8; + h.x9 = h9; + } + } +} diff --git a/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_cmov.cs b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_cmov.cs new file mode 100644 index 000000000..765650694 --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_cmov.cs @@ -0,0 +1,71 @@ +using System; + +namespace Discord.Net.ED25519.Ed25519Ref10 +{ + internal static partial class FieldOperations + { + /* + Replace (f,g) with (g,g) if b == 1; + replace (f,g) with (f,g) if b == 0. + + Preconditions: b in {0,1}. + */ + + //void fe_cmov(fe f,const fe g,unsigned int b) + internal static void fe_cmov(ref FieldElement f, ref FieldElement g, int b) + { + int f0 = f.x0; + int f1 = f.x1; + int f2 = f.x2; + int f3 = f.x3; + int f4 = f.x4; + int f5 = f.x5; + int f6 = f.x6; + int f7 = f.x7; + int f8 = f.x8; + int f9 = f.x9; + int g0 = g.x0; + int g1 = g.x1; + int g2 = g.x2; + int g3 = g.x3; + int g4 = g.x4; + int g5 = g.x5; + int g6 = g.x6; + int g7 = g.x7; + int g8 = g.x8; + int g9 = g.x9; + int x0 = f0 ^ g0; + int x1 = f1 ^ g1; + int x2 = f2 ^ g2; + int x3 = f3 ^ g3; + int x4 = f4 ^ g4; + int x5 = f5 ^ g5; + int x6 = f6 ^ g6; + int x7 = f7 ^ g7; + int x8 = f8 ^ g8; + int x9 = f9 ^ g9; + + b = -b; + x0 &= b; + x1 &= b; + x2 &= b; + x3 &= b; + x4 &= b; + x5 &= b; + x6 &= b; + x7 &= b; + x8 &= b; + x9 &= b; + f.x0 = f0 ^ x0; + f.x1 = f1 ^ x1; + f.x2 = f2 ^ x2; + f.x3 = f3 ^ x3; + f.x4 = f4 ^ x4; + f.x5 = f5 ^ x5; + f.x6 = f6 ^ x6; + f.x7 = f7 ^ x7; + f.x8 = f8 ^ x8; + f.x9 = f9 ^ x9; + } + } +} diff --git a/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_cswap.cs b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_cswap.cs new file mode 100644 index 000000000..50815dbfa --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_cswap.cs @@ -0,0 +1,79 @@ +using System; + +namespace Discord.Net.ED25519.Ed25519Ref10 +{ + internal static partial class FieldOperations + { + /* + Replace (f,g) with (g,f) if b == 1; + replace (f,g) with (f,g) if b == 0. + + Preconditions: b in {0,1}. + */ + public static void fe_cswap(ref FieldElement f, ref FieldElement g, uint b) + { + int f0 = f.x0; + int f1 = f.x1; + int f2 = f.x2; + int f3 = f.x3; + int f4 = f.x4; + int f5 = f.x5; + int f6 = f.x6; + int f7 = f.x7; + int f8 = f.x8; + int f9 = f.x9; + int g0 = g.x0; + int g1 = g.x1; + int g2 = g.x2; + int g3 = g.x3; + int g4 = g.x4; + int g5 = g.x5; + int g6 = g.x6; + int g7 = g.x7; + int g8 = g.x8; + int g9 = g.x9; + int x0 = f0 ^ g0; + int x1 = f1 ^ g1; + int x2 = f2 ^ g2; + int x3 = f3 ^ g3; + int x4 = f4 ^ g4; + int x5 = f5 ^ g5; + int x6 = f6 ^ g6; + int x7 = f7 ^ g7; + int x8 = f8 ^ g8; + int x9 = f9 ^ g9; + + int negb = unchecked((int)-b); + x0 &= negb; + x1 &= negb; + x2 &= negb; + x3 &= negb; + x4 &= negb; + x5 &= negb; + x6 &= negb; + x7 &= negb; + x8 &= negb; + x9 &= negb; + f.x0 = f0 ^ x0; + f.x1 = f1 ^ x1; + f.x2 = f2 ^ x2; + f.x3 = f3 ^ x3; + f.x4 = f4 ^ x4; + f.x5 = f5 ^ x5; + f.x6 = f6 ^ x6; + f.x7 = f7 ^ x7; + f.x8 = f8 ^ x8; + f.x9 = f9 ^ x9; + g.x0 = g0 ^ x0; + g.x1 = g1 ^ x1; + g.x2 = g2 ^ x2; + g.x3 = g3 ^ x3; + g.x4 = g4 ^ x4; + g.x5 = g5 ^ x5; + g.x6 = g6 ^ x6; + g.x7 = g7 ^ x7; + g.x8 = g8 ^ x8; + g.x9 = g9 ^ x9; + } + } +} diff --git a/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_frombytes.cs b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_frombytes.cs new file mode 100644 index 000000000..3689ff952 --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_frombytes.cs @@ -0,0 +1,102 @@ +using System; + +namespace Discord.Net.ED25519.Ed25519Ref10 +{ + internal static partial class FieldOperations + { + private static long load_3(byte[] data, int offset) + { + uint result; + result = data[offset + 0]; + result |= (uint)data[offset + 1] << 8; + result |= (uint)data[offset + 2] << 16; + return (long)(ulong)result; + } + + private static long load_4(byte[] data, int offset) + { + uint result; + result = data[offset + 0]; + result |= (uint)data[offset + 1] << 8; + result |= (uint)data[offset + 2] << 16; + result |= (uint)data[offset + 3] << 24; + return (long)(ulong)result; + } + + // Ignores top bit of h. + internal static void fe_frombytes(out FieldElement h, byte[] data, int offset) + { + var h0 = load_4(data, offset); + var h1 = load_3(data, offset + 4) << 6; + var h2 = load_3(data, offset + 7) << 5; + var h3 = load_3(data, offset + 10) << 3; + var h4 = load_3(data, offset + 13) << 2; + var h5 = load_4(data, offset + 16); + var h6 = load_3(data, offset + 20) << 7; + var h7 = load_3(data, offset + 23) << 5; + var h8 = load_3(data, offset + 26) << 4; + var h9 = (load_3(data, offset + 29) & 8388607) << 2; + + var carry9 = (h9 + (1 << 24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25; + var carry1 = (h1 + (1 << 24)) >> 25; h2 += carry1; h1 -= carry1 << 25; + var carry3 = (h3 + (1 << 24)) >> 25; h4 += carry3; h3 -= carry3 << 25; + var carry5 = (h5 + (1 << 24)) >> 25; h6 += carry5; h5 -= carry5 << 25; + var carry7 = (h7 + (1 << 24)) >> 25; h8 += carry7; h7 -= carry7 << 25; + + var carry0 = (h0 + (1 << 25)) >> 26; h1 += carry0; h0 -= carry0 << 26; + var carry2 = (h2 + (1 << 25)) >> 26; h3 += carry2; h2 -= carry2 << 26; + var carry4 = (h4 + (1 << 25)) >> 26; h5 += carry4; h4 -= carry4 << 26; + var carry6 = (h6 + (1 << 25)) >> 26; h7 += carry6; h6 -= carry6 << 26; + var carry8 = (h8 + (1 << 25)) >> 26; h9 += carry8; h8 -= carry8 << 26; + + h.x0 = (int)h0; + h.x1 = (int)h1; + h.x2 = (int)h2; + h.x3 = (int)h3; + h.x4 = (int)h4; + h.x5 = (int)h5; + h.x6 = (int)h6; + h.x7 = (int)h7; + h.x8 = (int)h8; + h.x9 = (int)h9; + } + + // does NOT ignore top bit + internal static void fe_frombytes2(out FieldElement h, byte[] data, int offset) + { + var h0 = load_4(data, offset); + var h1 = load_3(data, offset + 4) << 6; + var h2 = load_3(data, offset + 7) << 5; + var h3 = load_3(data, offset + 10) << 3; + var h4 = load_3(data, offset + 13) << 2; + var h5 = load_4(data, offset + 16); + var h6 = load_3(data, offset + 20) << 7; + var h7 = load_3(data, offset + 23) << 5; + var h8 = load_3(data, offset + 26) << 4; + var h9 = load_3(data, offset + 29) << 2; + + var carry9 = (h9 + (1 << 24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25; + var carry1 = (h1 + (1 << 24)) >> 25; h2 += carry1; h1 -= carry1 << 25; + var carry3 = (h3 + (1 << 24)) >> 25; h4 += carry3; h3 -= carry3 << 25; + var carry5 = (h5 + (1 << 24)) >> 25; h6 += carry5; h5 -= carry5 << 25; + var carry7 = (h7 + (1 << 24)) >> 25; h8 += carry7; h7 -= carry7 << 25; + + var carry0 = (h0 + (1 << 25)) >> 26; h1 += carry0; h0 -= carry0 << 26; + var carry2 = (h2 + (1 << 25)) >> 26; h3 += carry2; h2 -= carry2 << 26; + var carry4 = (h4 + (1 << 25)) >> 26; h5 += carry4; h4 -= carry4 << 26; + var carry6 = (h6 + (1 << 25)) >> 26; h7 += carry6; h6 -= carry6 << 26; + var carry8 = (h8 + (1 << 25)) >> 26; h9 += carry8; h8 -= carry8 << 26; + + h.x0 = (int)h0; + h.x1 = (int)h1; + h.x2 = (int)h2; + h.x3 = (int)h3; + h.x4 = (int)h4; + h.x5 = (int)h5; + h.x6 = (int)h6; + h.x7 = (int)h7; + h.x8 = (int)h8; + h.x9 = (int)h9; + } + } +} diff --git a/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_invert.cs b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_invert.cs new file mode 100644 index 000000000..943133e07 --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_invert.cs @@ -0,0 +1,128 @@ +using System; + +namespace Discord.Net.ED25519.Ed25519Ref10 +{ + internal static partial class FieldOperations + { + internal static void fe_invert(out FieldElement result, ref FieldElement z) + { + FieldElement t0, t1, t2, t3; + int i; + + /* qhasm: z2 = z1^2^1 */ + /* asm 1: fe_sq(>z2=fe#1,z2=fe#1,>z2=fe#1); */ + /* asm 2: fe_sq(>z2=t0,z2=t0,>z2=t0); */ + fe_sq(out t0, ref z); //for (i = 1; i < 1; ++i) fe_sq(out t0, ref t0); + + /* qhasm: z8 = z2^2^2 */ + /* asm 1: fe_sq(>z8=fe#2,z8=fe#2,>z8=fe#2); */ + /* asm 2: fe_sq(>z8=t1,z8=t1,>z8=t1); */ + fe_sq(out t1, ref t0); for (i = 1; i < 2; ++i) fe_sq(out t1, ref t1); + + /* qhasm: z9 = z1*z8 */ + /* asm 1: fe_mul(>z9=fe#2,z9=t1,z11=fe#1,z11=t0,z22=fe#3,z22=fe#3,>z22=fe#3); */ + /* asm 2: fe_sq(>z22=t2,z22=t2,>z22=t2); */ + fe_sq(out t2, ref t0); //for (i = 1; i < 1; ++i) fe_sq(out t2, ref t2); + + /* qhasm: z_5_0 = z9*z22 */ + /* asm 1: fe_mul(>z_5_0=fe#2,z_5_0=t1,z_10_5=fe#3,z_10_5=fe#3,>z_10_5=fe#3); */ + /* asm 2: fe_sq(>z_10_5=t2,z_10_5=t2,>z_10_5=t2); */ + fe_sq(out t2, ref t1); for (i = 1; i < 5; ++i) fe_sq(out t2, ref t2); + + /* qhasm: z_10_0 = z_10_5*z_5_0 */ + /* asm 1: fe_mul(>z_10_0=fe#2,z_10_0=t1,z_20_10=fe#3,z_20_10=fe#3,>z_20_10=fe#3); */ + /* asm 2: fe_sq(>z_20_10=t2,z_20_10=t2,>z_20_10=t2); */ + fe_sq(out t2, ref t1); for (i = 1; i < 10; ++i) fe_sq(out t2, ref t2); + + /* qhasm: z_20_0 = z_20_10*z_10_0 */ + /* asm 1: fe_mul(>z_20_0=fe#3,z_20_0=t2,z_40_20=fe#4,z_40_20=fe#4,>z_40_20=fe#4); */ + /* asm 2: fe_sq(>z_40_20=t3,z_40_20=t3,>z_40_20=t3); */ + fe_sq(out t3, ref t2); for (i = 1; i < 20; ++i) fe_sq(out t3, ref t3); + + /* qhasm: z_40_0 = z_40_20*z_20_0 */ + /* asm 1: fe_mul(>z_40_0=fe#3,z_40_0=t2,z_50_10=fe#3,z_50_10=fe#3,>z_50_10=fe#3); */ + /* asm 2: fe_sq(>z_50_10=t2,z_50_10=t2,>z_50_10=t2); */ + fe_sq(out t2, ref t2); for (i = 1; i < 10; ++i) fe_sq(out t2, ref t2); + + /* qhasm: z_50_0 = z_50_10*z_10_0 */ + /* asm 1: fe_mul(>z_50_0=fe#2,z_50_0=t1,z_100_50=fe#3,z_100_50=fe#3,>z_100_50=fe#3); */ + /* asm 2: fe_sq(>z_100_50=t2,z_100_50=t2,>z_100_50=t2); */ + fe_sq(out t2, ref t1); for (i = 1; i < 50; ++i) fe_sq(out t2, ref t2); + + /* qhasm: z_100_0 = z_100_50*z_50_0 */ + /* asm 1: fe_mul(>z_100_0=fe#3,z_100_0=t2,z_200_100=fe#4,z_200_100=fe#4,>z_200_100=fe#4); */ + /* asm 2: fe_sq(>z_200_100=t3,z_200_100=t3,>z_200_100=t3); */ + fe_sq(out t3, ref t2); for (i = 1; i < 100; ++i) fe_sq(out t3, ref t3); + + /* qhasm: z_200_0 = z_200_100*z_100_0 */ + /* asm 1: fe_mul(>z_200_0=fe#3,z_200_0=t2,z_250_50=fe#3,z_250_50=fe#3,>z_250_50=fe#3); */ + /* asm 2: fe_sq(>z_250_50=t2,z_250_50=t2,>z_250_50=t2); */ + fe_sq(out t2, ref t2); for (i = 1; i < 50; ++i) fe_sq(out t2, ref t2); + + /* qhasm: z_250_0 = z_250_50*z_50_0 */ + /* asm 1: fe_mul(>z_250_0=fe#2,z_250_0=t1,z_255_5=fe#2,z_255_5=fe#2,>z_255_5=fe#2); */ + /* asm 2: fe_sq(>z_255_5=t1,z_255_5=t1,>z_255_5=t1); */ + fe_sq(out t1, ref t1); for (i = 1; i < 5; ++i) fe_sq(out t1, ref t1); + + /* qhasm: z_255_21 = z_255_5*z11 */ + /* asm 1: fe_mul(>z_255_21=fe#12,z_255_21=out,> 31) ^ 1); + } + } +} \ No newline at end of file diff --git a/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_mul.cs b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_mul.cs new file mode 100644 index 000000000..4774cd5d5 --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_mul.cs @@ -0,0 +1,263 @@ +using System; + +namespace Discord.Net.ED25519.Ed25519Ref10 +{ + internal static partial class FieldOperations + { + /* + h = f * g + Can overlap h with f or g. + + Preconditions: + |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc. + |g| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc. + + Postconditions: + |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc. + */ + + /* + Notes on implementation strategy: + + Using schoolbook multiplication. + Karatsuba would save a little in some cost models. + + Most multiplications by 2 and 19 are 32-bit precomputations; + cheaper than 64-bit postcomputations. + + There is one remaining multiplication by 19 in the carry chain; + one *19 precomputation can be merged into this, + but the resulting data flow is considerably less clean. + + There are 12 carries below. + 10 of them are 2-way parallelizable and vectorizable. + Can get away with 11 carries, but then data flow is much deeper. + + With tighter constraints on inputs can squeeze carries into int32. + */ + + internal static void fe_mul(out FieldElement h, ref FieldElement f, ref FieldElement g) + { + int f0 = f.x0; + int f1 = f.x1; + int f2 = f.x2; + int f3 = f.x3; + int f4 = f.x4; + int f5 = f.x5; + int f6 = f.x6; + int f7 = f.x7; + int f8 = f.x8; + int f9 = f.x9; + int g0 = g.x0; + int g1 = g.x1; + int g2 = g.x2; + int g3 = g.x3; + int g4 = g.x4; + int g5 = g.x5; + int g6 = g.x6; + int g7 = g.x7; + int g8 = g.x8; + int g9 = g.x9; + + int g1_19 = 19 * g1; /* 1.959375*2^29 */ + int g2_19 = 19 * g2; /* 1.959375*2^30; still ok */ + int g3_19 = 19 * g3; + int g4_19 = 19 * g4; + int g5_19 = 19 * g5; + int g6_19 = 19 * g6; + int g7_19 = 19 * g7; + int g8_19 = 19 * g8; + int g9_19 = 19 * g9; + + int f1_2 = 2 * f1; + int f3_2 = 2 * f3; + int f5_2 = 2 * f5; + int f7_2 = 2 * f7; + int f9_2 = 2 * f9; + + long f0g0 = f0 * (long)g0; + long f0g1 = f0 * (long)g1; + long f0g2 = f0 * (long)g2; + long f0g3 = f0 * (long)g3; + long f0g4 = f0 * (long)g4; + long f0g5 = f0 * (long)g5; + long f0g6 = f0 * (long)g6; + long f0g7 = f0 * (long)g7; + long f0g8 = f0 * (long)g8; + long f0g9 = f0 * (long)g9; + long f1g0 = f1 * (long)g0; + long f1g1_2 = f1_2 * (long)g1; + long f1g2 = f1 * (long)g2; + long f1g3_2 = f1_2 * (long)g3; + long f1g4 = f1 * (long)g4; + long f1g5_2 = f1_2 * (long)g5; + long f1g6 = f1 * (long)g6; + long f1g7_2 = f1_2 * (long)g7; + long f1g8 = f1 * (long)g8; + long f1g9_38 = f1_2 * (long)g9_19; + long f2g0 = f2 * (long)g0; + long f2g1 = f2 * (long)g1; + long f2g2 = f2 * (long)g2; + long f2g3 = f2 * (long)g3; + long f2g4 = f2 * (long)g4; + long f2g5 = f2 * (long)g5; + long f2g6 = f2 * (long)g6; + long f2g7 = f2 * (long)g7; + long f2g8_19 = f2 * (long)g8_19; + long f2g9_19 = f2 * (long)g9_19; + long f3g0 = f3 * (long)g0; + long f3g1_2 = f3_2 * (long)g1; + long f3g2 = f3 * (long)g2; + long f3g3_2 = f3_2 * (long)g3; + long f3g4 = f3 * (long)g4; + long f3g5_2 = f3_2 * (long)g5; + long f3g6 = f3 * (long)g6; + long f3g7_38 = f3_2 * (long)g7_19; + long f3g8_19 = f3 * (long)g8_19; + long f3g9_38 = f3_2 * (long)g9_19; + long f4g0 = f4 * (long)g0; + long f4g1 = f4 * (long)g1; + long f4g2 = f4 * (long)g2; + long f4g3 = f4 * (long)g3; + long f4g4 = f4 * (long)g4; + long f4g5 = f4 * (long)g5; + long f4g6_19 = f4 * (long)g6_19; + long f4g7_19 = f4 * (long)g7_19; + long f4g8_19 = f4 * (long)g8_19; + long f4g9_19 = f4 * (long)g9_19; + long f5g0 = f5 * (long)g0; + long f5g1_2 = f5_2 * (long)g1; + long f5g2 = f5 * (long)g2; + long f5g3_2 = f5_2 * (long)g3; + long f5g4 = f5 * (long)g4; + long f5g5_38 = f5_2 * (long)g5_19; + long f5g6_19 = f5 * (long)g6_19; + long f5g7_38 = f5_2 * (long)g7_19; + long f5g8_19 = f5 * (long)g8_19; + long f5g9_38 = f5_2 * (long)g9_19; + long f6g0 = f6 * (long)g0; + long f6g1 = f6 * (long)g1; + long f6g2 = f6 * (long)g2; + long f6g3 = f6 * (long)g3; + long f6g4_19 = f6 * (long)g4_19; + long f6g5_19 = f6 * (long)g5_19; + long f6g6_19 = f6 * (long)g6_19; + long f6g7_19 = f6 * (long)g7_19; + long f6g8_19 = f6 * (long)g8_19; + long f6g9_19 = f6 * (long)g9_19; + long f7g0 = f7 * (long)g0; + long f7g1_2 = f7_2 * (long)g1; + long f7g2 = f7 * (long)g2; + long f7g3_38 = f7_2 * (long)g3_19; + long f7g4_19 = f7 * (long)g4_19; + long f7g5_38 = f7_2 * (long)g5_19; + long f7g6_19 = f7 * (long)g6_19; + long f7g7_38 = f7_2 * (long)g7_19; + long f7g8_19 = f7 * (long)g8_19; + long f7g9_38 = f7_2 * (long)g9_19; + long f8g0 = f8 * (long)g0; + long f8g1 = f8 * (long)g1; + long f8g2_19 = f8 * (long)g2_19; + long f8g3_19 = f8 * (long)g3_19; + long f8g4_19 = f8 * (long)g4_19; + long f8g5_19 = f8 * (long)g5_19; + long f8g6_19 = f8 * (long)g6_19; + long f8g7_19 = f8 * (long)g7_19; + long f8g8_19 = f8 * (long)g8_19; + long f8g9_19 = f8 * (long)g9_19; + long f9g0 = f9 * (long)g0; + long f9g1_38 = f9_2 * (long)g1_19; + long f9g2_19 = f9 * (long)g2_19; + long f9g3_38 = f9_2 * (long)g3_19; + long f9g4_19 = f9 * (long)g4_19; + long f9g5_38 = f9_2 * (long)g5_19; + long f9g6_19 = f9 * (long)g6_19; + long f9g7_38 = f9_2 * (long)g7_19; + long f9g8_19 = f9 * (long)g8_19; + long f9g9_38 = f9_2 * (long)g9_19; + + long h0 = f0g0 + f1g9_38 + f2g8_19 + f3g7_38 + f4g6_19 + f5g5_38 + f6g4_19 + f7g3_38 + f8g2_19 + f9g1_38; + long h1 = f0g1 + f1g0 + f2g9_19 + f3g8_19 + f4g7_19 + f5g6_19 + f6g5_19 + f7g4_19 + f8g3_19 + f9g2_19; + long h2 = f0g2 + f1g1_2 + f2g0 + f3g9_38 + f4g8_19 + f5g7_38 + f6g6_19 + f7g5_38 + f8g4_19 + f9g3_38; + long h3 = f0g3 + f1g2 + f2g1 + f3g0 + f4g9_19 + f5g8_19 + f6g7_19 + f7g6_19 + f8g5_19 + f9g4_19; + long h4 = f0g4 + f1g3_2 + f2g2 + f3g1_2 + f4g0 + f5g9_38 + f6g8_19 + f7g7_38 + f8g6_19 + f9g5_38; + long h5 = f0g5 + f1g4 + f2g3 + f3g2 + f4g1 + f5g0 + f6g9_19 + f7g8_19 + f8g7_19 + f9g6_19; + long h6 = f0g6 + f1g5_2 + f2g4 + f3g3_2 + f4g2 + f5g1_2 + f6g0 + f7g9_38 + f8g8_19 + f9g7_38; + long h7 = f0g7 + f1g6 + f2g5 + f3g4 + f4g3 + f5g2 + f6g1 + f7g0 + f8g9_19 + f9g8_19; + long h8 = f0g8 + f1g7_2 + f2g6 + f3g5_2 + f4g4 + f5g3_2 + f6g2 + f7g1_2 + f8g0 + f9g9_38; + long h9 = f0g9 + f1g8 + f2g7 + f3g6 + f4g5 + f5g4 + f6g3 + f7g2 + f8g1 + f9g0; + + long carry0; + long carry1; + long carry2; + long carry3; + long carry4; + long carry5; + long carry6; + long carry7; + long carry8; + long carry9; + + /* + |h0| <= (1.65*1.65*2^52*(1+19+19+19+19)+1.65*1.65*2^50*(38+38+38+38+38)) + i.e. |h0| <= 1.4*2^60; narrower ranges for h2, h4, h6, h8 + |h1| <= (1.65*1.65*2^51*(1+1+19+19+19+19+19+19+19+19)) + i.e. |h1| <= 1.7*2^59; narrower ranges for h3, h5, h7, h9 + */ + + carry0 = (h0 + (long)(1 << 25)) >> 26; h1 += carry0; h0 -= carry0 << 26; + carry4 = (h4 + (long)(1 << 25)) >> 26; h5 += carry4; h4 -= carry4 << 26; + /* |h0| <= 2^25 */ + /* |h4| <= 2^25 */ + /* |h1| <= 1.71*2^59 */ + /* |h5| <= 1.71*2^59 */ + + carry1 = (h1 + (long)(1 << 24)) >> 25; h2 += carry1; h1 -= carry1 << 25; + carry5 = (h5 + (long)(1 << 24)) >> 25; h6 += carry5; h5 -= carry5 << 25; + /* |h1| <= 2^24; from now on fits into int32 */ + /* |h5| <= 2^24; from now on fits into int32 */ + /* |h2| <= 1.41*2^60 */ + /* |h6| <= 1.41*2^60 */ + + carry2 = (h2 + (long)(1 << 25)) >> 26; h3 += carry2; h2 -= carry2 << 26; + carry6 = (h6 + (long)(1 << 25)) >> 26; h7 += carry6; h6 -= carry6 << 26; + /* |h2| <= 2^25; from now on fits into int32 unchanged */ + /* |h6| <= 2^25; from now on fits into int32 unchanged */ + /* |h3| <= 1.71*2^59 */ + /* |h7| <= 1.71*2^59 */ + + carry3 = (h3 + (long)(1 << 24)) >> 25; h4 += carry3; h3 -= carry3 << 25; + carry7 = (h7 + (long)(1 << 24)) >> 25; h8 += carry7; h7 -= carry7 << 25; + /* |h3| <= 2^24; from now on fits into int32 unchanged */ + /* |h7| <= 2^24; from now on fits into int32 unchanged */ + /* |h4| <= 1.72*2^34 */ + /* |h8| <= 1.41*2^60 */ + + carry4 = (h4 + (long)(1 << 25)) >> 26; h5 += carry4; h4 -= carry4 << 26; + carry8 = (h8 + (long)(1 << 25)) >> 26; h9 += carry8; h8 -= carry8 << 26; + /* |h4| <= 2^25; from now on fits into int32 unchanged */ + /* |h8| <= 2^25; from now on fits into int32 unchanged */ + /* |h5| <= 1.01*2^24 */ + /* |h9| <= 1.71*2^59 */ + + carry9 = (h9 + (long)(1 << 24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25; + /* |h9| <= 2^24; from now on fits into int32 unchanged */ + /* |h0| <= 1.1*2^39 */ + + carry0 = (h0 + (long)(1 << 25)) >> 26; h1 += carry0; h0 -= carry0 << 26; + /* |h0| <= 2^25; from now on fits into int32 unchanged */ + /* |h1| <= 1.01*2^24 */ + + h.x0 = (int)h0; + h.x1 = (int)h1; + h.x2 = (int)h2; + h.x3 = (int)h3; + h.x4 = (int)h4; + h.x5 = (int)h5; + h.x6 = (int)h6; + h.x7 = (int)h7; + h.x8 = (int)h8; + h.x9 = (int)h9; + } + } +} \ No newline at end of file diff --git a/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_mul121666.cs b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_mul121666.cs new file mode 100644 index 000000000..2bbd3f688 --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_mul121666.cs @@ -0,0 +1,67 @@ +using System; + +namespace Discord.Net.ED25519.Ed25519Ref10 +{ + internal static partial class FieldOperations + { + + /* + h = f * 121666 + Can overlap h with f. + + Preconditions: + |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. + + Postconditions: + |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. + */ + + public static void fe_mul121666(out FieldElement h, ref FieldElement f) + { + int f0 = f.x0; + int f1 = f.x1; + int f2 = f.x2; + int f3 = f.x3; + int f4 = f.x4; + int f5 = f.x5; + int f6 = f.x6; + int f7 = f.x7; + int f8 = f.x8; + int f9 = f.x9; + + var h0 = f0 * 121666L; + var h1 = f1 * 121666L; + var h2 = f2 * 121666L; + var h3 = f3 * 121666L; + var h4 = f4 * 121666L; + var h5 = f5 * 121666L; + var h6 = f6 * 121666L; + var h7 = f7 * 121666L; + var h8 = f8 * 121666L; + var h9 = f9 * 121666L; + + var carry9 = (h9 + (1 << 24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25; + var carry1 = (h1 + (1 << 24)) >> 25; h2 += carry1; h1 -= carry1 << 25; + var carry3 = (h3 + (1 << 24)) >> 25; h4 += carry3; h3 -= carry3 << 25; + var carry5 = (h5 + (1 << 24)) >> 25; h6 += carry5; h5 -= carry5 << 25; + var carry7 = (h7 + (1 << 24)) >> 25; h8 += carry7; h7 -= carry7 << 25; + + var carry0 = (h0 + (1 << 25)) >> 26; h1 += carry0; h0 -= carry0 << 26; + var carry2 = (h2 + (1 << 25)) >> 26; h3 += carry2; h2 -= carry2 << 26; + var carry4 = (h4 + (1 << 25)) >> 26; h5 += carry4; h4 -= carry4 << 26; + var carry6 = (h6 + (1 << 25)) >> 26; h7 += carry6; h6 -= carry6 << 26; + var carry8 = (h8 + (1 << 25)) >> 26; h9 += carry8; h8 -= carry8 << 26; + + h.x0 = (int)h0; + h.x1 = (int)h1; + h.x2 = (int)h2; + h.x3 = (int)h3; + h.x4 = (int)h4; + h.x5 = (int)h5; + h.x6 = (int)h6; + h.x7 = (int)h7; + h.x8 = (int)h8; + h.x9 = (int)h9; + } + } +} diff --git a/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_neg.cs b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_neg.cs new file mode 100644 index 000000000..9b3d18139 --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_neg.cs @@ -0,0 +1,51 @@ +using System; + +namespace Discord.Net.ED25519.Ed25519Ref10 +{ + internal static partial class FieldOperations + { + /* + h = -f + + Preconditions: + |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. + + Postconditions: + |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. + */ + internal static void fe_neg(out FieldElement h, ref FieldElement f) + { + int f0 = f.x0; + int f1 = f.x1; + int f2 = f.x2; + int f3 = f.x3; + int f4 = f.x4; + int f5 = f.x5; + int f6 = f.x6; + int f7 = f.x7; + int f8 = f.x8; + int f9 = f.x9; + int h0 = -f0; + int h1 = -f1; + int h2 = -f2; + int h3 = -f3; + int h4 = -f4; + int h5 = -f5; + int h6 = -f6; + int h7 = -f7; + int h8 = -f8; + int h9 = -f9; + + h.x0 = h0; + h.x1 = h1; + h.x2 = h2; + h.x3 = h3; + h.x4 = h4; + h.x5 = h5; + h.x6 = h6; + h.x7 = h7; + h.x8 = h8; + h.x9 = h9; + } + } +} \ No newline at end of file diff --git a/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_pow22523.cs b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_pow22523.cs new file mode 100644 index 000000000..63bb33b59 --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_pow22523.cs @@ -0,0 +1,125 @@ +using System; + +namespace Discord.Net.ED25519.Ed25519Ref10 +{ + internal static partial class FieldOperations + { + internal static void fe_pow22523(out FieldElement result, ref FieldElement z) + { + FieldElement t0, t1, t2; + int i; + + /* qhasm: z2 = z1^2^1 */ + /* asm 1: fe_sq(>z2=fe#1,z2=fe#1,>z2=fe#1); */ + /* asm 2: fe_sq(>z2=t0,z2=t0,>z2=t0); */ + fe_sq(out t0, ref z); //for (i = 1; i < 1; ++i) fe_sq(out t0, ref t0); + + /* qhasm: z8 = z2^2^2 */ + /* asm 1: fe_sq(>z8=fe#2,z8=fe#2,>z8=fe#2); */ + /* asm 2: fe_sq(>z8=t1,z8=t1,>z8=t1); */ + fe_sq(out t1, ref t0); for (i = 1; i < 2; ++i) fe_sq(out t1, ref t1); + + /* qhasm: z9 = z1*z8 */ + /* asm 1: fe_mul(>z9=fe#2,z9=t1,z11=fe#1,z11=t0,z22=fe#1,z22=fe#1,>z22=fe#1); */ + /* asm 2: fe_sq(>z22=t0,z22=t0,>z22=t0); */ + fe_sq(out t0, ref t0); //for (i = 1; i < 1; ++i) fe_sq(out t0, ref t0); + + /* qhasm: z_5_0 = z9*z22 */ + /* asm 1: fe_mul(>z_5_0=fe#1,z_5_0=t0,z_10_5=fe#2,z_10_5=fe#2,>z_10_5=fe#2); */ + /* asm 2: fe_sq(>z_10_5=t1,z_10_5=t1,>z_10_5=t1); */ + fe_sq(out t1, ref t0); for (i = 1; i < 5; ++i) fe_sq(out t1, ref t1); + + /* qhasm: z_10_0 = z_10_5*z_5_0 */ + /* asm 1: fe_mul(>z_10_0=fe#1,z_10_0=t0,z_20_10=fe#2,z_20_10=fe#2,>z_20_10=fe#2); */ + /* asm 2: fe_sq(>z_20_10=t1,z_20_10=t1,>z_20_10=t1); */ + fe_sq(out t1, ref t0); for (i = 1; i < 10; ++i) fe_sq(out t1, ref t1); + + /* qhasm: z_20_0 = z_20_10*z_10_0 */ + /* asm 1: fe_mul(>z_20_0=fe#2,z_20_0=t1,z_40_20=fe#3,z_40_20=fe#3,>z_40_20=fe#3); */ + /* asm 2: fe_sq(>z_40_20=t2,z_40_20=t2,>z_40_20=t2); */ + fe_sq(out t2, ref t1); for (i = 1; i < 20; ++i) fe_sq(out t2, ref t2); + + /* qhasm: z_40_0 = z_40_20*z_20_0 */ + /* asm 1: fe_mul(>z_40_0=fe#2,z_40_0=t1,z_50_10=fe#2,z_50_10=fe#2,>z_50_10=fe#2); */ + /* asm 2: fe_sq(>z_50_10=t1,z_50_10=t1,>z_50_10=t1); */ + fe_sq(out t1, ref t1); for (i = 1; i < 10; ++i) fe_sq(out t1, ref t1); + + /* qhasm: z_50_0 = z_50_10*z_10_0 */ + /* asm 1: fe_mul(>z_50_0=fe#1,z_50_0=t0,z_100_50=fe#2,z_100_50=fe#2,>z_100_50=fe#2); */ + /* asm 2: fe_sq(>z_100_50=t1,z_100_50=t1,>z_100_50=t1); */ + fe_sq(out t1, ref t0); for (i = 1; i < 50; ++i) fe_sq(out t1, ref t1); + + /* qhasm: z_100_0 = z_100_50*z_50_0 */ + /* asm 1: fe_mul(>z_100_0=fe#2,z_100_0=t1,z_200_100=fe#3,z_200_100=fe#3,>z_200_100=fe#3); */ + /* asm 2: fe_sq(>z_200_100=t2,z_200_100=t2,>z_200_100=t2); */ + fe_sq(out t2, ref t1); for (i = 1; i < 100; ++i) fe_sq(out t2, ref t2); + + /* qhasm: z_200_0 = z_200_100*z_100_0 */ + /* asm 1: fe_mul(>z_200_0=fe#2,z_200_0=t1,z_250_50=fe#2,z_250_50=fe#2,>z_250_50=fe#2); */ + /* asm 2: fe_sq(>z_250_50=t1,z_250_50=t1,>z_250_50=t1); */ + fe_sq(out t1, ref t1); for (i = 1; i < 50; ++i) fe_sq(out t1, ref t1); + + /* qhasm: z_250_0 = z_250_50*z_50_0 */ + /* asm 1: fe_mul(>z_250_0=fe#1,z_250_0=t0,z_252_2=fe#1,z_252_2=fe#1,>z_252_2=fe#1); */ + /* asm 2: fe_sq(>z_252_2=t0,z_252_2=t0,>z_252_2=t0); */ + fe_sq(out t0, ref t0); for (i = 1; i < 2; ++i) fe_sq(out t0, ref t0); + + /* qhasm: z_252_3 = z_252_2*z1 */ + /* asm 1: fe_mul(>z_252_3=fe#12,z_252_3=out,> 26; h1 += carry0; h0 -= carry0 << 26; + var carry4 = (h4 + (1 << 25)) >> 26; h5 += carry4; h4 -= carry4 << 26; + var carry1 = (h1 + (1 << 24)) >> 25; h2 += carry1; h1 -= carry1 << 25; + var carry5 = (h5 + (1 << 24)) >> 25; h6 += carry5; h5 -= carry5 << 25; + var carry2 = (h2 + (1 << 25)) >> 26; h3 += carry2; h2 -= carry2 << 26; + var carry6 = (h6 + (1 << 25)) >> 26; h7 += carry6; h6 -= carry6 << 26; + var carry3 = (h3 + (1 << 24)) >> 25; h4 += carry3; h3 -= carry3 << 25; + var carry7 = (h7 + (1 << 24)) >> 25; h8 += carry7; h7 -= carry7 << 25; + + carry4 = (h4 + (1 << 25)) >> 26; h5 += carry4; h4 -= carry4 << 26; + + var carry8 = (h8 + (1 << 25)) >> 26; h9 += carry8; h8 -= carry8 << 26; + var carry9 = (h9 + (1 << 24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25; + + carry0 = (h0 + (1 << 25)) >> 26; h1 += carry0; h0 -= carry0 << 26; + + h.x0 = (int)h0; + h.x1 = (int)h1; + h.x2 = (int)h2; + h.x3 = (int)h3; + h.x4 = (int)h4; + h.x5 = (int)h5; + h.x6 = (int)h6; + h.x7 = (int)h7; + h.x8 = (int)h8; + h.x9 = (int)h9; + } + } +} \ No newline at end of file diff --git a/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_sq2.cs b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_sq2.cs new file mode 100644 index 000000000..d1c2ee33d --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_sq2.cs @@ -0,0 +1,154 @@ +using System; + +namespace Discord.Net.ED25519.Ed25519Ref10 +{ + internal static partial class FieldOperations + { + /* +h = 2 * f * f +Can overlap h with f. + +Preconditions: + |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc. + +Postconditions: + |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc. +*/ + + /* + See fe_mul.c for discussion of implementation strategy. + */ + internal static void fe_sq2(out FieldElement h, ref FieldElement f) + { + int f0 = f.x0; + int f1 = f.x1; + int f2 = f.x2; + int f3 = f.x3; + int f4 = f.x4; + int f5 = f.x5; + int f6 = f.x6; + int f7 = f.x7; + int f8 = f.x8; + int f9 = f.x9; + + int f0_2 = 2 * f0; + int f1_2 = 2 * f1; + int f2_2 = 2 * f2; + int f3_2 = 2 * f3; + int f4_2 = 2 * f4; + int f5_2 = 2 * f5; + int f6_2 = 2 * f6; + int f7_2 = 2 * f7; + int f5_38 = 38 * f5; /* 1.959375*2^30 */ + int f6_19 = 19 * f6; /* 1.959375*2^30 */ + int f7_38 = 38 * f7; /* 1.959375*2^30 */ + int f8_19 = 19 * f8; /* 1.959375*2^30 */ + int f9_38 = 38 * f9; /* 1.959375*2^30 */ + + var f0f0 = f0 * (long)f0; + var f0f1_2 = f0_2 * (long)f1; + var f0f2_2 = f0_2 * (long)f2; + var f0f3_2 = f0_2 * (long)f3; + var f0f4_2 = f0_2 * (long)f4; + var f0f5_2 = f0_2 * (long)f5; + var f0f6_2 = f0_2 * (long)f6; + var f0f7_2 = f0_2 * (long)f7; + var f0f8_2 = f0_2 * (long)f8; + var f0f9_2 = f0_2 * (long)f9; + var f1f1_2 = f1_2 * (long)f1; + var f1f2_2 = f1_2 * (long)f2; + var f1f3_4 = f1_2 * (long)f3_2; + var f1f4_2 = f1_2 * (long)f4; + var f1f5_4 = f1_2 * (long)f5_2; + var f1f6_2 = f1_2 * (long)f6; + var f1f7_4 = f1_2 * (long)f7_2; + var f1f8_2 = f1_2 * (long)f8; + var f1f9_76 = f1_2 * (long)f9_38; + var f2f2 = f2 * (long)f2; + var f2f3_2 = f2_2 * (long)f3; + var f2f4_2 = f2_2 * (long)f4; + var f2f5_2 = f2_2 * (long)f5; + var f2f6_2 = f2_2 * (long)f6; + var f2f7_2 = f2_2 * (long)f7; + var f2f8_38 = f2_2 * (long)f8_19; + var f2f9_38 = f2 * (long)f9_38; + var f3f3_2 = f3_2 * (long)f3; + var f3f4_2 = f3_2 * (long)f4; + var f3f5_4 = f3_2 * (long)f5_2; + var f3f6_2 = f3_2 * (long)f6; + var f3f7_76 = f3_2 * (long)f7_38; + var f3f8_38 = f3_2 * (long)f8_19; + var f3f9_76 = f3_2 * (long)f9_38; + var f4f4 = f4 * (long)f4; + var f4f5_2 = f4_2 * (long)f5; + var f4f6_38 = f4_2 * (long)f6_19; + var f4f7_38 = f4 * (long)f7_38; + var f4f8_38 = f4_2 * (long)f8_19; + var f4f9_38 = f4 * (long)f9_38; + var f5f5_38 = f5 * (long)f5_38; + var f5f6_38 = f5_2 * (long)f6_19; + var f5f7_76 = f5_2 * (long)f7_38; + var f5f8_38 = f5_2 * (long)f8_19; + var f5f9_76 = f5_2 * (long)f9_38; + var f6f6_19 = f6 * (long)f6_19; + var f6f7_38 = f6 * (long)f7_38; + var f6f8_38 = f6_2 * (long)f8_19; + var f6f9_38 = f6 * (long)f9_38; + var f7f7_38 = f7 * (long)f7_38; + var f7f8_38 = f7_2 * (long)f8_19; + var f7f9_76 = f7_2 * (long)f9_38; + var f8f8_19 = f8 * (long)f8_19; + var f8f9_38 = f8 * (long)f9_38; + var f9f9_38 = f9 * (long)f9_38; + + var h0 = f0f0 + f1f9_76 + f2f8_38 + f3f7_76 + f4f6_38 + f5f5_38; + var h1 = f0f1_2 + f2f9_38 + f3f8_38 + f4f7_38 + f5f6_38; + var h2 = f0f2_2 + f1f1_2 + f3f9_76 + f4f8_38 + f5f7_76 + f6f6_19; + var h3 = f0f3_2 + f1f2_2 + f4f9_38 + f5f8_38 + f6f7_38; + var h4 = f0f4_2 + f1f3_4 + f2f2 + f5f9_76 + f6f8_38 + f7f7_38; + var h5 = f0f5_2 + f1f4_2 + f2f3_2 + f6f9_38 + f7f8_38; + var h6 = f0f6_2 + f1f5_4 + f2f4_2 + f3f3_2 + f7f9_76 + f8f8_19; + var h7 = f0f7_2 + f1f6_2 + f2f5_2 + f3f4_2 + f8f9_38; + var h8 = f0f8_2 + f1f7_4 + f2f6_2 + f3f5_4 + f4f4 + f9f9_38; + var h9 = f0f9_2 + f1f8_2 + f2f7_2 + f3f6_2 + f4f5_2; + + h0 += h0; + h1 += h1; + h2 += h2; + h3 += h3; + h4 += h4; + h5 += h5; + h6 += h6; + h7 += h7; + h8 += h8; + h9 += h9; + + var carry0 = (h0 + (1 << 25)) >> 26; h1 += carry0; h0 -= carry0 << 26; + var carry4 = (h4 + (1 << 25)) >> 26; h5 += carry4; h4 -= carry4 << 26; + var carry1 = (h1 + (1 << 24)) >> 25; h2 += carry1; h1 -= carry1 << 25; + var carry5 = (h5 + (1 << 24)) >> 25; h6 += carry5; h5 -= carry5 << 25; + var carry2 = (h2 + (1 << 25)) >> 26; h3 += carry2; h2 -= carry2 << 26; + var carry6 = (h6 + (1 << 25)) >> 26; h7 += carry6; h6 -= carry6 << 26; + var carry3 = (h3 + (1 << 24)) >> 25; h4 += carry3; h3 -= carry3 << 25; + var carry7 = (h7 + (1 << 24)) >> 25; h8 += carry7; h7 -= carry7 << 25; + + carry4 = (h4 + (1 << 25)) >> 26; h5 += carry4; h4 -= carry4 << 26; + + var carry8 = (h8 + (1 << 25)) >> 26; h9 += carry8; h8 -= carry8 << 26; + var carry9 = (h9 + (1 << 24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25; + + carry0 = (h0 + (1 << 25)) >> 26; h1 += carry0; h0 -= carry0 << 26; + + h.x0 = (int)h0; + h.x1 = (int)h1; + h.x2 = (int)h2; + h.x3 = (int)h3; + h.x4 = (int)h4; + h.x5 = (int)h5; + h.x6 = (int)h6; + h.x7 = (int)h7; + h.x8 = (int)h8; + h.x9 = (int)h9; + } + } +} \ No newline at end of file diff --git a/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_sub.cs b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_sub.cs new file mode 100644 index 000000000..f76e6d752 --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_sub.cs @@ -0,0 +1,66 @@ +using System; + +namespace Discord.Net.ED25519.Ed25519Ref10 +{ + internal static partial class FieldOperations + { + /* + h = f - g + Can overlap h with f or g. + + Preconditions: + |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. + |g| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. + + Postconditions: + |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. + */ + + internal static void fe_sub(out FieldElement h, ref FieldElement f, ref FieldElement g) + { + int f0 = f.x0; + int f1 = f.x1; + int f2 = f.x2; + int f3 = f.x3; + int f4 = f.x4; + int f5 = f.x5; + int f6 = f.x6; + int f7 = f.x7; + int f8 = f.x8; + int f9 = f.x9; + + int g0 = g.x0; + int g1 = g.x1; + int g2 = g.x2; + int g3 = g.x3; + int g4 = g.x4; + int g5 = g.x5; + int g6 = g.x6; + int g7 = g.x7; + int g8 = g.x8; + int g9 = g.x9; + + int h0 = f0 - g0; + int h1 = f1 - g1; + int h2 = f2 - g2; + int h3 = f3 - g3; + int h4 = f4 - g4; + int h5 = f5 - g5; + int h6 = f6 - g6; + int h7 = f7 - g7; + int h8 = f8 - g8; + int h9 = f9 - g9; + + h.x0 = h0; + h.x1 = h1; + h.x2 = h2; + h.x3 = h3; + h.x4 = h4; + h.x5 = h5; + h.x6 = h6; + h.x7 = h7; + h.x8 = h8; + h.x9 = h9; + } + } +} \ No newline at end of file diff --git a/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_tobytes.cs b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_tobytes.cs new file mode 100644 index 000000000..601f88f28 --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/fe_tobytes.cs @@ -0,0 +1,145 @@ +using System; + +namespace Discord.Net.ED25519.Ed25519Ref10 +{ + internal static partial class FieldOperations + { + /* + Preconditions: + |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. + + Write p=2^255-19; q=floor(h/p). + Basic claim: q = floor(2^(-255)(h + 19 2^(-25)h9 + 2^(-1))). + + Proof: + Have |h|<=p so |q|<=1 so |19^2 2^(-255) q|<1/4. + Also have |h-2^230 h9|<2^231 so |19 2^(-255)(h-2^230 h9)|<1/4. + + Write y=2^(-1)-19^2 2^(-255)q-19 2^(-255)(h-2^230 h9). + Then 0> 0); + s[offset + 1] = (byte) (h0 >> 8); + s[offset + 2] = (byte) (h0 >> 16); + s[offset + 3] = (byte) ((h0 >> 24) | (h1 << 2)); + s[offset + 4] = (byte) (h1 >> 6); + s[offset + 5] = (byte) (h1 >> 14); + s[offset + 6] = (byte) ((h1 >> 22) | (h2 << 3)); + s[offset + 7] = (byte) (h2 >> 5); + s[offset + 8] = (byte) (h2 >> 13); + s[offset + 9] = (byte) ((h2 >> 21) | (h3 << 5)); + s[offset + 10] = (byte) (h3 >> 3); + s[offset + 11] = (byte) (h3 >> 11); + s[offset + 12] = (byte) ((h3 >> 19) | (h4 << 6)); + s[offset + 13] = (byte) (h4 >> 2); + s[offset + 14] = (byte) (h4 >> 10); + s[offset + 15] = (byte) (h4 >> 18); + s[offset + 16] = (byte) (h5 >> 0); + s[offset + 17] = (byte) (h5 >> 8); + s[offset + 18] = (byte) (h5 >> 16); + s[offset + 19] = (byte) ((h5 >> 24) | (h6 << 1)); + s[offset + 20] = (byte) (h6 >> 7); + s[offset + 21] = (byte) (h6 >> 15); + s[offset + 22] = (byte) ((h6 >> 23) | (h7 << 3)); + s[offset + 23] = (byte) (h7 >> 5); + s[offset + 24] = (byte) (h7 >> 13); + s[offset + 25] = (byte) ((h7 >> 21) | (h8 << 4)); + s[offset + 26] = (byte) (h8 >> 4); + s[offset + 27] = (byte) (h8 >> 12); + s[offset + 28] = (byte) ((h8 >> 20) | (h9 << 6)); + s[offset + 29] = (byte) (h9 >> 2); + s[offset + 30] = (byte) (h9 >> 10); + s[offset + 31] = (byte) (h9 >> 18); + } + } + + internal static void fe_reduce(out FieldElement hr, ref FieldElement h) + { + int h0 = h.x0; + int h1 = h.x1; + int h2 = h.x2; + int h3 = h.x3; + int h4 = h.x4; + int h5 = h.x5; + int h6 = h.x6; + int h7 = h.x7; + int h8 = h.x8; + int h9 = h.x9; + + int q; + + q = (19 * h9 + (1 << 24)) >> 25; + q = (h0 + q) >> 26; + q = (h1 + q) >> 25; + q = (h2 + q) >> 26; + q = (h3 + q) >> 25; + q = (h4 + q) >> 26; + q = (h5 + q) >> 25; + q = (h6 + q) >> 26; + q = (h7 + q) >> 25; + q = (h8 + q) >> 26; + q = (h9 + q) >> 25; + + /* Goal: Output h-(2^255-19)q, which is between 0 and 2^255-20. */ + h0 += 19 * q; + /* Goal: Output h-2^255 q, which is between 0 and 2^255-20. */ + + var carry0 = h0 >> 26; h1 += carry0; h0 -= carry0 << 26; + var carry1 = h1 >> 25; h2 += carry1; h1 -= carry1 << 25; + var carry2 = h2 >> 26; h3 += carry2; h2 -= carry2 << 26; + var carry3 = h3 >> 25; h4 += carry3; h3 -= carry3 << 25; + var carry4 = h4 >> 26; h5 += carry4; h4 -= carry4 << 26; + var carry5 = h5 >> 25; h6 += carry5; h5 -= carry5 << 25; + var carry6 = h6 >> 26; h7 += carry6; h6 -= carry6 << 26; + var carry7 = h7 >> 25; h8 += carry7; h7 -= carry7 << 25; + var carry8 = h8 >> 26; h9 += carry8; h8 -= carry8 << 26; + var carry9 = h9 >> 25; h9 -= carry9 << 25; + /* h10 = carry9 */ + + hr.x0 = h0; + hr.x1 = h1; + hr.x2 = h2; + hr.x3 = h3; + hr.x4 = h4; + hr.x5 = h5; + hr.x6 = h6; + hr.x7 = h7; + hr.x8 = h8; + hr.x9 = h9; + } + } +} \ No newline at end of file diff --git a/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_add.cs b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_add.cs new file mode 100644 index 000000000..de8e08f12 --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_add.cs @@ -0,0 +1,73 @@ +using System; + +namespace Discord.Net.ED25519.Ed25519Ref10 +{ + internal static partial class GroupOperations + { + /* + r = p + q + */ + + internal static void ge_add(out GroupElementP1P1 r, ref GroupElementP3 p, ref GroupElementCached q) + { + FieldElement t0; + + /* qhasm: YpX1 = Y1+X1 */ + /* asm 1: fe_add(>YpX1=fe#1,YpX1=r.X,YmX1=fe#2,YmX1=r.Y,A=fe#3,A=r.Z,B=fe#2,B=r.Y,C=fe#4,C=r.T,ZZ=fe#1,ZZ=r.X,D=fe#5,D=t0,X3=fe#1,X3=r.X,Y3=fe#2,Y3=r.Y,Z3=fe#3,Z3=r.Z,T3=fe#4,T3=r.T,> 3] >> (i & 7))); + + for (int i = 0; i < 256; ++i) + { + if (r[i] != 0) + { + for (int b = 1; b <= 6 && (i + b) < 256; ++b) + { + if (r[i + b] != 0) + { + if (r[i] + (r[i + b] << b) <= 15) + { + r[i] += (sbyte)(r[i + b] << b); r[i + b] = 0; + } + else if (r[i] - (r[i + b] << b) >= -15) + { + r[i] -= (sbyte)(r[i + b] << b); + for (int k = i + b; k < 256; ++k) + { + if (r[k] == 0) + { + r[k] = 1; + break; + } + r[k] = 0; + } + } + else + break; + } + } + } + } + } + + /* + r = a * A + b * B + where a = a[0]+256*a[1]+...+256^31 a[31]. + and b = b[0]+256*b[1]+...+256^31 b[31]. + B is the Ed25519 base point (x,4/5) with x positive. + */ + + public static void ge_double_scalarmult_vartime(out GroupElementP2 r, byte[] a, ref GroupElementP3 A, byte[] b) + { + GroupElementPreComp[] Bi = LookupTables.Base2; + // todo: Perhaps remove these allocations? + sbyte[] aslide = new sbyte[256]; + sbyte[] bslide = new sbyte[256]; + GroupElementCached[] Ai = new GroupElementCached[8]; /* A,3A,5A,7A,9A,11A,13A,15A */ + GroupElementP1P1 t; + GroupElementP3 u; + GroupElementP3 A2; + int i; + + slide(aslide, a); + slide(bslide, b); + + ge_p3_to_cached(out Ai[0], ref A); + ge_p3_dbl(out t, ref A); ge_p1p1_to_p3(out A2, ref t); + ge_add(out t, ref A2, ref Ai[0]); ge_p1p1_to_p3(out u, ref t); ge_p3_to_cached(out Ai[1], ref u); + ge_add(out t, ref A2, ref Ai[1]); ge_p1p1_to_p3(out u, ref t); ge_p3_to_cached(out Ai[2], ref u); + ge_add(out t, ref A2, ref Ai[2]); ge_p1p1_to_p3(out u, ref t); ge_p3_to_cached(out Ai[3], ref u); + ge_add(out t, ref A2, ref Ai[3]); ge_p1p1_to_p3(out u, ref t); ge_p3_to_cached(out Ai[4], ref u); + ge_add(out t, ref A2, ref Ai[4]); ge_p1p1_to_p3(out u, ref t); ge_p3_to_cached(out Ai[5], ref u); + ge_add(out t, ref A2, ref Ai[5]); ge_p1p1_to_p3(out u, ref t); ge_p3_to_cached(out Ai[6], ref u); + ge_add(out t, ref A2, ref Ai[6]); ge_p1p1_to_p3(out u, ref t); ge_p3_to_cached(out Ai[7], ref u); + + ge_p2_0(out r); + + for (i = 255; i >= 0; --i) + { + if ((aslide[i] != 0) || (bslide[i] != 0)) break; + } + + for (; i >= 0; --i) + { + ge_p2_dbl(out t, ref r); + + if (aslide[i] > 0) + { + ge_p1p1_to_p3(out u, ref t); + ge_add(out t, ref u, ref Ai[aslide[i] / 2]); + } + else if (aslide[i] < 0) + { + ge_p1p1_to_p3(out u, ref t); + ge_sub(out t, ref u, ref Ai[(-aslide[i]) / 2]); + } + + if (bslide[i] > 0) + { + ge_p1p1_to_p3(out u, ref t); + ge_madd(out t, ref u, ref Bi[bslide[i] / 2]); + } + else if (bslide[i] < 0) + { + ge_p1p1_to_p3(out u, ref t); + ge_msub(out t, ref u, ref Bi[(-bslide[i]) / 2]); + } + + ge_p1p1_to_p2(out r, ref t); + } + } + + } +} \ No newline at end of file diff --git a/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_frombytes.cs b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_frombytes.cs new file mode 100644 index 000000000..2e7abe9d4 --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_frombytes.cs @@ -0,0 +1,50 @@ +using System; + +namespace Discord.Net.ED25519.Ed25519Ref10 +{ + internal static partial class GroupOperations + { + public static int ge_frombytes_negate_vartime(out GroupElementP3 h, byte[] data, int offset) + { + FieldElement u, v, v3, vxx, check; + + FieldOperations.fe_frombytes(out h.Y, data, offset); + FieldOperations.fe_1(out h.Z); + FieldOperations.fe_sq(out u, ref h.Y); + FieldOperations.fe_mul(out v, ref u, ref LookupTables.d); + FieldOperations.fe_sub(out u, ref u, ref h.Z); /* u = y^2-1 */ + FieldOperations.fe_add(out v, ref v, ref h.Z); /* v = dy^2+1 */ + + FieldOperations.fe_sq(out v3, ref v); + FieldOperations.fe_mul(out v3, ref v3, ref v); /* v3 = v^3 */ + FieldOperations.fe_sq(out h.X, ref v3); + FieldOperations.fe_mul(out h.X, ref h.X, ref v); + FieldOperations.fe_mul(out h.X, ref h.X, ref u); /* x = uv^7 */ + + FieldOperations.fe_pow22523(out h.X, ref h.X); /* x = (uv^7)^((q-5)/8) */ + FieldOperations.fe_mul(out h.X, ref h.X, ref v3); + FieldOperations.fe_mul(out h.X, ref h.X, ref u); /* x = uv^3(uv^7)^((q-5)/8) */ + + FieldOperations.fe_sq(out vxx, ref h.X); + FieldOperations.fe_mul(out vxx, ref vxx, ref v); + FieldOperations.fe_sub(out check, ref vxx, ref u); /* vx^2-u */ + if (FieldOperations.fe_isnonzero(ref check) != 0) + { + FieldOperations.fe_add(out check, ref vxx, ref u); /* vx^2+u */ + if (FieldOperations.fe_isnonzero(ref check) != 0) + { + h = default(GroupElementP3); + return -1; + } + FieldOperations.fe_mul(out h.X, ref h.X, ref LookupTables.sqrtm1); + } + + if (FieldOperations.fe_isnegative(ref h.X) == (data[offset + 31] >> 7)) + FieldOperations.fe_neg(out h.X, ref h.X); + + FieldOperations.fe_mul(out h.T, ref h.X, ref h.Y); + return 0; + } + + } +} \ No newline at end of file diff --git a/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_madd.cs b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_madd.cs new file mode 100644 index 000000000..547e17d86 --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_madd.cs @@ -0,0 +1,69 @@ +using System; + +namespace Discord.Net.ED25519.Ed25519Ref10 +{ + internal static partial class GroupOperations + { + /* + r = p + q + */ + public static void ge_madd(out GroupElementP1P1 r, ref GroupElementP3 p, ref GroupElementPreComp q) + { + FieldElement t0; + + /* qhasm: YpX1 = Y1+X1 */ + /* asm 1: fe_add(>YpX1=fe#1,YpX1=r.X,YmX1=fe#2,YmX1=r.Y,A=fe#3,A=r.Z,B=fe#2,B=r.Y,C=fe#4,C=r.T,D=fe#5,D=t0,X3=fe#1,X3=r.X,Y3=fe#2,Y3=r.Y,Z3=fe#3,Z3=r.Z,T3=fe#4,T3=r.T,YpX1=fe#1,YpX1=r.X,YmX1=fe#2,YmX1=r.Y,A=fe#3,A=r.Z,B=fe#2,B=r.Y,C=fe#4,C=r.T,D=fe#5,D=t0,X3=fe#1,X3=r.X,Y3=fe#2,Y3=r.Y,Z3=fe#3,Z3=r.Z,T3=fe#4,T3=r.T,XX=fe#1,XX=r.X,YY=fe#3,YY=r.Z,B=fe#4,B=r.T,A=fe#2,A=r.Y,AA=fe#5,AA=t0,Y3=fe#2,Y3=r.Y,Z3=fe#3,Z3=r.Z,X3=fe#1,X3=r.X,T3=fe#4,T3=r.T,>= 31; /* 1: yes; 0: no */ + return (byte)y; + } + + static byte negative(sbyte b) + { + var x = unchecked((ulong)b); /* 18446744073709551361..18446744073709551615: yes; 0..255: no */ + x >>= 63; /* 1: yes; 0: no */ + return (byte)x; + } + + static void cmov(ref GroupElementPreComp t, ref GroupElementPreComp u, byte b) + { + FieldOperations.fe_cmov(ref t.yplusx, ref u.yplusx, b); + FieldOperations.fe_cmov(ref t.yminusx, ref u.yminusx, b); + FieldOperations.fe_cmov(ref t.xy2d, ref u.xy2d, b); + } + + static void select(out GroupElementPreComp t, int pos, sbyte b) + { + GroupElementPreComp minust; + var bnegative = negative(b); + var babs = (byte)(b - (((-bnegative) & b) << 1)); + + ge_precomp_0(out t); + var table = LookupTables.Base[pos]; + cmov(ref t, ref table[0], equal(babs, 1)); + cmov(ref t, ref table[1], equal(babs, 2)); + cmov(ref t, ref table[2], equal(babs, 3)); + cmov(ref t, ref table[3], equal(babs, 4)); + cmov(ref t, ref table[4], equal(babs, 5)); + cmov(ref t, ref table[5], equal(babs, 6)); + cmov(ref t, ref table[6], equal(babs, 7)); + cmov(ref t, ref table[7], equal(babs, 8)); + minust.yplusx = t.yminusx; + minust.yminusx = t.yplusx; + FieldOperations.fe_neg(out minust.xy2d, ref t.xy2d); + cmov(ref t, ref minust, bnegative); + } + + /* + h = a * B + where a = a[0]+256*a[1]+...+256^31 a[31] + B is the Ed25519 base point (x,4/5) with x positive. + + Preconditions: + a[31] <= 127 + */ + + public static void ge_scalarmult_base(out GroupElementP3 h, byte[] a, int offset) + { + // todo: Perhaps remove this allocation + var e = new sbyte[64]; + sbyte carry; + + GroupElementP1P1 r; + GroupElementP2 s; + GroupElementPreComp t; + + for (int i = 0; i < 32; ++i) + { + e[2 * i + 0] = (sbyte)((a[offset + i] >> 0) & 15); + e[2 * i + 1] = (sbyte)((a[offset + i] >> 4) & 15); + } + /* each e[i] is between 0 and 15 */ + /* e[63] is between 0 and 7 */ + + carry = 0; + for (int i = 0; i < 63; ++i) + { + e[i] += carry; + carry = (sbyte)(e[i] + 8); + carry >>= 4; + e[i] -= (sbyte)(carry << 4); + } + e[63] += carry; + /* each e[i] is between -8 and 8 */ + + ge_p3_0(out h); + for (int i = 1; i < 64; i += 2) + { + select(out t, i / 2, e[i]); + ge_madd(out r, ref h, ref t); ge_p1p1_to_p3(out h, ref r); + } + + ge_p3_dbl(out r, ref h); ge_p1p1_to_p2(out s, ref r); + ge_p2_dbl(out r, ref s); ge_p1p1_to_p2(out s, ref r); + ge_p2_dbl(out r, ref s); ge_p1p1_to_p2(out s, ref r); + ge_p2_dbl(out r, ref s); ge_p1p1_to_p3(out h, ref r); + + for (int i = 0; i < 64; i += 2) + { + select(out t, i / 2, e[i]); + ge_madd(out r, ref h, ref t); ge_p1p1_to_p3(out h, ref r); + } + } + + } +} \ No newline at end of file diff --git a/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_sub.cs b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_sub.cs new file mode 100644 index 000000000..c0b9ba5a2 --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/ge_sub.cs @@ -0,0 +1,74 @@ +using System; + +namespace Discord.Net.ED25519.Ed25519Ref10 +{ + internal static partial class GroupOperations + { + /* + r = p - q + */ + + public static void ge_sub(out GroupElementP1P1 r, ref GroupElementP3 p, ref GroupElementCached q) + { + FieldElement t0; + + /* qhasm: YpX1 = Y1+X1 */ + /* asm 1: fe_add(>YpX1=fe#1,YpX1=r.X,YmX1=fe#2,YmX1=r.Y,A=fe#3,A=r.Z,B=fe#2,B=r.Y,C=fe#4,C=r.T,ZZ=fe#1,ZZ=r.X,D=fe#5,D=t0,X3=fe#1,X3=r.X,Y3=fe#2,Y3=r.Y,Z3=fe#3,Z3=r.Z,T3=fe#4,T3=r.T,> 5); + long a2 = 2097151 & (load_3(a, 5) >> 2); + long a3 = 2097151 & (load_4(a, 7) >> 7); + long a4 = 2097151 & (load_4(a, 10) >> 4); + long a5 = 2097151 & (load_3(a, 13) >> 1); + long a6 = 2097151 & (load_4(a, 15) >> 6); + long a7 = 2097151 & (load_3(a, 18) >> 3); + long a8 = 2097151 & load_3(a, 21); + long a9 = 2097151 & (load_4(a, 23) >> 5); + long a10 = 2097151 & (load_3(a, 26) >> 2); + long a11 = (load_4(a, 28) >> 7); + long b0 = 2097151 & load_3(b, 0); + long b1 = 2097151 & (load_4(b, 2) >> 5); + long b2 = 2097151 & (load_3(b, 5) >> 2); + long b3 = 2097151 & (load_4(b, 7) >> 7); + long b4 = 2097151 & (load_4(b, 10) >> 4); + long b5 = 2097151 & (load_3(b, 13) >> 1); + long b6 = 2097151 & (load_4(b, 15) >> 6); + long b7 = 2097151 & (load_3(b, 18) >> 3); + long b8 = 2097151 & load_3(b, 21); + long b9 = 2097151 & (load_4(b, 23) >> 5); + long b10 = 2097151 & (load_3(b, 26) >> 2); + long b11 = (load_4(b, 28) >> 7); + long c0 = 2097151 & load_3(c, 0); + long c1 = 2097151 & (load_4(c, 2) >> 5); + long c2 = 2097151 & (load_3(c, 5) >> 2); + long c3 = 2097151 & (load_4(c, 7) >> 7); + long c4 = 2097151 & (load_4(c, 10) >> 4); + long c5 = 2097151 & (load_3(c, 13) >> 1); + long c6 = 2097151 & (load_4(c, 15) >> 6); + long c7 = 2097151 & (load_3(c, 18) >> 3); + long c8 = 2097151 & load_3(c, 21); + long c9 = 2097151 & (load_4(c, 23) >> 5); + long c10 = 2097151 & (load_3(c, 26) >> 2); + long c11 = (load_4(c, 28) >> 7); + long s0; + long s1; + long s2; + long s3; + long s4; + long s5; + long s6; + long s7; + long s8; + long s9; + long s10; + long s11; + long s12; + long s13; + long s14; + long s15; + long s16; + long s17; + long s18; + long s19; + long s20; + long s21; + long s22; + long s23; + long carry0; + long carry1; + long carry2; + long carry3; + long carry4; + long carry5; + long carry6; + long carry7; + long carry8; + long carry9; + long carry10; + long carry11; + long carry12; + long carry13; + long carry14; + long carry15; + long carry16; + long carry17; + long carry18; + long carry19; + long carry20; + long carry21; + long carry22; + + s0 = c0 + a0 * b0; + s1 = c1 + a0 * b1 + a1 * b0; + s2 = c2 + a0 * b2 + a1 * b1 + a2 * b0; + s3 = c3 + a0 * b3 + a1 * b2 + a2 * b1 + a3 * b0; + s4 = c4 + a0 * b4 + a1 * b3 + a2 * b2 + a3 * b1 + a4 * b0; + s5 = c5 + a0 * b5 + a1 * b4 + a2 * b3 + a3 * b2 + a4 * b1 + a5 * b0; + s6 = c6 + a0 * b6 + a1 * b5 + a2 * b4 + a3 * b3 + a4 * b2 + a5 * b1 + a6 * b0; + s7 = c7 + a0 * b7 + a1 * b6 + a2 * b5 + a3 * b4 + a4 * b3 + a5 * b2 + a6 * b1 + a7 * b0; + s8 = c8 + a0 * b8 + a1 * b7 + a2 * b6 + a3 * b5 + a4 * b4 + a5 * b3 + a6 * b2 + a7 * b1 + a8 * b0; + s9 = c9 + a0 * b9 + a1 * b8 + a2 * b7 + a3 * b6 + a4 * b5 + a5 * b4 + a6 * b3 + a7 * b2 + a8 * b1 + a9 * b0; + s10 = c10 + a0 * b10 + a1 * b9 + a2 * b8 + a3 * b7 + a4 * b6 + a5 * b5 + a6 * b4 + a7 * b3 + a8 * b2 + a9 * b1 + a10 * b0; + s11 = c11 + a0 * b11 + a1 * b10 + a2 * b9 + a3 * b8 + a4 * b7 + a5 * b6 + a6 * b5 + a7 * b4 + a8 * b3 + a9 * b2 + a10 * b1 + a11 * b0; + s12 = a1 * b11 + a2 * b10 + a3 * b9 + a4 * b8 + a5 * b7 + a6 * b6 + a7 * b5 + a8 * b4 + a9 * b3 + a10 * b2 + a11 * b1; + s13 = a2 * b11 + a3 * b10 + a4 * b9 + a5 * b8 + a6 * b7 + a7 * b6 + a8 * b5 + a9 * b4 + a10 * b3 + a11 * b2; + s14 = a3 * b11 + a4 * b10 + a5 * b9 + a6 * b8 + a7 * b7 + a8 * b6 + a9 * b5 + a10 * b4 + a11 * b3; + s15 = a4 * b11 + a5 * b10 + a6 * b9 + a7 * b8 + a8 * b7 + a9 * b6 + a10 * b5 + a11 * b4; + s16 = a5 * b11 + a6 * b10 + a7 * b9 + a8 * b8 + a9 * b7 + a10 * b6 + a11 * b5; + s17 = a6 * b11 + a7 * b10 + a8 * b9 + a9 * b8 + a10 * b7 + a11 * b6; + s18 = a7 * b11 + a8 * b10 + a9 * b9 + a10 * b8 + a11 * b7; + s19 = a8 * b11 + a9 * b10 + a10 * b9 + a11 * b8; + s20 = a9 * b11 + a10 * b10 + a11 * b9; + s21 = a10 * b11 + a11 * b10; + s22 = a11 * b11; + s23 = 0; + + carry0 = (s0 + (1 << 20)) >> 21; s1 += carry0; s0 -= carry0 << 21; + carry2 = (s2 + (1 << 20)) >> 21; s3 += carry2; s2 -= carry2 << 21; + carry4 = (s4 + (1 << 20)) >> 21; s5 += carry4; s4 -= carry4 << 21; + carry6 = (s6 + (1 << 20)) >> 21; s7 += carry6; s6 -= carry6 << 21; + carry8 = (s8 + (1 << 20)) >> 21; s9 += carry8; s8 -= carry8 << 21; + carry10 = (s10 + (1 << 20)) >> 21; s11 += carry10; s10 -= carry10 << 21; + carry12 = (s12 + (1 << 20)) >> 21; s13 += carry12; s12 -= carry12 << 21; + carry14 = (s14 + (1 << 20)) >> 21; s15 += carry14; s14 -= carry14 << 21; + carry16 = (s16 + (1 << 20)) >> 21; s17 += carry16; s16 -= carry16 << 21; + carry18 = (s18 + (1 << 20)) >> 21; s19 += carry18; s18 -= carry18 << 21; + carry20 = (s20 + (1 << 20)) >> 21; s21 += carry20; s20 -= carry20 << 21; + carry22 = (s22 + (1 << 20)) >> 21; s23 += carry22; s22 -= carry22 << 21; + + carry1 = (s1 + (1 << 20)) >> 21; s2 += carry1; s1 -= carry1 << 21; + carry3 = (s3 + (1 << 20)) >> 21; s4 += carry3; s3 -= carry3 << 21; + carry5 = (s5 + (1 << 20)) >> 21; s6 += carry5; s5 -= carry5 << 21; + carry7 = (s7 + (1 << 20)) >> 21; s8 += carry7; s7 -= carry7 << 21; + carry9 = (s9 + (1 << 20)) >> 21; s10 += carry9; s9 -= carry9 << 21; + carry11 = (s11 + (1 << 20)) >> 21; s12 += carry11; s11 -= carry11 << 21; + carry13 = (s13 + (1 << 20)) >> 21; s14 += carry13; s13 -= carry13 << 21; + carry15 = (s15 + (1 << 20)) >> 21; s16 += carry15; s15 -= carry15 << 21; + carry17 = (s17 + (1 << 20)) >> 21; s18 += carry17; s17 -= carry17 << 21; + carry19 = (s19 + (1 << 20)) >> 21; s20 += carry19; s19 -= carry19 << 21; + carry21 = (s21 + (1 << 20)) >> 21; s22 += carry21; s21 -= carry21 << 21; + + s11 += s23 * 666643; + s12 += s23 * 470296; + s13 += s23 * 654183; + s14 -= s23 * 997805; + s15 += s23 * 136657; + s16 -= s23 * 683901; + s23 = 0; + + s10 += s22 * 666643; + s11 += s22 * 470296; + s12 += s22 * 654183; + s13 -= s22 * 997805; + s14 += s22 * 136657; + s15 -= s22 * 683901; + s22 = 0; + + s9 += s21 * 666643; + s10 += s21 * 470296; + s11 += s21 * 654183; + s12 -= s21 * 997805; + s13 += s21 * 136657; + s14 -= s21 * 683901; + s21 = 0; + + s8 += s20 * 666643; + s9 += s20 * 470296; + s10 += s20 * 654183; + s11 -= s20 * 997805; + s12 += s20 * 136657; + s13 -= s20 * 683901; + s20 = 0; + + s7 += s19 * 666643; + s8 += s19 * 470296; + s9 += s19 * 654183; + s10 -= s19 * 997805; + s11 += s19 * 136657; + s12 -= s19 * 683901; + s19 = 0; + + s6 += s18 * 666643; + s7 += s18 * 470296; + s8 += s18 * 654183; + s9 -= s18 * 997805; + s10 += s18 * 136657; + s11 -= s18 * 683901; + s18 = 0; + + carry6 = (s6 + (1 << 20)) >> 21; s7 += carry6; s6 -= carry6 << 21; + carry8 = (s8 + (1 << 20)) >> 21; s9 += carry8; s8 -= carry8 << 21; + carry10 = (s10 + (1 << 20)) >> 21; s11 += carry10; s10 -= carry10 << 21; + carry12 = (s12 + (1 << 20)) >> 21; s13 += carry12; s12 -= carry12 << 21; + carry14 = (s14 + (1 << 20)) >> 21; s15 += carry14; s14 -= carry14 << 21; + carry16 = (s16 + (1 << 20)) >> 21; s17 += carry16; s16 -= carry16 << 21; + + carry7 = (s7 + (1 << 20)) >> 21; s8 += carry7; s7 -= carry7 << 21; + carry9 = (s9 + (1 << 20)) >> 21; s10 += carry9; s9 -= carry9 << 21; + carry11 = (s11 + (1 << 20)) >> 21; s12 += carry11; s11 -= carry11 << 21; + carry13 = (s13 + (1 << 20)) >> 21; s14 += carry13; s13 -= carry13 << 21; + carry15 = (s15 + (1 << 20)) >> 21; s16 += carry15; s15 -= carry15 << 21; + + s5 += s17 * 666643; + s6 += s17 * 470296; + s7 += s17 * 654183; + s8 -= s17 * 997805; + s9 += s17 * 136657; + s10 -= s17 * 683901; + s17 = 0; + + s4 += s16 * 666643; + s5 += s16 * 470296; + s6 += s16 * 654183; + s7 -= s16 * 997805; + s8 += s16 * 136657; + s9 -= s16 * 683901; + s16 = 0; + + s3 += s15 * 666643; + s4 += s15 * 470296; + s5 += s15 * 654183; + s6 -= s15 * 997805; + s7 += s15 * 136657; + s8 -= s15 * 683901; + s15 = 0; + + s2 += s14 * 666643; + s3 += s14 * 470296; + s4 += s14 * 654183; + s5 -= s14 * 997805; + s6 += s14 * 136657; + s7 -= s14 * 683901; + s14 = 0; + + s1 += s13 * 666643; + s2 += s13 * 470296; + s3 += s13 * 654183; + s4 -= s13 * 997805; + s5 += s13 * 136657; + s6 -= s13 * 683901; + s13 = 0; + + s0 += s12 * 666643; + s1 += s12 * 470296; + s2 += s12 * 654183; + s3 -= s12 * 997805; + s4 += s12 * 136657; + s5 -= s12 * 683901; + s12 = 0; + + carry0 = (s0 + (1 << 20)) >> 21; s1 += carry0; s0 -= carry0 << 21; + carry2 = (s2 + (1 << 20)) >> 21; s3 += carry2; s2 -= carry2 << 21; + carry4 = (s4 + (1 << 20)) >> 21; s5 += carry4; s4 -= carry4 << 21; + carry6 = (s6 + (1 << 20)) >> 21; s7 += carry6; s6 -= carry6 << 21; + carry8 = (s8 + (1 << 20)) >> 21; s9 += carry8; s8 -= carry8 << 21; + carry10 = (s10 + (1 << 20)) >> 21; s11 += carry10; s10 -= carry10 << 21; + + carry1 = (s1 + (1 << 20)) >> 21; s2 += carry1; s1 -= carry1 << 21; + carry3 = (s3 + (1 << 20)) >> 21; s4 += carry3; s3 -= carry3 << 21; + carry5 = (s5 + (1 << 20)) >> 21; s6 += carry5; s5 -= carry5 << 21; + carry7 = (s7 + (1 << 20)) >> 21; s8 += carry7; s7 -= carry7 << 21; + carry9 = (s9 + (1 << 20)) >> 21; s10 += carry9; s9 -= carry9 << 21; + carry11 = (s11 + (1 << 20)) >> 21; s12 += carry11; s11 -= carry11 << 21; + + s0 += s12 * 666643; + s1 += s12 * 470296; + s2 += s12 * 654183; + s3 -= s12 * 997805; + s4 += s12 * 136657; + s5 -= s12 * 683901; + s12 = 0; + + carry0 = s0 >> 21; s1 += carry0; s0 -= carry0 << 21; + carry1 = s1 >> 21; s2 += carry1; s1 -= carry1 << 21; + carry2 = s2 >> 21; s3 += carry2; s2 -= carry2 << 21; + carry3 = s3 >> 21; s4 += carry3; s3 -= carry3 << 21; + carry4 = s4 >> 21; s5 += carry4; s4 -= carry4 << 21; + carry5 = s5 >> 21; s6 += carry5; s5 -= carry5 << 21; + carry6 = s6 >> 21; s7 += carry6; s6 -= carry6 << 21; + carry7 = s7 >> 21; s8 += carry7; s7 -= carry7 << 21; + carry8 = s8 >> 21; s9 += carry8; s8 -= carry8 << 21; + carry9 = s9 >> 21; s10 += carry9; s9 -= carry9 << 21; + carry10 = s10 >> 21; s11 += carry10; s10 -= carry10 << 21; + carry11 = s11 >> 21; s12 += carry11; s11 -= carry11 << 21; + + s0 += s12 * 666643; + s1 += s12 * 470296; + s2 += s12 * 654183; + s3 -= s12 * 997805; + s4 += s12 * 136657; + s5 -= s12 * 683901; + s12 = 0; + + carry0 = s0 >> 21; s1 += carry0; s0 -= carry0 << 21; + carry1 = s1 >> 21; s2 += carry1; s1 -= carry1 << 21; + carry2 = s2 >> 21; s3 += carry2; s2 -= carry2 << 21; + carry3 = s3 >> 21; s4 += carry3; s3 -= carry3 << 21; + carry4 = s4 >> 21; s5 += carry4; s4 -= carry4 << 21; + carry5 = s5 >> 21; s6 += carry5; s5 -= carry5 << 21; + carry6 = s6 >> 21; s7 += carry6; s6 -= carry6 << 21; + carry7 = s7 >> 21; s8 += carry7; s7 -= carry7 << 21; + carry8 = s8 >> 21; s9 += carry8; s8 -= carry8 << 21; + carry9 = s9 >> 21; s10 += carry9; s9 -= carry9 << 21; + carry10 = s10 >> 21; s11 += carry10; s10 -= carry10 << 21; + + unchecked + { + s[0] = (byte)(s0 >> 0); + s[1] = (byte)(s0 >> 8); + s[2] = (byte)((s0 >> 16) | (s1 << 5)); + s[3] = (byte)(s1 >> 3); + s[4] = (byte)(s1 >> 11); + s[5] = (byte)((s1 >> 19) | (s2 << 2)); + s[6] = (byte)(s2 >> 6); + s[7] = (byte)((s2 >> 14) | (s3 << 7)); + s[8] = (byte)(s3 >> 1); + s[9] = (byte)(s3 >> 9); + s[10] = (byte)((s3 >> 17) | (s4 << 4)); + s[11] = (byte)(s4 >> 4); + s[12] = (byte)(s4 >> 12); + s[13] = (byte)((s4 >> 20) | (s5 << 1)); + s[14] = (byte)(s5 >> 7); + s[15] = (byte)((s5 >> 15) | (s6 << 6)); + s[16] = (byte)(s6 >> 2); + s[17] = (byte)(s6 >> 10); + s[18] = (byte)((s6 >> 18) | (s7 << 3)); + s[19] = (byte)(s7 >> 5); + s[20] = (byte)(s7 >> 13); + s[21] = (byte)(s8 >> 0); + s[22] = (byte)(s8 >> 8); + s[23] = (byte)((s8 >> 16) | (s9 << 5)); + s[24] = (byte)(s9 >> 3); + s[25] = (byte)(s9 >> 11); + s[26] = (byte)((s9 >> 19) | (s10 << 2)); + s[27] = (byte)(s10 >> 6); + s[28] = (byte)((s10 >> 14) | (s11 << 7)); + s[29] = (byte)(s11 >> 1); + s[30] = (byte)(s11 >> 9); + s[31] = (byte)(s11 >> 17); + } + } + } +} \ No newline at end of file diff --git a/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/sc_reduce.cs b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/sc_reduce.cs new file mode 100644 index 000000000..d3554455f --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/sc_reduce.cs @@ -0,0 +1,264 @@ +using System; + +namespace Discord.Net.ED25519.Ed25519Ref10 +{ + internal static partial class ScalarOperations + { + /* + Input: + s[0]+256*s[1]+...+256^63*s[63] = s + + Output: + s[0]+256*s[1]+...+256^31*s[31] = s mod l + where l = 2^252 + 27742317777372353535851937790883648493. + Overwrites s in place. + */ + + public static void sc_reduce(byte[] s) + { + long s0 = 2097151 & load_3(s, 0); + long s1 = 2097151 & (load_4(s, 2) >> 5); + long s2 = 2097151 & (load_3(s, 5) >> 2); + long s3 = 2097151 & (load_4(s, 7) >> 7); + long s4 = 2097151 & (load_4(s, 10) >> 4); + long s5 = 2097151 & (load_3(s, 13) >> 1); + long s6 = 2097151 & (load_4(s, 15) >> 6); + long s7 = 2097151 & (load_3(s, 18) >> 3); + long s8 = 2097151 & load_3(s, 21); + long s9 = 2097151 & (load_4(s, 23) >> 5); + long s10 = 2097151 & (load_3(s, 26) >> 2); + long s11 = 2097151 & (load_4(s, 28) >> 7); + long s12 = 2097151 & (load_4(s, 31) >> 4); + long s13 = 2097151 & (load_3(s, 34) >> 1); + long s14 = 2097151 & (load_4(s, 36) >> 6); + long s15 = 2097151 & (load_3(s, 39) >> 3); + long s16 = 2097151 & load_3(s, 42); + long s17 = 2097151 & (load_4(s, 44) >> 5); + long s18 = 2097151 & (load_3(s, 47) >> 2); + long s19 = 2097151 & (load_4(s, 49) >> 7); + long s20 = 2097151 & (load_4(s, 52) >> 4); + long s21 = 2097151 & (load_3(s, 55) >> 1); + long s22 = 2097151 & (load_4(s, 57) >> 6); + long s23 = (load_4(s, 60) >> 3); + + long carry0; + long carry1; + long carry2; + long carry3; + long carry4; + long carry5; + long carry6; + long carry7; + long carry8; + long carry9; + long carry10; + long carry11; + long carry12; + long carry13; + long carry14; + long carry15; + long carry16; + + s11 += s23 * 666643; + s12 += s23 * 470296; + s13 += s23 * 654183; + s14 -= s23 * 997805; + s15 += s23 * 136657; + s16 -= s23 * 683901; + s23 = 0; + + s10 += s22 * 666643; + s11 += s22 * 470296; + s12 += s22 * 654183; + s13 -= s22 * 997805; + s14 += s22 * 136657; + s15 -= s22 * 683901; + s22 = 0; + + s9 += s21 * 666643; + s10 += s21 * 470296; + s11 += s21 * 654183; + s12 -= s21 * 997805; + s13 += s21 * 136657; + s14 -= s21 * 683901; + s21 = 0; + + s8 += s20 * 666643; + s9 += s20 * 470296; + s10 += s20 * 654183; + s11 -= s20 * 997805; + s12 += s20 * 136657; + s13 -= s20 * 683901; + s20 = 0; + + s7 += s19 * 666643; + s8 += s19 * 470296; + s9 += s19 * 654183; + s10 -= s19 * 997805; + s11 += s19 * 136657; + s12 -= s19 * 683901; + s19 = 0; + + s6 += s18 * 666643; + s7 += s18 * 470296; + s8 += s18 * 654183; + s9 -= s18 * 997805; + s10 += s18 * 136657; + s11 -= s18 * 683901; + s18 = 0; + + carry6 = (s6 + (1 << 20)) >> 21; s7 += carry6; s6 -= carry6 << 21; + carry8 = (s8 + (1 << 20)) >> 21; s9 += carry8; s8 -= carry8 << 21; + carry10 = (s10 + (1 << 20)) >> 21; s11 += carry10; s10 -= carry10 << 21; + carry12 = (s12 + (1 << 20)) >> 21; s13 += carry12; s12 -= carry12 << 21; + carry14 = (s14 + (1 << 20)) >> 21; s15 += carry14; s14 -= carry14 << 21; + carry16 = (s16 + (1 << 20)) >> 21; s17 += carry16; s16 -= carry16 << 21; + + carry7 = (s7 + (1 << 20)) >> 21; s8 += carry7; s7 -= carry7 << 21; + carry9 = (s9 + (1 << 20)) >> 21; s10 += carry9; s9 -= carry9 << 21; + carry11 = (s11 + (1 << 20)) >> 21; s12 += carry11; s11 -= carry11 << 21; + carry13 = (s13 + (1 << 20)) >> 21; s14 += carry13; s13 -= carry13 << 21; + carry15 = (s15 + (1 << 20)) >> 21; s16 += carry15; s15 -= carry15 << 21; + + s5 += s17 * 666643; + s6 += s17 * 470296; + s7 += s17 * 654183; + s8 -= s17 * 997805; + s9 += s17 * 136657; + s10 -= s17 * 683901; + s17 = 0; + + s4 += s16 * 666643; + s5 += s16 * 470296; + s6 += s16 * 654183; + s7 -= s16 * 997805; + s8 += s16 * 136657; + s9 -= s16 * 683901; + s16 = 0; + + s3 += s15 * 666643; + s4 += s15 * 470296; + s5 += s15 * 654183; + s6 -= s15 * 997805; + s7 += s15 * 136657; + s8 -= s15 * 683901; + s15 = 0; + + s2 += s14 * 666643; + s3 += s14 * 470296; + s4 += s14 * 654183; + s5 -= s14 * 997805; + s6 += s14 * 136657; + s7 -= s14 * 683901; + s14 = 0; + + s1 += s13 * 666643; + s2 += s13 * 470296; + s3 += s13 * 654183; + s4 -= s13 * 997805; + s5 += s13 * 136657; + s6 -= s13 * 683901; + s13 = 0; + + s0 += s12 * 666643; + s1 += s12 * 470296; + s2 += s12 * 654183; + s3 -= s12 * 997805; + s4 += s12 * 136657; + s5 -= s12 * 683901; + s12 = 0; + + carry0 = (s0 + (1 << 20)) >> 21; s1 += carry0; s0 -= carry0 << 21; + carry2 = (s2 + (1 << 20)) >> 21; s3 += carry2; s2 -= carry2 << 21; + carry4 = (s4 + (1 << 20)) >> 21; s5 += carry4; s4 -= carry4 << 21; + carry6 = (s6 + (1 << 20)) >> 21; s7 += carry6; s6 -= carry6 << 21; + carry8 = (s8 + (1 << 20)) >> 21; s9 += carry8; s8 -= carry8 << 21; + carry10 = (s10 + (1 << 20)) >> 21; s11 += carry10; s10 -= carry10 << 21; + + carry1 = (s1 + (1 << 20)) >> 21; s2 += carry1; s1 -= carry1 << 21; + carry3 = (s3 + (1 << 20)) >> 21; s4 += carry3; s3 -= carry3 << 21; + carry5 = (s5 + (1 << 20)) >> 21; s6 += carry5; s5 -= carry5 << 21; + carry7 = (s7 + (1 << 20)) >> 21; s8 += carry7; s7 -= carry7 << 21; + carry9 = (s9 + (1 << 20)) >> 21; s10 += carry9; s9 -= carry9 << 21; + carry11 = (s11 + (1 << 20)) >> 21; s12 += carry11; s11 -= carry11 << 21; + + s0 += s12 * 666643; + s1 += s12 * 470296; + s2 += s12 * 654183; + s3 -= s12 * 997805; + s4 += s12 * 136657; + s5 -= s12 * 683901; + s12 = 0; + + carry0 = s0 >> 21; s1 += carry0; s0 -= carry0 << 21; + carry1 = s1 >> 21; s2 += carry1; s1 -= carry1 << 21; + carry2 = s2 >> 21; s3 += carry2; s2 -= carry2 << 21; + carry3 = s3 >> 21; s4 += carry3; s3 -= carry3 << 21; + carry4 = s4 >> 21; s5 += carry4; s4 -= carry4 << 21; + carry5 = s5 >> 21; s6 += carry5; s5 -= carry5 << 21; + carry6 = s6 >> 21; s7 += carry6; s6 -= carry6 << 21; + carry7 = s7 >> 21; s8 += carry7; s7 -= carry7 << 21; + carry8 = s8 >> 21; s9 += carry8; s8 -= carry8 << 21; + carry9 = s9 >> 21; s10 += carry9; s9 -= carry9 << 21; + carry10 = s10 >> 21; s11 += carry10; s10 -= carry10 << 21; + carry11 = s11 >> 21; s12 += carry11; s11 -= carry11 << 21; + + s0 += s12 * 666643; + s1 += s12 * 470296; + s2 += s12 * 654183; + s3 -= s12 * 997805; + s4 += s12 * 136657; + s5 -= s12 * 683901; + s12 = 0; + + carry0 = s0 >> 21; s1 += carry0; s0 -= carry0 << 21; + carry1 = s1 >> 21; s2 += carry1; s1 -= carry1 << 21; + carry2 = s2 >> 21; s3 += carry2; s2 -= carry2 << 21; + carry3 = s3 >> 21; s4 += carry3; s3 -= carry3 << 21; + carry4 = s4 >> 21; s5 += carry4; s4 -= carry4 << 21; + carry5 = s5 >> 21; s6 += carry5; s5 -= carry5 << 21; + carry6 = s6 >> 21; s7 += carry6; s6 -= carry6 << 21; + carry7 = s7 >> 21; s8 += carry7; s7 -= carry7 << 21; + carry8 = s8 >> 21; s9 += carry8; s8 -= carry8 << 21; + carry9 = s9 >> 21; s10 += carry9; s9 -= carry9 << 21; + carry10 = s10 >> 21; s11 += carry10; s10 -= carry10 << 21; + + unchecked + { + s[0] = (byte)(s0 >> 0); + s[1] = (byte)(s0 >> 8); + s[2] = (byte)((s0 >> 16) | (s1 << 5)); + s[3] = (byte)(s1 >> 3); + s[4] = (byte)(s1 >> 11); + s[5] = (byte)((s1 >> 19) | (s2 << 2)); + s[6] = (byte)(s2 >> 6); + s[7] = (byte)((s2 >> 14) | (s3 << 7)); + s[8] = (byte)(s3 >> 1); + s[9] = (byte)(s3 >> 9); + s[10] = (byte)((s3 >> 17) | (s4 << 4)); + s[11] = (byte)(s4 >> 4); + s[12] = (byte)(s4 >> 12); + s[13] = (byte)((s4 >> 20) | (s5 << 1)); + s[14] = (byte)(s5 >> 7); + s[15] = (byte)((s5 >> 15) | (s6 << 6)); + s[16] = (byte)(s6 >> 2); + s[17] = (byte)(s6 >> 10); + s[18] = (byte)((s6 >> 18) | (s7 << 3)); + s[19] = (byte)(s7 >> 5); + s[20] = (byte)(s7 >> 13); + s[21] = (byte)(s8 >> 0); + s[22] = (byte)(s8 >> 8); + s[23] = (byte)((s8 >> 16) | (s9 << 5)); + s[24] = (byte)(s9 >> 3); + s[25] = (byte)(s9 >> 11); + s[26] = (byte)((s9 >> 19) | (s10 << 2)); + s[27] = (byte)(s10 >> 6); + s[28] = (byte)((s10 >> 14) | (s11 << 7)); + s[29] = (byte)(s11 >> 1); + s[30] = (byte)(s11 >> 9); + s[31] = (byte)(s11 >> 17); + } + } + + } +} \ No newline at end of file diff --git a/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/scalarmult.cs b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/scalarmult.cs new file mode 100644 index 000000000..3a7d8feea --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Ed25519Ref10/scalarmult.cs @@ -0,0 +1,153 @@ +using System; + +namespace Discord.Net.ED25519.Ed25519Ref10 +{ + public static class MontgomeryOperations + { + public static void scalarmult( + byte[] q, int qoffset, + byte[] n, int noffset, + byte[] p, int poffset) + { + FieldElement p0, q0; + FieldOperations.fe_frombytes2(out p0, p, poffset); + scalarmult(out q0, n, noffset, ref p0); + FieldOperations.fe_tobytes(q, qoffset, ref q0); + } + + internal static void scalarmult( + out FieldElement q, + byte[] n, int noffset, + ref FieldElement p) + { + byte[] e = new byte[32];//ToDo: remove allocation + FieldElement x1, x2, x3; + FieldElement z2, z3; + FieldElement tmp0, tmp1; + + for (int i = 0; i < 32; ++i) + e[i] = n[noffset + i]; + ScalarOperations.sc_clamp(e, 0); + x1 = p; + FieldOperations.fe_1(out x2); + FieldOperations.fe_0(out z2); + x3 = x1; + FieldOperations.fe_1(out z3); + + uint swap = 0; + for (int pos = 254; pos >= 0; --pos) + { + uint b = (uint)(e[pos / 8] >> (pos & 7)); + b &= 1; + swap ^= b; + FieldOperations.fe_cswap(ref x2, ref x3, swap); + FieldOperations.fe_cswap(ref z2, ref z3, swap); + swap = b; + + /* qhasm: enter ladder */ + + /* qhasm: D = X3-Z3 */ + /* asm 1: fe_sub(>D=fe#5,D=tmp0,B=fe#6,B=tmp1,A=fe#1,A=x2,C=fe#2,C=z2,DA=fe#4,DA=z3,CB=fe#2,CB=z2,BB=fe#5,BB=tmp0,AA=fe#6,AA=tmp1,t0=fe#3,t0=x3,t1=fe#2,t1=z2,X4=fe#1,X4=x2,E=fe#6,E=tmp1,t2=fe#2,t2=z2,t3=fe#4,t3=z3,X5=fe#3,X5=x3,t4=fe#5,t4=tmp0,Z5=fe#4,x1,Z5=z3,x1,Z4=fe#2,Z4=z2, _state; + private readonly byte[] _buffer; + private ulong _totalBytes; + public const int BlockSize = 128; + private static readonly byte[] _padding = new byte[] { 0x80 }; + + /// + /// Allocation and initialization of the new SHA-512 object. + /// + public Sha512() + { + _buffer = new byte[BlockSize];//todo: remove allocation + Init(); + } + + /// + /// Performs an initialization of internal SHA-512 state. + /// + public void Init() + { + Sha512Internal.Sha512Init(out _state); + _totalBytes = 0; + } + + /// + /// Updates internal state with data from the provided array segment. + /// + /// Array segment + public void Update(ArraySegment data) + { + Update(data.Array, data.Offset, data.Count); + } + + /// + /// Updates internal state with data from the provided array. + /// + /// Array of bytes + /// Offset of byte sequence + /// Sequence length + public void Update(byte[] data, int index, int length) + { + + Array16 block; + int bytesInBuffer = (int)_totalBytes & (BlockSize - 1); + _totalBytes += (uint)length; + + if (_totalBytes >= ulong.MaxValue / 8) + throw new InvalidOperationException("Too much data"); + // Fill existing buffer + if (bytesInBuffer != 0) + { + var toCopy = Math.Min(BlockSize - bytesInBuffer, length); + Buffer.BlockCopy(data, index, _buffer, bytesInBuffer, toCopy); + index += toCopy; + length -= toCopy; + bytesInBuffer += toCopy; + if (bytesInBuffer == BlockSize) + { + ByteIntegerConverter.Array16LoadBigEndian64(out block, _buffer, 0); + Sha512Internal.Core(out _state, ref _state, ref block); + CryptoBytes.InternalWipe(_buffer, 0, _buffer.Length); + bytesInBuffer = 0; + } + } + // Hash complete blocks without copying + while (length >= BlockSize) + { + ByteIntegerConverter.Array16LoadBigEndian64(out block, data, index); + Sha512Internal.Core(out _state, ref _state, ref block); + index += BlockSize; + length -= BlockSize; + } + // Copy remainder into buffer + if (length > 0) + { + Buffer.BlockCopy(data, index, _buffer, bytesInBuffer, length); + } + } + + /// + /// Finalizes SHA-512 hashing + /// + /// Output buffer + public void Finalize(ArraySegment output) + { + Preconditions.NotNull(output.Array, nameof(output)); + if (output.Count != 64) + throw new ArgumentException("Output should be 64 in length"); + + Update(_padding, 0, _padding.Length); + Array16 block; + ByteIntegerConverter.Array16LoadBigEndian64(out block, _buffer, 0); + CryptoBytes.InternalWipe(_buffer, 0, _buffer.Length); + int bytesInBuffer = (int)_totalBytes & (BlockSize - 1); + if (bytesInBuffer > BlockSize - 16) + { + Sha512Internal.Core(out _state, ref _state, ref block); + block = default(Array16); + } + block.x15 = (_totalBytes - 1) * 8; + Sha512Internal.Core(out _state, ref _state, ref block); + + ByteIntegerConverter.StoreBigEndian64(output.Array, output.Offset + 0, _state.x0); + ByteIntegerConverter.StoreBigEndian64(output.Array, output.Offset + 8, _state.x1); + ByteIntegerConverter.StoreBigEndian64(output.Array, output.Offset + 16, _state.x2); + ByteIntegerConverter.StoreBigEndian64(output.Array, output.Offset + 24, _state.x3); + ByteIntegerConverter.StoreBigEndian64(output.Array, output.Offset + 32, _state.x4); + ByteIntegerConverter.StoreBigEndian64(output.Array, output.Offset + 40, _state.x5); + ByteIntegerConverter.StoreBigEndian64(output.Array, output.Offset + 48, _state.x6); + ByteIntegerConverter.StoreBigEndian64(output.Array, output.Offset + 56, _state.x7); + _state = default(Array8); + } + + /// + /// Finalizes SHA-512 hashing. + /// + /// Hash bytes + public byte[] Finalize() + { + var result = new byte[64]; + Finalize(new ArraySegment(result)); + return result; + } + + /// + /// Calculates SHA-512 hash value for the given bytes array. + /// + /// Data bytes array + /// Hash bytes + public static byte[] Hash(byte[] data) + { + return Hash(data, 0, data.Length); + } + + /// + /// Calculates SHA-512 hash value for the given bytes array. + /// + /// Data bytes array + /// Offset of byte sequence + /// Sequence length + /// Hash bytes + public static byte[] Hash(byte[] data, int index, int length) + { + var hasher = new Sha512(); + hasher.Update(data, index, length); + return hasher.Finalize(); + } + } +} diff --git a/src/Discord.Net.Rest/Net/ED25519/Sha512Internal.cs b/src/Discord.Net.Rest/Net/ED25519/Sha512Internal.cs new file mode 100644 index 000000000..df8842d8d --- /dev/null +++ b/src/Discord.Net.Rest/Net/ED25519/Sha512Internal.cs @@ -0,0 +1,447 @@ +using System; +using System.Collections.Generic; + +namespace Discord.Net.ED25519 +{ + internal static class Sha512Internal + { + private static readonly ulong[] K = new ulong[] + { + 0x428a2f98d728ae22,0x7137449123ef65cd,0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc, + 0x3956c25bf348b538,0x59f111f1b605d019,0x923f82a4af194f9b,0xab1c5ed5da6d8118, + 0xd807aa98a3030242,0x12835b0145706fbe,0x243185be4ee4b28c,0x550c7dc3d5ffb4e2, + 0x72be5d74f27b896f,0x80deb1fe3b1696b1,0x9bdc06a725c71235,0xc19bf174cf692694, + 0xe49b69c19ef14ad2,0xefbe4786384f25e3,0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65, + 0x2de92c6f592b0275,0x4a7484aa6ea6e483,0x5cb0a9dcbd41fbd4,0x76f988da831153b5, + 0x983e5152ee66dfab,0xa831c66d2db43210,0xb00327c898fb213f,0xbf597fc7beef0ee4, + 0xc6e00bf33da88fc2,0xd5a79147930aa725,0x06ca6351e003826f,0x142929670a0e6e70, + 0x27b70a8546d22ffc,0x2e1b21385c26c926,0x4d2c6dfc5ac42aed,0x53380d139d95b3df, + 0x650a73548baf63de,0x766a0abb3c77b2a8,0x81c2c92e47edaee6,0x92722c851482353b, + 0xa2bfe8a14cf10364,0xa81a664bbc423001,0xc24b8b70d0f89791,0xc76c51a30654be30, + 0xd192e819d6ef5218,0xd69906245565a910,0xf40e35855771202a,0x106aa07032bbd1b8, + 0x19a4c116b8d2d0c8,0x1e376c085141ab53,0x2748774cdf8eeb99,0x34b0bcb5e19b48a8, + 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb,0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3, + 0x748f82ee5defb2fc,0x78a5636f43172f60,0x84c87814a1f0ab72,0x8cc702081a6439ec, + 0x90befffa23631e28,0xa4506cebde82bde9,0xbef9a3f7b2c67915,0xc67178f2e372532b, + 0xca273eceea26619c,0xd186b8c721c0c207,0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178, + 0x06f067aa72176fba,0x0a637dc5a2c898a6,0x113f9804bef90dae,0x1b710b35131c471b, + 0x28db77f523047d84,0x32caab7b40c72493,0x3c9ebe0a15c9bebc,0x431d67c49c100d4c, + 0x4cc5d4becb3e42b6,0x597f299cfc657e2a,0x5fcb6fab3ad6faec,0x6c44198c4a475817 + }; + + internal static void Sha512Init(out Array8 state) + { + state.x0 = 0x6a09e667f3bcc908; + state.x1 = 0xbb67ae8584caa73b; + state.x2 = 0x3c6ef372fe94f82b; + state.x3 = 0xa54ff53a5f1d36f1; + state.x4 = 0x510e527fade682d1; + state.x5 = 0x9b05688c2b3e6c1f; + state.x6 = 0x1f83d9abfb41bd6b; + state.x7 = 0x5be0cd19137e2179; + } + + internal static void Core(out Array8 outputState, ref Array8 inputState, ref Array16 input) + { + unchecked + { + var a = inputState.x0; + var b = inputState.x1; + var c = inputState.x2; + var d = inputState.x3; + var e = inputState.x4; + var f = inputState.x5; + var g = inputState.x6; + var h = inputState.x7; + + var w0 = input.x0; + var w1 = input.x1; + var w2 = input.x2; + var w3 = input.x3; + var w4 = input.x4; + var w5 = input.x5; + var w6 = input.x6; + var w7 = input.x7; + var w8 = input.x8; + var w9 = input.x9; + var w10 = input.x10; + var w11 = input.x11; + var w12 = input.x12; + var w13 = input.x13; + var w14 = input.x14; + var w15 = input.x15; + + int t = 0; + while (true) + { + ulong t1, t2; + + {//0 + t1 = h + + ((e >> 14) ^ (e << (64 - 14)) ^ (e >> 18) ^ (e << (64 - 18)) ^ (e >> 41) ^ (e << (64 - 41))) + + //Sigma1(e) + ((e & f) ^ (~e & g)) + //Ch(e,f,g) + K[t] + w0; + t2 = ((a >> 28) ^ (a << (64 - 28)) ^ (a >> 34) ^ (a << (64 - 34)) ^ (a >> 39) ^ (a << (64 - 39))) + + //Sigma0(a) + ((a & b) ^ (a & c) ^ (b & c)); //Maj(a,b,c) + h = g; + g = f; + f = e; + e = d + t1; + d = c; + c = b; + b = a; + a = t1 + t2; + t++; + } + {//1 + t1 = h + + ((e >> 14) ^ (e << (64 - 14)) ^ (e >> 18) ^ (e << (64 - 18)) ^ (e >> 41) ^ (e << (64 - 41))) + + //Sigma1(e) + ((e & f) ^ (~e & g)) + //Ch(e,f,g) + K[t] + w1; + t2 = ((a >> 28) ^ (a << (64 - 28)) ^ (a >> 34) ^ (a << (64 - 34)) ^ (a >> 39) ^ (a << (64 - 39))) + + //Sigma0(a) + ((a & b) ^ (a & c) ^ (b & c)); //Maj(a,b,c) + h = g; + g = f; + f = e; + e = d + t1; + d = c; + c = b; + b = a; + a = t1 + t2; + t++; + } + {//2 + t1 = h + + ((e >> 14) ^ (e << (64 - 14)) ^ (e >> 18) ^ (e << (64 - 18)) ^ (e >> 41) ^ (e << (64 - 41))) + + //Sigma1(e) + ((e & f) ^ (~e & g)) + //Ch(e,f,g) + K[t] + w2; + t2 = ((a >> 28) ^ (a << (64 - 28)) ^ (a >> 34) ^ (a << (64 - 34)) ^ (a >> 39) ^ (a << (64 - 39))) + + //Sigma0(a) + ((a & b) ^ (a & c) ^ (b & c)); //Maj(a,b,c) + h = g; + g = f; + f = e; + e = d + t1; + d = c; + c = b; + b = a; + a = t1 + t2; + t++; + } + {//3 + t1 = h + + ((e >> 14) ^ (e << (64 - 14)) ^ (e >> 18) ^ (e << (64 - 18)) ^ (e >> 41) ^ (e << (64 - 41))) + + //Sigma1(e) + ((e & f) ^ (~e & g)) + //Ch(e,f,g) + K[t] + w3; + t2 = ((a >> 28) ^ (a << (64 - 28)) ^ (a >> 34) ^ (a << (64 - 34)) ^ (a >> 39) ^ (a << (64 - 39))) + + //Sigma0(a) + ((a & b) ^ (a & c) ^ (b & c)); //Maj(a,b,c) + h = g; + g = f; + f = e; + e = d + t1; + d = c; + c = b; + b = a; + a = t1 + t2; + t++; + } + {//4 + t1 = h + + ((e >> 14) ^ (e << (64 - 14)) ^ (e >> 18) ^ (e << (64 - 18)) ^ (e >> 41) ^ (e << (64 - 41))) + + //Sigma1(e) + ((e & f) ^ (~e & g)) + //Ch(e,f,g) + K[t] + w4; + t2 = ((a >> 28) ^ (a << (64 - 28)) ^ (a >> 34) ^ (a << (64 - 34)) ^ (a >> 39) ^ (a << (64 - 39))) + + //Sigma0(a) + ((a & b) ^ (a & c) ^ (b & c)); //Maj(a,b,c) + h = g; + g = f; + f = e; + e = d + t1; + d = c; + c = b; + b = a; + a = t1 + t2; + t++; + } + {//5 + t1 = h + + ((e >> 14) ^ (e << (64 - 14)) ^ (e >> 18) ^ (e << (64 - 18)) ^ (e >> 41) ^ (e << (64 - 41))) + + //Sigma1(e) + ((e & f) ^ (~e & g)) + //Ch(e,f,g) + K[t] + w5; + t2 = ((a >> 28) ^ (a << (64 - 28)) ^ (a >> 34) ^ (a << (64 - 34)) ^ (a >> 39) ^ (a << (64 - 39))) + + //Sigma0(a) + ((a & b) ^ (a & c) ^ (b & c)); //Maj(a,b,c) + h = g; + g = f; + f = e; + e = d + t1; + d = c; + c = b; + b = a; + a = t1 + t2; + t++; + } + {//6 + t1 = h + + ((e >> 14) ^ (e << (64 - 14)) ^ (e >> 18) ^ (e << (64 - 18)) ^ (e >> 41) ^ (e << (64 - 41))) + + //Sigma1(e) + ((e & f) ^ (~e & g)) + //Ch(e,f,g) + K[t] + w6; + t2 = ((a >> 28) ^ (a << (64 - 28)) ^ (a >> 34) ^ (a << (64 - 34)) ^ (a >> 39) ^ (a << (64 - 39))) + + //Sigma0(a) + ((a & b) ^ (a & c) ^ (b & c)); //Maj(a,b,c) + h = g; + g = f; + f = e; + e = d + t1; + d = c; + c = b; + b = a; + a = t1 + t2; + t++; + } + {//7 + t1 = h + + ((e >> 14) ^ (e << (64 - 14)) ^ (e >> 18) ^ (e << (64 - 18)) ^ (e >> 41) ^ (e << (64 - 41))) + + //Sigma1(e) + ((e & f) ^ (~e & g)) + //Ch(e,f,g) + K[t] + w7; + t2 = ((a >> 28) ^ (a << (64 - 28)) ^ (a >> 34) ^ (a << (64 - 34)) ^ (a >> 39) ^ (a << (64 - 39))) + + //Sigma0(a) + ((a & b) ^ (a & c) ^ (b & c)); //Maj(a,b,c) + h = g; + g = f; + f = e; + e = d + t1; + d = c; + c = b; + b = a; + a = t1 + t2; + t++; + } + {//8 + t1 = h + + ((e >> 14) ^ (e << (64 - 14)) ^ (e >> 18) ^ (e << (64 - 18)) ^ (e >> 41) ^ (e << (64 - 41))) + + //Sigma1(e) + ((e & f) ^ (~e & g)) + //Ch(e,f,g) + K[t] + w8; + t2 = ((a >> 28) ^ (a << (64 - 28)) ^ (a >> 34) ^ (a << (64 - 34)) ^ (a >> 39) ^ (a << (64 - 39))) + + //Sigma0(a) + ((a & b) ^ (a & c) ^ (b & c)); //Maj(a,b,c) + h = g; + g = f; + f = e; + e = d + t1; + d = c; + c = b; + b = a; + a = t1 + t2; + t++; + } + {//9 + t1 = h + + ((e >> 14) ^ (e << (64 - 14)) ^ (e >> 18) ^ (e << (64 - 18)) ^ (e >> 41) ^ (e << (64 - 41))) + + //Sigma1(e) + ((e & f) ^ (~e & g)) + //Ch(e,f,g) + K[t] + w9; + t2 = ((a >> 28) ^ (a << (64 - 28)) ^ (a >> 34) ^ (a << (64 - 34)) ^ (a >> 39) ^ (a << (64 - 39))) + + //Sigma0(a) + ((a & b) ^ (a & c) ^ (b & c)); //Maj(a,b,c) + h = g; + g = f; + f = e; + e = d + t1; + d = c; + c = b; + b = a; + a = t1 + t2; + t++; + } + {//10 + t1 = h + + ((e >> 14) ^ (e << (64 - 14)) ^ (e >> 18) ^ (e << (64 - 18)) ^ (e >> 41) ^ (e << (64 - 41))) + + //Sigma1(e) + ((e & f) ^ (~e & g)) + //Ch(e,f,g) + K[t] + w10; + t2 = ((a >> 28) ^ (a << (64 - 28)) ^ (a >> 34) ^ (a << (64 - 34)) ^ (a >> 39) ^ (a << (64 - 39))) + + //Sigma0(a) + ((a & b) ^ (a & c) ^ (b & c)); //Maj(a,b,c) + h = g; + g = f; + f = e; + e = d + t1; + d = c; + c = b; + b = a; + a = t1 + t2; + t++; + } + {//11 + t1 = h + + ((e >> 14) ^ (e << (64 - 14)) ^ (e >> 18) ^ (e << (64 - 18)) ^ (e >> 41) ^ (e << (64 - 41))) + + //Sigma1(e) + ((e & f) ^ (~e & g)) + //Ch(e,f,g) + K[t] + w11; + t2 = ((a >> 28) ^ (a << (64 - 28)) ^ (a >> 34) ^ (a << (64 - 34)) ^ (a >> 39) ^ (a << (64 - 39))) + + //Sigma0(a) + ((a & b) ^ (a & c) ^ (b & c)); //Maj(a,b,c) + h = g; + g = f; + f = e; + e = d + t1; + d = c; + c = b; + b = a; + a = t1 + t2; + t++; + } + {//12 + t1 = h + + ((e >> 14) ^ (e << (64 - 14)) ^ (e >> 18) ^ (e << (64 - 18)) ^ (e >> 41) ^ (e << (64 - 41))) + + //Sigma1(e) + ((e & f) ^ (~e & g)) + //Ch(e,f,g) + K[t] + w12; + t2 = ((a >> 28) ^ (a << (64 - 28)) ^ (a >> 34) ^ (a << (64 - 34)) ^ (a >> 39) ^ (a << (64 - 39))) + + //Sigma0(a) + ((a & b) ^ (a & c) ^ (b & c)); //Maj(a,b,c) + h = g; + g = f; + f = e; + e = d + t1; + d = c; + c = b; + b = a; + a = t1 + t2; + t++; + } + {//13 + t1 = h + + ((e >> 14) ^ (e << (64 - 14)) ^ (e >> 18) ^ (e << (64 - 18)) ^ (e >> 41) ^ (e << (64 - 41))) + + //Sigma1(e) + ((e & f) ^ (~e & g)) + //Ch(e,f,g) + K[t] + w13; + t2 = ((a >> 28) ^ (a << (64 - 28)) ^ (a >> 34) ^ (a << (64 - 34)) ^ (a >> 39) ^ (a << (64 - 39))) + + //Sigma0(a) + ((a & b) ^ (a & c) ^ (b & c)); //Maj(a,b,c) + h = g; + g = f; + f = e; + e = d + t1; + d = c; + c = b; + b = a; + a = t1 + t2; + t++; + } + {//14 + t1 = h + + ((e >> 14) ^ (e << (64 - 14)) ^ (e >> 18) ^ (e << (64 - 18)) ^ (e >> 41) ^ (e << (64 - 41))) + + //Sigma1(e) + ((e & f) ^ (~e & g)) + //Ch(e,f,g) + K[t] + w14; + t2 = ((a >> 28) ^ (a << (64 - 28)) ^ (a >> 34) ^ (a << (64 - 34)) ^ (a >> 39) ^ (a << (64 - 39))) + + //Sigma0(a) + ((a & b) ^ (a & c) ^ (b & c)); //Maj(a,b,c) + h = g; + g = f; + f = e; + e = d + t1; + d = c; + c = b; + b = a; + a = t1 + t2; + t++; + } + {//15 + t1 = h + + ((e >> 14) ^ (e << (64 - 14)) ^ (e >> 18) ^ (e << (64 - 18)) ^ (e >> 41) ^ (e << (64 - 41))) + + //Sigma1(e) + ((e & f) ^ (~e & g)) + //Ch(e,f,g) + K[t] + w15; + t2 = ((a >> 28) ^ (a << (64 - 28)) ^ (a >> 34) ^ (a << (64 - 34)) ^ (a >> 39) ^ (a << (64 - 39))) + + //Sigma0(a) + ((a & b) ^ (a & c) ^ (b & c)); //Maj(a,b,c) + h = g; + g = f; + f = e; + e = d + t1; + d = c; + c = b; + b = a; + a = t1 + t2; + t++; + } + if (t == 80) + break; + + w0 += ((w14 >> 19) ^ (w14 << (64 - 19)) ^ (w14 >> 61) ^ (w14 << (64 - 61)) ^ (w14 >> 6)) + + w9 + + ((w1 >> 1) ^ (w1 << (64 - 1)) ^ (w1 >> 8) ^ (w1 << (64 - 8)) ^ (w1 >> 7)); + w1 += ((w15 >> 19) ^ (w15 << (64 - 19)) ^ (w15 >> 61) ^ (w15 << (64 - 61)) ^ (w15 >> 6)) + + w10 + + ((w2 >> 1) ^ (w2 << (64 - 1)) ^ (w2 >> 8) ^ (w2 << (64 - 8)) ^ (w2 >> 7)); + w2 += ((w0 >> 19) ^ (w0 << (64 - 19)) ^ (w0 >> 61) ^ (w0 << (64 - 61)) ^ (w0 >> 6)) + + w11 + + ((w3 >> 1) ^ (w3 << (64 - 1)) ^ (w3 >> 8) ^ (w3 << (64 - 8)) ^ (w3 >> 7)); + w3 += ((w1 >> 19) ^ (w1 << (64 - 19)) ^ (w1 >> 61) ^ (w1 << (64 - 61)) ^ (w1 >> 6)) + + w12 + + ((w4 >> 1) ^ (w4 << (64 - 1)) ^ (w4 >> 8) ^ (w4 << (64 - 8)) ^ (w4 >> 7)); + w4 += ((w2 >> 19) ^ (w2 << (64 - 19)) ^ (w2 >> 61) ^ (w2 << (64 - 61)) ^ (w2 >> 6)) + + w13 + + ((w5 >> 1) ^ (w5 << (64 - 1)) ^ (w5 >> 8) ^ (w5 << (64 - 8)) ^ (w5 >> 7)); + w5 += ((w3 >> 19) ^ (w3 << (64 - 19)) ^ (w3 >> 61) ^ (w3 << (64 - 61)) ^ (w3 >> 6)) + + w14 + + ((w6 >> 1) ^ (w6 << (64 - 1)) ^ (w6 >> 8) ^ (w6 << (64 - 8)) ^ (w6 >> 7)); + w6 += ((w4 >> 19) ^ (w4 << (64 - 19)) ^ (w4 >> 61) ^ (w4 << (64 - 61)) ^ (w4 >> 6)) + + w15 + + ((w7 >> 1) ^ (w7 << (64 - 1)) ^ (w7 >> 8) ^ (w7 << (64 - 8)) ^ (w7 >> 7)); + w7 += ((w5 >> 19) ^ (w5 << (64 - 19)) ^ (w5 >> 61) ^ (w5 << (64 - 61)) ^ (w5 >> 6)) + + w0 + + ((w8 >> 1) ^ (w8 << (64 - 1)) ^ (w8 >> 8) ^ (w8 << (64 - 8)) ^ (w8 >> 7)); + w8 += ((w6 >> 19) ^ (w6 << (64 - 19)) ^ (w6 >> 61) ^ (w6 << (64 - 61)) ^ (w6 >> 6)) + + w1 + + ((w9 >> 1) ^ (w9 << (64 - 1)) ^ (w9 >> 8) ^ (w9 << (64 - 8)) ^ (w9 >> 7)); + w9 += ((w7 >> 19) ^ (w7 << (64 - 19)) ^ (w7 >> 61) ^ (w7 << (64 - 61)) ^ (w7 >> 6)) + + w2 + + ((w10 >> 1) ^ (w10 << (64 - 1)) ^ (w10 >> 8) ^ (w10 << (64 - 8)) ^ (w10 >> 7)); + w10 += ((w8 >> 19) ^ (w8 << (64 - 19)) ^ (w8 >> 61) ^ (w8 << (64 - 61)) ^ (w8 >> 6)) + + w3 + + ((w11 >> 1) ^ (w11 << (64 - 1)) ^ (w11 >> 8) ^ (w11 << (64 - 8)) ^ (w11 >> 7)); + w11 += ((w9 >> 19) ^ (w9 << (64 - 19)) ^ (w9 >> 61) ^ (w9 << (64 - 61)) ^ (w9 >> 6)) + + w4 + + ((w12 >> 1) ^ (w12 << (64 - 1)) ^ (w12 >> 8) ^ (w12 << (64 - 8)) ^ (w12 >> 7)); + w12 += ((w10 >> 19) ^ (w10 << (64 - 19)) ^ (w10 >> 61) ^ (w10 << (64 - 61)) ^ (w10 >> 6)) + + w5 + + ((w13 >> 1) ^ (w13 << (64 - 1)) ^ (w13 >> 8) ^ (w13 << (64 - 8)) ^ (w13 >> 7)); + w13 += ((w11 >> 19) ^ (w11 << (64 - 19)) ^ (w11 >> 61) ^ (w11 << (64 - 61)) ^ (w11 >> 6)) + + w6 + + ((w14 >> 1) ^ (w14 << (64 - 1)) ^ (w14 >> 8) ^ (w14 << (64 - 8)) ^ (w14 >> 7)); + w14 += ((w12 >> 19) ^ (w12 << (64 - 19)) ^ (w12 >> 61) ^ (w12 << (64 - 61)) ^ (w12 >> 6)) + + w7 + + ((w15 >> 1) ^ (w15 << (64 - 1)) ^ (w15 >> 8) ^ (w15 << (64 - 8)) ^ (w15 >> 7)); + w15 += ((w13 >> 19) ^ (w13 << (64 - 19)) ^ (w13 >> 61) ^ (w13 << (64 - 61)) ^ (w13 >> 6)) + + w8 + + ((w0 >> 1) ^ (w0 << (64 - 1)) ^ (w0 >> 8) ^ (w0 << (64 - 8)) ^ (w0 >> 7)); + } + + outputState.x0 = inputState.x0 + a; + outputState.x1 = inputState.x1 + b; + outputState.x2 = inputState.x2 + c; + outputState.x3 = inputState.x3 + d; + outputState.x4 = inputState.x4 + e; + outputState.x5 = inputState.x5 + f; + outputState.x6 = inputState.x6 + g; + outputState.x7 = inputState.x7 + h; + } + } + } +} diff --git a/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs b/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs index 3fb45e55d..d9f4ba57a 100644 --- a/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs +++ b/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs @@ -1,3 +1,4 @@ +using Discord.API; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; @@ -5,6 +6,7 @@ using System; using System.Diagnostics; #endif using System.IO; +using System.Linq; using System.Net; using System.Threading; using System.Threading.Tasks; @@ -65,7 +67,9 @@ namespace Discord.Net.Queue try { var response = await request.SendAsync().ConfigureAwait(false); - info = new RateLimitInfo(response.Headers); + info = new RateLimitInfo(response.Headers, request.Endpoint); + + request.Options.ExecuteRatelimitCallback(info); if (response.StatusCode < (HttpStatusCode)200 || response.StatusCode >= (HttpStatusCode)300) { @@ -97,8 +101,7 @@ namespace Discord.Net.Queue continue; //Retry default: - int? code = null; - string reason = null; + API.DiscordError error = null; if (response.Stream != null) { try @@ -106,14 +109,14 @@ namespace Discord.Net.Queue using (var reader = new StreamReader(response.Stream)) using (var jsonReader = new JsonTextReader(reader)) { - var json = JToken.Load(jsonReader); - try { code = json.Value("code"); } catch { }; - try { reason = json.Value("message"); } catch { }; + error = Discord.Rest.DiscordRestClient.Serializer.Deserialize(jsonReader); } } catch { } } - throw new HttpException(response.StatusCode, request, code, reason); + throw new HttpException(response.StatusCode, request, error?.Code, error.Message, error.Errors.IsSpecified + ? error.Errors.Value.Select(x => new DiscordJsonError(x.Name.GetValueOrDefault("root"), x.Errors.Select(y => new DiscordError(y.Code, y.Message)).ToArray())).ToArray() + : null); } } else @@ -351,7 +354,7 @@ namespace Discord.Net.Queue if (info.Limit.HasValue && WindowCount != info.Limit.Value) { WindowCount = info.Limit.Value; - _semaphore = info.Remaining.Value; + _semaphore = is429 ? 0 : info.Remaining.Value; #if DEBUG_LIMITS Debug.WriteLine($"[{id}] Upgraded Semaphore to {info.Remaining.Value}/{WindowCount}"); #endif @@ -368,12 +371,12 @@ namespace Discord.Net.Queue if (info.RetryAfter.HasValue) { //RetryAfter is more accurate than Reset, where available - resetTick = DateTimeOffset.UtcNow.AddMilliseconds(info.RetryAfter.Value); + resetTick = DateTimeOffset.UtcNow.AddSeconds(info.RetryAfter.Value); #if DEBUG_LIMITS Debug.WriteLine($"[{id}] Retry-After: {info.RetryAfter.Value} ({info.RetryAfter.Value} ms)"); #endif } - else if (info.ResetAfter.HasValue && (request.Options.UseSystemClock.HasValue ? !request.Options.UseSystemClock.Value : false)) + else if (info.ResetAfter.HasValue && (request.Options.UseSystemClock.HasValue && !request.Options.UseSystemClock.Value)) { resetTick = DateTimeOffset.UtcNow.Add(info.ResetAfter.Value); #if DEBUG_LIMITS @@ -431,7 +434,7 @@ namespace Discord.Net.Queue if (!hasQueuedReset || resetTick > _resetTick) { _resetTick = resetTick; - LastAttemptAt = resetTick.Value; //Make sure we dont destroy this until after its been reset + LastAttemptAt = resetTick.Value; //Make sure we don't destroy this until after its been reset #if DEBUG_LIMITS Debug.WriteLine($"[{id}] Reset in {(int)Math.Ceiling((resetTick - DateTimeOffset.UtcNow).Value.TotalMilliseconds)} ms"); #endif @@ -452,7 +455,7 @@ namespace Discord.Net.Queue lock (_lock) { millis = (int)Math.Ceiling((_resetTick.Value - DateTimeOffset.UtcNow).TotalMilliseconds); - if (millis <= 0) //Make sure we havent gotten a more accurate reset time + if (millis <= 0) //Make sure we haven't gotten a more accurate reset time { #if DEBUG_LIMITS Debug.WriteLine($"[{id}] * Reset *"); diff --git a/src/Discord.Net.Rest/Net/RateLimitInfo.cs b/src/Discord.Net.Rest/Net/RateLimitInfo.cs index 6a7df7b01..c08f30c7b 100644 --- a/src/Discord.Net.Rest/Net/RateLimitInfo.cs +++ b/src/Discord.Net.Rest/Net/RateLimitInfo.cs @@ -4,19 +4,42 @@ using System.Globalization; namespace Discord.Net { - internal struct RateLimitInfo + /// + /// Represents a REST-Based ratelimit info. + /// + public struct RateLimitInfo : IRateLimitInfo { + /// public bool IsGlobal { get; } + + /// public int? Limit { get; } + + /// public int? Remaining { get; } + + /// public int? RetryAfter { get; } + + /// public DateTimeOffset? Reset { get; } + + /// public TimeSpan? ResetAfter { get; } + + /// public string Bucket { get; } + + /// public TimeSpan? Lag { get; } - internal RateLimitInfo(Dictionary headers) + /// + public string Endpoint { get; } + + internal RateLimitInfo(Dictionary headers, string endpoint) { + Endpoint = endpoint; + IsGlobal = headers.TryGetValue("X-RateLimit-Global", out string temp) && bool.TryParse(temp, out var isGlobal) && isGlobal; Limit = headers.TryGetValue("X-RateLimit-Limit", out temp) && @@ -28,7 +51,7 @@ namespace Discord.Net RetryAfter = headers.TryGetValue("Retry-After", out temp) && int.TryParse(temp, NumberStyles.None, CultureInfo.InvariantCulture, out var retryAfter) ? retryAfter : (int?)null; ResetAfter = headers.TryGetValue("X-RateLimit-Reset-After", out temp) && - double.TryParse(temp, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out var resetAfter) ? TimeSpan.FromMilliseconds((long)(resetAfter * 1000)) : (TimeSpan?)null; + double.TryParse(temp, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out var resetAfter) ? TimeSpan.FromSeconds(resetAfter) : (TimeSpan?)null; Bucket = headers.TryGetValue("X-RateLimit-Bucket", out temp) ? temp : null; Lag = headers.TryGetValue("Date", out temp) && DateTimeOffset.TryParse(temp, CultureInfo.InvariantCulture, DateTimeStyles.None, out var date) ? DateTimeOffset.UtcNow - date : (TimeSpan?)null; diff --git a/src/Discord.Net.Rest/Utils/HexConverter.cs b/src/Discord.Net.Rest/Utils/HexConverter.cs new file mode 100644 index 000000000..ebd959dcb --- /dev/null +++ b/src/Discord.Net.Rest/Utils/HexConverter.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord.Rest +{ + internal class HexConverter + { + public static byte[] HexToByteArray(string hex) + { + if (hex.Length % 2 == 1) + throw new Exception("The binary key cannot have an odd number of digits"); + + byte[] arr = new byte[hex.Length >> 1]; + + for (int i = 0; i < hex.Length >> 1; ++i) + { + arr[i] = (byte)((GetHexVal(hex[i << 1]) << 4) + (GetHexVal(hex[(i << 1) + 1]))); + } + + return arr; + } + private static int GetHexVal(char hex) + { + int val = (int)hex; + //For uppercase A-F letters: + //return val - (val < 58 ? 48 : 55); + //For lowercase a-f letters: + //return val - (val < 58 ? 48 : 87); + //Or the two combined, but a bit slower: + return val - (val < 58 ? 48 : (val < 97 ? 55 : 87)); + } + } +} diff --git a/src/Discord.Net.WebSocket/API/Gateway/ApplicationCommandCreatedUpdatedEvent.cs b/src/Discord.Net.WebSocket/API/Gateway/ApplicationCommandCreatedUpdatedEvent.cs new file mode 100644 index 000000000..91dcbde11 --- /dev/null +++ b/src/Discord.Net.WebSocket/API/Gateway/ApplicationCommandCreatedUpdatedEvent.cs @@ -0,0 +1,10 @@ +using Newtonsoft.Json; + +namespace Discord.API.Gateway +{ + internal class ApplicationCommandCreatedUpdatedEvent : ApplicationCommand + { + [JsonProperty("guild_id")] + public Optional GuildId { get; set; } + } +} diff --git a/src/Discord.Net.WebSocket/API/Gateway/ExtendedGuild.cs b/src/Discord.Net.WebSocket/API/Gateway/ExtendedGuild.cs index 910f6d909..04ee38c0b 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/ExtendedGuild.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/ExtendedGuild.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; using System; @@ -8,18 +7,29 @@ namespace Discord.API.Gateway { [JsonProperty("unavailable")] public bool? Unavailable { get; set; } + [JsonProperty("member_count")] public int MemberCount { get; set; } + [JsonProperty("large")] public bool Large { get; set; } [JsonProperty("presences")] public Presence[] Presences { get; set; } + [JsonProperty("members")] public GuildMember[] Members { get; set; } + [JsonProperty("channels")] public Channel[] Channels { get; set; } + [JsonProperty("joined_at")] public DateTimeOffset JoinedAt { get; set; } + + [JsonProperty("threads")] + public new Channel[] Threads { get; set; } + + [JsonProperty("guild_scheduled_events")] + public GuildScheduledEvent[] GuildScheduledEvents { get; set; } } } diff --git a/src/Discord.Net.WebSocket/API/Gateway/GatewayOpCode.cs b/src/Discord.Net.WebSocket/API/Gateway/GatewayOpCode.cs index 13a2bb462..6f8bf48d4 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/GatewayOpCode.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/GatewayOpCode.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 namespace Discord.API.Gateway { internal enum GatewayOpCode : byte @@ -10,7 +9,7 @@ namespace Discord.API.Gateway /// C→S - Used to associate a connection with a token and specify configuration. Identify = 2, /// C→S - Used to update client's status and current game id. - StatusUpdate = 3, + PresenceUpdate = 3, /// C→S - Used to join a particular voice channel. VoiceStateUpdate = 4, /// C→S - Used to ensure the guild's voice server is alive. diff --git a/src/Discord.Net.WebSocket/API/Gateway/GuildBanEvent.cs b/src/Discord.Net.WebSocket/API/Gateway/GuildBanEvent.cs index 59a3304dd..a8a72e791 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/GuildBanEvent.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/GuildBanEvent.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Gateway diff --git a/src/Discord.Net.WebSocket/API/Gateway/GuildEmojiUpdateEvent.cs b/src/Discord.Net.WebSocket/API/Gateway/GuildEmojiUpdateEvent.cs index 715341dc5..33c10e648 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/GuildEmojiUpdateEvent.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/GuildEmojiUpdateEvent.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Gateway diff --git a/src/Discord.Net.WebSocket/API/Gateway/GuildJoinRequestDeleteEvent.cs b/src/Discord.Net.WebSocket/API/Gateway/GuildJoinRequestDeleteEvent.cs new file mode 100644 index 000000000..cb6fc5f40 --- /dev/null +++ b/src/Discord.Net.WebSocket/API/Gateway/GuildJoinRequestDeleteEvent.cs @@ -0,0 +1,12 @@ +using Newtonsoft.Json; + +namespace Discord.API.Gateway +{ + internal class GuildJoinRequestDeleteEvent + { + [JsonProperty("user_id")] + public ulong UserId { get; set; } + [JsonProperty("guild_id")] + public ulong GuildId { get; set; } + } +} diff --git a/src/Discord.Net.WebSocket/API/Gateway/GuildMemberAddEvent.cs b/src/Discord.Net.WebSocket/API/Gateway/GuildMemberAddEvent.cs index 350652faf..dd42978fc 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/GuildMemberAddEvent.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/GuildMemberAddEvent.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Gateway diff --git a/src/Discord.Net.WebSocket/API/Gateway/GuildMemberRemoveEvent.cs b/src/Discord.Net.WebSocket/API/Gateway/GuildMemberRemoveEvent.cs index 501408a7f..ec7df8fd3 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/GuildMemberRemoveEvent.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/GuildMemberRemoveEvent.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Gateway diff --git a/src/Discord.Net.WebSocket/API/Gateway/GuildMemberUpdateEvent.cs b/src/Discord.Net.WebSocket/API/Gateway/GuildMemberUpdateEvent.cs index a234d6da5..0f6fa6f37 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/GuildMemberUpdateEvent.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/GuildMemberUpdateEvent.cs @@ -1,10 +1,13 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; +using System; namespace Discord.API.Gateway { internal class GuildMemberUpdateEvent : GuildMember { + [JsonProperty("joined_at")] + public new DateTimeOffset? JoinedAt { get; set; } + [JsonProperty("guild_id")] public ulong GuildId { get; set; } } diff --git a/src/Discord.Net.WebSocket/API/Gateway/GuildMembersChunkEvent.cs b/src/Discord.Net.WebSocket/API/Gateway/GuildMembersChunkEvent.cs index e401d7fa1..26114bf54 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/GuildMembersChunkEvent.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/GuildMembersChunkEvent.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Gateway diff --git a/src/Discord.Net.WebSocket/API/Gateway/GuildRoleCreateEvent.cs b/src/Discord.Net.WebSocket/API/Gateway/GuildRoleCreateEvent.cs index 3409b1c91..3b02164d5 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/GuildRoleCreateEvent.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/GuildRoleCreateEvent.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Gateway diff --git a/src/Discord.Net.WebSocket/API/Gateway/GuildRoleDeleteEvent.cs b/src/Discord.Net.WebSocket/API/Gateway/GuildRoleDeleteEvent.cs index dbdaeff67..d9bdb9892 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/GuildRoleDeleteEvent.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/GuildRoleDeleteEvent.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Gateway diff --git a/src/Discord.Net.WebSocket/API/Gateway/GuildRoleUpdateEvent.cs b/src/Discord.Net.WebSocket/API/Gateway/GuildRoleUpdateEvent.cs index b04ecb182..bb6a39620 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/GuildRoleUpdateEvent.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/GuildRoleUpdateEvent.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Gateway diff --git a/src/Discord.Net.WebSocket/API/Gateway/GuildScheduledEventUserAddRemoveEvent.cs b/src/Discord.Net.WebSocket/API/Gateway/GuildScheduledEventUserAddRemoveEvent.cs new file mode 100644 index 000000000..3fc959125 --- /dev/null +++ b/src/Discord.Net.WebSocket/API/Gateway/GuildScheduledEventUserAddRemoveEvent.cs @@ -0,0 +1,19 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord.API.Gateway +{ + internal class GuildScheduledEventUserAddRemoveEvent + { + [JsonProperty("guild_scheduled_event_id")] + public ulong EventId { get; set; } + [JsonProperty("guild_id")] + public ulong GuildId { get; set; } + [JsonProperty("user_id")] + public ulong UserId { get; set; } + } +} diff --git a/src/Discord.Net.WebSocket/API/Gateway/GuildStickerUpdateEvent.cs b/src/Discord.Net.WebSocket/API/Gateway/GuildStickerUpdateEvent.cs new file mode 100644 index 000000000..f0ecd3a4f --- /dev/null +++ b/src/Discord.Net.WebSocket/API/Gateway/GuildStickerUpdateEvent.cs @@ -0,0 +1,13 @@ +using Newtonsoft.Json; + +namespace Discord.API.Gateway +{ + internal class GuildStickerUpdateEvent + { + [JsonProperty("guild_id")] + public ulong GuildId { get; set; } + + [JsonProperty("stickers")] + public Sticker[] Stickers { get; set; } + } +} diff --git a/src/Discord.Net.WebSocket/API/Gateway/GuildSyncEvent.cs b/src/Discord.Net.WebSocket/API/Gateway/GuildSyncEvent.cs index 6b2e6c02f..ba4c1ca60 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/GuildSyncEvent.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/GuildSyncEvent.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Gateway diff --git a/src/Discord.Net.WebSocket/API/Gateway/HelloEvent.cs b/src/Discord.Net.WebSocket/API/Gateway/HelloEvent.cs index e1ed9463c..a53a96fd8 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/HelloEvent.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/HelloEvent.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Gateway diff --git a/src/Discord.Net.WebSocket/API/Gateway/IdentifyParams.cs b/src/Discord.Net.WebSocket/API/Gateway/IdentifyParams.cs index bb54d4cdd..96c7cb32f 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/IdentifyParams.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/IdentifyParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; using System.Collections.Generic; @@ -16,7 +15,7 @@ namespace Discord.API.Gateway [JsonProperty("shard")] public Optional ShardingParams { get; set; } [JsonProperty("presence")] - public Optional Presence { get; set; } + public Optional Presence { get; set; } [JsonProperty("intents")] public Optional Intents { get; set; } } diff --git a/src/Discord.Net.WebSocket/API/Gateway/InviteCreatedEvent.cs b/src/Discord.Net.WebSocket/API/Gateway/InviteCreatedEvent.cs new file mode 100644 index 000000000..1613cdfa6 --- /dev/null +++ b/src/Discord.Net.WebSocket/API/Gateway/InviteCreatedEvent.cs @@ -0,0 +1,32 @@ +using Discord.API; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord.API.Gateway +{ + internal class InviteCreatedEvent + { + [JsonProperty("channel_id")] + public ulong ChannelID { get; set; } + [JsonProperty("code")] + public string InviteCode { get; set; } + [JsonProperty("timestamp")] + public Optional RawTimestamp { get; set; } + [JsonProperty("guild_id")] + public ulong? GuildID { get; set; } + [JsonProperty("inviter")] + public Optional Inviter { get; set; } + [JsonProperty("max_age")] + public int RawAge { get; set; } + [JsonProperty("max_uses")] + public int MaxUsers { get; set; } + [JsonProperty("temporary")] + public bool TempInvite { get; set; } + [JsonProperty("uses")] + public int Uses { get; set; } + } +} diff --git a/src/Discord.Net.WebSocket/API/Gateway/InviteDeletedEvent.cs b/src/Discord.Net.WebSocket/API/Gateway/InviteDeletedEvent.cs new file mode 100644 index 000000000..6bdd337f5 --- /dev/null +++ b/src/Discord.Net.WebSocket/API/Gateway/InviteDeletedEvent.cs @@ -0,0 +1,19 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord.WebSocket +{ + internal class InviteDeletedEvent + { + [JsonProperty("channel_id")] + public ulong ChannelID { get; set; } + [JsonProperty("guild_id")] + public Optional GuildID { get; set; } + [JsonProperty("code")] + public string Code { get; set; } + } +} diff --git a/src/Discord.Net.WebSocket/API/Gateway/MessageDeleteBulkEvent.cs b/src/Discord.Net.WebSocket/API/Gateway/MessageDeleteBulkEvent.cs index a4cf7d7eb..c503e636d 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/MessageDeleteBulkEvent.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/MessageDeleteBulkEvent.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; using System.Collections.Generic; diff --git a/src/Discord.Net.WebSocket/API/Gateway/ReadyEvent.cs b/src/Discord.Net.WebSocket/API/Gateway/ReadyEvent.cs index ab92d8c36..5cd75dbee 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/ReadyEvent.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/ReadyEvent.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Gateway diff --git a/src/Discord.Net.WebSocket/API/Gateway/RecipientEvent.cs b/src/Discord.Net.WebSocket/API/Gateway/RecipientEvent.cs index 336ffd029..778b5708c 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/RecipientEvent.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/RecipientEvent.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Gateway diff --git a/src/Discord.Net.WebSocket/API/Gateway/RequestMembersParams.cs b/src/Discord.Net.WebSocket/API/Gateway/RequestMembersParams.cs index 6a8d283ed..f7a63e330 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/RequestMembersParams.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/RequestMembersParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; using System.Collections.Generic; diff --git a/src/Discord.Net.WebSocket/API/Gateway/ResumeParams.cs b/src/Discord.Net.WebSocket/API/Gateway/ResumeParams.cs index ffb46327b..826e8fadd 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/ResumeParams.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/ResumeParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Gateway diff --git a/src/Discord.Net.WebSocket/API/Gateway/ResumedEvent.cs b/src/Discord.Net.WebSocket/API/Gateway/ResumedEvent.cs index d1347beae..870ae7366 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/ResumedEvent.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/ResumedEvent.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Gateway diff --git a/src/Discord.Net.WebSocket/API/Gateway/StatusUpdateParams.cs b/src/Discord.Net.WebSocket/API/Gateway/StatusUpdateParams.cs index 5fec8b4bd..cbde225d2 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/StatusUpdateParams.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/StatusUpdateParams.cs @@ -1,18 +1,18 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Gateway { [JsonObject(MemberSerialization = MemberSerialization.OptIn)] - internal class StatusUpdateParams + internal class PresenceUpdateParams + { [JsonProperty("status")] public UserStatus Status { get; set; } - [JsonProperty("since"), Int53] + [JsonProperty("since", NullValueHandling = NullValueHandling.Include), Int53] public long? IdleSince { get; set; } [JsonProperty("afk")] public bool IsAFK { get; set; } - [JsonProperty("game")] - public Game Game { get; set; } + [JsonProperty("activities")] + public object[] Activities { get; set; } // TODO, change to interface later } } diff --git a/src/Discord.Net.WebSocket/API/Gateway/ThreadListSyncEvent.cs b/src/Discord.Net.WebSocket/API/Gateway/ThreadListSyncEvent.cs new file mode 100644 index 000000000..5084f6c95 --- /dev/null +++ b/src/Discord.Net.WebSocket/API/Gateway/ThreadListSyncEvent.cs @@ -0,0 +1,19 @@ +using Newtonsoft.Json; + +namespace Discord.API.Gateway +{ + internal class ThreadListSyncEvent + { + [JsonProperty("guild_id")] + public ulong GuildId { get; set; } + + [JsonProperty("channel_ids")] + public Optional ChannelIds { get; set; } + + [JsonProperty("threads")] + public Channel[] Threads { get; set; } + + [JsonProperty("members")] + public ThreadMember[] Members { get; set; } + } +} diff --git a/src/Discord.Net.WebSocket/API/Gateway/ThreadMembersUpdate.cs b/src/Discord.Net.WebSocket/API/Gateway/ThreadMembersUpdate.cs new file mode 100644 index 000000000..83d2c0edd --- /dev/null +++ b/src/Discord.Net.WebSocket/API/Gateway/ThreadMembersUpdate.cs @@ -0,0 +1,22 @@ +using Newtonsoft.Json; + +namespace Discord.API.Gateway +{ + internal class ThreadMembersUpdated + { + [JsonProperty("id")] + public ulong Id { get; set; } + + [JsonProperty("guild_id")] + public ulong GuildId { get; set; } + + [JsonProperty("member_count")] + public int MemberCount { get; set; } + + [JsonProperty("added_members")] + public Optional AddedMembers { get; set; } + + [JsonProperty("removed_member_ids")] + public Optional RemovedMemberIds { get; set; } + } +} diff --git a/src/Discord.Net.WebSocket/API/Gateway/TypingStartEvent.cs b/src/Discord.Net.WebSocket/API/Gateway/TypingStartEvent.cs index 5ceae4b7a..729ea176f 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/TypingStartEvent.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/TypingStartEvent.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Gateway diff --git a/src/Discord.Net.WebSocket/API/Gateway/VoiceServerUpdateEvent.cs b/src/Discord.Net.WebSocket/API/Gateway/VoiceServerUpdateEvent.cs index 29167c1cc..8df3f0108 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/VoiceServerUpdateEvent.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/VoiceServerUpdateEvent.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Gateway diff --git a/src/Discord.Net.WebSocket/API/Gateway/VoiceStateUpdateParams.cs b/src/Discord.Net.WebSocket/API/Gateway/VoiceStateUpdateParams.cs index 521160126..ad21b14f1 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/VoiceStateUpdateParams.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/VoiceStateUpdateParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Gateway diff --git a/src/Discord.Net.WebSocket/API/Gateway/WebhookUpdateEvent.cs b/src/Discord.Net.WebSocket/API/Gateway/WebhookUpdateEvent.cs index e5c7afe41..c1e6d5385 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/WebhookUpdateEvent.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/WebhookUpdateEvent.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Gateway diff --git a/src/Discord.Net.WebSocket/API/SocketFrame.cs b/src/Discord.Net.WebSocket/API/SocketFrame.cs index fae741432..11c82ec44 100644 --- a/src/Discord.Net.WebSocket/API/SocketFrame.cs +++ b/src/Discord.Net.WebSocket/API/SocketFrame.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API diff --git a/src/Discord.Net.WebSocket/API/Voice/IdentifyParams.cs b/src/Discord.Net.WebSocket/API/Voice/IdentifyParams.cs index d446867e1..508b70d70 100644 --- a/src/Discord.Net.WebSocket/API/Voice/IdentifyParams.cs +++ b/src/Discord.Net.WebSocket/API/Voice/IdentifyParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Voice diff --git a/src/Discord.Net.WebSocket/API/Voice/ReadyEvent.cs b/src/Discord.Net.WebSocket/API/Voice/ReadyEvent.cs index 7188cd8f7..fb910573a 100644 --- a/src/Discord.Net.WebSocket/API/Voice/ReadyEvent.cs +++ b/src/Discord.Net.WebSocket/API/Voice/ReadyEvent.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; using System; @@ -15,7 +14,7 @@ namespace Discord.API.Voice [JsonProperty("modes")] public string[] Modes { get; set; } [JsonProperty("heartbeat_interval")] - [Obsolete("This field is errorneous and should not be used", true)] + [Obsolete("This field is erroneous and should not be used", true)] public int HeartbeatInterval { get; set; } } } diff --git a/src/Discord.Net.WebSocket/API/Voice/SelectProtocolParams.cs b/src/Discord.Net.WebSocket/API/Voice/SelectProtocolParams.cs index 8c577e5b5..2e9bd157a 100644 --- a/src/Discord.Net.WebSocket/API/Voice/SelectProtocolParams.cs +++ b/src/Discord.Net.WebSocket/API/Voice/SelectProtocolParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Voice diff --git a/src/Discord.Net.WebSocket/API/Voice/SessionDescriptionEvent.cs b/src/Discord.Net.WebSocket/API/Voice/SessionDescriptionEvent.cs index 45befadcf..043b9fe86 100644 --- a/src/Discord.Net.WebSocket/API/Voice/SessionDescriptionEvent.cs +++ b/src/Discord.Net.WebSocket/API/Voice/SessionDescriptionEvent.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Voice diff --git a/src/Discord.Net.WebSocket/API/Voice/SpeakingEvent.cs b/src/Discord.Net.WebSocket/API/Voice/SpeakingEvent.cs index 0272a8f53..c1746e9ce 100644 --- a/src/Discord.Net.WebSocket/API/Voice/SpeakingEvent.cs +++ b/src/Discord.Net.WebSocket/API/Voice/SpeakingEvent.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Voice diff --git a/src/Discord.Net.WebSocket/API/Voice/SpeakingParams.cs b/src/Discord.Net.WebSocket/API/Voice/SpeakingParams.cs index abdf90667..e03bfc751 100644 --- a/src/Discord.Net.WebSocket/API/Voice/SpeakingParams.cs +++ b/src/Discord.Net.WebSocket/API/Voice/SpeakingParams.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Voice diff --git a/src/Discord.Net.WebSocket/API/Voice/UdpProtocolInfo.cs b/src/Discord.Net.WebSocket/API/Voice/UdpProtocolInfo.cs index 6f4719e7e..5e69a0370 100644 --- a/src/Discord.Net.WebSocket/API/Voice/UdpProtocolInfo.cs +++ b/src/Discord.Net.WebSocket/API/Voice/UdpProtocolInfo.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Newtonsoft.Json; namespace Discord.API.Voice diff --git a/src/Discord.Net.WebSocket/API/Voice/VoiceCloseCode.cs b/src/Discord.Net.WebSocket/API/Voice/VoiceCloseCode.cs new file mode 100644 index 000000000..e35227050 --- /dev/null +++ b/src/Discord.Net.WebSocket/API/Voice/VoiceCloseCode.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord.API.Voice +{ + /// + /// Represents generic op codes for voice disconnect. + /// + public enum VoiceCloseCode + { + /// + /// You sent an invalid opcode. + /// + UnknownOpcode = 4001, + /// + /// You sent an invalid payload in your identifying to the Gateway. + /// + DecodeFailure = 4002, + /// + /// You sent a payload before identifying with the Gateway. + /// + NotAuthenticated = 4003, + /// + /// The token you sent in your identify payload is incorrect. + /// + AuthenticationFailed = 4004, + /// + /// You sent more than one identify payload. Stahp. + /// + AlreadyAuthenticated = 4005, + /// + /// Your session is no longer valid. + /// + SessionNolongerValid = 4006, + /// + /// Your session has timed out. + /// + SessionTimeout = 4009, + /// + /// We can't find the server you're trying to connect to. + /// + ServerNotFound = 4011, + /// + /// We didn't recognize the protocol you sent. + /// + UnknownProtocol = 4012, + /// + /// Channel was deleted, you were kicked, voice server changed, or the main gateway session was dropped. Should not reconnect. + /// + Disconnected = 4014, + /// + /// The server crashed. Our bad! Try resuming. + /// + VoiceServerCrashed = 4015, + /// + /// We didn't recognize your encryption. + /// + UnknownEncryptionMode = 4016, + } +} diff --git a/src/Discord.Net.WebSocket/API/Voice/VoiceOpCode.cs b/src/Discord.Net.WebSocket/API/Voice/VoiceOpCode.cs index 67afe6173..94006505a 100644 --- a/src/Discord.Net.WebSocket/API/Voice/VoiceOpCode.cs +++ b/src/Discord.Net.WebSocket/API/Voice/VoiceOpCode.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 namespace Discord.API.Voice { internal enum VoiceOpCode : byte diff --git a/src/Discord.Net.WebSocket/Audio/Streams/BufferedWriteStream.cs b/src/Discord.Net.WebSocket/Audio/Streams/BufferedWriteStream.cs index a2de252a2..25afde784 100644 --- a/src/Discord.Net.WebSocket/Audio/Streams/BufferedWriteStream.cs +++ b/src/Discord.Net.WebSocket/Audio/Streams/BufferedWriteStream.cs @@ -125,7 +125,7 @@ namespace Discord.Audio.Streams timestamp += OpusEncoder.FrameSamplesPerChannel; } #if DEBUG - var _ = _logger?.DebugAsync("Buffer underrun"); + var _ = _logger?.DebugAsync("Buffer under run"); #endif } } diff --git a/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs b/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs index fcaa793fc..4ad25d4d5 100644 --- a/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs +++ b/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs @@ -1,3 +1,4 @@ +using Discord.Rest; using System; using System.Collections.Generic; using System.Threading.Tasks; @@ -6,7 +7,7 @@ namespace Discord.WebSocket { public partial class BaseSocketClient { - //Channels + #region Channels /// Fired when a channel is created. /// /// @@ -23,7 +24,7 @@ namespace Discord.WebSocket /// /// - public event Func ChannelCreated + public event Func ChannelCreated { add { _channelCreatedEvent.Add(value); } remove { _channelCreatedEvent.Remove(value); } @@ -45,7 +46,8 @@ namespace Discord.WebSocket /// /// - public event Func ChannelDestroyed { + public event Func ChannelDestroyed + { add { _channelDestroyedEvent.Add(value); } remove { _channelDestroyedEvent.Remove(value); } } @@ -67,13 +69,15 @@ namespace Discord.WebSocket /// /// - public event Func ChannelUpdated { + public event Func ChannelUpdated + { add { _channelUpdatedEvent.Add(value); } remove { _channelUpdatedEvent.Remove(value); } - } + } internal readonly AsyncEvent> _channelUpdatedEvent = new AsyncEvent>(); + #endregion - //Messages + #region Messages /// Fired when a message is received. /// /// @@ -92,7 +96,8 @@ namespace Discord.WebSocket /// /// - public event Func MessageReceived { + public event Func MessageReceived + { add { _messageReceivedEvent.Add(value); } remove { _messageReceivedEvent.Remove(value); } } @@ -124,7 +129,9 @@ namespace Discord.WebSocket /// /// - public event Func, Cacheable, Task> MessageDeleted { + + public event Func, Cacheable, Task> MessageDeleted + { add { _messageDeletedEvent.Add(value); } remove { _messageDeletedEvent.Remove(value); } } @@ -182,7 +189,8 @@ namespace Discord.WebSocket /// parameter. /// /// - public event Func, SocketMessage, ISocketMessageChannel, Task> MessageUpdated { + public event Func, SocketMessage, ISocketMessageChannel, Task> MessageUpdated + { add { _messageUpdatedEvent.Add(value); } remove { _messageUpdatedEvent.Remove(value); } } @@ -217,19 +225,22 @@ namespace Discord.WebSocket /// /// - public event Func, Cacheable, SocketReaction, Task> ReactionAdded { + public event Func, Cacheable, SocketReaction, Task> ReactionAdded + { add { _reactionAddedEvent.Add(value); } remove { _reactionAddedEvent.Remove(value); } } internal readonly AsyncEvent, Cacheable, SocketReaction, Task>> _reactionAddedEvent = new AsyncEvent, Cacheable, SocketReaction, Task>>(); /// Fired when a reaction is removed from a message. - public event Func, Cacheable, SocketReaction, Task> ReactionRemoved { + public event Func, Cacheable, SocketReaction, Task> ReactionRemoved + { add { _reactionRemovedEvent.Add(value); } remove { _reactionRemovedEvent.Remove(value); } } internal readonly AsyncEvent, Cacheable, SocketReaction, Task>> _reactionRemovedEvent = new AsyncEvent, Cacheable, SocketReaction, Task>>(); /// Fired when all reactions to a message are cleared. - public event Func, Cacheable, Task> ReactionsCleared { + public event Func, Cacheable, Task> ReactionsCleared + { add { _reactionsClearedEvent.Add(value); } remove { _reactionsClearedEvent.Remove(value); } } @@ -256,104 +267,200 @@ namespace Discord.WebSocket remove { _reactionsRemovedForEmoteEvent.Remove(value); } } internal readonly AsyncEvent, Cacheable, IEmote, Task>> _reactionsRemovedForEmoteEvent = new AsyncEvent, Cacheable, IEmote, Task>>(); + #endregion - //Roles + #region Roles /// Fired when a role is created. - public event Func RoleCreated { + public event Func RoleCreated + { add { _roleCreatedEvent.Add(value); } remove { _roleCreatedEvent.Remove(value); } } internal readonly AsyncEvent> _roleCreatedEvent = new AsyncEvent>(); /// Fired when a role is deleted. - public event Func RoleDeleted { + public event Func RoleDeleted + { add { _roleDeletedEvent.Add(value); } remove { _roleDeletedEvent.Remove(value); } } internal readonly AsyncEvent> _roleDeletedEvent = new AsyncEvent>(); /// Fired when a role is updated. - public event Func RoleUpdated { + public event Func RoleUpdated + { add { _roleUpdatedEvent.Add(value); } remove { _roleUpdatedEvent.Remove(value); } } internal readonly AsyncEvent> _roleUpdatedEvent = new AsyncEvent>(); + #endregion - //Guilds + #region Guilds /// Fired when the connected account joins a guild. - public event Func JoinedGuild { + public event Func JoinedGuild + { add { _joinedGuildEvent.Add(value); } remove { _joinedGuildEvent.Remove(value); } } internal readonly AsyncEvent> _joinedGuildEvent = new AsyncEvent>(); /// Fired when the connected account leaves a guild. - public event Func LeftGuild { + public event Func LeftGuild + { add { _leftGuildEvent.Add(value); } remove { _leftGuildEvent.Remove(value); } } internal readonly AsyncEvent> _leftGuildEvent = new AsyncEvent>(); /// Fired when a guild becomes available. - public event Func GuildAvailable { + public event Func GuildAvailable + { add { _guildAvailableEvent.Add(value); } remove { _guildAvailableEvent.Remove(value); } } internal readonly AsyncEvent> _guildAvailableEvent = new AsyncEvent>(); /// Fired when a guild becomes unavailable. - public event Func GuildUnavailable { + public event Func GuildUnavailable + { add { _guildUnavailableEvent.Add(value); } remove { _guildUnavailableEvent.Remove(value); } } internal readonly AsyncEvent> _guildUnavailableEvent = new AsyncEvent>(); /// Fired when offline guild members are downloaded. - public event Func GuildMembersDownloaded { + public event Func GuildMembersDownloaded + { add { _guildMembersDownloadedEvent.Add(value); } remove { _guildMembersDownloadedEvent.Remove(value); } } internal readonly AsyncEvent> _guildMembersDownloadedEvent = new AsyncEvent>(); /// Fired when a guild is updated. - public event Func GuildUpdated { + public event Func GuildUpdated + { add { _guildUpdatedEvent.Add(value); } remove { _guildUpdatedEvent.Remove(value); } } internal readonly AsyncEvent> _guildUpdatedEvent = new AsyncEvent>(); + /// Fired when a user leaves without agreeing to the member screening + public event Func, SocketGuild, Task> GuildJoinRequestDeleted + { + add { _guildJoinRequestDeletedEvent.Add(value); } + remove { _guildJoinRequestDeletedEvent.Remove(value); } + } + internal readonly AsyncEvent, SocketGuild, Task>> _guildJoinRequestDeletedEvent = new AsyncEvent, SocketGuild, Task>>(); + #endregion + + #region Guild Events + + /// + /// Fired when a guild event is created. + /// + public event Func GuildScheduledEventCreated + { + add { _guildScheduledEventCreated.Add(value); } + remove { _guildScheduledEventCreated.Remove(value); } + } + internal readonly AsyncEvent> _guildScheduledEventCreated = new AsyncEvent>(); + + /// + /// Fired when a guild event is updated. + /// + public event Func, SocketGuildEvent, Task> GuildScheduledEventUpdated + { + add { _guildScheduledEventUpdated.Add(value); } + remove { _guildScheduledEventUpdated.Remove(value); } + } + internal readonly AsyncEvent, SocketGuildEvent, Task>> _guildScheduledEventUpdated = new AsyncEvent, SocketGuildEvent, Task>>(); + + + /// + /// Fired when a guild event is cancelled. + /// + public event Func GuildScheduledEventCancelled + { + add { _guildScheduledEventCancelled.Add(value); } + remove { _guildScheduledEventCancelled.Remove(value); } + } + internal readonly AsyncEvent> _guildScheduledEventCancelled = new AsyncEvent>(); + + /// + /// Fired when a guild event is completed. + /// + public event Func GuildScheduledEventCompleted + { + add { _guildScheduledEventCompleted.Add(value); } + remove { _guildScheduledEventCompleted.Remove(value); } + } + internal readonly AsyncEvent> _guildScheduledEventCompleted = new AsyncEvent>(); + + /// + /// Fired when a guild event is started. + /// + public event Func GuildScheduledEventStarted + { + add { _guildScheduledEventStarted.Add(value); } + remove { _guildScheduledEventStarted.Remove(value); } + } + internal readonly AsyncEvent> _guildScheduledEventStarted = new AsyncEvent>(); + + public event Func, SocketGuildEvent, Task> GuildScheduledEventUserAdd + { + add { _guildScheduledEventUserAdd.Add(value); } + remove { _guildScheduledEventUserAdd.Remove(value); } + } + internal readonly AsyncEvent, SocketGuildEvent, Task>> _guildScheduledEventUserAdd = new AsyncEvent, SocketGuildEvent, Task>>(); + + public event Func, SocketGuildEvent, Task> GuildScheduledEventUserRemove + { + add { _guildScheduledEventUserRemove.Add(value); } + remove { _guildScheduledEventUserRemove.Remove(value); } + } + internal readonly AsyncEvent, SocketGuildEvent, Task>> _guildScheduledEventUserRemove = new AsyncEvent, SocketGuildEvent, Task>>(); + - //Users + #endregion + + #region Users /// Fired when a user joins a guild. - public event Func UserJoined { + public event Func UserJoined + { add { _userJoinedEvent.Add(value); } remove { _userJoinedEvent.Remove(value); } } internal readonly AsyncEvent> _userJoinedEvent = new AsyncEvent>(); /// Fired when a user leaves a guild. - public event Func UserLeft { + public event Func UserLeft + { add { _userLeftEvent.Add(value); } remove { _userLeftEvent.Remove(value); } } internal readonly AsyncEvent> _userLeftEvent = new AsyncEvent>(); /// Fired when a user is banned from a guild. - public event Func UserBanned { + public event Func UserBanned + { add { _userBannedEvent.Add(value); } remove { _userBannedEvent.Remove(value); } } internal readonly AsyncEvent> _userBannedEvent = new AsyncEvent>(); /// Fired when a user is unbanned from a guild. - public event Func UserUnbanned { + public event Func UserUnbanned + { add { _userUnbannedEvent.Add(value); } remove { _userUnbannedEvent.Remove(value); } } internal readonly AsyncEvent> _userUnbannedEvent = new AsyncEvent>(); /// Fired when a user is updated. - public event Func UserUpdated { + public event Func UserUpdated + { add { _userUpdatedEvent.Add(value); } remove { _userUpdatedEvent.Remove(value); } } internal readonly AsyncEvent> _userUpdatedEvent = new AsyncEvent>(); /// Fired when a guild member is updated, or a member presence is updated. - public event Func, SocketGuildUser, Task> GuildMemberUpdated { + public event Func, SocketGuildUser, Task> GuildMemberUpdated + { add { _guildMemberUpdatedEvent.Add(value); } remove { _guildMemberUpdatedEvent.Remove(value); } } - internal readonly AsyncEvent, SocketGuildUser, Task>> _guildMemberUpdatedEvent = new AsyncEvent, SocketGuildUser, Task>>(); + internal readonly AsyncEvent, SocketGuildUser, Task>> _guildMemberUpdatedEvent = new AsyncEvent, SocketGuildUser, Task>>(); /// Fired when a user joins, leaves, or moves voice channels. - public event Func UserVoiceStateUpdated { + public event Func UserVoiceStateUpdated + { add { _userVoiceStateUpdatedEvent.Add(value); } remove { _userVoiceStateUpdatedEvent.Remove(value); } } @@ -361,36 +468,41 @@ namespace Discord.WebSocket /// Fired when the bot connects to a Discord voice server. public event Func VoiceServerUpdated { - add { _voiceServerUpdatedEvent.Add(value); } + add { _voiceServerUpdatedEvent.Add(value); } remove { _voiceServerUpdatedEvent.Remove(value); } } internal readonly AsyncEvent> _voiceServerUpdatedEvent = new AsyncEvent>(); /// Fired when the connected account is updated. - public event Func CurrentUserUpdated { + public event Func CurrentUserUpdated + { add { _selfUpdatedEvent.Add(value); } remove { _selfUpdatedEvent.Remove(value); } } internal readonly AsyncEvent> _selfUpdatedEvent = new AsyncEvent>(); /// Fired when a user starts typing. - public event Func, Cacheable, Task> UserIsTyping { + public event Func, Cacheable, Task> UserIsTyping + { add { _userIsTypingEvent.Add(value); } remove { _userIsTypingEvent.Remove(value); } } internal readonly AsyncEvent, Cacheable, Task>> _userIsTypingEvent = new AsyncEvent, Cacheable, Task>>(); /// Fired when a user joins a group channel. - public event Func RecipientAdded { + public event Func RecipientAdded + { add { _recipientAddedEvent.Add(value); } remove { _recipientAddedEvent.Remove(value); } } internal readonly AsyncEvent> _recipientAddedEvent = new AsyncEvent>(); /// Fired when a user is removed from a group channel. - public event Func RecipientRemoved { + public event Func RecipientRemoved + { add { _recipientRemovedEvent.Add(value); } remove { _recipientRemovedEvent.Remove(value); } } internal readonly AsyncEvent> _recipientRemovedEvent = new AsyncEvent>(); + #endregion - //Invites + #region Invites /// /// Fired when an invite is created. /// @@ -431,5 +543,292 @@ namespace Discord.WebSocket remove { _inviteDeletedEvent.Remove(value); } } internal readonly AsyncEvent> _inviteDeletedEvent = new AsyncEvent>(); + #endregion + + #region Interactions + /// + /// Fired when an Interaction is created. This event covers all types of interactions including but not limited to: buttons, select menus, slash commands, autocompletes. + /// + /// + /// + /// This event is fired when an interaction is created. The event handler must return a + /// and accept a as its parameter. + /// + /// + /// The interaction created will be passed into the parameter. + /// + /// + public event Func InteractionCreated + { + add { _interactionCreatedEvent.Add(value); } + remove { _interactionCreatedEvent.Remove(value); } + } + internal readonly AsyncEvent> _interactionCreatedEvent = new AsyncEvent>(); + + /// + /// Fired when a button is clicked and its interaction is received. + /// + public event Func ButtonExecuted + { + add => _buttonExecuted.Add(value); + remove => _buttonExecuted.Remove(value); + } + internal readonly AsyncEvent> _buttonExecuted = new AsyncEvent>(); + + /// + /// Fired when a select menu is used and its interaction is received. + /// + public event Func SelectMenuExecuted + { + add => _selectMenuExecuted.Add(value); + remove => _selectMenuExecuted.Remove(value); + } + internal readonly AsyncEvent> _selectMenuExecuted = new AsyncEvent>(); + /// + /// Fired when a slash command is used and its interaction is received. + /// + public event Func SlashCommandExecuted + { + add => _slashCommandExecuted.Add(value); + remove => _slashCommandExecuted.Remove(value); + } + internal readonly AsyncEvent> _slashCommandExecuted = new AsyncEvent>(); + + /// + /// Fired when a user command is used and its interaction is received. + /// + public event Func UserCommandExecuted + { + add => _userCommandExecuted.Add(value); + remove => _userCommandExecuted.Remove(value); + } + internal readonly AsyncEvent> _userCommandExecuted = new AsyncEvent>(); + + /// + /// Fired when a message command is used and its interaction is received. + /// + public event Func MessageCommandExecuted + { + add => _messageCommandExecuted.Add(value); + remove => _messageCommandExecuted.Remove(value); + } + internal readonly AsyncEvent> _messageCommandExecuted = new AsyncEvent>(); + /// + /// Fired when an autocomplete is used and its interaction is received. + /// + public event Func AutocompleteExecuted + { + add => _autocompleteExecuted.Add(value); + remove => _autocompleteExecuted.Remove(value); + } + internal readonly AsyncEvent> _autocompleteExecuted = new AsyncEvent>(); + + /// + /// Fired when a guild application command is created. + /// + /// + /// + /// This event is fired when an application command is created. The event handler must return a + /// and accept a as its parameter. + /// + /// + /// The command that was deleted will be passed into the parameter. + /// + /// + /// This event is an undocumented discord event and may break at any time, its not recommended to rely on this event + /// + /// + public event Func ApplicationCommandCreated + { + add { _applicationCommandCreated.Add(value); } + remove { _applicationCommandCreated.Remove(value); } + } + internal readonly AsyncEvent> _applicationCommandCreated = new AsyncEvent>(); + + /// + /// Fired when a guild application command is updated. + /// + /// + /// + /// This event is fired when an application command is updated. The event handler must return a + /// and accept a as its parameter. + /// + /// + /// The command that was deleted will be passed into the parameter. + /// + /// + /// This event is an undocumented discord event and may break at any time, its not recommended to rely on this event + /// + /// + public event Func ApplicationCommandUpdated + { + add { _applicationCommandUpdated.Add(value); } + remove { _applicationCommandUpdated.Remove(value); } + } + internal readonly AsyncEvent> _applicationCommandUpdated = new AsyncEvent>(); + + /// + /// Fired when a guild application command is deleted. + /// + /// + /// + /// This event is fired when an application command is deleted. The event handler must return a + /// and accept a as its parameter. + /// + /// + /// The command that was deleted will be passed into the parameter. + /// + /// + /// This event is an undocumented discord event and may break at any time, its not recommended to rely on this event + /// + /// + public event Func ApplicationCommandDeleted + { + add { _applicationCommandDeleted.Add(value); } + remove { _applicationCommandDeleted.Remove(value); } + } + internal readonly AsyncEvent> _applicationCommandDeleted = new AsyncEvent>(); + + /// + /// Fired when a thread is created within a guild, or when the current user is added to a thread. + /// + public event Func ThreadCreated + { + add { _threadCreated.Add(value); } + remove { _threadCreated.Remove(value); } + } + internal readonly AsyncEvent> _threadCreated = new AsyncEvent>(); + + /// + /// Fired when a thread is updated within a guild. + /// + public event Func, SocketThreadChannel, Task> ThreadUpdated + { + add { _threadUpdated.Add(value); } + remove { _threadUpdated.Remove(value); } + } + + internal readonly AsyncEvent, SocketThreadChannel, Task>> _threadUpdated = new(); + + /// + /// Fired when a thread is deleted. + /// + public event Func, Task> ThreadDeleted + { + add { _threadDeleted.Add(value); } + remove { _threadDeleted.Remove(value); } + } + internal readonly AsyncEvent, Task>> _threadDeleted = new AsyncEvent, Task>>(); + + /// + /// Fired when a user joins a thread + /// + public event Func ThreadMemberJoined + { + add { _threadMemberJoined.Add(value); } + remove { _threadMemberJoined.Remove(value); } + } + internal readonly AsyncEvent> _threadMemberJoined = new AsyncEvent>(); + + /// + /// Fired when a user leaves a thread + /// + public event Func ThreadMemberLeft + { + add { _threadMemberLeft.Add(value); } + remove { _threadMemberLeft.Remove(value); } + } + internal readonly AsyncEvent> _threadMemberLeft = new AsyncEvent>(); + + /// + /// Fired when a stage is started. + /// + public event Func StageStarted + { + add { _stageStarted.Add(value); } + remove { _stageStarted.Remove(value); } + } + internal readonly AsyncEvent> _stageStarted = new AsyncEvent>(); + + /// + /// Fired when a stage ends. + /// + public event Func StageEnded + { + add { _stageEnded.Add(value); } + remove { _stageEnded.Remove(value); } + } + internal readonly AsyncEvent> _stageEnded = new AsyncEvent>(); + + /// + /// Fired when a stage is updated. + /// + public event Func StageUpdated + { + add { _stageUpdated.Add(value); } + remove { _stageUpdated.Remove(value); } + } + internal readonly AsyncEvent> _stageUpdated = new AsyncEvent>(); + + /// + /// Fired when a user requests to speak within a stage channel. + /// + public event Func RequestToSpeak + { + add { _requestToSpeak.Add(value); } + remove { _requestToSpeak.Remove(value); } + } + internal readonly AsyncEvent> _requestToSpeak = new AsyncEvent>(); + + /// + /// Fired when a speaker is added in a stage channel. + /// + public event Func SpeakerAdded + { + add { _speakerAdded.Add(value); } + remove { _speakerAdded.Remove(value); } + } + internal readonly AsyncEvent> _speakerAdded = new AsyncEvent>(); + + /// + /// Fired when a speaker is removed from a stage channel. + /// + public event Func SpeakerRemoved + { + add { _speakerRemoved.Add(value); } + remove { _speakerRemoved.Remove(value); } + } + internal readonly AsyncEvent> _speakerRemoved = new AsyncEvent>(); + + /// + /// Fired when a sticker in a guild is created. + /// + public event Func GuildStickerCreated + { + add { _guildStickerCreated.Add(value); } + remove { _guildStickerCreated.Remove(value); } + } + internal readonly AsyncEvent> _guildStickerCreated = new AsyncEvent>(); + + /// + /// Fired when a sticker in a guild is updated. + /// + public event Func GuildStickerUpdated + { + add { _guildStickerUpdated.Add(value); } + remove { _guildStickerUpdated.Remove(value); } + } + internal readonly AsyncEvent> _guildStickerUpdated = new AsyncEvent>(); + + /// + /// Fired when a sticker in a guild is deleted. + /// + public event Func GuildStickerDeleted + { + add { _guildStickerDeleted.Add(value); } + remove { _guildStickerDeleted.Remove(value); } + } + internal readonly AsyncEvent> _guildStickerDeleted = new AsyncEvent>(); + #endregion } } diff --git a/src/Discord.Net.WebSocket/BaseSocketClient.cs b/src/Discord.Net.WebSocket/BaseSocketClient.cs index 1cfe6c8bf..9e25ab382 100644 --- a/src/Discord.Net.WebSocket/BaseSocketClient.cs +++ b/src/Discord.Net.WebSocket/BaseSocketClient.cs @@ -12,6 +12,7 @@ namespace Discord.WebSocket /// public abstract partial class BaseSocketClient : BaseDiscordClient, IDiscordClient { + #region BaseSocketClient protected readonly DiscordSocketConfig BaseConfig; /// @@ -44,6 +45,10 @@ namespace Discord.WebSocket internal new DiscordSocketApiClient ApiClient => base.ApiClient as DiscordSocketApiClient; + /// + /// Gets a collection of default stickers. + /// + public abstract IReadOnlyCollection> DefaultStickerPacks { get; } /// /// Gets the current logged-in user. /// @@ -75,7 +80,7 @@ namespace Discord.WebSocket : base(config, client) => BaseConfig = config; private static DiscordSocketApiClient CreateApiClient(DiscordSocketConfig config) => new DiscordSocketApiClient(config.RestClientProvider, config.WebSocketProvider, DiscordRestConfig.UserAgent, - useSystemClock: config.UseSystemClock); + useSystemClock: config.UseSystemClock); /// /// Gets a Discord application information for the logged-in user. @@ -268,8 +273,19 @@ namespace Discord.WebSocket /// public Task GetInviteAsync(string inviteId, RequestOptions options = null) => ClientHelper.GetInviteAsync(this, inviteId, options ?? RequestOptions.Default); - - // IDiscordClient + /// + /// Gets a sticker. + /// + /// Whether or not to allow downloading from the api. + /// The id of the sticker to get. + /// The options to be used when sending the request. + /// + /// A if found, otherwise . + /// + public abstract Task GetStickerAsync(ulong id, CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); +#endregion + + #region IDiscordClient /// async Task IDiscordClient.GetApplicationInfoAsync(RequestOptions options) => await GetApplicationInfoAsync(options).ConfigureAwait(false); @@ -317,5 +333,6 @@ namespace Discord.WebSocket { return await GetVoiceRegionsAsync().ConfigureAwait(false); } + #endregion } } diff --git a/src/Discord.Net.WebSocket/ClientState.cs b/src/Discord.Net.WebSocket/ClientState.cs index f2e370d02..7129feb48 100644 --- a/src/Discord.Net.WebSocket/ClientState.cs +++ b/src/Discord.Net.WebSocket/ClientState.cs @@ -16,12 +16,14 @@ namespace Discord.WebSocket private readonly ConcurrentDictionary _guilds; private readonly ConcurrentDictionary _users; private readonly ConcurrentHashSet _groupChannels; + private readonly ConcurrentDictionary _commands; internal IReadOnlyCollection Channels => _channels.ToReadOnlyCollection(); internal IReadOnlyCollection DMChannels => _dmChannels.ToReadOnlyCollection(); internal IReadOnlyCollection GroupChannels => _groupChannels.Select(x => GetChannel(x) as SocketGroupChannel).ToReadOnlyCollection(_groupChannels); internal IReadOnlyCollection Guilds => _guilds.ToReadOnlyCollection(); internal IReadOnlyCollection Users => _users.ToReadOnlyCollection(); + internal IReadOnlyCollection Commands => _commands.ToReadOnlyCollection(); internal IReadOnlyCollection PrivateChannels => _dmChannels.Select(x => x.Value as ISocketPrivateChannel).Concat( @@ -37,6 +39,7 @@ namespace Discord.WebSocket _guilds = new ConcurrentDictionary(ConcurrentHashSet.DefaultConcurrencyLevel, (int)(guildCount * CollectionMultiplier)); _users = new ConcurrentDictionary(ConcurrentHashSet.DefaultConcurrencyLevel, (int)(estimatedUsersCount * CollectionMultiplier)); _groupChannels = new ConcurrentHashSet(ConcurrentHashSet.DefaultConcurrencyLevel, (int)(10 * CollectionMultiplier)); + _commands = new ConcurrentDictionary(); } internal SocketChannel GetChannel(ulong id) @@ -139,5 +142,33 @@ namespace Discord.WebSocket foreach (var guild in _guilds.Values) guild.PurgeGuildUserCache(); } + + internal SocketApplicationCommand GetCommand(ulong id) + { + if (_commands.TryGetValue(id, out SocketApplicationCommand command)) + return command; + return null; + } + internal void AddCommand(SocketApplicationCommand command) + { + _commands[command.Id] = command; + } + internal SocketApplicationCommand GetOrAddCommand(ulong id, Func commandFactory) + { + return _commands.GetOrAdd(id, commandFactory); + } + internal SocketApplicationCommand RemoveCommand(ulong id) + { + if (_commands.TryRemove(id, out SocketApplicationCommand command)) + return command; + return null; + } + internal void PurgeCommands(Func precondition) + { + var ids = _commands.Where(x => precondition(x.Value)).Select(x => x.Key); + + foreach (var id in ids) + _commands.TryRemove(id, out var _); + } } } diff --git a/src/Discord.Net.WebSocket/Commands/ShardedCommandContext.cs b/src/Discord.Net.WebSocket/Commands/ShardedCommandContext.cs index f970c32fc..905cd01a1 100644 --- a/src/Discord.Net.WebSocket/Commands/ShardedCommandContext.cs +++ b/src/Discord.Net.WebSocket/Commands/ShardedCommandContext.cs @@ -5,6 +5,7 @@ namespace Discord.Commands /// The sharded variant of , which may contain the client, user, guild, channel, and message. public class ShardedCommandContext : SocketCommandContext, ICommandContext { + #region ShardedCommandContext /// Gets the that the command is executed with. public new DiscordShardedClient Client { get; } @@ -17,9 +18,11 @@ namespace Discord.Commands /// Gets the shard ID of the command context. private static int GetShardId(DiscordShardedClient client, IGuild guild) => guild == null ? 0 : client.GetShardIdFor(guild); +#endregion - //ICommandContext + #region ICommandContext /// IDiscordClient ICommandContext.Client => Client; + #endregion } } diff --git a/src/Discord.Net.WebSocket/Commands/SocketCommandContext.cs b/src/Discord.Net.WebSocket/Commands/SocketCommandContext.cs index f4d517909..d7180873b 100644 --- a/src/Discord.Net.WebSocket/Commands/SocketCommandContext.cs +++ b/src/Discord.Net.WebSocket/Commands/SocketCommandContext.cs @@ -7,6 +7,7 @@ namespace Discord.Commands /// public class SocketCommandContext : ICommandContext { + #region SocketCommandContext /// /// Gets the that the command is executed with. /// @@ -46,8 +47,9 @@ namespace Discord.Commands User = msg.Author; Message = msg; } +#endregion - //ICommandContext + #region ICommandContext /// IDiscordClient ICommandContext.Client => Client; /// @@ -58,5 +60,6 @@ namespace Discord.Commands IUser ICommandContext.User => User; /// IUserMessage ICommandContext.Message => Message; + #endregion } } diff --git a/src/Discord.Net.WebSocket/ConnectionManager.cs b/src/Discord.Net.WebSocket/ConnectionManager.cs index e444f359f..f304d4ea8 100644 --- a/src/Discord.Net.WebSocket/ConnectionManager.cs +++ b/src/Discord.Net.WebSocket/ConnectionManager.cs @@ -57,6 +57,9 @@ namespace Discord public virtual async Task StartAsync() { + if (State != ConnectionState.Disconnected) + throw new InvalidOperationException("Cannot start an already running client."); + await AcquireConnectionLock().ConfigureAwait(false); var reconnectCancelToken = new CancellationTokenSource(); _reconnectCancelToken?.Dispose(); diff --git a/src/Discord.Net.WebSocket/Discord.Net.WebSocket.csproj b/src/Discord.Net.WebSocket/Discord.Net.WebSocket.csproj index 01aece130..4121e7d00 100644 --- a/src/Discord.Net.WebSocket/Discord.Net.WebSocket.csproj +++ b/src/Discord.Net.WebSocket/Discord.Net.WebSocket.csproj @@ -1,4 +1,4 @@ - + @@ -13,4 +13,4 @@ - + \ No newline at end of file diff --git a/src/Discord.Net.WebSocket/DiscordShardedClient.Events.cs b/src/Discord.Net.WebSocket/DiscordShardedClient.Events.cs index c9e679669..50230572c 100644 --- a/src/Discord.Net.WebSocket/DiscordShardedClient.Events.cs +++ b/src/Discord.Net.WebSocket/DiscordShardedClient.Events.cs @@ -1,11 +1,11 @@ -using System; +using System; using System.Threading.Tasks; namespace Discord.WebSocket { public partial class DiscordShardedClient { - //General + #region General /// Fired when a shard is connected to the Discord gateway. public event Func ShardConnected { @@ -34,5 +34,6 @@ namespace Discord.WebSocket remove { _shardLatencyUpdatedEvent.Remove(value); } } private readonly AsyncEvent> _shardLatencyUpdatedEvent = new AsyncEvent>(); + #endregion } -} \ No newline at end of file +} diff --git a/src/Discord.Net.WebSocket/DiscordShardedClient.cs b/src/Discord.Net.WebSocket/DiscordShardedClient.cs index e6d05b525..307f9a009 100644 --- a/src/Discord.Net.WebSocket/DiscordShardedClient.cs +++ b/src/Discord.Net.WebSocket/DiscordShardedClient.cs @@ -6,16 +6,19 @@ using System.IO; using System.Linq; using System.Threading.Tasks; using System.Threading; +using System.Collections.Immutable; namespace Discord.WebSocket { public partial class DiscordShardedClient : BaseSocketClient, IDiscordClient { + #region DiscordShardedClient private readonly DiscordSocketConfig _baseConfig; private readonly Dictionary _shardIdsToIndex; private readonly bool _automaticShards; private int[] _shardIds; private DiscordSocketClient[] _shards; + private ImmutableArray> _defaultStickers; private int _totalShards; private SemaphoreSlim[] _identifySemaphores; private object _semaphoreResetLock; @@ -30,7 +33,20 @@ namespace Discord.WebSocket /// public override IActivity Activity { get => _shards[0].Activity; protected set { } } - internal new DiscordSocketApiClient ApiClient => base.ApiClient as DiscordSocketApiClient; + internal new DiscordSocketApiClient ApiClient + { + get + { + if (base.ApiClient.CurrentUserId == null) + base.ApiClient.CurrentUserId = CurrentUser?.Id; + + return base.ApiClient; + } + } + /// + public override IReadOnlyCollection> DefaultStickerPacks + => _defaultStickers.ToReadOnlyCollection(); + /// public override IReadOnlyCollection Guilds => GetGuilds().ToReadOnlyCollection(GetGuildCount); /// @@ -68,6 +84,7 @@ namespace Discord.WebSocket _shardIdsToIndex = new Dictionary(); config.DisplayInitialLog = false; _baseConfig = config; + _defaultStickers = ImmutableArray.Create>(); if (config.TotalShards == null) _automaticShards = true; @@ -146,6 +163,10 @@ namespace Discord.WebSocket //Assume thread safe: already in a connection lock for (int i = 0; i < _shards.Length; i++) await _shards[i].LoginAsync(tokenType, token); + + if(_defaultStickers.Length == 0 && _baseConfig.AlwaysDownloadDefaultStickers) + await DownloadDefaultStickersAsync().ConfigureAwait(false); + } internal override async Task OnLogoutAsync() { @@ -238,6 +259,67 @@ namespace Discord.WebSocket result += _shards[i].Guilds.Count; return result; } + /// + public override async Task GetStickerAsync(ulong id, CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null) + { + var sticker = _defaultStickers.FirstOrDefault(x => x.Stickers.Any(y => y.Id == id))?.Stickers.FirstOrDefault(x => x.Id == id); + + if (sticker != null) + return sticker; + + foreach (var guild in Guilds) + { + sticker = await guild.GetStickerAsync(id, CacheMode.CacheOnly).ConfigureAwait(false); + + if (sticker != null) + return sticker; + } + + if (mode == CacheMode.CacheOnly) + return null; + + var model = await ApiClient.GetStickerAsync(id, options).ConfigureAwait(false); + + if (model == null) + return null; + + + if (model.GuildId.IsSpecified) + { + var guild = GetGuild(model.GuildId.Value); + sticker = guild.AddOrUpdateSticker(model); + return sticker; + } + else + { + return SocketSticker.Create(_shards[0], model); + } + } + private async Task DownloadDefaultStickersAsync() + { + var models = await ApiClient.ListNitroStickerPacksAsync().ConfigureAwait(false); + + var builder = ImmutableArray.CreateBuilder>(); + + foreach (var model in models.StickerPacks) + { + var stickers = model.Stickers.Select(x => SocketSticker.Create(_shards[0], x)); + + var pack = new StickerPack( + model.Name, + model.Id, + model.SkuId, + model.CoverStickerId.ToNullable(), + model.Description, + model.BannerAssetId, + stickers + ); + + builder.Add(pack); + } + + _defaultStickers = builder.ToImmutable(); + } /// public override SocketUser GetUser(ulong id) @@ -377,9 +459,45 @@ namespace Discord.WebSocket client.InviteCreated += (invite) => _inviteCreatedEvent.InvokeAsync(invite); client.InviteDeleted += (channel, invite) => _inviteDeletedEvent.InvokeAsync(channel, invite); + + client.InteractionCreated += (interaction) => _interactionCreatedEvent.InvokeAsync(interaction); + client.ButtonExecuted += (arg) => _buttonExecuted.InvokeAsync(arg); + client.SelectMenuExecuted += (arg) => _selectMenuExecuted.InvokeAsync(arg); + client.SlashCommandExecuted += (arg) => _slashCommandExecuted.InvokeAsync(arg); + client.UserCommandExecuted += (arg) => _userCommandExecuted.InvokeAsync(arg); + client.MessageCommandExecuted += (arg) => _messageCommandExecuted.InvokeAsync(arg); + client.AutocompleteExecuted += (arg) => _autocompleteExecuted.InvokeAsync(arg); + + client.ThreadUpdated += (thread1, thread2) => _threadUpdated.InvokeAsync(thread1, thread2); + client.ThreadCreated += (thread) => _threadCreated.InvokeAsync(thread); + client.ThreadDeleted += (thread) => _threadDeleted.InvokeAsync(thread); + + client.ThreadMemberJoined += (user) => _threadMemberJoined.InvokeAsync(user); + client.ThreadMemberLeft += (user) => _threadMemberLeft.InvokeAsync(user); + client.StageEnded += (stage) => _stageEnded.InvokeAsync(stage); + client.StageStarted += (stage) => _stageStarted.InvokeAsync(stage); + client.StageUpdated += (stage1, stage2) => _stageUpdated.InvokeAsync(stage1, stage2); + + client.RequestToSpeak += (stage, user) => _requestToSpeak.InvokeAsync(stage, user); + client.SpeakerAdded += (stage, user) => _speakerAdded.InvokeAsync(stage, user); + client.SpeakerRemoved += (stage, user) => _speakerRemoved.InvokeAsync(stage, user); + + client.GuildStickerCreated += (sticker) => _guildStickerCreated.InvokeAsync(sticker); + client.GuildStickerDeleted += (sticker) => _guildStickerDeleted.InvokeAsync(sticker); + client.GuildStickerUpdated += (before, after) => _guildStickerUpdated.InvokeAsync(before, after); + client.GuildJoinRequestDeleted += (userId, guildId) => _guildJoinRequestDeletedEvent.InvokeAsync(userId, guildId); + + client.GuildScheduledEventCancelled += (arg) => _guildScheduledEventCancelled.InvokeAsync(arg); + client.GuildScheduledEventCompleted += (arg) => _guildScheduledEventCompleted.InvokeAsync(arg); + client.GuildScheduledEventCreated += (arg) => _guildScheduledEventCreated.InvokeAsync(arg); + client.GuildScheduledEventUpdated += (arg1, arg2) => _guildScheduledEventUpdated.InvokeAsync(arg1, arg2); + client.GuildScheduledEventStarted += (arg) => _guildScheduledEventStarted.InvokeAsync(arg); + client.GuildScheduledEventUserAdd += (arg1, arg2) => _guildScheduledEventUserAdd.InvokeAsync(arg1, arg2); + client.GuildScheduledEventUserRemove += (arg1, arg2) => _guildScheduledEventUserRemove.InvokeAsync(arg1, arg2); } +#endregion - //IDiscordClient + #region IDiscordClient /// async Task IDiscordClient.GetApplicationInfoAsync(RequestOptions options) => await GetApplicationInfoAsync().ConfigureAwait(false); @@ -426,7 +544,9 @@ namespace Discord.WebSocket { return await GetVoiceRegionAsync(id).ConfigureAwait(false); } + #endregion + #region Dispose internal override void Dispose(bool disposing) { if (!_isDisposed) @@ -445,5 +565,6 @@ namespace Discord.WebSocket base.Dispose(disposing); } + #endregion } } diff --git a/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs b/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs index 65fd23d3f..3c0f3d4a8 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Discord.API.Gateway; using Discord.Net.Queue; using Discord.Net.Rest; @@ -75,8 +74,15 @@ namespace Discord.API using (var jsonReader = new JsonTextReader(reader)) { var msg = _serializer.Deserialize(jsonReader); + if (msg != null) + { +#if DEBUG_PACKETS + Console.WriteLine($"<- {(GatewayOpCode)msg.Operation} [{msg.Type ?? "none"}] : {(msg.Payload as Newtonsoft.Json.Linq.JToken)?.ToString().Length}"); +#endif + await _receivedGatewayEvent.InvokeAsync((GatewayOpCode)msg.Operation, msg.Sequence, msg.Type, msg.Payload).ConfigureAwait(false); + } } } }; @@ -87,11 +93,21 @@ namespace Discord.API { var msg = _serializer.Deserialize(jsonReader); if (msg != null) + { +#if DEBUG_PACKETS + Console.WriteLine($"<- {(GatewayOpCode)msg.Operation} [{msg.Type ?? "none"}] : {(msg.Payload as Newtonsoft.Json.Linq.JToken)?.ToString().Length}"); +#endif + await _receivedGatewayEvent.InvokeAsync((GatewayOpCode)msg.Operation, msg.Sequence, msg.Type, msg.Payload).ConfigureAwait(false); + } } }; WebSocketClient.Closed += async ex => { +#if DEBUG_PACKETS + Console.WriteLine(ex); +#endif + await DisconnectAsync().ConfigureAwait(false); await _disconnectedEvent.InvokeAsync(ex).ConfigureAwait(false); }; @@ -153,6 +169,11 @@ namespace Discord.API var gatewayResponse = await GetGatewayAsync().ConfigureAwait(false); _gatewayUrl = $"{gatewayResponse.Url}?v={DiscordConfig.APIVersion}&encoding={DiscordSocketConfig.GatewayEncoding}&compress=zlib-stream"; } + +#if DEBUG_PACKETS + Console.WriteLine("Connecting to gateway: " + _gatewayUrl); +#endif + await WebSocketClient.ConnectAsync(_gatewayUrl).ConfigureAwait(false); ConnectionState = ConnectionState.Connected; @@ -195,7 +216,7 @@ namespace Discord.API ConnectionState = ConnectionState.Disconnected; } - //Core + #region Core public Task SendGatewayAsync(GatewayOpCode opCode, object payload, RequestOptions options = null) => SendGatewayInternalAsync(opCode, payload, options); private async Task SendGatewayInternalAsync(GatewayOpCode opCode, object payload, RequestOptions options) @@ -213,6 +234,10 @@ namespace Discord.API options.BucketId = GatewayBucket.Get(GatewayBucketType.Unbucketed).Id; await RequestQueue.SendAsync(new WebSocketRequest(WebSocketClient, bytes, true, opCode == GatewayOpCode.Heartbeat, options)).ConfigureAwait(false); await _sentGatewayMessageEvent.InvokeAsync(opCode).ConfigureAwait(false); + +#if DEBUG_PACKETS + Console.WriteLine($"-> {opCode}:\n{SerializeJson(payload)}"); +#endif } public async Task SendIdentifyAsync(int largeThreshold = 100, int shardID = 0, int totalShards = 1, GatewayIntents gatewayIntents = GatewayIntents.AllUnprivileged, (UserStatus, bool, long?, GameModel)? presence = null, RequestOptions options = null) @@ -220,7 +245,9 @@ namespace Discord.API options = RequestOptions.CreateOrClone(options); var props = new Dictionary { - ["$device"] = "Discord.Net" + ["$device"] = "Discord.Net", + ["$os"] = Environment.OSVersion.Platform.ToString(), + [$"browser"] = "Discord.Net" }; var msg = new IdentifyParams() { @@ -237,12 +264,12 @@ namespace Discord.API if (presence.HasValue) { - msg.Presence = new StatusUpdateParams + msg.Presence = new PresenceUpdateParams { Status = presence.Value.Item1, IsAFK = presence.Value.Item2, IdleSince = presence.Value.Item3, - Game = presence.Value.Item4, + Activities = new object[] { presence.Value.Item4 } }; } @@ -264,18 +291,18 @@ namespace Discord.API options = RequestOptions.CreateOrClone(options); await SendGatewayAsync(GatewayOpCode.Heartbeat, lastSeq, options: options).ConfigureAwait(false); } - public async Task SendStatusUpdateAsync(UserStatus status, bool isAFK, long? since, GameModel game, RequestOptions options = null) + public async Task SendPresenceUpdateAsync(UserStatus status, bool isAFK, long? since, GameModel game, RequestOptions options = null) { options = RequestOptions.CreateOrClone(options); - var args = new StatusUpdateParams + var args = new PresenceUpdateParams { Status = status, IdleSince = since, IsAFK = isAFK, - Game = game + Activities = new object[] { game } }; options.BucketId = GatewayBucket.Get(GatewayBucketType.PresenceUpdate).Id; - await SendGatewayAsync(GatewayOpCode.StatusUpdate, args, options: options).ConfigureAwait(false); + await SendGatewayAsync(GatewayOpCode.PresenceUpdate, args, options: options).ConfigureAwait(false); } public async Task SendRequestMembersAsync(IEnumerable guildIds, RequestOptions options = null) { @@ -299,5 +326,6 @@ namespace Discord.API options = RequestOptions.CreateOrClone(options); await SendGatewayAsync(GatewayOpCode.GuildSync, guildIds, options: options).ConfigureAwait(false); } + #endregion } } diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.Events.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.Events.cs index 0418727bf..ab13d93db 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.Events.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.Events.cs @@ -6,7 +6,7 @@ namespace Discord.WebSocket { public partial class DiscordSocketClient { - //General + #region General /// Fired when connected to the Discord gateway. public event Func Connected { @@ -45,5 +45,6 @@ namespace Discord.WebSocket internal DiscordSocketClient(DiscordSocketConfig config, DiscordRestApiClient client) : base(config, client) { } + #endregion } } diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 2cdff662c..03c85ffc7 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -24,8 +24,9 @@ namespace Discord.WebSocket /// public partial class DiscordSocketClient : BaseSocketClient, IDiscordClient { + #region DiscordSocketClient private readonly ConcurrentQueue _largeGuilds; - private readonly JsonSerializer _serializer; + internal readonly JsonSerializer _serializer; private readonly DiscordShardedClient _shardedClient; private readonly DiscordSocketClient _parentClient; private readonly ConcurrentQueue _heartbeatTimes; @@ -44,12 +45,13 @@ namespace Discord.WebSocket private RestApplication _applicationInfo; private bool _isDisposed; private GatewayIntents _gatewayIntents; + private ImmutableArray> _defaultStickers; /// /// Provides access to a REST-only client with a shared state from this client. /// public override DiscordSocketRestClient Rest { get; } - /// Gets the shard of of this client. + /// Gets the shard of this client. public int ShardId { get; } /// Gets the current connection state of this client. public ConnectionState ConnectionState => _connection.State; @@ -61,8 +63,9 @@ namespace Discord.WebSocket /// public override IActivity Activity { get => _activity.GetValueOrDefault(); protected set => _activity = Optional.Create(value); } private Optional _activity; + #endregion - //From DiscordSocketConfig + // From DiscordSocketConfig internal int TotalShards { get; private set; } internal int MessageCacheSize { get; private set; } internal int LargeThreshold { get; private set; } @@ -71,10 +74,22 @@ namespace Discord.WebSocket internal WebSocketProvider WebSocketProvider { get; private set; } internal bool AlwaysDownloadUsers { get; private set; } internal int? HandlerTimeout { get; private set; } - - internal new DiscordSocketApiClient ApiClient => base.ApiClient as DiscordSocketApiClient; + internal bool AlwaysDownloadDefaultStickers { get; private set; } + internal bool AlwaysResolveStickers { get; private set; } + internal new DiscordSocketApiClient ApiClient => base.ApiClient; /// public override IReadOnlyCollection Guilds => State.Guilds; + /// + public override IReadOnlyCollection> DefaultStickerPacks + { + get + { + if (_shardedClient != null) + return _shardedClient.DefaultStickerPacks; + else + return _defaultStickers.ToReadOnlyCollection(); + } + } /// public override IReadOnlyCollection PrivateChannels => State.PrivateChannels; /// @@ -130,11 +145,14 @@ namespace Discord.WebSocket UdpSocketProvider = config.UdpSocketProvider; WebSocketProvider = config.WebSocketProvider; AlwaysDownloadUsers = config.AlwaysDownloadUsers; + AlwaysDownloadDefaultStickers = config.AlwaysDownloadDefaultStickers; + AlwaysResolveStickers = config.AlwaysResolveStickers; HandlerTimeout = config.HandlerTimeout; State = new ClientState(0, 0); Rest = new DiscordSocketRestClient(config, ApiClient); _heartbeatTimes = new ConcurrentQueue(); _gatewayIntents = config.GatewayIntents; + _defaultStickers = ImmutableArray.Create>(); _stateLock = new SemaphoreSlim(1, 1); _gatewayLogger = LogManager.CreateLogger(ShardId == 0 && TotalShards == 1 ? "Gateway" : $"Shard #{ShardId}"); @@ -193,6 +211,35 @@ namespace Discord.WebSocket base.Dispose(disposing); } + internal override async Task OnLoginAsync(TokenType tokenType, string token) + { + if (_shardedClient == null && _defaultStickers.Length == 0 && AlwaysDownloadDefaultStickers) + { + var models = await ApiClient.ListNitroStickerPacksAsync().ConfigureAwait(false); + + var builder = ImmutableArray.CreateBuilder>(); + + foreach (var model in models.StickerPacks) + { + var stickers = model.Stickers.Select(x => SocketSticker.Create(this, x)); + + var pack = new StickerPack( + model.Name, + model.Id, + model.SkuId, + model.CoverStickerId.ToNullable(), + model.Description, + model.BannerAssetId, + stickers + ); + + builder.Add(pack); + } + + _defaultStickers = builder.ToImmutable(); + } + } + /// internal override async Task OnLogoutAsync() { @@ -279,7 +326,7 @@ namespace Discord.WebSocket /// public override async Task GetApplicationInfoAsync(RequestOptions options = null) - => _applicationInfo ?? (_applicationInfo = await ClientHelper.GetApplicationInfoAsync(this, options ?? RequestOptions.Default).ConfigureAwait(false)); + => _applicationInfo ??= await ClientHelper.GetApplicationInfoAsync(this, options ?? RequestOptions.Default).ConfigureAwait(false); /// public override SocketGuild GetGuild(ulong id) @@ -341,6 +388,83 @@ namespace Discord.WebSocket /// public override SocketUser GetUser(string username, string discriminator) => State.Users.FirstOrDefault(x => x.Discriminator == discriminator && x.Username == username); + + /// + /// Gets a global application command. + /// + /// The id of the command. + /// The options to be used when sending the request. + /// + /// A ValueTask that represents the asynchronous get operation. The task result contains the application command if found, otherwise + /// . + /// + public async ValueTask GetGlobalApplicationCommandAsync(ulong id, RequestOptions options = null) + { + var command = State.GetCommand(id); + + if (command != null) + return command; + + var model = await ApiClient.GetGlobalApplicationCommandAsync(id, options); + + if (model == null) + return null; + + command = SocketApplicationCommand.Create(this, model); + + State.AddCommand(command); + + return command; + } + /// + /// Gets a collection of all global commands. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains a read-only collection of global + /// application commands. + /// + public async Task> GetGlobalApplicationCommandsAsync(RequestOptions options = null) + { + var commands = (await ApiClient.GetGlobalApplicationCommandsAsync(options)).Select(x => SocketApplicationCommand.Create(this, x)); + + foreach(var command in commands) + { + State.AddCommand(command); + } + + return commands.ToImmutableArray(); + } + + public async Task CreateGlobalApplicationCommandAsync(ApplicationCommandProperties properties, RequestOptions options = null) + { + var model = await InteractionHelper.CreateGlobalCommandAsync(this, properties, options).ConfigureAwait(false); + + var entity = State.GetOrAddCommand(model.Id, (id) => SocketApplicationCommand.Create(this, model)); + + //Update it in case it was cached + entity.Update(model); + + return entity; + } + public async Task> BulkOverwriteGlobalApplicationCommandsAsync( + ApplicationCommandProperties[] properties, RequestOptions options = null) + { + var models = await InteractionHelper.BulkOverwriteGlobalCommandsAsync(this, properties, options); + + var entities = models.Select(x => SocketApplicationCommand.Create(this, x)); + + //Purge our previous commands + State.PurgeCommands(x => x.IsGlobalCommand); + + foreach(var entity in entities) + { + State.AddCommand(entity); + } + + return entities.ToImmutableArray(); + } + /// /// Clears cached users from the client. /// @@ -366,6 +490,56 @@ namespace Discord.WebSocket internal void RemoveUser(ulong id) => State.RemoveUser(id); + /// + public override async Task GetStickerAsync(ulong id, CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null) + { + var sticker = _defaultStickers.FirstOrDefault(x => x.Stickers.Any(y => y.Id == id))?.Stickers.FirstOrDefault(x => x.Id == id); + + if (sticker != null) + return sticker; + + foreach(var guild in Guilds) + { + sticker = await guild.GetStickerAsync(id, CacheMode.CacheOnly).ConfigureAwait(false); + + if (sticker != null) + return sticker; + } + + if (mode == CacheMode.CacheOnly) + return null; + + var model = await ApiClient.GetStickerAsync(id, options).ConfigureAwait(false); + + if(model == null) + return null; + + + if (model.GuildId.IsSpecified) + { + var guild = State.GetGuild(model.GuildId.Value); + + //Since the sticker can be from another guild, check if we are in the guild or its in the cache + if (guild != null) + sticker = guild.AddOrUpdateSticker(model); + else + sticker = SocketSticker.Create(this, model); + return sticker; + } + else + { + return SocketSticker.Create(this, model); + } + } + + /// + /// Gets a sticker. + /// + /// The unique identifier of the sticker. + /// A sticker if found, otherwise . + public SocketSticker GetSticker(ulong id) + => GetStickerAsync(id, CacheMode.CacheOnly).GetAwaiter().GetResult(); + /// public override async ValueTask> GetVoiceRegionsAsync(RequestOptions options = null) { @@ -402,6 +576,8 @@ namespace Discord.WebSocket { if (ConnectionState == ConnectionState.Connected) { + EnsureGatewayIntent(GatewayIntents.GuildMembers); + //Race condition leads to guilds being requested twice, probably okay await ProcessUserDownloadsAsync(guilds.Select(x => GetGuild(x.Id)).Where(x => x != null)).ConfigureAwait(false); } @@ -493,7 +669,7 @@ namespace Discord.WebSocket var presence = BuildCurrentStatus() ?? (UserStatus.Online, false, null, null); - await ApiClient.SendStatusUpdateAsync( + await ApiClient.SendPresenceUpdateAsync( status: presence.Item1, isAFK: presence.Item2, since: presence.Item3, @@ -510,7 +686,7 @@ namespace Discord.WebSocket return null; GameModel game = null; - // Discord only accepts rich presence over RPC, don't even bother building a payload + //Discord only accepts rich presence over RPC, don't even bother building a payload if (activity.GetValueOrDefault() != null) { @@ -532,6 +708,7 @@ namespace Discord.WebSocket game); } + #region ProcessMessageAsync private async Task ProcessMessageAsync(GatewayOpCode opCode, int? seq, string type, object payload) { if (seq != null) @@ -604,7 +781,7 @@ namespace Discord.WebSocket case GatewayOpCode.Dispatch: switch (type) { - //Connection + #region Connection case "READY": { try @@ -615,6 +792,7 @@ namespace Discord.WebSocket var state = new ClientState(data.Guilds.Length, data.PrivateChannels.Length); var currentUser = SocketSelfUser.Create(this, state, data.User); + Rest.CreateRestSelfUser(data.User); var activities = _activity.IsSpecified ? ImmutableList.Create(_activity.Value) : null; currentUser.Presence = new SocketPresence(Status, null, activities); ApiClient.CurrentUserId = currentUser.Id; @@ -680,8 +858,9 @@ namespace Discord.WebSocket await _gatewayLogger.InfoAsync("Resumed previous session").ConfigureAwait(false); } break; + #endregion - //Guilds + #region Guilds case "GUILD_CREATE": { var data = (payload as JToken).ToObject(_serializer); @@ -831,8 +1010,62 @@ namespace Discord.WebSocket } } break; + case "GUILD_STICKERS_UPDATE": + { + await _gatewayLogger.DebugAsync($"Received Dispatch (GUILD_STICKERS_UPDATE)").ConfigureAwait(false); + + var data = (payload as JToken).ToObject(_serializer); + + var guild = State.GetGuild(data.GuildId); - //Channels + if (guild == null) + { + await UnknownGuildAsync(type, data.GuildId).ConfigureAwait(false); + return; + } + + var newStickers = data.Stickers.Where(x => !guild.Stickers.Any(y => y.Id == x.Id)); + var deletedStickers = guild.Stickers.Where(x => !data.Stickers.Any(y => y.Id == x.Id)); + var updatedStickers = data.Stickers.Select(x => + { + var s = guild.Stickers.FirstOrDefault(y => y.Id == x.Id); + if (s == null) + return null; + + var e = s.Equals(x); + if (!e) + { + return (s, x) as (SocketCustomSticker Entity, API.Sticker Model)?; + } + else + { + return null; + } + }).Where(x => x.HasValue).Select(x => x.Value).ToArray(); + + foreach (var model in newStickers) + { + var entity = guild.AddSticker(model); + await TimedInvokeAsync(_guildStickerCreated, nameof(GuildStickerCreated), entity); + } + foreach (var sticker in deletedStickers) + { + var entity = guild.RemoveSticker(sticker.Id); + await TimedInvokeAsync(_guildStickerDeleted, nameof(GuildStickerDeleted), entity); + } + foreach (var entityModelPair in updatedStickers) + { + var before = entityModelPair.Entity.Clone(); + + entityModelPair.Entity.Update(entityModelPair.Model); + + await TimedInvokeAsync(_guildStickerUpdated, nameof(GuildStickerUpdated), before, entityModelPair.Entity); + } + } + break; + #endregion + + #region Channels case "CHANNEL_CREATE": { await _gatewayLogger.DebugAsync("Received Dispatch (CHANNEL_CREATE)").ConfigureAwait(false); @@ -934,8 +1167,9 @@ namespace Discord.WebSocket } } break; + #endregion - //Members + #region Members case "GUILD_MEMBER_ADD": { await _gatewayLogger.DebugAsync("Received Dispatch (GUILD_MEMBER_ADD)").ConfigureAwait(false); @@ -1066,6 +1300,32 @@ namespace Discord.WebSocket } } break; + case "GUILD_JOIN_REQUEST_DELETE": + { + await _gatewayLogger.DebugAsync("Received Dispatch (GUILD_JOIN_REQUEST_DELETE)").ConfigureAwait(false); + + var data = (payload as JToken).ToObject(_serializer); + + var guild = State.GetGuild(data.GuildId); + + if (guild == null) + { + await UnknownGuildAsync(type, data.GuildId).ConfigureAwait(false); + return; + } + + var user = guild.RemoveUser(data.UserId); + guild.MemberCount--; + + var cacheableUser = new Cacheable(user, data.UserId, user != null, () => Task.FromResult((SocketGuildUser)null)); + + await TimedInvokeAsync(_guildJoinRequestDeletedEvent, nameof(GuildJoinRequestDeleted), cacheableUser, guild).ConfigureAwait(false); + } + break; + #endregion + + #region DM Channels + case "CHANNEL_RECIPIENT_ADD": { await _gatewayLogger.DebugAsync("Received Dispatch (CHANNEL_RECIPIENT_ADD)").ConfigureAwait(false); @@ -1107,7 +1367,9 @@ namespace Discord.WebSocket } break; - //Roles + #endregion + + #region Roles case "GUILD_ROLE_CREATE": { await _gatewayLogger.DebugAsync("Received Dispatch (GUILD_ROLE_CREATE)").ConfigureAwait(false); @@ -1199,8 +1461,9 @@ namespace Discord.WebSocket } } break; + #endregion - //Bans + #region Bans case "GUILD_BAN_ADD": { await _gatewayLogger.DebugAsync("Received Dispatch (GUILD_BAN_ADD)").ConfigureAwait(false); @@ -1253,8 +1516,9 @@ namespace Discord.WebSocket } } break; + #endregion - //Messages + #region Messages case "MESSAGE_CREATE": { await _gatewayLogger.DebugAsync("Received Dispatch (MESSAGE_CREATE)").ConfigureAwait(false); @@ -1344,7 +1608,7 @@ namespace Discord.WebSocket } else { - //Edited message isnt in cache, create a detached one + //Edited message isn't in cache, create a detached one SocketUser author; if (data.Author.IsSpecified) { @@ -1585,8 +1849,9 @@ namespace Discord.WebSocket await TimedInvokeAsync(_messagesBulkDeletedEvent, nameof(MessagesBulkDeleted), cacheableList, cacheableChannel).ConfigureAwait(false); } break; + #endregion - //Statuses + #region Statuses case "PRESENCE_UPDATE": { await _gatewayLogger.DebugAsync("Received Dispatch (PRESENCE_UPDATE)").ConfigureAwait(false); @@ -1674,8 +1939,9 @@ namespace Discord.WebSocket await TimedInvokeAsync(_userIsTypingEvent, nameof(UserIsTyping), cacheableUser, cacheableChannel).ConfigureAwait(false); } break; + #endregion - //Users + #region Users case "USER_UPDATE": { await _gatewayLogger.DebugAsync("Received Dispatch (USER_UPDATE)").ConfigureAwait(false); @@ -1694,8 +1960,9 @@ namespace Discord.WebSocket } } break; + #endregion - //Voice + #region Voice case "VOICE_STATE_UPDATE": { await _gatewayLogger.DebugAsync("Received Dispatch (VOICE_STATE_UPDATE)").ConfigureAwait(false); @@ -1732,7 +1999,7 @@ namespace Discord.WebSocket after = SocketVoiceState.Create(null, data); } - // per g250k, this should always be sent, but apparently not always + //Per g250k, this should always be sent, but apparently not always user = guild.GetUser(data.UserId) ?? (data.Member.IsSpecified ? guild.AddOrUpdateUser(data.Member.Value) : null); if (user == null) @@ -1767,6 +2034,29 @@ namespace Discord.WebSocket } } + if (user is SocketGuildUser guildUser && data.ChannelId.HasValue) + { + SocketStageChannel stage = guildUser.Guild.GetStageChannel(data.ChannelId.Value); + + if (stage != null && before.VoiceChannel != null && after.VoiceChannel != null) + { + if (!before.RequestToSpeakTimestamp.HasValue && after.RequestToSpeakTimestamp.HasValue) + { + await TimedInvokeAsync(_requestToSpeak, nameof(RequestToSpeak), stage, guildUser); + return; + } + if(before.IsSuppressed && !after.IsSuppressed) + { + await TimedInvokeAsync(_speakerAdded, nameof(SpeakerAdded), stage, guildUser); + return; + } + if(!before.IsSuppressed && after.IsSuppressed) + { + await TimedInvokeAsync(_speakerRemoved, nameof(SpeakerRemoved), stage, guildUser); + } + } + } + await TimedInvokeAsync(_userVoiceStateUpdatedEvent, nameof(UserVoiceStateUpdated), user, before, after).ConfigureAwait(false); } break; @@ -1801,8 +2091,9 @@ namespace Discord.WebSocket } break; + #endregion - //Invites + #region Invites case "INVITE_CREATE": { await _gatewayLogger.DebugAsync("Received Dispatch (INVITE_CREATE)").ConfigureAwait(false); @@ -1859,8 +2150,529 @@ namespace Discord.WebSocket } } break; + #endregion + + #region Interactions + case "INTERACTION_CREATE": + { + await _gatewayLogger.DebugAsync("Received Dispatch (INTERACTION_CREATE)").ConfigureAwait(false); + + var data = (payload as JToken).ToObject(_serializer); + + SocketChannel channel = null; + if(data.ChannelId.IsSpecified) + { + channel = State.GetChannel(data.ChannelId.Value); + } + else if (data.User.IsSpecified) + { + channel = State.GetDMChannel(data.User.Value.Id); + } + + if (channel == null) + { + var channelModel = await Rest.ApiClient.GetChannelAsync(data.ChannelId.Value); + + if (data.GuildId.IsSpecified) + channel = SocketTextChannel.Create(State.GetGuild(data.GuildId.Value), State, channelModel); + else + channel = (SocketChannel)SocketChannel.CreatePrivate(this, State, channelModel); + + State.AddChannel(channel); + } + + if (channel is ISocketMessageChannel textChannel) + { + var guild = (channel as SocketGuildChannel)?.Guild; + if (guild != null && !guild.IsSynced) + { + await UnsyncedGuildAsync(type, guild.Id).ConfigureAwait(false); + return; + } + + var interaction = SocketInteraction.Create(this, data, channel as ISocketMessageChannel); + + await TimedInvokeAsync(_interactionCreatedEvent, nameof(InteractionCreated), interaction).ConfigureAwait(false); + + switch (interaction) + { + case SocketSlashCommand slashCommand: + await TimedInvokeAsync(_slashCommandExecuted, nameof(SlashCommandExecuted), slashCommand).ConfigureAwait(false); + break; + case SocketMessageComponent messageComponent: + if(messageComponent.Data.Type == ComponentType.SelectMenu) + await TimedInvokeAsync(_selectMenuExecuted, nameof(SelectMenuExecuted), messageComponent).ConfigureAwait(false); + if(messageComponent.Data.Type == ComponentType.Button) + await TimedInvokeAsync(_buttonExecuted, nameof(ButtonExecuted), messageComponent).ConfigureAwait(false); + break; + case SocketUserCommand userCommand: + await TimedInvokeAsync(_userCommandExecuted, nameof(UserCommandExecuted), userCommand).ConfigureAwait(false); + break; + case SocketMessageCommand messageCommand: + await TimedInvokeAsync(_messageCommandExecuted, nameof(MessageCommandExecuted), messageCommand).ConfigureAwait(false); + break; + case SocketAutocompleteInteraction autocomplete: + await TimedInvokeAsync(_autocompleteExecuted, nameof(AutocompleteExecuted), autocomplete).ConfigureAwait(false); + break; + } + } + else + { + await UnknownChannelAsync(type, data.ChannelId.Value).ConfigureAwait(false); + return; + } + } + break; + case "APPLICATION_COMMAND_CREATE": + { + await _gatewayLogger.DebugAsync("Received Dispatch (APPLICATION_COMMAND_CREATE)").ConfigureAwait(false); + + var data = (payload as JToken).ToObject(_serializer); + + if (data.GuildId.IsSpecified) + { + var guild = State.GetGuild(data.GuildId.Value); + if (guild == null) + { + await UnknownGuildAsync(type, data.GuildId.Value).ConfigureAwait(false); + return; + } + } + + var applicationCommand = SocketApplicationCommand.Create(this, data); + + State.AddCommand(applicationCommand); + + await TimedInvokeAsync(_applicationCommandCreated, nameof(ApplicationCommandCreated), applicationCommand).ConfigureAwait(false); + } + break; + case "APPLICATION_COMMAND_UPDATE": + { + await _gatewayLogger.DebugAsync("Received Dispatch (APPLICATION_COMMAND_UPDATE)").ConfigureAwait(false); + + var data = (payload as JToken).ToObject(_serializer); + + if (data.GuildId.IsSpecified) + { + var guild = State.GetGuild(data.GuildId.Value); + if (guild == null) + { + await UnknownGuildAsync(type, data.GuildId.Value).ConfigureAwait(false); + return; + } + } + + var applicationCommand = SocketApplicationCommand.Create(this, data); + + State.AddCommand(applicationCommand); + + await TimedInvokeAsync(_applicationCommandUpdated, nameof(ApplicationCommandUpdated), applicationCommand).ConfigureAwait(false); + } + break; + case "APPLICATION_COMMAND_DELETE": + { + await _gatewayLogger.DebugAsync("Received Dispatch (APPLICATION_COMMAND_DELETE)").ConfigureAwait(false); + + var data = (payload as JToken).ToObject(_serializer); + + if (data.GuildId.IsSpecified) + { + var guild = State.GetGuild(data.GuildId.Value); + if (guild == null) + { + await UnknownGuildAsync(type, data.GuildId.Value).ConfigureAwait(false); + return; + } + } + + var applicationCommand = SocketApplicationCommand.Create(this, data); + + State.RemoveCommand(applicationCommand.Id); + + await TimedInvokeAsync(_applicationCommandDeleted, nameof(ApplicationCommandDeleted), applicationCommand).ConfigureAwait(false); + } + break; + #endregion + + #region Threads + case "THREAD_CREATE": + { + await _gatewayLogger.DebugAsync("Received Dispatch (THREAD_CREATE)").ConfigureAwait(false); + + var data = (payload as JToken).ToObject(_serializer); + + var guild = State.GetGuild(data.GuildId.Value); + + if (guild == null) + { + await UnknownGuildAsync(type, data.GuildId.Value); + return; + } + + SocketThreadChannel threadChannel = null; - //Ignored (User only) + if ((threadChannel = guild.ThreadChannels.FirstOrDefault(x => x.Id == data.Id)) != null) + { + threadChannel.Update(State, data); + + if(data.ThreadMember.IsSpecified) + threadChannel.AddOrUpdateThreadMember(data.ThreadMember.Value, guild.CurrentUser); + } + else + { + threadChannel = (SocketThreadChannel)guild.AddChannel(State, data); + if (data.ThreadMember.IsSpecified) + threadChannel.AddOrUpdateThreadMember(data.ThreadMember.Value, guild.CurrentUser); + } + + await TimedInvokeAsync(_threadCreated, nameof(ThreadCreated), threadChannel).ConfigureAwait(false); + } + + break; + case "THREAD_UPDATE": + { + await _gatewayLogger.DebugAsync("Received Dispatch (THREAD_UPDATE)").ConfigureAwait(false); + + var data = (payload as JToken).ToObject(_serializer); + var guild = State.GetGuild(data.GuildId.Value); + if (guild == null) + { + await UnknownGuildAsync(type, data.GuildId.Value); + return; + } + + var threadChannel = guild.ThreadChannels.FirstOrDefault(x => x.Id == data.Id); + var before = threadChannel != null + ? new Cacheable(threadChannel.Clone(), data.Id, true, () => Task.FromResult((SocketThreadChannel)null)) + : new Cacheable(null, data.Id, false, () => Task.FromResult((SocketThreadChannel)null)); + + if (threadChannel != null) + { + threadChannel.Update(State, data); + + if (data.ThreadMember.IsSpecified) + threadChannel.AddOrUpdateThreadMember(data.ThreadMember.Value, guild.CurrentUser); + } + else + { + //Thread is updated but was not cached, likely meaning the thread was unarchived. + threadChannel = (SocketThreadChannel)guild.AddChannel(State, data); + if (data.ThreadMember.IsSpecified) + threadChannel.AddOrUpdateThreadMember(data.ThreadMember.Value, guild.CurrentUser); + } + + if (!(guild?.IsSynced ?? true)) + { + await UnsyncedGuildAsync(type, guild.Id).ConfigureAwait(false); + return; + } + + await TimedInvokeAsync(_threadUpdated, nameof(ThreadUpdated), before, threadChannel).ConfigureAwait(false); + } + break; + case "THREAD_DELETE": + { + await _gatewayLogger.DebugAsync("Received Dispatch (THREAD_DELETE)").ConfigureAwait(false); + + var data = (payload as JToken).ToObject(_serializer); + + var guild = State.GetGuild(data.GuildId.Value); + + if(guild == null) + { + await UnknownGuildAsync(type, data.GuildId.Value).ConfigureAwait(false); + return; + } + + var thread = (SocketThreadChannel)guild.GetChannel(data.Id); + + var cacheable = new Cacheable(thread, data.Id, thread != null, null); + + await TimedInvokeAsync(_threadDeleted, nameof(ThreadDeleted), cacheable).ConfigureAwait(false); + } + break; + case "THREAD_LIST_SYNC": + { + await _gatewayLogger.DebugAsync("Received Dispatch (THREAD_LIST_SYNC)").ConfigureAwait(false); + + var data = (payload as JToken).ToObject(_serializer); + + var guild = State.GetGuild(data.GuildId); + + if(guild == null) + { + await UnknownGuildAsync(type, data.GuildId).ConfigureAwait(false); + return; + } + + foreach(var thread in data.Threads) + { + var entity = guild.ThreadChannels.FirstOrDefault(x => x.Id == thread.Id); + + if(entity == null) + { + entity = (SocketThreadChannel)guild.AddChannel(State, thread); + } + else + { + entity.Update(State, thread); + } + + foreach(var member in data.Members.Where(x => x.Id.Value == entity.Id)) + { + var guildMember = guild.GetUser(member.Id.Value); + + entity.AddOrUpdateThreadMember(member, guildMember); + } + } + } + break; + case "THREAD_MEMBER_UPDATE": + { + await _gatewayLogger.DebugAsync("Received Dispatch (THREAD_MEMBER_UPDATE)").ConfigureAwait(false); + + var data = (payload as JToken).ToObject(_serializer); + + var thread = (SocketThreadChannel)State.GetChannel(data.Id.Value); + + if (thread == null) + { + await UnknownChannelAsync(type, data.Id.Value); + return; + } + + thread.AddOrUpdateThreadMember(data, thread.Guild.CurrentUser); + } + + break; + case "THREAD_MEMBERS_UPDATE": + { + await _gatewayLogger.DebugAsync("Received Dispatch (THREAD_MEMBERS_UPDATE)").ConfigureAwait(false); + + var data = (payload as JToken).ToObject(_serializer); + + var guild = State.GetGuild(data.GuildId); + + if (guild == null) + { + await UnknownGuildAsync(type, data.GuildId).ConfigureAwait(false); + return; + } + + var thread = (SocketThreadChannel)guild.GetChannel(data.Id); + + if(thread == null) + { + await UnknownChannelAsync(type, data.Id); + return; + } + + IReadOnlyCollection leftUsers = null; + IReadOnlyCollection joinUsers = null; + + + if (data.RemovedMemberIds.IsSpecified) + { + leftUsers = thread.RemoveUsers(data.RemovedMemberIds.Value); + } + + if (data.AddedMembers.IsSpecified) + { + List newThreadMembers = new List(); + foreach(var threadMember in data.AddedMembers.Value) + { + SocketGuildUser guildMember; + + if (threadMember.Member.IsSpecified) + { + guildMember = guild.AddOrUpdateUser(threadMember.Member.Value); + } + else + { + guildMember = guild.GetUser(threadMember.UserId.Value); + } + + newThreadMembers.Add(thread.AddOrUpdateThreadMember(threadMember, guildMember)); + } + + if (newThreadMembers.Any()) + joinUsers = newThreadMembers.ToImmutableArray(); + } + + if (leftUsers != null) + { + foreach(var threadUser in leftUsers) + { + await TimedInvokeAsync(_threadMemberLeft, nameof(ThreadMemberLeft), threadUser).ConfigureAwait(false); + } + } + + if(joinUsers != null) + { + foreach(var threadUser in joinUsers) + { + await TimedInvokeAsync(_threadMemberJoined, nameof(ThreadMemberJoined), threadUser).ConfigureAwait(false); + } + } + } + + break; + #endregion + + #region Stage Channels + case "STAGE_INSTANCE_CREATE" or "STAGE_INSTANCE_UPDATE" or "STAGE_INSTANCE_DELETE": + { + await _gatewayLogger.DebugAsync($"Received Dispatch ({type})").ConfigureAwait(false); + + var data = (payload as JToken).ToObject(_serializer); + + var guild = State.GetGuild(data.GuildId); + + if(guild == null) + { + await UnknownGuildAsync(type, data.GuildId).ConfigureAwait(false); + return; + } + + var stageChannel = guild.GetStageChannel(data.ChannelId); + + if(stageChannel == null) + { + await UnknownChannelAsync(type, data.ChannelId).ConfigureAwait(false); + return; + } + + SocketStageChannel before = type == "STAGE_INSTANCE_UPDATE" ? stageChannel.Clone() : null; + + stageChannel.Update(data, type == "STAGE_INSTANCE_CREATE"); + + switch (type) + { + case "STAGE_INSTANCE_CREATE": + await TimedInvokeAsync(_stageStarted, nameof(StageStarted), stageChannel).ConfigureAwait(false); + return; + case "STAGE_INSTANCE_DELETE": + await TimedInvokeAsync(_stageEnded, nameof(StageEnded), stageChannel).ConfigureAwait(false); + return; + case "STAGE_INSTANCE_UPDATE": + await TimedInvokeAsync(_stageUpdated, nameof(StageUpdated), before, stageChannel).ConfigureAwait(false); + return; + } + } + break; + #endregion + + #region Guild Scheduled Events + case "GUILD_SCHEDULED_EVENT_CREATE": + { + await _gatewayLogger.DebugAsync($"Received Dispatch ({type})").ConfigureAwait(false); + + var data = (payload as JToken).ToObject(_serializer); + + var guild = State.GetGuild(data.GuildId); + + if (guild == null) + { + await UnknownGuildAsync(type, data.GuildId).ConfigureAwait(false); + return; + } + + var newEvent = guild.AddOrUpdateEvent(data); + + await TimedInvokeAsync(_guildScheduledEventCancelled, nameof(GuildScheduledEventCreated), newEvent).ConfigureAwait(false); + } + break; + case "GUILD_SCHEDULED_EVENT_UPDATE": + { + await _gatewayLogger.DebugAsync($"Received Dispatch ({type})").ConfigureAwait(false); + + var data = (payload as JToken).ToObject(_serializer); + + var guild = State.GetGuild(data.GuildId); + + if (guild == null) + { + await UnknownGuildAsync(type, data.GuildId).ConfigureAwait(false); + return; + } + + var before = guild.GetEvent(data.Id); + + var beforeCacheable = new Cacheable(before, data.Id, before != null, () => Task.FromResult((SocketGuildEvent)null)); + + var after = guild.AddOrUpdateEvent(data); + + if((before != null ? before.Status != GuildScheduledEventStatus.Completed : true) && data.Status == GuildScheduledEventStatus.Completed) + { + await TimedInvokeAsync(_guildScheduledEventCompleted, nameof(GuildScheduledEventCompleted), after).ConfigureAwait(false); + } + else if((before != null ? before.Status != GuildScheduledEventStatus.Active : false) && data.Status == GuildScheduledEventStatus.Active) + { + await TimedInvokeAsync(_guildScheduledEventStarted, nameof(GuildScheduledEventStarted), after).ConfigureAwait(false); + } + else await TimedInvokeAsync(_guildScheduledEventUpdated, nameof(GuildScheduledEventUpdated), beforeCacheable, after).ConfigureAwait(false); + } + break; + case "GUILD_SCHEDULED_EVENT_DELETE": + { + await _gatewayLogger.DebugAsync($"Received Dispatch ({type})").ConfigureAwait(false); + + var data = (payload as JToken).ToObject(_serializer); + + var guild = State.GetGuild(data.GuildId); + + if (guild == null) + { + await UnknownGuildAsync(type, data.GuildId).ConfigureAwait(false); + return; + } + + var guildEvent = guild.RemoveEvent(data.Id) ?? SocketGuildEvent.Create(this, guild, data); + + await TimedInvokeAsync(_guildScheduledEventCancelled, nameof(GuildScheduledEventCancelled), guildEvent).ConfigureAwait(false); + } + break; + case "GUILD_SCHEDULED_EVENT_USER_ADD" or "GUILD_SCHEDULED_EVENT_USER_REMOVE": + { + await _gatewayLogger.DebugAsync($"Received Dispatch ({type})").ConfigureAwait(false); + + var data = (payload as JToken).ToObject(_serializer); + + var guild = State.GetGuild(data.GuildId); + + if(guild == null) + { + await UnknownGuildAsync(type, data.GuildId).ConfigureAwait(false); + return; + } + + var guildEvent = guild.GetEvent(data.EventId); + + if (guildEvent == null) + { + await UnknownGuildEventAsync(type, data.EventId, data.GuildId).ConfigureAwait(false); + return; + } + + var user = (SocketUser)guild.GetUser(data.UserId) ?? State.GetUser(data.UserId); + + var cacheableUser = new Cacheable(user, data.UserId, user != null, () => Rest.GetUserAsync(data.UserId)); + + switch (type) + { + case "GUILD_SCHEDULED_EVENT_USER_ADD": + await TimedInvokeAsync(_guildScheduledEventUserAdd, nameof(GuildScheduledEventUserAdd), cacheableUser, guildEvent).ConfigureAwait(false); + break; + case "GUILD_SCHEDULED_EVENT_USER_REMOVE": + await TimedInvokeAsync(_guildScheduledEventUserRemove, nameof(GuildScheduledEventUserRemove), cacheableUser, guildEvent).ConfigureAwait(false); + break; + } + } + break; + + #endregion + + #region Ignored (User only) case "CHANNEL_PINS_ACK": await _gatewayLogger.DebugAsync("Ignored Dispatch (CHANNEL_PINS_ACK)").ConfigureAwait(false); break; @@ -1882,11 +2694,13 @@ namespace Discord.WebSocket case "WEBHOOKS_UPDATE": await _gatewayLogger.DebugAsync("Ignored Dispatch (WEBHOOKS_UPDATE)").ConfigureAwait(false); break; + #endregion - //Others + #region Others default: await _gatewayLogger.WarningAsync($"Unknown Dispatch ({type})").ConfigureAwait(false); break; + #endregion } break; default: @@ -1899,6 +2713,7 @@ namespace Discord.WebSocket await _gatewayLogger.ErrorAsync($"Error handling {opCode}{(type != null ? $" ({type})" : "")}", ex).ConfigureAwait(false); } } + #endregion private async Task RunHeartbeatAsync(int intervalMillis, CancellationToken cancelToken) { @@ -2018,6 +2833,18 @@ namespace Discord.WebSocket channel.Recipient.GlobalUser.RemoveRef(this); } + internal void EnsureGatewayIntent(GatewayIntents intents) + { + if (!_gatewayIntents.HasFlag(intents)) + { + var vals = Enum.GetValues(typeof(GatewayIntents)).Cast(); + + var missingValues = vals.Where(x => intents.HasFlag(x) && !_gatewayIntents.HasFlag(x)); + + throw new InvalidOperationException($"Missing required gateway intent{(missingValues.Count() > 1 ? "s" : "")} {string.Join(", ", missingValues.Select(x => x.ToString()))} in order to execute this operation."); + } + } + private async Task GuildAvailableAsync(SocketGuild guild) { if (!guild.IsConnected) @@ -2158,6 +2985,12 @@ namespace Discord.WebSocket string details = $"{evnt} Guild={guildId}"; await _gatewayLogger.WarningAsync($"Unknown Guild ({details}).").ConfigureAwait(false); } + + private async Task UnknownGuildEventAsync(string evnt, ulong eventId, ulong guildId) + { + string details = $"{evnt} Event={eventId} Guild={guildId}"; + await _gatewayLogger.WarningAsync($"Unknown Guild Event ({details}).").ConfigureAwait(false); + } private async Task UnsyncedGuildAsync(string evnt, ulong guildId) { string details = $"{evnt} Guild={guildId}"; @@ -2166,7 +2999,7 @@ namespace Discord.WebSocket internal int GetAudioId() => _nextAudioId++; - //IDiscordClient + #region IDiscordClient /// async Task IDiscordClient.GetApplicationInfoAsync(RequestOptions options) => await GetApplicationInfoAsync().ConfigureAwait(false); @@ -2216,11 +3049,19 @@ namespace Discord.WebSocket async Task IDiscordClient.GetVoiceRegionAsync(string id, RequestOptions options) => await GetVoiceRegionAsync(id, options).ConfigureAwait(false); + /// + async Task IDiscordClient.GetGlobalApplicationCommandAsync(ulong id, RequestOptions options) + => await GetGlobalApplicationCommandAsync(id, options); + /// + async Task> IDiscordClient.GetGlobalApplicationCommandsAsync(RequestOptions options) + => await GetGlobalApplicationCommandsAsync(options); + /// async Task IDiscordClient.StartAsync() => await StartAsync().ConfigureAwait(false); /// async Task IDiscordClient.StopAsync() => await StopAsync().ConfigureAwait(false); + #endregion } } diff --git a/src/Discord.Net.WebSocket/DiscordSocketConfig.cs b/src/Discord.Net.WebSocket/DiscordSocketConfig.cs index 22a201c67..8615eac71 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketConfig.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketConfig.cs @@ -49,8 +49,31 @@ namespace Discord.WebSocket /// /// Gets or sets the total number of shards for this application. /// + /// + /// If this is left in a sharded client the bot will get the recommended shard + /// count from discord and use that. + /// public int? TotalShards { get; set; } = null; + /// + /// Gets or sets whether or not the client should download the default stickers on startup. + /// + /// + /// When this is set to default stickers arn't present and cannot be resolved by the client. + /// This will make all default stickers have the type of . + /// + public bool AlwaysDownloadDefaultStickers { get; set; } = false; + + /// + /// Gets or sets whether or not the client should automatically resolve the stickers sent on a message. + /// + /// + /// Note if a sticker isn't cached the client will preform a rest request to resolve it. This + /// may be very rest heavy depending on your bots size, it isn't recommended to use this with large scale bots as you + /// can get ratelimited easily. + /// + public bool AlwaysResolveStickers { get; set; } = false; + /// /// Gets or sets the number of messages per channel that should be kept in cache. Setting this to zero /// disables the message cache entirely. @@ -79,7 +102,7 @@ namespace Discord.WebSocket /// /// /// By default, the Discord gateway will only send offline members if a guild has less than a certain number - /// of members (determined by in this library). This behaviour is why + /// of members (determined by in this library). This behavior is why /// sometimes a user may be missing from the WebSocket cache for collections such as /// . /// @@ -137,13 +160,13 @@ namespace Discord.WebSocket { get { - return this.maxWaitForGuildAvailable; + return maxWaitForGuildAvailable; } set { - Preconditions.AtLeast(value, 0, nameof(this.MaxWaitBetweenGuildAvailablesBeforeReady)); - this.maxWaitForGuildAvailable = value; + Preconditions.AtLeast(value, 0, nameof(MaxWaitBetweenGuildAvailablesBeforeReady)); + maxWaitForGuildAvailable = value; } } diff --git a/src/Discord.Net.WebSocket/DiscordVoiceApiClient.cs b/src/Discord.Net.WebSocket/DiscordVoiceApiClient.cs index f78145dbe..62d95402a 100644 --- a/src/Discord.Net.WebSocket/DiscordVoiceApiClient.cs +++ b/src/Discord.Net.WebSocket/DiscordVoiceApiClient.cs @@ -1,4 +1,3 @@ -#pragma warning disable CS1591 using Discord.API; using Discord.API.Voice; using Discord.Net.Converters; @@ -18,6 +17,7 @@ namespace Discord.Audio { internal class DiscordVoiceAPIClient : IDisposable { + #region DiscordVoiceAPIClient public const int MaxBitrate = 128 * 1024; public const string Mode = "xsalsa20_poly1305"; @@ -126,8 +126,9 @@ namespace Discord.Audio await _udp.SendAsync(data, offset, bytes).ConfigureAwait(false); await _sentDataEvent.InvokeAsync(bytes).ConfigureAwait(false); } + #endregion - //WebSocket + #region WebSocket public async Task SendHeartbeatAsync(RequestOptions options = null) { await SendAsync(VoiceOpCode.Heartbeat, DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(), options: options).ConfigureAwait(false); @@ -208,10 +209,12 @@ namespace Discord.Audio } private async Task DisconnectInternalAsync() { - if (ConnectionState == ConnectionState.Disconnected) return; + if (ConnectionState == ConnectionState.Disconnected) + return; ConnectionState = ConnectionState.Disconnecting; - try { _connectCancelToken?.Cancel(false); } + try + { _connectCancelToken?.Cancel(false); } catch { } //Wait for tasks to complete @@ -220,8 +223,9 @@ namespace Discord.Audio ConnectionState = ConnectionState.Disconnected; } + #endregion - //Udp + #region Udp public async Task SendDiscoveryAsync(uint ssrc) { var packet = new byte[70]; @@ -252,8 +256,9 @@ namespace Discord.Audio { _udp.SetDestination(ip, port); } + #endregion - //Helpers + #region Helpers private static double ToMilliseconds(Stopwatch stopwatch) => Math.Round((double)stopwatch.ElapsedTicks / (double)Stopwatch.Frequency * 1000.0, 2); private string SerializeJson(object value) { @@ -269,5 +274,6 @@ namespace Discord.Audio using (JsonReader reader = new JsonTextReader(text)) return _serializer.Deserialize(reader); } + #endregion } } diff --git a/src/Discord.Net.WebSocket/Entities/Channels/ISocketMessageChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/ISocketMessageChannel.cs index b4625f799..1103f8feb 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/ISocketMessageChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/ISocketMessageChannel.cs @@ -34,16 +34,19 @@ namespace Discord.WebSocket /// If null, all mentioned roles and users will be notified. /// /// The message references to be included. Used to reply to specific messages. + /// The message components to be included with this message. Used for interactions. + /// A collection of stickers to send with the message. + /// A array of s to send with this response. Max 10. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - new Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null); + new Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null); /// /// Sends a file to this message channel with an optional caption. /// /// - /// This method follows the same behavior as described in . + /// This method follows the same behavior as described in . /// Please visit its documentation for more details on this method. /// /// The file path of the file. @@ -57,16 +60,19 @@ namespace Discord.WebSocket /// If null, all mentioned roles and users will be notified. /// /// The message references to be included. Used to reply to specific messages. + /// The message components to be included with this message. Used for interactions. + /// A collection of stickers to send with the file. + /// A array of s to send with this response. Max 10. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - new Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null); + new Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null); /// /// Sends a file to this message channel with an optional caption. /// /// - /// This method follows the same behavior as described in . + /// This method follows the same behavior as described in . /// Please visit its documentation for more details on this method. /// /// The of the file to be sent. @@ -81,11 +87,14 @@ namespace Discord.WebSocket /// If null, all mentioned roles and users will be notified. /// /// The message references to be included. Used to reply to specific messages. + /// The message components to be included with this message. Used for interactions. + /// A collection of stickers to send with the file. + /// A array of s to send with this response. Max 10. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - new Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null); + new Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null); /// /// Gets a cached message from this channel. diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketCategoryChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketCategoryChannel.cs index b90c1976a..9c7dd4fbd 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketCategoryChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketCategoryChannel.cs @@ -14,6 +14,7 @@ namespace Discord.WebSocket [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class SocketCategoryChannel : SocketGuildChannel, ICategoryChannel { + #region SocketCategoryChannel /// public override IReadOnlyCollection Users => Guild.Users.Where(x => Permissions.GetValue( @@ -41,8 +42,9 @@ namespace Discord.WebSocket entity.Update(state, model); return entity; } + #endregion - //Users + #region Users /// public override SocketGuildUser GetUser(ulong id) { @@ -59,21 +61,24 @@ namespace Discord.WebSocket private string DebuggerDisplay => $"{Name} ({Id}, Category)"; internal new SocketCategoryChannel Clone() => MemberwiseClone() as SocketCategoryChannel; + #endregion - // IGuildChannel + #region IGuildChannel /// IAsyncEnumerable> IGuildChannel.GetUsersAsync(CacheMode mode, RequestOptions options) => ImmutableArray.Create>(Users).ToAsyncEnumerable(); /// Task IGuildChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options) => Task.FromResult(GetUser(id)); + #endregion - //IChannel + #region IChannel /// IAsyncEnumerable> IChannel.GetUsersAsync(CacheMode mode, RequestOptions options) => ImmutableArray.Create>(Users).ToAsyncEnumerable(); /// Task IChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options) => Task.FromResult(GetUser(id)); + #endregion } } diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketChannel.cs index 13c0c9b4f..758ee9271 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketChannel.cs @@ -13,6 +13,7 @@ namespace Discord.WebSocket [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public abstract class SocketChannel : SocketEntity, IChannel { + #region SocketChannel /// /// Gets when the channel is created. /// @@ -30,19 +31,17 @@ namespace Discord.WebSocket /// Unexpected channel type is created. internal static ISocketPrivateChannel CreatePrivate(DiscordSocketClient discord, ClientState state, Model model) { - switch (model.Type) + return model.Type switch { - case ChannelType.DM: - return SocketDMChannel.Create(discord, state, model); - case ChannelType.Group: - return SocketGroupChannel.Create(discord, state, model); - default: - throw new InvalidOperationException($"Unexpected channel type: {model.Type}"); - } + ChannelType.DM => SocketDMChannel.Create(discord, state, model), + ChannelType.Group => SocketGroupChannel.Create(discord, state, model), + _ => throw new InvalidOperationException($"Unexpected channel type: {model.Type}"), + }; } internal abstract void Update(ClientState state, Model model); + #endregion - //User + #region User /// /// Gets a generic user from this channel. /// @@ -56,8 +55,9 @@ namespace Discord.WebSocket private string DebuggerDisplay => $"Unknown ({Id}, Channel)"; internal SocketChannel Clone() => MemberwiseClone() as SocketChannel; + #endregion - //IChannel + #region IChannel /// string IChannel.Name => null; @@ -67,5 +67,6 @@ namespace Discord.WebSocket /// IAsyncEnumerable> IChannel.GetUsersAsync(CacheMode mode, RequestOptions options) => AsyncEnumerable.Empty>(); //Overridden + #endregion } } diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketChannelHelper.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketChannelHelper.cs index 5cfbcc1a8..ccbf9b2b6 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketChannelHelper.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketChannelHelper.cs @@ -70,6 +70,7 @@ namespace Discord.WebSocket { case SocketDMChannel dmChannel: dmChannel.AddMessage(msg); break; case SocketGroupChannel groupChannel: groupChannel.AddMessage(msg); break; + case SocketThreadChannel threadChannel: threadChannel.AddMessage(msg); break; case SocketTextChannel textChannel: textChannel.AddMessage(msg); break; default: throw new NotSupportedException($"Unexpected {nameof(ISocketMessageChannel)} type."); } @@ -78,13 +79,13 @@ namespace Discord.WebSocket public static SocketMessage RemoveMessage(ISocketMessageChannel channel, DiscordSocketClient discord, ulong id) { - switch (channel) + return channel switch { - case SocketDMChannel dmChannel: return dmChannel.RemoveMessage(id); - case SocketGroupChannel groupChannel: return groupChannel.RemoveMessage(id); - case SocketTextChannel textChannel: return textChannel.RemoveMessage(id); - default: throw new NotSupportedException($"Unexpected {nameof(ISocketMessageChannel)} type."); - } + SocketDMChannel dmChannel => dmChannel.RemoveMessage(id), + SocketGroupChannel groupChannel => groupChannel.RemoveMessage(id), + SocketTextChannel textChannel => textChannel.RemoveMessage(id), + _ => throw new NotSupportedException($"Unexpected {nameof(ISocketMessageChannel)} type."), + }; } } } diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs index 459707dc7..ea00c9e03 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs @@ -16,6 +16,7 @@ namespace Discord.WebSocket [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class SocketDMChannel : SocketChannel, IDMChannel, ISocketPrivateChannel, ISocketMessageChannel { + #region SocketDMChannel /// /// Gets the recipient of the channel. /// @@ -58,8 +59,9 @@ namespace Discord.WebSocket /// public Task CloseAsync(RequestOptions options = null) => ChannelHelper.DeleteAsync(this, Discord, options); + #endregion - //Messages + #region Messages /// public SocketMessage GetCachedMessage(ulong id) => null; @@ -137,16 +139,25 @@ namespace Discord.WebSocket /// /// Message content is too long, length must be less or equal to . - public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null) - => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, options); + public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); /// - public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) - => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, options, isSpoiler); + public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, isSpoiler, embeds); /// /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) - => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, options, isSpoiler); + public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, isSpoiler, embeds); + /// + /// Message content is too long, length must be less or equal to . + public Task SendFileAsync(FileAttachment attachment, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, attachment, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); + /// + /// Message content is too long, length must be less or equal to . + public Task SendFilesAsync(IEnumerable attachments, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFilesAsync(this, Discord, attachments, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); + /// public Task DeleteMessageAsync(ulong messageId, RequestOptions options = null) => ChannelHelper.DeleteMessageAsync(this, messageId, Discord, options); @@ -172,8 +183,9 @@ namespace Discord.WebSocket { return null; } + #endregion - //Users + #region Users /// /// Gets a user in this channel from the provided . /// @@ -197,26 +209,31 @@ namespace Discord.WebSocket public override string ToString() => $"@{Recipient}"; private string DebuggerDisplay => $"@{Recipient} ({Id}, DM)"; internal new SocketDMChannel Clone() => MemberwiseClone() as SocketDMChannel; + #endregion - //SocketChannel + #region SocketChannel /// internal override IReadOnlyCollection GetUsersInternal() => Users; /// internal override SocketUser GetUserInternal(ulong id) => GetUser(id); + #endregion - //IDMChannel + #region IDMChannel /// IUser IDMChannel.Recipient => Recipient; + #endregion - //ISocketPrivateChannel + #region ISocketPrivateChannel /// IReadOnlyCollection ISocketPrivateChannel.Recipients => ImmutableArray.Create(Recipient); + #endregion - //IPrivateChannel + #region IPrivateChannel /// IReadOnlyCollection IPrivateChannel.Recipients => ImmutableArray.Create(Recipient); + #endregion - //IMessageChannel + #region IMessageChannel /// async Task IMessageChannel.GetMessageAsync(ulong id, CacheMode mode, RequestOptions options) { @@ -238,16 +255,23 @@ namespace Discord.WebSocket async Task> IMessageChannel.GetPinnedMessagesAsync(RequestOptions options) => await GetPinnedMessagesAsync(options).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference) - => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + /// + async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + /// + async Task IMessageChannel.SendFileAsync(FileAttachment attachment, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(attachment, text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference) - => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference).ConfigureAwait(false); + async Task IMessageChannel.SendFilesAsync(IEnumerable attachments, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendFilesAsync(attachments, text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); /// - async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference) - => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference).ConfigureAwait(false); + async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + #endregion - //IChannel + #region IChannel /// string IChannel.Name => $"@{Recipient}"; @@ -257,5 +281,6 @@ namespace Discord.WebSocket /// IAsyncEnumerable> IChannel.GetUsersAsync(CacheMode mode, RequestOptions options) => ImmutableArray.Create>(Users).ToAsyncEnumerable(); + #endregion } } diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs index ab8c76aeb..1bbfa6e97 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs @@ -20,6 +20,7 @@ namespace Discord.WebSocket [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class SocketGroupChannel : SocketChannel, IGroupChannel, ISocketPrivateChannel, ISocketMessageChannel, ISocketAudioChannel { + #region SocketGroupChannel private readonly MessageCache _messages; private readonly ConcurrentDictionary _voiceStates; @@ -31,7 +32,15 @@ namespace Discord.WebSocket /// public IReadOnlyCollection CachedMessages => _messages?.Messages ?? ImmutableArray.Create(); + + /// + /// Returns a collection representing all of the users in the group. + /// public new IReadOnlyCollection Users => _users.ToReadOnlyCollection(); + + /// + /// Returns a collection representing all users in the group, not including the client. + /// public IReadOnlyCollection Recipients => _users.Select(x => x.Value).Where(x => x.Id != Discord.CurrentUser.Id).ToReadOnlyCollection(() => _users.Count - 1); @@ -76,8 +85,9 @@ namespace Discord.WebSocket { throw new NotSupportedException("Voice is not yet supported for group channels."); } +#endregion - //Messages + #region Messages /// public SocketMessage GetCachedMessage(ulong id) => _messages?.Get(id); @@ -163,15 +173,24 @@ namespace Discord.WebSocket /// /// Message content is too long, length must be less or equal to . - public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null) - => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, options); + public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); /// - public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) - => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, options, isSpoiler); + public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, isSpoiler, embeds); + /// + /// Message content is too long, length must be less or equal to . + public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, isSpoiler, embeds); + /// + /// Message content is too long, length must be less or equal to . + public Task SendFileAsync(FileAttachment attachment, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, attachment, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); /// - public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) - => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, options, isSpoiler); + /// Message content is too long, length must be less or equal to . + public Task SendFilesAsync(IEnumerable attachments, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFilesAsync(this, Discord, attachments, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); /// public Task DeleteMessageAsync(ulong messageId, RequestOptions options = null) @@ -195,8 +214,9 @@ namespace Discord.WebSocket => _messages?.Add(msg); internal SocketMessage RemoveMessage(ulong id) => _messages?.Remove(id); + #endregion - //Users + #region Users /// /// Gets a user from this group. /// @@ -231,8 +251,9 @@ namespace Discord.WebSocket } return null; } + #endregion - //Voice States + #region Voice States internal SocketVoiceState AddOrUpdateVoiceState(ClientState state, VoiceStateModel model) { var voiceChannel = state.GetChannel(model.ChannelId.Value) as SocketVoiceChannel; @@ -259,22 +280,26 @@ namespace Discord.WebSocket public override string ToString() => Name; private string DebuggerDisplay => $"{Name} ({Id}, Group)"; internal new SocketGroupChannel Clone() => MemberwiseClone() as SocketGroupChannel; + #endregion - //SocketChannel + #region SocketChannel /// internal override IReadOnlyCollection GetUsersInternal() => Users; /// internal override SocketUser GetUserInternal(ulong id) => GetUser(id); + #endregion - //ISocketPrivateChannel + #region ISocketPrivateChannel /// IReadOnlyCollection ISocketPrivateChannel.Recipients => Recipients; + #endregion - //IPrivateChannel + #region IPrivateChannel /// IReadOnlyCollection IPrivateChannel.Recipients => Recipients; + #endregion - //IMessageChannel + #region IMessageChannel /// async Task IMessageChannel.GetMessageAsync(ulong id, CacheMode mode, RequestOptions options) { @@ -297,27 +322,37 @@ namespace Discord.WebSocket => await GetPinnedMessagesAsync(options).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference) - => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference) - => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + /// + async Task IMessageChannel.SendFileAsync(FileAttachment attachment, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(attachment, text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + /// + async Task IMessageChannel.SendFilesAsync(IEnumerable attachments, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendFilesAsync(attachments, text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + /// - async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference) - => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference).ConfigureAwait(false); + async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + #endregion - //IAudioChannel + #region IAudioChannel /// /// Connecting to a group channel is not supported. Task IAudioChannel.ConnectAsync(bool selfDeaf, bool selfMute, bool external) { throw new NotSupportedException(); } Task IAudioChannel.DisconnectAsync() { throw new NotSupportedException(); } + #endregion - //IChannel + #region IChannel /// Task IChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options) => Task.FromResult(GetUser(id)); /// IAsyncEnumerable> IChannel.GetUsersAsync(CacheMode mode, RequestOptions options) => ImmutableArray.Create>(Users).ToAsyncEnumerable(); + #endregion } } diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketGuildChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketGuildChannel.cs index 3cc8496d9..d38a8975b 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketGuildChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketGuildChannel.cs @@ -15,6 +15,7 @@ namespace Discord.WebSocket [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class SocketGuildChannel : SocketChannel, IGuildChannel { + #region SocketGuildChannel private ImmutableArray _overwrites; /// @@ -27,7 +28,7 @@ namespace Discord.WebSocket /// public string Name { get; private set; } /// - public int Position { get; private set; } + public int Position { get; private set; } /// public virtual IReadOnlyCollection PermissionOverwrites => _overwrites; @@ -46,27 +47,24 @@ namespace Discord.WebSocket } internal static SocketGuildChannel Create(SocketGuild guild, ClientState state, Model model) { - switch (model.Type) + return model.Type switch { - case ChannelType.News: - return SocketNewsChannel.Create(guild, state, model); - case ChannelType.Text: - return SocketTextChannel.Create(guild, state, model); - case ChannelType.Voice: - return SocketVoiceChannel.Create(guild, state, model); - case ChannelType.Category: - return SocketCategoryChannel.Create(guild, state, model); - default: - return new SocketGuildChannel(guild.Discord, model.Id, guild); - } + ChannelType.News => SocketNewsChannel.Create(guild, state, model), + ChannelType.Text => SocketTextChannel.Create(guild, state, model), + ChannelType.Voice => SocketVoiceChannel.Create(guild, state, model), + ChannelType.Category => SocketCategoryChannel.Create(guild, state, model), + ChannelType.PrivateThread or ChannelType.PublicThread or ChannelType.NewsThread => SocketThreadChannel.Create(guild, state, model), + ChannelType.Stage => SocketStageChannel.Create(guild, state, model), + _ => new SocketGuildChannel(guild.Discord, model.Id, guild), + }; } /// internal override void Update(ClientState state, Model model) { Name = model.Name.Value; - Position = model.Position.Value; - - var overwrites = model.PermissionOverwrites.Value; + Position = model.Position.GetValueOrDefault(0); + + var overwrites = model.PermissionOverwrites.GetValueOrDefault(new API.Overwrite[0]); var newOverwrites = ImmutableArray.CreateBuilder(overwrites.Length); for (int i = 0; i < overwrites.Length; i++) newOverwrites.Add(overwrites[i].ToEntity()); @@ -176,14 +174,16 @@ namespace Discord.WebSocket public override string ToString() => Name; private string DebuggerDisplay => $"{Name} ({Id}, Guild)"; internal new SocketGuildChannel Clone() => MemberwiseClone() as SocketGuildChannel; +#endregion - //SocketChannel + #region SocketChannel /// internal override IReadOnlyCollection GetUsersInternal() => Users; /// internal override SocketUser GetUserInternal(ulong id) => GetUser(id); + #endregion - //IGuildChannel + #region IGuildChannel /// IGuild IGuildChannel.Guild => Guild; /// @@ -214,13 +214,15 @@ namespace Discord.WebSocket /// Task IGuildChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options) => Task.FromResult(GetUser(id)); + #endregion - //IChannel + #region IChannel /// IAsyncEnumerable> IChannel.GetUsersAsync(CacheMode mode, RequestOptions options) => ImmutableArray.Create>(Users).ToAsyncEnumerable(); //Overridden in Text/Voice /// Task IChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options) => Task.FromResult(GetUser(id)); //Overridden in Text/Voice + #endregion } } diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketStageChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketStageChannel.cs new file mode 100644 index 000000000..91bca5054 --- /dev/null +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketStageChannel.cs @@ -0,0 +1,158 @@ +using Discord.Rest; +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using System.Threading.Tasks; +using Model = Discord.API.Channel; +using StageInstance = Discord.API.StageInstance; + +namespace Discord.WebSocket +{ + /// + /// Represents a stage channel received over the gateway. + /// + public class SocketStageChannel : SocketVoiceChannel, IStageChannel + { + /// + public string Topic { get; private set; } + + /// + public StagePrivacyLevel? PrivacyLevel { get; private set; } + + /// + public bool? IsDiscoverableDisabled { get; private set; } + + /// + public bool IsLive { get; private set; } + + /// + /// Returns if the current user is a speaker within the stage, otherwise . + /// + public bool IsSpeaker + => !Guild.CurrentUser.IsSuppressed; + + /// + /// Gets a collection of users who are speakers within the stage. + /// + public IReadOnlyCollection Speakers + => Users.Where(x => !x.IsSuppressed).ToImmutableArray(); + + internal new SocketStageChannel Clone() => MemberwiseClone() as SocketStageChannel; + + internal SocketStageChannel(DiscordSocketClient discord, ulong id, SocketGuild guild) + : base(discord, id, guild) { } + + internal new static SocketStageChannel Create(SocketGuild guild, ClientState state, Model model) + { + var entity = new SocketStageChannel(guild.Discord, model.Id, guild); + entity.Update(state, model); + return entity; + } + + internal void Update(StageInstance model, bool isLive = false) + { + IsLive = isLive; + if (isLive) + { + Topic = model.Topic; + PrivacyLevel = model.PrivacyLevel; + IsDiscoverableDisabled = model.DiscoverableDisabled; + } + else + { + Topic = null; + PrivacyLevel = null; + IsDiscoverableDisabled = null; + } + } + + /// + public async Task StartStageAsync(string topic, StagePrivacyLevel privacyLevel = StagePrivacyLevel.GuildOnly, RequestOptions options = null) + { + var args = new API.Rest.CreateStageInstanceParams + { + ChannelId = Id, + Topic = topic, + PrivacyLevel = privacyLevel + }; + + var model = await Discord.ApiClient.CreateStageInstanceAsync(args, options).ConfigureAwait(false); + + Update(model, true); + } + + /// + public async Task ModifyInstanceAsync(Action func, RequestOptions options = null) + { + var model = await ChannelHelper.ModifyAsync(this, Discord, func, options); + + Update(model, true); + } + + /// + public async Task StopStageAsync(RequestOptions options = null) + { + await Discord.ApiClient.DeleteStageInstanceAsync(Id, options); + + Update(null); + } + + /// + public Task RequestToSpeakAsync(RequestOptions options = null) + { + var args = new API.Rest.ModifyVoiceStateParams + { + ChannelId = Id, + RequestToSpeakTimestamp = DateTimeOffset.UtcNow + }; + return Discord.ApiClient.ModifyMyVoiceState(Guild.Id, args, options); + } + + /// + public Task BecomeSpeakerAsync(RequestOptions options = null) + { + var args = new API.Rest.ModifyVoiceStateParams + { + ChannelId = Id, + Suppressed = false + }; + return Discord.ApiClient.ModifyMyVoiceState(Guild.Id, args, options); + } + + /// + public Task StopSpeakingAsync(RequestOptions options = null) + { + var args = new API.Rest.ModifyVoiceStateParams + { + ChannelId = Id, + Suppressed = true + }; + return Discord.ApiClient.ModifyMyVoiceState(Guild.Id, args, options); + } + + /// + public Task MoveToSpeakerAsync(IGuildUser user, RequestOptions options = null) + { + var args = new API.Rest.ModifyVoiceStateParams + { + ChannelId = Id, + Suppressed = false + }; + + return Discord.ApiClient.ModifyUserVoiceState(Guild.Id, user.Id, args); + } + + /// + public Task RemoveFromSpeakerAsync(IGuildUser user, RequestOptions options = null) + { + var args = new API.Rest.ModifyVoiceStateParams + { + ChannelId = Id, + Suppressed = true + }; + + return Discord.ApiClient.ModifyUserVoiceState(Guild.Id, user.Id, args); + } + } +} diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs index 71a20c198..8722b569d 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs @@ -16,6 +16,7 @@ namespace Discord.WebSocket [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class SocketTextChannel : SocketGuildChannel, ITextChannel, ISocketMessageChannel { + #region SocketTextChannel private readonly MessageCache _messages; /// @@ -50,6 +51,12 @@ namespace Discord.WebSocket Permissions.ResolveChannel(Guild, x, this, Permissions.ResolveGuild(Guild, x)), ChannelPermission.ViewChannel)).ToImmutableArray(); + /// + /// Gets a collection of threads within this text channel. + /// + public IReadOnlyCollection Threads + => Guild.ThreadChannels.Where(x => x.ParentChannel.Id == Id).ToImmutableArray(); + internal SocketTextChannel(DiscordSocketClient discord, ulong id, SocketGuild guild) : base(discord, id, guild) { @@ -66,16 +73,59 @@ namespace Discord.WebSocket { base.Update(state, model); CategoryId = model.CategoryId; - Topic = model.Topic.Value; + Topic = model.Topic.GetValueOrDefault(); SlowModeInterval = model.SlowMode.GetValueOrDefault(); // some guilds haven't been patched to include this yet? _nsfw = model.Nsfw.GetValueOrDefault(); } /// - public Task ModifyAsync(Action func, RequestOptions options = null) + public virtual Task ModifyAsync(Action func, RequestOptions options = null) => ChannelHelper.ModifyAsync(this, Discord, func, options); - //Messages + /// + /// Creates a thread within this . + /// + /// + /// When is the thread type will be based off of the + /// channel its created in. When called on a , it creates a . + /// When called on a , it creates a . The id of the created + /// thread will be the same as the id of the message, and as such a message can only have a + /// single thread created from it. + /// + /// The name of the thread. + /// + /// The type of the thread. + /// + /// Note: This parameter is not used if the parameter is not specified. + /// + /// + /// + /// The duration on which this thread archives after. + /// + /// Note: Options and + /// are only available for guilds that are boosted. You can check in the to see if the + /// guild has the THREE_DAY_THREAD_ARCHIVE and SEVEN_DAY_THREAD_ARCHIVE. + /// + /// + /// The message which to start the thread from. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous create operation. The task result contains a + /// + public async Task CreateThreadAsync(string name, ThreadType type = ThreadType.PublicThread, + ThreadArchiveDuration autoArchiveDuration = ThreadArchiveDuration.OneDay, IMessage message = null, bool? invitable = null, int? slowmode = null, RequestOptions options = null) + { + var model = await ThreadHelper.CreateThreadAsync(Discord, this, name, type, autoArchiveDuration, message, invitable, slowmode, options); + + var thread = (SocketThreadChannel)Guild.AddOrUpdateChannel(Discord.State, model); + + await thread.DownloadUsersAsync(); + + return thread; + } +#endregion + + #region Messages /// public SocketMessage GetCachedMessage(ulong id) => _messages?.Get(id); @@ -161,17 +211,27 @@ namespace Discord.WebSocket /// /// Message content is too long, length must be less or equal to . - public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null) - => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, options); + public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); /// - public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) - => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, options, isSpoiler); + public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, isSpoiler, embeds); /// /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) - => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, options, isSpoiler); + public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, isSpoiler, embeds); + + /// + /// Message content is too long, length must be less or equal to . + public Task SendFileAsync(FileAttachment attachment, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, attachment, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); + + /// + /// Message content is too long, length must be less or equal to . + public Task SendFilesAsync(IEnumerable attachments, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFilesAsync(this, Discord, attachments, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); /// public Task DeleteMessagesAsync(IEnumerable messages, RequestOptions options = null) @@ -202,8 +262,9 @@ namespace Discord.WebSocket => _messages?.Add(msg); internal SocketMessage RemoveMessage(ulong id) => _messages?.Remove(id); + #endregion - //Users + #region Users /// public override SocketGuildUser GetUser(ulong id) { @@ -217,8 +278,9 @@ namespace Discord.WebSocket } return null; } + #endregion - //Webhooks + #region Webhooks /// /// Creates a webhook in this text channel. /// @@ -229,7 +291,7 @@ namespace Discord.WebSocket /// A task that represents the asynchronous creation operation. The task result contains the newly created /// webhook. /// - public Task CreateWebhookAsync(string name, Stream avatar = null, RequestOptions options = null) + public virtual Task CreateWebhookAsync(string name, Stream avatar = null, RequestOptions options = null) => ChannelHelper.CreateWebhookAsync(this, Discord, name, avatar, options); /// /// Gets a webhook available in this text channel. @@ -240,7 +302,7 @@ namespace Discord.WebSocket /// A task that represents the asynchronous get operation. The task result contains a webhook associated /// with the identifier; null if the webhook is not found. /// - public Task GetWebhookAsync(ulong id, RequestOptions options = null) + public virtual Task GetWebhookAsync(ulong id, RequestOptions options = null) => ChannelHelper.GetWebhookAsync(this, Discord, id, options); /// /// Gets the webhooks available in this text channel. @@ -250,21 +312,29 @@ namespace Discord.WebSocket /// A task that represents the asynchronous get operation. The task result contains a read-only collection /// of webhooks that is available in this channel. /// - public Task> GetWebhooksAsync(RequestOptions options = null) + public virtual Task> GetWebhooksAsync(RequestOptions options = null) => ChannelHelper.GetWebhooksAsync(this, Discord, options); + #endregion - //Invites + #region Invites /// - public async Task CreateInviteAsync(int? maxAge = 86400, int? maxUses = null, bool isTemporary = false, bool isUnique = false, RequestOptions options = null) + public virtual async Task CreateInviteAsync(int? maxAge = 86400, int? maxUses = null, bool isTemporary = false, bool isUnique = false, RequestOptions options = null) => await ChannelHelper.CreateInviteAsync(this, Discord, maxAge, maxUses, isTemporary, isUnique, options).ConfigureAwait(false); /// - public async Task> GetInvitesAsync(RequestOptions options = null) + public virtual async Task CreateInviteToApplicationAsync(ulong applicationId, int? maxAge, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null) + => await ChannelHelper.CreateInviteToApplicationAsync(this, Discord, maxAge, maxUses, isTemporary, isUnique, applicationId, options).ConfigureAwait(false); + /// + public virtual async Task CreateInviteToStreamAsync(IUser user, int? maxAge, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null) + => await ChannelHelper.CreateInviteToStreamAsync(this, Discord, maxAge, maxUses, isTemporary, isUnique, user, options).ConfigureAwait(false); + /// + public virtual async Task> GetInvitesAsync(RequestOptions options = null) => await ChannelHelper.GetInvitesAsync(this, Discord, options).ConfigureAwait(false); private string DebuggerDisplay => $"{Name} ({Id}, Text)"; internal new SocketTextChannel Clone() => MemberwiseClone() as SocketTextChannel; + #endregion - //ITextChannel + #region ITextChannel /// async Task ITextChannel.CreateWebhookAsync(string name, Stream avatar, RequestOptions options) => await CreateWebhookAsync(name, avatar, options).ConfigureAwait(false); @@ -274,16 +344,21 @@ namespace Discord.WebSocket /// async Task> ITextChannel.GetWebhooksAsync(RequestOptions options) => await GetWebhooksAsync(options).ConfigureAwait(false); + /// + async Task ITextChannel.CreateThreadAsync(string name, ThreadType type, ThreadArchiveDuration autoArchiveDuration, IMessage message, bool? invitable, int? slowmode, RequestOptions options) + => await CreateThreadAsync(name, type, autoArchiveDuration, message, invitable, slowmode, options); + #endregion - //IGuildChannel + #region IGuildChannel /// Task IGuildChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options) => Task.FromResult(GetUser(id)); /// IAsyncEnumerable> IGuildChannel.GetUsersAsync(CacheMode mode, RequestOptions options) => ImmutableArray.Create>(Users).ToAsyncEnumerable(); + #endregion - //IMessageChannel + #region IMessageChannel /// async Task IMessageChannel.GetMessageAsync(ulong id, CacheMode mode, RequestOptions options) { @@ -306,18 +381,26 @@ namespace Discord.WebSocket => await GetPinnedMessagesAsync(options).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference) - => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + /// + async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + /// + async Task IMessageChannel.SendFileAsync(FileAttachment attachment, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(attachment, text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference) - => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference).ConfigureAwait(false); + async Task IMessageChannel.SendFilesAsync(IEnumerable attachments, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendFilesAsync(attachments, text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); /// - async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference) - => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference).ConfigureAwait(false); + async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) + => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + #endregion - // INestedChannel + #region INestedChannel /// Task INestedChannel.GetCategoryAsync(CacheMode mode, RequestOptions options) => Task.FromResult(Category); + #endregion } } diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketThreadChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketThreadChannel.cs new file mode 100644 index 000000000..7fcafc14a --- /dev/null +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketThreadChannel.cs @@ -0,0 +1,339 @@ +using Discord.Rest; +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using Model = Discord.API.Channel; +using ThreadMember = Discord.API.ThreadMember; +using System.Collections.Concurrent; + +namespace Discord.WebSocket +{ + /// + /// Represents a thread channel inside of a guild. + /// + [DebuggerDisplay(@"{DebuggerDisplay,nq}")] + public class SocketThreadChannel : SocketTextChannel, IThreadChannel + { + /// + public ThreadType Type { get; private set; } + + /// + /// Gets the owner of the current thread. + /// + public SocketThreadUser Owner { get; private set; } + + /// + /// Gets the current users within this thread. + /// + public SocketThreadUser CurrentUser + => Users.FirstOrDefault(x => x.Id == Discord.CurrentUser.Id); + + /// + public bool HasJoined { get; private set; } + + /// + /// if this thread is private, otherwise + /// + public bool IsPrivateThread + => Type == ThreadType.PrivateThread; + + /// + /// Gets the parent channel this thread resides in. + /// + public SocketTextChannel ParentChannel { get; private set; } + + /// + public int MessageCount { get; private set; } + + /// + public int MemberCount { get; private set; } + + /// + public bool IsArchived { get; private set; } + + /// + public DateTimeOffset ArchiveTimestamp { get; private set; } + + /// + public ThreadArchiveDuration AutoArchiveDuration { get; private set; } + + /// + public bool IsLocked { get; private set; } + + /// + /// Gets a collection of cached users within this thread. + /// + public new IReadOnlyCollection Users => + _members.Values.ToImmutableArray(); + + private readonly ConcurrentDictionary _members; + + private string DebuggerDisplay => $"{Name} ({Id}, Thread)"; + + private bool _usersDownloaded; + + private readonly object _downloadLock = new object(); + + internal SocketThreadChannel(DiscordSocketClient discord, SocketGuild guild, ulong id, SocketTextChannel parent) + : base(discord, id, guild) + { + ParentChannel = parent; + _members = new ConcurrentDictionary(); + } + + internal new static SocketThreadChannel Create(SocketGuild guild, ClientState state, Model model) + { + var parent = (SocketTextChannel)guild.GetChannel(model.CategoryId.Value); + var entity = new SocketThreadChannel(guild.Discord, guild, model.Id, parent); + entity.Update(state, model); + return entity; + } + + internal override void Update(ClientState state, Model model) + { + base.Update(state, model); + + Type = (ThreadType)model.Type; + MessageCount = model.MessageCount.GetValueOrDefault(-1); + MemberCount = model.MemberCount.GetValueOrDefault(-1); + + if (model.ThreadMetadata.IsSpecified) + { + IsArchived = model.ThreadMetadata.Value.Archived; + ArchiveTimestamp = model.ThreadMetadata.Value.ArchiveTimestamp; + AutoArchiveDuration = model.ThreadMetadata.Value.AutoArchiveDuration; + IsLocked = model.ThreadMetadata.Value.Locked.GetValueOrDefault(false); + } + + if (model.OwnerId.IsSpecified) + { + Owner = GetUser(model.OwnerId.Value); + } + + HasJoined = model.ThreadMember.IsSpecified; + } + + internal IReadOnlyCollection RemoveUsers(ulong[] users) + { + List threadUsers = new(); + + foreach (var userId in users) + { + if (_members.TryRemove(userId, out var user)) + threadUsers.Add(user); + } + + return threadUsers.ToImmutableArray(); + } + + internal SocketThreadUser AddOrUpdateThreadMember(ThreadMember model, SocketGuildUser guildMember) + { + if (_members.TryGetValue(model.UserId.Value, out SocketThreadUser member)) + member.Update(model); + else + { + member = SocketThreadUser.Create(Guild, this, model, guildMember); + member.GlobalUser.AddRef(); + _members[member.Id] = member; + } + return member; + } + + /// + public new SocketThreadUser GetUser(ulong id) + { + var user = Users.FirstOrDefault(x => x.Id == id); + return user; + } + + /// + /// Gets all users inside this thread. + /// + /// + /// If all users are not downloaded then this method will call and return the result. + /// + /// The options to be used when sending the request. + /// A task representing the download operation. + public async Task> GetUsersAsync(RequestOptions options = null) + { + // download all users if we havent + if (!_usersDownloaded) + { + await DownloadUsersAsync(options); + _usersDownloaded = true; + } + + return Users; + } + + /// + /// Downloads all users that have access to this thread. + /// + /// The options to be used when sending the request. + /// A task representing the asynchronous download operation. + public async Task DownloadUsersAsync(RequestOptions options = null) + { + var users = await Discord.ApiClient.ListThreadMembersAsync(Id, options); + + lock (_downloadLock) + { + foreach (var threadMember in users) + { + var guildUser = Guild.GetUser(threadMember.UserId.Value); + + AddOrUpdateThreadMember(threadMember, guildUser); + } + } + } + + internal new SocketThreadChannel Clone() => MemberwiseClone() as SocketThreadChannel; + + /// + public Task JoinAsync(RequestOptions options = null) + => Discord.ApiClient.JoinThreadAsync(Id, options); + + /// + public Task LeaveAsync(RequestOptions options = null) + => Discord.ApiClient.LeaveThreadAsync(Id, options); + + /// + /// Adds a user to this thread. + /// + /// The to add. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous operation of adding a member to a thread. + /// + public Task AddUserAsync(IGuildUser user, RequestOptions options = null) + => Discord.ApiClient.AddThreadMemberAsync(Id, user.Id, options); + + /// + /// Removes a user from this thread. + /// + /// The to remove from this thread. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous operation of removing a user from this thread. + /// + public Task RemoveUserAsync(IGuildUser user, RequestOptions options = null) + => Discord.ApiClient.RemoveThreadMemberAsync(Id, user.Id, options); + + /// + /// + /// This method is not supported in threads. + /// + public override Task AddPermissionOverwriteAsync(IRole role, OverwritePermissions permissions, RequestOptions options = null) + => throw new NotSupportedException("This method is not supported in threads."); + + /// + /// + /// This method is not supported in threads. + /// + public override Task AddPermissionOverwriteAsync(IUser user, OverwritePermissions permissions, RequestOptions options = null) + => throw new NotSupportedException("This method is not supported in threads."); + + /// + /// + /// This method is not supported in threads. + /// + public override Task CreateInviteAsync(int? maxAge = 86400, int? maxUses = null, bool isTemporary = false, bool isUnique = false, RequestOptions options = null) + => throw new NotSupportedException("This method is not supported in threads."); + + /// + /// + /// This method is not supported in threads. + /// + public override Task CreateInviteToApplicationAsync(ulong applicationId, int? maxAge, int? maxUses = null, bool isTemporary = false, bool isUnique = false, RequestOptions options = null) + => throw new NotSupportedException("This method is not supported in threads."); + + /// + /// + /// This method is not supported in threads. + /// + public override Task CreateInviteToStreamAsync(IUser user, int? maxAge, int? maxUses = null, bool isTemporary = false, bool isUnique = false, RequestOptions options = null) + => throw new NotSupportedException("This method is not supported in threads."); + + /// + /// + /// This method is not supported in threads. + /// + public override Task CreateWebhookAsync(string name, Stream avatar = null, RequestOptions options = null) + => throw new NotSupportedException("This method is not supported in threads."); + + /// + /// + /// This method is not supported in threads. + /// + public override Task> GetInvitesAsync(RequestOptions options = null) + => throw new NotSupportedException("This method is not supported in threads."); + + /// + /// + /// This method is not supported in threads. + /// + public override OverwritePermissions? GetPermissionOverwrite(IRole role) + => ParentChannel.GetPermissionOverwrite(role); + + /// + /// + /// This method is not supported in threads. + /// + public override OverwritePermissions? GetPermissionOverwrite(IUser user) + => ParentChannel.GetPermissionOverwrite(user); + + /// + /// + /// This method is not supported in threads. + /// + public override Task GetWebhookAsync(ulong id, RequestOptions options = null) + => throw new NotSupportedException("This method is not supported in threads."); + + /// + /// + /// This method is not supported in threads. + /// + public override Task> GetWebhooksAsync(RequestOptions options = null) + => throw new NotSupportedException("This method is not supported in threads."); + + /// + /// + /// This method is not supported in threads. + /// + public override Task ModifyAsync(Action func, RequestOptions options = null) + => ThreadHelper.ModifyAsync(this, Discord, func, options); + + /// + /// + /// This method is not supported in threads. + /// + public override Task RemovePermissionOverwriteAsync(IRole role, RequestOptions options = null) + => throw new NotSupportedException("This method is not supported in threads."); + + /// + /// + /// This method is not supported in threads. + /// + public override Task RemovePermissionOverwriteAsync(IUser user, RequestOptions options = null) + => throw new NotSupportedException("This method is not supported in threads."); + + /// + /// + /// This method is not supported in threads. + /// + public override IReadOnlyCollection PermissionOverwrites + => throw new NotSupportedException("This method is not supported in threads."); + + /// + /// + /// This method is not supported in threads. + /// + public override Task SyncPermissionsAsync(RequestOptions options = null) + => throw new NotSupportedException("This method is not supported in threads."); + + string IChannel.Name => Name; + } +} diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs index ecaccedd3..e57051e80 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs @@ -16,6 +16,7 @@ namespace Discord.WebSocket [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class SocketVoiceChannel : SocketGuildChannel, IVoiceChannel, ISocketAudioChannel { + #region SocketVoiceChannel /// public int Bitrate { get; private set; } /// @@ -89,29 +90,39 @@ namespace Discord.WebSocket return user; return null; } +#endregion - //Invites + #region Invites /// public async Task CreateInviteAsync(int? maxAge = 86400, int? maxUses = null, bool isTemporary = false, bool isUnique = false, RequestOptions options = null) => await ChannelHelper.CreateInviteAsync(this, Discord, maxAge, maxUses, isTemporary, isUnique, options).ConfigureAwait(false); /// + public async Task CreateInviteToApplicationAsync(ulong applicationId, int? maxAge, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null) + => await ChannelHelper.CreateInviteToApplicationAsync(this, Discord, maxAge, maxUses, isTemporary, isUnique, applicationId, options).ConfigureAwait(false); + /// + public async Task CreateInviteToStreamAsync(IUser user, int? maxAge, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null) + => await ChannelHelper.CreateInviteToStreamAsync(this, Discord, maxAge, maxUses, isTemporary, isUnique, user, options).ConfigureAwait(false); + /// public async Task> GetInvitesAsync(RequestOptions options = null) => await ChannelHelper.GetInvitesAsync(this, Discord, options).ConfigureAwait(false); private string DebuggerDisplay => $"{Name} ({Id}, Voice)"; internal new SocketVoiceChannel Clone() => MemberwiseClone() as SocketVoiceChannel; + #endregion - //IGuildChannel + #region IGuildChannel /// Task IGuildChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options) => Task.FromResult(GetUser(id)); /// IAsyncEnumerable> IGuildChannel.GetUsersAsync(CacheMode mode, RequestOptions options) => ImmutableArray.Create>(Users).ToAsyncEnumerable(); + #endregion - // INestedChannel + #region INestedChannel /// Task INestedChannel.GetCategoryAsync(CacheMode mode, RequestOptions options) => Task.FromResult(Category); + #endregion } } diff --git a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs index 9af4ad57e..beaab1cfe 100644 --- a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs +++ b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs @@ -19,6 +19,9 @@ using PresenceModel = Discord.API.Presence; using RoleModel = Discord.API.Role; using UserModel = Discord.API.User; using VoiceStateModel = Discord.API.VoiceState; +using StickerModel = Discord.API.Sticker; +using EventModel = Discord.API.GuildScheduledEvent; +using System.IO; namespace Discord.WebSocket { @@ -28,16 +31,19 @@ namespace Discord.WebSocket [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class SocketGuild : SocketEntity, IGuild, IDisposable { + #region SocketGuild #pragma warning disable IDISP002, IDISP006 private readonly SemaphoreSlim _audioLock; private TaskCompletionSource _syncPromise, _downloaderPromise; private TaskCompletionSource _audioConnectPromise; - private ConcurrentHashSet _channels; + private ConcurrentDictionary _channels; private ConcurrentDictionary _members; private ConcurrentDictionary _roles; private ConcurrentDictionary _voiceStates; + private ConcurrentDictionary _stickers; + private ConcurrentDictionary _events; private ImmutableArray _emotes; - private ImmutableArray _features; + private AudioClient _audioClient; #pragma warning restore IDISP002, IDISP006 @@ -118,9 +124,14 @@ namespace Discord.WebSocket public int? MaxMembers { get; private set; } /// public int? MaxVideoChannelUsers { get; private set; } - + /// + public NsfwLevel NsfwLevel { get; private set; } /// public CultureInfo PreferredCulture { get; private set; } + /// + public bool IsBoostProgressBarEnabled { get; private set; } + /// + public GuildFeatures Features { get; private set; } /// public DateTimeOffset CreatedAt => SnowflakeUtils.FromSnowflake(Id); @@ -131,7 +142,7 @@ namespace Discord.WebSocket /// public string DiscoverySplashUrl => CDN.GetGuildDiscoverySplashUrl(Id, DiscoverySplashId); /// - public string BannerUrl => CDN.GetGuildBannerUrl(Id, BannerId); + public string BannerUrl => CDN.GetGuildBannerUrl(Id, BannerId, ImageFormat.Auto); /// Indicates whether the client has all the members downloaded to the local guild cache. public bool HasAllMembers => MemberCount <= DownloadedMemberCount;// _downloaderPromise.Task.IsCompleted; /// Indicates whether the guild cache is synced to this guild. @@ -269,6 +280,14 @@ namespace Discord.WebSocket public IReadOnlyCollection VoiceChannels => Channels.OfType().ToImmutableArray(); /// + /// Gets a collection of all stage channels in this guild. + /// + /// + /// A read-only collection of stage channels found within this guild. + /// + public IReadOnlyCollection StageChannels + => Channels.OfType().ToImmutableArray(); + /// /// Gets a collection of all category channels in this guild. /// /// @@ -277,6 +296,14 @@ namespace Discord.WebSocket public IReadOnlyCollection CategoryChannels => Channels.OfType().ToImmutableArray(); /// + /// Gets a collection of all thread channels in this guild. + /// + /// + /// A read-only collection of thread channels found within this guild. + /// + public IReadOnlyCollection ThreadChannels + => Channels.OfType().ToImmutableArray(); + /// /// Gets the current logged-in user. /// public SocketGuildUser CurrentUser => _members.TryGetValue(Discord.CurrentUser.Id, out SocketGuildUser member) ? member : null; @@ -299,13 +326,16 @@ namespace Discord.WebSocket { var channels = _channels; var state = Discord.State; - return channels.Select(x => state.GetChannel(x) as SocketGuildChannel).Where(x => x != null).ToReadOnlyCollection(channels); + return channels.Select(x => x.Value).Where(x => x != null).ToReadOnlyCollection(channels); } } /// public IReadOnlyCollection Emotes => _emotes; - /// - public IReadOnlyCollection Features => _features; + /// + /// Gets a collection of all custom stickers for this guild. + /// + public IReadOnlyCollection Stickers + => _stickers.Select(x => x.Value).ToImmutableArray(); /// /// Gets a collection of users in this guild. /// @@ -336,12 +366,22 @@ namespace Discord.WebSocket /// public IReadOnlyCollection Roles => _roles.ToReadOnlyCollection(); + /// + /// Gets a collection of all events within this guild. + /// + /// + /// This field is based off of caching alone, since there is no events returned on the guild model. + /// + /// + /// A read-only collection of guild events found within this guild. + /// + public IReadOnlyCollection Events => _events.ToReadOnlyCollection(); + internal SocketGuild(DiscordSocketClient client, ulong id) : base(client, id) { _audioLock = new SemaphoreSlim(1, 1); _emotes = ImmutableArray.Create(); - _features = ImmutableArray.Create(); } internal static SocketGuild Create(DiscordSocketClient discord, ClientState state, ExtendedModel model) { @@ -354,8 +394,10 @@ namespace Discord.WebSocket IsAvailable = !(model.Unavailable ?? false); if (!IsAvailable) { + if(_events == null) + _events = new ConcurrentDictionary(); if (_channels == null) - _channels = new ConcurrentHashSet(); + _channels = new ConcurrentDictionary(); if (_members == null) _members = new ConcurrentDictionary(); if (_roles == null) @@ -371,15 +413,23 @@ namespace Discord.WebSocket Update(state, model as Model); - var channels = new ConcurrentHashSet(ConcurrentHashSet.DefaultConcurrencyLevel, (int)(model.Channels.Length * 1.05)); + var channels = new ConcurrentDictionary(ConcurrentHashSet.DefaultConcurrencyLevel, (int)(model.Channels.Length * 1.05)); { for (int i = 0; i < model.Channels.Length; i++) { var channel = SocketGuildChannel.Create(this, state, model.Channels[i]); state.AddChannel(channel); - channels.TryAdd(channel.Id); + channels.TryAdd(channel.Id, channel); + } + + for(int i = 0; i < model.Threads.Length; i++) + { + var threadChannel = SocketThreadChannel.Create(this, state, model.Threads[i]); + state.AddChannel(threadChannel); + channels.TryAdd(threadChannel.Id, threadChannel); } } + _channels = channels; var members = new ConcurrentDictionary(ConcurrentHashSet.DefaultConcurrencyLevel, (int)(model.Members.Length * 1.05)); @@ -414,6 +464,17 @@ namespace Discord.WebSocket } _voiceStates = voiceStates; + var events = new ConcurrentDictionary(ConcurrentHashSet.DefaultConcurrencyLevel, (int)(model.GuildScheduledEvents.Length * 1.05)); + { + for (int i = 0; i < model.GuildScheduledEvents.Length; i++) + { + var guildEvent = SocketGuildEvent.Create(Discord, this, model.GuildScheduledEvents[i]); + events.TryAdd(guildEvent.Id, guildEvent); + } + } + _events = events; + + _syncPromise = new TaskCompletionSource(); _downloaderPromise = new TaskCompletionSource(); var _ = _syncPromise.TrySetResultAsync(true); @@ -448,6 +509,7 @@ namespace Discord.WebSocket SystemChannelFlags = model.SystemChannelFlags; Description = model.Description; PremiumSubscriptionCount = model.PremiumSubscriptionCount.GetValueOrDefault(); + NsfwLevel = model.NsfwLevel; if (model.MaxPresences.IsSpecified) MaxPresences = model.MaxPresences.Value ?? 25000; if (model.MaxMembers.IsSpecified) @@ -456,7 +518,8 @@ namespace Discord.WebSocket MaxVideoChannelUsers = model.MaxVideoChannelUsers.Value; PreferredLocale = model.PreferredLocale; PreferredCulture = PreferredLocale == null ? null : new CultureInfo(PreferredLocale); - + if (model.IsBoostProgressBarEnabled.IsSpecified) + IsBoostProgressBarEnabled = model.IsBoostProgressBarEnabled.Value; if (model.Emojis != null) { var emojis = ImmutableArray.CreateBuilder(model.Emojis.Length); @@ -467,10 +530,7 @@ namespace Discord.WebSocket else _emotes = ImmutableArray.Create(); - if (model.Features != null) - _features = model.Features.ToImmutableArray(); - else - _features = ImmutableArray.Create(); + Features = model.Features; var roles = new ConcurrentDictionary(ConcurrentHashSet.DefaultConcurrencyLevel, (int)(model.Roles.Length * 1.05)); if (model.Roles != null) @@ -482,6 +542,25 @@ namespace Discord.WebSocket } } _roles = roles; + + if (model.Stickers != null) + { + var stickers = new ConcurrentDictionary(ConcurrentHashSet.DefaultConcurrencyLevel, (int)(model.Stickers.Length * 1.05)); + for (int i = 0; i < model.Stickers.Length; i++) + { + var sticker = model.Stickers[i]; + if (sticker.User.IsSpecified) + AddOrUpdateUser(sticker.User.Value); + + var entity = SocketCustomSticker.Create(Discord, sticker, this, sticker.User.IsSpecified ? sticker.User.Value.Id : null); + + stickers.TryAdd(sticker.Id, entity); + } + + _stickers = stickers; + } + else + _stickers = new ConcurrentDictionary(ConcurrentHashSet.DefaultConcurrencyLevel, 7); } /*internal void Update(ClientState state, GuildSyncModel model) //TODO remove? userbot related { @@ -514,8 +593,9 @@ namespace Discord.WebSocket emotes.Add(model.Emojis[i].ToEntity()); _emotes = emotes.ToImmutable(); } + #endregion - //General + #region General /// public Task DeleteAsync(RequestOptions options = null) => GuildHelper.DeleteAsync(this, Discord, options); @@ -539,8 +619,9 @@ namespace Discord.WebSocket /// public Task LeaveAsync(RequestOptions options = null) => GuildHelper.LeaveAsync(this, Discord, options); + #endregion - //Bans + #region Bans /// /// Gets a collection of all users banned in this guild. /// @@ -588,8 +669,9 @@ namespace Discord.WebSocket /// public Task RemoveBanAsync(ulong userId, RequestOptions options = null) => GuildHelper.RemoveBanAsync(this, Discord, userId, options); + #endregion - //Channels + #region Channels /// /// Gets a channel in this guild. /// @@ -614,6 +696,16 @@ namespace Discord.WebSocket public SocketTextChannel GetTextChannel(ulong id) => GetChannel(id) as SocketTextChannel; /// + /// Gets a thread in this guild. + /// + /// The snowflake identifier for the thread. + /// + /// A thread channel associated with the specified ; if none is found. + /// + public SocketThreadChannel GetThreadChannel(ulong id) + => GetChannel(id) as SocketThreadChannel; + + /// /// Gets a voice channel in this guild. /// /// The snowflake identifier for the voice channel. @@ -623,6 +715,15 @@ namespace Discord.WebSocket public SocketVoiceChannel GetVoiceChannel(ulong id) => GetChannel(id) as SocketVoiceChannel; /// + /// Gets a stage channel in this guild. + /// + /// The snowflake identifier for the stage channel. + /// + /// A stage channel associated with the specified ; if none is found. + /// + public SocketStageChannel GetStageChannel(ulong id) + => GetChannel(id) as SocketStageChannel; + /// /// Gets a category channel in this guild. /// /// The snowflake identifier for the category channel. @@ -670,6 +771,19 @@ namespace Discord.WebSocket /// public Task CreateVoiceChannelAsync(string name, Action func = null, RequestOptions options = null) => GuildHelper.CreateVoiceChannelAsync(this, Discord, name, options, func); + + /// + /// Creates a new stage channel in this guild. + /// + /// The new name for the stage channel. + /// The delegate containing the properties to be applied to the channel upon its creation. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous creation operation. The task result contains the newly created + /// stage channel. + /// + public Task CreateStageChannelAsync(string name, Action func = null, RequestOptions options = null) + => GuildHelper.CreateStageChannelAsync(this, Discord, name, options, func); /// /// Creates a new channel category in this guild. /// @@ -687,25 +801,40 @@ namespace Discord.WebSocket internal SocketGuildChannel AddChannel(ClientState state, ChannelModel model) { var channel = SocketGuildChannel.Create(this, state, model); - _channels.TryAdd(model.Id); + _channels.TryAdd(model.Id, channel); state.AddChannel(channel); return channel; } + + internal SocketGuildChannel AddOrUpdateChannel(ClientState state, ChannelModel model) + { + if (_channels.TryGetValue(model.Id, out SocketGuildChannel channel)) + channel.Update(Discord.State, model); + else + { + channel = SocketGuildChannel.Create(this, Discord.State, model); + _channels[channel.Id] = channel; + state.AddChannel(channel); + } + return channel; + } + internal SocketGuildChannel RemoveChannel(ClientState state, ulong id) { - if (_channels.TryRemove(id)) + if (_channels.TryRemove(id, out var _)) return state.RemoveChannel(id) as SocketGuildChannel; return null; } internal void PurgeChannelCache(ClientState state) { foreach (var channelId in _channels) - state.RemoveChannel(channelId); + state.RemoveChannel(channelId.Key); _channels.Clear(); } + #endregion - //Voice Regions + #region Voice Regions /// /// Gets a collection of all the voice regions this guild can access. /// @@ -716,14 +845,124 @@ namespace Discord.WebSocket /// public Task> GetVoiceRegionsAsync(RequestOptions options = null) => GuildHelper.GetVoiceRegionsAsync(this, Discord, options); + #endregion - //Integrations + #region Integrations public Task> GetIntegrationsAsync(RequestOptions options = null) => GuildHelper.GetIntegrationsAsync(this, Discord, options); public Task CreateIntegrationAsync(ulong id, string type, RequestOptions options = null) => GuildHelper.CreateIntegrationAsync(this, Discord, id, type, options); + #endregion - //Invites + #region Interactions + /// + /// Deletes all application commands in the current guild. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous delete operation. + /// + public Task DeleteApplicationCommandsAsync(RequestOptions options = null) + => InteractionHelper.DeleteAllGuildCommandsAsync(Discord, Id, options); + + /// + /// Gets a collection of slash commands created by the current user in this guild. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains a read-only collection of + /// slash commands created by the current user. + /// + public async Task> GetApplicationCommandsAsync(RequestOptions options = null) + { + var commands = (await Discord.ApiClient.GetGuildApplicationCommandsAsync(Id, options)).Select(x => SocketApplicationCommand.Create(Discord, x, Id)); + + foreach (var command in commands) + { + Discord.State.AddCommand(command); + } + + return commands.ToImmutableArray(); + } + + /// + /// Gets an application command within this guild with the specified id. + /// + /// The id of the application command to get. + /// The that determines whether the object should be fetched from cache. + /// The options to be used when sending the request. + /// + /// A ValueTask that represents the asynchronous get operation. The task result contains a + /// if found, otherwise . + /// + public async ValueTask GetApplicationCommandAsync(ulong id, CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null) + { + var command = Discord.State.GetCommand(id); + + if (command != null) + return command; + + if (mode == CacheMode.CacheOnly) + return null; + + var model = await Discord.ApiClient.GetGlobalApplicationCommandAsync(id, options); + + if (model == null) + return null; + + command = SocketApplicationCommand.Create(Discord, model, Id); + + Discord.State.AddCommand(command); + + return command; + } + + /// + /// Creates an application command within this guild. + /// + /// The properties to use when creating the command. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous creation operation. The task result contains the command that was created. + /// + public async Task CreateApplicationCommandAsync(ApplicationCommandProperties properties, RequestOptions options = null) + { + var model = await InteractionHelper.CreateGuildCommandAsync(Discord, Id, properties, options); + + var entity = Discord.State.GetOrAddCommand(model.Id, (id) => SocketApplicationCommand.Create(Discord, model)); + + entity.Update(model); + + return entity; + } + + /// + /// Overwrites the application commands within this guild. + /// + /// A collection of properties to use when creating the commands. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous creation operation. The task result contains a collection of commands that was created. + /// + public async Task> BulkOverwriteApplicationCommandAsync(ApplicationCommandProperties[] properties, + RequestOptions options = null) + { + var models = await InteractionHelper.BulkOverwriteGuildCommandsAsync(Discord, Id, properties, options); + + var entities = models.Select(x => SocketApplicationCommand.Create(Discord, x)); + + Discord.State.PurgeCommands(x => !x.IsGlobalCommand && x.Guild.Id == Id); + + foreach(var entity in entities) + { + Discord.State.AddCommand(entity); + } + + return entities.ToImmutableArray(); + } + #endregion + + #region Invites /// /// Gets a collection of all invites in this guild. /// @@ -744,8 +983,9 @@ namespace Discord.WebSocket /// public Task GetVanityInviteAsync(RequestOptions options = null) => GuildHelper.GetVanityInviteAsync(this, Discord, options); + #endregion - //Roles + #region Roles /// /// Gets a role in this guild. /// @@ -794,7 +1034,45 @@ namespace Discord.WebSocket return null; } - //Users + internal SocketRole AddOrUpdateRole(RoleModel model) + { + if (_roles.TryGetValue(model.Id, out SocketRole role)) + _roles[model.Id].Update(Discord.State, model); + else + role = AddRole(model); + + return role; + } + + internal SocketCustomSticker AddSticker(StickerModel model) + { + if (model.User.IsSpecified) + AddOrUpdateUser(model.User.Value); + + var sticker = SocketCustomSticker.Create(Discord, model, this, model.User.IsSpecified ? model.User.Value.Id : null); + _stickers[model.Id] = sticker; + return sticker; + } + + internal SocketCustomSticker AddOrUpdateSticker(StickerModel model) + { + if (_stickers.TryGetValue(model.Id, out SocketCustomSticker sticker)) + _stickers[model.Id].Update(model); + else + sticker = AddSticker(model); + + return sticker; + } + + internal SocketCustomSticker RemoveSticker(ulong id) + { + if (_stickers.TryRemove(id, out SocketCustomSticker sticker)) + return sticker; + return null; + } + #endregion + + #region Users /// public Task AddGuildUserAsync(ulong id, string accessToken, Action func = null, RequestOptions options = null) => GuildHelper.AddGuildUserAsync(this, Discord, id, accessToken, func, options); @@ -935,8 +1213,118 @@ namespace Discord.WebSocket /// public Task> SearchUsersAsync(string query, int limit = DiscordConfig.MaxUsersPerBatch, RequestOptions options = null) => GuildHelper.SearchUsersAsync(this, Discord, query, limit, options); + #endregion + + #region Guild Events + + /// + /// Gets an event in this guild. + /// + /// The snowflake identifier for the event. + /// + /// An event that is associated with the specified ; if none is found. + /// + public SocketGuildEvent GetEvent(ulong id) + { + if (_events.TryGetValue(id, out SocketGuildEvent value)) + return value; + return null; + } + + internal SocketGuildEvent RemoveEvent(ulong id) + { + if (_events.TryRemove(id, out SocketGuildEvent value)) + return value; + return null; + } + + internal SocketGuildEvent AddOrUpdateEvent(EventModel model) + { + if (_events.TryGetValue(model.Id, out SocketGuildEvent value)) + value.Update(model); + else + { + value = SocketGuildEvent.Create(Discord, this, model); + _events[model.Id] = value; + } + return value; + } + + /// + /// Gets an event within this guild. + /// + /// The snowflake identifier for the event. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. + /// + public Task GetEventAsync(ulong id, RequestOptions options = null) + => GuildHelper.GetGuildEventAsync(Discord, id, this, options); - //Audit logs + /// + /// Gets all active events within this guild. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. + /// + public Task> GetEventsAsync(RequestOptions options = null) + => GuildHelper.GetGuildEventsAsync(Discord, this, options); + + /// + /// Creates an event within this guild. + /// + /// The name of the event. + /// The privacy level of the event. + /// The start time of the event. + /// The type of the event. + /// The description of the event. + /// The end time of the event. + /// + /// The channel id of the event. + /// + /// The event must have a type of or + /// in order to use this property. + /// + /// + /// A collection of speakers for the event. + /// The location of the event; links are supported + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous create operation. + /// + public Task CreateEventAsync( + string name, + DateTimeOffset startTime, + GuildScheduledEventType type, + GuildScheduledEventPrivacyLevel privacyLevel = GuildScheduledEventPrivacyLevel.Private, + string description = null, + DateTimeOffset? endTime = null, + ulong? channelId = null, + string location = null, + RequestOptions options = null) + { + // requirements taken from https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-permissions-requirements + switch (type) + { + case GuildScheduledEventType.Stage: + CurrentUser.GuildPermissions.Ensure(GuildPermission.ManageEvents | GuildPermission.ManageChannels | GuildPermission.MuteMembers | GuildPermission.MoveMembers); + break; + case GuildScheduledEventType.Voice: + CurrentUser.GuildPermissions.Ensure(GuildPermission.ManageEvents | GuildPermission.ViewChannel | GuildPermission.Connect); + break; + case GuildScheduledEventType.External: + CurrentUser.GuildPermissions.Ensure(GuildPermission.ManageEvents); + break; + } + + return GuildHelper.CreateGuildEventAsync(Discord, this, name, privacyLevel, startTime, type, description, endTime, channelId, location, options); + } + + + #endregion + + #region Audit logs /// /// Gets the specified number of audit log entries for this guild. /// @@ -951,8 +1339,9 @@ namespace Discord.WebSocket /// public IAsyncEnumerable> GetAuditLogsAsync(int limit, RequestOptions options = null, ulong? beforeId = null, ulong? userId = null, ActionType? actionType = null) => GuildHelper.GetAuditLogsAsync(this, Discord, beforeId, limit, options, userId: userId, actionType: actionType); + #endregion - //Webhooks + #region Webhooks /// /// Gets a webhook found within this guild. /// @@ -974,8 +1363,9 @@ namespace Discord.WebSocket /// public Task> GetWebhooksAsync(RequestOptions options = null) => GuildHelper.GetWebhooksAsync(this, Discord, options); + #endregion - //Emotes + #region Emotes /// public Task> GetEmotesAsync(RequestOptions options = null) => GuildHelper.GetEmotesAsync(this, Discord, options); @@ -993,7 +1383,154 @@ namespace Discord.WebSocket public Task DeleteEmoteAsync(GuildEmote emote, RequestOptions options = null) => GuildHelper.DeleteEmoteAsync(this, Discord, emote.Id, options); - //Voice States + /// + /// Moves the user to the voice channel. + /// + /// The user to move. + /// the channel where the user gets moved to. + /// A task that represents the asynchronous operation for moving a user. + public Task MoveAsync(IGuildUser user, IVoiceChannel targetChannel) + => user.ModifyAsync(x => x.Channel = new Optional(targetChannel)); + + /// + /// Disconnects the user from its current voice channel + /// + /// The user to disconnect. + /// A task that represents the asynchronous operation for disconnecting a user. + async Task IGuild.DisconnectAsync(IGuildUser user) => await user.ModifyAsync(x => x.Channel = new Optional()); + #endregion + + #region Stickers + /// + /// Gets a specific sticker within this guild. + /// + /// The id of the sticker to get. + /// The that determines whether the object should be fetched from cache. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains the sticker found with the + /// specified ; if none is found. + /// + public async ValueTask GetStickerAsync(ulong id, CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null) + { + var sticker = _stickers.FirstOrDefault(x => x.Key == id); + + if (sticker.Value != null) + return sticker.Value; + + if (mode == CacheMode.CacheOnly) + return null; + + var model = await Discord.ApiClient.GetGuildStickerAsync(Id, id, options).ConfigureAwait(false); + + if (model == null) + return null; + + return AddOrUpdateSticker(model); + } + /// + /// Gets a specific sticker within this guild. + /// + /// The id of the sticker to get. + /// A sticker, if none is found then . + public SocketCustomSticker GetSticker(ulong id) + => GetStickerAsync(id, CacheMode.CacheOnly).GetAwaiter().GetResult(); + /// + /// Gets a collection of all stickers within this guild. + /// + /// The that determines whether the object should be fetched from cache. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous get operation. The task result contains a read-only collection + /// of stickers found within the guild. + /// + public async ValueTask> GetStickersAsync(CacheMode mode = CacheMode.AllowDownload, + RequestOptions options = null) + { + if (Stickers.Count > 0) + return Stickers; + + if (mode == CacheMode.CacheOnly) + return ImmutableArray.Create(); + + var models = await Discord.ApiClient.ListGuildStickersAsync(Id, options).ConfigureAwait(false); + + List stickers = new(); + + foreach (var model in models) + { + stickers.Add(AddOrUpdateSticker(model)); + } + + return stickers; + } + /// + /// Creates a new sticker in this guild. + /// + /// The name of the sticker. + /// The description of the sticker. + /// The tags of the sticker. + /// The image of the new emote. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous creation operation. The task result contains the created sticker. + /// + public async Task CreateStickerAsync(string name, string description, IEnumerable tags, Image image, + RequestOptions options = null) + { + var model = await GuildHelper.CreateStickerAsync(Discord, this, name, description, tags, image, options).ConfigureAwait(false); + + return AddOrUpdateSticker(model); + } + /// + /// Creates a new sticker in this guild + /// + /// The name of the sticker. + /// The description of the sticker. + /// The tags of the sticker. + /// The path of the file to upload. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous creation operation. The task result contains the created sticker. + /// + public Task CreateStickerAsync(string name, string description, IEnumerable tags, string path, + RequestOptions options = null) + { + var fs = File.OpenRead(path); + return CreateStickerAsync(name, description, tags, fs, Path.GetFileName(fs.Name), options); + } + /// + /// Creates a new sticker in this guild + /// + /// The name of the sticker. + /// The description of the sticker. + /// The tags of the sticker. + /// The stream containing the file data. + /// The name of the file with the extension, ex: image.png. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous creation operation. The task result contains the created sticker. + /// + public async Task CreateStickerAsync(string name, string description, IEnumerable tags, Stream stream, + string filename, RequestOptions options = null) + { + var model = await GuildHelper.CreateStickerAsync(Discord, this, name, description, tags, stream, filename, options).ConfigureAwait(false); + + return AddOrUpdateSticker(model); + } + /// + /// Deletes a sticker within this guild. + /// + /// The sticker to delete. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous removal operation. + /// + public Task DeleteStickerAsync(SocketCustomSticker sticker, RequestOptions options = null) + => sticker.DeleteAsync(options); + #endregion + + #region Voice States internal async Task AddOrUpdateVoiceStateAsync(ClientState state, VoiceStateModel model) { var voiceChannel = state.GetChannel(model.ChannelId.Value) as SocketVoiceChannel; @@ -1037,8 +1574,9 @@ namespace Discord.WebSocket } return null; } + #endregion - //Audio + #region Audio internal AudioInStream GetAudioStream(ulong userId) { return _audioClient?.GetInputStream(userId); @@ -1143,7 +1681,7 @@ namespace Discord.WebSocket } internal async Task FinishConnectAudio(string url, string token) { - //TODO: Mem Leak: Disconnected/Connected handlers arent cleaned up + //TODO: Mem Leak: Disconnected/Connected handlers aren't cleaned up var voiceState = GetVoiceState(Discord.CurrentUser.Id).Value; await _audioLock.WaitAsync().ConfigureAwait(false); @@ -1192,8 +1730,9 @@ namespace Discord.WebSocket public override string ToString() => Name; private string DebuggerDisplay => $"{Name} ({Id})"; internal SocketGuild Clone() => MemberwiseClone() as SocketGuild; + #endregion - //IGuild + #region IGuild /// ulong? IGuild.AFKChannelId => AFKChannelId; /// @@ -1216,7 +1755,17 @@ namespace Discord.WebSocket int? IGuild.ApproximateMemberCount => null; /// int? IGuild.ApproximatePresenceCount => null; - + /// + IReadOnlyCollection IGuild.Stickers => Stickers; + /// + async Task IGuild.CreateEventAsync(string name, DateTimeOffset startTime, GuildScheduledEventType type, GuildScheduledEventPrivacyLevel privacyLevel, string description, DateTimeOffset? endTime, ulong? channelId, string location, RequestOptions options) + => await CreateEventAsync(name, startTime, type, privacyLevel, description, endTime, channelId, location, options).ConfigureAwait(false); + /// + async Task IGuild.GetEventAsync(ulong id, RequestOptions options) + => await GetEventAsync(id, options).ConfigureAwait(false); + /// + async Task> IGuild.GetEventsAsync(RequestOptions options) + => await GetEventsAsync(options).ConfigureAwait(false); /// async Task> IGuild.GetBansAsync(RequestOptions options) => await GetBansAsync(options).ConfigureAwait(false); @@ -1240,15 +1789,27 @@ namespace Discord.WebSocket Task IGuild.GetTextChannelAsync(ulong id, CacheMode mode, RequestOptions options) => Task.FromResult(GetTextChannel(id)); /// + Task IGuild.GetThreadChannelAsync(ulong id, CacheMode mode, RequestOptions options) + => Task.FromResult(GetThreadChannel(id)); + /// + Task> IGuild.GetThreadChannelsAsync(CacheMode mode, RequestOptions options) + => Task.FromResult>(ThreadChannels); + /// Task> IGuild.GetVoiceChannelsAsync(CacheMode mode, RequestOptions options) => Task.FromResult>(VoiceChannels); /// - Task> IGuild.GetCategoriesAsync(CacheMode mode , RequestOptions options) + Task> IGuild.GetCategoriesAsync(CacheMode mode, RequestOptions options) => Task.FromResult>(CategoryChannels); /// Task IGuild.GetVoiceChannelAsync(ulong id, CacheMode mode, RequestOptions options) => Task.FromResult(GetVoiceChannel(id)); /// + Task IGuild.GetStageChannelAsync(ulong id, CacheMode mode, RequestOptions options) + => Task.FromResult(GetStageChannel(id)); + /// + Task> IGuild.GetStageChannelsAsync(CacheMode mode, RequestOptions options) + => Task.FromResult>(StageChannels); + /// Task IGuild.GetAFKChannelAsync(CacheMode mode, RequestOptions options) => Task.FromResult(AFKChannel); /// @@ -1273,6 +1834,9 @@ namespace Discord.WebSocket async Task IGuild.CreateVoiceChannelAsync(string name, Action func, RequestOptions options) => await CreateVoiceChannelAsync(name, func, options).ConfigureAwait(false); /// + async Task IGuild.CreateStageChannelAsync(string name, Action func, RequestOptions options) + => await CreateStageChannelAsync(name, func, options).ConfigureAwait(false); + /// async Task IGuild.CreateCategoryAsync(string name, Action func, RequestOptions options) => await CreateCategoryChannelAsync(name, func, options).ConfigureAwait(false); @@ -1350,6 +1914,37 @@ namespace Discord.WebSocket /// async Task> IGuild.GetWebhooksAsync(RequestOptions options) => await GetWebhooksAsync(options).ConfigureAwait(false); + /// + async Task> IGuild.GetApplicationCommandsAsync (RequestOptions options) + => await GetApplicationCommandsAsync(options).ConfigureAwait(false); + /// + async Task IGuild.CreateStickerAsync(string name, string description, IEnumerable tags, Image image, RequestOptions options) + => await CreateStickerAsync(name, description, tags, image, options); + /// + async Task IGuild.CreateStickerAsync(string name, string description, IEnumerable tags, Stream stream, string filename, RequestOptions options) + => await CreateStickerAsync(name, description, tags, stream, filename, options); + /// + async Task IGuild.CreateStickerAsync(string name, string description, IEnumerable tags, string path, RequestOptions options) + => await CreateStickerAsync(name, description, tags, path, options); + /// + async Task IGuild.GetStickerAsync(ulong id, CacheMode mode, RequestOptions options) + => await GetStickerAsync(id, mode, options); + /// + async Task> IGuild.GetStickersAsync(CacheMode mode, RequestOptions options) + => await GetStickersAsync(mode, options); + /// + Task IGuild.DeleteStickerAsync(ICustomSticker sticker, RequestOptions options) + => DeleteStickerAsync(_stickers[sticker.Id], options); + /// + async Task IGuild.GetApplicationCommandAsync(ulong id, CacheMode mode, RequestOptions options) + => await GetApplicationCommandAsync(id, mode, options); + /// + async Task IGuild.CreateApplicationCommandAsync(ApplicationCommandProperties properties, RequestOptions options) + => await CreateApplicationCommandAsync(properties, options); + /// + async Task> IGuild.BulkOverwriteApplicationCommandsAsync(ApplicationCommandProperties[] properties, + RequestOptions options) + => await BulkOverwriteApplicationCommandAsync(properties, options); void IDisposable.Dispose() { @@ -1357,5 +1952,6 @@ namespace Discord.WebSocket _audioLock?.Dispose(); _audioClient?.Dispose(); } + #endregion } } diff --git a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuildEvent.cs b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuildEvent.cs new file mode 100644 index 000000000..6974c0498 --- /dev/null +++ b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuildEvent.cs @@ -0,0 +1,216 @@ +using Discord.Rest; +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Model = Discord.API.GuildScheduledEvent; + +namespace Discord.WebSocket +{ + /// + /// Represents a WebSocket-based guild event. + /// + public class SocketGuildEvent : SocketEntity, IGuildScheduledEvent + { + /// + /// Gets the guild of the event. + /// + public SocketGuild Guild { get; private set; } + + /// + /// Gets the channel of the event. + /// + public SocketGuildChannel Channel { get; private set; } + + /// + /// Gets the user who created the event. + /// + public SocketGuildUser Creator { get; private set; } + + /// + public string Name { get; private set; } + + /// + public string Description { get; private set; } + + /// + public DateTimeOffset StartTime { get; private set; } + + /// + public DateTimeOffset? EndTime { get; private set; } + + /// + public GuildScheduledEventPrivacyLevel PrivacyLevel { get; private set; } + + /// + public GuildScheduledEventStatus Status { get; private set; } + + /// + public GuildScheduledEventType Type { get; private set; } + + /// + public ulong? EntityId { get; private set; } + + /// + public string Location { get; private set; } + + /// + public int? UserCount { get; private set; } + + internal SocketGuildEvent(DiscordSocketClient client, SocketGuild guild, ulong id) + : base(client, id) + { + Guild = guild; + } + + internal static SocketGuildEvent Create(DiscordSocketClient client, SocketGuild guild, Model model) + { + var entity = new SocketGuildEvent(client, guild, model.Id); + entity.Update(model); + return entity; + } + + internal void Update(Model model) + { + if (model.ChannelId.IsSpecified && model.ChannelId.Value != null) + { + Channel = Guild.GetChannel(model.ChannelId.Value.Value); + } + + if (model.CreatorId.IsSpecified) + { + var guildUser = Guild.GetUser(model.CreatorId.Value); + + if(guildUser != null) + { + if(model.Creator.IsSpecified) + guildUser.Update(Discord.State, model.Creator.Value); + + Creator = guildUser; + } + else if (guildUser == null && model.Creator.IsSpecified) + { + guildUser = SocketGuildUser.Create(Guild, Discord.State, model.Creator.Value); + Creator = guildUser; + } + } + + Name = model.Name; + Description = model.Description.GetValueOrDefault(); + + EntityId = model.EntityId; + Location = model.EntityMetadata?.Location.GetValueOrDefault(); + Type = model.EntityType; + + PrivacyLevel = model.PrivacyLevel; + EndTime = model.ScheduledEndTime; + StartTime = model.ScheduledStartTime; + Status = model.Status; + UserCount = model.UserCount.ToNullable(); + } + + /// + public Task DeleteAsync(RequestOptions options = null) + => GuildHelper.DeleteEventAsync(Discord, this, options); + + /// + public Task StartAsync(RequestOptions options = null) + => ModifyAsync(x => x.Status = GuildScheduledEventStatus.Active); + + /// + public Task EndAsync(RequestOptions options = null) + => ModifyAsync(x => x.Status = Status == GuildScheduledEventStatus.Scheduled + ? GuildScheduledEventStatus.Cancelled + : GuildScheduledEventStatus.Completed); + + /// + public async Task ModifyAsync(Action func, RequestOptions options = null) + { + var model = await GuildHelper.ModifyGuildEventAsync(Discord, func, this, options).ConfigureAwait(false); + Update(model); + } + + /// + /// Gets a collection of users that are interested in this event. + /// + /// The amount of users to fetch. + /// The options to be used when sending the request. + /// + /// A read-only collection of users. + /// + public Task> GetUsersAsync(int limit = 100, RequestOptions options = null) + => GuildHelper.GetEventUsersAsync(Discord, this, limit, options); + + /// + /// Gets a collection of N users interested in the event. + /// + /// + /// + /// The returned collection is an asynchronous enumerable object; one must call + /// to access the individual messages as a + /// collection. + /// + /// This method will attempt to fetch all users that are interested in the event. + /// The library will attempt to split up the requests according to and . + /// In other words, if there are 300 users, and the constant + /// is 100, the request will be split into 3 individual requests; thus returning 3 individual asynchronous + /// responses, hence the need of flattening. + /// + /// The options to be used when sending the request. + /// + /// Paged collection of users. + /// + public IAsyncEnumerable> GetUsersAsync(RequestOptions options = null) + => GuildHelper.GetEventUsersAsync(Discord, this, null, null, options); + + /// + /// Gets a collection of N users interested in the event. + /// + /// + /// + /// The returned collection is an asynchronous enumerable object; one must call + /// to access the individual users as a + /// collection. + /// + /// + /// Do not fetch too many users at once! This may cause unwanted preemptive rate limit or even actual + /// rate limit, causing your bot to freeze! + /// + /// This method will attempt to fetch the number of users specified under around + /// the user depending on the . The library will + /// attempt to split up the requests according to your and + /// . In other words, should the user request 500 users, + /// and the constant is 100, the request will + /// be split into 5 individual requests; thus returning 5 individual asynchronous responses, hence the need + /// of flattening. + /// + /// The ID of the starting user to get the users from. + /// The direction of the users to be gotten from. + /// The numbers of users to be gotten from. + /// The options to be used when sending the request. + /// + /// Paged collection of users. + /// + public IAsyncEnumerable> GetUsersAsync(ulong fromUserId, Direction dir, int limit = DiscordConfig.MaxGuildEventUsersPerBatch, RequestOptions options = null) + => GuildHelper.GetEventUsersAsync(Discord, this, fromUserId, dir, limit, options); + + #region IGuildScheduledEvent + + /// + IAsyncEnumerable> IGuildScheduledEvent.GetUsersAsync(RequestOptions options) + => GetUsersAsync(options); + /// + IAsyncEnumerable> IGuildScheduledEvent.GetUsersAsync(ulong fromUserId, Direction dir, int limit, RequestOptions options) + => GetUsersAsync(fromUserId, dir, limit, options); + /// + IGuild IGuildScheduledEvent.Guild => Guild; + /// + IUser IGuildScheduledEvent.Creator => Creator; + /// + ulong? IGuildScheduledEvent.ChannelId => Channel?.Id; + + #endregion + } +} diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/ContextMenuCommands/MessageCommands/SocketMessageCommand.cs b/src/Discord.Net.WebSocket/Entities/Interaction/ContextMenuCommands/MessageCommands/SocketMessageCommand.cs new file mode 100644 index 000000000..0aa061439 --- /dev/null +++ b/src/Discord.Net.WebSocket/Entities/Interaction/ContextMenuCommands/MessageCommands/SocketMessageCommand.cs @@ -0,0 +1,45 @@ +using DataModel = Discord.API.ApplicationCommandInteractionData; +using Model = Discord.API.Interaction; + +namespace Discord.WebSocket +{ + /// + /// Represents a Websocket-based slash command received over the gateway. + /// + public class SocketMessageCommand : SocketCommandBase, IMessageCommandInteraction, IDiscordInteraction + { + /// + /// The data associated with this interaction. + /// + public new SocketMessageCommandData Data { get; } + + internal SocketMessageCommand(DiscordSocketClient client, Model model, ISocketMessageChannel channel) + : base(client, model, channel) + { + var dataModel = model.Data.IsSpecified + ? (DataModel)model.Data.Value + : null; + + ulong? guildId = null; + if (Channel is SocketGuildChannel guildChannel) + guildId = guildChannel.Guild.Id; + + Data = SocketMessageCommandData.Create(client, dataModel, model.Id, guildId); + } + + internal new static SocketInteraction Create(DiscordSocketClient client, Model model, ISocketMessageChannel channel) + { + var entity = new SocketMessageCommand(client, model, channel); + entity.Update(model); + return entity; + } + + //IMessageCommandInteraction + /// + IMessageCommandInteractionData IMessageCommandInteraction.Data => Data; + + //IDiscordInteraction + /// + IDiscordInteractionData IDiscordInteraction.Data => Data; + } +} diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/ContextMenuCommands/MessageCommands/SocketMessageCommandData.cs b/src/Discord.Net.WebSocket/Entities/Interaction/ContextMenuCommands/MessageCommands/SocketMessageCommandData.cs new file mode 100644 index 000000000..71a30b44a --- /dev/null +++ b/src/Discord.Net.WebSocket/Entities/Interaction/ContextMenuCommands/MessageCommands/SocketMessageCommandData.cs @@ -0,0 +1,39 @@ +using System.Collections.Generic; +using System.Linq; +using Model = Discord.API.ApplicationCommandInteractionData; + +namespace Discord.WebSocket +{ + /// + /// Represents the data tied with the interaction. + /// + public class SocketMessageCommandData : SocketCommandBaseData, IMessageCommandInteractionData, IDiscordInteractionData + { + /// + /// Gets the message associated with this message command. + /// + public SocketMessage Message + => ResolvableData?.Messages.FirstOrDefault().Value; + + /// + /// + /// Note Not implemented for + /// + public override IReadOnlyCollection Options + => throw new System.NotImplementedException(); + + internal SocketMessageCommandData(DiscordSocketClient client, Model model, ulong? guildId) + : base(client, model, guildId) { } + + internal new static SocketMessageCommandData Create(DiscordSocketClient client, Model model, ulong id, ulong? guildId) + { + var entity = new SocketMessageCommandData(client, model, guildId); + entity.Update(model); + return entity; + } + + //IMessageCommandInteractionData + /// + IMessage IMessageCommandInteractionData.Message => Message; + } +} diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/ContextMenuCommands/UserCommands/SocketUserCommand.cs b/src/Discord.Net.WebSocket/Entities/Interaction/ContextMenuCommands/UserCommands/SocketUserCommand.cs new file mode 100644 index 000000000..40ee5b537 --- /dev/null +++ b/src/Discord.Net.WebSocket/Entities/Interaction/ContextMenuCommands/UserCommands/SocketUserCommand.cs @@ -0,0 +1,45 @@ +using DataModel = Discord.API.ApplicationCommandInteractionData; +using Model = Discord.API.Interaction; + +namespace Discord.WebSocket +{ + /// + /// Represents a Websocket-based slash command received over the gateway. + /// + public class SocketUserCommand : SocketCommandBase, IUserCommandInteraction, IDiscordInteraction + { + /// + /// The data associated with this interaction. + /// + public new SocketUserCommandData Data { get; } + + internal SocketUserCommand(DiscordSocketClient client, Model model, ISocketMessageChannel channel) + : base(client, model, channel) + { + var dataModel = model.Data.IsSpecified + ? (DataModel)model.Data.Value + : null; + + ulong? guildId = null; + if (Channel is SocketGuildChannel guildChannel) + guildId = guildChannel.Guild.Id; + + Data = SocketUserCommandData.Create(client, dataModel, model.Id, guildId); + } + + internal new static SocketInteraction Create(DiscordSocketClient client, Model model, ISocketMessageChannel channel) + { + var entity = new SocketUserCommand(client, model, channel); + entity.Update(model); + return entity; + } + + //IUserCommandInteraction + /// + IUserCommandInteractionData IUserCommandInteraction.Data => Data; + + //IDiscordInteraction + /// + IDiscordInteractionData IDiscordInteraction.Data => Data; + } +} diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/ContextMenuCommands/UserCommands/SocketUserCommandData.cs b/src/Discord.Net.WebSocket/Entities/Interaction/ContextMenuCommands/UserCommands/SocketUserCommandData.cs new file mode 100644 index 000000000..eaebbcb06 --- /dev/null +++ b/src/Discord.Net.WebSocket/Entities/Interaction/ContextMenuCommands/UserCommands/SocketUserCommandData.cs @@ -0,0 +1,39 @@ +using System.Collections.Generic; +using System.Linq; +using Model = Discord.API.ApplicationCommandInteractionData; + +namespace Discord.WebSocket +{ + /// + /// Represents the data tied with the interaction. + /// + public class SocketUserCommandData : SocketCommandBaseData, IUserCommandInteractionData, IDiscordInteractionData + { + /// + /// Gets the user who this command targets. + /// + public SocketUser Member + => (SocketUser)ResolvableData.GuildMembers.Values.FirstOrDefault() ?? ResolvableData.Users.Values.FirstOrDefault(); + + /// + /// + /// Note Not implemented for + /// + public override IReadOnlyCollection Options + => throw new System.NotImplementedException(); + + internal SocketUserCommandData(DiscordSocketClient client, Model model, ulong? guildId) + : base(client, model, guildId) { } + + internal new static SocketUserCommandData Create(DiscordSocketClient client, Model model, ulong id, ulong? guildId) + { + var entity = new SocketUserCommandData(client, model, guildId); + entity.Update(model); + return entity; + } + + //IUserCommandInteractionData + /// + IUser IUserCommandInteractionData.User => Member; + } +} diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponent.cs b/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponent.cs new file mode 100644 index 000000000..928a4302a --- /dev/null +++ b/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponent.cs @@ -0,0 +1,436 @@ +using System; +using System.Linq; +using System.Threading.Tasks; +using Model = Discord.API.Interaction; +using DataModel = Discord.API.MessageComponentInteractionData; +using Discord.Rest; +using System.Collections.Generic; +using Discord.Net.Rest; +using System.IO; + +namespace Discord.WebSocket +{ + /// + /// Represents a Websocket-based interaction type for Message Components. + /// + public class SocketMessageComponent : SocketInteraction, IComponentInteraction, IDiscordInteraction + { + /// + /// Gets the data received with this interaction, contains the button that was clicked. + /// + public new SocketMessageComponentData Data { get; } + + /// + /// Gets the message that contained the trigger for this interaction. + /// + public SocketUserMessage Message { get; private set; } + + private object _lock = new object(); + public override bool HasResponded { get; internal set; } = false; + + internal SocketMessageComponent(DiscordSocketClient client, Model model, ISocketMessageChannel channel) + : base(client, model.Id, channel) + { + var dataModel = model.Data.IsSpecified + ? (DataModel)model.Data.Value + : null; + + Data = new SocketMessageComponentData(dataModel); + } + + internal new static SocketMessageComponent Create(DiscordSocketClient client, Model model, ISocketMessageChannel channel) + { + var entity = new SocketMessageComponent(client, model, channel); + entity.Update(model); + return entity; + } + internal override void Update(Model model) + { + base.Update(model); + + if (model.Message.IsSpecified) + { + if (Message == null) + { + SocketUser author = null; + if (Channel is SocketGuildChannel channel) + { + if (model.Message.Value.WebhookId.IsSpecified) + author = SocketWebhookUser.Create(channel.Guild, Discord.State, model.Message.Value.Author.Value, model.Message.Value.WebhookId.Value); + else if (model.Message.Value.Author.IsSpecified) + author = channel.Guild.GetUser(model.Message.Value.Author.Value.Id); + } + else if (model.Message.Value.Author.IsSpecified) + author = (Channel as SocketChannel).GetUser(model.Message.Value.Author.Value.Id); + + Message = SocketUserMessage.Create(Discord, Discord.State, author, Channel, model.Message.Value); + } + else + { + Message.Update(Discord.State, model.Message.Value); + } + } + } + /// + public override async Task RespondAsync( + string text = null, + Embed[] embeds = null, + bool isTTS = false, + bool ephemeral = false, + AllowedMentions allowedMentions = null, + RequestOptions options = null, + MessageComponent component = null, + Embed embed = null) + { + if (!IsValidToken) + throw new InvalidOperationException("Interaction token is no longer valid"); + + if (!InteractionHelper.CanSendResponse(this)) + throw new TimeoutException($"Cannot respond to an interaction after {InteractionHelper.ResponseTimeLimit} seconds!"); + + embeds ??= Array.Empty(); + if (embed != null) + embeds = new[] { embed }.Concat(embeds).ToArray(); + + 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, 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 + if (allowedMentions != null && allowedMentions.AllowedTypes.HasValue) + { + if (allowedMentions.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Users) && + allowedMentions.UserIds != null && allowedMentions.UserIds.Count > 0) + { + throw new ArgumentException("The Users flag is mutually exclusive with the list of User Ids.", nameof(allowedMentions)); + } + + if (allowedMentions.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Roles) && + allowedMentions.RoleIds != null && allowedMentions.RoleIds.Count > 0) + { + throw new ArgumentException("The Roles flag is mutually exclusive with the list of Role Ids.", nameof(allowedMentions)); + } + } + + var response = new API.InteractionResponse + { + Type = InteractionResponseType.ChannelMessageWithSource, + Data = new API.InteractionCallbackData + { + Content = text ?? Optional.Unspecified, + AllowedMentions = allowedMentions?.ToModel(), + Embeds = embeds.Select(x => x.ToModel()).ToArray(), + TTS = isTTS, + Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified + } + }; + + if (ephemeral) + response.Data.Value.Flags = MessageFlags.Ephemeral; + + lock (_lock) + { + if (HasResponded) + { + throw new InvalidOperationException("Cannot respond, update, or defer twice to the same interaction"); + } + } + + await InteractionHelper.SendInteractionResponseAsync(Discord, response, Id, Token, options).ConfigureAwait(false); + + lock (_lock) + { + HasResponded = true; + } + } + + /// + /// Updates the message which this component resides in with the type + /// + /// A delegate containing the properties to modify the message with. + /// The request options for this request. + /// A task that represents the asynchronous operation of updating the message. + public async Task UpdateAsync(Action func, RequestOptions options = null) + { + var args = new MessageProperties(); + func(args); + + if (!IsValidToken) + throw new InvalidOperationException("Interaction token is no longer valid"); + + if (!InteractionHelper.CanSendResponse(this)) + throw new TimeoutException($"Cannot respond to an interaction after {InteractionHelper.ResponseTimeLimit} seconds!"); + + if (args.AllowedMentions.IsSpecified) + { + var allowedMentions = args.AllowedMentions.Value; + Preconditions.AtMost(allowedMentions?.RoleIds?.Count ?? 0, 100, nameof(allowedMentions), "A max of 100 role Ids are allowed."); + Preconditions.AtMost(allowedMentions?.UserIds?.Count ?? 0, 100, nameof(allowedMentions), "A max of 100 user Ids are allowed."); + } + + var embed = args.Embed; + var embeds = args.Embeds; + + bool hasText = args.Content.IsSpecified ? !string.IsNullOrEmpty(args.Content.Value) : !string.IsNullOrEmpty(Message.Content); + bool hasEmbeds = embed.IsSpecified && embed.Value != null || embeds.IsSpecified && embeds.Value?.Length > 0 || Message.Embeds.Any(); + + if (!hasText && !hasEmbeds) + Preconditions.NotNullOrEmpty(args.Content.IsSpecified ? args.Content.Value : string.Empty, nameof(args.Content)); + + var apiEmbeds = embed.IsSpecified || embeds.IsSpecified ? new List() : null; + + if (embed.IsSpecified && embed.Value != null) + { + apiEmbeds.Add(embed.Value.ToModel()); + } + + if (embeds.IsSpecified && embeds.Value != null) + { + apiEmbeds.AddRange(embeds.Value.Select(x => x.ToModel())); + } + + Preconditions.AtMost(apiEmbeds?.Count ?? 0, 10, nameof(args.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 + if (args.AllowedMentions.IsSpecified && args.AllowedMentions.Value != null && args.AllowedMentions.Value.AllowedTypes.HasValue) + { + var allowedMentions = args.AllowedMentions.Value; + if (allowedMentions.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Users) + && allowedMentions.UserIds != null && allowedMentions.UserIds.Count > 0) + { + throw new ArgumentException("The Users flag is mutually exclusive with the list of User Ids.", nameof(args.AllowedMentions)); + } + + if (allowedMentions.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Roles) + && allowedMentions.RoleIds != null && allowedMentions.RoleIds.Count > 0) + { + throw new ArgumentException("The Roles flag is mutually exclusive with the list of Role Ids.", nameof(args.AllowedMentions)); + } + } + + var response = new API.InteractionResponse + { + Type = InteractionResponseType.UpdateMessage, + Data = new API.InteractionCallbackData + { + Content = args.Content, + AllowedMentions = args.AllowedMentions.IsSpecified ? args.AllowedMentions.Value?.ToModel() : Optional.Unspecified, + Embeds = apiEmbeds?.ToArray() ?? Optional.Unspecified, + Components = args.Components.IsSpecified + ? args.Components.Value?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Array.Empty() + : Optional.Unspecified, + Flags = args.Flags.IsSpecified ? args.Flags.Value ?? Optional.Unspecified : Optional.Unspecified + } + }; + + lock (_lock) + { + if (HasResponded) + { + throw new InvalidOperationException("Cannot respond, update, or defer twice to the same interaction"); + } + } + + await InteractionHelper.SendInteractionResponseAsync(Discord, response, Id, Token, options).ConfigureAwait(false); + + lock (_lock) + { + HasResponded = true; + } + } + + /// + public override async Task FollowupAsync( + string text = null, + Embed[] embeds = null, + bool isTTS = false, + bool ephemeral = false, + AllowedMentions allowedMentions = null, + RequestOptions options = null, + MessageComponent component = null, + Embed embed = null) + { + if (!IsValidToken) + throw new InvalidOperationException("Interaction token is no longer valid"); + + embeds ??= Array.Empty(); + if (embed != null) + embeds = new[] { embed }.Concat(embeds).ToArray(); + + 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, 10, nameof(embeds), "A max of 10 embeds are allowed."); + + var args = new API.Rest.CreateWebhookMessageParams + { + Content = text, + AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, + IsTTS = isTTS, + Embeds = embeds.Select(x => x.ToModel()).ToArray(), + Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified + }; + + if (ephemeral) + args.Flags = MessageFlags.Ephemeral; + + return await InteractionHelper.SendFollowupAsync(Discord.Rest, args, Token, Channel, options).ConfigureAwait(false); + } + + /// + public override async Task FollowupWithFileAsync( + Stream fileStream, + string fileName, + string text = null, + Embed[] embeds = null, + bool isTTS = false, + bool ephemeral = false, + AllowedMentions allowedMentions = null, + RequestOptions options = null, + MessageComponent component = null, + Embed embed = null) + { + if (!IsValidToken) + throw new InvalidOperationException("Interaction token is no longer valid"); + + embeds ??= Array.Empty(); + if (embed != null) + embeds = new[] { embed }.Concat(embeds).ToArray(); + + 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, 10, nameof(embeds), "A max of 10 embeds are allowed."); + Preconditions.NotNull(fileStream, nameof(fileStream), "File Stream must have data"); + Preconditions.NotNullOrWhitespace(fileName, nameof(fileName), "File Name must not be empty or null"); + + var args = new API.Rest.CreateWebhookMessageParams + { + Content = text, + AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, + IsTTS = isTTS, + Embeds = embeds.Select(x => x.ToModel()).ToArray(), + Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified, + File = fileStream is not null ? new MultipartFile(fileStream, fileName) : Optional.Unspecified + }; + + if (ephemeral) + args.Flags = MessageFlags.Ephemeral; + + return await InteractionHelper.SendFollowupAsync(Discord.Rest, args, Token, Channel, options).ConfigureAwait(false); + } + + /// + public override async Task FollowupWithFileAsync( + string filePath, + string text = null, + string fileName = null, + Embed[] embeds = null, + bool isTTS = false, + bool ephemeral = false, + AllowedMentions allowedMentions = null, + RequestOptions options = null, + MessageComponent component = null, + Embed embed = null) + { + if (!IsValidToken) + throw new InvalidOperationException("Interaction token is no longer valid"); + + embeds ??= Array.Empty(); + if (embed != null) + embeds = new[] { embed }.Concat(embeds).ToArray(); + + 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, 10, nameof(embeds), "A max of 10 embeds are allowed."); + Preconditions.NotNullOrWhitespace(filePath, nameof(filePath), "Path must exist"); + + var args = new API.Rest.CreateWebhookMessageParams + { + Content = text, + AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, + IsTTS = isTTS, + Embeds = embeds.Select(x => x.ToModel()).ToArray(), + Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified, + File = !string.IsNullOrEmpty(filePath) ? new MultipartFile(new MemoryStream(File.ReadAllBytes(filePath), false), fileName) : Optional.Unspecified + }; + + if (ephemeral) + args.Flags = MessageFlags.Ephemeral; + + return await InteractionHelper.SendFollowupAsync(Discord.Rest, args, Token, Channel, options).ConfigureAwait(false); + } + + /// + /// Defers an interaction and responds with type 5 () + /// + /// to send this message ephemerally, otherwise . + /// The request options for this request. + /// + /// A task that represents the asynchronous operation of acknowledging the interaction. + /// + public async Task DeferLoadingAsync(bool ephemeral = false, RequestOptions options = null) + { + if (!InteractionHelper.CanSendResponse(this)) + throw new TimeoutException($"Cannot defer an interaction after {InteractionHelper.ResponseTimeLimit} seconds of no response/acknowledgement"); + + var response = new API.InteractionResponse + { + Type = InteractionResponseType.DeferredChannelMessageWithSource, + Data = ephemeral ? new API.InteractionCallbackData { Flags = MessageFlags.Ephemeral } : Optional.Unspecified + }; + + lock (_lock) + { + if (HasResponded) + { + throw new InvalidOperationException("Cannot respond or defer twice to the same interaction"); + } + } + + await Discord.Rest.ApiClient.CreateInteractionResponseAsync(response, Id, Token, options).ConfigureAwait(false); + + lock (_lock) + { + HasResponded = true; + } + } + + /// + public override async Task DeferAsync(bool ephemeral = false, RequestOptions options = null) + { + if (!InteractionHelper.CanSendResponse(this)) + throw new TimeoutException($"Cannot defer an interaction after {InteractionHelper.ResponseTimeLimit} seconds of no response/acknowledgement"); + + var response = new API.InteractionResponse + { + Type = InteractionResponseType.DeferredUpdateMessage, + Data = ephemeral ? new API.InteractionCallbackData { Flags = MessageFlags.Ephemeral } : Optional.Unspecified + }; + + lock (_lock) + { + if (HasResponded) + { + throw new InvalidOperationException("Cannot respond or defer twice to the same interaction"); + } + } + + await Discord.Rest.ApiClient.CreateInteractionResponseAsync(response, Id, Token, options).ConfigureAwait(false); + + lock (_lock) + { + HasResponded = true; + } + } + + //IComponentInteraction + /// + IComponentInteractionData IComponentInteraction.Data => Data; + + /// + IUserMessage IComponentInteraction.Message => Message; + + //IDiscordInteraction + /// + IDiscordInteractionData IDiscordInteraction.Data => Data; + } +} diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponentData.cs b/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponentData.cs new file mode 100644 index 000000000..71e1d0395 --- /dev/null +++ b/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponentData.cs @@ -0,0 +1,33 @@ +using System.Collections.Generic; +using Model = Discord.API.MessageComponentInteractionData; + +namespace Discord.WebSocket +{ + /// + /// Represents the data sent with a . + /// + public class SocketMessageComponentData : IComponentInteractionData + { + /// + /// Gets the components Custom Id that was clicked. + /// + public string CustomId { get; } + + /// + /// Gets the type of the component clicked. + /// + public ComponentType Type { get; } + + /// + /// Gets the value(s) of a interaction response. + /// + public IReadOnlyCollection Values { get; } + + internal SocketMessageComponentData(Model model) + { + CustomId = model.CustomId; + Type = model.ComponentType; + Values = model.Values.GetValueOrDefault(); + } + } +} diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketAutocompleteInteraction.cs b/src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketAutocompleteInteraction.cs new file mode 100644 index 000000000..5637cb6f0 --- /dev/null +++ b/src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketAutocompleteInteraction.cs @@ -0,0 +1,126 @@ +using Discord.Rest; +using System; +using System.Collections.Generic; +using System.IO; +using System.Threading.Tasks; +using Model = Discord.API.Interaction; +using DataModel = Discord.API.AutocompleteInteractionData; + +namespace Discord.WebSocket +{ + /// + /// Represents a received over the gateway. + /// + public class SocketAutocompleteInteraction : SocketInteraction, IAutocompleteInteraction, IDiscordInteraction + { + /// + /// The autocomplete data of this interaction. + /// + public new SocketAutocompleteInteractionData Data { get; } + + public override bool HasResponded { get; internal set; } + private object _lock = new object(); + + internal SocketAutocompleteInteraction(DiscordSocketClient client, Model model, ISocketMessageChannel channel) + : base(client, model.Id, channel) + { + var dataModel = model.Data.IsSpecified + ? (DataModel)model.Data.Value + : null; + + if (dataModel != null) + Data = new SocketAutocompleteInteractionData(dataModel); + } + + internal new static SocketAutocompleteInteraction Create(DiscordSocketClient client, Model model, ISocketMessageChannel channel) + { + var entity = new SocketAutocompleteInteraction(client, model, channel); + entity.Update(model); + return entity; + } + + /// + /// Responds to this interaction with a set of choices. + /// + /// + /// The set of choices for the user to pick from. + /// + /// A max of 20 choices are allowed. Passing for this argument will show the executing user that + /// there is no choices for their autocompleted input. + /// + /// + /// The request options for this response. + /// + /// A task that represents the asynchronous operation of responding to this interaction. + /// + public async Task RespondAsync(IEnumerable result, RequestOptions options = null) + { + if (!InteractionHelper.CanSendResponse(this)) + throw new TimeoutException($"Cannot respond to an interaction after {InteractionHelper.ResponseTimeLimit} seconds!"); + + lock (_lock) + { + if (HasResponded) + { + throw new InvalidOperationException("Cannot respond twice to the same interaction"); + } + } + + await InteractionHelper.SendAutocompleteResultAsync(Discord, result, Id, Token, options).ConfigureAwait(false); + lock (_lock) + { + HasResponded = true; + } + } + + /// + /// Responds to this interaction with a set of choices. + /// + /// The request options for this response. + /// + /// The set of choices for the user to pick from. + /// + /// A max of 20 choices are allowed. Passing for this argument will show the executing user that + /// there is no choices for their autocompleted input. + /// + /// + /// + /// A task that represents the asynchronous operation of responding to this interaction. + /// + public Task RespondAsync(RequestOptions options = null, params AutocompleteResult[] result) + => RespondAsync(result, options); + + /// + [Obsolete("Autocomplete interactions cannot be deferred!", true)] + public override Task DeferAsync(bool ephemeral = false, RequestOptions options = null) + => throw new NotSupportedException("Autocomplete interactions cannot be deferred!"); + + /// + [Obsolete("Autocomplete interactions cannot have followups!", true)] + public override Task FollowupAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) + => throw new NotSupportedException("Autocomplete interactions cannot be deferred!"); + + /// + [Obsolete("Autocomplete interactions cannot have followups!", true)] + public override Task FollowupWithFileAsync(Stream fileStream, string fileName, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) + => throw new NotSupportedException("Autocomplete interactions cannot be deferred!"); + + /// + [Obsolete("Autocomplete interactions cannot have followups!", true)] + public override Task FollowupWithFileAsync(string filePath, string text = null, string fileName = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) + => throw new NotSupportedException("Autocomplete interactions cannot be deferred!"); + + /// + [Obsolete("Autocomplete interactions cannot have normal responses!", true)] + public override Task RespondAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) + => throw new NotSupportedException("Autocomplete interactions cannot be deferred!"); + + //IAutocompleteInteraction + /// + IAutocompleteInteractionData IAutocompleteInteraction.Data => Data; + + //IDiscordInteraction + /// + IDiscordInteractionData IDiscordInteraction.Data => Data; + } +} diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketAutocompleteInteractionData.cs b/src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketAutocompleteInteractionData.cs new file mode 100644 index 000000000..1d9803c02 --- /dev/null +++ b/src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketAutocompleteInteractionData.cs @@ -0,0 +1,73 @@ +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using DataModel = Discord.API.AutocompleteInteractionData; + +namespace Discord.WebSocket +{ + /// + /// Represents data for a slash commands autocomplete interaction. + /// + public class SocketAutocompleteInteractionData : IAutocompleteInteractionData, IDiscordInteractionData + { + /// + /// Gets the name of the invoked command. + /// + public string CommandName { get; } + + /// + /// Gets the id of the invoked command. + /// + public ulong CommandId { get; } + + /// + /// Gets the type of the invoked command. + /// + public ApplicationCommandType Type { get; } + + /// + /// Gets the version of the invoked command. + /// + public ulong Version { get; } + + /// + /// Gets the current autocomplete option that is actively being filled out. + /// + public AutocompleteOption Current { get; } + + /// + /// Gets a collection of all the other options the executing users has filled out. + /// + public IReadOnlyCollection Options { get; } + + internal SocketAutocompleteInteractionData(DataModel model) + { + var options = model.Options.SelectMany(GetOptions); + + Current = options.FirstOrDefault(x => x.Focused); + Options = options.ToImmutableArray(); + + if (Options.Count == 1 && Current == null) + Current = Options.FirstOrDefault(); + + CommandName = model.Name; + CommandId = model.Id; + Type = model.Type; + Version = model.Version; + } + + private List GetOptions(API.AutocompleteInteractionDataOption model) + { + var options = new List(); + + options.Add(new AutocompleteOption(model.Type, model.Name, model.Value.GetValueOrDefault(null), model.Focused.GetValueOrDefault(false))); + + if (model.Options.IsSpecified) + { + options.AddRange(model.Options.Value.SelectMany(GetOptions)); + } + + return options; + } + } +} diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketSlashCommand.cs b/src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketSlashCommand.cs new file mode 100644 index 000000000..5343bb225 --- /dev/null +++ b/src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketSlashCommand.cs @@ -0,0 +1,45 @@ +using DataModel = Discord.API.ApplicationCommandInteractionData; +using Model = Discord.API.Interaction; + +namespace Discord.WebSocket +{ + /// + /// Represents a Websocket-based slash command received over the gateway. + /// + public class SocketSlashCommand : SocketCommandBase, ISlashCommandInteraction, IDiscordInteraction + { + /// + /// The data associated with this interaction. + /// + public new SocketSlashCommandData Data { get; } + + internal SocketSlashCommand(DiscordSocketClient client, Model model, ISocketMessageChannel channel) + : base(client, model, channel) + { + var dataModel = model.Data.IsSpecified + ? (DataModel)model.Data.Value + : null; + + ulong? guildId = null; + if (Channel is SocketGuildChannel guildChannel) + guildId = guildChannel.Guild.Id; + + Data = SocketSlashCommandData.Create(client, dataModel, guildId); + } + + internal new static SocketInteraction Create(DiscordSocketClient client, Model model, ISocketMessageChannel channel) + { + var entity = new SocketSlashCommand(client, model, channel); + entity.Update(model); + return entity; + } + + //ISlashCommandInteraction + /// + IApplicationCommandInteractionData ISlashCommandInteraction.Data => Data; + + //IDiscordInteraction + /// + IDiscordInteractionData IDiscordInteraction.Data => Data; + } +} diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketSlashCommandData.cs b/src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketSlashCommandData.cs new file mode 100644 index 000000000..c385ce825 --- /dev/null +++ b/src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketSlashCommandData.cs @@ -0,0 +1,30 @@ +using System.Collections.Immutable; +using System.Linq; +using Model = Discord.API.ApplicationCommandInteractionData; + +namespace Discord.WebSocket +{ + /// + /// Represents the data tied with the interaction. + /// + public class SocketSlashCommandData : SocketCommandBaseData, IDiscordInteractionData + { + internal SocketSlashCommandData(DiscordSocketClient client, Model model, ulong? guildId) + : base(client, model, guildId) { } + + internal static SocketSlashCommandData Create(DiscordSocketClient client, Model model, ulong? guildId) + { + var entity = new SocketSlashCommandData(client, model, guildId); + entity.Update(model); + return entity; + } + internal override void Update(Model model) + { + base.Update(model); + + Options = model.Options.IsSpecified + ? model.Options.Value.Select(x => new SocketSlashCommandDataOption(this, x)).ToImmutableArray() + : ImmutableArray.Create(); + } + } +} diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketSlashCommandDataOption.cs b/src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketSlashCommandDataOption.cs new file mode 100644 index 000000000..265eda75b --- /dev/null +++ b/src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketSlashCommandDataOption.cs @@ -0,0 +1,135 @@ +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using Model = Discord.API.ApplicationCommandInteractionDataOption; + +namespace Discord.WebSocket +{ + /// + /// Represents a Websocket-based received by the gateway. + /// + public class SocketSlashCommandDataOption : IApplicationCommandInteractionDataOption + { + #region SocketSlashCommandDataOption + /// + public string Name { get; private set; } + + /// + public object Value { get; private set; } + + /// + public ApplicationCommandOptionType Type { get; private set; } + + /// + /// The sub command options received for this sub command group. + /// + public IReadOnlyCollection Options { get; private set; } + + internal SocketSlashCommandDataOption() { } + internal SocketSlashCommandDataOption(SocketSlashCommandData data, Model model) + { + Name = model.Name; + Type = model.Type; + + if (model.Value.IsSpecified) + { + switch (Type) + { + case ApplicationCommandOptionType.User: + case ApplicationCommandOptionType.Role: + case ApplicationCommandOptionType.Channel: + case ApplicationCommandOptionType.Mentionable: + if (ulong.TryParse($"{model.Value.Value}", out var valueId)) + { + switch (Type) + { + case ApplicationCommandOptionType.User: + { + var guildUser = data.ResolvableData.GuildMembers.FirstOrDefault(x => x.Key == valueId).Value; + + if (guildUser != null) + Value = guildUser; + else + Value = data.ResolvableData.Users.FirstOrDefault(x => x.Key == valueId).Value; + } + break; + case ApplicationCommandOptionType.Channel: + Value = data.ResolvableData.Channels.FirstOrDefault(x => x.Key == valueId).Value; + break; + case ApplicationCommandOptionType.Role: + Value = data.ResolvableData.Roles.FirstOrDefault(x => x.Key == valueId).Value; + break; + case ApplicationCommandOptionType.Mentionable: + { + if (data.ResolvableData.GuildMembers.Any(x => x.Key == valueId) || data.ResolvableData.Users.Any(x => x.Key == valueId)) + { + var guildUser = data.ResolvableData.GuildMembers.FirstOrDefault(x => x.Key == valueId).Value; + + if (guildUser != null) + Value = guildUser; + else + Value = data.ResolvableData.Users.FirstOrDefault(x => x.Key == valueId).Value; + } + else if (data.ResolvableData.Roles.Any(x => x.Key == valueId)) + { + Value = data.ResolvableData.Roles.FirstOrDefault(x => x.Key == valueId).Value; + } + } + break; + default: + Value = model.Value.Value; + break; + } + } + break; + case ApplicationCommandOptionType.String: + Value = model.Value.ToString(); + break; + case ApplicationCommandOptionType.Integer: + { + if (model.Value.Value is long val) + Value = val; + else if (long.TryParse(model.Value.Value.ToString(), out long res)) + Value = res; + } + break; + case ApplicationCommandOptionType.Boolean: + { + if (model.Value.Value is bool val) + Value = val; + else if (bool.TryParse(model.Value.Value.ToString(), out bool res)) + Value = res; + } + break; + case ApplicationCommandOptionType.Number: + { + if (model.Value.Value is int val) + Value = val; + else if (double.TryParse(model.Value.Value.ToString(), out double res)) + Value = res; + } + break; + } + } + + Options = model.Options.IsSpecified + ? model.Options.Value.Select(x => new SocketSlashCommandDataOption(data, x)).ToImmutableArray() + : ImmutableArray.Create(); + } + #endregion + + #region Converters + public static explicit operator bool(SocketSlashCommandDataOption option) + => (bool)option.Value; + public static explicit operator int(SocketSlashCommandDataOption option) + => (int)option.Value; + public static explicit operator string(SocketSlashCommandDataOption option) + => option.Value.ToString(); + #endregion + + #region IApplicationCommandInteractionDataOption + IReadOnlyCollection IApplicationCommandInteractionDataOption.Options + => Options; + #endregion + } +} diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketApplicationCommand.cs b/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketApplicationCommand.cs new file mode 100644 index 000000000..d986a93f3 --- /dev/null +++ b/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketApplicationCommand.cs @@ -0,0 +1,116 @@ +using Discord.Rest; +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using System.Threading.Tasks; +using GatewayModel = Discord.API.Gateway.ApplicationCommandCreatedUpdatedEvent; +using Model = Discord.API.ApplicationCommand; + +namespace Discord.WebSocket +{ + /// + /// Represents a Websocket-based . + /// + public class SocketApplicationCommand : SocketEntity, IApplicationCommand + { + #region SocketApplicationCommand + /// + /// if this command is a global command, otherwise . + /// + public bool IsGlobalCommand + => Guild == null; + + /// + public ulong ApplicationId { get; private set; } + + /// + public string Name { get; private set; } + + /// + public ApplicationCommandType Type { get; private set; } + + /// + public string Description { get; private set; } + + /// + public bool IsDefaultPermission { get; private set; } + + /// + /// A collection of 's for this command. + /// + /// + /// If the is not a slash command, this field will be an empty collection. + /// + public IReadOnlyCollection Options { get; private set; } + + /// + public DateTimeOffset CreatedAt + => SnowflakeUtils.FromSnowflake(Id); + + /// + /// Returns the guild this command resides in, if this command is a global command then it will return + /// + public SocketGuild Guild + => GuildId.HasValue ? Discord.GetGuild(GuildId.Value) : null; + + private ulong? GuildId { get; set; } + + internal SocketApplicationCommand(DiscordSocketClient client, ulong id, ulong? guildId) + : base(client, id) + { + GuildId = guildId; + } + internal static SocketApplicationCommand Create(DiscordSocketClient client, GatewayModel model) + { + var entity = new SocketApplicationCommand(client, model.Id, model.GuildId.ToNullable()); + entity.Update(model); + return entity; + } + + internal static SocketApplicationCommand Create(DiscordSocketClient client, Model model, ulong? guildId = null) + { + var entity = new SocketApplicationCommand(client, model.Id, guildId); + entity.Update(model); + return entity; + } + + internal void Update(Model model) + { + ApplicationId = model.ApplicationId; + Description = model.Description; + Name = model.Name; + IsDefaultPermission = model.DefaultPermissions.GetValueOrDefault(true); + Type = model.Type; + + Options = model.Options.IsSpecified + ? model.Options.Value.Select(SocketApplicationCommandOption.Create).ToImmutableArray() + : ImmutableArray.Create(); + } + + /// + public Task DeleteAsync(RequestOptions options = null) + => InteractionHelper.DeleteUnknownApplicationCommandAsync(Discord, GuildId, this, options); + + /// + public Task ModifyAsync(Action func, RequestOptions options = null) + { + return ModifyAsync(func, options); + } + + /// + public async Task ModifyAsync(Action func, RequestOptions options = null) where TArg : ApplicationCommandProperties + { + var command = IsGlobalCommand + ? await InteractionHelper.ModifyGlobalCommandAsync(Discord, this, func, options).ConfigureAwait(false) + : await InteractionHelper.ModifyGuildCommandAsync(Discord, this, GuildId.Value, func, options); + + Update(command); + } + #endregion + + #region IApplicationCommand + IReadOnlyCollection IApplicationCommand.Options => Options; + #endregion + } +} diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketApplicationCommandChoice.cs b/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketApplicationCommandChoice.cs new file mode 100644 index 000000000..e70efa27b --- /dev/null +++ b/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketApplicationCommandChoice.cs @@ -0,0 +1,29 @@ +using Model = Discord.API.ApplicationCommandOptionChoice; + +namespace Discord.WebSocket +{ + /// + /// Represents a choice for a . + /// + public class SocketApplicationCommandChoice : IApplicationCommandOptionChoice + { + /// + public string Name { get; private set; } + + /// + public object Value { get; private set; } + + internal SocketApplicationCommandChoice() { } + internal static SocketApplicationCommandChoice Create(Model model) + { + var entity = new SocketApplicationCommandChoice(); + entity.Update(model); + return entity; + } + internal void Update(Model model) + { + Name = model.Name; + Value = model.Value; + } + } +} diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketApplicationCommandOption.cs b/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketApplicationCommandOption.cs new file mode 100644 index 000000000..a19068d48 --- /dev/null +++ b/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketApplicationCommandOption.cs @@ -0,0 +1,87 @@ +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using Model = Discord.API.ApplicationCommandOption; + +namespace Discord.WebSocket +{ + /// + /// Represents an option for a . + /// + public class SocketApplicationCommandOption : IApplicationCommandOption + { + /// + public string Name { get; private set; } + + /// + public ApplicationCommandOptionType Type { get; private set; } + + /// + public string Description { get; private set; } + + /// + public bool? IsDefault { get; private set; } + + /// + public bool? IsRequired { get; private set; } + + /// + public double? MinValue { get; private set; } + + /// + public double? MaxValue { get; private set; } + + /// + /// Choices for string and int types for the user to pick from. + /// + public IReadOnlyCollection Choices { get; private set; } + + /// + /// If the option is a subcommand or subcommand group type, this nested options will be the parameters. + /// + public IReadOnlyCollection Options { get; private set; } + + /// + /// The allowed channel types for this option. + /// + public IReadOnlyCollection ChannelTypes { get; private set; } + + internal SocketApplicationCommandOption() { } + internal static SocketApplicationCommandOption Create(Model model) + { + var entity = new SocketApplicationCommandOption(); + entity.Update(model); + return entity; + } + + internal void Update(Model model) + { + Name = model.Name; + Type = model.Type; + Description = model.Description; + + IsDefault = model.Default.ToNullable(); + + IsRequired = model.Required.ToNullable(); + + MinValue = model.MinValue.ToNullable(); + + MaxValue = model.MaxValue.ToNullable(); + + Choices = model.Choices.IsSpecified + ? model.Choices.Value.Select(SocketApplicationCommandChoice.Create).ToImmutableArray() + : ImmutableArray.Create(); + + Options = model.Options.IsSpecified + ? model.Options.Value.Select(Create).ToImmutableArray() + : ImmutableArray.Create(); + + ChannelTypes = model.ChannelTypes.IsSpecified + ? model.ChannelTypes.Value.ToImmutableArray() + : ImmutableArray.Create(); + } + + IReadOnlyCollection IApplicationCommandOption.Choices => Choices; + IReadOnlyCollection IApplicationCommandOption.Options => Options; + } +} diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketCommandBase.cs b/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketCommandBase.cs new file mode 100644 index 000000000..92303d488 --- /dev/null +++ b/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketCommandBase.cs @@ -0,0 +1,300 @@ +using Discord.Net.Rest; +using Discord.Rest; +using System; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using DataModel = Discord.API.ApplicationCommandInteractionData; +using Model = Discord.API.Interaction; + +namespace Discord.WebSocket +{ + /// + /// Base class for User, Message, and Slash command interactions. + /// + public class SocketCommandBase : SocketInteraction + { + /// + /// Gets the name of the invoked command. + /// + public string CommandName + => Data.Name; + + /// + /// Gets the id of the invoked command. + /// + public ulong CommandId + => Data.Id; + + /// + /// The data associated with this interaction. + /// + internal new SocketCommandBaseData Data { get; } + + public override bool HasResponded { get; internal set; } + + private object _lock = new object(); + + internal SocketCommandBase(DiscordSocketClient client, Model model, ISocketMessageChannel channel) + : base(client, model.Id, channel) + { + var dataModel = model.Data.IsSpecified + ? (DataModel)model.Data.Value + : null; + + ulong? guildId = null; + if (Channel is SocketGuildChannel guildChannel) + guildId = guildChannel.Guild.Id; + + Data = SocketCommandBaseData.Create(client, dataModel, model.Id, guildId); + } + + internal new static SocketInteraction Create(DiscordSocketClient client, Model model, ISocketMessageChannel channel) + { + var entity = new SocketCommandBase(client, model, channel); + entity.Update(model); + return entity; + } + + internal override void Update(Model model) + { + var data = model.Data.IsSpecified + ? (DataModel)model.Data.Value + : null; + + Data.Update(data); + + base.Update(model); + } + + /// + public override async Task RespondAsync( + string text = null, + Embed[] embeds = null, + bool isTTS = false, + bool ephemeral = false, + AllowedMentions allowedMentions = null, + RequestOptions options = null, + MessageComponent component = null, + Embed embed = null) + { + if (!IsValidToken) + throw new InvalidOperationException("Interaction token is no longer valid"); + + if (!InteractionHelper.CanSendResponse(this)) + throw new TimeoutException($"Cannot respond to an interaction after {InteractionHelper.ResponseTimeLimit} seconds!"); + + embeds ??= Array.Empty(); + if (embed != null) + embeds = new[] { embed }.Concat(embeds).ToArray(); + + 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, 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 + if (allowedMentions != null && allowedMentions.AllowedTypes.HasValue) + { + if (allowedMentions.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Users) && + allowedMentions.UserIds != null && allowedMentions.UserIds.Count > 0) + { + throw new ArgumentException("The Users flag is mutually exclusive with the list of User Ids.", nameof(allowedMentions)); + } + + if (allowedMentions.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Roles) && + allowedMentions.RoleIds != null && allowedMentions.RoleIds.Count > 0) + { + throw new ArgumentException("The Roles flag is mutually exclusive with the list of Role Ids.", nameof(allowedMentions)); + } + } + + var response = new API.InteractionResponse + { + Type = InteractionResponseType.ChannelMessageWithSource, + Data = new API.InteractionCallbackData + { + Content = text, + AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, + Embeds = embeds.Select(x => x.ToModel()).ToArray(), + TTS = isTTS, + Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified, + Flags = ephemeral ? MessageFlags.Ephemeral : Optional.Unspecified + } + }; + + lock (_lock) + { + if (HasResponded) + { + throw new InvalidOperationException("Cannot respond twice to the same interaction"); + } + } + + await InteractionHelper.SendInteractionResponseAsync(Discord, response, Id, Token, options).ConfigureAwait(false); + + lock (_lock) + { + HasResponded = true; + } + } + + /// + public override async Task FollowupAsync( + string text = null, + Embed[] embeds = null, + bool isTTS = false, + bool ephemeral = false, + AllowedMentions allowedMentions = null, + RequestOptions options = null, + MessageComponent component = null, + Embed embed = null) + { + if (!IsValidToken) + throw new InvalidOperationException("Interaction token is no longer valid"); + + embeds ??= Array.Empty(); + if (embed != null) + embeds = new[] { embed }.Concat(embeds).ToArray(); + + 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, 10, nameof(embeds), "A max of 10 embeds are allowed."); + + var args = new API.Rest.CreateWebhookMessageParams + { + Content = text, + AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, + IsTTS = isTTS, + Embeds = embeds.Select(x => x.ToModel()).ToArray(), + Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified + }; + + if (ephemeral) + args.Flags = MessageFlags.Ephemeral; + + return await InteractionHelper.SendFollowupAsync(Discord.Rest, args, Token, Channel, options); + } + + /// + public override async Task FollowupWithFileAsync( + Stream fileStream, + string fileName, + string text = null, + Embed[] embeds = null, + bool isTTS = false, + bool ephemeral = false, + AllowedMentions allowedMentions = null, + RequestOptions options = null, + MessageComponent component = null, + Embed embed = null) + { + if (!IsValidToken) + throw new InvalidOperationException("Interaction token is no longer valid"); + + embeds ??= Array.Empty(); + if (embed != null) + embeds = new[] { embed }.Concat(embeds).ToArray(); + + 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, 10, nameof(embeds), "A max of 10 embeds are allowed."); + Preconditions.NotNull(fileStream, nameof(fileStream), "File Stream must have data"); + Preconditions.NotNullOrEmpty(fileName, nameof(fileName), "File Name must not be empty or null"); + + var args = new API.Rest.CreateWebhookMessageParams + { + Content = text, + AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, + IsTTS = isTTS, + Embeds = embeds.Select(x => x.ToModel()).ToArray(), + Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified, + File = fileStream is not null ? new MultipartFile(fileStream, fileName) : Optional.Unspecified + }; + + if (ephemeral) + args.Flags = MessageFlags.Ephemeral; + + return await InteractionHelper.SendFollowupAsync(Discord.Rest, args, Token, Channel, options); + } + + /// + public override async Task FollowupWithFileAsync( + string filePath, + string text = null, + string fileName = null, + Embed[] embeds = null, + bool isTTS = false, + bool ephemeral = false, + AllowedMentions allowedMentions = null, + RequestOptions options = null, + MessageComponent component = null, + Embed embed = null) + { + if (!IsValidToken) + throw new InvalidOperationException("Interaction token is no longer valid"); + + embeds ??= Array.Empty(); + if (embed != null) + embeds = new[] { embed }.Concat(embeds).ToArray(); + + 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, 10, nameof(embeds), "A max of 10 embeds are allowed."); + Preconditions.NotNullOrEmpty(filePath, nameof(filePath), "Path must exist"); + + fileName ??= Path.GetFileName(filePath); + Preconditions.NotNullOrEmpty(fileName, nameof(fileName), "File Name must not be empty or null"); + + var args = new API.Rest.CreateWebhookMessageParams + { + Content = text, + AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, + IsTTS = isTTS, + Embeds = embeds.Select(x => x.ToModel()).ToArray(), + Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified, + File = !string.IsNullOrEmpty(filePath) ? new MultipartFile(new MemoryStream(File.ReadAllBytes(filePath), false), fileName) : Optional.Unspecified + }; + + if (ephemeral) + args.Flags = MessageFlags.Ephemeral; + + return await InteractionHelper.SendFollowupAsync(Discord.Rest, args, Token, Channel, options); + } + + /// + /// Acknowledges this interaction with the . + /// + /// + /// A task that represents the asynchronous operation of acknowledging the interaction. + /// + public override async Task DeferAsync(bool ephemeral = false, RequestOptions options = null) + { + if (!InteractionHelper.CanSendResponse(this)) + throw new TimeoutException($"Cannot defer an interaction after {InteractionHelper.ResponseTimeLimit} seconds!"); + + var response = new API.InteractionResponse + { + Type = InteractionResponseType.DeferredChannelMessageWithSource, + Data = new API.InteractionCallbackData + { + Flags = ephemeral ? MessageFlags.Ephemeral : Optional.Unspecified + } + }; + + lock (_lock) + { + if (HasResponded) + { + throw new InvalidOperationException("Cannot respond or defer twice to the same interaction"); + } + } + + await Discord.Rest.ApiClient.CreateInteractionResponseAsync(response, Id, Token, options).ConfigureAwait(false); + + lock (_lock) + { + HasResponded = true; + } + } + } +} diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketCommandBaseData.cs b/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketCommandBaseData.cs new file mode 100644 index 000000000..cb2f01f5f --- /dev/null +++ b/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketCommandBaseData.cs @@ -0,0 +1,58 @@ +using System.Collections.Generic; +using Model = Discord.API.ApplicationCommandInteractionData; + +namespace Discord.WebSocket +{ + /// + /// Represents the base data tied with the interaction. + /// + public class SocketCommandBaseData : SocketEntity, IApplicationCommandInteractionData where TOption : IApplicationCommandInteractionDataOption + { + /// + public string Name { get; private set; } + + /// + /// The received with this interaction. + /// + public virtual IReadOnlyCollection Options { get; internal set; } + + internal readonly SocketResolvableData ResolvableData; + + private ApplicationCommandType Type { get; set; } + + internal SocketCommandBaseData(DiscordSocketClient client, Model model, ulong? guildId) + : base(client, model.Id) + { + Type = model.Type; + + if (model.Resolved.IsSpecified) + { + ResolvableData = new SocketResolvableData(client, guildId, model); + } + } + + internal static SocketCommandBaseData Create(DiscordSocketClient client, Model model, ulong id, ulong? guildId) + { + var entity = new SocketCommandBaseData(client, model, guildId); + entity.Update(model); + return entity; + } + + internal virtual void Update(Model model) + { + Name = model.Name; + } + + IReadOnlyCollection IApplicationCommandInteractionData.Options + => (IReadOnlyCollection)Options; + } + + /// + /// Represents the base data tied with the interaction. + /// + public class SocketCommandBaseData : SocketCommandBaseData + { + internal SocketCommandBaseData(DiscordSocketClient client, Model model, ulong? guildId) + : base(client, model, guildId) { } + } +} diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketResolvableData.cs b/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketResolvableData.cs new file mode 100644 index 000000000..c065637ca --- /dev/null +++ b/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketResolvableData.cs @@ -0,0 +1,109 @@ +using System.Collections.Generic; + +namespace Discord.WebSocket +{ + internal class SocketResolvableData where T : API.IResolvable + { + internal readonly Dictionary GuildMembers + = new Dictionary(); + internal readonly Dictionary Users + = new Dictionary(); + internal readonly Dictionary Channels + = new Dictionary(); + internal readonly Dictionary Roles + = new Dictionary(); + + internal readonly Dictionary Messages + = new Dictionary(); + + internal SocketResolvableData(DiscordSocketClient discord, ulong? guildId, T model) + { + var guild = guildId.HasValue ? discord.GetGuild(guildId.Value) : null; + + var resolved = model.Resolved.Value; + + if (resolved.Users.IsSpecified) + { + foreach (var user in resolved.Users.Value) + { + var socketUser = discord.GetOrCreateUser(discord.State, user.Value); + + Users.Add(ulong.Parse(user.Key), socketUser); + } + } + + if (resolved.Channels.IsSpecified) + { + foreach (var channel in resolved.Channels.Value) + { + SocketChannel socketChannel = guild != null + ? guild.GetChannel(channel.Value.Id) + : discord.GetChannel(channel.Value.Id); + + if (socketChannel == null) + { + var channelModel = guild != null + ? discord.Rest.ApiClient.GetChannelAsync(guild.Id, channel.Value.Id).ConfigureAwait(false).GetAwaiter().GetResult() + : discord.Rest.ApiClient.GetChannelAsync(channel.Value.Id).ConfigureAwait(false).GetAwaiter().GetResult(); + + socketChannel = guild != null + ? SocketGuildChannel.Create(guild, discord.State, channelModel) + : (SocketChannel)SocketChannel.CreatePrivate(discord, discord.State, channelModel); + } + + discord.State.AddChannel(socketChannel); + Channels.Add(ulong.Parse(channel.Key), socketChannel); + } + } + + if (resolved.Members.IsSpecified) + { + foreach (var member in resolved.Members.Value) + { + member.Value.User = resolved.Users.Value[member.Key]; + var user = guild.AddOrUpdateUser(member.Value); + GuildMembers.Add(ulong.Parse(member.Key), user); + } + } + + if (resolved.Roles.IsSpecified) + { + foreach (var role in resolved.Roles.Value) + { + var socketRole = guild.AddOrUpdateRole(role.Value); + Roles.Add(ulong.Parse(role.Key), socketRole); + } + } + + if (resolved.Messages.IsSpecified) + { + foreach (var msg in resolved.Messages.Value) + { + var channel = discord.GetChannel(msg.Value.ChannelId) as ISocketMessageChannel; + + SocketUser author; + if (guild != null) + { + if (msg.Value.WebhookId.IsSpecified) + author = SocketWebhookUser.Create(guild, discord.State, msg.Value.Author.Value, msg.Value.WebhookId.Value); + else + author = guild.GetUser(msg.Value.Author.Value.Id); + } + else + author = (channel as SocketChannel).GetUser(msg.Value.Author.Value.Id); + + if (channel == null) + { + if (!msg.Value.GuildId.IsSpecified) // assume it is a DM + { + channel = discord.CreateDMChannel(msg.Value.ChannelId, msg.Value.Author.Value, discord.State); + } + } + + var message = SocketMessage.Create(discord, discord.State, author, channel, msg.Value); + Messages.Add(message.Id, message); + } + } + } + } +} diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/SocketInteraction.cs b/src/Discord.Net.WebSocket/Entities/Interaction/SocketInteraction.cs new file mode 100644 index 000000000..f0465d336 --- /dev/null +++ b/src/Discord.Net.WebSocket/Entities/Interaction/SocketInteraction.cs @@ -0,0 +1,243 @@ +using Discord.Rest; +using System; +using System.Threading.Tasks; +using Model = Discord.API.Interaction; +using DataModel = Discord.API.ApplicationCommandInteractionData; +using System.IO; + +namespace Discord.WebSocket +{ + /// + /// Represents an Interaction received over the gateway. + /// + public abstract class SocketInteraction : SocketEntity, IDiscordInteraction + { + #region SocketInteraction + /// + /// The this interaction was used in. + /// + public ISocketMessageChannel Channel { get; private set; } + + /// + /// The who triggered this interaction. + /// + public SocketUser User { get; private set; } + + /// + /// The type of this interaction. + /// + public InteractionType Type { get; private set; } + + /// + /// The token used to respond to this interaction. + /// + public string Token { get; private set; } + + /// + /// The data sent with this interaction. + /// + public IDiscordInteractionData Data { get; private set; } + + /// + /// The version of this interaction. + /// + public int Version { get; private set; } + + /// + public DateTimeOffset CreatedAt { get; private set; } + + /// + /// Gets whether or not this interaction has been responded to. + /// + /// + /// This property is locally set -- if you're running multiple bots + /// off the same token then this property won't be in sync with them. + /// + public abstract bool HasResponded { get; internal set; } + + /// + /// if the token is valid for replying to, otherwise . + /// + public bool IsValidToken + => InteractionHelper.CanRespondOrFollowup(this); + + internal SocketInteraction(DiscordSocketClient client, ulong id, ISocketMessageChannel channel) + : base(client, id) + { + Channel = channel; + + CreatedAt = client.UseInteractionSnowflakeDate + ? SnowflakeUtils.FromSnowflake(Id) + : DateTime.UtcNow; + } + + internal static SocketInteraction Create(DiscordSocketClient client, Model model, ISocketMessageChannel channel) + { + if (model.Type == InteractionType.ApplicationCommand) + { + var dataModel = model.Data.IsSpecified + ? (DataModel)model.Data.Value + : null; + + if (dataModel == null) + return null; + + return dataModel.Type switch + { + ApplicationCommandType.Slash => SocketSlashCommand.Create(client, model, channel), + ApplicationCommandType.Message => SocketMessageCommand.Create(client, model, channel), + ApplicationCommandType.User => SocketUserCommand.Create(client, model, channel), + _ => null + }; + } + + if (model.Type == InteractionType.MessageComponent) + return SocketMessageComponent.Create(client, model, channel); + + if (model.Type == InteractionType.ApplicationCommandAutocomplete) + return SocketAutocompleteInteraction.Create(client, model, channel); + + return null; + } + + internal virtual void Update(Model model) + { + Data = model.Data.IsSpecified + ? model.Data.Value + : null; + Token = model.Token; + Version = model.Version; + Type = model.Type; + + if (User == null) + { + if (model.Member.IsSpecified && model.GuildId.IsSpecified) + { + User = SocketGuildUser.Create(Discord.State.GetGuild(model.GuildId.Value), Discord.State, model.Member.Value); + } + else + { + User = SocketGlobalUser.Create(Discord, Discord.State, model.User.Value); + } + } + } + + /// + /// Responds to an Interaction with type . + /// + /// The text of the message to be sent. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// The request options for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// Message content is too long, length must be less or equal to . + /// The parameters provided were invalid or the token was invalid. + public abstract Task RespondAsync(string text = null, Embed[] embeds = null, bool isTTS = false, + bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null); + + /// + /// Sends a followup message for this interaction. + /// + /// The text of the message to be sent. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// The request options for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// + /// The sent message. + /// + public abstract Task FollowupAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null); + + /// + /// Sends a followup message for this interaction. + /// + /// The text of the message to be sent. + /// The file to upload. + /// The file name of the attachment. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// The request options for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// + /// The sent message. + /// + public abstract Task FollowupWithFileAsync(Stream fileStream, string fileName, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null); + + /// + /// Sends a followup message for this interaction. + /// + /// The text of the message to be sent. + /// The file to upload. + /// The file name of the attachment. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// The request options for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// + /// The sent message. + /// + public abstract Task FollowupWithFileAsync(string filePath, string text = null, string fileName = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null); + + /// + /// Gets the original response for this interaction. + /// + /// The request options for this request. + /// A that represents the initial response. + public Task GetOriginalResponseAsync(RequestOptions options = null) + => InteractionHelper.GetOriginalResponseAsync(Discord, Channel, this, options); + + /// + /// Edits original response for this interaction. + /// + /// A delegate containing the properties to modify the message with. + /// The request options for this request. + /// A that represents the initial response. + public async Task ModifyOriginalResponseAsync(Action func, RequestOptions options = null) + { + var model = await InteractionHelper.ModifyInteractionResponseAsync(Discord, Token, func, options); + return RestInteractionMessage.Create(Discord, model, Token, Channel); + } + + /// + /// Acknowledges this interaction. + /// + /// to send this message ephemerally, otherwise . + /// The request options for this request. + /// + /// A task that represents the asynchronous operation of acknowledging the interaction. + /// + public abstract Task DeferAsync(bool ephemeral = false, RequestOptions options = null); + + #endregion + + #region IDiscordInteraction + /// + async Task IDiscordInteraction.FollowupAsync(string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, + RequestOptions options, MessageComponent component, Embed embed) + => await FollowupAsync(text, embeds, isTTS, ephemeral, allowedMentions, options, component, embed).ConfigureAwait(false); + + /// + async Task IDiscordInteraction.GetOriginalResponseAsync(RequestOptions options) + => await GetOriginalResponseAsync(options).ConfigureAwait(false); + + /// + async Task IDiscordInteraction.ModifyOriginalResponseAsync(Action func, RequestOptions options) + => await ModifyOriginalResponseAsync(func, options).ConfigureAwait(false); + #endregion + } +} diff --git a/src/Discord.Net.WebSocket/Entities/Invites/SocketInvite.cs b/src/Discord.Net.WebSocket/Entities/Invites/SocketInvite.cs index 845b48b8b..2b64e170e 100644 --- a/src/Discord.Net.WebSocket/Entities/Invites/SocketInvite.cs +++ b/src/Discord.Net.WebSocket/Entities/Invites/SocketInvite.cs @@ -6,6 +6,9 @@ using Model = Discord.API.Gateway.InviteCreateEvent; namespace Discord.WebSocket { + /// + /// Represents a WebSocket-based invite to a guild. + /// [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class SocketInvite : SocketEntity, IInviteMetadata { @@ -28,16 +31,16 @@ namespace Discord.WebSocket { get { - switch (Channel) + return Channel switch { - case IVoiceChannel voiceChannel: return ChannelType.Voice; - case ICategoryChannel categoryChannel: return ChannelType.Category; - case IDMChannel dmChannel: return ChannelType.DM; - case IGroupChannel groupChannel: return ChannelType.Group; - case INewsChannel newsChannel: return ChannelType.News; - case ITextChannel textChannel: return ChannelType.Text; - default: throw new InvalidOperationException("Invalid channel type."); - } + IVoiceChannel voiceChannel => ChannelType.Voice, + ICategoryChannel categoryChannel => ChannelType.Category, + IDMChannel dmChannel => ChannelType.DM, + IGroupChannel groupChannel => ChannelType.Group, + INewsChannel newsChannel => ChannelType.News, + ITextChannel textChannel => ChannelType.Text, + _ => throw new InvalidOperationException("Invalid channel type."), + }; } } /// diff --git a/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs b/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs index 353c26fb8..4be9f4c5a 100644 --- a/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs +++ b/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs @@ -1,4 +1,5 @@ using Discord.Rest; +using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Collections.Immutable; @@ -13,8 +14,10 @@ namespace Discord.WebSocket /// public abstract class SocketMessage : SocketEntity, IMessage { + #region SocketMessage private long _timestampTicks; private readonly List _reactions = new List(); + private ImmutableArray _userMentions = ImmutableArray.Create(); /// /// Gets the author of this message. @@ -36,6 +39,9 @@ namespace Discord.WebSocket /// public string Content { get; private set; } + /// + public string CleanContent => MessageHelper.SanitizeMessage(this); + /// public DateTimeOffset CreatedAt => SnowflakeUtils.FromSnowflake(Id); /// @@ -58,6 +64,14 @@ namespace Discord.WebSocket /// public MessageReference Reference { get; private set; } + /// + public IReadOnlyCollection Components { get; private set; } + + /// + /// Gets the interaction this message is a response to. + /// + public MessageInteraction Interaction { get; private set; } + /// public MessageFlags? Flags { get; private set; } @@ -92,20 +106,19 @@ namespace Discord.WebSocket /// Collection of WebSocket-based roles. /// public virtual IReadOnlyCollection MentionedRoles => ImmutableArray.Create(); + /// + public virtual IReadOnlyCollection Tags => ImmutableArray.Create(); + /// + public virtual IReadOnlyCollection Stickers => ImmutableArray.Create(); + /// + public IReadOnlyDictionary Reactions => _reactions.GroupBy(r => r.Emote).ToDictionary(x => x.Key, x => new ReactionMetadata { ReactionCount = x.Count(), IsMe = x.Any(y => y.UserId == Discord.CurrentUser.Id) }); /// /// Returns the users mentioned in this message. /// /// /// Collection of WebSocket-based users. /// - public virtual IReadOnlyCollection MentionedUsers => ImmutableArray.Create(); - /// - public virtual IReadOnlyCollection Tags => ImmutableArray.Create(); - /// - public virtual IReadOnlyCollection Stickers => ImmutableArray.Create(); - /// - public IReadOnlyDictionary Reactions => _reactions.GroupBy(r => r.Emote).ToDictionary(x => x.Key, x => new ReactionMetadata { ReactionCount = x.Count(), IsMe = x.Any(y => y.UserId == Discord.CurrentUser.Id) }); - + public IReadOnlyCollection MentionedUsers => _userMentions; /// public DateTimeOffset Timestamp => DateTimeUtils.FromTicks(_timestampTicks); @@ -118,7 +131,10 @@ namespace Discord.WebSocket } internal static SocketMessage Create(DiscordSocketClient discord, ClientState state, SocketUser author, ISocketMessageChannel channel, Model model) { - if (model.Type == MessageType.Default || model.Type == MessageType.Reply) + if (model.Type == MessageType.Default || + model.Type == MessageType.Reply || + model.Type == MessageType.ApplicationCommand || + model.Type == MessageType.ThreadStarterMessage) return SocketUserMessage.Create(discord, state, author, channel, model); else return SocketSystemMessage.Create(discord, state, author, channel, model); @@ -131,7 +147,9 @@ namespace Discord.WebSocket _timestampTicks = model.Timestamp.Value.UtcTicks; if (model.Content.IsSpecified) + { Content = model.Content.Value; + } if (model.Application.IsSpecified) { @@ -167,6 +185,86 @@ namespace Discord.WebSocket }; } + if (model.Components.IsSpecified) + { + Components = model.Components.Value.Select(x => new ActionRowComponent(x.Components.Select(y => + { + switch (y.Type) + { + case ComponentType.Button: + { + var parsed = (API.ButtonComponent)y; + return new Discord.ButtonComponent( + parsed.Style, + parsed.Label.GetValueOrDefault(), + parsed.Emote.IsSpecified + ? parsed.Emote.Value.Id.HasValue + ? new Emote(parsed.Emote.Value.Id.Value, parsed.Emote.Value.Name, parsed.Emote.Value.Animated.GetValueOrDefault()) + : new Emoji(parsed.Emote.Value.Name) + : null, + parsed.CustomId.GetValueOrDefault(), + parsed.Url.GetValueOrDefault(), + parsed.Disabled.GetValueOrDefault()); + } + case ComponentType.SelectMenu: + { + var parsed = (API.SelectMenuComponent)y; + return new SelectMenuComponent( + parsed.CustomId, + parsed.Options.Select(z => new SelectMenuOption( + z.Label, + z.Value, + z.Description.GetValueOrDefault(), + z.Emoji.IsSpecified + ? z.Emoji.Value.Id.HasValue + ? new Emote(z.Emoji.Value.Id.Value, z.Emoji.Value.Name, z.Emoji.Value.Animated.GetValueOrDefault()) + : new Emoji(z.Emoji.Value.Name) + : null, + z.Default.ToNullable())).ToList(), + parsed.Placeholder.GetValueOrDefault(), + parsed.MinValues, + parsed.MaxValues, + parsed.Disabled + ); + } + default: + return null; + } + }).ToList())).ToImmutableArray(); + } + else + Components = new List(); + + if (model.UserMentions.IsSpecified) + { + var value = model.UserMentions.Value; + if (value.Length > 0) + { + var newMentions = ImmutableArray.CreateBuilder(value.Length); + for (int i = 0; i < value.Length; i++) + { + var val = value[i]; + if (val != null) + { + var user = Channel.GetUserAsync(val.Id, CacheMode.CacheOnly).GetAwaiter().GetResult() as SocketUser; + if (user != null) + newMentions.Add(user); + else + newMentions.Add(SocketUnknownUser.Create(Discord, state, val)); + } + } + _userMentions = newMentions.ToImmutable(); + } + } + + if (model.Interaction.IsSpecified) + { + Interaction = new MessageInteraction(model.Interaction.Value.Id, + model.Interaction.Value.Type, + model.Interaction.Value.Name, + SocketGlobalUser.Create(Discord, state, model.Interaction.Value.User)); + } + if (model.Flags.IsSpecified) Flags = model.Flags.Value; } @@ -183,8 +281,9 @@ namespace Discord.WebSocket /// public override string ToString() => Content; internal SocketMessage Clone() => MemberwiseClone() as SocketMessage; +#endregion - //IMessage + #region IMessage /// IUser IMessage.Author => Author; /// @@ -199,8 +298,16 @@ namespace Discord.WebSocket IReadOnlyCollection IMessage.MentionedRoleIds => MentionedRoles.Select(x => x.Id).ToImmutableArray(); /// IReadOnlyCollection IMessage.MentionedUserIds => MentionedUsers.Select(x => x.Id).ToImmutableArray(); + + /// + IReadOnlyCollection IMessage.Components => Components; + + /// + IMessageInteraction IMessage.Interaction => Interaction; + /// - IReadOnlyCollection IMessage.Stickers => Stickers; + IReadOnlyCollection IMessage.Stickers => Stickers; + internal void AddReaction(SocketReaction reaction) { @@ -238,5 +345,6 @@ namespace Discord.WebSocket /// public IAsyncEnumerable> GetReactionUsersAsync(IEmote emote, int limit, RequestOptions options = null) => MessageHelper.GetReactionUsersAsync(this, emote, limit, Discord, options); + #endregion } } diff --git a/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs b/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs index 597544f4d..e5776a089 100644 --- a/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs +++ b/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs @@ -22,8 +22,7 @@ namespace Discord.WebSocket private ImmutableArray _embeds = ImmutableArray.Create(); private ImmutableArray _tags = ImmutableArray.Create(); private ImmutableArray _roleMentions = ImmutableArray.Create(); - private ImmutableArray _userMentions = ImmutableArray.Create(); - private ImmutableArray _stickers = ImmutableArray.Create(); + private ImmutableArray _stickers = ImmutableArray.Create(); /// public override bool IsTTS => _isTTS; @@ -46,9 +45,7 @@ namespace Discord.WebSocket /// public override IReadOnlyCollection MentionedRoles => _roleMentions; /// - public override IReadOnlyCollection MentionedUsers => _userMentions; - /// - public override IReadOnlyCollection Stickers => _stickers; + public override IReadOnlyCollection Stickers => _stickers; /// public IUserMessage ReferencedMessage => _referencedMessage; @@ -108,32 +105,10 @@ namespace Discord.WebSocket _embeds = ImmutableArray.Create(); } - if (model.UserMentions.IsSpecified) - { - var value = model.UserMentions.Value; - if (value.Length > 0) - { - var newMentions = ImmutableArray.CreateBuilder(value.Length); - for (int i = 0; i < value.Length; i++) - { - var val = value[i]; - if (val.Object != null) - { - var user = Channel.GetUserAsync(val.Object.Id, CacheMode.CacheOnly).GetAwaiter().GetResult() as SocketUser; - if (user != null) - newMentions.Add(user); - else - newMentions.Add(SocketUnknownUser.Create(Discord, state, val.Object)); - } - } - _userMentions = newMentions.ToImmutable(); - } - } - if (model.Content.IsSpecified) { var text = model.Content.Value; - _tags = MessageHelper.ParseTags(text, Channel, guild, _userMentions); + _tags = MessageHelper.ParseTags(text, Channel, guild, MentionedUsers); model.Content = text; } @@ -162,18 +137,40 @@ namespace Discord.WebSocket _referencedMessage = SocketUserMessage.Create(Discord, state, refMsgAuthor, Channel, refMsg); } - if (model.Stickers.IsSpecified) + if (model.StickerItems.IsSpecified) { - var value = model.Stickers.Value; + var value = model.StickerItems.Value; if (value.Length > 0) { - var stickers = ImmutableArray.CreateBuilder(value.Length); + var stickers = ImmutableArray.CreateBuilder(value.Length); for (int i = 0; i < value.Length; i++) - stickers.Add(Sticker.Create(value[i])); + { + var stickerItem = value[i]; + SocketSticker sticker = null; + + if (guild != null) + sticker = guild.GetSticker(stickerItem.Id); + + if (sticker == null) + sticker = Discord.GetSticker(stickerItem.Id); + + // if they want to auto resolve + if (Discord.AlwaysResolveStickers) + { + sticker = Task.Run(async () => await Discord.GetStickerAsync(stickerItem.Id).ConfigureAwait(false)).GetAwaiter().GetResult(); + } + + // if its still null, create an unknown + if (sticker == null) + sticker = SocketUnknownSticker.Create(Discord, stickerItem); + + stickers.Add(sticker); + } + _stickers = stickers.ToImmutable(); } else - _stickers = ImmutableArray.Create(); + _stickers = ImmutableArray.Create(); } } diff --git a/src/Discord.Net.WebSocket/Entities/Roles/SocketRole.cs b/src/Discord.Net.WebSocket/Entities/Roles/SocketRole.cs index e6aac2c04..1e90b8f5c 100644 --- a/src/Discord.Net.WebSocket/Entities/Roles/SocketRole.cs +++ b/src/Discord.Net.WebSocket/Entities/Roles/SocketRole.cs @@ -1,6 +1,6 @@ using Discord.Rest; using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Threading.Tasks; @@ -14,6 +14,7 @@ namespace Discord.WebSocket [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class SocketRole : SocketEntity, IRole { + #region SocketRole /// /// Gets the guild that owns this role. /// @@ -32,6 +33,10 @@ namespace Discord.WebSocket public bool IsMentionable { get; private set; } /// public string Name { get; private set; } + /// + public Emoji Emoji { get; private set; } + /// + public string Icon { get; private set; } /// public GuildPermissions Permissions { get; private set; } /// @@ -50,7 +55,11 @@ namespace Discord.WebSocket public bool IsEveryone => Id == Guild.Id; /// public string Mention => IsEveryone ? "@everyone" : MentionUtils.MentionRole(Id); - public IEnumerable Members + + /// + /// Returns an IEnumerable containing all that have this role. + /// + public IEnumerable Members => Guild.Users.Where(x => x.Roles.Any(r => r.Id == Id)); internal SocketRole(SocketGuild guild, ulong id) @@ -75,6 +84,16 @@ namespace Discord.WebSocket Permissions = new GuildPermissions(model.Permissions); if (model.Tags.IsSpecified) Tags = model.Tags.Value.ToEntity(); + + if (model.Icon.IsSpecified) + { + Icon = model.Icon.Value; + } + + if (model.Emoji.IsSpecified) + { + Emoji = new Emoji(model.Emoji.Value); + } } /// @@ -84,6 +103,10 @@ namespace Discord.WebSocket public Task DeleteAsync(RequestOptions options = null) => RoleHelper.DeleteAsync(this, Discord, options); + /// + public string GetIconUrl() + => CDN.GetGuildRoleIconUrl(Id, Icon); + /// /// Gets the name of the role. /// @@ -96,9 +119,11 @@ namespace Discord.WebSocket /// public int CompareTo(IRole role) => RoleUtils.Compare(this, role); + #endregion - //IRole + #region IRole /// IGuild IRole.Guild => Guild; + #endregion } } diff --git a/src/Discord.Net.WebSocket/Entities/Stickers/SocketCustomSticker.cs b/src/Discord.Net.WebSocket/Entities/Stickers/SocketCustomSticker.cs new file mode 100644 index 000000000..6a5104012 --- /dev/null +++ b/src/Discord.Net.WebSocket/Entities/Stickers/SocketCustomSticker.cs @@ -0,0 +1,81 @@ +using Discord.Rest; +using System; +using System.Diagnostics; +using System.Threading.Tasks; +using Model = Discord.API.Sticker; + +namespace Discord.WebSocket +{ + /// + /// Represents a custom sticker within a guild received over the gateway. + /// + [DebuggerDisplay(@"{DebuggerDisplay,nq}")] + public class SocketCustomSticker : SocketSticker, ICustomSticker + { + #region SocketCustomSticker + /// + /// Gets the user that uploaded the guild sticker. + /// + /// + /// + /// This may return in the WebSocket implementation due to incomplete user collection in + /// large guilds, or the bot doesn't have the MANAGE_EMOJIS_AND_STICKERS permission. + /// + /// + public SocketGuildUser Author + => AuthorId.HasValue ? Guild.GetUser(AuthorId.Value) : null; + + /// + /// Gets the guild the sticker was created in. + /// + public SocketGuild Guild { get; } + + /// + public ulong? AuthorId { get; set; } + + internal SocketCustomSticker(DiscordSocketClient client, ulong id, SocketGuild guild, ulong? authorId = null) + : base(client, id) + { + Guild = guild; + AuthorId = authorId; + } + + internal static SocketCustomSticker Create(DiscordSocketClient client, Model model, SocketGuild guild, ulong? authorId = null) + { + var entity = new SocketCustomSticker(client, model.Id, guild, authorId); + entity.Update(model); + return entity; + } + + /// + public async Task ModifyAsync(Action func, RequestOptions options = null) + { + if (!Guild.CurrentUser.GuildPermissions.Has(GuildPermission.ManageEmojisAndStickers)) + throw new InvalidOperationException($"Missing permission {nameof(GuildPermission.ManageEmojisAndStickers)}"); + + var model = await GuildHelper.ModifyStickerAsync(Discord, Guild.Id, this, func, options); + + Update(model); + } + + /// + public async Task DeleteAsync(RequestOptions options = null) + { + await GuildHelper.DeleteStickerAsync(Discord, Guild.Id, this, options); + Guild.RemoveSticker(Id); + } + + internal SocketCustomSticker Clone() => MemberwiseClone() as SocketCustomSticker; + + private new string DebuggerDisplay => Guild == null ? base.DebuggerDisplay : $"{Name} in {Guild.Name} ({Id})"; + #endregion + + #region ICustomSticker + ulong? ICustomSticker.AuthorId + => AuthorId; + + IGuild ICustomSticker.Guild + => Guild; + #endregion + } +} diff --git a/src/Discord.Net.WebSocket/Entities/Stickers/SocketSticker.cs b/src/Discord.Net.WebSocket/Entities/Stickers/SocketSticker.cs new file mode 100644 index 000000000..ee45720b5 --- /dev/null +++ b/src/Discord.Net.WebSocket/Entities/Stickers/SocketSticker.cs @@ -0,0 +1,92 @@ +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Diagnostics; +using System.Linq; +using Model = Discord.API.Sticker; + +namespace Discord.WebSocket +{ + /// + /// Represents a general sticker received over the gateway. + /// + [DebuggerDisplay(@"{DebuggerDisplay,nq}")] + public class SocketSticker : SocketEntity, ISticker + { + /// + public virtual ulong PackId { get; private set; } + + /// + public string Name { get; protected set; } + + /// + public virtual string Description { get; private set; } + + /// + public virtual IReadOnlyCollection Tags { get; private set; } + + /// + public virtual StickerType Type { get; private set; } + + /// + public StickerFormatType Format { get; protected set; } + + /// + public virtual bool? IsAvailable { get; protected set; } + + /// + public virtual int? SortOrder { get; private set; } + + /// + public string GetStickerUrl() + => CDN.GetStickerUrl(Id, Format); + + internal SocketSticker(DiscordSocketClient client, ulong id) + : base(client, id) { } + + internal static SocketSticker Create(DiscordSocketClient client, Model model) + { + var entity = model.GuildId.IsSpecified + ? new SocketCustomSticker(client, model.Id, client.GetGuild(model.GuildId.Value), model.User.IsSpecified ? model.User.Value.Id : null) + : new SocketSticker(client, model.Id); + + entity.Update(model); + return entity; + } + + internal virtual void Update(Model model) + { + Name = model.Name; + Description = model.Description; + PackId = model.PackId; + IsAvailable = model.Available; + Format = model.FormatType; + Type = model.Type; + SortOrder = model.SortValue; + + Tags = model.Tags.IsSpecified + ? model.Tags.Value.Split(',').Select(x => x.Trim()).ToImmutableArray() + : ImmutableArray.Create(); + } + + internal string DebuggerDisplay => $"{Name} ({Id})"; + + /// + public override bool Equals(object obj) + { + if (obj is Model stickerModel) + { + return stickerModel.Name == Name && + stickerModel.Description == Description && + stickerModel.FormatType == Format && + stickerModel.Id == Id && + stickerModel.PackId == PackId && + stickerModel.Type == Type && + stickerModel.SortValue == SortOrder && + stickerModel.Available == IsAvailable && + (!stickerModel.Tags.IsSpecified || stickerModel.Tags.Value == string.Join(", ", Tags)); + } + + return base.Equals(obj); + } + } +} diff --git a/src/Discord.Net.WebSocket/Entities/Stickers/SocketUnknownSticker.cs b/src/Discord.Net.WebSocket/Entities/Stickers/SocketUnknownSticker.cs new file mode 100644 index 000000000..ca7d2d0f1 --- /dev/null +++ b/src/Discord.Net.WebSocket/Entities/Stickers/SocketUnknownSticker.cs @@ -0,0 +1,64 @@ +using System.Collections.Generic; +using System.Diagnostics; +using System.Threading.Tasks; +using Model = Discord.API.StickerItem; + +namespace Discord.WebSocket +{ + /// + /// Represents an unknown sticker received over the gateway. + /// + [DebuggerDisplay(@"{DebuggerDisplay,nq}")] + public class SocketUnknownSticker : SocketSticker + { + /// + public override IReadOnlyCollection Tags + => null; + + /// + public override string Description + => null; + + /// + public override ulong PackId + => 0; + /// + public override bool? IsAvailable + => null; + + /// + public override int? SortOrder + => null; + + /// + public new StickerType? Type + => null; + + internal SocketUnknownSticker(DiscordSocketClient client, ulong id) + : base(client, id) { } + + internal static SocketUnknownSticker Create(DiscordSocketClient client, Model model) + { + var entity = new SocketUnknownSticker(client, model.Id); + entity.Update(model); + return entity; + } + + internal void Update(Model model) + { + Name = model.Name; + Format = model.FormatType; + } + + /// + /// Attempts to try to find the sticker. + /// + /// + /// The sticker representing this unknown stickers Id, if none is found then . + /// + public Task ResolveAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null) + => Discord.GetStickerAsync(Id, mode, options); + + private new string DebuggerDisplay => $"{Name} ({Id})"; + } +} diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketGlobalUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketGlobalUser.cs index 15c5182fc..3a1ad23b6 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketGlobalUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketGlobalUser.cs @@ -47,7 +47,7 @@ namespace Discord.WebSocket discord.RemoveUser(Id); } } - + internal void Update(ClientState state, PresenceModel model) { Presence = SocketPresence.Create(model); diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketGroupUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketGroupUser.cs index 676c0a86c..fe19a41ec 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketGroupUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketGroupUser.cs @@ -1,11 +1,16 @@ +using System; using System.Diagnostics; using Model = Discord.API.User; namespace Discord.WebSocket { + /// + /// Represents a WebSocket-based group user. + /// [DebuggerDisplay("{DebuggerDisplay,nq}")] public class SocketGroupUser : SocketUser, IGroupUser { + #region SocketGroupUser /// /// Gets the group channel of the user. /// @@ -45,8 +50,9 @@ namespace Discord.WebSocket private string DebuggerDisplay => $"{Username}#{Discriminator} ({Id}{(IsBot ? ", Bot" : "")}, Group)"; internal new SocketGroupUser Clone() => MemberwiseClone() as SocketGroupUser; + #endregion - //IVoiceState + #region IVoiceState /// bool IVoiceState.IsDeafened => false; /// @@ -63,5 +69,8 @@ namespace Discord.WebSocket string IVoiceState.VoiceSessionId => null; /// bool IVoiceState.IsStreaming => false; + /// + DateTimeOffset? IVoiceState.RequestToSpeakTimestamp => null; + #endregion } } diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs index 444c76ffa..147456cb0 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs @@ -18,6 +18,7 @@ namespace Discord.WebSocket [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class SocketGuildUser : SocketUser, IGuildUser { + #region SocketGuildUser private long? _premiumSinceTicks; private long? _joinedAtTicks; private ImmutableArray _roleIds; @@ -29,7 +30,8 @@ namespace Discord.WebSocket public SocketGuild Guild { get; } /// public string Nickname { get; private set; } - + /// + public string GuildAvatarId { get; private set; } /// public override bool IsBot { get { return GlobalUser.IsBot; } internal set { GlobalUser.IsBot = value; } } /// @@ -38,6 +40,7 @@ namespace Discord.WebSocket public override ushort DiscriminatorValue { get { return GlobalUser.DiscriminatorValue; } internal set { GlobalUser.DiscriminatorValue = value; } } /// public override string AvatarId { get { return GlobalUser.AvatarId; } internal set { GlobalUser.AvatarId = value; } } + /// public GuildPermissions GuildPermissions => new GuildPermissions(Permissions.ResolveGuild(Guild, this)); internal override SocketPresence Presence { get; set; } @@ -57,7 +60,11 @@ namespace Discord.WebSocket /// public bool IsStreaming => VoiceState?.IsStreaming ?? false; /// + public DateTimeOffset? RequestToSpeakTimestamp => VoiceState?.RequestToSpeakTimestamp ?? null; + /// public bool? IsPending { get; private set; } + + /// public DateTimeOffset? JoinedAt => DateTimeUtils.FromTicks(_joinedAtTicks); /// @@ -87,7 +94,7 @@ namespace Discord.WebSocket /// Returns the position of the user within the role hierarchy. /// /// - /// The returned value equal to the position of the highest role the user has, or + /// The returned value equal to the position of the highest role the user has, or /// if user is the server owner. /// public int Hierarchy @@ -144,6 +151,8 @@ namespace Discord.WebSocket _joinedAtTicks = model.JoinedAt.Value.UtcTicks; if (model.Nick.IsSpecified) Nickname = model.Nick.Value; + if (model.Avatar.IsSpecified) + GuildAvatarId = model.Avatar.Value; if (model.Roles.IsSpecified) UpdateRoles(model.Roles.Value); if (model.PremiumSince.IsSpecified) @@ -208,11 +217,14 @@ namespace Discord.WebSocket /// public ChannelPermissions GetPermissions(IGuildChannel channel) => new ChannelPermissions(Permissions.ResolveChannel(Guild, this, channel, GuildPermissions.RawValue)); + public string GetGuildAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128) + => CDN.GetGuildUserAvatarUrl(Id, Guild.Id, GuildAvatarId, size, format); private string DebuggerDisplay => $"{Username}#{Discriminator} ({Id}{(IsBot ? ", Bot" : "")}, Guild)"; internal new SocketGuildUser Clone() => MemberwiseClone() as SocketGuildUser; + #endregion - //IGuildUser + #region IGuildUser /// IGuild IGuildUser.Guild => Guild; /// @@ -223,5 +235,6 @@ namespace Discord.WebSocket //IVoiceState /// IVoiceChannel IVoiceState.VoiceChannel => VoiceChannel; + #endregion } } diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketThreadUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketThreadUser.cs new file mode 100644 index 000000000..b2311dd7d --- /dev/null +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketThreadUser.cs @@ -0,0 +1,209 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Model = Discord.API.ThreadMember; +using System.Collections.Immutable; + +namespace Discord.WebSocket +{ + /// + /// Represents a thread user received over the gateway. + /// + public class SocketThreadUser : SocketUser, IGuildUser + { + /// + /// Gets the this user is in. + /// + public SocketThreadChannel Thread { get; private set; } + + /// + /// Gets the timestamp for when this user joined this thread. + /// + public DateTimeOffset ThreadJoinedAt { get; private set; } + + /// + /// Gets the guild this user is in. + /// + public SocketGuild Guild { get; private set; } + + /// + public DateTimeOffset? JoinedAt + => GuildUser.JoinedAt; + + /// + public string Nickname + => GuildUser.Nickname; + + /// + public DateTimeOffset? PremiumSince + => GuildUser.PremiumSince; + + /// + public bool? IsPending + => GuildUser.IsPending; + /// + public int Hierarchy + => GuildUser.Hierarchy; + + /// + public override string AvatarId + { + get => GuildUser.AvatarId; + internal set => GuildUser.AvatarId = value; + } + /// + public string GuildAvatarId + => GuildUser.GuildAvatarId; + + /// + public override ushort DiscriminatorValue + { + get => GuildUser.DiscriminatorValue; + internal set => GuildUser.DiscriminatorValue = value; + } + + /// + public override bool IsBot + { + get => GuildUser.IsBot; + internal set => GuildUser.IsBot = value; + } + + /// + public override bool IsWebhook + => GuildUser.IsWebhook; + + /// + public override string Username + { + get => GuildUser.Username; + internal set => GuildUser.Username = value; + } + + /// + public bool IsDeafened + => GuildUser.IsDeafened; + + /// + public bool IsMuted + => GuildUser.IsMuted; + + /// + public bool IsSelfDeafened + => GuildUser.IsSelfDeafened; + + /// + public bool IsSelfMuted + => GuildUser.IsSelfMuted; + + /// + public bool IsSuppressed + => GuildUser.IsSuppressed; + + /// + public IVoiceChannel VoiceChannel + => GuildUser.VoiceChannel; + + /// + public string VoiceSessionId + => GuildUser.VoiceSessionId; + + /// + public bool IsStreaming + => GuildUser.IsStreaming; + + /// + public DateTimeOffset? RequestToSpeakTimestamp + => GuildUser.RequestToSpeakTimestamp; + + private SocketGuildUser GuildUser { get; set; } + + internal SocketThreadUser(SocketGuild guild, SocketThreadChannel thread, SocketGuildUser member) + : base(guild.Discord, member.Id) + { + Thread = thread; + Guild = guild; + GuildUser = member; + } + + internal static SocketThreadUser Create(SocketGuild guild, SocketThreadChannel thread, Model model, SocketGuildUser member) + { + var entity = new SocketThreadUser(guild, thread, member); + entity.Update(model); + return entity; + } + + internal void Update(Model model) + { + ThreadJoinedAt = model.JoinTimestamp; + + if (model.Presence.IsSpecified) + { + GuildUser.Update(Discord.State, model.Presence.Value, true); + } + + if (model.Member.IsSpecified) + { + GuildUser.Update(Discord.State, model.Member.Value); + } + } + + /// + public ChannelPermissions GetPermissions(IGuildChannel channel) => GuildUser.GetPermissions(channel); + + /// + public Task KickAsync(string reason = null, RequestOptions options = null) => GuildUser.KickAsync(reason, options); + + /// + public Task ModifyAsync(Action func, RequestOptions options = null) => GuildUser.ModifyAsync(func, options); + + /// + public Task AddRoleAsync(ulong roleId, RequestOptions options = null) => GuildUser.AddRoleAsync(roleId, options); + + /// + public Task AddRoleAsync(IRole role, RequestOptions options = null) => GuildUser.AddRoleAsync(role, options); + + /// + public Task AddRolesAsync(IEnumerable roleIds, RequestOptions options = null) => GuildUser.AddRolesAsync(roleIds, options); + + /// + public Task AddRolesAsync(IEnumerable roles, RequestOptions options = null) => GuildUser.AddRolesAsync(roles, options); + + /// + public Task RemoveRoleAsync(ulong roleId, RequestOptions options = null) => GuildUser.RemoveRoleAsync(roleId, options); + + /// + public Task RemoveRoleAsync(IRole role, RequestOptions options = null) => GuildUser.RemoveRoleAsync(role, options); + + /// + public Task RemoveRolesAsync(IEnumerable roleIds, RequestOptions options = null) => GuildUser.RemoveRolesAsync(roleIds, options); + + /// + public Task RemoveRolesAsync(IEnumerable roles, RequestOptions options = null) => GuildUser.RemoveRolesAsync(roles, options); + + /// + GuildPermissions IGuildUser.GuildPermissions => GuildUser.GuildPermissions; + + /// + IGuild IGuildUser.Guild => Guild; + + /// + ulong IGuildUser.GuildId => Guild.Id; + + /// + IReadOnlyCollection IGuildUser.RoleIds => GuildUser.Roles.Select(x => x.Id).ToImmutableArray(); + + string IGuildUser.GetGuildAvatarUrl(ImageFormat format, ushort size) => GuildUser.GetGuildAvatarUrl(format, size); + + internal override SocketGlobalUser GlobalUser => GuildUser.GlobalUser; + + internal override SocketPresence Presence { get => GuildUser.Presence; set => GuildUser.Presence = value; } + + /// + /// Gets the guild user of this thread user. + /// + /// + public static explicit operator SocketGuildUser(SocketThreadUser user) => user.GuildUser; + } +} diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketUnknownUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketUnknownUser.cs index 840a1c30b..a15f7e747 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketUnknownUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketUnknownUser.cs @@ -19,9 +19,10 @@ namespace Discord.WebSocket public override ushort DiscriminatorValue { get; internal set; } /// public override string AvatarId { get; internal set; } + /// public override bool IsBot { get; internal set; } - + /// public override bool IsWebhook => false; /// diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketVoiceState.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketVoiceState.cs index 5bf36e796..816a839fc 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketVoiceState.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketVoiceState.cs @@ -13,7 +13,7 @@ namespace Discord.WebSocket /// /// Initializes a default with everything set to null or false. /// - public static readonly SocketVoiceState Default = new SocketVoiceState(null, null, false, false, false, false, false, false); + public static readonly SocketVoiceState Default = new SocketVoiceState(null, null, null, false, false, false, false, false, false); [Flags] private enum Flags : byte @@ -35,6 +35,8 @@ namespace Discord.WebSocket public SocketVoiceChannel VoiceChannel { get; } /// public string VoiceSessionId { get; } + /// + public DateTimeOffset? RequestToSpeakTimestamp { get; private set; } /// public bool IsMuted => (_voiceStates & Flags.Muted) != 0; @@ -48,11 +50,13 @@ namespace Discord.WebSocket public bool IsSelfDeafened => (_voiceStates & Flags.SelfDeafened) != 0; /// public bool IsStreaming => (_voiceStates & Flags.SelfStream) != 0; + - internal SocketVoiceState(SocketVoiceChannel voiceChannel, string sessionId, bool isSelfMuted, bool isSelfDeafened, bool isMuted, bool isDeafened, bool isSuppressed, bool isStream) + internal SocketVoiceState(SocketVoiceChannel voiceChannel, DateTimeOffset? requestToSpeak, string sessionId, bool isSelfMuted, bool isSelfDeafened, bool isMuted, bool isDeafened, bool isSuppressed, bool isStream) { VoiceChannel = voiceChannel; VoiceSessionId = sessionId; + RequestToSpeakTimestamp = requestToSpeak; Flags voiceStates = Flags.Normal; if (isSelfMuted) @@ -71,7 +75,7 @@ namespace Discord.WebSocket } internal static SocketVoiceState Create(SocketVoiceChannel voiceChannel, Model model) { - return new SocketVoiceState(voiceChannel, model.SessionId, model.SelfMute, model.SelfDeaf, model.Mute, model.Deaf, model.Suppress, model.SelfStream); + return new SocketVoiceState(voiceChannel, model.RequestToSpeakTimestamp.IsSpecified ? model.RequestToSpeakTimestamp.Value : null, model.SessionId, model.SelfMute, model.SelfDeaf, model.Mute, model.Deaf, model.Suppress, model.SelfStream); } /// diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs index 404ab116d..bccfe1a29 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs @@ -13,6 +13,7 @@ namespace Discord.WebSocket [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class SocketWebhookUser : SocketUser, IWebhookUser { + #region SocketWebhookUser /// Gets the guild of this webhook. public SocketGuild Guild { get; } /// @@ -24,6 +25,8 @@ namespace Discord.WebSocket public override ushort DiscriminatorValue { get; internal set; } /// public override string AvatarId { get; internal set; } + + /// public override bool IsBot { get; internal set; } @@ -49,9 +52,9 @@ namespace Discord.WebSocket private string DebuggerDisplay => $"{Username}#{Discriminator} ({Id}{(IsBot ? ", Bot" : "")}, Webhook)"; internal new SocketWebhookUser Clone() => MemberwiseClone() as SocketWebhookUser; +#endregion - - //IGuildUser + #region IGuildUser /// IGuild IGuildUser.Guild => Guild; /// @@ -63,10 +66,16 @@ namespace Discord.WebSocket /// string IGuildUser.Nickname => null; /// + string IGuildUser.GuildAvatarId => null; + /// + string IGuildUser.GetGuildAvatarUrl(ImageFormat format, ushort size) => null; + /// DateTimeOffset? IGuildUser.PremiumSince => null; /// bool? IGuildUser.IsPending => null; /// + int IGuildUser.Hierarchy => 0; + /// GuildPermissions IGuildUser.GuildPermissions => GuildPermissions.Webhook; /// @@ -120,8 +129,9 @@ namespace Discord.WebSocket /// Roles are not supported on webhook users. Task IGuildUser.RemoveRolesAsync(IEnumerable roles, RequestOptions options) => throw new NotSupportedException("Roles are not supported on webhook users."); + #endregion - //IVoiceState + #region IVoiceState /// bool IVoiceState.IsDeafened => false; /// @@ -138,5 +148,8 @@ namespace Discord.WebSocket string IVoiceState.VoiceSessionId => null; /// bool IVoiceState.IsStreaming => false; + /// + DateTimeOffset? IVoiceState.RequestToSpeakTimestamp => null; + #endregion } } diff --git a/src/Discord.Net.WebSocket/Extensions/EntityExtensions.cs b/src/Discord.Net.WebSocket/Extensions/EntityExtensions.cs index cbe575075..46f5c1a26 100644 --- a/src/Discord.Net.WebSocket/Extensions/EntityExtensions.cs +++ b/src/Discord.Net.WebSocket/Extensions/EntityExtensions.cs @@ -9,7 +9,7 @@ namespace Discord.WebSocket { public static IActivity ToEntity(this API.Game model) { - // Custom Status Game + #region Custom Status Game if (model.Id.IsSpecified && model.Id.Value == "custom") { return new CustomStatusGame() @@ -21,13 +21,14 @@ namespace Discord.WebSocket CreatedAt = DateTimeOffset.FromUnixTimeMilliseconds(model.CreatedAt.Value), }; } + #endregion - // Spotify Game + #region Spotify Game if (model.SyncId.IsSpecified) { var assets = model.Assets.GetValueOrDefault()?.ToEntity(); string albumText = assets?[1]?.Text; - string albumArtId = assets?[1]?.ImageId?.Replace("spotify:",""); + string albumArtId = assets?[1]?.ImageId?.Replace("spotify:", ""); var timestamps = model.Timestamps.IsSpecified ? model.Timestamps.Value.ToEntity() : null; return new SpotifyGame { @@ -37,7 +38,7 @@ namespace Discord.WebSocket TrackUrl = CDN.GetSpotifyDirectUrl(model.SyncId.Value), AlbumTitle = albumText, TrackTitle = model.Details.GetValueOrDefault(), - Artists = model.State.GetValueOrDefault()?.Split(';').Select(x=>x?.Trim()).ToImmutableArray(), + Artists = model.State.GetValueOrDefault()?.Split(';').Select(x => x?.Trim()).ToImmutableArray(), StartedAt = timestamps?.Start, EndsAt = timestamps?.End, Duration = timestamps?.End - timestamps?.Start, @@ -46,8 +47,9 @@ namespace Discord.WebSocket Flags = model.Flags.GetValueOrDefault(), }; } + #endregion - // Rich Game + #region Rich Game if (model.ApplicationId.IsSpecified) { ulong appId = model.ApplicationId.Value; @@ -66,7 +68,9 @@ namespace Discord.WebSocket Flags = model.Flags.GetValueOrDefault() }; } - // Stream Game + #endregion + + #region Stream Game if (model.StreamUrl.IsSpecified) { return new StreamingGame( @@ -77,10 +81,13 @@ namespace Discord.WebSocket Details = model.Details.GetValueOrDefault() }; } - // Normal Game + #endregion + + #region Normal Game return new Game(model.Name, model.Type.GetValueOrDefault() ?? ActivityType.Playing, model.Flags.IsSpecified ? model.Flags.Value : ActivityProperties.None, model.Details.GetValueOrDefault()); + #endregion } // (Small, Large) diff --git a/src/Discord.Net.Webhook/DiscordWebhookClient.cs b/src/Discord.Net.Webhook/DiscordWebhookClient.cs index 91d077411..a4fdf9179 100644 --- a/src/Discord.Net.Webhook/DiscordWebhookClient.cs +++ b/src/Discord.Net.Webhook/DiscordWebhookClient.cs @@ -60,8 +60,7 @@ namespace Discord.Webhook /// Thrown if the is null or whitespace. public DiscordWebhookClient(string webhookUrl, DiscordRestConfig config) : this(config) { - string token; - ParseWebhookUrl(webhookUrl, out _webhookId, out token); + ParseWebhookUrl(webhookUrl, out _webhookId, out string token); ApiClient.LoginAsync(TokenType.Webhook, token).GetAwaiter().GetResult(); Webhook = WebhookClientHelper.GetWebhookAsync(this, _webhookId).GetAwaiter().GetResult(); } @@ -88,8 +87,8 @@ namespace Discord.Webhook /// Sends a message to the channel for this webhook. /// Returns the ID of the created message. public Task SendMessageAsync(string text = null, bool isTTS = false, IEnumerable embeds = null, - string username = null, string avatarUrl = null, RequestOptions options = null, AllowedMentions allowedMentions = null) - => WebhookClientHelper.SendMessageAsync(this, text, isTTS, embeds, username, avatarUrl, allowedMentions, options); + string username = null, string avatarUrl = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageComponent component = null) + => WebhookClientHelper.SendMessageAsync(this, text, isTTS, embeds, username, avatarUrl, allowedMentions, options, component); /// /// Modifies a message posted using this webhook. diff --git a/src/Discord.Net.Webhook/Entities/Messages/WebhookMessageProperties.cs b/src/Discord.Net.Webhook/Entities/Messages/WebhookMessageProperties.cs index dec7b6e3b..ca2ff10a0 100644 --- a/src/Discord.Net.Webhook/Entities/Messages/WebhookMessageProperties.cs +++ b/src/Discord.Net.Webhook/Entities/Messages/WebhookMessageProperties.cs @@ -22,5 +22,9 @@ namespace Discord.Webhook /// Gets or sets the allowed mentions of the message. /// public Optional AllowedMentions { get; set; } + /// + /// Gets or sets the components that the message should display. + /// + public Optional Components { get; set; } } } diff --git a/src/Discord.Net.Webhook/Entities/Webhooks/RestInternalWebhook.cs b/src/Discord.Net.Webhook/Entities/Webhooks/RestInternalWebhook.cs index bbb160fcd..2a5c4786e 100644 --- a/src/Discord.Net.Webhook/Entities/Webhooks/RestInternalWebhook.cs +++ b/src/Discord.Net.Webhook/Entities/Webhooks/RestInternalWebhook.cs @@ -17,6 +17,7 @@ namespace Discord.Webhook public string Name { get; private set; } public string AvatarId { get; private set; } public ulong? GuildId { get; private set; } + public ulong? ApplicationId { get; private set; } public DateTimeOffset CreatedAt => SnowflakeUtils.FromSnowflake(Id); @@ -44,6 +45,8 @@ namespace Discord.Webhook GuildId = model.GuildId.Value; if (model.Name.IsSpecified) Name = model.Name.Value; + + ApplicationId = model.ApplicationId; } public string GetAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128) diff --git a/src/Discord.Net.Webhook/WebhookClientHelper.cs b/src/Discord.Net.Webhook/WebhookClientHelper.cs index 886ff234d..6e3651323 100644 --- a/src/Discord.Net.Webhook/WebhookClientHelper.cs +++ b/src/Discord.Net.Webhook/WebhookClientHelper.cs @@ -20,10 +20,15 @@ namespace Discord.Webhook throw new InvalidOperationException("Could not find a webhook with the supplied credentials."); return RestInternalWebhook.Create(client, model); } - public static async Task SendMessageAsync(DiscordWebhookClient client, - string text, bool isTTS, IEnumerable embeds, string username, string avatarUrl, AllowedMentions allowedMentions, RequestOptions options) + public static async Task SendMessageAsync(DiscordWebhookClient client, + string text, bool isTTS, IEnumerable embeds, string username, string avatarUrl, AllowedMentions allowedMentions, RequestOptions options, MessageComponent component) { - var args = new CreateWebhookMessageParams(text) { IsTTS = isTTS }; + var args = new CreateWebhookMessageParams + { + Content = text, + IsTTS = isTTS + }; + if (embeds != null) args.Embeds = embeds.Select(x => x.ToModel()).ToArray(); if (username != null) @@ -32,6 +37,8 @@ namespace Discord.Webhook args.AvatarUrl = avatarUrl; if (allowedMentions != null) args.AllowedMentions = allowedMentions.ToModel(); + if (component != null) + args.Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray(); var model = await client.ApiClient.CreateWebhookMessageAsync(client.Webhook.Id, args, options: options).ConfigureAwait(false); return model.Id; @@ -78,7 +85,8 @@ namespace Discord.Webhook : Optional.Create(), AllowedMentions = args.AllowedMentions.IsSpecified ? args.AllowedMentions.Value.ToModel() - : Optional.Create() + : Optional.Create(), + Components = args.Components.IsSpecified ? args.Components.Value?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() : Optional.Unspecified, }; await client.ApiClient.ModifyWebhookMessageAsync(client.Webhook.Id, messageId, apiArgs, options) diff --git a/src/Discord.Net/Discord.Net.nuspec b/src/Discord.Net/Discord.Net.nuspec index e3f0150f9..cb773a379 100644 --- a/src/Discord.Net/Discord.Net.nuspec +++ b/src/Discord.Net/Discord.Net.nuspec @@ -36,4 +36,4 @@ - + \ No newline at end of file diff --git a/test/Discord.Net.Analyzers.Tests/Discord.Net.Analyzers.Tests.csproj b/test/Discord.Net.Analyzers.Tests/Discord.Net.Analyzers.Tests.csproj index 8f69672f9..1257041e4 100644 --- a/test/Discord.Net.Analyzers.Tests/Discord.Net.Analyzers.Tests.csproj +++ b/test/Discord.Net.Analyzers.Tests/Discord.Net.Analyzers.Tests.csproj @@ -15,10 +15,10 @@ - - + + - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/test/Discord.Net.Analyzers.Tests/Helpers/CodeFixVerifier.Helper.cs b/test/Discord.Net.Analyzers.Tests/Helpers/CodeFixVerifier.Helper.cs index 0f73d0643..42f7b08c1 100644 --- a/test/Discord.Net.Analyzers.Tests/Helpers/CodeFixVerifier.Helper.cs +++ b/test/Discord.Net.Analyzers.Tests/Helpers/CodeFixVerifier.Helper.cs @@ -18,7 +18,7 @@ namespace TestHelper /// Apply the inputted CodeAction to the inputted document. /// Meant to be used to apply codefixes. /// - /// The Document to apply the fix on + /// The Document to apply the fix on. /// A CodeAction that will be applied to the Document. /// A Document with the changes from the CodeAction private static Document ApplyFix(Document document, CodeAction codeAction) @@ -33,8 +33,8 @@ namespace TestHelper /// Note: Considers Diagnostics to be the same if they have the same Ids. In the case of multiple diagnostics with the same Id in a row, /// this method may not necessarily return the new one. /// - /// The Diagnostics that existed in the code before the CodeFix was applied - /// The Diagnostics that exist in the code after the CodeFix was applied + /// The Diagnostics that existed in the code before the CodeFix was applied. + /// The Diagnostics that exist in the code after the CodeFix was applied. /// A list of Diagnostics that only surfaced in the code after the CodeFix was applied private static IEnumerable GetNewDiagnostics(IEnumerable diagnostics, IEnumerable newDiagnostics) { @@ -61,7 +61,7 @@ namespace TestHelper /// /// Get the existing compiler diagnostics on the inputted document. /// - /// The Document to run the compiler diagnostic analyzers on + /// The Document to run the compiler diagnostic analyzers on. /// The compiler diagnostics that were found in the code private static IEnumerable GetCompilerDiagnostics(Document document) { @@ -71,7 +71,7 @@ namespace TestHelper /// /// Given a document, turn it into a string based on the syntax root /// - /// The Document to be converted to a string + /// The Document to be converted to a string. /// A string containing the syntax of the Document after formatting private static string GetStringFromDocument(Document document) { diff --git a/test/Discord.Net.Analyzers.Tests/Helpers/DiagnosticResult.cs b/test/Discord.Net.Analyzers.Tests/Helpers/DiagnosticResult.cs index 5ae6f528e..87d915494 100644 --- a/test/Discord.Net.Analyzers.Tests/Helpers/DiagnosticResult.cs +++ b/test/Discord.Net.Analyzers.Tests/Helpers/DiagnosticResult.cs @@ -20,9 +20,9 @@ namespace TestHelper throw new ArgumentOutOfRangeException(nameof(column), "column must be >= -1"); } - this.Path = path; - this.Line = line; - this.Column = column; + Path = path; + Line = line; + Column = column; } public string Path { get; } @@ -41,16 +41,16 @@ namespace TestHelper { get { - if (this.locations == null) + if (locations == null) { - this.locations = new DiagnosticResultLocation[] { }; + locations = new DiagnosticResultLocation[] { }; } - return this.locations; + return locations; } set { - this.locations = value; + locations = value; } } @@ -64,7 +64,7 @@ namespace TestHelper { get { - return this.Locations.Length > 0 ? this.Locations[0].Path : ""; + return Locations.Length > 0 ? Locations[0].Path : ""; } } @@ -72,7 +72,7 @@ namespace TestHelper { get { - return this.Locations.Length > 0 ? this.Locations[0].Line : -1; + return Locations.Length > 0 ? Locations[0].Line : -1; } } @@ -80,7 +80,7 @@ namespace TestHelper { get { - return this.Locations.Length > 0 ? this.Locations[0].Column : -1; + return Locations.Length > 0 ? Locations[0].Column : -1; } } } diff --git a/test/Discord.Net.Analyzers.Tests/Helpers/DiagnosticVerifier.Helper.cs b/test/Discord.Net.Analyzers.Tests/Helpers/DiagnosticVerifier.Helper.cs index 99654f12c..23bb319a6 100644 --- a/test/Discord.Net.Analyzers.Tests/Helpers/DiagnosticVerifier.Helper.cs +++ b/test/Discord.Net.Analyzers.Tests/Helpers/DiagnosticVerifier.Helper.cs @@ -35,9 +35,9 @@ namespace TestHelper /// /// Given classes in the form of strings, their language, and an IDiagnosticAnlayzer to apply to it, return the diagnostics found in the string after converting it to a document. /// - /// Classes in the form of strings - /// The language the source classes are in - /// The analyzer to be run on the sources + /// Classes in the form of strings. + /// The language the source classes are in. + /// The analyzer to be run on the sources. /// An IEnumerable of Diagnostics that surfaced in the source code, sorted by Location private static Diagnostic[] GetSortedDiagnostics(string[] sources, string language, DiagnosticAnalyzer analyzer) { @@ -48,8 +48,8 @@ namespace TestHelper /// Given an analyzer and a document to apply it to, run the analyzer and gather an array of diagnostics found in it. /// The returned diagnostics are then ordered by location in the source document. /// - /// The analyzer to run on the documents - /// The Documents that the analyzer will be run on + /// The analyzer to run on the documents. + /// The Documents that the analyzer will be run on. /// An IEnumerable of Diagnostics that surfaced in the source code, sorted by Location protected static Diagnostic[] GetSortedDiagnosticsFromDocuments(DiagnosticAnalyzer analyzer, Document[] documents) { @@ -93,7 +93,7 @@ namespace TestHelper /// /// Sort diagnostics by location in source document /// - /// The list of Diagnostics to be sorted + /// The list of Diagnostics to be sorted. /// An IEnumerable containing the Diagnostics in order of Location private static Diagnostic[] SortDiagnostics(IEnumerable diagnostics) { @@ -106,8 +106,8 @@ namespace TestHelper /// /// Given an array of strings as sources and a language, turn them into a project and return the documents and spans of it. /// - /// Classes in the form of strings - /// The language the source code is in + /// Classes in the form of strings. + /// The language the source code is in. /// A Tuple containing the Documents produced from the sources and their TextSpans if relevant private static Document[] GetDocuments(string[] sources, string language) { @@ -130,8 +130,8 @@ namespace TestHelper /// /// Create a Document from a string through creating a project that contains it. /// - /// Classes in the form of a string - /// The language the source code is in + /// Classes in the form of a string. + /// The language the source code is in. /// A Document created from the source string protected static Document CreateDocument(string source, string language = LanguageNames.CSharp) { @@ -141,8 +141,8 @@ namespace TestHelper /// /// Create a project using the inputted strings as sources. /// - /// Classes in the form of strings - /// The language the source code is in + /// Classes in the form of strings. + /// The language the source code is in. /// A Project created out of the Documents created from the source strings private static Project CreateProject(string[] sources, string language = LanguageNames.CSharp) { @@ -187,7 +187,7 @@ namespace TestHelper private static HashSet RecursiveReferencedAssemblies(Assembly a, HashSet assemblies = null) { - assemblies = assemblies ?? new HashSet(); + assemblies ??= new HashSet(); if (assemblies.Add(a)) { foreach (var referencedAssemblyName in a.GetReferencedAssemblies()) diff --git a/test/Discord.Net.Analyzers.Tests/Verifiers/CodeFixVerifier.cs b/test/Discord.Net.Analyzers.Tests/Verifiers/CodeFixVerifier.cs index 5d057b610..d1cb6cd1b 100644 --- a/test/Discord.Net.Analyzers.Tests/Verifiers/CodeFixVerifier.cs +++ b/test/Discord.Net.Analyzers.Tests/Verifiers/CodeFixVerifier.cs @@ -1,4 +1,4 @@ -using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CodeActions; using Microsoft.CodeAnalysis.CodeFixes; using Microsoft.CodeAnalysis.Diagnostics; @@ -38,10 +38,10 @@ namespace TestHelper /// /// Called to test a C# codefix when applied on the inputted string as a source /// - /// A class in the form of a string before the CodeFix was applied to it - /// A class in the form of a string after the CodeFix was applied to it - /// Index determining which codefix to apply if there are multiple - /// A bool controlling whether or not the test will fail if the CodeFix introduces other warnings after being applied + /// A class in the form of a string before the CodeFix was applied to it. + /// A class in the form of a string after the CodeFix was applied to it. + /// Index determining which codefix to apply if there are multiple. + /// A bool controlling whether or not the test will fail if the CodeFix introduces other warnings after being applied. protected void VerifyCSharpFix(string oldSource, string newSource, int? codeFixIndex = null, bool allowNewCompilerDiagnostics = false) { VerifyFix(LanguageNames.CSharp, GetCSharpDiagnosticAnalyzer(), GetCSharpCodeFixProvider(), oldSource, newSource, codeFixIndex, allowNewCompilerDiagnostics); @@ -50,10 +50,10 @@ namespace TestHelper /// /// Called to test a VB codefix when applied on the inputted string as a source /// - /// A class in the form of a string before the CodeFix was applied to it - /// A class in the form of a string after the CodeFix was applied to it - /// Index determining which codefix to apply if there are multiple - /// A bool controlling whether or not the test will fail if the CodeFix introduces other warnings after being applied + /// A class in the form of a string before the CodeFix was applied to it. + /// A class in the form of a string after the CodeFix was applied to it. + /// Index determining which codefix to apply if there are multiple. + /// A bool controlling whether or not the test will fail if the CodeFix introduces other warnings after being applied. protected void VerifyBasicFix(string oldSource, string newSource, int? codeFixIndex = null, bool allowNewCompilerDiagnostics = false) { VerifyFix(LanguageNames.VisualBasic, GetBasicDiagnosticAnalyzer(), GetBasicCodeFixProvider(), oldSource, newSource, codeFixIndex, allowNewCompilerDiagnostics); @@ -65,13 +65,13 @@ namespace TestHelper /// Then gets the string after the codefix is applied and compares it with the expected result. /// Note: If any codefix causes new diagnostics to show up, the test fails unless allowNewCompilerDiagnostics is set to true. /// - /// The language the source code is in - /// The analyzer to be applied to the source code - /// The codefix to be applied to the code wherever the relevant Diagnostic is found - /// A class in the form of a string before the CodeFix was applied to it - /// A class in the form of a string after the CodeFix was applied to it - /// Index determining which codefix to apply if there are multiple - /// A bool controlling whether or not the test will fail if the CodeFix introduces other warnings after being applied + /// The language the source code is in. + /// The analyzer to be applied to the source code. + /// The codefix to be applied to the code wherever the relevant Diagnostic is found. + /// A class in the form of a string before the CodeFix was applied to it. + /// A class in the form of a string after the CodeFix was applied to it. + /// Index determining which codefix to apply if there are multiple. + /// A bool controlling whether or not the test will fail if the CodeFix introduces other warnings after being applied. private void VerifyFix(string language, DiagnosticAnalyzer analyzer, CodeFixProvider codeFixProvider, string oldSource, string newSource, int? codeFixIndex, bool allowNewCompilerDiagnostics) { var document = CreateDocument(oldSource, language); @@ -126,4 +126,4 @@ namespace TestHelper Assert.Equal(newSource, actual); } } -} \ No newline at end of file +} diff --git a/test/Discord.Net.Analyzers.Tests/Verifiers/DiagnosticVerifier.cs b/test/Discord.Net.Analyzers.Tests/Verifiers/DiagnosticVerifier.cs index 3564093f8..9b0219a63 100644 --- a/test/Discord.Net.Analyzers.Tests/Verifiers/DiagnosticVerifier.cs +++ b/test/Discord.Net.Analyzers.Tests/Verifiers/DiagnosticVerifier.cs @@ -37,8 +37,8 @@ namespace TestHelper /// Called to test a C# DiagnosticAnalyzer when applied on the single inputted string as a source /// Note: input a DiagnosticResult for each Diagnostic expected /// - /// A class in the form of a string to run the analyzer on - /// DiagnosticResults that should appear after the analyzer is run on the source + /// A class in the form of a string to run the analyzer on. + /// DiagnosticResults that should appear after the analyzer is run on the source. protected void VerifyCSharpDiagnostic(string source, params DiagnosticResult[] expected) { VerifyDiagnostics(new[] { source }, LanguageNames.CSharp, GetCSharpDiagnosticAnalyzer(), expected); @@ -48,8 +48,8 @@ namespace TestHelper /// Called to test a VB DiagnosticAnalyzer when applied on the single inputted string as a source /// Note: input a DiagnosticResult for each Diagnostic expected /// - /// A class in the form of a string to run the analyzer on - /// DiagnosticResults that should appear after the analyzer is run on the source + /// A class in the form of a string to run the analyzer on. + /// DiagnosticResults that should appear after the analyzer is run on the source. protected void VerifyBasicDiagnostic(string source, params DiagnosticResult[] expected) { VerifyDiagnostics(new[] { source }, LanguageNames.VisualBasic, GetBasicDiagnosticAnalyzer(), expected); @@ -59,8 +59,8 @@ namespace TestHelper /// Called to test a C# DiagnosticAnalyzer when applied on the inputted strings as a source /// Note: input a DiagnosticResult for each Diagnostic expected /// - /// An array of strings to create source documents from to run the analyzers on - /// DiagnosticResults that should appear after the analyzer is run on the sources + /// An array of strings to create source documents from to run the analyzers on. + /// DiagnosticResults that should appear after the analyzer is run on the sources. protected void VerifyCSharpDiagnostic(string[] sources, params DiagnosticResult[] expected) { VerifyDiagnostics(sources, LanguageNames.CSharp, GetCSharpDiagnosticAnalyzer(), expected); @@ -70,8 +70,8 @@ namespace TestHelper /// Called to test a VB DiagnosticAnalyzer when applied on the inputted strings as a source /// Note: input a DiagnosticResult for each Diagnostic expected /// - /// An array of strings to create source documents from to run the analyzers on - /// DiagnosticResults that should appear after the analyzer is run on the sources + /// An array of strings to create source documents from to run the analyzers on. + /// DiagnosticResults that should appear after the analyzer is run on the sources. protected void VerifyBasicDiagnostic(string[] sources, params DiagnosticResult[] expected) { VerifyDiagnostics(sources, LanguageNames.VisualBasic, GetBasicDiagnosticAnalyzer(), expected); @@ -81,10 +81,10 @@ namespace TestHelper /// General method that gets a collection of actual diagnostics found in the source after the analyzer is run, /// then verifies each of them. /// - /// An array of strings to create source documents from to run the analyzers on - /// The language of the classes represented by the source strings - /// The analyzer to be run on the source code - /// DiagnosticResults that should appear after the analyzer is run on the sources + /// An array of strings to create source documents from to run the analyzers on. + /// The language of the classes represented by the source strings. + /// The analyzer to be run on the source code. + /// DiagnosticResults that should appear after the analyzer is run on the sources. private void VerifyDiagnostics(string[] sources, string language, DiagnosticAnalyzer analyzer, params DiagnosticResult[] expected) { var diagnostics = GetSortedDiagnostics(sources, language, analyzer); @@ -98,9 +98,9 @@ namespace TestHelper /// Checks each of the actual Diagnostics found and compares them with the corresponding DiagnosticResult in the array of expected results. /// Diagnostics are considered equal only if the DiagnosticResultLocation, Id, Severity, and Message of the DiagnosticResult match the actual diagnostic. /// - /// The Diagnostics found by the compiler after running the analyzer on the source code - /// The analyzer that was being run on the sources - /// Diagnostic Results that should have appeared in the code + /// The Diagnostics found by the compiler after running the analyzer on the source code. + /// The analyzer that was being run on the sources. + /// Diagnostic Results that should have appeared in the code. private static void VerifyDiagnosticResults(IEnumerable actualResults, DiagnosticAnalyzer analyzer, params DiagnosticResult[] expectedResults) { int expectedCount = expectedResults.Length; @@ -173,10 +173,10 @@ namespace TestHelper /// /// Helper method to VerifyDiagnosticResult that checks the location of a diagnostic and compares it with the location in the expected DiagnosticResult. /// - /// The analyzer that was being run on the sources - /// The diagnostic that was found in the code - /// The Location of the Diagnostic found in the code - /// The DiagnosticResultLocation that should have been found + /// The analyzer that was being run on the sources. + /// The diagnostic that was found in the code. + /// The Location of the Diagnostic found in the code. + /// The DiagnosticResultLocation that should have been found. private static void VerifyDiagnosticLocation(DiagnosticAnalyzer analyzer, Diagnostic diagnostic, Location actual, DiagnosticResultLocation expected) { var actualSpan = actual.GetLineSpan(); @@ -215,8 +215,8 @@ namespace TestHelper /// /// Helper method to format a Diagnostic into an easily readable string /// - /// The analyzer that this verifier tests - /// The Diagnostics to be formatted + /// The analyzer that this verifier tests. + /// The Diagnostics to be formatted. /// The Diagnostics formatted as a string private static string FormatDiagnostics(DiagnosticAnalyzer analyzer, params Diagnostic[] diagnostics) { diff --git a/test/Discord.Net.Tests.Integration/ChannelsTests.cs b/test/Discord.Net.Tests.Integration/ChannelsTests.cs index 3bf60772f..9bb30c4ef 100644 --- a/test/Discord.Net.Tests.Integration/ChannelsTests.cs +++ b/test/Discord.Net.Tests.Integration/ChannelsTests.cs @@ -19,7 +19,7 @@ namespace Discord public ChannelsTests(RestGuildFixture guildFixture, ITestOutputHelper output) { guild = guildFixture.Guild; - this.output = output; + output = output; output.WriteLine($"RestGuildFixture using guild: {guild.Id}"); // capture all console output guildFixture.Client.Log += LogAsync; diff --git a/test/Discord.Net.Tests.Integration/Discord.Net.Tests.Integration.csproj b/test/Discord.Net.Tests.Integration/Discord.Net.Tests.Integration.csproj index c571059ef..8b16b2971 100644 --- a/test/Discord.Net.Tests.Integration/Discord.Net.Tests.Integration.csproj +++ b/test/Discord.Net.Tests.Integration/Discord.Net.Tests.Integration.csproj @@ -15,9 +15,9 @@ - + - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/test/Discord.Net.Tests.Integration/GuildTests.cs b/test/Discord.Net.Tests.Integration/GuildTests.cs index 40394a3a0..c309b0ed1 100644 --- a/test/Discord.Net.Tests.Integration/GuildTests.cs +++ b/test/Discord.Net.Tests.Integration/GuildTests.cs @@ -18,7 +18,7 @@ namespace Discord { client = guildFixture.Client; guild = guildFixture.Guild; - this.output = output; + output = output; output.WriteLine($"RestGuildFixture using guild: {guild.Id}"); guildFixture.Client.Log += LogAsync; } diff --git a/test/Discord.Net.Tests.Unit/ChannelPermissionsTests.cs b/test/Discord.Net.Tests.Unit/ChannelPermissionsTests.cs index a3566590a..2cab8fa21 100644 --- a/test/Discord.Net.Tests.Unit/ChannelPermissionsTests.cs +++ b/test/Discord.Net.Tests.Unit/ChannelPermissionsTests.cs @@ -85,6 +85,10 @@ namespace Discord AssertFlag(() => new ChannelPermissions(stream: true), ChannelPermission.Stream); AssertFlag(() => new ChannelPermissions(manageRoles: true), ChannelPermission.ManageRoles); AssertFlag(() => new ChannelPermissions(manageWebhooks: true), ChannelPermission.ManageWebhooks); + AssertFlag(() => new ChannelPermissions(useApplicationCommands: true), ChannelPermission.UseApplicationCommands); + AssertFlag(() => new ChannelPermissions(createPrivateThreads: true), ChannelPermission.CreatePrivateThreads); + AssertFlag(() => new ChannelPermissions(createPublicThreads: true), ChannelPermission.CreatePublicThreads); + AssertFlag(() => new ChannelPermissions(sendMessagesInThreads: true), ChannelPermission.SendMessagesInThreads); } /// diff --git a/test/Discord.Net.Tests.Unit/ColorTests.cs b/test/Discord.Net.Tests.Unit/ColorTests.cs index 87c76e4e2..46d8feabb 100644 --- a/test/Discord.Net.Tests.Unit/ColorTests.cs +++ b/test/Discord.Net.Tests.Unit/ColorTests.cs @@ -10,12 +10,11 @@ namespace Discord /// public class ColorTests { - [Fact] public void Color_New() { Assert.Equal(0u, new Color().RawValue); Assert.Equal(uint.MinValue, new Color(uint.MinValue).RawValue); - Assert.Equal(uint.MaxValue, new Color(uint.MaxValue).RawValue); + Assert.Throws(() => new Color(uint.MaxValue)); } [Fact] public void Color_Default() diff --git a/test/Discord.Net.Tests.Unit/Discord.Net.Tests.Unit.csproj b/test/Discord.Net.Tests.Unit/Discord.Net.Tests.Unit.csproj index 866041696..716c3ebc4 100644 --- a/test/Discord.Net.Tests.Unit/Discord.Net.Tests.Unit.csproj +++ b/test/Discord.Net.Tests.Unit/Discord.Net.Tests.Unit.csproj @@ -13,9 +13,9 @@ - + - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/test/Discord.Net.Tests.Unit/EmbedBuilderTests.cs b/test/Discord.Net.Tests.Unit/EmbedBuilderTests.cs index da21afee1..83c6ede19 100644 --- a/test/Discord.Net.Tests.Unit/EmbedBuilderTests.cs +++ b/test/Discord.Net.Tests.Unit/EmbedBuilderTests.cs @@ -9,9 +9,9 @@ namespace Discord /// public class EmbedBuilderTests { - private const string name = "chrisj"; - private const string icon = "https://meowpuffygottem.fun/blob.png"; - private const string url = "https://meowpuffygottem.fun/"; + private const string Name = "chrisj"; + private const string Icon = "https://meowpuffygottem.fun/blob.png"; + private const string Url = "https://meowpuffygottem.fun/"; /// /// Tests the behavior of . @@ -24,12 +24,12 @@ namespace Discord Assert.Null(builder.Author); builder = new EmbedBuilder() - .WithAuthor(name, icon, url); + .WithAuthor(Name, Icon, Url); Assert.NotNull(builder.Author); - Assert.Equal(name, builder.Author.Name); - Assert.Equal(icon, builder.Author.IconUrl); - Assert.Equal(url, builder.Author.Url); + Assert.Equal(Name, builder.Author.Name); + Assert.Equal(Icon, builder.Author.IconUrl); + Assert.Equal(Url, builder.Author.Url); } /// @@ -39,15 +39,15 @@ namespace Discord public void WithAuthor_AuthorBuilder() { var author = new EmbedAuthorBuilder() - .WithIconUrl(icon) - .WithName(name) - .WithUrl(url); + .WithIconUrl(Icon) + .WithName(Name) + .WithUrl(Url); var builder = new EmbedBuilder() .WithAuthor(author); Assert.NotNull(builder.Author); - Assert.Equal(name, builder.Author.Name); - Assert.Equal(icon, builder.Author.IconUrl); - Assert.Equal(url, builder.Author.Url); + Assert.Equal(Name, builder.Author.Name); + Assert.Equal(Icon, builder.Author.IconUrl); + Assert.Equal(Url, builder.Author.Url); } /// @@ -58,13 +58,13 @@ namespace Discord { var builder = new EmbedBuilder() .WithAuthor((author) => - author.WithIconUrl(icon) - .WithName(name) - .WithUrl(url)); + author.WithIconUrl(Icon) + .WithName(Name) + .WithUrl(Url)); Assert.NotNull(builder.Author); - Assert.Equal(name, builder.Author.Name); - Assert.Equal(icon, builder.Author.IconUrl); - Assert.Equal(url, builder.Author.Url); + Assert.Equal(Name, builder.Author.Name); + Assert.Equal(Icon, builder.Author.IconUrl); + Assert.Equal(Url, builder.Author.Url); } /// @@ -74,12 +74,12 @@ namespace Discord public void EmbedAuthorBuilder() { var builder = new EmbedAuthorBuilder() - .WithIconUrl(icon) - .WithName(name) - .WithUrl(url); - Assert.Equal(icon, builder.IconUrl); - Assert.Equal(name, builder.Name); - Assert.Equal(url, builder.Url); + .WithIconUrl(Icon) + .WithName(Name) + .WithUrl(Url); + Assert.Equal(Icon, builder.IconUrl); + Assert.Equal(Name, builder.Name); + Assert.Equal(Url, builder.Url); } /// @@ -95,8 +95,10 @@ namespace Discord { Assert.Throws(() => { - var builder = new EmbedBuilder(); - builder.Title = title; + var builder = new EmbedBuilder + { + Title = title + }; }); Assert.Throws(() => { @@ -113,8 +115,10 @@ namespace Discord [InlineData("jVyLChmA7aBZozXQuZ3VDEcwW6zOq0nteOVYBZi31ny73rpXfSSBXR4Jw6FiplDKQseKskwRMuBZkUewrewqAbkBZpslHirvC5nEzRySoDIdTRnkVvTXZUXg75l3bQCjuuHxDd6DfrY8ihd6yZX1Y0XFeg239YBcYV4TpL9uQ8H3HFYxrWhLlG2PRVjUmiglP5iXkawszNwMVm1SZ5LZT4jkMZHxFegVi7170d16iaPWOovu50aDDHy087XBtLKV")] public void Tile_Valid(string title) { - var builder = new EmbedBuilder(); - builder.Title = title; + var builder = new EmbedBuilder + { + Title = title + }; new EmbedBuilder().WithTitle(title); } @@ -133,8 +137,10 @@ namespace Discord Assert.Throws(() => new EmbedBuilder().WithDescription(description)); Assert.Throws(() => { - var b = new EmbedBuilder(); - b.Description = description; + var b = new EmbedBuilder + { + Description = description + }; }); } } @@ -156,14 +162,16 @@ namespace Discord var b = new EmbedBuilder().WithDescription(description); Assert.Equal(description, b.Description); - b = new EmbedBuilder(); - b.Description = description; + b = new EmbedBuilder + { + Description = description + }; Assert.Equal(description, b.Description); } } /// - /// Tests that valid urls do not throw any exceptions. + /// Tests that valid url's do not throw any exceptions. /// /// The url to set. [Theory] @@ -181,10 +189,12 @@ namespace Discord Assert.Equal(result.ImageUrl, url); Assert.Equal(result.ThumbnailUrl, url); - result = new EmbedBuilder(); - result.Url = url; - result.ImageUrl = url; - result.ThumbnailUrl = url; + result = new EmbedBuilder + { + Url = url, + ImageUrl = url, + ThumbnailUrl = url + }; Assert.Equal(result.Url, url); Assert.Equal(result.ImageUrl, url); Assert.Equal(result.ThumbnailUrl, url); @@ -207,15 +217,15 @@ namespace Discord public void Length() { var e = new EmbedBuilder() - .WithAuthor(name, icon, url) + .WithAuthor(Name, Icon, Url) .WithColor(Color.Blue) .WithDescription("This is the test description.") - .WithFooter("This is the footer", url) - .WithImageUrl(url) - .WithThumbnailUrl(url) + .WithFooter("This is the footer", Url) + .WithImageUrl(Url) + .WithThumbnailUrl(Url) .WithTimestamp(DateTimeOffset.MinValue) .WithTitle("This is the title") - .WithUrl(url) + .WithUrl(Url) .AddField("Field 1", "Inline", true) .AddField("Field 2", "Not Inline", false); Assert.Equal(100, e.Length); @@ -253,11 +263,11 @@ namespace Discord var e = new EmbedBuilder() .WithFooter(x => { - x.IconUrl = url; - x.Text = name; + x.IconUrl = Url; + x.Text = Name; }); - Assert.Equal(url, e.Footer.IconUrl); - Assert.Equal(name, e.Footer.Text); + Assert.Equal(Url, e.Footer.IconUrl); + Assert.Equal(Name, e.Footer.Text); } /// @@ -268,18 +278,20 @@ namespace Discord { var footer = new EmbedFooterBuilder() { - IconUrl = url, - Text = name + IconUrl = Url, + Text = Name }; var e = new EmbedBuilder() .WithFooter(footer); - Assert.Equal(url, e.Footer.IconUrl); - Assert.Equal(name, e.Footer.Text); + Assert.Equal(Url, e.Footer.IconUrl); + Assert.Equal(Name, e.Footer.Text); // use the property - e = new EmbedBuilder(); - e.Footer = footer; - Assert.Equal(url, e.Footer.IconUrl); - Assert.Equal(name, e.Footer.Text); + e = new EmbedBuilder + { + Footer = footer + }; + Assert.Equal(Url, e.Footer.IconUrl); + Assert.Equal(Name, e.Footer.Text); } /// @@ -289,9 +301,9 @@ namespace Discord public void WithFooter_Strings() { var e = new EmbedBuilder() - .WithFooter(name, url); - Assert.Equal(url, e.Footer.IconUrl); - Assert.Equal(name, e.Footer.Text); + .WithFooter(Name, Url); + Assert.Equal(Url, e.Footer.IconUrl); + Assert.Equal(Name, e.Footer.Text); } /// @@ -301,10 +313,10 @@ namespace Discord public void EmbedFooterBuilder() { var footer = new EmbedFooterBuilder() - .WithIconUrl(url) - .WithText(name); - Assert.Equal(url, footer.IconUrl); - Assert.Equal(name, footer.Text); + .WithIconUrl(Url) + .WithText(Name); + Assert.Equal(Url, footer.IconUrl); + Assert.Equal(Name, footer.Text); } /// /// Tests that invalid text throws an . @@ -375,10 +387,12 @@ namespace Discord Assert.Equal("value", e.Value); Assert.True(e.IsInline); // use the properties - e = new EmbedFieldBuilder(); - e.IsInline = true; - e.Name = "name"; - e.Value = "value"; + e = new EmbedFieldBuilder + { + IsInline = true, + Name = "name", + Value = "value" + }; Assert.Equal("name", e.Name); Assert.Equal("value", e.Value); Assert.True(e.IsInline); diff --git a/test/Discord.Net.Tests.Unit/FormatTests.cs b/test/Discord.Net.Tests.Unit/FormatTests.cs index 2a5adbaae..c015c7e15 100644 --- a/test/Discord.Net.Tests.Unit/FormatTests.cs +++ b/test/Discord.Net.Tests.Unit/FormatTests.cs @@ -59,5 +59,20 @@ namespace Discord { Assert.Equal(expected, Format.BlockQuote(input)); } + + [Theory] + [InlineData("", "")] + [InlineData("\n", "\n")] + [InlineData("**hi**", "hi")] + [InlineData("__uwu__", "uwu")] + [InlineData(">>__uwu__", "uwu")] + [InlineData("```uwu```", "uwu")] + [InlineData("~uwu~", "uwu")] + [InlineData("berries __and__ *Cream**, I'm a little lad who loves berries and cream", "berries and Cream, I'm a little lad who loves berries and cream")] + public void StripMarkdown(string input, string expected) + { + var test = Format.StripMarkDown(input); + Assert.Equal(expected, test); + } } } diff --git a/test/Discord.Net.Tests.Unit/GuildPermissionsTests.cs b/test/Discord.Net.Tests.Unit/GuildPermissionsTests.cs index cd29b2606..f0b0b2db7 100644 --- a/test/Discord.Net.Tests.Unit/GuildPermissionsTests.cs +++ b/test/Discord.Net.Tests.Unit/GuildPermissionsTests.cs @@ -91,7 +91,14 @@ namespace Discord AssertFlag(() => new GuildPermissions(manageNicknames: true), GuildPermission.ManageNicknames); AssertFlag(() => new GuildPermissions(manageRoles: true), GuildPermission.ManageRoles); AssertFlag(() => new GuildPermissions(manageWebhooks: true), GuildPermission.ManageWebhooks); - AssertFlag(() => new GuildPermissions(manageEmojis: true), GuildPermission.ManageEmojis); + AssertFlag(() => new GuildPermissions(manageEmojisAndStickers: true), GuildPermission.ManageEmojisAndStickers); + AssertFlag(() => new GuildPermissions(useApplicationCommands: true), GuildPermission.UseApplicationCommands); + AssertFlag(() => new GuildPermissions(requestToSpeak: true), GuildPermission.RequestToSpeak); + AssertFlag(() => new GuildPermissions(manageEvents: true), GuildPermission.ManageEvents); + AssertFlag(() => new GuildPermissions(manageThreads: true), GuildPermission.ManageThreads); + AssertFlag(() => new GuildPermissions(createPublicThreads: true), GuildPermission.CreatePublicThreads); + AssertFlag(() => new GuildPermissions(createPrivateThreads: true), GuildPermission.CreatePrivateThreads); + AssertFlag(() => new GuildPermissions(useExternalStickers: true), GuildPermission.UseExternalStickers); } /// @@ -161,7 +168,14 @@ namespace Discord AssertUtil(GuildPermission.ManageNicknames, x => x.ManageNicknames, (p, enable) => p.Modify(manageNicknames: enable)); AssertUtil(GuildPermission.ManageRoles, x => x.ManageRoles, (p, enable) => p.Modify(manageRoles: enable)); AssertUtil(GuildPermission.ManageWebhooks, x => x.ManageWebhooks, (p, enable) => p.Modify(manageWebhooks: enable)); - AssertUtil(GuildPermission.ManageEmojis, x => x.ManageEmojis, (p, enable) => p.Modify(manageEmojis: enable)); + AssertUtil(GuildPermission.ManageEmojisAndStickers, x => x.ManageEmojisAndStickers, (p, enable) => p.Modify(manageEmojisAndStickers: enable)); + AssertUtil(GuildPermission.UseApplicationCommands, x => x.UseApplicationCommands, (p, enable) => p.Modify(useApplicationCommands: enable)); + AssertUtil(GuildPermission.RequestToSpeak, x => x.RequestToSpeak, (p, enable) => p.Modify(requestToSpeak: enable)); + AssertUtil(GuildPermission.ManageEvents, x => x.ManageEvents, (p, enable) => p.Modify(manageEvents: enable)); + AssertUtil(GuildPermission.ManageThreads, x => x.ManageThreads, (p, enable) => p.Modify(manageThreads: enable)); + AssertUtil(GuildPermission.CreatePublicThreads, x => x.CreatePublicThreads, (p, enable) => p.Modify(createPublicThreads: enable)); + AssertUtil(GuildPermission.CreatePrivateThreads, x => x.CreatePrivateThreads, (p, enable) => p.Modify(createPrivateThreads: enable)); + AssertUtil(GuildPermission.UseExternalStickers, x => x.UseExternalStickers, (p, enable) => p.Modify(useExternalStickers: enable)); } } } diff --git a/test/Discord.Net.Tests.Unit/MentionUtilsTests.cs b/test/Discord.Net.Tests.Unit/MentionUtilsTests.cs index 52f35fd9c..abd1191c8 100644 --- a/test/Discord.Net.Tests.Unit/MentionUtilsTests.cs +++ b/test/Discord.Net.Tests.Unit/MentionUtilsTests.cs @@ -47,9 +47,7 @@ namespace Discord var parsed = MentionUtils.ParseUser(user); Assert.Equal(id, parsed); - // also check tryparse - ulong result; - Assert.True(MentionUtils.TryParseUser(user, out result)); + Assert.True(MentionUtils.TryParseUser(user, out ulong result)); Assert.Equal(id, result); } [Theory] @@ -75,9 +73,7 @@ namespace Discord var parsed = MentionUtils.ParseChannel(channel); Assert.Equal(id, parsed); - // also check tryparse - ulong result; - Assert.True(MentionUtils.TryParseChannel(channel, out result)); + Assert.True(MentionUtils.TryParseChannel(channel, out ulong result)); Assert.Equal(id, result); } [Theory] @@ -103,9 +99,7 @@ namespace Discord var parsed = MentionUtils.ParseRole(role); Assert.Equal(id, parsed); - // also check tryparse - ulong result; - Assert.True(MentionUtils.TryParseRole(role, out result)); + Assert.True(MentionUtils.TryParseRole(role, out ulong result)); Assert.Equal(id, result); } [Theory] diff --git a/test/Discord.Net.Tests.Unit/MockedEntities/MockedDMChannel.cs b/test/Discord.Net.Tests.Unit/MockedEntities/MockedDMChannel.cs index 593b9201a..519bab4d9 100644 --- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedDMChannel.cs +++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedDMChannel.cs @@ -78,24 +78,15 @@ namespace Discord throw new NotImplementedException(); } - public Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) - { - throw new NotImplementedException(); - } - - public Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) - { - throw new NotImplementedException(); - } - - public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null) - { - throw new NotImplementedException(); - } - public Task TriggerTypingAsync(RequestOptions options = null) { throw new NotImplementedException(); } + + public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) => throw new NotImplementedException(); + public Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) => throw new NotImplementedException(); + public Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) => throw new NotImplementedException(); + public Task SendFileAsync(FileAttachment attachment, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) => throw new NotImplementedException(); + public Task SendFilesAsync(IEnumerable attachments, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) => throw new NotImplementedException(); } } diff --git a/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs b/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs index 6daf6a9c8..6b134d92f 100644 --- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs +++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs @@ -86,17 +86,17 @@ namespace Discord throw new NotImplementedException(); } - public Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) + public Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) { throw new NotImplementedException(); } - public Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) + public Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) { throw new NotImplementedException(); } - public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null) + public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) { throw new NotImplementedException(); } @@ -105,5 +105,8 @@ namespace Discord { throw new NotImplementedException(); } + + public Task SendFileAsync(FileAttachment attachment, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) => throw new NotImplementedException(); + public Task SendFilesAsync(IEnumerable attachments, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) => throw new NotImplementedException(); } } diff --git a/test/Discord.Net.Tests.Unit/MockedEntities/MockedTextChannel.cs b/test/Discord.Net.Tests.Unit/MockedEntities/MockedTextChannel.cs index 51aece5f2..6d08a4478 100644 --- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedTextChannel.cs +++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedTextChannel.cs @@ -46,6 +46,10 @@ namespace Discord { throw new NotImplementedException(); } + public Task CreateInviteToApplicationAsync(ulong applicationId, int? maxAge, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null) + => throw new NotImplementedException(); + public Task CreateInviteToStreamAsync(IUser user, int? maxAge, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null) + => throw new NotImplementedException(); public Task CreateWebhookAsync(string name, Stream avatar = null, RequestOptions options = null) { @@ -172,17 +176,17 @@ namespace Discord throw new NotImplementedException(); } - public Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) + public Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) { throw new NotImplementedException(); } - public Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null) + public Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) { throw new NotImplementedException(); } - public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null) + public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) { throw new NotImplementedException(); } @@ -206,5 +210,9 @@ namespace Discord { throw new NotImplementedException(); } + + public Task SendFileAsync(FileAttachment attachment, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) => throw new NotImplementedException(); + public Task SendFilesAsync(IEnumerable attachments, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) => throw new NotImplementedException(); + public Task CreateThreadAsync(string name, ThreadType type = ThreadType.PublicThread, ThreadArchiveDuration autoArchiveDuration = ThreadArchiveDuration.OneDay, IMessage message = null, bool? invitable = null, int? slowmode = null, RequestOptions options = null) => throw new NotImplementedException(); } } diff --git a/test/Discord.Net.Tests.Unit/MockedEntities/MockedVoiceChannel.cs b/test/Discord.Net.Tests.Unit/MockedEntities/MockedVoiceChannel.cs index 6696c3613..61a32e391 100644 --- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedVoiceChannel.cs +++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedVoiceChannel.cs @@ -27,7 +27,6 @@ namespace Discord public string Name => throw new NotImplementedException(); public DateTimeOffset CreatedAt => throw new NotImplementedException(); - public ulong Id => throw new NotImplementedException(); public Task AddPermissionOverwriteAsync(IRole role, OverwritePermissions permissions, RequestOptions options = null) @@ -49,6 +48,10 @@ namespace Discord { throw new NotImplementedException(); } + public Task CreateInviteToApplicationAsync(ulong applicationId, int? maxAge, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null) + => throw new NotImplementedException(); + public Task CreateInviteToStreamAsync(IUser user, int? maxAge, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null) + => throw new NotImplementedException(); public Task DeleteAsync(RequestOptions options = null) { From 900c1f4385a66fe0e190a92edf05c434b3fd5838 Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Tue, 23 Nov 2021 11:46:18 -0400 Subject: [PATCH 148/212] Fix emoto try parse (#1941) --- src/Discord.Net.Core/Entities/Emotes/Emote.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Discord.Net.Core/Entities/Emotes/Emote.cs b/src/Discord.Net.Core/Entities/Emotes/Emote.cs index cd88f97cc..3a8cd7457 100644 --- a/src/Discord.Net.Core/Entities/Emotes/Emote.cs +++ b/src/Discord.Net.Core/Entities/Emotes/Emote.cs @@ -74,6 +74,10 @@ namespace Discord public static bool TryParse(string text, out Emote result) { result = null; + + if (text == null) + return false; + if (text.Length >= 4 && text[0] == '<' && (text[1] == ':' || (text[1] == 'a' && text[2] == ':')) && text[text.Length - 1] == '>') { bool animated = text[1] == 'a'; From 3cb662ff7a829c0d436be5437a921da7927e38aa Mon Sep 17 00:00:00 2001 From: d4n Date: Tue, 23 Nov 2021 10:49:31 -0500 Subject: [PATCH 149/212] Add null check to AllowedMentions.ToModel() (#1865) --- src/Discord.Net.Rest/Extensions/EntityExtensions.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Discord.Net.Rest/Extensions/EntityExtensions.cs b/src/Discord.Net.Rest/Extensions/EntityExtensions.cs index 61fe330df..9e1e5102f 100644 --- a/src/Discord.Net.Rest/Extensions/EntityExtensions.cs +++ b/src/Discord.Net.Rest/Extensions/EntityExtensions.cs @@ -71,6 +71,7 @@ namespace Discord.Rest public static API.AllowedMentions ToModel(this AllowedMentions entity) { + if (entity == null) return null; return new API.AllowedMentions() { Parse = entity.AllowedTypes?.EnumerateMentionTypes().ToArray(), From e0dbe7c69543d9fcdf24c26e9c16c9b8b1eaa94d Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 24 Nov 2021 09:43:57 -0300 Subject: [PATCH 150/212] Add MaxBitrate to the interface (#1861) Co-authored-by: Quin Lynch <49576606+quinchs@users.noreply.github.com> --- src/Discord.Net.Core/Entities/Guilds/IGuild.cs | 7 +++++++ src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs | 14 ++++++++++++++ .../Entities/Guilds/SocketGuild.cs | 10 ++-------- 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/Discord.Net.Core/Entities/Guilds/IGuild.cs b/src/Discord.Net.Core/Entities/Guilds/IGuild.cs index ebf2ccd4a..c2db435cf 100644 --- a/src/Discord.Net.Core/Entities/Guilds/IGuild.cs +++ b/src/Discord.Net.Core/Entities/Guilds/IGuild.cs @@ -313,6 +313,13 @@ namespace Discord /// The approximate number of non-offline members in this guild. /// int? ApproximatePresenceCount { get; } + /// + /// Gets the max bitrate for voice channels in this guild. + /// + /// + /// A representing the maximum bitrate value allowed by Discord in this guild. + /// + int MaxBitrate { get; } /// /// Gets the preferred locale of this guild in IETF BCP 47 diff --git a/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs b/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs index 9b0b66633..daecb1d8c 100644 --- a/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs +++ b/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs @@ -85,6 +85,20 @@ namespace Discord.Rest public int? ApproximateMemberCount { get; private set; } /// public int? ApproximatePresenceCount { get; private set; } + /// + public int MaxBitrate + { + get + { + return PremiumTier switch + { + PremiumTier.Tier1 => 128000, + PremiumTier.Tier2 => 256000, + PremiumTier.Tier3 => 384000, + _ => 96000, + }; + } + } /// public NsfwLevel NsfwLevel { get; private set; } /// diff --git a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs index beaab1cfe..03c655a34 100644 --- a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs +++ b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs @@ -185,24 +185,18 @@ namespace Discord.WebSocket return id.HasValue ? GetVoiceChannel(id.Value) : null; } } - /// - /// Gets the max bitrate for voice channels in this guild. - /// - /// - /// A representing the maximum bitrate value allowed by Discord in this guild. - /// + /// public int MaxBitrate { get { - var maxBitrate = PremiumTier switch + return PremiumTier switch { PremiumTier.Tier1 => 128000, PremiumTier.Tier2 => 256000, PremiumTier.Tier3 => 384000, _ => 96000, }; - return maxBitrate; } } /// From 6abdfcbf878329f8294884b60e90acf797bf1f9b Mon Sep 17 00:00:00 2001 From: Slate Date: Wed, 24 Nov 2021 12:55:07 +0000 Subject: [PATCH 151/212] Added negative TimeSpan handling (#1666) - Added unit tests for the TimeSpanTypeReader - Fixes https://github.com/discord-net/Discord.Net/issues/1657 --- .../Readers/TimeSpanTypeReader.cs | 58 ++++++++++----- .../TimeSpanTypeReaderTests.cs | 70 +++++++++++++++++++ 2 files changed, 109 insertions(+), 19 deletions(-) create mode 100644 test/Discord.Net.Tests.Unit/TimeSpanTypeReaderTests.cs diff --git a/src/Discord.Net.Commands/Readers/TimeSpanTypeReader.cs b/src/Discord.Net.Commands/Readers/TimeSpanTypeReader.cs index b4a27cb5b..5448553b3 100644 --- a/src/Discord.Net.Commands/Readers/TimeSpanTypeReader.cs +++ b/src/Discord.Net.Commands/Readers/TimeSpanTypeReader.cs @@ -6,30 +6,50 @@ namespace Discord.Commands { internal class TimeSpanTypeReader : TypeReader { - private static readonly string[] Formats = { - "%d'd'%h'h'%m'm'%s's'", //4d3h2m1s - "%d'd'%h'h'%m'm'", //4d3h2m - "%d'd'%h'h'%s's'", //4d3h 1s - "%d'd'%h'h'", //4d3h - "%d'd'%m'm'%s's'", //4d 2m1s - "%d'd'%m'm'", //4d 2m - "%d'd'%s's'", //4d 1s - "%d'd'", //4d - "%h'h'%m'm'%s's'", // 3h2m1s - "%h'h'%m'm'", // 3h2m - "%h'h'%s's'", // 3h 1s - "%h'h'", // 3h - "%m'm'%s's'", // 2m1s - "%m'm'", // 2m - "%s's'", // 1s + /// + /// TimeSpan try parse formats. + /// + private static readonly string[] Formats = + { + "%d'd'%h'h'%m'm'%s's'", // 4d3h2m1s + "%d'd'%h'h'%m'm'", // 4d3h2m + "%d'd'%h'h'%s's'", // 4d3h 1s + "%d'd'%h'h'", // 4d3h + "%d'd'%m'm'%s's'", // 4d 2m1s + "%d'd'%m'm'", // 4d 2m + "%d'd'%s's'", // 4d 1s + "%d'd'", // 4d + "%h'h'%m'm'%s's'", // 3h2m1s + "%h'h'%m'm'", // 3h2m + "%h'h'%s's'", // 3h 1s + "%h'h'", // 3h + "%m'm'%s's'", // 2m1s + "%m'm'", // 2m + "%s's'", // 1s }; /// public override Task ReadAsync(ICommandContext context, string input, IServiceProvider services) { - return (TimeSpan.TryParseExact(input.ToLowerInvariant(), Formats, CultureInfo.InvariantCulture, out var timeSpan)) - ? Task.FromResult(TypeReaderResult.FromSuccess(timeSpan)) - : Task.FromResult(TypeReaderResult.FromError(CommandError.ParseFailed, "Failed to parse TimeSpan")); + if (string.IsNullOrEmpty(input)) + throw new ArgumentException(message: $"{nameof(input)} must not be null or empty.", paramName: nameof(input)); + + var isNegative = input[0] == '-'; // Char for CultureInfo.InvariantCulture.NumberFormat.NegativeSign + if (isNegative) + { + input = input.Substring(1); + } + + if (TimeSpan.TryParseExact(input.ToLowerInvariant(), Formats, CultureInfo.InvariantCulture, out var timeSpan)) + { + return isNegative + ? Task.FromResult(TypeReaderResult.FromSuccess(-timeSpan)) + : Task.FromResult(TypeReaderResult.FromSuccess(timeSpan)); + } + else + { + return Task.FromResult(TypeReaderResult.FromError(CommandError.ParseFailed, "Failed to parse TimeSpan")); + } } } } diff --git a/test/Discord.Net.Tests.Unit/TimeSpanTypeReaderTests.cs b/test/Discord.Net.Tests.Unit/TimeSpanTypeReaderTests.cs new file mode 100644 index 000000000..4cd9cae09 --- /dev/null +++ b/test/Discord.Net.Tests.Unit/TimeSpanTypeReaderTests.cs @@ -0,0 +1,70 @@ +using Discord.Commands; +using System; +using Xunit; + +namespace Discord +{ + public class TimeSpanTypeReaderTests + { + [Theory] + [InlineData("4d3h2m1s", false)] // tests format "%d'd'%h'h'%m'm'%s's'" + [InlineData("4d3h2m", false)] // tests format "%d'd'%h'h'%m'm'" + [InlineData("4d3h1s", false)] // tests format "%d'd'%h'h'%s's'" + [InlineData("4d3h", false)] // tests format "%d'd'%h'h'" + [InlineData("4d2m1s", false)] // tests format "%d'd'%m'm'%s's'" + [InlineData("4d2m", false)] // tests format "%d'd'%m'm'" + [InlineData("4d1s", false)] // tests format "%d'd'%s's'" + [InlineData("4d", false)] // tests format "%d'd'" + [InlineData("3h2m1s", false)] // tests format "%h'h'%m'm'%s's'" + [InlineData("3h2m", false)] // tests format "%h'h'%m'm'" + [InlineData("3h1s", false)] // tests format "%h'h'%s's'" + [InlineData("3h", false)] // tests format "%h'h'" + [InlineData("2m1s", false)] // tests format "%m'm'%s's'" + [InlineData("2m", false)] // tests format "%m'm'" + [InlineData("1s", false)] // tests format "%s's'" + // Negatives + [InlineData("-4d3h2m1s", true)] // tests format "-%d'd'%h'h'%m'm'%s's'" + [InlineData("-4d3h2m", true)] // tests format "-%d'd'%h'h'%m'm'" + [InlineData("-4d3h1s", true)] // tests format "-%d'd'%h'h'%s's'" + [InlineData("-4d3h", true)] // tests format "-%d'd'%h'h'" + [InlineData("-4d2m1s", true)] // tests format "-%d'd'%m'm'%s's'" + [InlineData("-4d2m", true)] // tests format "-%d'd'%m'm'" + [InlineData("-4d1s", true)] // tests format "-%d'd'%s's'" + [InlineData("-4d", true)] // tests format "-%d'd'" + [InlineData("-3h2m1s", true)] // tests format "-%h'h'%m'm'%s's'" + [InlineData("-3h2m", true)] // tests format "-%h'h'%m'm'" + [InlineData("-3h1s", true)] // tests format "-%h'h'%s's'" + [InlineData("-3h", true)] // tests format "-%h'h'" + [InlineData("-2m1s", true)] // tests format "-%m'm'%s's'" + [InlineData("-2m", true)] // tests format "-%m'm'" + [InlineData("-1s", true)] // tests format "-%s's'" + public void TestTimeSpanParse(string input, bool isNegative) + { + var reader = new TimeSpanTypeReader(); + var result = reader.ReadAsync(null, input, null).Result; + Assert.True(result.IsSuccess); + + var actual = (TimeSpan)result.BestMatch; + Assert.True(actual != TimeSpan.Zero); + + if (isNegative) + { + Assert.True(actual < TimeSpan.Zero); + + Assert.True(actual.Seconds == 0 || actual.Seconds == -1); + Assert.True(actual.Minutes == 0 || actual.Minutes == -2); + Assert.True(actual.Hours == 0 || actual.Hours == -3); + Assert.True(actual.Days == 0 || actual.Days == -4); + } + else + { + Assert.True(actual > TimeSpan.Zero); + + Assert.True(actual.Seconds == 0 || actual.Seconds == 1); + Assert.True(actual.Minutes == 0 || actual.Minutes == 2); + Assert.True(actual.Hours == 0 || actual.Hours == 3); + Assert.True(actual.Days == 0 || actual.Days == 4); + } + } + } +} From f7a07aec02658cd289f283bb1e992d511ed9f5c1 Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 24 Nov 2021 09:57:06 -0300 Subject: [PATCH 152/212] Add default nullable enum typereader (#1518) --- src/Discord.Net.Commands/CommandService.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/Discord.Net.Commands/CommandService.cs b/src/Discord.Net.Commands/CommandService.cs index db08d0d79..bd65b0eb7 100644 --- a/src/Discord.Net.Commands/CommandService.cs +++ b/src/Discord.Net.Commands/CommandService.cs @@ -438,6 +438,13 @@ namespace Discord.Commands _defaultTypeReaders[type] = reader; return reader; } + var underlyingType = Nullable.GetUnderlyingType(type); + if (underlyingType != null && underlyingType.IsEnum) + { + reader = NullableTypeReader.Create(underlyingType, EnumTypeReader.GetReader(underlyingType)); + _defaultTypeReaders[type] = reader; + return reader; + } //Is this an entity? for (int i = 0; i < _entityTypeReaders.Count; i++) From bc440abd445d58aa5bbe2c8f551c43d54aecbdc8 Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Wed, 24 Nov 2021 12:52:55 -0400 Subject: [PATCH 153/212] Implement multi-file upload to webhooks (#1942) --- .../API/Rest/UploadWebhookFileParams.cs | 38 +++++++++---- .../DiscordWebhookClient.cs | 29 ++++++++-- .../WebhookClientHelper.cs | 53 ++++++++++++++----- 3 files changed, 92 insertions(+), 28 deletions(-) diff --git a/src/Discord.Net.Rest/API/Rest/UploadWebhookFileParams.cs b/src/Discord.Net.Rest/API/Rest/UploadWebhookFileParams.cs index d925e0108..3d09ad145 100644 --- a/src/Discord.Net.Rest/API/Rest/UploadWebhookFileParams.cs +++ b/src/Discord.Net.Rest/API/Rest/UploadWebhookFileParams.cs @@ -11,9 +11,8 @@ namespace Discord.API.Rest { private static JsonSerializer _serializer = new JsonSerializer { ContractResolver = new DiscordContractResolver() }; - public Stream File { get; } + public FileAttachment[] Files { get; } - public Optional Filename { get; set; } public Optional Content { get; set; } public Optional Nonce { get; set; } public Optional IsTTS { get; set; } @@ -21,22 +20,16 @@ namespace Discord.API.Rest public Optional AvatarUrl { get; set; } public Optional Embeds { get; set; } public Optional AllowedMentions { get; set; } + public Optional MessageComponents { get; set; } - public bool IsSpoiler { get; set; } = false; - - public UploadWebhookFileParams(Stream file) + public UploadWebhookFileParams(params FileAttachment[] files) { - File = file; + Files = files; } public IReadOnlyDictionary ToDictionary() { var d = new Dictionary(); - var filename = Filename.GetValueOrDefault("unknown.dat"); - if (IsSpoiler && !filename.StartsWith(AttachmentExtensions.SpoilerPrefix)) - filename = filename.Insert(0, AttachmentExtensions.SpoilerPrefix); - - d["file"] = new MultipartFile(File, filename); var payload = new Dictionary(); if (Content.IsSpecified) @@ -49,11 +42,34 @@ namespace Discord.API.Rest payload["username"] = Username.Value; if (AvatarUrl.IsSpecified) payload["avatar_url"] = AvatarUrl.Value; + if (MessageComponents.IsSpecified) + payload["components"] = MessageComponents.Value; if (Embeds.IsSpecified) payload["embeds"] = Embeds.Value; if (AllowedMentions.IsSpecified) payload["allowed_mentions"] = AllowedMentions.Value; + List attachments = new(); + + for (int n = 0; n != Files.Length; n++) + { + var attachment = Files[n]; + + var filename = attachment.FileName ?? "unknown.dat"; + if (attachment.IsSpoiler && !filename.StartsWith(AttachmentExtensions.SpoilerPrefix)) + filename = filename.Insert(0, AttachmentExtensions.SpoilerPrefix); + d[$"files[{n}]"] = new MultipartFile(attachment.Stream, filename); + + attachments.Add(new + { + id = (ulong)n, + filename = filename, + description = attachment.Description ?? Optional.Unspecified + }); + } + + payload["attachments"] = attachments; + var json = new StringBuilder(); using (var text = new StringWriter(json)) using (var writer = new JsonTextWriter(text)) diff --git a/src/Discord.Net.Webhook/DiscordWebhookClient.cs b/src/Discord.Net.Webhook/DiscordWebhookClient.cs index a4fdf9179..f7ad7301c 100644 --- a/src/Discord.Net.Webhook/DiscordWebhookClient.cs +++ b/src/Discord.Net.Webhook/DiscordWebhookClient.cs @@ -123,14 +123,35 @@ namespace Discord.Webhook /// Returns the ID of the created message. public Task SendFileAsync(string filePath, string text, bool isTTS = false, IEnumerable embeds = null, string username = null, string avatarUrl = null, - RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) - => WebhookClientHelper.SendFileAsync(this, filePath, text, isTTS, embeds, username, avatarUrl, allowedMentions, options, isSpoiler); + RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, + MessageComponent components = null) + => WebhookClientHelper.SendFileAsync(this, filePath, text, isTTS, embeds, username, avatarUrl, + allowedMentions, options, isSpoiler, components); /// Sends a message to the channel for this webhook with an attachment. /// Returns the ID of the created message. public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, IEnumerable embeds = null, string username = null, string avatarUrl = null, - RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null) - => WebhookClientHelper.SendFileAsync(this, stream, filename, text, isTTS, embeds, username, avatarUrl, allowedMentions, options, isSpoiler); + RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, + MessageComponent components = null) + => WebhookClientHelper.SendFileAsync(this, stream, filename, text, isTTS, embeds, username, + avatarUrl, allowedMentions, options, isSpoiler, components); + + /// Sends a message to the channel for this webhook with an attachment. + /// Returns the ID of the created message. + public Task SendFileAsync(FileAttachment attachment, string text, bool isTTS = false, + IEnumerable embeds = null, string username = null, string avatarUrl = null, + RequestOptions options = null, AllowedMentions allowedMentions = null, MessageComponent components = null) + => WebhookClientHelper.SendFileAsync(this, attachment, text, isTTS, embeds, username, + avatarUrl, allowedMentions, components, options); + + /// Sends a message to the channel for this webhook with an attachment. + /// Returns the ID of the created message. + public Task SendFilesAsync(IEnumerable attachments, string text, bool isTTS = false, + IEnumerable embeds = null, string username = null, string avatarUrl = null, + RequestOptions options = null, AllowedMentions allowedMentions = null, MessageComponent components = null) + => WebhookClientHelper.SendFilesAsync(this, attachments, text, isTTS, embeds, username, avatarUrl, + allowedMentions, components, options); + /// Modifies the properties of this webhook. public Task ModifyWebhookAsync(Action func, RequestOptions options = null) diff --git a/src/Discord.Net.Webhook/WebhookClientHelper.cs b/src/Discord.Net.Webhook/WebhookClientHelper.cs index 6e3651323..8b4bb5d2a 100644 --- a/src/Discord.Net.Webhook/WebhookClientHelper.cs +++ b/src/Discord.Net.Webhook/WebhookClientHelper.cs @@ -97,24 +97,51 @@ namespace Discord.Webhook await client.ApiClient.DeleteWebhookMessageAsync(client.Webhook.Id, messageId, options).ConfigureAwait(false); } public static async Task SendFileAsync(DiscordWebhookClient client, string filePath, string text, bool isTTS, - IEnumerable embeds, string username, string avatarUrl, AllowedMentions allowedMentions, RequestOptions options, bool isSpoiler) + IEnumerable embeds, string username, string avatarUrl, AllowedMentions allowedMentions, RequestOptions options, bool isSpoiler, MessageComponent components) { string filename = Path.GetFileName(filePath); using (var file = File.OpenRead(filePath)) - return await SendFileAsync(client, file, filename, text, isTTS, embeds, username, avatarUrl, allowedMentions, options, isSpoiler).ConfigureAwait(false); + return await SendFileAsync(client, file, filename, text, isTTS, embeds, username, avatarUrl, allowedMentions, options, isSpoiler, components).ConfigureAwait(false); } - public static async Task SendFileAsync(DiscordWebhookClient client, Stream stream, string filename, string text, bool isTTS, - IEnumerable embeds, string username, string avatarUrl, AllowedMentions allowedMentions, RequestOptions options, bool isSpoiler) + public static Task SendFileAsync(DiscordWebhookClient client, Stream stream, string filename, string text, bool isTTS, + IEnumerable embeds, string username, string avatarUrl, AllowedMentions allowedMentions, RequestOptions options, bool isSpoiler, + MessageComponent components) + => SendFileAsync(client, new FileAttachment(stream, filename, isSpoiler: isSpoiler), text, isTTS, embeds, username, avatarUrl, allowedMentions, components, options); + + public static Task SendFileAsync(DiscordWebhookClient client, FileAttachment attachment, string text, bool isTTS, IEnumerable embeds, string username, string avatarUrl, AllowedMentions allowedMentions, MessageComponent components, RequestOptions options) + => SendFilesAsync(client, new FileAttachment[] { attachment }, text, isTTS, embeds, username, avatarUrl, allowedMentions, components, options); + + public static async Task SendFilesAsync(DiscordWebhookClient client, + IEnumerable attachments, string text, bool isTTS, IEnumerable embeds, string username, string avatarUrl, AllowedMentions allowedMentions, MessageComponent components, RequestOptions options) { - var args = new UploadWebhookFileParams(stream) { Filename = filename, Content = text, IsTTS = isTTS, IsSpoiler = isSpoiler }; - if (username != null) - args.Username = username; - if (avatarUrl != null) - args.AvatarUrl = avatarUrl; - if (embeds != null) - args.Embeds = embeds.Select(x => x.ToModel()).ToArray(); - if(allowedMentions != null) - args.AllowedMentions = allowedMentions.ToModel(); + embeds ??= Array.Empty(); + + 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.Count(), 10, nameof(embeds), "A max of 10 embeds are allowed."); + + foreach (var attachment in attachments) + { + Preconditions.NotNullOrEmpty(attachment.FileName, nameof(attachment.FileName), "File Name must not be empty or null"); + } + + // 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.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Users) && + allowedMentions.UserIds != null && allowedMentions.UserIds.Count > 0) + { + throw new ArgumentException("The Users flag is mutually exclusive with the list of User Ids.", nameof(allowedMentions)); + } + + if (allowedMentions.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Roles) && + allowedMentions.RoleIds != null && allowedMentions.RoleIds.Count > 0) + { + throw new ArgumentException("The Roles flag is mutually exclusive with the list of Role Ids.", nameof(allowedMentions)); + } + } + + var args = new UploadWebhookFileParams(attachments.ToArray()) {AvatarUrl = avatarUrl, Username = username, Content = text, IsTTS = isTTS, Embeds = embeds.Any() ? embeds.Select(x => x.ToModel()).ToArray() : Optional.Unspecified, AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, MessageComponents = components?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified }; var msg = await client.ApiClient.UploadWebhookFileAsync(client.Webhook.Id, args, options).ConfigureAwait(false); return msg.Id; } From b5c150dc166f288ab4a400097259a1ecda5ce399 Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Wed, 24 Nov 2021 12:53:39 -0400 Subject: [PATCH 154/212] Add Voice binaries (#1944) * Add binaries and read me * Update sending voice docs * Undo markdown formatting --- docs/guides/voice/sending-voice.md | 2 +- voice-natives/README.md | 12 ++++++++++++ voice-natives/vnext_natives_win32_x64.zip | Bin 0 -> 451429 bytes voice-natives/vnext_natives_win32_x86.zip | Bin 0 -> 411626 bytes 4 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 voice-natives/README.md create mode 100644 voice-natives/vnext_natives_win32_x64.zip create mode 100644 voice-natives/vnext_natives_win32_x86.zip diff --git a/docs/guides/voice/sending-voice.md b/docs/guides/voice/sending-voice.md index 476f2f42e..555adbca2 100644 --- a/docs/guides/voice/sending-voice.md +++ b/docs/guides/voice/sending-voice.md @@ -18,7 +18,7 @@ when developing on .NET Core, this is where you execute `dotnet run` from; typically the same directory as your csproj). For Windows Users, precompiled binaries are available for your -convienence [here](https://discord.foxbot.me/binaries/). +convienence [here](https://github.com/discord-net/Discord.Net/tree/dev/voice-natives). For Linux Users, you will need to compile [Sodium] and [Opus] from source, or install them from your package manager. diff --git a/voice-natives/README.md b/voice-natives/README.md new file mode 100644 index 000000000..a89fad45f --- /dev/null +++ b/voice-natives/README.md @@ -0,0 +1,12 @@ +# Voice binaries + +These binaries were taken from the [DSharpPlus](https://dsharpplus.github.io/natives/index.html) website and are temporary until we resolve the old url for them. + +**NOTE**: You need to rename libopus.dll to opus.dll before use, otherwise audio client will complain about missing libraries. + +#### Licenses + +| Library | License | +| :-------: | :-------------------------------------------------------- | +| Opus | https://opus-codec.org/license/ | +| libsodium | https://github.com/jedisct1/libsodium/blob/master/LICENSE | diff --git a/voice-natives/vnext_natives_win32_x64.zip b/voice-natives/vnext_natives_win32_x64.zip new file mode 100644 index 0000000000000000000000000000000000000000..a447803e52d17acb2488e88f9f954ae66acb3f22 GIT binary patch literal 451429 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�ttf!a2WT4^+xkp>KNy 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 bVwCEt{14AQ8lX0Un1HV`S`a940Dt*EbRn@Q literal 0 HcmV?d00001 diff --git a/voice-natives/vnext_natives_win32_x86.zip b/voice-natives/vnext_natives_win32_x86.zip new file mode 100644 index 0000000000000000000000000000000000000000..35522e1ec7b3fe1b1b2a44216281731b09138f92 GIT binary patch literal 411626 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�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 Date: Thu, 25 Nov 2021 18:22:50 +0300 Subject: [PATCH 155/212] fix sharded client current user (#1947) --- src/Discord.Net.WebSocket/DiscordShardedClient.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Discord.Net.WebSocket/DiscordShardedClient.cs b/src/Discord.Net.WebSocket/DiscordShardedClient.cs index 307f9a009..1e71ce853 100644 --- a/src/Discord.Net.WebSocket/DiscordShardedClient.cs +++ b/src/Discord.Net.WebSocket/DiscordShardedClient.cs @@ -495,9 +495,12 @@ namespace Discord.WebSocket client.GuildScheduledEventUserAdd += (arg1, arg2) => _guildScheduledEventUserAdd.InvokeAsync(arg1, arg2); client.GuildScheduledEventUserRemove += (arg1, arg2) => _guildScheduledEventUserRemove.InvokeAsync(arg1, arg2); } -#endregion + #endregion #region IDiscordClient + /// + ISelfUser IDiscordClient.CurrentUser => CurrentUser; + /// async Task IDiscordClient.GetApplicationInfoAsync(RequestOptions options) => await GetApplicationInfoAsync().ConfigureAwait(false); From 143ca6db437ac18d4615c0752e00464b566f6264 Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Thu, 25 Nov 2021 11:23:33 -0400 Subject: [PATCH 156/212] fix NRE when adding parameters thru builders (#1946) --- src/Discord.Net.Commands/Builders/ParameterBuilder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Discord.Net.Commands/Builders/ParameterBuilder.cs b/src/Discord.Net.Commands/Builders/ParameterBuilder.cs index 9ee1a748c..afe3a5af6 100644 --- a/src/Discord.Net.Commands/Builders/ParameterBuilder.cs +++ b/src/Discord.Net.Commands/Builders/ParameterBuilder.cs @@ -54,7 +54,7 @@ namespace Discord.Commands.Builders if (type.GetTypeInfo().IsValueType) DefaultValue = Activator.CreateInstance(type); else if (type.IsArray) - type = ParameterType.GetElementType(); + DefaultValue = Array.CreateInstance(type.GetElementType(), 0); ParameterType = type; } From 10afd96e6ec6dcb2bba8c1f5d54a696f60bac989 Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Thu, 25 Nov 2021 11:24:44 -0400 Subject: [PATCH 157/212] feature: Handle bidirectional usernames (#1943) * Initial implementation * Update summary --- src/Discord.Net.Core/Format.cs | 10 ++++++++++ src/Discord.Net.Rest/Entities/Users/RestUser.cs | 4 ++-- src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs | 4 ++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/Discord.Net.Core/Format.cs b/src/Discord.Net.Core/Format.cs index 63f9d15a6..73be20108 100644 --- a/src/Discord.Net.Core/Format.cs +++ b/src/Discord.Net.Core/Format.cs @@ -104,5 +104,15 @@ namespace Discord var newText = Regex.Replace(text, @"(\*|_|`|~|>|\\)", ""); return newText; } + + /// + /// Formats a user's username + discriminator while maintaining bidirectional unicode + /// + /// The user whos username and discriminator to format + /// The username + discriminator + public static string UsernameAndDiscriminator(IUser user) + { + return $"\u2066{user.Username}\u2069#{user.Discriminator}"; + } } } diff --git a/src/Discord.Net.Rest/Entities/Users/RestUser.cs b/src/Discord.Net.Rest/Entities/Users/RestUser.cs index 872bab392..9cf42814c 100644 --- a/src/Discord.Net.Rest/Entities/Users/RestUser.cs +++ b/src/Discord.Net.Rest/Entities/Users/RestUser.cs @@ -128,8 +128,8 @@ namespace Discord.Rest /// /// A string that resolves to Username#Discriminator of the user. /// - public override string ToString() => $"{Username}#{Discriminator}"; - private string DebuggerDisplay => $"{Username}#{Discriminator} ({Id}{(IsBot ? ", Bot" : "")})"; + public override string ToString() => Format.UsernameAndDiscriminator(this); + private string DebuggerDisplay => $"{Format.UsernameAndDiscriminator(this)} ({Id}{(IsBot ? ", Bot" : "")})"; #endregion #region IUser diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs index 025daf29a..5e5e5cf0c 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs @@ -109,8 +109,8 @@ namespace Discord.WebSocket /// /// The full name of the user. /// - public override string ToString() => $"{Username}#{Discriminator}"; - private string DebuggerDisplay => $"{Username}#{Discriminator} ({Id}{(IsBot ? ", Bot" : "")})"; + public override string ToString() => Format.UsernameAndDiscriminator(this); + private string DebuggerDisplay => $"{Format.UsernameAndDiscriminator(this)} ({Id}{(IsBot ? ", Bot" : "")})"; internal SocketUser Clone() => MemberwiseClone() as SocketUser; } } From 9d6dc6279db499c48811e80e9c385f7015d00333 Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Thu, 25 Nov 2021 11:25:19 -0400 Subject: [PATCH 158/212] Update socket presence and add new presence event (#1945) --- .../Entities/Users/IPresence.cs | 6 ++-- .../Entities/Users/RestUser.cs | 5 ++-- .../BaseSocketClient.Events.cs | 12 ++++++++ .../DiscordSocketClient.cs | 23 +++++++-------- .../Entities/Users/SocketGlobalUser.cs | 6 ---- .../Entities/Users/SocketGuildUser.cs | 10 +++++-- .../Entities/Users/SocketPresence.cs | 29 +++++++++++++------ .../Entities/Users/SocketUser.cs | 10 +++++-- 8 files changed, 64 insertions(+), 37 deletions(-) diff --git a/src/Discord.Net.Core/Entities/Users/IPresence.cs b/src/Discord.Net.Core/Entities/Users/IPresence.cs index 6972037f0..45babf481 100644 --- a/src/Discord.Net.Core/Entities/Users/IPresence.cs +++ b/src/Discord.Net.Core/Entities/Users/IPresence.cs @@ -1,4 +1,4 @@ -using System.Collections.Immutable; +using System.Collections.Generic; namespace Discord { @@ -14,10 +14,10 @@ namespace Discord /// /// Gets the set of clients where this user is currently active. /// - IImmutableSet ActiveClients { get; } + IReadOnlyCollection ActiveClients { get; } /// /// Gets the list of activities that this user currently has available. /// - IImmutableList Activities { get; } + IReadOnlyCollection Activities { get; } } } diff --git a/src/Discord.Net.Rest/Entities/Users/RestUser.cs b/src/Discord.Net.Rest/Entities/Users/RestUser.cs index 9cf42814c..70f990fe7 100644 --- a/src/Discord.Net.Rest/Entities/Users/RestUser.cs +++ b/src/Discord.Net.Rest/Entities/Users/RestUser.cs @@ -5,6 +5,7 @@ using System.Globalization; using System.Threading.Tasks; using Model = Discord.API.User; using EventUserModel = Discord.API.GuildScheduledEventUser; +using System.Collections.Generic; namespace Discord.Rest { @@ -41,9 +42,9 @@ namespace Discord.Rest /// public virtual UserStatus Status => UserStatus.Offline; /// - public virtual IImmutableSet ActiveClients => ImmutableHashSet.Empty; + public virtual IReadOnlyCollection ActiveClients => ImmutableHashSet.Empty; /// - public virtual IImmutableList Activities => ImmutableList.Empty; + public virtual IReadOnlyCollection Activities => ImmutableList.Empty; /// public virtual bool IsWebhook => false; diff --git a/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs b/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs index 4ad25d4d5..91fb24021 100644 --- a/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs +++ b/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs @@ -502,6 +502,18 @@ namespace Discord.WebSocket internal readonly AsyncEvent> _recipientRemovedEvent = new AsyncEvent>(); #endregion + #region Presence + + /// Fired when a users presence is updated. + public event Func PresenceUpdated + { + add { _presenceUpdated.Add(value); } + remove { _presenceUpdated.Remove(value); } + } + internal readonly AsyncEvent> _presenceUpdated = new AsyncEvent>(); + + #endregion + #region Invites /// /// Fired when an invite is created. diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 03c85ffc7..444e69a26 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -1858,6 +1858,8 @@ namespace Discord.WebSocket var data = (payload as JToken).ToObject(_serializer); + SocketUser user = null; + if (data.GuildId.IsSpecified) { var guild = State.GetGuild(data.GuildId.Value); @@ -1872,7 +1874,7 @@ namespace Discord.WebSocket return; } - var user = guild.GetUser(data.User.Id); + user = guild.GetUser(data.User.Id); if (user == null) { if (data.Status == UserStatus.Offline) @@ -1890,26 +1892,21 @@ namespace Discord.WebSocket await TimedInvokeAsync(_userUpdatedEvent, nameof(UserUpdated), globalBefore, user).ConfigureAwait(false); } } - - var before = user.Clone(); - user.Update(State, data, true); - var cacheableBefore = new Cacheable(before, user.Id, true, () => Task.FromResult(user)); - await TimedInvokeAsync(_guildMemberUpdatedEvent, nameof(GuildMemberUpdated), cacheableBefore, user).ConfigureAwait(false); } else { - var globalUser = State.GetUser(data.User.Id); - if (globalUser == null) + user = State.GetUser(data.User.Id); + if (user == null) { await UnknownGlobalUserAsync(type, data.User.Id).ConfigureAwait(false); return; } - - var before = globalUser.Clone(); - globalUser.Update(State, data.User); - globalUser.Update(State, data); - await TimedInvokeAsync(_userUpdatedEvent, nameof(UserUpdated), before, globalUser).ConfigureAwait(false); } + + var before = user.Presence.Clone(); + user.Update(State, data.User); + user.Update(data); + await TimedInvokeAsync(_presenceUpdated, nameof(PresenceUpdated), user, before, user.Presence).ConfigureAwait(false); } break; case "TYPING_START": diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketGlobalUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketGlobalUser.cs index 3a1ad23b6..525ae0b34 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketGlobalUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketGlobalUser.cs @@ -1,7 +1,6 @@ using System.Diagnostics; using System.Linq; using Model = Discord.API.User; -using PresenceModel = Discord.API.Presence; namespace Discord.WebSocket { @@ -48,11 +47,6 @@ namespace Discord.WebSocket } } - internal void Update(ClientState state, PresenceModel model) - { - Presence = SocketPresence.Create(model); - } - private string DebuggerDisplay => $"{Username}#{Discriminator} ({Id}{(IsBot ? ", Bot" : "")}, Global)"; internal new SocketGlobalUser Clone() => MemberwiseClone() as SocketGlobalUser; } diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs index 147456cb0..ae3319227 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs @@ -164,8 +164,7 @@ namespace Discord.WebSocket { if (updatePresence) { - Presence = SocketPresence.Create(model); - GlobalUser.Update(state, model); + Update(model); } if (model.Nick.IsSpecified) Nickname = model.Nick.Value; @@ -174,6 +173,13 @@ namespace Discord.WebSocket if (model.PremiumSince.IsSpecified) _premiumSinceTicks = model.PremiumSince.Value?.UtcTicks; } + + internal override void Update(PresenceModel model) + { + Presence.Update(model); + GlobalUser.Update(model); + } + private void UpdateRoles(ulong[] roleIds) { var roles = ImmutableArray.CreateBuilder(roleIds.Length + 1); diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketPresence.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketPresence.cs index fe672a4d6..5250e15ad 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketPresence.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketPresence.cs @@ -11,26 +11,37 @@ namespace Discord.WebSocket /// Represents the WebSocket user's presence status. This may include their online status and their activity. /// [DebuggerDisplay(@"{DebuggerDisplay,nq}")] - public struct SocketPresence : IPresence + public class SocketPresence : IPresence { /// - public UserStatus Status { get; } + public UserStatus Status { get; private set; } /// - public IImmutableSet ActiveClients { get; } + public IReadOnlyCollection ActiveClients { get; private set; } /// - public IImmutableList Activities { get; } + public IReadOnlyCollection Activities { get; private set; } + + internal SocketPresence() { } internal SocketPresence(UserStatus status, IImmutableSet activeClients, IImmutableList activities) { Status = status; ActiveClients = activeClients ?? ImmutableHashSet.Empty; Activities = activities ?? ImmutableList.Empty; } + internal static SocketPresence Create(Model model) { - var clients = ConvertClientTypesDict(model.ClientStatus.GetValueOrDefault()); - var activities = ConvertActivitiesList(model.Activities); - return new SocketPresence(model.Status, clients, activities); + var entity = new SocketPresence(); + entity.Update(model); + return entity; + } + + internal void Update(Model model) + { + Status = model.Status; + ActiveClients = ConvertClientTypesDict(model.ClientStatus.GetValueOrDefault()) ?? ImmutableArray.Empty; + Activities = ConvertActivitiesList(model.Activities) ?? ImmutableArray.Empty; } + /// /// Creates a new containing all of the client types /// where a user is active from the data supplied in the Presence update frame. @@ -42,7 +53,7 @@ namespace Discord.WebSocket /// /// A collection of all s that this user is active. /// - private static IImmutableSet ConvertClientTypesDict(IDictionary clientTypesDict) + private static IReadOnlyCollection ConvertClientTypesDict(IDictionary clientTypesDict) { if (clientTypesDict == null || clientTypesDict.Count == 0) return ImmutableHashSet.Empty; @@ -84,6 +95,6 @@ namespace Discord.WebSocket public override string ToString() => Status.ToString(); private string DebuggerDisplay => $"{Status}{(Activities?.FirstOrDefault()?.Name ?? "")}"; - internal SocketPresence Clone() => this; + internal SocketPresence Clone() => MemberwiseClone() as SocketPresence; } } diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs index 5e5e5cf0c..b38bd8a4a 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs @@ -7,6 +7,7 @@ using System.Linq; using System.Threading.Tasks; using Discord.Rest; using Model = Discord.API.User; +using PresenceModel = Discord.API.Presence; namespace Discord.WebSocket { @@ -40,9 +41,9 @@ namespace Discord.WebSocket /// public UserStatus Status => Presence.Status; /// - public IImmutableSet ActiveClients => Presence.ActiveClients ?? ImmutableHashSet.Empty; + public IReadOnlyCollection ActiveClients => Presence.ActiveClients ?? ImmutableHashSet.Empty; /// - public IImmutableList Activities => Presence.Activities ?? ImmutableList.Empty; + public IReadOnlyCollection Activities => Presence.Activities ?? ImmutableList.Empty; /// /// Gets mutual guilds shared with this user. /// @@ -91,6 +92,11 @@ namespace Discord.WebSocket return hasChanges; } + internal virtual void Update(PresenceModel model) + { + Presence.Update(model); + } + /// public async Task CreateDMChannelAsync(RequestOptions options = null) => await UserHelper.CreateDMChannelAsync(this, Discord, options).ConfigureAwait(false); From d1b31c8f529033afda8d4a9e320788de0d034693 Mon Sep 17 00:00:00 2001 From: roridev Date: Thu, 25 Nov 2021 15:31:48 -0300 Subject: [PATCH 159/212] Add `MatchResult` --- .../Results/MatchResult.cs | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/Discord.Net.Commands/Results/MatchResult.cs diff --git a/src/Discord.Net.Commands/Results/MatchResult.cs b/src/Discord.Net.Commands/Results/MatchResult.cs new file mode 100644 index 000000000..fb266efa6 --- /dev/null +++ b/src/Discord.Net.Commands/Results/MatchResult.cs @@ -0,0 +1,47 @@ +using System; + +namespace Discord.Commands +{ + public class MatchResult : IResult + { + /// + /// Gets the command that may have matched during the command execution. + /// + public CommandMatch? Match { get; } + + /// + /// Gets on which pipeline stage the command may have matched or failed. + /// + public IResult? Pipeline { get; } + + /// + public CommandError? Error { get; } + /// + public string ErrorReason { get; } + /// + public bool IsSuccess => !Error.HasValue; + + private MatchResult(CommandMatch? match, IResult? pipeline, CommandError? error, string errorReason) + { + Match = match; + Error = error; + Pipeline = pipeline; + ErrorReason = errorReason; + } + + public static MatchResult FromSuccess(CommandMatch match, IResult pipeline) + => new MatchResult(match,pipeline,null, null); + public static MatchResult FromError(CommandError error, string reason) + => new MatchResult(null,null,error, reason); + public static MatchResult FromError(Exception ex) + => FromError(CommandError.Exception, ex.Message); + public static MatchResult FromError(IResult result) + => new MatchResult(null, null,result.Error, result.ErrorReason); + public static MatchResult FromError(IResult pipeline, CommandError error, string reason) + => new MatchResult(null, pipeline, error, reason); + + public override string ToString() => IsSuccess ? "Success" : $"{Error}: {ErrorReason}"; + private string DebuggerDisplay => IsSuccess ? "Success" : $"{Error}: {ErrorReason}"; + + } +} From a92ec56d884ffe41f74c1f6b9541c1d70d6d823d Mon Sep 17 00:00:00 2001 From: roridev Date: Thu, 25 Nov 2021 16:42:18 -0300 Subject: [PATCH 160/212] Add requested changes Changes: - Use IResult instead of Optional CommandMatch - Rework branching workflow --- src/Discord.Net.Commands/CommandService.cs | 55 ++++++++++++++-------- 1 file changed, 36 insertions(+), 19 deletions(-) diff --git a/src/Discord.Net.Commands/CommandService.cs b/src/Discord.Net.Commands/CommandService.cs index f54072811..18f553559 100644 --- a/src/Discord.Net.Commands/CommandService.cs +++ b/src/Discord.Net.Commands/CommandService.cs @@ -507,27 +507,44 @@ namespace Discord.Commands var searchResult = Search(input); - //Since ValidateAndGetBestMatch is deterministic on the return type, we can use pattern matching on the type for infering the code flow. - var (validationResult, commandMatch) = await ValidateAndGetBestMatch(searchResult, context, services, multiMatchHandling); + var validationResult = await ValidateAndGetBestMatch(searchResult, context, services, multiMatchHandling); - if(validationResult is SearchResult) + if (validationResult is SearchResult result) { - await _commandExecutedEvent.InvokeAsync(Optional.Create(), context, searchResult).ConfigureAwait(false); - } - else if(validationResult is ParseResult parseResult) - { - var result = await commandMatch.Value.Command.ExecuteAsync(context, parseResult, services).ConfigureAwait(false); - if (!result.IsSuccess && !(result is RuntimeResult || result is ExecuteResult)) // succesful results raise the event in CommandInfo#ExecuteInternalAsync (have to raise it there b/c deffered execution) - await _commandExecutedEvent.InvokeAsync(commandMatch.Value.Command, context, result); + await _commandExecutedEvent.InvokeAsync(Optional.Create(), context, result).ConfigureAwait(false); return result; } - else + + if (validationResult is MatchResult matchResult) { - await _commandExecutedEvent.InvokeAsync(commandMatch.Value.Command, context, validationResult).ConfigureAwait(false); + return await handleCommandPipeline(matchResult, context, services); } + return validationResult; } + private async Task handleCommandPipeline(MatchResult matchResult, ICommandContext context, IServiceProvider services) + { + if (!matchResult.IsSuccess) + return matchResult; + + if (matchResult.Pipeline is ParseResult parseResult) + { + var executeResult = await matchResult.Match.Value.ExecuteAsync(context, parseResult, services); + + if (!executeResult.IsSuccess && !(executeResult is RuntimeResult || executeResult is ExecuteResult)) // succesful results raise the event in CommandInfo#ExecuteInternalAsync (have to raise it there b/c deffered execution) + await _commandExecutedEvent.InvokeAsync(matchResult.Match.Value.Command, context, executeResult); + return executeResult; + } + + if (matchResult.Pipeline is PreconditionResult preconditionResult) + { + await _commandExecutedEvent.InvokeAsync(matchResult.Match.Value.Command, context, preconditionResult).ConfigureAwait(false); + } + + return matchResult; + } + // Calculates the 'score' of a command given a parse result float CalculateScore(CommandMatch match, ParseResult parseResult) { @@ -554,11 +571,11 @@ namespace Discord.Commands /// The service provider to be used on the command's dependency injection. /// The handling mode when multiple command matches are found. /// A task that represents the asynchronous validation operation. The task result contains the result of the - /// command validation and the command matched, if a match was found. - public async Task<(IResult, Optional)> ValidateAndGetBestMatch(SearchResult matches, ICommandContext context, IServiceProvider provider, MultiMatchHandling multiMatchHandling = MultiMatchHandling.Exception) + /// command validation as a or a if no matches were found. + public async Task ValidateAndGetBestMatch(SearchResult matches, ICommandContext context, IServiceProvider provider, MultiMatchHandling multiMatchHandling = MultiMatchHandling.Exception) { if (!matches.IsSuccess) - return (matches, Optional.Create()); + return matches; var commands = matches.Commands; var preconditionResults = new Dictionary(); @@ -574,11 +591,11 @@ namespace Discord.Commands if (successfulPreconditions.Length == 0) { + //All preconditions failed, return the one from the highest priority command var bestCandidate = preconditionResults .OrderByDescending(x => x.Key.Command.Priority) .FirstOrDefault(x => !x.Value.IsSuccess); - - return (bestCandidate.Value, bestCandidate.Key); + return MatchResult.FromSuccess(bestCandidate.Key,bestCandidate.Value); } var parseResults = new Dictionary(); @@ -615,12 +632,12 @@ namespace Discord.Commands var bestMatch = parseResults .FirstOrDefault(x => !x.Value.IsSuccess); - return (bestMatch.Value, bestMatch.Key); + return MatchResult.FromSuccess(bestMatch.Key,bestMatch.Value); } var chosenOverload = successfulParses[0]; - return (chosenOverload.Value, chosenOverload.Key); + return MatchResult.FromSuccess(chosenOverload.Key,chosenOverload.Value); } protected virtual void Dispose(bool disposing) From adf3a9c459958254cd7241acf27a8c2afbeea822 Mon Sep 17 00:00:00 2001 From: roridev Date: Fri, 26 Nov 2021 09:26:53 -0300 Subject: [PATCH 161/212] Fix incorrect casing on `HandleCommandPipeline` --- src/Discord.Net.Commands/CommandService.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Discord.Net.Commands/CommandService.cs b/src/Discord.Net.Commands/CommandService.cs index 18f553559..7d03c4059 100644 --- a/src/Discord.Net.Commands/CommandService.cs +++ b/src/Discord.Net.Commands/CommandService.cs @@ -517,13 +517,13 @@ namespace Discord.Commands if (validationResult is MatchResult matchResult) { - return await handleCommandPipeline(matchResult, context, services); + return await HandleCommandPipeline(matchResult, context, services); } return validationResult; } - private async Task handleCommandPipeline(MatchResult matchResult, ICommandContext context, IServiceProvider services) + private async Task HandleCommandPipeline(MatchResult matchResult, ICommandContext context, IServiceProvider services) { if (!matchResult.IsSuccess) return matchResult; From 82276e351aa306920e6a0ea7535c81428dd2003c Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Fri, 26 Nov 2021 11:29:53 -0400 Subject: [PATCH 162/212] feature: default application games (#1949) * Initial implementation * Add missing summary --- src/Discord.Net.Core/Discord.Net.Core.csproj | 2 +- .../Activities/DefaultApplications.cs | 86 +++++++++++++++++++ .../Entities/Channels/INestedChannel.cs | 22 +++-- .../Entities/Channels/RestTextChannel.cs | 7 +- .../Entities/Channels/RestVoiceChannel.cs | 3 + .../Entities/Channels/SocketTextChannel.cs | 3 + .../Entities/Channels/SocketVoiceChannel.cs | 3 + .../MockedEntities/MockedTextChannel.cs | 1 + .../MockedEntities/MockedVoiceChannel.cs | 1 + 9 files changed, 118 insertions(+), 10 deletions(-) create mode 100644 src/Discord.Net.Core/Entities/Activities/DefaultApplications.cs diff --git a/src/Discord.Net.Core/Discord.Net.Core.csproj b/src/Discord.Net.Core/Discord.Net.Core.csproj index 29868e1c7..7dc55b1cf 100644 --- a/src/Discord.Net.Core/Discord.Net.Core.csproj +++ b/src/Discord.Net.Core/Discord.Net.Core.csproj @@ -1,6 +1,6 @@  - + Discord.Net.Core Discord diff --git a/src/Discord.Net.Core/Entities/Activities/DefaultApplications.cs b/src/Discord.Net.Core/Entities/Activities/DefaultApplications.cs new file mode 100644 index 000000000..80f128fa8 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Activities/DefaultApplications.cs @@ -0,0 +1,86 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord +{ + public enum DefaultApplications : ulong + { + /// + /// Watch youtube together. + /// + Youtube = 880218394199220334, + + /// + /// Youtube development application. + /// + YoutubeDev = 880218832743055411, + + /// + /// Poker! + /// + Poker = 755827207812677713, + + /// + /// Betrayal: A Party Adventure. Betrayal is a social deduction game inspired by Werewolf, Town of Salem, and Among Us. + /// + Betrayal = 773336526917861400, + + /// + /// Sit back, relax, and do some fishing! + /// + Fishing = 814288819477020702, + + /// + /// The queens gambit. + /// + Chess = 832012774040141894, + + /// + /// Development version of chess. + /// + ChessDev = 832012586023256104, + + /// + /// LetterTile is a version of scrabble. + /// + LetterTile = 879863686565621790, + + /// + /// Find words in a jumble of letters in coffee. + /// + WordSnack = 879863976006127627, + + /// + /// It's like skribbl.io. + /// + DoodleCrew = 878067389634314250, + + /// + /// It's like cards against humanity. + /// + Awkword = 879863881349087252, + + /// + /// A word-search like game where you unscramble words and score points in a scrabble fashion. + /// + SpellCast = 852509694341283871, + + /// + /// Classic checkers + /// + Checkers = 832013003968348200, + + /// + /// The development version of poker. + /// + PokerDev = 763133495793942528, + + /// + /// SketchyArtist. + /// + SketchyArtist = 879864070101172255 + } +} diff --git a/src/Discord.Net.Core/Entities/Channels/INestedChannel.cs b/src/Discord.Net.Core/Entities/Channels/INestedChannel.cs index 563acd4f8..511d2bf51 100644 --- a/src/Discord.Net.Core/Entities/Channels/INestedChannel.cs +++ b/src/Discord.Net.Core/Entities/Channels/INestedChannel.cs @@ -60,13 +60,6 @@ namespace Discord /// /// Creates a new invite to this channel. /// - /// - /// The following example creates a new invite to this channel; the invite lasts for 12 hours and can only - /// be used 3 times throughout its lifespan. - /// - /// await guildChannel.CreateInviteAsync(maxAge: 43200, maxUses: 3); - /// - /// /// The id of the embedded application to open for this invite. /// The time (in seconds) until the invite expires. Set to null to never expire. /// The max amount of times this invite may be used. Set to null to have unlimited uses. @@ -79,6 +72,21 @@ namespace Discord /// Task CreateInviteToApplicationAsync(ulong applicationId, int? maxAge = 86400, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null); + /// + /// Creates a new invite to this channel. + /// + /// The application to open for this invite. + /// The time (in seconds) until the invite expires. Set to null to never expire. + /// The max amount of times this invite may be used. Set to null to have unlimited uses. + /// If true, the user accepting this invite will be kicked from the guild after closing their client. + /// If true, don't try to reuse a similar invite (useful for creating many unique one time use invites). + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous invite creation operation. The task result contains an invite + /// metadata object containing information for the created invite. + /// + Task CreateInviteToApplicationAsync(DefaultApplications application, int? maxAge = 86400, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null); + /// /// Creates a new invite to this channel. /// diff --git a/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs index f14bc2ecf..57de0eb45 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs @@ -227,8 +227,11 @@ namespace Discord.Rest /// public virtual async Task CreateInviteAsync(int? maxAge = 86400, int? maxUses = null, bool isTemporary = false, bool isUnique = false, RequestOptions options = null) => await ChannelHelper.CreateInviteAsync(this, Discord, maxAge, maxUses, isTemporary, isUnique, options).ConfigureAwait(false); - public virtual Task CreateInviteToApplicationAsync(ulong applicationId, int? maxAge, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null) - => throw new NotImplementedException(); + public virtual async Task CreateInviteToApplicationAsync(ulong applicationId, int? maxAge = 86400, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null) + => await ChannelHelper.CreateInviteToApplicationAsync(this, Discord, maxAge, maxUses, isTemporary, isUnique, applicationId, options); + /// + public virtual async Task CreateInviteToApplicationAsync(DefaultApplications application, int? maxAge = 86400, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null) + => await ChannelHelper.CreateInviteToApplicationAsync(this, Discord, maxAge, maxUses, isTemporary, isUnique, (ulong)application, options); public virtual Task CreateInviteToStreamAsync(IUser user, int? maxAge, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null) => throw new NotImplementedException(); /// diff --git a/src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs index 48fc11dcb..239c00467 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs @@ -78,6 +78,9 @@ namespace Discord.Rest public async Task CreateInviteToApplicationAsync(ulong applicationId, int? maxAge, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null) => await ChannelHelper.CreateInviteToApplicationAsync(this, Discord, maxAge, maxUses, isTemporary, isUnique, applicationId, options).ConfigureAwait(false); /// + public virtual async Task CreateInviteToApplicationAsync(DefaultApplications application, int? maxAge = 86400, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null) + => await ChannelHelper.CreateInviteToApplicationAsync(this, Discord, maxAge, maxUses, isTemporary, isUnique, (ulong)application, options); + /// public async Task CreateInviteToStreamAsync(IUser user, int? maxAge, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null) => await ChannelHelper.CreateInviteToStreamAsync(this, Discord, maxAge, maxUses, isTemporary, isUnique, user, options).ConfigureAwait(false); /// diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs index 8722b569d..aea1bfda5 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs @@ -324,6 +324,9 @@ namespace Discord.WebSocket public virtual async Task CreateInviteToApplicationAsync(ulong applicationId, int? maxAge, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null) => await ChannelHelper.CreateInviteToApplicationAsync(this, Discord, maxAge, maxUses, isTemporary, isUnique, applicationId, options).ConfigureAwait(false); /// + public virtual async Task CreateInviteToApplicationAsync(DefaultApplications application, int? maxAge = 86400, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null) + => await ChannelHelper.CreateInviteToApplicationAsync(this, Discord, maxAge, maxUses, isTemporary, isUnique, (ulong)application, options); + /// public virtual async Task CreateInviteToStreamAsync(IUser user, int? maxAge, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null) => await ChannelHelper.CreateInviteToStreamAsync(this, Discord, maxAge, maxUses, isTemporary, isUnique, user, options).ConfigureAwait(false); /// diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs index e57051e80..08b976bfe 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs @@ -100,6 +100,9 @@ namespace Discord.WebSocket public async Task CreateInviteToApplicationAsync(ulong applicationId, int? maxAge, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null) => await ChannelHelper.CreateInviteToApplicationAsync(this, Discord, maxAge, maxUses, isTemporary, isUnique, applicationId, options).ConfigureAwait(false); /// + public virtual async Task CreateInviteToApplicationAsync(DefaultApplications application, int? maxAge = 86400, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null) + => await ChannelHelper.CreateInviteToApplicationAsync(this, Discord, maxAge, maxUses, isTemporary, isUnique, (ulong)application, options); + /// public async Task CreateInviteToStreamAsync(IUser user, int? maxAge, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null) => await ChannelHelper.CreateInviteToStreamAsync(this, Discord, maxAge, maxUses, isTemporary, isUnique, user, options).ConfigureAwait(false); /// diff --git a/test/Discord.Net.Tests.Unit/MockedEntities/MockedTextChannel.cs b/test/Discord.Net.Tests.Unit/MockedEntities/MockedTextChannel.cs index 6d08a4478..ad0af04b2 100644 --- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedTextChannel.cs +++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedTextChannel.cs @@ -214,5 +214,6 @@ namespace Discord public Task SendFileAsync(FileAttachment attachment, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) => throw new NotImplementedException(); public Task SendFilesAsync(IEnumerable attachments, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) => throw new NotImplementedException(); public Task CreateThreadAsync(string name, ThreadType type = ThreadType.PublicThread, ThreadArchiveDuration autoArchiveDuration = ThreadArchiveDuration.OneDay, IMessage message = null, bool? invitable = null, int? slowmode = null, RequestOptions options = null) => throw new NotImplementedException(); + public Task CreateInviteToApplicationAsync(DefaultApplications application, int? maxAge = 86400, int? maxUses = null, bool isTemporary = false, bool isUnique = false, RequestOptions options = null) => throw new NotImplementedException(); } } diff --git a/test/Discord.Net.Tests.Unit/MockedEntities/MockedVoiceChannel.cs b/test/Discord.Net.Tests.Unit/MockedEntities/MockedVoiceChannel.cs index 61a32e391..4514dfc97 100644 --- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedVoiceChannel.cs +++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedVoiceChannel.cs @@ -50,6 +50,7 @@ namespace Discord } public Task CreateInviteToApplicationAsync(ulong applicationId, int? maxAge, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null) => throw new NotImplementedException(); + public Task CreateInviteToApplicationAsync(DefaultApplications application, int? maxAge = 86400, int? maxUses = null, bool isTemporary = false, bool isUnique = false, RequestOptions options = null) => throw new NotImplementedException(); public Task CreateInviteToStreamAsync(IUser user, int? maxAge, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null) => throw new NotImplementedException(); From 51e06e9ce190ac46aeaeb8650d71d58eba0b5412 Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Fri, 26 Nov 2021 11:30:19 -0400 Subject: [PATCH 163/212] feature: warn on invalid gateway intents (#1948) --- .../DiscordSocketClient.cs | 51 +++++++++++++++++++ .../DiscordSocketConfig.cs | 5 ++ 2 files changed, 56 insertions(+) diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 444e69a26..9ef827778 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -76,6 +76,7 @@ namespace Discord.WebSocket internal int? HandlerTimeout { get; private set; } internal bool AlwaysDownloadDefaultStickers { get; private set; } internal bool AlwaysResolveStickers { get; private set; } + internal bool LogGatewayIntentWarnings { get; private set; } internal new DiscordSocketApiClient ApiClient => base.ApiClient; /// public override IReadOnlyCollection Guilds => State.Guilds; @@ -147,6 +148,7 @@ namespace Discord.WebSocket AlwaysDownloadUsers = config.AlwaysDownloadUsers; AlwaysDownloadDefaultStickers = config.AlwaysDownloadDefaultStickers; AlwaysResolveStickers = config.AlwaysResolveStickers; + LogGatewayIntentWarnings = config.LogGatewayIntentWarnings; HandlerTimeout = config.HandlerTimeout; State = new ClientState(0, 0); Rest = new DiscordSocketRestClient(config, ApiClient); @@ -238,6 +240,9 @@ namespace Discord.WebSocket _defaultStickers = builder.ToImmutable(); } + + if(LogGatewayIntentWarnings) + await LogGatewayIntentsWarning().ConfigureAwait(false); } /// @@ -708,6 +713,52 @@ namespace Discord.WebSocket game); } + private async Task LogGatewayIntentsWarning() + { + if(_gatewayIntents.HasFlag(GatewayIntents.GuildPresences) && !_presenceUpdated.HasSubscribers) + { + await _gatewayLogger.WarningAsync("You're using the GuildPresences intent without listening to the PresenceUpdate event, consider removing the intent from your config.").ConfigureAwait(false); + } + + if(!_gatewayIntents.HasFlag(GatewayIntents.GuildPresences) && _presenceUpdated.HasSubscribers) + { + await _gatewayLogger.WarningAsync("You're using the PresenceUpdate event without specifying the GuildPresences intent, consider adding the intent to your config.").ConfigureAwait(false); + } + + bool hasGuildScheduledEventsSubscribers = + _guildScheduledEventCancelled.HasSubscribers || + _guildScheduledEventUserRemove.HasSubscribers || + _guildScheduledEventCompleted.HasSubscribers || + _guildScheduledEventCreated.HasSubscribers || + _guildScheduledEventStarted.HasSubscribers || + _guildScheduledEventUpdated.HasSubscribers || + _guildScheduledEventUserAdd.HasSubscribers; + + if(_gatewayIntents.HasFlag(GatewayIntents.GuildScheduledEvents) && !hasGuildScheduledEventsSubscribers) + { + await _gatewayLogger.WarningAsync("You're using the GuildScheduledEvents gateway intent without listening to any events related to that intent, consider removing the intent from your config.").ConfigureAwait(false); + } + + if(!_gatewayIntents.HasFlag(GatewayIntents.GuildScheduledEvents) && hasGuildScheduledEventsSubscribers) + { + await _gatewayLogger.WarningAsync("You're using events related to the GuildScheduledEvents gateway intent without specifying the intent, consider adding the intent to your config.").ConfigureAwait(false); + } + + bool hasInviteEventSubscribers = + _inviteCreatedEvent.HasSubscribers || + _inviteDeletedEvent.HasSubscribers; + + if (_gatewayIntents.HasFlag(GatewayIntents.GuildInvites) && !hasInviteEventSubscribers) + { + await _gatewayLogger.WarningAsync("You're using the GuildInvites gateway intent without listening to any events related to that intent, consider removing the intent from your config.").ConfigureAwait(false); + } + + if (!_gatewayIntents.HasFlag(GatewayIntents.GuildInvites) && hasInviteEventSubscribers) + { + await _gatewayLogger.WarningAsync("You're using events related to the GuildInvites gateway intent without specifying the intent, consider adding the intent to your config.").ConfigureAwait(false); + } + } + #region ProcessMessageAsync private async Task ProcessMessageAsync(GatewayOpCode opCode, int? seq, string type, object payload) { diff --git a/src/Discord.Net.WebSocket/DiscordSocketConfig.cs b/src/Discord.Net.WebSocket/DiscordSocketConfig.cs index 8615eac71..f0e6dc857 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketConfig.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketConfig.cs @@ -183,6 +183,11 @@ namespace Discord.WebSocket /// public GatewayIntents GatewayIntents { get; set; } = GatewayIntents.AllUnprivileged; + /// + /// Gets or sets whether or not to log warnings related to guild intents and events. + /// + public bool LogGatewayIntentWarnings { get; set; } = true; + /// /// Initializes a new instance of the class with the default configuration. /// From b9274d115dfcec28a732fd3c9122ca65ebe4951e Mon Sep 17 00:00:00 2001 From: Monica S Date: Fri, 26 Nov 2021 15:41:08 +0000 Subject: [PATCH 164/212] Add characters commonly use in links to Sanitize (#1152) Co-authored-by: Quin Lynch <49576606+quinchs@users.noreply.github.com> --- src/Discord.Net.Core/Format.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Discord.Net.Core/Format.cs b/src/Discord.Net.Core/Format.cs index 73be20108..a5951aa73 100644 --- a/src/Discord.Net.Core/Format.cs +++ b/src/Discord.Net.Core/Format.cs @@ -7,7 +7,8 @@ namespace Discord public static class Format { // Characters which need escaping - private static readonly string[] SensitiveCharacters = { "\\", "*", "_", "~", "`", "|", ">" }; + private static readonly string[] SensitiveCharacters = { + "\\", "*", "_", "~", "`", ".", ":", "/", ">", "|" }; /// Returns a markdown-formatted string with bold formatting. public static string Bold(string text) => $"**{text}**"; From 19a66bf8782e7b8879c6b8b372134e01be0090d7 Mon Sep 17 00:00:00 2001 From: Daniel Baynton <49287178+230Daniel@users.noreply.github.com> Date: Fri, 26 Nov 2021 15:41:55 +0000 Subject: [PATCH 165/212] feature: Add method to clear guild user cache (#1767) * Add method to clear a SocketGuild's user cache * Add optional predicate * Compress overload to be consistant * Fix global user not clearing (may cause other issues) * Remove debug code and add param documentation * Standardise doc string * Remove old hack-fix * Rename new method for consistency * Add missing line to reset downloaderPromise * Undo accidental whitespace changes * Rider better actually keep the tab this time Co-authored-by: Quin Lynch <49576606+quinchs@users.noreply.github.com> --- src/Discord.Net.WebSocket/ClientState.cs | 4 +-- .../Entities/Guilds/SocketGuild.cs | 31 ++++++++++++------- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/src/Discord.Net.WebSocket/ClientState.cs b/src/Discord.Net.WebSocket/ClientState.cs index 7129feb48..c40ae3f92 100644 --- a/src/Discord.Net.WebSocket/ClientState.cs +++ b/src/Discord.Net.WebSocket/ClientState.cs @@ -115,7 +115,7 @@ namespace Discord.WebSocket if (_guilds.TryRemove(id, out SocketGuild guild)) { guild.PurgeChannelCache(this); - guild.PurgeGuildUserCache(); + guild.PurgeUserCache(); return guild; } return null; @@ -140,7 +140,7 @@ namespace Discord.WebSocket internal void PurgeUsers() { foreach (var guild in _guilds.Values) - guild.PurgeGuildUserCache(); + guild.PurgeUserCache(); } internal SocketApplicationCommand GetCommand(ulong id) diff --git a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs index 03c655a34..697d5fe82 100644 --- a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs +++ b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs @@ -1144,22 +1144,29 @@ namespace Discord.WebSocket } return null; } - internal void PurgeGuildUserCache() + + /// + /// Purges this guild's user cache. + /// + public void PurgeUserCache() => PurgeUserCache(_ => true); + /// + /// Purges this guild's user cache. + /// + /// The predicate used to select which users to clear. + public void PurgeUserCache(Func predicate) { - var members = Users; - var self = CurrentUser; - _members.Clear(); - if (self != null) - _members.TryAdd(self.Id, self); + var membersToPurge = Users.Where(x => predicate.Invoke(x) && x?.Id != Discord.CurrentUser.Id); + var membersToKeep = Users.Where(x => !predicate.Invoke(x) || x?.Id == Discord.CurrentUser.Id); + + foreach (var member in membersToPurge) + if(_members.TryRemove(member.Id, out _)) + member.GlobalUser.RemoveRef(Discord); + + foreach (var member in membersToKeep) + _members.TryAdd(member.Id, member); _downloaderPromise = new TaskCompletionSource(); DownloadedMemberCount = _members.Count; - - foreach (var member in members) - { - if (member.Id != self?.Id) - member.GlobalUser.RemoveRef(Discord); - } } /// From ba656e99b85fc791808cc7cd08cfe207b407fcd3 Mon Sep 17 00:00:00 2001 From: Cenk Ergen <57065323+Cenngo@users.noreply.github.com> Date: Sun, 5 Dec 2021 03:30:20 +0300 Subject: [PATCH 166/212] Add custom setter to Group property of ModuleBuilder to automatically invoke AddAliases (#1950) * fix sharded client current user * add custom setter to group property of module builder --- src/Discord.Net.Commands/Builders/ModuleBuilder.cs | 10 +++++++++- .../Builders/ModuleClassBuilder.cs | 1 - 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/Discord.Net.Commands/Builders/ModuleBuilder.cs b/src/Discord.Net.Commands/Builders/ModuleBuilder.cs index ddb62e797..f2a7eeb1f 100644 --- a/src/Discord.Net.Commands/Builders/ModuleBuilder.cs +++ b/src/Discord.Net.Commands/Builders/ModuleBuilder.cs @@ -8,6 +8,7 @@ namespace Discord.Commands.Builders public class ModuleBuilder { #region ModuleBuilder + private string _group; private readonly List _commands; private readonly List _submodules; private readonly List _preconditions; @@ -19,7 +20,14 @@ namespace Discord.Commands.Builders public string Name { get; set; } public string Summary { get; set; } public string Remarks { get; set; } - public string Group { get; set; } + public string Group { get => _group; + set + { + _aliases.Remove(_group); + _group = value; + AddAliases(value); + } + } public IReadOnlyList Commands => _commands; public IReadOnlyList Modules => _submodules; diff --git a/src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs b/src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs index 8c10ae806..22c58f5c7 100644 --- a/src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs +++ b/src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs @@ -118,7 +118,6 @@ namespace Discord.Commands case GroupAttribute group: builder.Name ??= group.Prefix; builder.Group = group.Prefix; - builder.AddAliases(group.Prefix); break; case PreconditionAttribute precondition: builder.AddPrecondition(precondition); From aa6bb5e293997735429d3dbe05ddf80ddb24df51 Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Mon, 6 Dec 2021 16:02:07 -0400 Subject: [PATCH 167/212] Update from Discord .Net Labs 3.4.8 (#1958) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Embeds array for send message async (#181) * meta: bump version * meta: bump vers * Fix sticker args * Grammer fix (#179) * Added embeds for SendMessageAsync * [JsonProperty("embed")] forgot to remove this public Optional Embed { get; set; } * It has been done as requested. * Changed the old way of handeling single embeds * Moved embeds param and added options param * xmls Co-authored-by: quin lynch * Fix thread permissions (#183) * Update GuildPermissionsTests.cs * Update GuildPermissions.cs * Use compound assignment (#186) * Used compound assignment * -||- * -||- * Remove unnecessary suppression (#188) * Inlined variable declarations (#185) * Fixed some warnings (#184) * Fixed some warnings * Another fixed warning * Changed the SSendFileAsync to SendFileAsync * Removed para AlwaysAcknowledgeInteractions * Moved it back to the previous version * Added periods to the end like quin requested!! :(( Co-authored-by: MrCakeSlayer <13650699+MrCakeSlayer@users.noreply.github.com> * Object initialization can be simplified fixed (#189) * Conditional-expression-simplification (#193) * Capitlazation fixes (#192) * Removed-this. (#191) * Use 'switch' expression (#187) * Use 'switch' expression * Reverted it to the old switch case * Fixed-compiler-error (#194) * Submitting updates to include new permissions. (#195) * Submitting updates to include new permissions. * Make old permissions obsolete and update tests Co-authored-by: quin lynch * Update azure-pipelines.yml * Update azure-pipelines.yml * Update azure-pipelines.yml * Add support for long in autocomplete option * Add support for sending files with multiple embeds (#196) * Add support for sending files with multiple embeds * Simplify prepending single embed to embed array * Consistency for embeds endpoints (#197) * Changed the way of handling prepending of embeds. For consistency. * reformatted the summary * Changed minimum slash command name length to 1 per Discord API docs (#198) * Channel endpoints requirements correction (#199) * Added some requirements to channels for topic * Changed check from NotNullOrEmpty to NotNullOrEmpty * Added some requirements to channels for name Preconditions.LessThan * Formatting of file * Added restriction for description not being null (#200) * Update azure-pipelines.yml * Update deploy.yml * Remove version tag from proj * Update deploy.yml * Removed versions from project files * Removed style of the nuget badge and added logo (#201) The style was not properly added to it and the plastic version does not look good with the discord badge. I thought it would look better with a logo * Fix Type not being set in SocketApplicationCommand * Remove useless GuildId property * meta: update XML * Add Autocomplete to SlashCommandOptionBuilder * Added autocomplete in SlashCommandOptionBuilder. (#206) Co-authored-by: Quin Lynch <49576606+quinchs@users.noreply.github.com> * Fix duplicate autocomplete * Fix #208 * Fix sub commands being interpreted as a parameter for autocomplete * Fix exposed optional * Support the discord:// protocol in buttons (#207) * Update UrlValidation.cs * Update ComponentBuilder.cs * Add docs and better error messages. * Fix wonky intentation * Add competing activity status type (#205) * Update GuildPermissionsTests.cs * Update GuildPermissions.cs * Add competing status type * Add Icons to IRole (#204) * Added icon field to IRole * Added GetGuildRoleIconUrl() * Added Clean Content Function (#174) * Added Clean Content Function * Fixed Spelling problems and bad var handling * Add StripMarkDown Method * Clean Content Expanded (#212) * Implement CleanContent In IMessage & RestMessage * Update Spelling and Documentation * Add SanatizeMessage to MessageHelper and Refactor Rest and Socket Message * Add event for autocomplete interaction (#214) * Spelling corrections (#215) * Remove null collections * Followup with file async warnings (#216) * Changed from NotNullOrWhitespace to NotNullOrEmpty * Added NotNullOrEmpty on filename * Added system to interpret from the path * Added a check for if it contains a period * It has been done, how ever it will break stuff * Changed to use ??= how ever still added error check * Added space under check * Changed from with a period to valid file extension * Added checks for SendFileAsync * Removed filename != null && * Add channel types in application command options. (#217) * add channel types in application command options * Indent Docs * Stage instance audit logs as well as thread audit log type * Update azure-pipelines.yml * Update azure-pipelines.yml * Fix system messages not including mentioned users. Added ContextMenuCommand message type * Remove file extension check (#218) * Fix NRE in modify guild channel * Fix 429's not being accounted for in ratelimit updates * meta: add net5 framework Co-Authored-By: MrCakeSlayer <13650699+MrCakeSlayer@users.noreply.github.com> * Proper doc logos (#221) * Update GuildPermissionsTests.cs * Update GuildPermissions.cs * Add competing activity status type * logo changes * logo text as path * add missing logo * Update package logo and favicon * Update docfx references * Remove Console.WriteLine * Rename Available to IsAvailable in stickers * Rename Default and Required to IsDefault and IsRequired in IApplicationCommandOption. Rename DefaultPermission to IsDefaultPermission in IApplicationCommand * Fix different rest channels not deserializing properly * Refactor summaries and boolean property names * General cleanup (#223) * General cleanup * Add Async suffix to SendAutocompleteResult * Fix more formatting * Fix unused RequestOptions in GetActiveThreadsAsync * Add message to ArgumentNullException * Ephemeral attachments * Add missing jsonproperty attribute * Add IMessage.Interaction * Update attachment checks for embed urls * meta: bump version * Remove old package configs and update image * Update package logos * Fix logo reference for azure * Deprecate old package definitions in favor for target file * Deprecate old package definitions in favor for target file Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com> * Update package ids * Fix url validation * meta: bump version * Fix assignment of UserMentions (#233) * Fix CleanContent (#231) * Fix SocketSlashCommandData access modifier. (#237) Fixes #229 * Update README with better header (#232) * Update README with better header Adds HTML elements that implement the main logo & improve the redirection tag positions. * Resolving border issue in light-mode * Update sponsor section * Implement checks for interaction respond times and multiple interaction responses. closes #236, #235 * Add response check to socket auto complete * meta: bump versions * Fix #239 * meta: bump version * meta: update logo * meta: bump versions * Revert received at time, confirmed by discord staff to be accurate * Update docs * Update CHANGELOG.md * meta: docs building * Update docs.yml * Update docs.yml * Fix docfx version * Update docs.yml * Update docs.bat * Rename docs repo for clone * update docfx version * Update docs.bat * Update docfx version * Remove docs from pipeline * FAQ revamped, metadata updated (#241) * FAQ revamped, metadata updated * Update FAQ.md * Update README.md * Docs index improvement * Fix InvalidOperationException in modify channel * feature: guild avatars, closes #238 * feature: modify role icons * meta: changelog * meta: bump version * Update README.md * Fix non value type options not being included in autocomplete * Add new activity flags (#254) * Add new activity flags * Add missing commas * Added support for GUILD_JOIN_REQUEST_DELETE event (#253) Fixes #247 * Adding BotHTTPInteraction user flag (#252) * animated guild banner support (#255) * Docs work (WIP) (#242) * Main page work * Metadata logo dir * More main page edits * Naming change * Dnet guide entries pruned * Add student hub guild directory channel (#256) * animated guild banner support * Add guild directory channel * Fix followup with file overwrite having incorrect parameter locations * Update GUILD_JOIN_REQUEST_DELETE event * Update head.tmpl.partial * Removed BannerId and AccentColor (#260) * Removed BannerId property, GetBannerURL method, and AccentColor property from IUser and socket entities. * Fixed errors in IUser.cs * Added back summary for GetAvatarUrl method in IUser.cs * Support Guild Boost Progress Bars (#262) * Support Guild Boost Progress Bars * Update SocketChannel.cs * Fix non-optional and unnecessary values. * Spelling * Reordering and consistency. * Remove log for reconnect * Add missing flags to SystemChannelMessageDeny (#267) * Rename new activity flags * Guild feature revamp and smart gateway intent checks * Get thread user implementation * Amend creating slash command guide (#269) * Adding BotHTTPInteraction user flag * Added comments explaining the Global command create stipulations. * Fix numeric type check for options * Add state checking to ConnectionManager.StartAsync (#272) * initial interface changes * Multi file upload + attachment editing * meta: bump versions * Update CHANGELOG.md * Update CHANGELOG.md * Support Min and Max values on ApplicationCommandOptions (#273) * Support Min and Max values on ApplicationCommandOptions * Support decimal min/max values * Docs imrpovments + use ToNullable * Logomark, doc settings edit (#258) * Logomark, doc settings edit * Replace standard logo * Bumping docfx plugins to latest release * Bump version metadata * Logo svg fix * Change default sticker behavior and add AlwaysResolveSticker to the config * Implement rest based interactions. Added ED25519 checks. Updated summaries. * Update package logo * Automatically fix ordering of optional command options (#276) * auto fix optional command option order * clean up indentation * Fix maximum number of Select Menu Options (#282) As of https://discord.com/developers/docs/interactions/message-components#select-menu-object-select-menu-structure the maximum number of options is 25, not less than 25. Hopefully the change catches all necessary locations * Add voice region to modify voice channels * Update summaries on rest interactions * Interaction Specific Interfaces (#283) * added interaction specific interfaces * fix build error * implement change requests * Update application * Add Guild Scheduled Events (#279) * guild events initial * sharded events * Add new gateway intents and fix bugs * More work on new changes to guild events * Update guild scheduled events * Added events to extended guild and add event start event * Update preconditions * Implement breaking changes guild guild events. Add guild event permissions * Update tests and change privacy level requirements * Update summaries and add docs for guild events * meta: bump version * Increment meta version (#285) * Increment meta version * Update docfx.json * Fix #289 and add configureawaits to rest based interactions * meta: bump version * Add GUILD_SCHEDULED_EVENT_USER_ADD and GUILD_SCHEDULED_EVENT_USER_REMOVE (#287) * Remove newline * Fix autocomplete result value * meta: bump versions * Add `GuildScheduledEventUserAdd` and `GuildScheduledEventUserRemove` to sharded client * Make RestUserCommand public (#292) * Fix Components not showing on FUWF (#288) (#293) Adds Components to Payload JSON Generation * Implement smarter rest resolvable interaction data. Fixes #294 * Add UseInteractionSnowflakeDate to config #286 * Implement Better Discord Errors (#291) * Initial error parsing * Implement better errors * Add missing error codes * Add voice disconnect opcodes * Remove unused class, add summaries to discordjsonerror, and remove public constructor of slash command properties * Add error code summary * Update error message summary * Update src/Discord.Net.Core/DiscordJsonError.cs Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com> * Update src/Discord.Net.WebSocket/API/Voice/VoiceCloseCode.cs Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com> * Fix autocomplete result value Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com> * Change the minimum length of slash commands to 1 (#284) * Change the minimum length of slash commands to 1. This is the correct value according to the docs and it has been changed after user feedback. * Fix the limit in 3 other places Co-authored-by: quin lynch * Add new thread creation properties * Add role emoji. Fixes #295 * Fix mocked text channel * Fix precondition checks. Closes #281 * Initial fix (#297) * meta: bump version * Update property names and summaries * Add Audit Log Data classes for Threads (#301) * Add ThreadDeleteAuditLogData * Add ThreadCreateAuditLogData * Fix ThreadCreateAuditLogData using old instead of new value * Create ThreadInfo Class * Fix Thread not being a property * Add ThreadUpdateAuditLogData * Cleanup usings * Add RateLimit to ThreadAuditLogData classese Co-authored-by: Playwo * Fix #300 * Interaction Command Service (#52) * init * attribute rename * added docs * Revert "added docs" This reverts commit 30aa0c4ef7e190a726ec2cb3a183da5e2f9b07d9. * added basic docs * Switched to nested modules for method grouping, changed command traversal method * interface now declares the helper methods * added new method with predicate parameter * added config option for deleting the "thinking" state of unhandled commands * Slash Module Base now exposes helper methods for interacting with the underlying Interaction * Revert "interface now declares the helper methods" This reverts commit 541b0be93530e880c482962d41cd6e0cefa4e771. * IDiscordInteraction now declares the helper methods * new cancelable wait interaction method * added support for user created command types * added option type 'number', added write method to typereaders * added enum and timespan typereaders * revert * added interface method declarations * inline docs * revert interface changes * current user id assignment in sharded client * added wildcards to interactions, tweaks * tweaks on interaction wild card pattern * Pre-app menu * fixed CurrentUserId and added application command events * made event listener persistent * Sharded Client Application Command Events and CurrentUserId Issue (#105) * added interface method declarations * inline docs * current user id assignment in sharded client * fixed CurrentUserId and added application command events * made event listener persistent * removed option type converter, task offloaded to typereaders * added "deleteOGResponse" method to module base * Upstream fetch for Discord-Net-Labs/release/3.x * solved merge conflicts * removed merge artifacts * added new Context Command attributes * added Conxtext Command info classes and changed the naming scheme for the existing classes * added IgnoreGroupNames prop to command attributes * added ContextCommand builder * moved command builders to internal * added ContextCommand methods to the command service * command service now uses InteractionHelper to register commands * bug fixes and refactorings * docs update * added inline docs to public members * added inline docs * added method name property to command infos * added inline docs * changed the execution callback to a declared delegate * createInstance delegate is now created only once per module * declared the ExecuteCallback delegate * introduced a way to modify the command permissions * changed method names * added optional compiled lambda module builder * added the missing sync execution option * moved run mode selection to the base class * info class refactorings * switched to compiled lambda based method invoke * command refactorings * added docs * removed untended class * bug fixes * minor refactorings * reflection changes * bug fix for interaction parameters * commands and modules now groups the preconditons on building * added default permission to context commands * added DontAutoRegister attribute * renamed TypeReader to TypeConverter * added docs to TypeConverterResult, made ISlashModuleBase public * namespace and project change * added inline docs file * renamed ExecuteComponentCommand method * added scoped service support to the dependency injection model * fixed premature disposal of scoped services * extended the scope to cover the precondition checking methods * removed slash command related preconditions from core lib * added sample application * precondition checks are now executed according to the command RunMode * reverting the conflicting changes * reverted SocketInteraction * reverting more conflicts * added indentations to inline docs * implemented change requests * updated the sample app * moved builders to public * added indentations to typeconverter docs * renamed old componentCommandExecuted event * bug fix for generic typeconverters * Revert "bug fix for generic typeconverters" This reverts commit fcc61957deb5dfc17c41367f1c7c72d27024b0ee. * bug fix for context commands * code cleanup * removed public module build method * modev OnModuleBuilding execution inside the module build method * added try-catch blocks encapsulating arg generation * fixed parameter preconditions not raising commandExecuted event * removed OnModuleBuilding execution from ModuleClassBuilder * removed setters from Precondition ErrorMessages * added methods to interaction service for creating user defined modules * added IParameterInfo parameter to TypeConverter.Write * changed the target frameworks * DefaultValueConverter bug fix * GenerateArgs refactorings * WaitForMessageComponent now relies message id * added ChannelTypes support * added ChannelTypes support * fix build error for new lib version * added ToString method to CommandInfo * added ToString method to CommandInfo * Fix index out of bounds error for new non-null slash command option collection * enum converter rework * added user extendable types to command context and module base * added regex anchors to ensure pattern matches the whole string * incomplete guides * add missing ignoreGroupNames assignment for ComponentInteraction * typeconverters now seperate pascal casing parameter names * fix missing IServiceScopefactory ? * Revert "typeconverters now seperate pascal casing parameter names" This reverts commit 141300f3d2c244fc6795999d910462939d16a2e1. * moved the option name pascal casing seperator to RestUtils * fix component command arg generation * removed , from default command delimiters * updated the regex to match every non whitespace value * added Autocomplete interaction support and updated the regex to match every non whitespace value * replaced the posix class with range exps in pascal casing seperator * added inline docs to autocompleter related classes * added regex metacharacter escape to wildcard patterns * added null check to Regex EscapeExcluding * added .net5.0 support and updated the project package * added .net5.0 support and updated the project package * add dependency injection to autocompleters * add net6.0 * bump versions * bug fix: pascal casing parameters are not assigned * rework autocomplete commands to accept command and parameter names seperatly * rename *InteractionCommandContext to *InteractionContext * add max-min value support to number type slash command options * add hide attribute to deafult enum converter * add inline docs * guides update: min/max value and autocomplete interactions * remove net6.0 support * add inline doc to Config.EnableAutocompleters * add autocompleters guide * added attribute usage to min/max value * implement rest based interactions * add handling logic for rest based interactions * update default TypeConverters to accommodate rest based interactions * added interaction specific interfaces * fix build error * implement change requests * bump metapackage version * replace concrete interface types with interfaces in command execution logic * fix min/max value attribute target * add rest specific interaction module for creating interaction responses for rest based interactions within the module * update rest callback to accept an interaction context parameter * clean up RestResponseCallback implementation artifacts * fix command registration bug when using the sharded socket client * update docs * fix build errors * fix slash command depth check * implement requested changes * fix build error * the grand finale * the grand finale Co-authored-by: quin lynch * Remove XML doc * Add Interactions service to azure build * Add DocFX refs to interaction framework docs * meta: bump docfx version * meta: bump versions * Remove versioning metadata in csproj * Fix user command mismatch in docs * Fix parameter in message commands * Fix SocketVoiceChannel options are created as generic mentionables in Interaction service (#308) * added interaction specific interfaces * fix build error * implement change requests * add autocomplete respond method to IAutocompleteInteraction * fix sharded client current user * fix generic typeconverter picking priority * Revert "fix sharded client current user" This reverts commit a9c15ffd6ab02651e83e72c275889502b60cfddc. * Revert "add autocomplete respond method to IAutocompleteInteraction" This reverts commit f2fc50f1f19a0b41144b6dc93080d2f3a01282fc. * meta: bump version * Improve the `GuildFeatures` converter (#311) * Fix Message/User commands are not being executed when their name have spaces on it (#310) * added interaction specific interfaces * fix build error * implement change requests * add autocomplete respond method to IAutocompleteInteraction * fix sharded client current user * fix generic typeconverter picking priority * Revert "fix sharded client current user" This reverts commit a9c15ffd6ab02651e83e72c275889502b60cfddc. * Revert "add autocomplete respond method to IAutocompleteInteraction" This reverts commit f2fc50f1f19a0b41144b6dc93080d2f3a01282fc. * fix command parsing for names with spaces * meta: bump version * fix minor spelling mistake * add missing $ on docs Co-Authored-By: Liege72 <65319395+Liege72@users.noreply.github.com> * Squashed commit of the following: commit ff0bbbd4d3c4141a6e7eedbe2da0a2cbf5a8a208 Merge: 41b4686b 19a66bf8 Author: quin lynch Date: Sat Nov 27 08:39:35 2021 -0400 Merge branch 'dev' of https://github.com/discord-net/Discord.Net into dev commit 19a66bf8782e7b8879c6b8b372134e01be0090d7 Author: Daniel Baynton <49287178+230Daniel@users.noreply.github.com> Date: Fri Nov 26 15:41:55 2021 +0000 feature: Add method to clear guild user cache (#1767) * Add method to clear a SocketGuild's user cache * Add optional predicate * Compress overload to be consistant * Fix global user not clearing (may cause other issues) * Remove debug code and add param documentation * Standardise doc string * Remove old hack-fix * Rename new method for consistency * Add missing line to reset downloaderPromise * Undo accidental whitespace changes * Rider better actually keep the tab this time Co-authored-by: Quin Lynch <49576606+quinchs@users.noreply.github.com> commit b9274d115dfcec28a732fd3c9122ca65ebe4951e Author: Monica S Date: Fri Nov 26 15:41:08 2021 +0000 Add characters commonly use in links to Sanitize (#1152) Co-authored-by: Quin Lynch <49576606+quinchs@users.noreply.github.com> commit 51e06e9ce190ac46aeaeb8650d71d58eba0b5412 Author: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Fri Nov 26 11:30:19 2021 -0400 feature: warn on invalid gateway intents (#1948) commit 82276e351aa306920e6a0ea7535c81428dd2003c Author: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Fri Nov 26 11:29:53 2021 -0400 feature: default application games (#1949) * Initial implementation * Add missing summary commit 4f1fe2b0843976b7e8cc2aca3022f78b8eac9274 Merge: 9d6dc627 3cd9f399 Author: quin lynch Date: Fri Nov 26 11:23:32 2021 -0400 Merge branch 'siscodeorg-commands/validate-get-best-match' into dev commit 3cd9f399186abe078735486ccdbfec25150495f5 Merge: 9d6dc627 adf3a9c4 Author: quin lynch Date: Fri Nov 26 11:23:05 2021 -0400 Merge branch 'commands/validate-get-best-match' of https://github.com/siscodeorg/Discord.Net into siscodeorg-commands/validate-get-best-match commit adf3a9c459958254cd7241acf27a8c2afbeea822 Author: roridev Date: Fri Nov 26 09:26:53 2021 -0300 Fix incorrect casing on `HandleCommandPipeline` commit a92ec56d884ffe41f74c1f6b9541c1d70d6d823d Author: roridev Date: Thu Nov 25 16:42:18 2021 -0300 Add requested changes Changes: - Use IResult instead of Optional CommandMatch - Rework branching workflow commit d1b31c8f529033afda8d4a9e320788de0d034693 Author: roridev Date: Thu Nov 25 15:31:48 2021 -0300 Add `MatchResult` commit 9d6dc6279db499c48811e80e9c385f7015d00333 Author: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Thu Nov 25 11:25:19 2021 -0400 Update socket presence and add new presence event (#1945) commit 10afd96e6ec6dcb2bba8c1f5d54a696f60bac989 Author: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Thu Nov 25 11:24:44 2021 -0400 feature: Handle bidirectional usernames (#1943) * Initial implementation * Update summary commit 143ca6db437ac18d4615c0752e00464b566f6264 Author: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Thu Nov 25 11:23:33 2021 -0400 fix NRE when adding parameters thru builders (#1946) commit d5f5ae132ca4cd9a6bd156cd4bc57cca354c6afd Author: Cenk Ergen <57065323+Cenngo@users.noreply.github.com> Date: Thu Nov 25 18:22:50 2021 +0300 fix sharded client current user (#1947) commit b5c150dc166f288ab4a400097259a1ecda5ce399 Author: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Wed Nov 24 12:53:39 2021 -0400 Add Voice binaries (#1944) * Add binaries and read me * Update sending voice docs * Undo markdown formatting commit bc440abd445d58aa5bbe2c8f551c43d54aecbdc8 Author: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Wed Nov 24 12:52:55 2021 -0400 Implement multi-file upload to webhooks (#1942) commit f7a07aec02658cd289f283bb1e992d511ed9f5c1 Author: Paulo Date: Wed Nov 24 09:57:06 2021 -0300 Add default nullable enum typereader (#1518) commit 6abdfcbf878329f8294884b60e90acf797bf1f9b Author: Slate Date: Wed Nov 24 12:55:07 2021 +0000 Added negative TimeSpan handling (#1666) - Added unit tests for the TimeSpanTypeReader - Fixes https://github.com/discord-net/Discord.Net/issues/1657 commit e0dbe7c69543d9fcdf24c26e9c16c9b8b1eaa94d Author: Paulo Date: Wed Nov 24 09:43:57 2021 -0300 Add MaxBitrate to the interface (#1861) Co-authored-by: Quin Lynch <49576606+quinchs@users.noreply.github.com> commit 3cb662ff7a829c0d436be5437a921da7927e38aa Author: d4n Date: Tue Nov 23 10:49:31 2021 -0500 Add null check to AllowedMentions.ToModel() (#1865) commit 900c1f4385a66fe0e190a92edf05c434b3fd5838 Author: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Tue Nov 23 11:46:18 2021 -0400 Fix emoto try parse (#1941) commit 933ea42eaac47094ef77608aa2aa3f6d602ac30d Author: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Tue Nov 23 09:58:05 2021 -0400 Merge Labs 3.X into dev (#1923) * meta: bump version * Null or empty fix (#176) * Add components and stickers to ReplyAsync extension * Fixed null or empty * Changed Label to Description * -||- Co-authored-by: quin lynch * More regions (#177) * Preconditions * ChannelHelper * RestDMChannel * RestGroupChannel * RestBan * RestGroupUser * EntityExtensions * DiscordSocketClient * DiscordSocketClient * Discord.net.core.xml fix (#178) * Changed Label to Description * Added Discord- .MessageComponent .ISticker[] ,Discord.MessageComponent,Discord.ISticker[] to ReplyAsync * Remove references to labs * Update Discord.Net.sln * Added SendMessagesInThreads and StartEmbeddedActivities. (#175) * Added SendMessagesInThreads and StartEmbeddedActivities. Adjusted owner perms. Change UsePublicThreads -> CreatePublicThreads Change UsePrivateThreads -> CreatePrivateThreads * removed extra /// * Added UsePublicThreads and UsePrivateThreads back with Obsolete Attribute * removed 'false' from Obsolete Attribute * Squashed commit of the following: commit dca41a348e36a9b4e7006ef3a76377eb32aad276 Author: quin lynch Date: Thu Sep 23 07:02:19 2021 -0300 Autocomplete commands * meta: xml. closes #171 * Revert user agent and $device to dnet * meta: bump version * meta: bump vers * Fix sticker args * Grammer fix (#179) * Made IVoiceChannel mentionable * Embeds array for send message async (#181) * meta: bump version * meta: bump vers * Fix sticker args * Grammer fix (#179) * Added embeds for SendMessageAsync * [JsonProperty("embed")] forgot to remove this public Optional Embed { get; set; } * It has been done as requested. * Changed the old way of handeling single embeds * Moved embeds param and added options param * xmls Co-authored-by: quin lynch * Fix thread permissions (#183) * Update GuildPermissionsTests.cs * Update GuildPermissions.cs * Use compound assignment (#186) * Used compound assignment * -||- * -||- * Remove unnecessary suppression (#188) * Inlined variable declarations (#185) * Fixed some warnings (#184) * Fixed some warnings * Another fixed warning * Changed the SSendFileAsync to SendFileAsync * Removed para AlwaysAcknowledgeInteractions * Moved it back to the previous version * Added periods to the end like quin requested!! :(( Co-authored-by: MrCakeSlayer <13650699+MrCakeSlayer@users.noreply.github.com> * Object initialization can be simplified fixed (#189) * Conditional-expression-simplification (#193) * Capitlazation fixes (#192) * Removed-this. (#191) * Use 'switch' expression (#187) * Use 'switch' expression * Reverted it to the old switch case * Fixed-compiler-error (#194) * Submitting updates to include new permissions. (#195) * Submitting updates to include new permissions. * Make old permissions obsolete and update tests Co-authored-by: quin lynch * Update azure-pipelines.yml * Update azure-pipelines.yml * Update azure-pipelines.yml * Add support for long in autocomplete option * Add support for sending files with multiple embeds (#196) * Add support for sending files with multiple embeds * Simplify prepending single embed to embed array * Consistency for embeds endpoints (#197) * Changed the way of handling prepending of embeds. For consistency. * reformatted the summary * Revert pipeline * Fix duplicate merge conflicts * Changed minimum slash command name length to 1 per Discord API docs (#198) * Channel endpoints requirements correction (#199) * Added some requirements to channels for topic * Changed check from NotNullOrEmpty to NotNullOrEmpty * Added some requirements to channels for name Preconditions.LessThan * Formatting of file * Added restriction for description not being null (#200) * Update azure-pipelines.yml * Update deploy.yml * Remove version tag from proj * Update deploy.yml * Removed versions from project files * Removed style of the nuget badge and added logo (#201) The style was not properly added to it and the plastic version does not look good with the discord badge. I thought it would look better with a logo * Fix Type not being set in SocketApplicationCommand * Remove useless GuildId property * meta: update XML * Add Autocomplete to SlashCommandOptionBuilder * Added autocomplete in SlashCommandOptionBuilder. (#206) Co-authored-by: Quin Lynch <49576606+quinchs@users.noreply.github.com> * Fix duplicate autocomplete * Fix #208 * Fix sub commands being interpreted as a parameter for autocomplete * Fix exposed optional * Support the discord:// protocol in buttons (#207) * Update UrlValidation.cs * Update ComponentBuilder.cs * Add docs and better error messages. * Fix wonky intentation * Add competing activity status type (#205) * Update GuildPermissionsTests.cs * Update GuildPermissions.cs * Add competing status type * Add Icons to IRole (#204) * Added icon field to IRole * Added GetGuildRoleIconUrl() * Added Clean Content Function (#174) * Added Clean Content Function * Fixed Spelling problems and bad var handling * Add StripMarkDown Method * Clean Content Expanded (#212) * Implement CleanContent In IMessage & RestMessage * Update Spelling and Documentation * Add SanatizeMessage to MessageHelper and Refactor Rest and Socket Message * Add event for autocomplete interaction (#214) * Spelling corrections (#215) * Remove null collections * Followup with file async warnings (#216) * Changed from NotNullOrWhitespace to NotNullOrEmpty * Added NotNullOrEmpty on filename * Added system to interpret from the path * Added a check for if it contains a period * It has been done, how ever it will break stuff * Changed to use ??= how ever still added error check * Added space under check * Changed from with a period to valid file extension * Added checks for SendFileAsync * Removed filename != null && * Add channel types in application command options. (#217) * add channel types in application command options * Indent Docs * Stage instance audit logs as well as thread audit log type * Update azure-pipelines.yml * Update azure-pipelines.yml * Fix system messages not including mentioned users. Added ContextMenuCommand message type * Remove file extension check (#218) * Fix NRE in modify guild channel * Fix 429's not being accounted for in ratelimit updates * meta: add net5 framework Co-Authored-By: MrCakeSlayer <13650699+MrCakeSlayer@users.noreply.github.com> * Proper doc logos (#221) * Update GuildPermissionsTests.cs * Update GuildPermissions.cs * Add competing activity status type * logo changes * logo text as path * add missing logo * Update package logo and favicon * Update docfx references * Remove XML files and use original pipeline format * Remove console writeline * Remove Console.WriteLine * Remove useless log * Rename Available sticker field to IsAvailable * Rename Available to IsAvailable in stickers * Add summary indent for role members * Add summary indent to SocketInvite * Rename DefaultPermission to IsDefaultPermission * Rename Default to IsDefault and Required to IsRequired in IApplicationCommandOption * Rename Default and Required to IsDefault and IsRequired in IApplicationCommandOption. Rename DefaultPermission to IsDefaultPermission in IApplicationCommand * Remove extra white spaces * Renamed Joined, Archived, and Locked to HasJoined, IsArchived, and IsLocked * Rename Live and DiscoverableDisabled to IsDiscoverableDisabled and IsLive in IStageChannel * Remove newline * Add indent to summaries * Remove unnecessary json serializer field * Fix ToEntity for roletags incorrectly using IsPremiumSubscriber * Update RestChannel for new channel types * Fix different rest channels not deserializing properly * fully qualify internal for UrlValidation and add indent to summary * Add missing periods to InteractionResponseType * Fix summary in IApplicationCommandOptionChoice * Update IApplicationCommandOption summaries * Update IApplicationCommandInteractionDataOption summaries * Update IApplicationCommandInteractionData summaries * Update IApplicationCommand summaries * Update ApplicationCommandType summaries * rename DefaultPermission to IsDefaultPermission in ApplicationCommandProperties * update ApplicationCommandOptionChoiceProperties summaries * Rename Default, Required, and Autocomplete to IsDefault, IsRequired, and IsAutocomplete in ApplicationCommandOptionProperties * Update SlashCommandProperties summaries * update SlashCommandBuilder boolean field names, summaries, and choice parameters * Update SelectMenuOption summaries, Rename Default to IsDefault in SelectMenuOption * update SelectMenuComponent summaries. Rename Disabled to IsDisabled in SelectMenuComponent * update ComponentBuilder summaries and boolean fields. * Update ButtonComponent summaries and boolean fields * update ActionRowComponent summaries * Update UserCommandBuilder * Update MessageCommandBuilder summaries and boolean properties * Update IGuild summary * Update IGuild summaries * Update StagePrivacyLevel summary * update IThreadChannel summaries * Update IStageChannel summaries * Refactor summaries and boolean property names * General cleanup (#223) * General cleanup * Add Async suffix to SendAutocompleteResult * Fix more formatting * Fix unused RequestOptions in GetActiveThreadsAsync * Add message to ArgumentNullException * Ephemeral attachments * Add missing jsonproperty attribute * Add IMessage.Interaction * Update attachment checks for embed urls * meta: bump version * Remove old package configs and update image * Update package logos * Fix logo reference for azure * Deprecate old package definitions in favor for target file * Deprecate old package definitions in favor for target file Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com> * Update package ids * Fix url validation * meta: bump version * Fix assignment of UserMentions (#233) * Fix CleanContent (#231) * Fix SocketSlashCommandData access modifier. (#237) Fixes #229 * Update README with better header (#232) * Update README with better header Adds HTML elements that implement the main logo & improve the redirection tag positions. * Resolving border issue in light-mode * Update sponsor section * Implement checks for interaction respond times and multiple interaction responses. closes #236, #235 * Add response check to socket auto complete * meta: bump versions * Fix #239 * meta: bump version * meta: update logo * meta: bump versions * Revert received at time, confirmed by discord staff to be accurate * Merge branch 'release/3.x' of https://github.com/Discord-Net-Labs/Discord.Net-Labs into merger-labs Update requested changes of obsolete and references to labs. Added `Interaction` to `IMessage` Fixed grammar Fixed bugs relating to interactions. * Update docs * Update CHANGELOG.md * meta: docs building * Update docs.yml * Update docs.yml * Fix docfx version * Update docs.yml * Update docs.bat * Rename docs repo for clone * update docfx version * Update docs.bat * Update docfx version * Remove docs from pipeline * FAQ revamped, metadata updated (#241) * FAQ revamped, metadata updated * Update FAQ.md * Update README.md * Docs index improvement * Fix InvalidOperationException in modify channel * feature: guild avatars, closes #238 * feature: modify role icons * meta: changelog * meta: bump version * Update README.md * Fix non value type options not being included in autocomplete * Add new activity flags (#254) * Add new activity flags * Add missing commas * Added support for GUILD_JOIN_REQUEST_DELETE event (#253) Fixes #247 * Adding BotHTTPInteraction user flag (#252) * animated guild banner support (#255) * Docs work (WIP) (#242) * Main page work * Metadata logo dir * More main page edits * Naming change * Dnet guide entries pruned * Add student hub guild directory channel (#256) * animated guild banner support * Add guild directory channel * Fix followup with file overwrite having incorrect parameter locations * Merge labs 3.x * Update GUILD_JOIN_REQUEST_DELETE event * Update head.tmpl.partial * Removed BannerId and AccentColor (#260) * Removed BannerId property, GetBannerURL method, and AccentColor property from IUser and socket entities. * Fixed errors in IUser.cs * Added back summary for GetAvatarUrl method in IUser.cs * Support Guild Boost Progress Bars (#262) * Support Guild Boost Progress Bars * Update SocketChannel.cs * Fix non-optional and unnecessary values. * Spelling * Reordering and consistency. * Remove log for reconnect * Add missing flags to SystemChannelMessageDeny (#267) * Fix labs reference in analyzer project and provider project * Rename new activity flags * Guild feature revamp and smart gateway intent checks * Get thread user implementation * Amend creating slash command guide (#269) * Adding BotHTTPInteraction user flag * Added comments explaining the Global command create stipulations. * Fix numeric type check for options * Add state checking to ConnectionManager.StartAsync (#272) * initial interface changes * Multi file upload + attachment editing * meta: bump versions * Update CHANGELOG.md * Update CHANGELOG.md * Support Min and Max values on ApplicationCommandOptions (#273) * Support Min and Max values on ApplicationCommandOptions * Support decimal min/max values * Docs imrpovments + use ToNullable * Logomark, doc settings edit (#258) * Logomark, doc settings edit * Replace standard logo * Bumping docfx plugins to latest release * Bump version metadata * Logo svg fix * Change default sticker behavior and add AlwaysResolveSticker to the config * Implement rest based interactions. Added ED25519 checks. Updated summaries. * Update package logo * Automatically fix ordering of optional command options (#276) * auto fix optional command option order * clean up indentation * Fix maximum number of Select Menu Options (#282) As of https://discord.com/developers/docs/interactions/message-components#select-menu-object-select-menu-structure the maximum number of options is 25, not less than 25. Hopefully the change catches all necessary locations * Add voice region to modify voice channels * Update summaries on rest interactions * Interaction Specific Interfaces (#283) * added interaction specific interfaces * fix build error * implement change requests * Update application * Add Guild Scheduled Events (#279) * guild events initial * sharded events * Add new gateway intents and fix bugs * More work on new changes to guild events * Update guild scheduled events * Added events to extended guild and add event start event * Update preconditions * Implement breaking changes guild guild events. Add guild event permissions * Update tests and change privacy level requirements * Update summaries and add docs for guild events * meta: bump version * Increment meta version (#285) * Increment meta version * Update docfx.json * Fix #289 and add configureawaits to rest based interactions * meta: bump version * Add GUILD_SCHEDULED_EVENT_USER_ADD and GUILD_SCHEDULED_EVENT_USER_REMOVE (#287) * Remove newline * Fix autocomplete result value * meta: bump versions * Add `GuildScheduledEventUserAdd` and `GuildScheduledEventUserRemove` to sharded client * Make RestUserCommand public (#292) * Fix Components not showing on FUWF (#288) (#293) Adds Components to Payload JSON Generation * Implement smarter rest resolvable interaction data. Fixes #294 * Add UseInteractionSnowflakeDate to config #286 * Implement Better Discord Errors (#291) * Initial error parsing * Implement better errors * Add missing error codes * Add voice disconnect opcodes * Remove unused class, add summaries to discordjsonerror, and remove public constructor of slash command properties * Add error code summary * Update error message summary * Update src/Discord.Net.Core/DiscordJsonError.cs Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com> * Update src/Discord.Net.WebSocket/API/Voice/VoiceCloseCode.cs Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com> * Fix autocomplete result value Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com> * Change the minimum length of slash commands to 1 (#284) * Change the minimum length of slash commands to 1. This is the correct value according to the docs and it has been changed after user feedback. * Fix the limit in 3 other places Co-authored-by: quin lynch * Add new thread creation properties * Add role emoji. Fixes #295 * Fix mocked text channel * Fix precondition checks. Closes #281 * Initial fix (#297) * meta: bump version * Update from release/3.x * Remove more labs references * Remove doc file for Discord.Net.Analyzers Co-authored-by: Simon Hjorthøj Co-authored-by: drobbins329 Co-authored-by: MrCakeSlayer <13650699+MrCakeSlayer@users.noreply.github.com> Co-authored-by: d4n3436 Co-authored-by: Will Co-authored-by: Eugene Garbuzov Co-authored-by: CottageDwellingCat <80918250+CottageDwellingCat@users.noreply.github.com> Co-authored-by: Emily <89871431+emillly-b@users.noreply.github.com> Co-authored-by: marens101 Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com> Co-authored-by: Armano den Boef <68127614+Rozen4334@users.noreply.github.com> Co-authored-by: Bill Co-authored-by: Liege72 <65319395+Liege72@users.noreply.github.com> Co-authored-by: Floowey Co-authored-by: Cenk Ergen <57065323+Cenngo@users.noreply.github.com> Co-authored-by: exsersewo Co-authored-by: Dennis Fischer commit 3395700720bc42b0cbb4222b9821ab40bdac54c4 Author: Nikon <47792796+INikonI@users.noreply.github.com> Date: Mon Aug 23 02:00:18 2021 +0500 feature: IVoiceChannel implements IMentionable (#1896) commit 41b4686b5e77cd9986006866b9ac7ac418bc05f2 Author: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Tue Aug 3 20:43:10 2021 -0300 Update README.md commit 5fc31451a1fafdc471acfe3a08269d371b20b70b Author: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Tue Aug 3 20:28:15 2021 -0300 Update README.md commit 56d16397f7da77df31b6e1e2a1fd1a318c081cfd Author: roridev Date: Fri Nov 27 18:42:23 2020 -0300 Fixes Azure linux build failing due to a CS8652. commit c455b5033123825c639d8f18e52033b69b5595ba Author: roridev Date: Fri Nov 27 14:10:39 2020 -0300 Make use of new ValidateAndGetBestMatch api on ExecuteAsync commit 7955a0909043b964875796142bcfc5d9997e4798 Author: roridev Date: Fri Nov 27 13:52:53 2020 -0300 Creates ValidateAndGetBestMatch function This function will validate all commands from a SearchResult and return the result of said validation, along with the command matched, if a valid match was found. commit 574b503e9e87caee54c6df8143ada14268f4dcbb Author: roridev Date: Fri Nov 27 13:38:00 2020 -0300 Moves CalculateScore function to outer scope. * Update from Discord.Net dev - fix merge conflicts * meta: .net6 support * meta: pipelines use .net 6 * meta: bump tests framework versions * Invoke SlashCommandExecuted event on failed type conversion (#314) * added interaction specific interfaces * fix build error * implement change requests * add autocomplete respond method to IAutocompleteInteraction * fix sharded client current user * fix generic typeconverter picking priority * Revert "fix sharded client current user" This reverts commit a9c15ffd6ab02651e83e72c275889502b60cfddc. * Revert "add autocomplete respond method to IAutocompleteInteraction" This reverts commit f2fc50f1f19a0b41144b6dc93080d2f3a01282fc. * fix command parsing for names with spaces * add SlashCommandExecuted event invoke to failed type conversion * update interactions sample app * Revert "update interactions sample app" This reverts commit 6ac8cd0da60b440874cf29abc7202cdc49fd0538. * meta: bump to exclusive net.5 and net6 versions Co-Authored-By: JT * meta: bump versions * meta: add net461 support back * Add System.Collections.Immutable back to core * Fix presence NRE * meta: bump versions * Fix presence NRE again... * meta: bump version * Fix current user presence * meta: bump version * Fix NRE on service providerless command execution (#322) * fix not set to an instance of an object exception for service providerless command execution * add methods for manually registering global comands (#325) * fix dependency injection link in docs (#326) * Add back netstandard2.0 / 2.1. Closes #324 * meta: bump version * Add not supported exception on news channels when creating threads, #296 * Revert thread block for news channel. Add check for news channel Co-Authored-By: Nova Fox * Make autocomplete log virtual (#328) * Fix #300 again * Update GUILD_SCHEDULED_EVENT_CREATE (#330) Changed _guildScheduledEventCancelled to _guildScheduledEventCreated in GUILD_SCHEDULED_EVENT_CREATE * correct the number of allowed autocomplete choices (#333) * correct the number of allowed autocomplete choices (#334) * Add FollowupWithFileAsync to IDiscordInteraction (#336) * Add uppercase character check to SlashCommandBuilder and ApplicationCommandOptionProperties (#339) * Make IModuleBase and IInteractionModuleBase public (#341) * fix command validation (#335) * fix autocomplete command traversal and use IList in command map instead of stirng[] (#342) * Refactor Interactions (#340) * Refactor Interactions * Remove ApplicationCommandException * Fix Module Preconditions (#343) * fix module preconditions * fix module preconditions * meta: bump version * Update autocomplete docs * Initial preps * Fix #347 This comit makes `Content` optional for webhook execution. This comit also adds null checks to content when creating the api args to properly specify the optional struct to the model. This is done so the message entity doesn't try to parse a null string. * Fix merge errors * meta: net5 and 6 support * Update README.md Co-authored-by: Simon Hjorthøj Co-authored-by: MrCakeSlayer <13650699+MrCakeSlayer@users.noreply.github.com> Co-authored-by: drobbins329 Co-authored-by: d4n3436 Co-authored-by: Will Co-authored-by: Eugene Garbuzov Co-authored-by: CottageDwellingCat <80918250+CottageDwellingCat@users.noreply.github.com> Co-authored-by: Emily <89871431+emillly-b@users.noreply.github.com> Co-authored-by: marens101 Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com> Co-authored-by: Armano den Boef <68127614+Rozen4334@users.noreply.github.com> Co-authored-by: Bill Co-authored-by: Liege72 <65319395+Liege72@users.noreply.github.com> Co-authored-by: Floowey Co-authored-by: Cenk Ergen <57065323+Cenngo@users.noreply.github.com> Co-authored-by: exsersewo Co-authored-by: Dennis Fischer Co-authored-by: PoolPirate <94938310+PoolPirate@users.noreply.github.com> Co-authored-by: Playwo Co-authored-by: JT Co-authored-by: Nova Fox Co-authored-by: Daan van den Hoek <28300783+daanvandenhoek@users.noreply.github.com> Co-authored-by: nev-r --- Discord.Net.sln | 81 +- README.md | 2 +- azure/build.yml | 7 + azure/deploy.yml | 1 + .../interactions_framework/autocompleters.md | 27 + .../dependency-injection.md | 27 + docs/guides/interactions_framework/intro.md | 360 +++++++ .../interactions_framework/post_execution.md | 73 ++ .../interactions_framework/preconditions.md | 8 + .../interactions_framework/typeconverters.md | 130 +++ docs/guides/toc.yml | 8 + .../01_basic_ping_bot.csproj | 2 +- .../02_commands_framework.csproj | 2 +- .../03_sharded_client.csproj | 2 +- .../04_interactions_framework.csproj | 25 + .../CommandHandler.cs | 146 +++ .../04_interactions_framework/ExampleEnum.cs | 16 + .../Modules/UtilityModule.cs | 93 ++ samples/04_interactions_framework/Program.cs | 85 ++ .../RequireOwnerAttribute.cs | 27 + samples/idn/idn.csproj | 2 +- .../Discord.Net.Commands.csproj | 4 +- src/Discord.Net.Commands/IModuleBase.cs | 24 +- src/Discord.Net.Core/AssemblyInfo.cs | 1 + src/Discord.Net.Core/Discord.Net.Core.csproj | 6 +- .../Interactions/ApplicationCommandOption.cs | 4 + .../IMessageCommandInteraction.cs | 2 +- .../ContextMenus/IUserCommandInteraction.cs | 2 +- .../IApplicationCommandInteraction.cs | 19 + .../Interactions/IDiscordInteraction.cs | 107 +- .../SlashCommands/ISlashCommandInteraction.cs | 2 +- .../SlashCommands/SlashCommandBuilder.cs | 3 + .../Interactions/IInteractionContext.cs | 36 + .../Discord.Net.Examples.csproj | 2 +- .../Attributes/AutocompleteAttribute.cs | 36 + .../Attributes/ChannelTypesAttribute.cs | 30 + .../Attributes/ChoiceAttribute.cs | 64 ++ .../Commands/AutocompleteCommandAttribute.cs | 39 + .../Commands/ComponentInteractionAttribute.cs | 44 + .../Commands/ContextCommandAttribute.cs | 36 + .../Commands/MessageCommandAttribute.cs | 29 + .../Commands/SlashCommandAttribute.cs | 49 + .../Commands/UserCommandAttribute.cs | 29 + .../Attributes/DefaultPermissionAttribute.cs | 25 + .../Attributes/DontAutoRegisterAttribute.cs | 13 + .../Attributes/GroupAttribute.cs | 35 + .../Attributes/MaxValueAttribute.cs | 25 + .../Attributes/MinValueAttribute.cs | 25 + .../ParameterPreconditionAttribute.cs | 34 + .../Attributes/PreconditionAttribute.cs | 42 + .../Attributes/SummaryAttribute.cs | 32 + .../AutocompleteHandler.cs | 102 ++ .../IAutocompleteHandler.cs | 43 + .../Commands/AutocompleteCommandBuilder.cs | 76 ++ .../Builders/Commands/CommandBuilder.cs | 174 ++++ .../Commands/ComponentCommandBuilder.cs | 40 + .../Commands/ContextCommandBuilder.cs | 76 ++ .../Builders/Commands/ICommandBuilder.cs | 111 ++ .../Builders/Commands/SlashCommandBuilder.cs | 76 ++ .../Builders/ModuleBuilder.cs | 279 +++++ .../Builders/ModuleClassBuilder.cs | 469 +++++++++ .../Parameters/CommandParameterBuilder.cs | 25 + .../Builders/Parameters/IParameterBuilder.cs | 105 ++ .../Builders/Parameters/ParameterBuilder.cs | 162 +++ .../SlashCommandParameterBuilder.cs | 178 ++++ .../Discord.Net.Interactions.csproj | 25 + .../Entities/ParameterChoice.cs | 24 + .../Entities/SlashCommandChoiceType.cs | 21 + .../Extensions/AutocompleteOptionComparer.cs | 34 + .../Extensions/WebSocketExtensions.cs | 53 + .../IInteractionModuleBase.cs | 33 + .../Info/Commands/AutocompleteCommandInfo.cs | 89 ++ .../Info/Commands/CommandInfo.cs | 247 +++++ .../Info/Commands/ComponentCommandInfo.cs | 132 +++ .../ContextCommands/ContextCommandInfo.cs | 51 + .../ContextCommands/MessageCommandInfo.cs | 41 + .../ContextCommands/UserCommandInfo.cs | 41 + .../Info/Commands/SlashCommandInfo.cs | 112 +++ .../Info/IApplicationCommandInfo.cs | 23 + .../Info/ICommandInfo.cs | 83 ++ .../Info/IParameterInfo.cs | 57 ++ .../Info/ModuleInfo.cs | 217 ++++ .../Info/Parameters/CommandParameterInfo.cs | 62 ++ .../Parameters/SlashCommandParameterInfo.cs | 72 ++ .../InteractionCommandError.cs | 43 + .../InteractionContext.cs | 34 + .../InteractionModuleBase.cs | 68 ++ .../InteractionService.cs | 949 ++++++++++++++++++ .../InteractionServiceConfig.cs | 70 ++ .../Map/CommandMap.cs | 87 ++ .../Map/CommandMapNode.cs | 113 +++ .../RestInteractionModuleBase.cs | 59 ++ .../Results/AutocompletionResult.cs | 99 ++ .../Results/ExecuteResult.cs | 86 ++ .../Results/IResult.cs | 33 + .../Results/PreconditionGroupResult.cs | 51 + .../Results/PreconditionResult.cs | 59 ++ .../Results/RuntimeResult.cs | 37 + .../Results/SearchResult.cs | 37 + .../Results/TypeConverterResult.cs | 61 ++ src/Discord.Net.Interactions/RunMode.cs | 22 + .../DefaultEntityTypeConverter.cs | 83 ++ .../TypeConverters/DefaultValueConverter.cs | 61 ++ .../TypeConverters/EnumConverter.cs | 49 + .../TypeConverters/TimeSpanConverter.cs | 36 + .../TypeConverters/TypeConverter.cs | 46 + .../Utilities/ApplicationCommandRestUtil.cs | 200 ++++ .../Utilities/EmptyServiceProvider.cs | 11 + .../Utilities/InteractionUtility.cs | 113 +++ .../Utilities/ReflectionUtils.cs | 157 +++ .../Utilities/RegexUtils.cs | 85 ++ .../API/Rest/CreateWebhookMessageParams.cs | 2 +- .../API/Rest/UploadWebhookFileParams.cs | 3 + src/Discord.Net.Rest/AssemblyInfo.cs | 1 + src/Discord.Net.Rest/Discord.Net.Rest.csproj | 4 +- src/Discord.Net.Rest/DiscordRestApiClient.cs | 72 +- .../Entities/AuditLogs/AuditLogHelper.cs | 3 + .../DataTypes/ThreadCreateAuditLogData.cs | 115 +++ .../DataTypes/ThreadDeleteAuditLogData.cs | 103 ++ .../AuditLogs/DataTypes/ThreadInfo.cs | 39 + .../DataTypes/ThreadUpdateAuditLogData.cs | 88 ++ .../Entities/Channels/RestTextChannel.cs | 2 +- .../Entities/Channels/ThreadHelper.cs | 3 + .../CommandBase/RestCommandBase.cs | 177 ++-- .../MessageCommands/RestMessageCommand.cs | 3 + .../UserCommands/RestUserCommand.cs | 4 + .../Interactions/InteractionHelper.cs | 22 +- .../MessageComponents/RestMessageComponent.cs | 133 +-- .../Entities/Interactions/RestInteraction.cs | 115 ++- .../Interactions/RestPingInteraction.cs | 10 +- .../RestAutocompleteInteraction.cs | 40 +- .../SlashCommands/RestSlashCommand.cs | 4 + .../Entities/Messages/RestFollowupMessage.cs | 2 +- .../Messages/RestInteractionMessage.cs | 24 +- .../Extensions/EntityExtensions.cs | 45 +- .../Interactions/RestInteractionContext.cs | 80 ++ .../Net/Converters/GuildFeaturesConverter.cs | 20 +- .../Discord.Net.WebSocket.csproj | 10 +- .../DiscordSocketClient.cs | 4 +- .../Entities/Channels/SocketNewsChannel.cs | 1 + .../Entities/Channels/SocketTextChannel.cs | 2 +- .../MessageCommands/SocketMessageCommand.cs | 4 + .../UserCommands/SocketUserCommand.cs | 4 + .../SocketMessageComponent.cs | 133 ++- .../SocketAutocompleteInteraction.cs | 41 +- .../SlashCommands/SocketSlashCommand.cs | 4 + .../SocketBaseCommand/SocketCommandBase.cs | 133 ++- .../Entities/Interaction/SocketInteraction.cs | 92 +- .../Entities/Stickers/SocketSticker.cs | 6 + .../Entities/Users/SocketGuildUser.cs | 2 + .../Entities/Users/SocketUser.cs | 2 + .../Interactions/ShardedInteractionContext.cs | 43 + .../Interactions/SocketInteractionContext.cs | 82 ++ .../Discord.Net.Webhook.csproj | 2 +- .../Discord.Net.Analyzers.Tests.csproj | 6 +- .../Discord.Net.Tests.Integration.csproj | 3 +- .../Discord.Net.Tests.Unit.csproj | 5 +- 157 files changed, 9204 insertions(+), 494 deletions(-) create mode 100644 docs/guides/interactions_framework/autocompleters.md create mode 100644 docs/guides/interactions_framework/dependency-injection.md create mode 100644 docs/guides/interactions_framework/intro.md create mode 100644 docs/guides/interactions_framework/post_execution.md create mode 100644 docs/guides/interactions_framework/preconditions.md create mode 100644 docs/guides/interactions_framework/typeconverters.md create mode 100644 samples/04_interactions_framework/04_interactions_framework.csproj create mode 100644 samples/04_interactions_framework/CommandHandler.cs create mode 100644 samples/04_interactions_framework/ExampleEnum.cs create mode 100644 samples/04_interactions_framework/Modules/UtilityModule.cs create mode 100644 samples/04_interactions_framework/Program.cs create mode 100644 samples/04_interactions_framework/RequireOwnerAttribute.cs create mode 100644 src/Discord.Net.Core/Entities/Interactions/IApplicationCommandInteraction.cs create mode 100644 src/Discord.Net.Core/Interactions/IInteractionContext.cs create mode 100644 src/Discord.Net.Interactions/Attributes/AutocompleteAttribute.cs create mode 100644 src/Discord.Net.Interactions/Attributes/ChannelTypesAttribute.cs create mode 100644 src/Discord.Net.Interactions/Attributes/ChoiceAttribute.cs create mode 100644 src/Discord.Net.Interactions/Attributes/Commands/AutocompleteCommandAttribute.cs create mode 100644 src/Discord.Net.Interactions/Attributes/Commands/ComponentInteractionAttribute.cs create mode 100644 src/Discord.Net.Interactions/Attributes/Commands/ContextCommandAttribute.cs create mode 100644 src/Discord.Net.Interactions/Attributes/Commands/MessageCommandAttribute.cs create mode 100644 src/Discord.Net.Interactions/Attributes/Commands/SlashCommandAttribute.cs create mode 100644 src/Discord.Net.Interactions/Attributes/Commands/UserCommandAttribute.cs create mode 100644 src/Discord.Net.Interactions/Attributes/DefaultPermissionAttribute.cs create mode 100644 src/Discord.Net.Interactions/Attributes/DontAutoRegisterAttribute.cs create mode 100644 src/Discord.Net.Interactions/Attributes/GroupAttribute.cs create mode 100644 src/Discord.Net.Interactions/Attributes/MaxValueAttribute.cs create mode 100644 src/Discord.Net.Interactions/Attributes/MinValueAttribute.cs create mode 100644 src/Discord.Net.Interactions/Attributes/ParameterPreconditionAttribute.cs create mode 100644 src/Discord.Net.Interactions/Attributes/PreconditionAttribute.cs create mode 100644 src/Discord.Net.Interactions/Attributes/SummaryAttribute.cs create mode 100644 src/Discord.Net.Interactions/AutocompleteHandlers/AutocompleteHandler.cs create mode 100644 src/Discord.Net.Interactions/AutocompleteHandlers/IAutocompleteHandler.cs create mode 100644 src/Discord.Net.Interactions/Builders/Commands/AutocompleteCommandBuilder.cs create mode 100644 src/Discord.Net.Interactions/Builders/Commands/CommandBuilder.cs create mode 100644 src/Discord.Net.Interactions/Builders/Commands/ComponentCommandBuilder.cs create mode 100644 src/Discord.Net.Interactions/Builders/Commands/ContextCommandBuilder.cs create mode 100644 src/Discord.Net.Interactions/Builders/Commands/ICommandBuilder.cs create mode 100644 src/Discord.Net.Interactions/Builders/Commands/SlashCommandBuilder.cs create mode 100644 src/Discord.Net.Interactions/Builders/ModuleBuilder.cs create mode 100644 src/Discord.Net.Interactions/Builders/ModuleClassBuilder.cs create mode 100644 src/Discord.Net.Interactions/Builders/Parameters/CommandParameterBuilder.cs create mode 100644 src/Discord.Net.Interactions/Builders/Parameters/IParameterBuilder.cs create mode 100644 src/Discord.Net.Interactions/Builders/Parameters/ParameterBuilder.cs create mode 100644 src/Discord.Net.Interactions/Builders/Parameters/SlashCommandParameterBuilder.cs create mode 100644 src/Discord.Net.Interactions/Discord.Net.Interactions.csproj create mode 100644 src/Discord.Net.Interactions/Entities/ParameterChoice.cs create mode 100644 src/Discord.Net.Interactions/Entities/SlashCommandChoiceType.cs create mode 100644 src/Discord.Net.Interactions/Extensions/AutocompleteOptionComparer.cs create mode 100644 src/Discord.Net.Interactions/Extensions/WebSocketExtensions.cs create mode 100644 src/Discord.Net.Interactions/IInteractionModuleBase.cs create mode 100644 src/Discord.Net.Interactions/Info/Commands/AutocompleteCommandInfo.cs create mode 100644 src/Discord.Net.Interactions/Info/Commands/CommandInfo.cs create mode 100644 src/Discord.Net.Interactions/Info/Commands/ComponentCommandInfo.cs create mode 100644 src/Discord.Net.Interactions/Info/Commands/ContextCommands/ContextCommandInfo.cs create mode 100644 src/Discord.Net.Interactions/Info/Commands/ContextCommands/MessageCommandInfo.cs create mode 100644 src/Discord.Net.Interactions/Info/Commands/ContextCommands/UserCommandInfo.cs create mode 100644 src/Discord.Net.Interactions/Info/Commands/SlashCommandInfo.cs create mode 100644 src/Discord.Net.Interactions/Info/IApplicationCommandInfo.cs create mode 100644 src/Discord.Net.Interactions/Info/ICommandInfo.cs create mode 100644 src/Discord.Net.Interactions/Info/IParameterInfo.cs create mode 100644 src/Discord.Net.Interactions/Info/ModuleInfo.cs create mode 100644 src/Discord.Net.Interactions/Info/Parameters/CommandParameterInfo.cs create mode 100644 src/Discord.Net.Interactions/Info/Parameters/SlashCommandParameterInfo.cs create mode 100644 src/Discord.Net.Interactions/InteractionCommandError.cs create mode 100644 src/Discord.Net.Interactions/InteractionContext.cs create mode 100644 src/Discord.Net.Interactions/InteractionModuleBase.cs create mode 100644 src/Discord.Net.Interactions/InteractionService.cs create mode 100644 src/Discord.Net.Interactions/InteractionServiceConfig.cs create mode 100644 src/Discord.Net.Interactions/Map/CommandMap.cs create mode 100644 src/Discord.Net.Interactions/Map/CommandMapNode.cs create mode 100644 src/Discord.Net.Interactions/RestInteractionModuleBase.cs create mode 100644 src/Discord.Net.Interactions/Results/AutocompletionResult.cs create mode 100644 src/Discord.Net.Interactions/Results/ExecuteResult.cs create mode 100644 src/Discord.Net.Interactions/Results/IResult.cs create mode 100644 src/Discord.Net.Interactions/Results/PreconditionGroupResult.cs create mode 100644 src/Discord.Net.Interactions/Results/PreconditionResult.cs create mode 100644 src/Discord.Net.Interactions/Results/RuntimeResult.cs create mode 100644 src/Discord.Net.Interactions/Results/SearchResult.cs create mode 100644 src/Discord.Net.Interactions/Results/TypeConverterResult.cs create mode 100644 src/Discord.Net.Interactions/RunMode.cs create mode 100644 src/Discord.Net.Interactions/TypeConverters/DefaultEntityTypeConverter.cs create mode 100644 src/Discord.Net.Interactions/TypeConverters/DefaultValueConverter.cs create mode 100644 src/Discord.Net.Interactions/TypeConverters/EnumConverter.cs create mode 100644 src/Discord.Net.Interactions/TypeConverters/TimeSpanConverter.cs create mode 100644 src/Discord.Net.Interactions/TypeConverters/TypeConverter.cs create mode 100644 src/Discord.Net.Interactions/Utilities/ApplicationCommandRestUtil.cs create mode 100644 src/Discord.Net.Interactions/Utilities/EmptyServiceProvider.cs create mode 100644 src/Discord.Net.Interactions/Utilities/InteractionUtility.cs create mode 100644 src/Discord.Net.Interactions/Utilities/ReflectionUtils.cs create mode 100644 src/Discord.Net.Interactions/Utilities/RegexUtils.cs create mode 100644 src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ThreadCreateAuditLogData.cs create mode 100644 src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ThreadDeleteAuditLogData.cs create mode 100644 src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ThreadInfo.cs create mode 100644 src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ThreadUpdateAuditLogData.cs create mode 100644 src/Discord.Net.Rest/Interactions/RestInteractionContext.cs create mode 100644 src/Discord.Net.WebSocket/Interactions/ShardedInteractionContext.cs create mode 100644 src/Discord.Net.WebSocket/Interactions/SocketInteractionContext.cs diff --git a/Discord.Net.sln b/Discord.Net.sln index 084d8a834..c22d91e27 100644 --- a/Discord.Net.sln +++ b/Discord.Net.sln @@ -1,6 +1,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.28407.52 +# Visual Studio Version 17 +VisualStudioVersion = 17.1.31903.286 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Core", "src\Discord.Net.Core\Discord.Net.Core.csproj", "{91E9E7BD-75C9-4E98-84AA-2C271922E5C2}" EndProject @@ -12,16 +12,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Commands", "src EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.WebSocket", "src\Discord.Net.WebSocket\Discord.Net.WebSocket.csproj", "{688FD1D8-7F01-4539-B2E9-F473C5D699C7}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Providers", "Providers", "{B0657AAE-DCC5-4FBF-8E5D-1FB578CF3012}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Providers.WS4Net", "src\Discord.Net.Providers.WS4Net\Discord.Net.Providers.WS4Net.csproj", "{6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Extensions", "Extensions", "{CC3D4B1C-9DE0-448B-8AE7-F3F1F3EC5C3A}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Webhook", "src\Discord.Net.Webhook\Discord.Net.Webhook.csproj", "{9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Analyzers", "src\Discord.Net.Analyzers\Discord.Net.Analyzers.csproj", "{BBA8E7FB-C834-40DC-822F-B112CB7F0140}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{BB59D5B5-E7B0-4BF4-8F82-D14431B2799B}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "01_basic_ping_bot", "samples\01_basic_ping_bot\01_basic_ping_bot.csproj", "{F2FF84FB-F6AD-47E5-9EE5-18206CAE136E}" @@ -42,6 +36,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Examples", "src EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "idn", "samples\idn\idn.csproj", "{4A03840B-9EBE-47E3-89AB-E0914DF21AFB}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Interactions", "src\Discord.Net.Interactions\Discord.Net.Interactions.csproj", "{137DB209-B357-4EE8-A6EE-4B6127F6DEE9}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "04_interactions_framework", "samples\04_interactions_framework\04_interactions_framework.csproj", "{A23E46D2-1610-4AE5-820F-422D34810887}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Analyzers", "src\Discord.Net.Analyzers\Discord.Net.Analyzers.csproj", "{24C231FD-8CF3-444A-9E7C-45C18BAD4A0D}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -100,18 +100,6 @@ Global {688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Release|x64.Build.0 = Release|Any CPU {688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Release|x86.ActiveCfg = Release|Any CPU {688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Release|x86.Build.0 = Release|Any CPU - {6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Debug|x64.ActiveCfg = Debug|Any CPU - {6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Debug|x64.Build.0 = Debug|Any CPU - {6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Debug|x86.ActiveCfg = Debug|Any CPU - {6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Debug|x86.Build.0 = Debug|Any CPU - {6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Release|Any CPU.Build.0 = Release|Any CPU - {6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Release|x64.ActiveCfg = Release|Any CPU - {6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Release|x64.Build.0 = Release|Any CPU - {6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Release|x86.ActiveCfg = Release|Any CPU - {6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Release|x86.Build.0 = Release|Any CPU {9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Debug|Any CPU.Build.0 = Debug|Any CPU {9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -124,18 +112,6 @@ Global {9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Release|x64.Build.0 = Release|Any CPU {9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Release|x86.ActiveCfg = Release|Any CPU {9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Release|x86.Build.0 = Release|Any CPU - {BBA8E7FB-C834-40DC-822F-B112CB7F0140}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BBA8E7FB-C834-40DC-822F-B112CB7F0140}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BBA8E7FB-C834-40DC-822F-B112CB7F0140}.Debug|x64.ActiveCfg = Debug|Any CPU - {BBA8E7FB-C834-40DC-822F-B112CB7F0140}.Debug|x64.Build.0 = Debug|Any CPU - {BBA8E7FB-C834-40DC-822F-B112CB7F0140}.Debug|x86.ActiveCfg = Debug|Any CPU - {BBA8E7FB-C834-40DC-822F-B112CB7F0140}.Debug|x86.Build.0 = Debug|Any CPU - {BBA8E7FB-C834-40DC-822F-B112CB7F0140}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BBA8E7FB-C834-40DC-822F-B112CB7F0140}.Release|Any CPU.Build.0 = Release|Any CPU - {BBA8E7FB-C834-40DC-822F-B112CB7F0140}.Release|x64.ActiveCfg = Release|Any CPU - {BBA8E7FB-C834-40DC-822F-B112CB7F0140}.Release|x64.Build.0 = Release|Any CPU - {BBA8E7FB-C834-40DC-822F-B112CB7F0140}.Release|x86.ActiveCfg = Release|Any CPU - {BBA8E7FB-C834-40DC-822F-B112CB7F0140}.Release|x86.Build.0 = Release|Any CPU {F2FF84FB-F6AD-47E5-9EE5-18206CAE136E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F2FF84FB-F6AD-47E5-9EE5-18206CAE136E}.Debug|Any CPU.Build.0 = Debug|Any CPU {F2FF84FB-F6AD-47E5-9EE5-18206CAE136E}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -232,6 +208,42 @@ Global {4A03840B-9EBE-47E3-89AB-E0914DF21AFB}.Release|x64.Build.0 = Release|Any CPU {4A03840B-9EBE-47E3-89AB-E0914DF21AFB}.Release|x86.ActiveCfg = Release|Any CPU {4A03840B-9EBE-47E3-89AB-E0914DF21AFB}.Release|x86.Build.0 = Release|Any CPU + {137DB209-B357-4EE8-A6EE-4B6127F6DEE9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {137DB209-B357-4EE8-A6EE-4B6127F6DEE9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {137DB209-B357-4EE8-A6EE-4B6127F6DEE9}.Debug|x64.ActiveCfg = Debug|Any CPU + {137DB209-B357-4EE8-A6EE-4B6127F6DEE9}.Debug|x64.Build.0 = Debug|Any CPU + {137DB209-B357-4EE8-A6EE-4B6127F6DEE9}.Debug|x86.ActiveCfg = Debug|Any CPU + {137DB209-B357-4EE8-A6EE-4B6127F6DEE9}.Debug|x86.Build.0 = Debug|Any CPU + {137DB209-B357-4EE8-A6EE-4B6127F6DEE9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {137DB209-B357-4EE8-A6EE-4B6127F6DEE9}.Release|Any CPU.Build.0 = Release|Any CPU + {137DB209-B357-4EE8-A6EE-4B6127F6DEE9}.Release|x64.ActiveCfg = Release|Any CPU + {137DB209-B357-4EE8-A6EE-4B6127F6DEE9}.Release|x64.Build.0 = Release|Any CPU + {137DB209-B357-4EE8-A6EE-4B6127F6DEE9}.Release|x86.ActiveCfg = Release|Any CPU + {137DB209-B357-4EE8-A6EE-4B6127F6DEE9}.Release|x86.Build.0 = Release|Any CPU + {A23E46D2-1610-4AE5-820F-422D34810887}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A23E46D2-1610-4AE5-820F-422D34810887}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A23E46D2-1610-4AE5-820F-422D34810887}.Debug|x64.ActiveCfg = Debug|Any CPU + {A23E46D2-1610-4AE5-820F-422D34810887}.Debug|x64.Build.0 = Debug|Any CPU + {A23E46D2-1610-4AE5-820F-422D34810887}.Debug|x86.ActiveCfg = Debug|Any CPU + {A23E46D2-1610-4AE5-820F-422D34810887}.Debug|x86.Build.0 = Debug|Any CPU + {A23E46D2-1610-4AE5-820F-422D34810887}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A23E46D2-1610-4AE5-820F-422D34810887}.Release|Any CPU.Build.0 = Release|Any CPU + {A23E46D2-1610-4AE5-820F-422D34810887}.Release|x64.ActiveCfg = Release|Any CPU + {A23E46D2-1610-4AE5-820F-422D34810887}.Release|x64.Build.0 = Release|Any CPU + {A23E46D2-1610-4AE5-820F-422D34810887}.Release|x86.ActiveCfg = Release|Any CPU + {A23E46D2-1610-4AE5-820F-422D34810887}.Release|x86.Build.0 = Release|Any CPU + {24C231FD-8CF3-444A-9E7C-45C18BAD4A0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {24C231FD-8CF3-444A-9E7C-45C18BAD4A0D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {24C231FD-8CF3-444A-9E7C-45C18BAD4A0D}.Debug|x64.ActiveCfg = Debug|Any CPU + {24C231FD-8CF3-444A-9E7C-45C18BAD4A0D}.Debug|x64.Build.0 = Debug|Any CPU + {24C231FD-8CF3-444A-9E7C-45C18BAD4A0D}.Debug|x86.ActiveCfg = Debug|Any CPU + {24C231FD-8CF3-444A-9E7C-45C18BAD4A0D}.Debug|x86.Build.0 = Debug|Any CPU + {24C231FD-8CF3-444A-9E7C-45C18BAD4A0D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {24C231FD-8CF3-444A-9E7C-45C18BAD4A0D}.Release|Any CPU.Build.0 = Release|Any CPU + {24C231FD-8CF3-444A-9E7C-45C18BAD4A0D}.Release|x64.ActiveCfg = Release|Any CPU + {24C231FD-8CF3-444A-9E7C-45C18BAD4A0D}.Release|x64.Build.0 = Release|Any CPU + {24C231FD-8CF3-444A-9E7C-45C18BAD4A0D}.Release|x86.ActiveCfg = Release|Any CPU + {24C231FD-8CF3-444A-9E7C-45C18BAD4A0D}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -240,9 +252,7 @@ Global {BFC6DC28-0351-4573-926A-D4124244C04F} = {288C363D-A636-4EAE-9AC1-4698B641B26E} {078DD7E6-943D-4D09-AFC2-D2BA58B76C9C} = {CC3D4B1C-9DE0-448B-8AE7-F3F1F3EC5C3A} {688FD1D8-7F01-4539-B2E9-F473C5D699C7} = {288C363D-A636-4EAE-9AC1-4698B641B26E} - {6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7} = {B0657AAE-DCC5-4FBF-8E5D-1FB578CF3012} {9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30} = {CC3D4B1C-9DE0-448B-8AE7-F3F1F3EC5C3A} - {BBA8E7FB-C834-40DC-822F-B112CB7F0140} = {CC3D4B1C-9DE0-448B-8AE7-F3F1F3EC5C3A} {F2FF84FB-F6AD-47E5-9EE5-18206CAE136E} = {BB59D5B5-E7B0-4BF4-8F82-D14431B2799B} {4E1F1F40-B1DD-40C9-A4B1-A2046A4C9C76} = {BB59D5B5-E7B0-4BF4-8F82-D14431B2799B} {9B4C4AFB-3D15-44C6-9E36-12ED625AAA26} = {BB59D5B5-E7B0-4BF4-8F82-D14431B2799B} @@ -251,6 +261,9 @@ Global {FC67057C-E92F-4E1C-98BE-46F839C8AD71} = {C7CF5621-7D36-433B-B337-5A2E3C101A71} {47820065-3CFB-401C-ACEA-862BD564A404} = {BB59D5B5-E7B0-4BF4-8F82-D14431B2799B} {4A03840B-9EBE-47E3-89AB-E0914DF21AFB} = {BB59D5B5-E7B0-4BF4-8F82-D14431B2799B} + {137DB209-B357-4EE8-A6EE-4B6127F6DEE9} = {CC3D4B1C-9DE0-448B-8AE7-F3F1F3EC5C3A} + {A23E46D2-1610-4AE5-820F-422D34810887} = {BB59D5B5-E7B0-4BF4-8F82-D14431B2799B} + {24C231FD-8CF3-444A-9E7C-45C18BAD4A0D} = {CC3D4B1C-9DE0-448B-8AE7-F3F1F3EC5C3A} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {D2404771-EEC8-45F2-9D71-F3373F6C1495} diff --git a/README.md b/README.md index 87b46fb64..a10a6cf51 100644 --- a/README.md +++ b/README.md @@ -64,4 +64,4 @@ Due to the nature of the Discord API, we will oftentimes need to add a property Furthermore, while we will never break the API (outside of interface changes) on minor builds, we will occasionally need to break the ABI, by introducing parameters to a method to match changes upstream with Discord. As such, a minor version increment may require you to recompile your code, and dependencies, such as addons, may also need to be recompiled and republished on the newer version. When a binary breaking change is made, the change will be noted in the release notes. -An increment of the MAJOR component indicates that breaking changes have been made to the library; consumers should check the release notes to determine what changes need to be made. +An increment of the MAJOR component indicates that breaking changes have been made to the library; consumers should check the release notes to determine what changes need to be made. \ No newline at end of file diff --git a/azure/build.yml b/azure/build.yml index 63ba93964..a4646ad73 100644 --- a/azure/build.yml +++ b/azure/build.yml @@ -1,4 +1,11 @@ steps: +- task: UseDotNet@2 + displayName: 'Use .NET Core sdk' + inputs: + packageType: 'sdk' + version: '6.0.x' + includePreviewVersions: true + - task: DotNetCoreCLI@2 inputs: command: 'restore' diff --git a/azure/deploy.yml b/azure/deploy.yml index 61994299e..4742da3c8 100644 --- a/azure/deploy.yml +++ b/azure/deploy.yml @@ -7,6 +7,7 @@ steps: dotnet pack "src\Discord.Net.Webhook\Discord.Net.Webhook.csproj" --no-restore --no-build -v minimal -c $(buildConfiguration) -o "$(Build.ArtifactStagingDirectory)" /p:BuildNumber=$(buildNumber) /p:IsTagBuild=$(buildTag) dotnet pack "src\Discord.Net.Providers.WS4Net\Discord.Net.Providers.WS4Net.csproj" --no-restore --no-build -v minimal -c $(buildConfiguration) -o "$(Build.ArtifactStagingDirectory)" /p:BuildNumber=$(buildNumber) /p:IsTagBuild=$(buildTag) dotnet pack "src\Discord.Net.Analyzers\Discord.Net.Analyzers.csproj" --no-restore --no-build -v minimal -c $(buildConfiguration) -o "$(Build.ArtifactStagingDirectory)" /p:BuildNumber=$(buildNumber) /p:IsTagBuild=$(buildTag) + dotnet pack "src\Discord.Net.Interactions\Discord.Net.Interactions.csproj" --no-restore --no-build -v minimal -c $(buildConfiguration) -o "$(Build.ArtifactStagingDirectory)" /p:BuildNumber=$(buildNumber) /p:IsTagBuild=$(buildTag) displayName: Pack projects - task: NuGetCommand@2 diff --git a/docs/guides/interactions_framework/autocompleters.md b/docs/guides/interactions_framework/autocompleters.md new file mode 100644 index 000000000..9f84ace75 --- /dev/null +++ b/docs/guides/interactions_framework/autocompleters.md @@ -0,0 +1,27 @@ +--- +uid: Guides.InteractionsFramework.Autocompleters +title: Autocompleters +--- + +# Autocompleters + +Autocompleters provide a similar pattern to TypeConverters. Autocompleters are cached, singleton services and they are used by the Interaction Service to handle Autocomplete Interations targeted to a specific Slash Command parameter. + +To start using Autocompleters, use the `[AutocompleteAttribute(Type autocompleterType)]` overload of the `[AutocompleteAttribute]`. This will dynamically link the parameter to the Autocompleter type. + +## Creating Autocompleters + +A valid Autocompleter must inherit `AutocompleteHandler` base type and implement all of its abstract methods. + +### GenerateSuggestionsAsync() + +Interactions Service uses this method to generate a response to a Autocomplete Interaction. This method should return `AutocompletionResult.FromSuccess(IEnumerable)` to display parameter sugesstions to the user. If there are no suggestions to be presented to the user, you have two options: + +1. Returning the parameterless `AutocompletionResult.FromSuccess()` will display "No options match your search." message to the user. +2. Returning `AutocompleteResult.FromError()` will make the Interaction Service not respond to the interation, consequently displaying the user "Loading options failed." message. + +## Resolving Autocompleter Dependencies + +Autocompleter dependencies are resolved using the same dependency injection pattern as the Interaction Modules. Property injection and constructor injection are both valid ways to get service dependencies. + +Because Autocompleters are constructed at service startup, class dependencies are resolved only once. If you need to access per-request dependencies you can use the IServiceProvider parameter of the `GenerateSuggestionsAsync()` method. diff --git a/docs/guides/interactions_framework/dependency-injection.md b/docs/guides/interactions_framework/dependency-injection.md new file mode 100644 index 000000000..bed58e1c3 --- /dev/null +++ b/docs/guides/interactions_framework/dependency-injection.md @@ -0,0 +1,27 @@ +--- +uid: Guides.InteractionsFramework.DependencyInjection +title: Dependency Injection +--- + +# Dependency Injection + +Interaction Service uses dependency injection to perform most of its operations. This way, you can access service dependencies throughout the framework. + +## Setup + +1. Create a `Microsoft.Extensions.DependencyInjection.ServiceCollection`. +2. Add the dependencies you wish to use in the modules. +3. Build a `IServiceProvider` using the `BuildServiceProvider()` method of the `ServiceCollection`. +4. Pass the `IServiceProvider` to `AddModulesAsync()`, `AddModuleAsync()` and `ExecuteAsync()` methods. + +## Accessing the Dependencies + +Services of a `IServiceProvider` can be accessed using *Contructor Injection* and *Property Injection*. + +Interaction Service will populate the constructor parameters using the provided `IServiceProvider`. Any public settable class Property will also be populated in the same manner. + +## Service Scopes + +Interaction Service has built-in support for scoped service types. Scoped lifetime services are instantiated once per command execution. Including the Preconditon checks, every module operation is executed within a single service scope (which is sepearate from the global service scope). + +> For more in-depth information about service lifetimes check out [Microsoft Docs](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-5.0#service-lifetimes-1). diff --git a/docs/guides/interactions_framework/intro.md b/docs/guides/interactions_framework/intro.md new file mode 100644 index 000000000..f240eddd0 --- /dev/null +++ b/docs/guides/interactions_framework/intro.md @@ -0,0 +1,360 @@ +--- +uid: Guides.InteractionsFramework.Intro +title: Introduction to the Interaction Framework +--- + +# Getting Started + +Interaction Service provides an attribute based framework for creating Discord Interaction handlers. + +To start using the Interaction Service, you need to create a service instance. Optionally you can provide the `InterctionService` constructor with a `InteractionServiceConfig` to change the services behaviour to suit your needs. + +```csharp +... + +var commands = new InteractionService(discord); + +... +``` + +## Modules + +Attribute based Interaction handlers must be defined within a command module class. Command modules are responsible for executing the Interaction handlers and providing them with the necessary execution info and helper functions. + +Command modules are transient objects. A new module instance is created before a command execution starts then it will be disposed right after the method returns. + +Every module class must: + +- be public +- inherit `InteractionModuleBase` + +Optionally you can override the included : + +- OnModuleBuilding (executed after the module is built) +- BeforeExecute (executed before a command execution starts) +- AfterExecute (executed after a command execution concludes) + +methods to configure the modules behaviour. + +Every command module exposes a set of helper methods, namely: + +- `RespondAsync()` => Respond to the interaction +- `FollowupAsync()` => Create a followup message for an interaction +- `ReplyAsync()` => Send a message to the origin channel of the interaction +- `DeleteOriginalResponseAsync()` => Delete the original interaction response + +## Commands + +Valid **Interaction Commands** must comply with the following requirements: + +| | return type | max parameter count | allowed parameter types | attribute | +|-------------------------------|------------------------------|---------------------|-------------------------------|--------------------------| +|[Slash Command](#slash-commands)| `Task`/`Task` | 25 | any* | `[SlashCommand]` | +|[User Command](#user-commands) | `Task`/`Task` | 1 | Implementations of `IUser` | `[UserCommand]` | +|[Message Command](#message-commands)| `Task`/`Task` | 1 | Implementations of `IMessage` | `[MessageCommand]` | +|[Component Interaction Command](#component-interaction-commands)| `Task`/`Task` | inf | `string` or `string[]` | `[ComponentInteraction]` | +|[Autocomplete Command](#autocomplete-commands)| `Task`/`Task` | - | - | `[AutocompleteCommand]`| + +> [!NOTE] +> a `TypeConverter` that is capable of parsing type in question must be registered to the `InteractionService` instance. + +You should avoid using long running code in your command module. Depending on your setup, long running code may block the Gateway thread of your bot, interrupting its connection to Discord. + +### Slash Commands + +Slash Commands are created using the `[SlashCommandAttribute]`. Every Slash Command must declare a name and a description. You can check Discords **Application Command Naming Guidelines** [here](https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-naming). + +```csharp +[SlashCommand("echo", "Echo an input")] +public async Task Echo(string input) +{ + await RespondAsync(input); +} +``` + +#### Parameters + +Slash Commands can have up to 25 method parameters. You must name your parameters in accordance with [Discords Naming Guidelines](https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-naming). Interaction Service also features a pascal casing seperator for formatting parameter names with pascal casing into Discord compliant parameter names('parameterName' => 'parameter-name'). By default, your methods can feature the following parameter types: + +- Implementations of `IUser` +- Implementations of `IChannel`* +- Implementations of `IRole` +- Implementations of `IMentionable` +- `string` +- `float`, `double`, `decimal` +- `bool` +- `char` +- `sbyte`, `byte` +- `int16`, `int32`, `int64` +- `uint16`, `uint32`, `uint64` +- `enum` (Values are registered as multiple choice options and are enforced by Discord. Use `[HideAttribute]' on enum values to prevent them from getting registered.) +- `DateTime` +- `TimeSpan` + +--- + +**You can use more specialized implementations of `IChannel` to restrict the allowed channel types for a channel type option.* +| interface | Channel Type | +|---------------------|-------------------------------| +| `IStageChannel` | Stage Channels | +| `IVoiceChannel` | Voice Channels | +| `IDMChannel` | DM Channels | +| `IGroupChannel` | Group Channels | +| `ICategory Channel` | Category Channels | +| `INewsChannel` | News Channels | +| `IThreadChannel` | Public, Private, News Threads | +| `ITextChannel` | Text Channels | + +--- + +##### Optional Parameters + +Parameters with default values (ie. `int count = 0`) will be displayed as optional parameters on Discord Client. + +##### Parameter Summary + +By using the `[SummaryAttribute]` you can customize the displayed name and description of a parameter + +```csharp +[Summary(description: "this is a parameter description")] string input +``` + +##### Parameter Choices + +`[ChoiceAttribute]` can be used to add choices to a parameter. + +```csharp +[SlashCommand("blep", "Send a random adorable animal photo")] +public async Task Blep([Choice("Dog","dog"), Choice("Cat", "cat"), Choice("Penguin", "penguin")] string animal) +{ + ... +} +``` + +In most cases, instead of relying on this attribute, you should use an `Enum` to create multiple choice parameters. Ex. + +```csharp +public enum Animal +{ + Cat, + Dog, + Penguin +} + +[SlashCommand("blep", "Send a random adorable animal photo")] +public async Task Blep(Animal animal) +{ + ... +} +``` + +This Slash Command will be displayed exactly the same as the previous example. + +##### Channel Types + +Channel types for an `IChannel` parameter can also be restricted using the `[ChannelTypesAttribute]`. + +```csharp +[SlashCommand("name", "Description")] +public async Task Command([ChannelTypes(ChannelType.Stage, ChannelType.Text)]IChannel channel) +{ + ... +} +``` + +In this case, user can only input Stage Channels and Text Channels to this parameter. + +##### Autocomplete + +You can enable Autocomple Interactions for a Slash Command parameter using the `[AutocompleteAttribute]`. To handle the Autocomplete Interactions raised by this parameter you can either create [Autocomplete Commands](#autocomplete-commands) or you can opt to use the [Autocompleters Pattern](./autocompleters) + +##### Min/Max Value + +You can specify the permitted max/min value for a number type parameter using the `[MaxValueAttribute]` and `[MinValueAttribute]`. + +### User Commands + +A valid User Command must have the following structure: + +```csharp +[UserCommand("Say Hello")] +public async Task SayHello(IUser user) +{ + ... +} +``` + +User commands can only have one parameter and its type must be an implementation of `IUser`. + +### Message Commands + +A valid Message Command must have the following structure: + +```csharp +[MessageCommand("Bookmark")] +public async Task Bookmark(IMessage user) +{ + ... +} +``` + +Message commands can only have one parameter and its type must be an implementation of `IMessage`. + +### Component Interaction Commands + +Component Interaction Commands are used to handle interactions that originate from **Discord Message Component**s. This pattern is particularly useful if you will be reusing a set a **Custom ID**s. + +```csharp +[ComponentInteraction("custom_id")] +public async Task RoleSelection() +{ + ... +} +``` + +Component Interaction Commands support wild card matching, by default `*` character can be used to create a wild card pattern. Interaction Service will use lazy matching to capture the words corresponding to the wild card character. And the captured words will be passed on to the command method in the same order they were captured. + +*Ex.* + +If Interaction Service recieves a component interaction with **player:play,rickroll** custom id, `op` will be *play* and `name` will be *rickroll* + +```csharp +[ComponentInteraction("player:*,*")] +public async Task Play(string op, string name) +{ + ... +} +``` + +You may use as many wild card characters as you want. + +#### Select Menus + +Unlike button interactions, select menu interactions also contain the values of the selected menu items. In this case, you should structure your method to accept a string array. + +```csharp +[ComponentInteraction("role_selection")] +public async Task RoleSelection(string[] selectedRoles) +{ + ... +} +``` + + Wild card pattern can also be used to match select menu custom ids but remember that the array containing the select menu values should be the last parameter. + +```csharp +[ComponentInteraction("role_selection_*")] +public async Task RoleSelection(string id, string[] selectedRoles) +{ + ... +} +``` + +### Autocomplete Commands + +Autocomplete commands must be parameterless methods. A valid Autocomplete command must have the following structure: + +```csharp +[AutocompleteCommand("command_name", "parameter_name")] +public async Task Autocomplete() +{ + IEnumerable results; + + ... + + await (Context.Interaction as SocketAutocompleteInteraction).RespondAsync(results); +} +``` + +Alternatively, you can use the *Autocompleters* to simplify this workflow. + +## Interaction Context + +Every command module provides its commands with an execution context. This context property includes general information about the underlying interaction that triggered the command execution. The base command context. + +You can design your modules to work with different implementation types of `IInteractionContext`. To achieve this, make sure your module classes inherit from the generic variant of the `InteractionModuleBase`. + +> Context type must be consistent throughout the project, or you will run into issues during runtime. + +Interaction Service ships with 4 different kinds of `InteractionContext`s: + +1. InteractionContext: A bare-bones execution context consisting of only implementation netural interfaces +2. SocketInteractionContext: An execution context for use with `DiscordSocketClient`. Socket entities are exposed in this context without the need of casting them. +3. ShardedInteractionContext: `DiscordShardedClient` variant of the `SocketInteractionContext` +4. RestInteractionContext: An execution context designed to be used with a `DiscordRestClient` and webhook based interactions pattern + +You can create custom Interaction Contexts by implementing the `IInteracitonContext` interface. + +One problem with using the concrete type InteractionContexts is that you cannot access the information that is specific to different interaction types without casting. Concrete type interaction contexts are great for creating shared interaction modules but you can also use the generic variants of the built-in interaction contexts to create interaction specific interaction modules. + +Ex. +Message component interactions have access to a special method called `UpdateAsync()` to update the body of the method the interaction originated from. Normally this wouldn't be accessable without casting the `Context.Interaction`. + +```csharp +discordClient.ButtonExecuted += async (interaction) => +{ + var ctx = new SocketInteractionContext(discordClient, interaction); + await interactionService.ExecuteAsync(ctx, serviceProvider); +}; + +public class MessageComponentModule : InteractionModuleBase> +{ + [ComponentInteraction("custom_id")] + public async Command() + { + Context.Interaction.UpdateAsync(...); + } +} +``` + +## Loading Modules + +Interaction Service can automatically discover and load modules that inherit `InteractionModuleBase` from an `Assembly`. Call `InteractionService.AddModulesAsync()` to use this functionality. + +You can also manually add Interaction modules using the `InteractionService.AddModuleAsync()` method by providing the module type you want to load. + +## Resolving Module Dependencies + +Module dependencies are resolved using the Constructor Injection and Property Injection patterns. Meaning, the constructor parameters and public settable properties of a module will be assigned using the `IServiceProvider`. For more information on dependency injection, check out [Dependency Injection](./dependency-injection.md) + +## Module Groups + +Module groups allow you to create sub-commands and sub-commands groups. By nesting commands inside a module that is tagged with `[GroupAttribute]` you can create prefixed commands. + +Although creating nested module stuctures are allowed, you are not permitted to use more than 2 `[GroupAttribute]`s in module hierarchy. + +## Executing Commands + +Any of the following socket events can be used to execute commands: + +- InteractionCreated +- ButtonExecuted +- SelectMenuExecuted +- AutocompleteExecuted +- UserCommandExecuted +- MessageCommandExecuted + +Commands can be either executed on the gateway thread or on a seperate thread from the thread pool. This behaviour can be configured by changing the *RunMode* property of `InteractionServiceConfig` or by setting the *runMode* parameter of a command attribute. + +You can also configure the way `InteractionService` executes the commands. By default, commands are executed using `ConstructorInfo.Invoke()` to create module instances and `MethodInfo.Invoke()` method for executing the method bodies. By setting, `InteractionServiceConfig.UseCompiledLambda` to `true`, you can make `InteractionService` create module instances and execute commands using *Compiled Lambda* expressions. This cuts down on command execution time but it might add some memory overhead. + +Time it takes to create a module instance and execute a `Task.Delay(0)` method using the Reflection methods compared to Compiled Lambda expressions: + +| Method | Mean | Error | StdDev | +|----------------- |----------:|---------:|---------:| +| ReflectionInvoke | 225.93 ns | 4.522 ns | 7.040 ns | +| CompiledLambda | 48.79 ns | 0.981 ns | 1.276 ns | + +## Registering Commands to Discord + +Application commands loaded to the Interaction Service can be registered to Discord using a number of different methods. In most cases `RegisterCommandsGloballyAsync()` and `RegisterCommandsToGuildAsync()` are the methods to use. Command registration methods can only be used after the gateway client is ready or the rest client is logged in. + +In debug environment, since Global commands can take up to 1 hour to register/update, you should register your commands to a test guild for your changes to take effect immediately. You can use the preprocessor directives to create a simple logic for registering commands: + +```csharp +#if DEBUG + await interactionService.RegisterCommandsToGuildAsync(); +#else + await interactionService.RegisterCommandsGloballyAsync(); +#endif +``` diff --git a/docs/guides/interactions_framework/post_execution.md b/docs/guides/interactions_framework/post_execution.md new file mode 100644 index 000000000..f34ba5cfe --- /dev/null +++ b/docs/guides/interactions_framework/post_execution.md @@ -0,0 +1,73 @@ +--- +uid: Guides.InteractionsFramework.PostEx +title: Post-Execution +--- + +# Post-Execution Logic + +Interaction Service uses `IResult`s to provide information about the state of command execution. These can be used to log internal exceptions or provide some insight to the command user. + +If you are running your commands using `RunMode.Sync` these command results can be retrieved from the return value of `InteractionService.ExecuteCommandAsync()` method or by registering delegates to Interaction Service events. + +If you are using the `RunMode.Async` to run your commands, you must use the Interaction Service events to get the execution results. When using `RunMode.Async`, `InteractionService.ExecuteCommandAsync()` will always return a successful result. + +## Results + +Interaction Result come in a handful of different flavours: + +1. `AutocompletionResult`: returned by Autocompleters +2. `ExecuteResult`: contains the result of method body execution process +3. `PreconditionGroupResult`: returned by Precondition groups +4. `PreconditionResult`: returned by preconditions +5. `RuntimeResult`: a user implementable result for returning user defined results +6. `SearchResult`: returned by command lookup map +7. `TypeConverterResult`: returned by TypeConverters + +You can either use the `IResult.Error` property of an Interaction result or create type check for the afformentioned result types to branch out your post-execution logic to handle different situations. + +## CommandExecuted Events + +Every time a command gets executed, Interaction Service raises a *CommandExecuted event. These events can be used to create a post-execution pipeline. + +```csharp +interactionService.SlashCommandExecuted += SlashCommandExecuted; + +async Task SlashCommandExecuted (SlashCommandInfo arg1, Discord.IInteractionContext arg2, IResult arg3) + { + if (!arg3.IsSuccess) + { + switch (arg3.Error) + { + case InteractionCommandError.UnmetPrecondition: + await arg2.Interaction.RespondAsync($"Unmet Precondition: {arg3.ErrorReason}"); + break; + case InteractionCommandError.UnknownCommand: + await arg2.Interaction.RespondAsync("Unknown command"); + break; + case InteractionCommandError.BadArgs: + await arg2.Interaction.RespondAsync("Invalid number or arguments"); + break; + case InteractionCommandError.Exception: + await arg2.Interaction.RespondAsync($"Command exception:{arg3.ErrorReason}"); + break; + case InteractionCommandError.Unsuccessful: + await arg2.Interaction.RespondAsync("Command could not be executed"); + break; + default: + break; + } + } + } +``` + +## Log Event + +InteractionService regularly outputs information about the occuring events to keep the developer informed. + +## Runtime Result + +Interaction commands allow you to return `Task` to pass on additional information about the command execution process back to your post-execution logic. + +Custom `RuntimeResult` classes can be created by inheriting the base `RuntimeResult` class. + +If command execution process reaches the method body of the command and no exceptions are thrown during the execution of the method body, `RuntimeResult` returned by your command will be accessible by casting/type-checking the `IResult` parameter of the *CommandExecuted event delegate. diff --git a/docs/guides/interactions_framework/preconditions.md b/docs/guides/interactions_framework/preconditions.md new file mode 100644 index 000000000..e9b5d73b6 --- /dev/null +++ b/docs/guides/interactions_framework/preconditions.md @@ -0,0 +1,8 @@ +--- +uid: Guides.InteractionsFramework.Preconditions +title: Preconditions +--- + +# Preconditions + +Preconditions in Interaction Service work exactly the same as they do in ***Discord.Net.Commands***. For more information, check out [Preconditions](../commands/preconditions.md) \ No newline at end of file diff --git a/docs/guides/interactions_framework/typeconverters.md b/docs/guides/interactions_framework/typeconverters.md new file mode 100644 index 000000000..12ca7dab5 --- /dev/null +++ b/docs/guides/interactions_framework/typeconverters.md @@ -0,0 +1,130 @@ +--- +uid: Guides.InteractionsFramework.TypeConverters +title: Type Converters +--- + +# TypeConverters + +TypeConverters are responsible for registering command parameters to Discord and parsing the user inputs into method parameters. + +By default, TypeConverters for the following types are provided with `Discord.Net.Interactions` library. + +- Implementations of `IUser` +- Implementations of `IChannel` +- Implementations of `IRole` +- Implementations of `IMentionable` +- `string` +- `float`, `double`, `decimal` +- `bool` +- `char` +- `sbyte`, `byte` +- `int16`, `int32`, `int64` +- `uint16`, `uint32`, `uint64` +- `enum` +- `DateTime` +- `TimeSpan` + +## Creating TypeConverters + +Depending on your needs, there are two types of `TypeConverter`s you can create: + +- Concrete type +- Generic type + +A valid converter must inherit `TypeConverter` base type. And override the abstract base methods. + +### CanConvertTo() Method + +This method is used by Interaction Service to search for alternative Type Converters. + +Interaction Services determines the most suitable `TypeConverter` for a parameter type in the following order: + +1. It searches for a `TypeConverter` that is registered to specifically target that parameter type +2. It searches for a generic `TypeConverter` with a matching type constraint. If there are more multiple matches, the one whose type constraint is the most specialized will be chosen. +3. It searches for a `TypeConverter` that returns `true` when its `CanConvertTo()` method is invoked for thaty parameter type. + +> Alternatively, you can use the generic variant (`TypeConverter`) of the `TypeConverter` base class which implements the following method body for `CanConvertTo()` method + +```csharp +public sealed override bool CanConvertTo (Type type) => + typeof(T).IsAssignableFrom(type); +``` + +### GetDiscordType() Method + +This method is used by Interaction Service to determine the [Discord Application Command Option type](https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-option-type) of a parameter type. + +### ReadAsync() Method + +This method is used by Interaction Service to parse the user input. This method should return `TypeConverterResult.FromSuccess` if the parsing operation is successful, otherwise it should return `TypeConverterResult.FromError`. The inner logic of this method is totally up to you, however you should avoid using long running code. + +### Write() Method + +This method is used to configure the **Discord Application Command Option** before it gets registered to Discord. Command Option is configured by modifying the `ApplicationCommandOptionProperties` instance. + +The default parameter building pipeline is isolated and will not be disturbed by the `TypeConverter` workflow. But changes made in this method will override the values generated by the Interaction Service for a **Discord Application Command Option**. + +--- + +### Example Enum TypeConverter + +```csharp +internal sealed class EnumConverter : TypeConverter where T : struct, Enum +{ + public override ApplicationCommandOptionType GetDiscordType ( ) => ApplicationCommandOptionType.String; + + public override Task ReadAsync (IInteractionCommandContext context, SocketSlashCommandDataOption option, IServiceProvider services) + { + if (Enum.TryParse((string)option.Value, out var result)) + return Task.FromResult(TypeConverterResult.FromSuccess(result)); + else + return Task.FromResult(TypeConverterResult.FromError(InteractionCommandError.ConvertFailed, $"Value {option.Value} cannot be converted to {nameof(T)}")); + } + + public override void Write (ApplicationCommandOptionProperties properties, IParameterInfo parameterInfo) + { + var names = Enum.GetNames(typeof(T)); + if (names.Length <= 25) + { + var choices = new List(); + + foreach (var name in names) + choices.Add(new ApplicationCommandOptionChoiceProperties + { + Name = name, + Value = name + }); + + properties.Choices = choices; + } + } +} +``` + +--- + +## Registering TypeConverters + +> TypeConverters must be registered prior to module discovery. If Interaction Service encounters a parameter type that doesn't belong to any of the registered `TypeConverter`s during this phase, it will throw an exception. + +### Concrete TypeConverters + +Registering Concrete TypeConverters are as simple as creating an instance of your custom converter and invoking `AddTypeConverter()` method. + +```csharp +interactionService.AddTypeConverter(new StringArrayConverter()); +``` + +### Generic TypeConverters + +To register a generic TypeConverter, you need to invoke the `AddGenericTypeConverter()` method of the Interaction Service class. You need to pass the type of your `TypeConverter` and a target base type to this method. + +For instance, to register the previously mentioned [Example Enum Converter](#example-enum-converter) the following can be used: + +```csharp +interactionService.AddGenericTypeConverter(typeof(EnumConverter<>)); +``` + +Interaction service checks if the target base type satisfies the type constraints of the Generic TypeConverter class. + +> Dependencies of Generic TypeConverters are also resolved using the Dependency Injection pattern. diff --git a/docs/guides/toc.yml b/docs/guides/toc.yml index 968468416..fba188b78 100644 --- a/docs/guides/toc.yml +++ b/docs/guides/toc.yml @@ -60,6 +60,14 @@ topicUid: Guides.MessageComponents.SelectMenus - name: Advanced Concepts topicUid: Guides.MessageComponents.Advanced +- name: Interaction Framework + items: + - name: Getting started + topicUid: Guides.InteractionsFramework.Intro + - name: Dependency Injection + topicUid: Guides.Commands.DI + - name: Post-execution Handling + topicUid: Guides.Commands.PostExecution - name: Emoji topicUid: Guides.Emoji - name: Voice diff --git a/samples/01_basic_ping_bot/01_basic_ping_bot.csproj b/samples/01_basic_ping_bot/01_basic_ping_bot.csproj index 128082edb..6e1a6365f 100644 --- a/samples/01_basic_ping_bot/01_basic_ping_bot.csproj +++ b/samples/01_basic_ping_bot/01_basic_ping_bot.csproj @@ -2,7 +2,7 @@ Exe - netcoreapp3.1 + net5.0 diff --git a/samples/02_commands_framework/02_commands_framework.csproj b/samples/02_commands_framework/02_commands_framework.csproj index 83a62f8d7..30c25e846 100644 --- a/samples/02_commands_framework/02_commands_framework.csproj +++ b/samples/02_commands_framework/02_commands_framework.csproj @@ -2,7 +2,7 @@ Exe - netcoreapp3.1 + net5.0 diff --git a/samples/03_sharded_client/03_sharded_client.csproj b/samples/03_sharded_client/03_sharded_client.csproj index 91cacef64..c4c42516e 100644 --- a/samples/03_sharded_client/03_sharded_client.csproj +++ b/samples/03_sharded_client/03_sharded_client.csproj @@ -2,7 +2,7 @@ Exe - netcoreapp3.1 + net5.0 _03_sharded_client diff --git a/samples/04_interactions_framework/04_interactions_framework.csproj b/samples/04_interactions_framework/04_interactions_framework.csproj new file mode 100644 index 000000000..780ab69bd --- /dev/null +++ b/samples/04_interactions_framework/04_interactions_framework.csproj @@ -0,0 +1,25 @@ + + + + Exe + net5.0 + _04_interactions_framework + + + + + + + + + + + + + + + + + + + diff --git a/samples/04_interactions_framework/CommandHandler.cs b/samples/04_interactions_framework/CommandHandler.cs new file mode 100644 index 000000000..735557da5 --- /dev/null +++ b/samples/04_interactions_framework/CommandHandler.cs @@ -0,0 +1,146 @@ +using Discord; +using Discord.Interactions; +using Discord.WebSocket; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace _04_interactions_framework +{ + public class CommandHandler + { + private readonly DiscordSocketClient _client; + private readonly InteractionService _commands; + private readonly IServiceProvider _services; + + public CommandHandler(DiscordSocketClient client, InteractionService commands, IServiceProvider services) + { + _client = client; + _commands = commands; + _services = services; + } + + public async Task InitializeAsync ( ) + { + // Add the public modules that inherit InteractionModuleBase to the InteractionService + await _commands.AddModulesAsync(Assembly.GetEntryAssembly(), _services); + + // Process the InteractionCreated payloads to execute Interactions commands + _client.InteractionCreated += HandleInteraction; + + // Process the command execution results + _commands.SlashCommandExecuted += SlashCommandExecuted; + _commands.ContextCommandExecuted += ContextCommandExecuted; + _commands.ComponentCommandExecuted += ComponentCommandExecuted; + } + + private Task ComponentCommandExecuted (ComponentCommandInfo arg1, Discord.IInteractionContext arg2, IResult arg3) + { + if (!arg3.IsSuccess) + { + switch (arg3.Error) + { + case InteractionCommandError.UnmetPrecondition: + // implement + break; + case InteractionCommandError.UnknownCommand: + // implement + break; + case InteractionCommandError.BadArgs: + // implement + break; + case InteractionCommandError.Exception: + // implement + break; + case InteractionCommandError.Unsuccessful: + // implement + break; + default: + break; + } + } + + return Task.CompletedTask; + } + + private Task ContextCommandExecuted (ContextCommandInfo arg1, Discord.IInteractionContext arg2, IResult arg3) + { + if (!arg3.IsSuccess) + { + switch (arg3.Error) + { + case InteractionCommandError.UnmetPrecondition: + // implement + break; + case InteractionCommandError.UnknownCommand: + // implement + break; + case InteractionCommandError.BadArgs: + // implement + break; + case InteractionCommandError.Exception: + // implement + break; + case InteractionCommandError.Unsuccessful: + // implement + break; + default: + break; + } + } + + return Task.CompletedTask; + } + + private Task SlashCommandExecuted (SlashCommandInfo arg1, Discord.IInteractionContext arg2, IResult arg3) + { + if (!arg3.IsSuccess) + { + switch (arg3.Error) + { + case InteractionCommandError.UnmetPrecondition: + // implement + break; + case InteractionCommandError.UnknownCommand: + // implement + break; + case InteractionCommandError.BadArgs: + // implement + break; + case InteractionCommandError.Exception: + // implement + break; + case InteractionCommandError.Unsuccessful: + // implement + break; + default: + break; + } + } + + return Task.CompletedTask; + } + + private async Task HandleInteraction (SocketInteraction arg) + { + try + { + // Create an execution context that matches the generic type parameter of your InteractionModuleBase modules + var ctx = new SocketInteractionContext(_client, arg); + await _commands.ExecuteCommandAsync(ctx, _services); + } + catch (Exception ex) + { + Console.WriteLine(ex); + + // If a Slash Command execution fails it is most likely that the original interaction acknowledgement will persist. It is a good idea to delete the original + // response, or at least let the user know that something went wrong during the command execution. + if(arg.Type == InteractionType.ApplicationCommand) + await arg.GetOriginalResponseAsync().ContinueWith(async (msg) => await msg.Result.DeleteAsync()); + } + } + } +} diff --git a/samples/04_interactions_framework/ExampleEnum.cs b/samples/04_interactions_framework/ExampleEnum.cs new file mode 100644 index 000000000..2ea5733c0 --- /dev/null +++ b/samples/04_interactions_framework/ExampleEnum.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace _04_interactions_framework +{ + public enum ExampleEnum + { + First, + Second, + Third, + Fourth + } +} diff --git a/samples/04_interactions_framework/Modules/UtilityModule.cs b/samples/04_interactions_framework/Modules/UtilityModule.cs new file mode 100644 index 000000000..d6cbb1a9f --- /dev/null +++ b/samples/04_interactions_framework/Modules/UtilityModule.cs @@ -0,0 +1,93 @@ +using Discord; +using Discord.Interactions; +using Discord.WebSocket; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace _04_interactions_framework.Modules +{ + // Interation modules must be public and inherit from an IInterationModuleBase + public class UtilityModule : InteractionModuleBase + { + // Dependencies can be accessed through Property injection, public properties with public setters will be set by the service provider + public InteractionService Commands { get; set; } + + private CommandHandler _handler; + + // Constructor injection is also a valid way to access the dependecies + public UtilityModule ( CommandHandler handler ) + { + _handler = handler; + } + + // Slash Commands are declared using the [SlashCommand], you need to provide a name and a description, both following the Discord guidelines + [SlashCommand("ping", "Recieve a pong")] + // By setting the DefaultPermission to false, you can disable the command by default. No one can use the command until you give them permission + [DefaultPermission(false)] + public async Task Ping ( ) + { + await RespondAsync("pong"); + } + + // You can use a number of parameter types in you Slash Command handlers (string, int, double, bool, IUser, IChannel, IMentionable, IRole, Enums) by default. Optionally, + // you can implement your own TypeConverters to support a wider range of parameter types. For more information, refer to the library documentation. + // Optional method parameters(parameters with a default value) also will be displayed as optional on Discord. + + // [Summary] lets you customize the name and the description of a parameter + [SlashCommand("echo", "Repeat the input")] + public async Task Echo(string echo, [Summary(description: "mention the user")]bool mention = false) + { + await RespondAsync(echo + (mention ? Context.User.Mention : string.Empty)); + } + + // [Group] will create a command group. [SlashCommand]s and [ComponentInteraction]s will be registered with the group prefix + [Group("test_group", "This is a command group")] + public class GroupExample : InteractionModuleBase + { + // You can create command choices either by using the [Choice] attribute or by creating an enum. Every enum with 25 or less values will be registered as a multiple + // choice option + [SlashCommand("choice_example", "Enums create choices")] + public async Task ChoiceExample(ExampleEnum input) + { + await RespondAsync(input.ToString()); + } + } + + // User Commands can only have one parameter, which must be a type of SocketUser + [UserCommand("SayHello")] + public async Task SayHello(IUser user) + { + await RespondAsync($"Hello, {user.Mention}"); + } + + // Message Commands can only have one parameter, which must be a type of SocketMessage + [MessageCommand("Delete")] + [RequireOwner] + public async Task DeleteMesage(IMessage message) + { + await message.DeleteAsync(); + await RespondAsync("Deleted message."); + } + + // Use [ComponentInteraction] to handle message component interactions. Message component interaction with the matching customId will be executed. + // Alternatively, you can create a wild card pattern using the '*' character. Interaction Service will perform a lazy regex search and capture the matching strings. + // You can then access these capture groups from the method parameters, in the order they were captured. Using the wild card pattern, you can cherry pick component interactions. + [ComponentInteraction("musicSelect:*,*")] + public async Task ButtonPress(string id, string name) + { + // ... + await RespondAsync($"Playing song: {name}/{id}"); + } + + // Select Menu interactions, contain ids of the menu options that were selected by the user. You can access the option ids from the method parameters. + // You can also use the wild card pattern with Select Menus, in that case, the wild card captures will be passed on to the method first, followed by the option ids. + [ComponentInteraction("roleSelect")] + public async Task RoleSelect(params string[] selections) + { + // implement + } + } +} diff --git a/samples/04_interactions_framework/Program.cs b/samples/04_interactions_framework/Program.cs new file mode 100644 index 000000000..5dedbfae9 --- /dev/null +++ b/samples/04_interactions_framework/Program.cs @@ -0,0 +1,85 @@ +using Discord; +using Discord.Interactions; +using Discord.WebSocket; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using System; +using System.Reflection; +using System.Threading; +using System.Threading.Tasks; + +namespace _04_interactions_framework +{ + class Program + { + static void Main ( string[] args ) + { + // One of the more flexable ways to access the configuration data is to use the Microsoft's Configuration model, + // this way we can avoid hard coding the environment secrets. I opted to use the Json and environment variable providers here. + IConfiguration config = new ConfigurationBuilder() + .AddEnvironmentVariables(prefix: "DC_") + .AddJsonFile("appsettings.json", optional: true) + .Build(); + + RunAsync(config).GetAwaiter().GetResult(); + } + + static async Task RunAsync (IConfiguration configuration ) + { + // Dependency injection is a key part of the Interactions framework but it needs to be disposed at the end of the app's lifetime. + using var services = ConfigureServices(configuration); + + var client = services.GetRequiredService(); + var commands = services.GetRequiredService(); + + client.Log += LogAsync; + commands.Log += LogAsync; + + // Slash Commands and Context Commands are can be automatically registered, but this process needs to happen after the client enters the READY state. + // Since Global Commands take around 1 hour to register, we should use a test guild to instantly update and test our commands. To determine the method we should + // register the commands with, we can check whether we are in a DEBUG environment and if we are, we can register the commands to a predetermined test guild. + client.Ready += async ( ) => + { + if (IsDebug()) + // Id of the test guild can be provided from the Configuration object + await commands.RegisterCommandsToGuildAsync(configuration.GetValue("testGuild"), true); + else + await commands.RegisterCommandsGloballyAsync(true); + }; + + // Here we can initialize the service that will register and execute our commands + await services.GetRequiredService().InitializeAsync(); + + // Bot token can be provided from the Configuration object we set up earlier + await client.LoginAsync(TokenType.Bot, configuration["token"]); + await client.StartAsync(); + + await Task.Delay(Timeout.Infinite); + } + + static Task LogAsync(LogMessage message) + { + Console.WriteLine(message.ToString()); + return Task.CompletedTask; + } + + static ServiceProvider ConfigureServices ( IConfiguration configuration ) + { + return new ServiceCollection() + .AddSingleton(configuration) + .AddSingleton() + .AddSingleton(x => new InteractionService(x.GetRequiredService())) + .AddSingleton() + .BuildServiceProvider(); + } + + static bool IsDebug ( ) + { + #if DEBUG + return true; + #else + return false; + #endif + } + } +} diff --git a/samples/04_interactions_framework/RequireOwnerAttribute.cs b/samples/04_interactions_framework/RequireOwnerAttribute.cs new file mode 100644 index 000000000..2f2493838 --- /dev/null +++ b/samples/04_interactions_framework/RequireOwnerAttribute.cs @@ -0,0 +1,27 @@ +using Discord; +using Discord.Interactions; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace _04_interactions_framework +{ + public class RequireOwnerAttribute : PreconditionAttribute + { + public override async Task CheckRequirementsAsync (IInteractionContext context, ICommandInfo commandInfo, IServiceProvider services) + { + switch (context.Client.TokenType) + { + case TokenType.Bot: + var application = await context.Client.GetApplicationInfoAsync().ConfigureAwait(false); + if (context.User.Id != application.Owner.Id) + return PreconditionResult.FromError(ErrorMessage ?? "Command can only be run by the owner of the bot."); + return PreconditionResult.FromSuccess(); + default: + return PreconditionResult.FromError($"{nameof(RequireOwnerAttribute)} is not supported by this {nameof(TokenType)}."); + } + } + } +} diff --git a/samples/idn/idn.csproj b/samples/idn/idn.csproj index f982ff86d..fafb3df3f 100644 --- a/samples/idn/idn.csproj +++ b/samples/idn/idn.csproj @@ -2,7 +2,7 @@ Exe - netcoreapp3.1 + net5.0 diff --git a/src/Discord.Net.Commands/Discord.Net.Commands.csproj b/src/Discord.Net.Commands/Discord.Net.Commands.csproj index ec2795de2..811a0470e 100644 --- a/src/Discord.Net.Commands/Discord.Net.Commands.csproj +++ b/src/Discord.Net.Commands/Discord.Net.Commands.csproj @@ -5,8 +5,8 @@ Discord.Net.Commands Discord.Commands A Discord.Net extension adding support for bot commands. - net461;netstandard2.0;netstandard2.1 - netstandard2.0;netstandard2.1 + net6.0;net5.0;net461;netstandard2.0;netstandard2.1 + net6.0;net5.0;netstandard2.0;netstandard2.1 diff --git a/src/Discord.Net.Commands/IModuleBase.cs b/src/Discord.Net.Commands/IModuleBase.cs index 3b641ec5f..8b021f4de 100644 --- a/src/Discord.Net.Commands/IModuleBase.cs +++ b/src/Discord.Net.Commands/IModuleBase.cs @@ -2,14 +2,34 @@ using Discord.Commands.Builders; namespace Discord.Commands { - internal interface IModuleBase + /// + /// Represents a generic module base. + /// + public interface IModuleBase { + /// + /// Sets the context of this module base. + /// + /// The context to set. void SetContext(ICommandContext context); + /// + /// Executed before a command is run in this module base. + /// + /// The command thats about to run. void BeforeExecute(CommandInfo command); - + + /// + /// Executed after a command is ran in this module base. + /// + /// The command that ran. void AfterExecute(CommandInfo command); + /// + /// Executed when this module is building. + /// + /// The command service that is building this module. + /// The builder constructing this module. void OnModuleBuilding(CommandService commandService, ModuleBuilder builder); } } diff --git a/src/Discord.Net.Core/AssemblyInfo.cs b/src/Discord.Net.Core/AssemblyInfo.cs index b7c60f3d3..0031c2dbf 100644 --- a/src/Discord.Net.Core/AssemblyInfo.cs +++ b/src/Discord.Net.Core/AssemblyInfo.cs @@ -8,3 +8,4 @@ using System.Runtime.CompilerServices; [assembly: InternalsVisibleTo("Discord.Net.Commands")] [assembly: InternalsVisibleTo("Discord.Net.Tests")] [assembly: InternalsVisibleTo("Discord.Net.Tests.Unit")] +[assembly: InternalsVisibleTo("Discord.Net.Interactions")] diff --git a/src/Discord.Net.Core/Discord.Net.Core.csproj b/src/Discord.Net.Core/Discord.Net.Core.csproj index 7dc55b1cf..bfbff6f5c 100644 --- a/src/Discord.Net.Core/Discord.Net.Core.csproj +++ b/src/Discord.Net.Core/Discord.Net.Core.csproj @@ -1,12 +1,12 @@ - + Discord.Net.Core Discord The core components for the Discord.Net library. - net461;netstandard2.0;netstandard2.1 - netstandard2.0;netstandard2.1 + net6.0;net5.0;net461;netstandard2.0;netstandard2.1 + net6.0;net5.0;netstandard2.0;netstandard2.1 diff --git a/src/Discord.Net.Core/Entities/Interactions/ApplicationCommandOption.cs b/src/Discord.Net.Core/Entities/Interactions/ApplicationCommandOption.cs index 9a69d9d18..5857bac81 100644 --- a/src/Discord.Net.Core/Entities/Interactions/ApplicationCommandOption.cs +++ b/src/Discord.Net.Core/Entities/Interactions/ApplicationCommandOption.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Text.RegularExpressions; namespace Discord @@ -29,6 +30,9 @@ namespace Discord if (!Regex.IsMatch(value, @"^[\w-]{1,32}$")) throw new FormatException($"{nameof(value)} must match the regex ^[\\w-]{{1,32}}$"); + if (value.Any(x => char.IsUpper(x))) + throw new FormatException("Name cannot contain any uppercase characters."); + _name = value; } } diff --git a/src/Discord.Net.Core/Entities/Interactions/ContextMenus/IMessageCommandInteraction.cs b/src/Discord.Net.Core/Entities/Interactions/ContextMenus/IMessageCommandInteraction.cs index b1b331e8b..07d66bfcb 100644 --- a/src/Discord.Net.Core/Entities/Interactions/ContextMenus/IMessageCommandInteraction.cs +++ b/src/Discord.Net.Core/Entities/Interactions/ContextMenus/IMessageCommandInteraction.cs @@ -3,7 +3,7 @@ namespace Discord /// /// Represents a Message Command interaction. /// - public interface IMessageCommandInteraction : IDiscordInteraction + public interface IMessageCommandInteraction : IApplicationCommandInteraction { /// /// Gets the data associated with this interaction. diff --git a/src/Discord.Net.Core/Entities/Interactions/ContextMenus/IUserCommandInteraction.cs b/src/Discord.Net.Core/Entities/Interactions/ContextMenus/IUserCommandInteraction.cs index f7cfd67f0..2ffdfd9f6 100644 --- a/src/Discord.Net.Core/Entities/Interactions/ContextMenus/IUserCommandInteraction.cs +++ b/src/Discord.Net.Core/Entities/Interactions/ContextMenus/IUserCommandInteraction.cs @@ -3,7 +3,7 @@ namespace Discord /// /// Represents a User Command interaction. /// - public interface IUserCommandInteraction : IDiscordInteraction + public interface IUserCommandInteraction : IApplicationCommandInteraction { /// /// Gets the data associated with this interaction. diff --git a/src/Discord.Net.Core/Entities/Interactions/IApplicationCommandInteraction.cs b/src/Discord.Net.Core/Entities/Interactions/IApplicationCommandInteraction.cs new file mode 100644 index 000000000..b079a47be --- /dev/null +++ b/src/Discord.Net.Core/Entities/Interactions/IApplicationCommandInteraction.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord +{ + /// + /// Represents an application command interaction. + /// + public interface IApplicationCommandInteraction : IDiscordInteraction + { + /// + /// Gets the data of the application command interaction + /// + new IApplicationCommandInteractionData Data { get; } + } +} diff --git a/src/Discord.Net.Core/Entities/Interactions/IDiscordInteraction.cs b/src/Discord.Net.Core/Entities/Interactions/IDiscordInteraction.cs index d9e250118..77971b9f3 100644 --- a/src/Discord.Net.Core/Entities/Interactions/IDiscordInteraction.cs +++ b/src/Discord.Net.Core/Entities/Interactions/IDiscordInteraction.cs @@ -1,4 +1,6 @@ using System; +using System.Collections.Generic; +using System.IO; using System.Threading.Tasks; namespace Discord @@ -33,6 +35,11 @@ namespace Discord /// int Version { get; } + /// + /// Gets the user who invoked the interaction. + /// + IUser User { get; } + /// /// Responds to an Interaction with type . /// @@ -42,10 +49,14 @@ namespace Discord /// if the response should be hidden to everyone besides the invoker of the command, otherwise . /// The allowed mentions for this response. /// The request options for this response. - /// A to be sent with this response. + /// A to be sent with this response. /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. - Task RespondAsync(string text = null, Embed[] embeds = null, bool isTTS = false, - bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null); + /// + /// A task that represents an asynchronous send operation for delivering the message. The task result + /// contains the sent message. + /// + Task RespondAsync(string text = null, Embed[] embeds = null, bool isTTS = false, + bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); /// /// Sends a followup message for this interaction. @@ -56,13 +67,90 @@ namespace Discord /// if the response should be hidden to everyone besides the invoker of the command, otherwise . /// The allowed mentions for this response. /// The request options for this response. - /// A to be sent with this response. + /// A to be sent with this response. /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. /// - /// The sent message. + /// A task that represents an asynchronous send operation for delivering the message. The task result + /// contains the sent message. /// Task FollowupAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, - AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null); + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); + + /// + /// Sends a followup message for this interaction. + /// + /// The text of the message to be sent. + /// The file to upload. + /// The file name of the attachment. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// The request options for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// + /// A task that represents an asynchronous send operation for delivering the message. The task result + /// contains the sent message. + /// + public Task FollowupWithFileAsync(Stream fileStream, string fileName, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); + + /// + /// Sends a followup message for this interaction. + /// + /// The text of the message to be sent. + /// The file to upload. + /// The file name of the attachment. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// The request options for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// + /// A task that represents an asynchronous send operation for delivering the message. The task result + /// contains the sent message. + /// + public Task FollowupWithFileAsync(string filePath, string fileName = null, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); + /// + /// Sends a followup message for this interaction. + /// + /// The attachment containing the file and description. + /// The text of the message to be sent. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// The request options for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// + /// A task that represents an asynchronous send operation for delivering the message. The task result + /// contains the sent message. + /// + Task FollowupWithFileAsync(FileAttachment attachment, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); + /// + /// Sends a followup message for this interaction. + /// + /// A collection of attachments to upload. + /// The text of the message to be sent. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// The request options for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// + /// A task that represents an asynchronous send operation for delivering the message. The task result + /// contains the sent message. + /// + Task FollowupWithFilesAsync(IEnumerable attachments, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); /// /// Gets the original response for this interaction. @@ -76,14 +164,17 @@ namespace Discord /// /// A delegate containing the properties to modify the message with. /// The request options for this request. - /// A that represents the initial response. + /// + /// A task that represents an asynchronous modification operation. The task result + /// contains the updated message. + /// Task ModifyOriginalResponseAsync(Action func, RequestOptions options = null); /// /// Acknowledges this interaction. /// /// - /// A task that represents the asynchronous operation of acknowledging the interaction. + /// A task that represents the asynchronous operation of deferring the interaction. /// Task DeferAsync(bool ephemeral = false, RequestOptions options = null); } diff --git a/src/Discord.Net.Core/Entities/Interactions/SlashCommands/ISlashCommandInteraction.cs b/src/Discord.Net.Core/Entities/Interactions/SlashCommands/ISlashCommandInteraction.cs index 556182987..f28c35e40 100644 --- a/src/Discord.Net.Core/Entities/Interactions/SlashCommands/ISlashCommandInteraction.cs +++ b/src/Discord.Net.Core/Entities/Interactions/SlashCommands/ISlashCommandInteraction.cs @@ -3,7 +3,7 @@ namespace Discord /// /// Represents a slash command interaction. /// - public interface ISlashCommandInteraction : IDiscordInteraction + public interface ISlashCommandInteraction : IApplicationCommandInteraction { /// /// Gets the data associated with this interaction. diff --git a/src/Discord.Net.Core/Entities/Interactions/SlashCommands/SlashCommandBuilder.cs b/src/Discord.Net.Core/Entities/Interactions/SlashCommands/SlashCommandBuilder.cs index b4fc89cc2..074a52f32 100644 --- a/src/Discord.Net.Core/Entities/Interactions/SlashCommands/SlashCommandBuilder.cs +++ b/src/Discord.Net.Core/Entities/Interactions/SlashCommands/SlashCommandBuilder.cs @@ -40,6 +40,9 @@ namespace Discord if (!Regex.IsMatch(value, @"^[\w-]{1,32}$")) throw new ArgumentException("Command name cannot contain any special characters or whitespaces!", nameof(value)); + if (value.Any(x => char.IsUpper(x))) + throw new FormatException("Name cannot contain any uppercase characters."); + _name = value; } } diff --git a/src/Discord.Net.Core/Interactions/IInteractionContext.cs b/src/Discord.Net.Core/Interactions/IInteractionContext.cs new file mode 100644 index 000000000..3b5ba521d --- /dev/null +++ b/src/Discord.Net.Core/Interactions/IInteractionContext.cs @@ -0,0 +1,36 @@ +namespace Discord +{ + /// + /// Represents the context of an Interaction. + /// + public interface IInteractionContext + { + /// + /// Gets the client that will be used to handle this interaction. + /// + IDiscordClient Client { get; } + + /// + /// Gets the guild the interaction originated from. + /// + /// + /// Will be if the interaction originated from a DM channel or the interaction was a Context Command interaction. + /// + IGuild Guild { get; } + + /// + /// Gets the channel the interaction originated from. + /// + IMessageChannel Channel { get; } + + /// + /// Gets the user who invoked the interaction event. + /// + IUser User { get; } + + /// + /// Gets the underlying interaction. + /// + IDiscordInteraction Interaction { get; } + } +} diff --git a/src/Discord.Net.Examples/Discord.Net.Examples.csproj b/src/Discord.Net.Examples/Discord.Net.Examples.csproj index 3371432b8..b4a336f9f 100644 --- a/src/Discord.Net.Examples/Discord.Net.Examples.csproj +++ b/src/Discord.Net.Examples/Discord.Net.Examples.csproj @@ -1,7 +1,7 @@ - netstandard2.0 + net5.0 diff --git a/src/Discord.Net.Interactions/Attributes/AutocompleteAttribute.cs b/src/Discord.Net.Interactions/Attributes/AutocompleteAttribute.cs new file mode 100644 index 000000000..e17c9ff14 --- /dev/null +++ b/src/Discord.Net.Interactions/Attributes/AutocompleteAttribute.cs @@ -0,0 +1,36 @@ +using System; + +namespace Discord.Interactions +{ + /// + /// Set the to . + /// + [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = true)] + public class AutocompleteAttribute : Attribute + { + /// + /// Type of the . + /// + public Type AutocompleteHandlerType { get; } + + /// + /// Set the to and define a to handle + /// Autocomplete interactions targeting the parameter this is applied to. + /// + /// + /// must be set to to use this constructor. + /// + public AutocompleteAttribute(Type autocompleteHandlerType) + { + if (!typeof(IAutocompleteHandler).IsAssignableFrom(autocompleteHandlerType)) + throw new InvalidOperationException($"{autocompleteHandlerType.FullName} isn't a valid {nameof(IAutocompleteHandler)} type"); + + AutocompleteHandlerType = autocompleteHandlerType; + } + + /// + /// Set the to without specifying a . + /// + public AutocompleteAttribute() { } + } +} diff --git a/src/Discord.Net.Interactions/Attributes/ChannelTypesAttribute.cs b/src/Discord.Net.Interactions/Attributes/ChannelTypesAttribute.cs new file mode 100644 index 000000000..013641377 --- /dev/null +++ b/src/Discord.Net.Interactions/Attributes/ChannelTypesAttribute.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Collections.Immutable; + +namespace Discord.Interactions +{ + /// + /// Specify the target channel types for a option. + /// + [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = true)] + public sealed class ChannelTypesAttribute : Attribute + { + /// + /// Gets the allowed channel types for this option. + /// + public IReadOnlyCollection ChannelTypes { get; } + + /// + /// Specify the target channel types for a option. + /// + /// The allowed channel types for this option. + public ChannelTypesAttribute (params ChannelType[] channelTypes) + { + if (channelTypes is null) + throw new ArgumentNullException(nameof(channelTypes)); + + ChannelTypes = channelTypes.ToImmutableArray(); + } + } +} diff --git a/src/Discord.Net.Interactions/Attributes/ChoiceAttribute.cs b/src/Discord.Net.Interactions/Attributes/ChoiceAttribute.cs new file mode 100644 index 000000000..200c75f9e --- /dev/null +++ b/src/Discord.Net.Interactions/Attributes/ChoiceAttribute.cs @@ -0,0 +1,64 @@ +using System; + +namespace Discord.Interactions +{ + /// + /// Add a pre-determined argument value to a command parameter. + /// + [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = true, Inherited = true)] + public class ChoiceAttribute : Attribute + { + /// + /// Gets the name of the choice. + /// + public string Name { get; } + + /// + /// Gets the type of this choice. + /// + public SlashCommandChoiceType Type { get; } + + /// + /// Gets the value that will be used whenever this choice is selected. + /// + public object Value { get; } + + private ChoiceAttribute (string name) + { + Name = name; + } + + /// + /// Create a parameter choice with type . + /// + /// Name of the choice. + /// Predefined value of the choice. + public ChoiceAttribute (string name, string value) : this(name) + { + Type = SlashCommandChoiceType.String; + Value = value; + } + + /// + /// Create a parameter choice with type . + /// + /// Name of the choice. + /// Predefined value of the choice. + public ChoiceAttribute (string name, int value) : this(name) + { + Type = SlashCommandChoiceType.Integer; + Value = value; + } + + /// + /// Create a parameter choice with type . + /// + /// Name of the choice. + /// Predefined value of the choice. + public ChoiceAttribute (string name, double value) : this(name) + { + Type = SlashCommandChoiceType.Number; + Value = value; + } + } +} diff --git a/src/Discord.Net.Interactions/Attributes/Commands/AutocompleteCommandAttribute.cs b/src/Discord.Net.Interactions/Attributes/Commands/AutocompleteCommandAttribute.cs new file mode 100644 index 000000000..df46dcfa4 --- /dev/null +++ b/src/Discord.Net.Interactions/Attributes/Commands/AutocompleteCommandAttribute.cs @@ -0,0 +1,39 @@ +using System; + +namespace Discord.Interactions +{ + /// + /// Create an Autocomplete Command. + /// + [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)] + public class AutocompleteCommandAttribute : Attribute + { + /// + /// Gets the name of the target parameter. + /// + public string ParameterName { get; } + + /// + /// Gets the name of the target command. + /// + public string CommandName { get; } + + /// + /// Get the run mode this command gets executed with. + /// + public RunMode RunMode { get; } + + /// + /// Create a command for Autocomplete interaction handling. + /// + /// Name of the target parameter. + /// Name of the target command. + /// Set the run mode of the command. + public AutocompleteCommandAttribute(string parameterName, string commandName, RunMode runMode = RunMode.Default) + { + ParameterName = parameterName; + CommandName = commandName; + RunMode = runMode; + } + } +} diff --git a/src/Discord.Net.Interactions/Attributes/Commands/ComponentInteractionAttribute.cs b/src/Discord.Net.Interactions/Attributes/Commands/ComponentInteractionAttribute.cs new file mode 100644 index 000000000..70bc285fc --- /dev/null +++ b/src/Discord.Net.Interactions/Attributes/Commands/ComponentInteractionAttribute.cs @@ -0,0 +1,44 @@ +using System; + +namespace Discord.Interactions +{ + /// + /// Create a Message Component interaction handler, CustomId represents + /// the CustomId of the Message Component that will be handled. + /// + /// + /// s will add prefixes to this command if is set to + /// CustomID supports a Wild Card pattern where you can use the to match a set of CustomIDs. + /// + [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)] + public class ComponentInteractionAttribute : Attribute + { + /// + /// Gets the string to compare the Message Component CustomIDs with. + /// + public string CustomId { get; } + + /// + /// Gets if s will be ignored while creating this command and this method will be treated as a top level command. + /// + public bool IgnoreGroupNames { get; } + + /// + /// Gets the run mode this command gets executed with. + /// + public RunMode RunMode { get; } + + /// + /// Create a command for component interaction handling. + /// + /// String to compare the Message Component CustomIDs with. + /// If s will be ignored while creating this command and this method will be treated as a top level command. + /// Set the run mode of the command. + public ComponentInteractionAttribute (string customId, bool ignoreGroupNames = false, RunMode runMode = RunMode.Default) + { + CustomId = customId; + IgnoreGroupNames = ignoreGroupNames; + RunMode = runMode; + } + } +} diff --git a/src/Discord.Net.Interactions/Attributes/Commands/ContextCommandAttribute.cs b/src/Discord.Net.Interactions/Attributes/Commands/ContextCommandAttribute.cs new file mode 100644 index 000000000..fd303a45c --- /dev/null +++ b/src/Discord.Net.Interactions/Attributes/Commands/ContextCommandAttribute.cs @@ -0,0 +1,36 @@ +using System; +using System.Reflection; + +namespace Discord.Interactions +{ + /// + /// Base attribute for creating a Context Commands. + /// + [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)] + public abstract class ContextCommandAttribute : Attribute + { + /// + /// Gets the name of this Context Command. + /// + public string Name { get; } + + /// + /// Gets the type of this Context Command. + /// + public ApplicationCommandType CommandType { get; } + + /// + /// Gets the run mode this command gets executed with. + /// + public RunMode RunMode { get; } + + internal ContextCommandAttribute (string name, ApplicationCommandType commandType, RunMode runMode = RunMode.Default) + { + Name = name; + CommandType = commandType; + RunMode = runMode; + } + + internal virtual void CheckMethodDefinition (MethodInfo methodInfo) { } + } +} diff --git a/src/Discord.Net.Interactions/Attributes/Commands/MessageCommandAttribute.cs b/src/Discord.Net.Interactions/Attributes/Commands/MessageCommandAttribute.cs new file mode 100644 index 000000000..93d010c81 --- /dev/null +++ b/src/Discord.Net.Interactions/Attributes/Commands/MessageCommandAttribute.cs @@ -0,0 +1,29 @@ +using System; +using System.Reflection; + +namespace Discord.Interactions +{ + /// + /// Create a Message Context Command. + /// + /// + /// s won't add prefixes to this command. + /// + [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)] + public class MessageCommandAttribute : ContextCommandAttribute + { + /// + /// Register a method as a Message Context Command. + /// + /// Name of the context command. + public MessageCommandAttribute (string name) : base(name, ApplicationCommandType.Message) { } + + internal override void CheckMethodDefinition (MethodInfo methodInfo) + { + var parameters = methodInfo.GetParameters(); + + if (parameters.Length != 1 || !typeof(IMessage).IsAssignableFrom(parameters[0].ParameterType)) + throw new InvalidOperationException($"Message Commands must have only one parameter that is a type of {nameof(IMessage)}"); + } + } +} diff --git a/src/Discord.Net.Interactions/Attributes/Commands/SlashCommandAttribute.cs b/src/Discord.Net.Interactions/Attributes/Commands/SlashCommandAttribute.cs new file mode 100644 index 000000000..aebc366a0 --- /dev/null +++ b/src/Discord.Net.Interactions/Attributes/Commands/SlashCommandAttribute.cs @@ -0,0 +1,49 @@ +using System; + +namespace Discord.Interactions +{ + /// + /// Create an Slash Application Command. + /// + /// + /// prefix will be used to created nested Slash Application Commands. + /// + [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] + public class SlashCommandAttribute : Attribute + { + /// + /// Gets the name of the Slash Command. + /// + public string Name { get; } + + /// + /// Gets the description of the Slash Command. + /// + public string Description { get; } + + /// + /// Gets if s will be ignored while creating this command and this method will be treated as a top level command. + /// + public bool IgnoreGroupNames { get; } + + /// + /// Gets the run mode this command gets executed with. + /// + public RunMode RunMode { get; } + + /// + /// Register a method as a Slash Command. + /// + /// Name of the command. + /// Description of the command. + /// If , s will be ignored while creating this command and this method will be treated as a top level command. + /// Set the run mode of the command. + public SlashCommandAttribute (string name, string description, bool ignoreGroupNames = false, RunMode runMode = RunMode.Default) + { + Name = name; + Description = description; + IgnoreGroupNames = ignoreGroupNames; + RunMode = runMode; + } + } +} diff --git a/src/Discord.Net.Interactions/Attributes/Commands/UserCommandAttribute.cs b/src/Discord.Net.Interactions/Attributes/Commands/UserCommandAttribute.cs new file mode 100644 index 000000000..592dcf5c3 --- /dev/null +++ b/src/Discord.Net.Interactions/Attributes/Commands/UserCommandAttribute.cs @@ -0,0 +1,29 @@ +using System; +using System.Reflection; + +namespace Discord.Interactions +{ + /// + /// Create an User Context Command. + /// + /// + /// s won't add prefixes to this command. + /// + [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)] + public class UserCommandAttribute : ContextCommandAttribute + { + /// + /// Register a command as a User Context Command. + /// + /// Name of this User Context Command. + public UserCommandAttribute (string name) : base(name, ApplicationCommandType.User) { } + + internal override void CheckMethodDefinition (MethodInfo methodInfo) + { + var parameters = methodInfo.GetParameters(); + + if (parameters.Length != 1 || !typeof(IUser).IsAssignableFrom(parameters[0].ParameterType)) + throw new InvalidOperationException($"User Commands must have only one parameter that is a type of {nameof(IUser)}"); + } + } +} diff --git a/src/Discord.Net.Interactions/Attributes/DefaultPermissionAttribute.cs b/src/Discord.Net.Interactions/Attributes/DefaultPermissionAttribute.cs new file mode 100644 index 000000000..ed0a532be --- /dev/null +++ b/src/Discord.Net.Interactions/Attributes/DefaultPermissionAttribute.cs @@ -0,0 +1,25 @@ +using System; + +namespace Discord.Interactions +{ + /// + /// Set the "Default Permission" property of an Application Command. + /// + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] + public class DefaultPermissionAttribute : Attribute + { + /// + /// Gets whether the users are allowed to use a Slash Command by default or not. + /// + public bool IsDefaultPermission { get; } + + /// + /// Set the default permission of a Slash Command. + /// + /// if the users are allowed to use this command. + public DefaultPermissionAttribute (bool isDefaultPermission) + { + IsDefaultPermission = isDefaultPermission; + } + } +} diff --git a/src/Discord.Net.Interactions/Attributes/DontAutoRegisterAttribute.cs b/src/Discord.Net.Interactions/Attributes/DontAutoRegisterAttribute.cs new file mode 100644 index 000000000..18deb785e --- /dev/null +++ b/src/Discord.Net.Interactions/Attributes/DontAutoRegisterAttribute.cs @@ -0,0 +1,13 @@ +using System; + +namespace Discord.Interactions +{ + /// + /// s with this attribute will not be registered by the or + /// methods. + /// + [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)] + public class DontAutoRegisterAttribute : Attribute + { + } +} diff --git a/src/Discord.Net.Interactions/Attributes/GroupAttribute.cs b/src/Discord.Net.Interactions/Attributes/GroupAttribute.cs new file mode 100644 index 000000000..7014c35a5 --- /dev/null +++ b/src/Discord.Net.Interactions/Attributes/GroupAttribute.cs @@ -0,0 +1,35 @@ +using System; + +namespace Discord.Interactions +{ + /// + /// Create nested Slash Commands by marking a module as a command group. + /// + /// + /// commands wil not be affected by this. + /// + [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)] + public class GroupAttribute : Attribute + { + /// + /// Gets the name of the group. + /// + public string Name { get; } + + /// + /// Gets the description of the group. + /// + public string Description { get; } + + /// + /// Create a command group. + /// + /// Name of the group. + /// Description of the group. + public GroupAttribute (string name, string description) + { + Name = name; + Description = description; + } + } +} diff --git a/src/Discord.Net.Interactions/Attributes/MaxValueAttribute.cs b/src/Discord.Net.Interactions/Attributes/MaxValueAttribute.cs new file mode 100644 index 000000000..1b46a4ecd --- /dev/null +++ b/src/Discord.Net.Interactions/Attributes/MaxValueAttribute.cs @@ -0,0 +1,25 @@ +using System; + +namespace Discord.Interactions +{ + /// + /// Set the maximum value permitted for a number type parameter. + /// + [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = true)] + public sealed class MaxValueAttribute : Attribute + { + /// + /// Gets the maximum value permitted. + /// + public double Value { get; } + + /// + /// Set the maximum value permitted for a number type parameter. + /// + /// The maximum value permitted. + public MaxValueAttribute(double value) + { + Value = value; + } + } +} diff --git a/src/Discord.Net.Interactions/Attributes/MinValueAttribute.cs b/src/Discord.Net.Interactions/Attributes/MinValueAttribute.cs new file mode 100644 index 000000000..cce7a3b2c --- /dev/null +++ b/src/Discord.Net.Interactions/Attributes/MinValueAttribute.cs @@ -0,0 +1,25 @@ +using System; + +namespace Discord.Interactions +{ + /// + /// Set the minimum value permitted for a number type parameter. + /// + [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = true)] + public sealed class MinValueAttribute : Attribute + { + /// + /// Gets the minimum value permitted. + /// + public double Value { get; } + + /// + /// Set the minimum value permitted for a number type parameter. + /// + /// The minimum value permitted. + public MinValueAttribute(double value) + { + Value = value; + } + } +} diff --git a/src/Discord.Net.Interactions/Attributes/ParameterPreconditionAttribute.cs b/src/Discord.Net.Interactions/Attributes/ParameterPreconditionAttribute.cs new file mode 100644 index 000000000..22b9dc42b --- /dev/null +++ b/src/Discord.Net.Interactions/Attributes/ParameterPreconditionAttribute.cs @@ -0,0 +1,34 @@ +using System; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + /// + /// Requires the parameter to pass the specified precondition before execution can begin. + /// + /// + [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = true, Inherited = true)] + public abstract class ParameterPreconditionAttribute : Attribute + { + /// + /// Gets the error message to be returned if execution context doesn't pass the precondition check. + /// + /// + /// When overridden in a derived class, uses the supplied string + /// as the error message if the precondition doesn't pass. + /// Setting this for a class that doesn't override + /// this property is a no-op. + /// + public virtual string ErrorMessage { get; } + + /// + /// Checks whether the condition is met before execution of the command. + /// + /// The context of the command. + /// The parameter of the command being checked against. + /// The raw value of the parameter. + /// The service collection used for dependency injection. + public abstract Task CheckRequirementsAsync (IInteractionContext context, IParameterInfo parameterInfo, object value, + IServiceProvider services); + } +} diff --git a/src/Discord.Net.Interactions/Attributes/PreconditionAttribute.cs b/src/Discord.Net.Interactions/Attributes/PreconditionAttribute.cs new file mode 100644 index 000000000..37c9de2cf --- /dev/null +++ b/src/Discord.Net.Interactions/Attributes/PreconditionAttribute.cs @@ -0,0 +1,42 @@ +using System; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + /// + /// Requires the module or class to pass the specified precondition before execution can begin. + /// + /// + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)] + public abstract class PreconditionAttribute : Attribute + { + /// + /// Gets the group that this precondition belongs to. + /// + /// + /// of the same group require only one of the preconditions to pass in order to + /// be successful (A || B). Specifying = null or not at all will + /// require *all* preconditions to pass, just like normal (A && B). + /// + public string Group { get; set; } = null; + + /// + /// Gets the error message to be returned if execution context doesn't pass the precondition check. + /// + /// + /// When overridden in a derived class, uses the supplied string + /// as the error message if the precondition doesn't pass. + /// Setting this for a class that doesn't override + /// this property is a no-op. + /// + public virtual string ErrorMessage { get; } + + /// + /// Checks if the command to be executed meets the precondition requirements. + /// + /// The context of the command. + /// The command being executed. + /// The service collection used for dependency injection. + public abstract Task CheckRequirementsAsync (IInteractionContext context, ICommandInfo commandInfo, IServiceProvider services); + } +} diff --git a/src/Discord.Net.Interactions/Attributes/SummaryAttribute.cs b/src/Discord.Net.Interactions/Attributes/SummaryAttribute.cs new file mode 100644 index 000000000..694569257 --- /dev/null +++ b/src/Discord.Net.Interactions/Attributes/SummaryAttribute.cs @@ -0,0 +1,32 @@ +using System; + +namespace Discord.Interactions +{ + /// + /// Customize the name and description of an Slash Application Command parameter. + /// + [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = true)] + public class SummaryAttribute : Attribute + { + /// + /// Gets the name of the parameter. + /// + public string Name { get; } = null; + + /// + /// Gets the description of the parameter. + /// + public string Description { get; } = null; + + /// + /// Modify the default name and description values of a Slash Command parameter. + /// + /// Name of the parameter. + /// Description of the parameter. + public SummaryAttribute (string name = null, string description = null) + { + Name = name; + Description = description; + } + } +} diff --git a/src/Discord.Net.Interactions/AutocompleteHandlers/AutocompleteHandler.cs b/src/Discord.Net.Interactions/AutocompleteHandlers/AutocompleteHandler.cs new file mode 100644 index 000000000..fd0bc83de --- /dev/null +++ b/src/Discord.Net.Interactions/AutocompleteHandlers/AutocompleteHandler.cs @@ -0,0 +1,102 @@ +using Discord.Rest; +using Discord.WebSocket; +using System; +using System.Reflection; +using System.Runtime.ExceptionServices; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + /// + /// Base class for creating Autocompleters. uses Autocompleters to generate parameter suggestions. + /// + public abstract class AutocompleteHandler : IAutocompleteHandler + { + /// + public InteractionService InteractionService { get; set; } + + /// + public abstract Task GenerateSuggestionsAsync(IInteractionContext context, IAutocompleteInteraction autocompleteInteraction, IParameterInfo parameter, + IServiceProvider services); + + protected virtual string GetLogString(IInteractionContext context) + { + var interaction = (context.Interaction as IAutocompleteInteraction); + return $"{interaction.Data.CommandName}: {interaction.Data.Current.Name} Autocomplete"; + } + + /// + public async Task ExecuteAsync(IInteractionContext context, IAutocompleteInteraction autocompleteInteraction, IParameterInfo parameter, + IServiceProvider services) + { + switch (InteractionService._runMode) + { + case RunMode.Sync: + { + return await ExecuteInternalAsync(context, autocompleteInteraction, parameter, services).ConfigureAwait(false); + } + case RunMode.Async: + _ = Task.Run(async () => + { + await ExecuteInternalAsync(context, autocompleteInteraction, parameter, services).ConfigureAwait(false); + }); + break; + default: + throw new InvalidOperationException($"RunMode {InteractionService._runMode} is not supported."); + } + + return ExecuteResult.FromSuccess(); + } + + private async Task ExecuteInternalAsync(IInteractionContext context, IAutocompleteInteraction autocompleteInteraction, IParameterInfo parameter, + IServiceProvider services) + { + try + { + var result = await GenerateSuggestionsAsync(context, autocompleteInteraction, parameter, services).ConfigureAwait(false); + + if (result.IsSuccess) + switch (autocompleteInteraction) + { + case RestAutocompleteInteraction restAutocomplete: + var payload = restAutocomplete.Respond(result.Suggestions); + await InteractionService._restResponseCallback(context, payload).ConfigureAwait(false); + break; + case SocketAutocompleteInteraction socketAutocomplete: + await socketAutocomplete.RespondAsync(result.Suggestions).ConfigureAwait(false); + break; + } + + await InteractionService._autocompleteHandlerExecutedEvent.InvokeAsync(this, context, result).ConfigureAwait(false); + return result; + } + catch (Exception ex) + { + var originalEx = ex; + while (ex is TargetInvocationException) + ex = ex.InnerException; + + await InteractionService._cmdLogger.ErrorAsync(ex).ConfigureAwait(false); + + var result = ExecuteResult.FromError(ex); + await InteractionService._autocompleteHandlerExecutedEvent.InvokeAsync(this, context, result).ConfigureAwait(false); + + if (InteractionService._throwOnError) + { + if (ex == originalEx) + throw; + else + ExceptionDispatchInfo.Capture(ex).Throw(); + } + + return result; + } + finally + { + await InteractionService._cmdLogger.VerboseAsync($"Executed {GetLogString(context)}").ConfigureAwait(false); + } + } + } +} + + diff --git a/src/Discord.Net.Interactions/AutocompleteHandlers/IAutocompleteHandler.cs b/src/Discord.Net.Interactions/AutocompleteHandlers/IAutocompleteHandler.cs new file mode 100644 index 000000000..8072b30ed --- /dev/null +++ b/src/Discord.Net.Interactions/AutocompleteHandlers/IAutocompleteHandler.cs @@ -0,0 +1,43 @@ +using Discord.WebSocket; +using System; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + /// + /// Represent a Autocomplete handler object that can be executed to generate parameter suggestions. + /// + public interface IAutocompleteHandler + { + /// + /// Gets the the underlying command service. + /// + InteractionService InteractionService { get; } + + /// + /// Will be used to generate parameter suggestions. + /// + /// Command execution context. + /// Autocomplete Interaction payload. + /// Parameter information of the target parameter. + /// Dependencies that will be used to create the module instance. + /// + /// A task representing the execution process. The task result contains the Autocompletion result. + /// + Task GenerateSuggestionsAsync(IInteractionContext context, IAutocompleteInteraction autocompleteInteraction, IParameterInfo parameter, + IServiceProvider services); + + /// + /// Executes the with the provided context. + /// + /// The execution context. + /// AutocompleteInteraction payload. + /// Parameter information of the target parameter. + /// Dependencies that will be used to create the module instance. + /// + /// A task representing the execution process. The task result contains the execution result. + /// + Task ExecuteAsync(IInteractionContext context, IAutocompleteInteraction autocompleteInteraction, IParameterInfo parameter, + IServiceProvider services); + } +} diff --git a/src/Discord.Net.Interactions/Builders/Commands/AutocompleteCommandBuilder.cs b/src/Discord.Net.Interactions/Builders/Commands/AutocompleteCommandBuilder.cs new file mode 100644 index 000000000..c383f1be1 --- /dev/null +++ b/src/Discord.Net.Interactions/Builders/Commands/AutocompleteCommandBuilder.cs @@ -0,0 +1,76 @@ +using System; + +namespace Discord.Interactions.Builders +{ + /// + /// Represents a builder for creating . + /// + public sealed class AutocompleteCommandBuilder : CommandBuilder + { + /// + /// Gets the name of the target parameter. + /// + public string ParameterName { get; set; } + + /// + /// Gets the name of the target command. + /// + public string CommandName { get; set; } + + protected override AutocompleteCommandBuilder Instance => this; + + internal AutocompleteCommandBuilder(ModuleBuilder module) : base(module) { } + + /// + /// Initializes a new . + /// + /// Parent module of this command. + /// Name of this command. + /// Execution callback of this command. + public AutocompleteCommandBuilder(ModuleBuilder module, string name, ExecuteCallback callback) : base(module, name, callback) { } + + /// + /// Sets . + /// + /// New value of the . + /// + /// The builder instance. + /// + public AutocompleteCommandBuilder WithParameterName(string name) + { + ParameterName = name; + return this; + } + + /// + /// Sets . + /// + /// New value of the . + /// + /// The builder instance. + /// + public AutocompleteCommandBuilder WithCommandName(string name) + { + CommandName = name; + return this; + } + + /// + /// Adds a command parameter to the parameters collection. + /// + /// factory. + /// + /// The builder instance. + /// + public override AutocompleteCommandBuilder AddParameter(Action configure) + { + var parameter = new CommandParameterBuilder(this); + configure(parameter); + AddParameters(parameter); + return this; + } + + internal override AutocompleteCommandInfo Build(ModuleInfo module, InteractionService commandService) => + new AutocompleteCommandInfo(this, module, commandService); + } +} diff --git a/src/Discord.Net.Interactions/Builders/Commands/CommandBuilder.cs b/src/Discord.Net.Interactions/Builders/Commands/CommandBuilder.cs new file mode 100644 index 000000000..5c35e8871 --- /dev/null +++ b/src/Discord.Net.Interactions/Builders/Commands/CommandBuilder.cs @@ -0,0 +1,174 @@ +using System; +using System.Collections.Generic; + +namespace Discord.Interactions.Builders +{ + /// + /// Represents the base builder class for creating . + /// + /// The this builder yields when built. + /// Inherited type. + /// Builder type for this commands parameters. + public abstract class CommandBuilder : ICommandBuilder + where TInfo : class, ICommandInfo + where TBuilder : CommandBuilder + where TParamBuilder : class, IParameterBuilder + { + private readonly List _attributes; + private readonly List _preconditions; + private readonly List _parameters; + + protected abstract TBuilder Instance { get; } + + /// + public ModuleBuilder Module { get; } + + //// + public ExecuteCallback Callback { get; internal set; } + + /// + public string Name { get; internal set; } + + /// + public string MethodName { get; set; } + + /// + public bool IgnoreGroupNames { get; set; } + + /// + public RunMode RunMode { get; set; } + + /// + public IReadOnlyList Attributes => _attributes; + + /// + public IReadOnlyList Parameters => _parameters; + + /// + public IReadOnlyList Preconditions => _preconditions; + + /// + IReadOnlyList ICommandBuilder.Parameters => Parameters; + + internal CommandBuilder (ModuleBuilder module) + { + _attributes = new List(); + _preconditions = new List(); + _parameters = new List(); + + Module = module; + } + + protected CommandBuilder (ModuleBuilder module, string name, ExecuteCallback callback) : this(module) + { + Name = name; + Callback = callback; + } + + /// + /// Sets . + /// + /// New value of the . + /// + /// The builder instance. + /// + public TBuilder WithName (string name) + { + Name = name; + return Instance; + } + + /// + /// Sets . + /// + /// New value of the . + /// + /// The builder instance. + /// + public TBuilder WithMethodName (string name) + { + MethodName = name; + return Instance; + } + + /// + /// Adds attributes to . + /// + /// New attributes to be added to . + /// + /// The builder instance. + /// + public TBuilder WithAttributes (params Attribute[] attributes) + { + _attributes.AddRange(attributes); + return Instance; + } + + /// + /// Sets . + /// + /// New value of the . + /// + /// The builder instance. + /// + public TBuilder SetRunMode (RunMode runMode) + { + RunMode = runMode; + return Instance; + } + + /// + /// Adds parameter builders to . + /// + /// New parameter builders to be added to . + /// + /// The builder instance. + /// + public TBuilder AddParameters (params TParamBuilder[] parameters) + { + _parameters.AddRange(parameters); + return Instance; + } + + /// + /// Adds preconditions to . + /// + /// New preconditions to be added to . + /// + /// The builder instance. + /// + public TBuilder WithPreconditions (params PreconditionAttribute[] preconditions) + { + _preconditions.AddRange(preconditions); + return Instance; + } + + /// + public abstract TBuilder AddParameter (Action configure); + + internal abstract TInfo Build (ModuleInfo module, InteractionService commandService); + + //ICommandBuilder + /// + ICommandBuilder ICommandBuilder.WithName (string name) => + WithName(name); + + /// + ICommandBuilder ICommandBuilder.WithMethodName (string name) => + WithMethodName(name); + ICommandBuilder ICommandBuilder.WithAttributes (params Attribute[] attributes) => + WithAttributes(attributes); + + /// + ICommandBuilder ICommandBuilder.SetRunMode (RunMode runMode) => + SetRunMode(runMode); + + /// + ICommandBuilder ICommandBuilder.AddParameters (params IParameterBuilder[] parameters) => + AddParameters(parameters as TParamBuilder); + + /// + ICommandBuilder ICommandBuilder.WithPreconditions (params PreconditionAttribute[] preconditions) => + WithPreconditions(preconditions); + } +} diff --git a/src/Discord.Net.Interactions/Builders/Commands/ComponentCommandBuilder.cs b/src/Discord.Net.Interactions/Builders/Commands/ComponentCommandBuilder.cs new file mode 100644 index 000000000..e42dfabce --- /dev/null +++ b/src/Discord.Net.Interactions/Builders/Commands/ComponentCommandBuilder.cs @@ -0,0 +1,40 @@ +using System; + +namespace Discord.Interactions.Builders +{ + /// + /// Represents a builder for creating . + /// + public sealed class ComponentCommandBuilder : CommandBuilder + { + protected override ComponentCommandBuilder Instance => this; + + internal ComponentCommandBuilder (ModuleBuilder module) : base(module) { } + + /// + /// Initializes a new . + /// + /// Parent module of this command. + /// Name of this command. + /// Execution callback of this command. + public ComponentCommandBuilder (ModuleBuilder module, string name, ExecuteCallback callback) : base(module, name, callback) { } + + /// + /// Adds a command parameter to the parameters collection. + /// + /// factory. + /// + /// The builder instance. + /// + public override ComponentCommandBuilder AddParameter (Action configure) + { + var parameter = new CommandParameterBuilder(this); + configure(parameter); + AddParameters(parameter); + return this; + } + + internal override ComponentCommandInfo Build (ModuleInfo module, InteractionService commandService) => + new ComponentCommandInfo(this, module, commandService); + } +} diff --git a/src/Discord.Net.Interactions/Builders/Commands/ContextCommandBuilder.cs b/src/Discord.Net.Interactions/Builders/Commands/ContextCommandBuilder.cs new file mode 100644 index 000000000..d40547b3c --- /dev/null +++ b/src/Discord.Net.Interactions/Builders/Commands/ContextCommandBuilder.cs @@ -0,0 +1,76 @@ +using System; + +namespace Discord.Interactions.Builders +{ + /// + /// Represents a builder for creating . + /// + public sealed class ContextCommandBuilder : CommandBuilder + { + protected override ContextCommandBuilder Instance => this; + + /// + /// Gets the type of this command. + /// + public ApplicationCommandType CommandType { get; set; } + + /// + /// Gets the default permission of this command. + /// + public bool DefaultPermission { get; set; } = true; + + internal ContextCommandBuilder (ModuleBuilder module) : base(module) { } + + /// + /// Initializes a new . + /// + /// Parent module of this command. + /// Name of this command. + /// Execution callback of this command. + public ContextCommandBuilder (ModuleBuilder module, string name, ExecuteCallback callback) : base(module, name, callback) { } + + /// + /// Sets . + /// + /// New value of the . + /// + /// The builder instance. + /// + public ContextCommandBuilder SetType (ApplicationCommandType commandType) + { + CommandType = commandType; + return this; + } + + /// + /// Sets . + /// + /// New value of the . + /// + /// The builder instance. + /// + public ContextCommandBuilder SetDefaultPermission (bool defaultPermision) + { + DefaultPermission = defaultPermision; + return this; + } + + /// + /// Adds a command parameter to the parameters collection. + /// + /// factory. + /// + /// The builder instance. + /// + public override ContextCommandBuilder AddParameter (Action configure) + { + var parameter = new CommandParameterBuilder(this); + configure(parameter); + AddParameters(parameter); + return this; + } + + internal override ContextCommandInfo Build (ModuleInfo module, InteractionService commandService) => + ContextCommandInfo.Create(this, module, commandService); + } +} diff --git a/src/Discord.Net.Interactions/Builders/Commands/ICommandBuilder.cs b/src/Discord.Net.Interactions/Builders/Commands/ICommandBuilder.cs new file mode 100644 index 000000000..95007296c --- /dev/null +++ b/src/Discord.Net.Interactions/Builders/Commands/ICommandBuilder.cs @@ -0,0 +1,111 @@ +using System; +using System.Collections.Generic; + +namespace Discord.Interactions.Builders +{ + /// + /// Represent a command builder for creating . + /// + public interface ICommandBuilder + { + /// + /// Gets the execution delegate of this command. + /// + ExecuteCallback Callback { get; } + + /// + /// Gets the parent module of this command. + /// + ModuleBuilder Module { get; } + + /// + /// Gets the name of this command. + /// + string Name { get; } + + /// + /// Gets or sets the method name of this command. + /// + string MethodName { get; set; } + + /// + /// Gets or sets if this command will be registered and executed as a standalone command, unaffected by the s of + /// of the commands parents. + /// + bool IgnoreGroupNames { get; set; } + + /// + /// Gets or sets the run mode this command gets executed with. + /// + RunMode RunMode { get; set; } + + /// + /// Gets a collection of the attributes of this command. + /// + IReadOnlyList Attributes { get; } + + /// + /// Gets a collection of the parameters of this command. + /// + IReadOnlyList Parameters { get; } + + /// + /// Gets a collection of the preconditions of this command. + /// + IReadOnlyList Preconditions { get; } + + /// + /// Sets . + /// + /// New value of the . + /// + /// The builder instance. + /// + ICommandBuilder WithName (string name); + + /// + /// Sets . + /// + /// New value of the . + /// + /// The builder instance. + /// + ICommandBuilder WithMethodName (string name); + + /// + /// Adds attributes to . + /// + /// New attributes to be added to . + /// + /// The builder instance. + /// + ICommandBuilder WithAttributes (params Attribute[] attributes); + + /// + /// Sets . + /// + /// New value of the . + /// + /// The builder instance. + /// + ICommandBuilder SetRunMode (RunMode runMode); + + /// + /// Adds parameter builders to . + /// + /// New parameter builders to be added to . + /// + /// The builder instance. + /// + ICommandBuilder AddParameters (params IParameterBuilder[] parameters); + + /// + /// Adds preconditions to . + /// + /// New preconditions to be added to . + /// + /// The builder instance. + /// + ICommandBuilder WithPreconditions (params PreconditionAttribute[] preconditions); + } +} diff --git a/src/Discord.Net.Interactions/Builders/Commands/SlashCommandBuilder.cs b/src/Discord.Net.Interactions/Builders/Commands/SlashCommandBuilder.cs new file mode 100644 index 000000000..d8e9b0658 --- /dev/null +++ b/src/Discord.Net.Interactions/Builders/Commands/SlashCommandBuilder.cs @@ -0,0 +1,76 @@ +using System; + +namespace Discord.Interactions.Builders +{ + /// + /// Represents a builder for creating . + /// + public sealed class SlashCommandBuilder : CommandBuilder + { + protected override SlashCommandBuilder Instance => this; + + /// + /// Gets and sets the description of this command. + /// + public string Description { get; set; } + + /// + /// Gets and sets the default permission of this command. + /// + public bool DefaultPermission { get; set; } = true; + + internal SlashCommandBuilder (ModuleBuilder module) : base(module) { } + + /// + /// Initializes a new . + /// + /// Parent module of this command. + /// Name of this command. + /// Execution callback of this command. + public SlashCommandBuilder (ModuleBuilder module, string name, ExecuteCallback callback) : base(module, name, callback) { } + + /// + /// Sets . + /// + /// New value of the . + /// + /// The builder instance. + /// + public SlashCommandBuilder WithDescription (string description) + { + Description = description; + return this; + } + + /// + /// Sets . + /// + /// New value of the . + /// + /// The builder instance. + /// + public SlashCommandBuilder WithDefaultPermission (bool permission) + { + DefaultPermission = permission; + return Instance; + } + + /// + /// Adds a command parameter to the parameters collection. + /// + /// factory. + /// + /// The builder instance. + /// + public override SlashCommandBuilder AddParameter (Action configure) + { + var parameter = new SlashCommandParameterBuilder(this); + configure(parameter); + AddParameters(parameter); + return this; + } + + internal override SlashCommandInfo Build (ModuleInfo module, InteractionService commandService) => + new SlashCommandInfo(this, module, commandService); + } +} diff --git a/src/Discord.Net.Interactions/Builders/ModuleBuilder.cs b/src/Discord.Net.Interactions/Builders/ModuleBuilder.cs new file mode 100644 index 000000000..73d5ed62f --- /dev/null +++ b/src/Discord.Net.Interactions/Builders/ModuleBuilder.cs @@ -0,0 +1,279 @@ +using System; +using System.Collections.Generic; +using System.Reflection; + +namespace Discord.Interactions.Builders +{ + /// + /// Represents a builder for creating . + /// + public class ModuleBuilder + { + private readonly List _attributes; + private readonly List _preconditions; + private readonly List _subModules; + private readonly List _slashCommands; + private readonly List _contextCommands; + private readonly List _componentCommands; + private readonly List _autocompleteCommands; + + /// + /// Gets the underlying Interaction Service. + /// + public InteractionService InteractionService { get; } + + /// + /// Gets the parent module if this module is a sub-module. + /// + public ModuleBuilder Parent { get; } + + /// + /// Gets the name of this module. + /// + public string Name { get; internal set; } + + /// + /// Gets and sets the group name of this module. + /// + public string SlashGroupName { get; set; } + + /// + /// Gets whether this has a . + /// + public bool IsSlashGroup => !string.IsNullOrEmpty(SlashGroupName); + + /// + /// Gets and sets the description of this module. + /// + public string Description { get; set; } + + /// + /// Gets and sets the default permission of this module. + /// + public bool DefaultPermission { get; set; } = true; + + /// + /// Gets and sets whether this has a . + /// + public bool DontAutoRegister { get; set; } = false; + + /// + /// Gets a collection of the attributes of this module. + /// + public IReadOnlyList Attributes => _attributes; + + /// + /// Gets a collection of the preconditions of this module. + /// + public IReadOnlyCollection Preconditions => _preconditions; + + /// + /// Gets a collection of the sub-modules of this module. + /// + public IReadOnlyList SubModules => _subModules; + + /// + /// Gets a collection of the Slash Commands of this module. + /// + public IReadOnlyList SlashCommands => _slashCommands; + + /// + /// Gets a collection of the Context Commands of this module. + /// + public IReadOnlyList ContextCommands => _contextCommands; + + /// + /// Gets a collection of the Component Commands of this module. + /// + public IReadOnlyList ComponentCommands => _componentCommands; + + /// + /// Gets a collection of the Autocomplete Commands of this module. + /// + public IReadOnlyList AutocompleteCommands => _autocompleteCommands; + + internal TypeInfo TypeInfo { get; set; } + + internal ModuleBuilder (InteractionService interactionService, ModuleBuilder parent = null) + { + InteractionService = interactionService; + Parent = parent; + + _attributes = new List(); + _subModules = new List(); + _slashCommands = new List(); + _contextCommands = new List(); + _componentCommands = new List(); + _autocompleteCommands = new List(); + _preconditions = new List(); + } + + /// + /// Initializes a new . + /// + /// The underlying Interaction Service. + /// Name of this module. + /// Parent module of this sub-module. + public ModuleBuilder (InteractionService interactionService, string name, ModuleBuilder parent = null) : this(interactionService, parent) + { + Name = name; + } + + /// + /// Sets . + /// + /// New value of the . + /// + /// The builder instance. + /// + public ModuleBuilder WithGroupName (string name) + { + SlashGroupName = name; + return this; + } + + /// + /// Sets . + /// + /// New value of the . + /// + /// The builder instance. + /// + public ModuleBuilder WithDescription (string description) + { + Description = description; + return this; + } + + /// + /// Sets . + /// + /// New value of the . + /// + /// The builder instance. + /// + public ModuleBuilder WithDefaultPermision (bool permission) + { + DefaultPermission = permission; + return this; + } + + /// + /// Adds attributes to + /// + /// New attributes to be added to . + /// + /// The builder instance. + /// + public ModuleBuilder AddAttributes (params Attribute[] attributes) + { + _attributes.AddRange(attributes); + return this; + } + + /// + /// Adds preconditions to + /// + /// New preconditions to be added to . + /// + /// The builder instance. + /// + public ModuleBuilder AddPreconditions (params PreconditionAttribute[] preconditions) + { + _preconditions.AddRange(preconditions); + return this; + } + + /// + /// Adds slash command builder to + /// + /// factory. + /// + /// The builder instance. + /// + public ModuleBuilder AddSlashCommand (Action configure) + { + var command = new SlashCommandBuilder(this); + configure(command); + _slashCommands.Add(command); + return this; + } + + /// + /// Adds context command builder to + /// + /// factory. + /// + /// The builder instance. + /// + public ModuleBuilder AddContextCommand (Action configure) + { + var command = new ContextCommandBuilder(this); + configure(command); + _contextCommands.Add(command); + return this; + } + + /// + /// Adds component command builder to + /// + /// factory. + /// + /// The builder instance. + /// + public ModuleBuilder AddComponentCommand (Action configure) + { + var command = new ComponentCommandBuilder(this); + configure(command); + _componentCommands.Add(command); + return this; + } + + /// + /// Adds autocomplete command builder to + /// + /// factory. + /// + /// The builder instance. + /// + public ModuleBuilder AddAutocompleteCommand(Action configure) + { + var command = new AutocompleteCommandBuilder(this); + configure(command); + _autocompleteCommands.Add(command); + return this; + } + + /// + /// Adds sub-module builder to + /// + /// factory. + /// + /// The builder instance. + /// + public ModuleBuilder AddModule (Action configure) + { + var subModule = new ModuleBuilder(InteractionService, this); + configure(subModule); + _subModules.Add(subModule); + return this; + } + + internal ModuleInfo Build (InteractionService interactionService, IServiceProvider services, ModuleInfo parent = null) + { + var moduleInfo = new ModuleInfo(this, interactionService, services, parent); + + IInteractionModuleBase instance = ReflectionUtils.CreateObject(TypeInfo, interactionService, services); + try + { + instance.OnModuleBuilding(interactionService, moduleInfo); + } + finally + { + ( instance as IDisposable )?.Dispose(); + } + + return moduleInfo; + } + } +} diff --git a/src/Discord.Net.Interactions/Builders/ModuleClassBuilder.cs b/src/Discord.Net.Interactions/Builders/ModuleClassBuilder.cs new file mode 100644 index 000000000..58b00c5f8 --- /dev/null +++ b/src/Discord.Net.Interactions/Builders/ModuleClassBuilder.cs @@ -0,0 +1,469 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text.RegularExpressions; +using System.Threading.Tasks; + +namespace Discord.Interactions.Builders +{ + internal static class ModuleClassBuilder + { + private static readonly TypeInfo ModuleTypeInfo = typeof(IInteractionModuleBase).GetTypeInfo(); + + public const int MaxCommandDepth = 3; + + public static async Task> SearchAsync (Assembly assembly, InteractionService commandService) + { + static bool IsLoadableModule (TypeInfo info) + { + return info.DeclaredMethods.Any(x => x.GetCustomAttribute() != null); + } + + var result = new List(); + + foreach (var type in assembly.DefinedTypes) + { + if (( type.IsPublic || type.IsNestedPublic ) && IsValidModuleDefinition(type)) + { + result.Add(type); + } + else if (IsLoadableModule(type)) + { + await commandService._cmdLogger.WarningAsync($"Class {type.FullName} is not public and cannot be loaded.").ConfigureAwait(false); + } + } + return result; + } + + public static async Task> BuildAsync (IEnumerable validTypes, InteractionService commandService, + IServiceProvider services) + { + var topLevelGroups = validTypes.Where(x => x.DeclaringType == null || !IsValidModuleDefinition(x.DeclaringType.GetTypeInfo())); + var built = new List(); + + var result = new Dictionary(); + + foreach (var type in topLevelGroups) + { + var builder = new ModuleBuilder(commandService); + + BuildModule(builder, type, commandService, services); + BuildSubModules(builder, type.DeclaredNestedTypes, built, commandService, services); + built.Add(type); + + var moduleInfo = builder.Build(commandService, services); + + result.Add(type.AsType(), moduleInfo); + } + + await commandService._cmdLogger.DebugAsync($"Successfully built {built.Count} Slash Command modules.").ConfigureAwait(false); + + return result; + } + + private static void BuildModule (ModuleBuilder builder, TypeInfo typeInfo, InteractionService commandService, + IServiceProvider services) + { + var attributes = typeInfo.GetCustomAttributes(); + + builder.Name = typeInfo.Name; + builder.TypeInfo = typeInfo; + + foreach (var attribute in attributes) + { + switch (attribute) + { + case GroupAttribute group: + { + builder.SlashGroupName = group.Name; + builder.Description = group.Description; + } + break; + case DefaultPermissionAttribute defPermission: + { + builder.DefaultPermission = defPermission.IsDefaultPermission; + } + break; + case PreconditionAttribute precondition: + builder.AddPreconditions(precondition); + break; + case DontAutoRegisterAttribute dontAutoRegister: + builder.DontAutoRegister = true; + break; + default: + builder.AddAttributes(attribute); + break; + } + } + + var methods = typeInfo.GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + + var validSlashCommands = methods.Where(IsValidSlashCommandDefinition); + var validContextCommands = methods.Where(IsValidContextCommandDefinition); + var validInteractions = methods.Where(IsValidComponentCommandDefinition); + var validAutocompleteCommands = methods.Where(IsValidAutocompleteCommandDefinition); + + Func createInstance = commandService._useCompiledLambda ? + ReflectionUtils.CreateLambdaBuilder(typeInfo, commandService) : ReflectionUtils.CreateBuilder(typeInfo, commandService); + + foreach (var method in validSlashCommands) + builder.AddSlashCommand(x => BuildSlashCommand(x, createInstance, method, commandService, services)); + + foreach (var method in validContextCommands) + builder.AddContextCommand(x => BuildContextCommand(x, createInstance, method, commandService, services)); + + foreach (var method in validInteractions) + builder.AddComponentCommand(x => BuildComponentCommand(x, createInstance, method, commandService, services)); + + foreach(var method in validAutocompleteCommands) + builder.AddAutocompleteCommand(x => BuildAutocompleteCommand(x, createInstance, method, commandService, services)); + } + + private static void BuildSubModules (ModuleBuilder parent, IEnumerable subModules, IList builtTypes, InteractionService commandService, + IServiceProvider services, int slashGroupDepth = 0) + { + foreach (var submodule in subModules.Where(IsValidModuleDefinition)) + { + if (builtTypes.Contains(submodule)) + continue; + + parent.AddModule((builder) => + { + BuildModule(builder, submodule, commandService, services); + + if (slashGroupDepth >= MaxCommandDepth - 1) + throw new InvalidOperationException($"Slash Commands only support {MaxCommandDepth - 1} command prefixes for sub-commands"); + + BuildSubModules(builder, submodule.DeclaredNestedTypes, builtTypes, commandService, services, builder.IsSlashGroup ? slashGroupDepth + 1 : slashGroupDepth); + }); + builtTypes.Add(submodule); + } + } + + private static void BuildSlashCommand (SlashCommandBuilder builder, Func createInstance, MethodInfo methodInfo, + InteractionService commandService, IServiceProvider services) + { + var attributes = methodInfo.GetCustomAttributes(); + + builder.MethodName = methodInfo.Name; + + foreach (var attribute in attributes) + { + switch (attribute) + { + case SlashCommandAttribute command: + { + builder.Name = command.Name; + builder.Description = command.Description; + builder.IgnoreGroupNames = command.IgnoreGroupNames; + builder.RunMode = command.RunMode; + } + break; + case DefaultPermissionAttribute defaultPermission: + { + builder.DefaultPermission = defaultPermission.IsDefaultPermission; + } + break; + case PreconditionAttribute precondition: + builder.WithPreconditions(precondition); + break; + default: + builder.WithAttributes(attribute); + break; + } + } + + var parameters = methodInfo.GetParameters(); + + foreach (var parameter in parameters) + builder.AddParameter(x => BuildSlashParameter(x, parameter, services)); + + builder.Callback = CreateCallback(createInstance, methodInfo, commandService); + } + + private static void BuildContextCommand (ContextCommandBuilder builder, Func createInstance, MethodInfo methodInfo, + InteractionService commandService, IServiceProvider services) + { + var attributes = methodInfo.GetCustomAttributes(); + + builder.MethodName = methodInfo.Name; + + foreach (var attribute in attributes) + { + switch (attribute) + { + case ContextCommandAttribute command: + { + builder.Name = command.Name; + builder.CommandType = command.CommandType; + builder.RunMode = command.RunMode; + + command.CheckMethodDefinition(methodInfo); + } + break; + case DefaultPermissionAttribute defaultPermission: + { + builder.DefaultPermission = defaultPermission.IsDefaultPermission; + } + break; + case PreconditionAttribute precondition: + builder.WithPreconditions(precondition); + break; + default: + builder.WithAttributes(attribute); + break; + } + } + + var parameters = methodInfo.GetParameters(); + + foreach (var parameter in parameters) + builder.AddParameter(x => BuildParameter(x, parameter)); + + builder.Callback = CreateCallback(createInstance, methodInfo, commandService); + } + + private static void BuildComponentCommand (ComponentCommandBuilder builder, Func createInstance, MethodInfo methodInfo, + InteractionService commandService, IServiceProvider services) + { + if (!methodInfo.GetParameters().All(x => x.ParameterType == typeof(string) || x.ParameterType == typeof(string[]))) + throw new InvalidOperationException($"Interaction method parameters all must be types of {typeof(string).Name} or {typeof(string[]).Name}"); + + var attributes = methodInfo.GetCustomAttributes(); + + builder.MethodName = methodInfo.Name; + + foreach (var attribute in attributes) + { + switch (attribute) + { + case ComponentInteractionAttribute interaction: + { + builder.Name = interaction.CustomId; + builder.RunMode = interaction.RunMode; + builder.IgnoreGroupNames = interaction.IgnoreGroupNames; + } + break; + case PreconditionAttribute precondition: + builder.WithPreconditions(precondition); + break; + default: + builder.WithAttributes(attribute); + break; + } + } + + var parameters = methodInfo.GetParameters(); + + foreach (var parameter in parameters) + builder.AddParameter(x => BuildParameter(x, parameter)); + + builder.Callback = CreateCallback(createInstance, methodInfo, commandService); + } + + private static void BuildAutocompleteCommand(AutocompleteCommandBuilder builder, Func createInstance, MethodInfo methodInfo, + InteractionService commandService, IServiceProvider services) + { + var attributes = methodInfo.GetCustomAttributes(); + + builder.MethodName = methodInfo.Name; + + foreach(var attribute in attributes) + { + switch (attribute) + { + case AutocompleteCommandAttribute autocomplete: + { + builder.ParameterName = autocomplete.ParameterName; + builder.CommandName = autocomplete.CommandName; + builder.Name = autocomplete.CommandName + " " + autocomplete.ParameterName; + builder.RunMode = autocomplete.RunMode; + } + break; + case PreconditionAttribute precondition: + builder.WithPreconditions(precondition); + break; + default: + builder.WithAttributes(attribute); + break; + } + } + + var parameters = methodInfo.GetParameters(); + + foreach (var parameter in parameters) + builder.AddParameter(x => BuildParameter(x, parameter)); + + builder.Callback = CreateCallback(createInstance, methodInfo, commandService); + } + + private static ExecuteCallback CreateCallback (Func createInstance, + MethodInfo methodInfo, InteractionService commandService) + { + Func commandInvoker = commandService._useCompiledLambda ? + ReflectionUtils.CreateMethodInvoker(methodInfo) : (module, args) => methodInfo.Invoke(module, args) as Task; + + async Task ExecuteCallback (IInteractionContext context, object[] args, IServiceProvider serviceProvider, ICommandInfo commandInfo) + { + var instance = createInstance(serviceProvider); + instance.SetContext(context); + + try + { + instance.BeforeExecute(commandInfo); + var task = commandInvoker(instance, args) ?? Task.Delay(0); + + if (task is Task runtimeTask) + { + return await runtimeTask.ConfigureAwait(false); + } + else + { + await task.ConfigureAwait(false); + return ExecuteResult.FromSuccess(); + + } + } + catch (Exception ex) + { + await commandService._cmdLogger.ErrorAsync(ex).ConfigureAwait(false); + return ExecuteResult.FromError(ex); + } + finally + { + instance.AfterExecute(commandInfo); + ( instance as IDisposable )?.Dispose(); + } + } + + return ExecuteCallback; + } + + #region Parameters + private static void BuildSlashParameter (SlashCommandParameterBuilder builder, ParameterInfo paramInfo, IServiceProvider services) + { + var attributes = paramInfo.GetCustomAttributes(); + var paramType = paramInfo.ParameterType; + + builder.Name = paramInfo.Name; + builder.Description = paramInfo.Name; + builder.IsRequired = !paramInfo.IsOptional; + builder.DefaultValue = paramInfo.DefaultValue; + builder.SetParameterType(paramType, services); + + foreach (var attribute in attributes) + { + switch (attribute) + { + case SummaryAttribute description: + { + if (!string.IsNullOrEmpty(description.Name)) + builder.Name = description.Name; + + if (!string.IsNullOrEmpty(description.Description)) + builder.Description = description.Description; + } + break; + case ChoiceAttribute choice: + builder.WithChoices(new ParameterChoice(choice.Name, choice.Value)); + break; + case ParamArrayAttribute _: + builder.IsParameterArray = true; + break; + case ParameterPreconditionAttribute precondition: + builder.AddPreconditions(precondition); + break; + case ChannelTypesAttribute channelTypes: + builder.WithChannelTypes(channelTypes.ChannelTypes); + break; + case AutocompleteAttribute autocomplete: + builder.Autocomplete = true; + if(autocomplete.AutocompleteHandlerType is not null) + builder.WithAutocompleteHandler(autocomplete.AutocompleteHandlerType, services); + break; + case MaxValueAttribute maxValue: + builder.MaxValue = maxValue.Value; + break; + case MinValueAttribute minValue: + builder.MinValue = minValue.Value; + break; + default: + builder.AddAttributes(attribute); + break; + } + } + + // Replace pascal casings with '-' + builder.Name = Regex.Replace(builder.Name, "(?<=[a-z])(?=[A-Z])", "-").ToLower(); + } + + private static void BuildParameter (CommandParameterBuilder builder, ParameterInfo paramInfo) + { + var attributes = paramInfo.GetCustomAttributes(); + var paramType = paramInfo.ParameterType; + + builder.Name = paramInfo.Name; + builder.IsRequired = !paramInfo.IsOptional; + builder.DefaultValue = paramInfo.DefaultValue; + builder.SetParameterType(paramType); + + foreach (var attribute in attributes) + { + switch (attribute) + { + case ParameterPreconditionAttribute precondition: + builder.AddPreconditions(precondition); + break; + case ParamArrayAttribute _: + builder.IsParameterArray = true; + break; + default: + builder.AddAttributes(attribute); + break; + } + } + } + #endregion + + internal static bool IsValidModuleDefinition (TypeInfo typeInfo) + { + return ModuleTypeInfo.IsAssignableFrom(typeInfo) && + !typeInfo.IsAbstract && + !typeInfo.ContainsGenericParameters; + } + + private static bool IsValidSlashCommandDefinition (MethodInfo methodInfo) + { + return methodInfo.IsDefined(typeof(SlashCommandAttribute)) && + ( methodInfo.ReturnType == typeof(Task) || methodInfo.ReturnType == typeof(Task) ) && + !methodInfo.IsStatic && + !methodInfo.IsGenericMethod; + } + + private static bool IsValidContextCommandDefinition (MethodInfo methodInfo) + { + return methodInfo.IsDefined(typeof(ContextCommandAttribute)) && + ( methodInfo.ReturnType == typeof(Task) || methodInfo.ReturnType == typeof(Task) ) && + !methodInfo.IsStatic && + !methodInfo.IsGenericMethod; + } + + private static bool IsValidComponentCommandDefinition (MethodInfo methodInfo) + { + return methodInfo.IsDefined(typeof(ComponentInteractionAttribute)) && + (methodInfo.ReturnType == typeof(Task) || methodInfo.ReturnType == typeof(Task)) && + !methodInfo.IsStatic && + !methodInfo.IsGenericMethod; + } + + private static bool IsValidAutocompleteCommandDefinition (MethodInfo methodInfo) + { + return methodInfo.IsDefined(typeof(AutocompleteCommandAttribute)) && + (methodInfo.ReturnType == typeof(Task) || methodInfo.ReturnType == typeof(Task)) && + !methodInfo.IsStatic && + !methodInfo.IsGenericMethod && + methodInfo.GetParameters().Length == 0; + } + } +} diff --git a/src/Discord.Net.Interactions/Builders/Parameters/CommandParameterBuilder.cs b/src/Discord.Net.Interactions/Builders/Parameters/CommandParameterBuilder.cs new file mode 100644 index 000000000..0aada9833 --- /dev/null +++ b/src/Discord.Net.Interactions/Builders/Parameters/CommandParameterBuilder.cs @@ -0,0 +1,25 @@ +using System; + +namespace Discord.Interactions.Builders +{ + /// + /// Represents a builder for creating . + /// + public sealed class CommandParameterBuilder : ParameterBuilder + { + protected override CommandParameterBuilder Instance => this; + + internal CommandParameterBuilder (ICommandBuilder command) : base(command) { } + + /// + /// Initializes a new . + /// + /// Parent command of this parameter. + /// Name of this command. + /// Type of this parameter. + public CommandParameterBuilder (ICommandBuilder command, string name, Type type) : base(command, name, type) { } + + internal override CommandParameterInfo Build (ICommandInfo command) => + new CommandParameterInfo(this, command); + } +} diff --git a/src/Discord.Net.Interactions/Builders/Parameters/IParameterBuilder.cs b/src/Discord.Net.Interactions/Builders/Parameters/IParameterBuilder.cs new file mode 100644 index 000000000..6dd5ad3a0 --- /dev/null +++ b/src/Discord.Net.Interactions/Builders/Parameters/IParameterBuilder.cs @@ -0,0 +1,105 @@ +using System; +using System.Collections.Generic; + +namespace Discord.Interactions.Builders +{ + /// + /// Represent a command builder for creating . + /// + public interface IParameterBuilder + { + /// + /// Gets the parent command of this parameter. + /// + ICommandBuilder Command { get; } + + /// + /// Gets the name of this parameter. + /// + string Name { get; } + + /// + /// Gets the type of this parameter. + /// + Type ParameterType { get; } + + /// + /// Gets whether this parameter is required. + /// + bool IsRequired { get; } + + /// + /// Gets whether this parameter is . + /// + bool IsParameterArray { get; } + + /// + /// Gets the deafult value of this parameter. + /// + object DefaultValue { get; } + + /// + /// Gets a collection of the attributes of this command. + /// + IReadOnlyCollection Attributes { get; } + + /// + /// Gets a collection of the preconditions of this command. + /// + IReadOnlyCollection Preconditions { get; } + + /// + /// Sets . + /// + /// New value of the . + /// + /// The builder instance. + /// + IParameterBuilder WithName (string name); + + /// + /// Sets . + /// + /// New value of the . + /// + /// The builder instance. + /// + IParameterBuilder SetParameterType (Type type); + + /// + /// Sets . + /// + /// New value of the . + /// + /// The builder instance. + /// + IParameterBuilder SetRequired (bool isRequired); + + /// + /// Sets . + /// + /// New value of the . + /// + /// The builder instance. + /// + IParameterBuilder SetDefaultValue (object defaultValue); + + /// + /// Adds attributes to . + /// + /// New attributes to be added to . + /// + /// The builder instance. + /// + IParameterBuilder AddAttributes (params Attribute[] attributes); + + /// + /// Adds preconditions to . + /// + /// New attributes to be added to . + /// + /// The builder instance. + /// + IParameterBuilder AddPreconditions (params ParameterPreconditionAttribute[] preconditions); + } +} diff --git a/src/Discord.Net.Interactions/Builders/Parameters/ParameterBuilder.cs b/src/Discord.Net.Interactions/Builders/Parameters/ParameterBuilder.cs new file mode 100644 index 000000000..78d007d44 --- /dev/null +++ b/src/Discord.Net.Interactions/Builders/Parameters/ParameterBuilder.cs @@ -0,0 +1,162 @@ +using System; +using System.Collections.Generic; + +namespace Discord.Interactions.Builders +{ + /// + /// Represents the base builder class for creating . + /// + /// The this builder yields when built. + /// Inherited type. + public abstract class ParameterBuilder : IParameterBuilder + where TInfo : class, IParameterInfo + where TBuilder : ParameterBuilder + { + private readonly List _preconditions; + private readonly List _attributes; + + /// + public ICommandBuilder Command { get; } + + /// + public string Name { get; internal set; } + + /// + public Type ParameterType { get; private set; } + + /// + public bool IsRequired { get; set; } = true; + + /// + public bool IsParameterArray { get; set; } = false; + + /// + public object DefaultValue { get; set; } + + /// + public IReadOnlyCollection Attributes => _attributes; + + /// + public IReadOnlyCollection Preconditions => _preconditions; + protected abstract TBuilder Instance { get; } + + internal ParameterBuilder (ICommandBuilder command) + { + _attributes = new List(); + _preconditions = new List(); + + Command = command; + } + + protected ParameterBuilder (ICommandBuilder command, string name, Type type) : this(command) + { + Name = name; + SetParameterType(type); + } + + /// + /// Sets . + /// + /// New value of the . + /// + /// The builder instance. + /// + public virtual TBuilder WithName (string name) + { + Name = name; + return Instance; + } + + /// + /// Sets . + /// + /// New value of the . + /// + /// The builder instance. + /// + public virtual TBuilder SetParameterType (Type type) + { + ParameterType = type; + return Instance; + } + + /// + /// Sets . + /// + /// New value of the . + /// + /// The builder instance. + /// + public virtual TBuilder SetRequired (bool isRequired) + { + IsRequired = isRequired; + return Instance; + } + + /// + /// Sets . + /// + /// New value of the . + /// + /// The builder instance. + /// + public virtual TBuilder SetDefaultValue (object defaultValue) + { + DefaultValue = defaultValue; + return Instance; + } + + /// + /// Adds attributes to + /// + /// New attributes to be added to . + /// + /// The builder instance. + /// + public virtual TBuilder AddAttributes (params Attribute[] attributes) + { + _attributes.AddRange(attributes); + return Instance; + } + + /// + /// Adds preconditions to + /// + /// New attributes to be added to . + /// + /// The builder instance. + /// + public virtual TBuilder AddPreconditions (params ParameterPreconditionAttribute[] attributes) + { + _preconditions.AddRange(attributes); + return Instance; + } + + internal abstract TInfo Build (ICommandInfo command); + + //IParameterBuilder + /// + IParameterBuilder IParameterBuilder.WithName (string name) => + WithName(name); + + /// + IParameterBuilder IParameterBuilder.SetParameterType (Type type) => + SetParameterType(type); + + /// + IParameterBuilder IParameterBuilder.SetRequired (bool isRequired) => + SetRequired(isRequired); + + /// + IParameterBuilder IParameterBuilder.SetDefaultValue (object defaultValue) => + SetDefaultValue(defaultValue); + + /// + IParameterBuilder IParameterBuilder.AddAttributes (params Attribute[] attributes) => + AddAttributes(attributes); + + /// + IParameterBuilder IParameterBuilder.AddPreconditions (params ParameterPreconditionAttribute[] preconditions) => + AddPreconditions(preconditions); + } +} diff --git a/src/Discord.Net.Interactions/Builders/Parameters/SlashCommandParameterBuilder.cs b/src/Discord.Net.Interactions/Builders/Parameters/SlashCommandParameterBuilder.cs new file mode 100644 index 000000000..c208a4b0e --- /dev/null +++ b/src/Discord.Net.Interactions/Builders/Parameters/SlashCommandParameterBuilder.cs @@ -0,0 +1,178 @@ +using System; +using System.Collections.Generic; + +namespace Discord.Interactions.Builders +{ + /// + /// Represents a builder for creating . + /// + public sealed class SlashCommandParameterBuilder : ParameterBuilder + { + private readonly List _choices = new(); + private readonly List _channelTypes = new(); + + /// + /// Gets or sets the description of this parameter. + /// + public string Description { get; set; } + + /// + /// Gets or sets the max value of this parameter. + /// + public double? MaxValue { get; set; } + + /// + /// Gets or sets the min value of this parameter. + /// + public double? MinValue { get; set; } + + /// + /// Gets a collection of the choices of this command. + /// + public IReadOnlyCollection Choices => _choices; + + /// + /// Gets a collection of the channel types of this command. + /// + public IReadOnlyCollection ChannelTypes => _channelTypes; + + /// + /// Gets or sets whether this parameter should be configured for Autocomplete Interactions. + /// + public bool Autocomplete { get; set; } + + /// + /// Gets or sets the of this parameter. + /// + public TypeConverter TypeConverter { get; private set; } + + /// + /// Gets or sets the of this parameter. + /// + public IAutocompleteHandler AutocompleteHandler { get; set; } + protected override SlashCommandParameterBuilder Instance => this; + + internal SlashCommandParameterBuilder(ICommandBuilder command) : base(command) { } + + /// + /// Initializes a new . + /// + /// Parent command of this parameter. + /// Name of this command. + /// Type of this parameter. + public SlashCommandParameterBuilder(ICommandBuilder command, string name, Type type) : base(command, name, type) { } + + /// + /// Sets . + /// + /// New value of the . + /// + /// The builder instance. + /// + public SlashCommandParameterBuilder WithDescription(string description) + { + Description = description; + return this; + } + + /// + /// Sets . + /// + /// New value of the . + /// + /// The builder instance. + /// + public SlashCommandParameterBuilder WithMinValue(double value) + { + MinValue = value; + return this; + } + + /// + /// Sets . + /// + /// New value of the . + /// + /// The builder instance. + /// + public SlashCommandParameterBuilder WithMaxValue(double value) + { + MaxValue = value; + return this; + } + + /// + /// Adds parameter choices to . + /// + /// New choices to be added to . + /// + /// The builder instance. + /// + public SlashCommandParameterBuilder WithChoices(params ParameterChoice[] options) + { + _choices.AddRange(options); + return this; + } + + /// + /// Adds channel types to . + /// + /// New channel types to be added to . + /// + /// The builder instance. + /// + public SlashCommandParameterBuilder WithChannelTypes(params ChannelType[] channelTypes) + { + _channelTypes.AddRange(channelTypes); + return this; + } + + /// + /// Adds channel types to . + /// + /// New channel types to be added to . + /// + /// The builder instance. + /// + public SlashCommandParameterBuilder WithChannelTypes(IEnumerable channelTypes) + { + _channelTypes.AddRange(channelTypes); + return this; + } + + /// + /// Sets . + /// + /// Type of the . + /// Service container to be used to resolve the dependencies of this parameters . + /// + /// The builder instance. + /// + public SlashCommandParameterBuilder WithAutocompleteHandler(Type autocompleteHandlerType, IServiceProvider services = null) + { + AutocompleteHandler = Command.Module.InteractionService.GetAutocompleteHandler(autocompleteHandlerType, services); + return this; + } + + /// + public override SlashCommandParameterBuilder SetParameterType(Type type) => SetParameterType(type, null); + + /// + /// Sets . + /// + /// New value of the . + /// Service container to be used to resolve the dependencies of this parameters . + /// + /// The builder instance. + /// + public SlashCommandParameterBuilder SetParameterType(Type type, IServiceProvider services = null) + { + base.SetParameterType(type); + TypeConverter = Command.Module.InteractionService.GetTypeConverter(ParameterType, services); + return this; + } + + internal override SlashCommandParameterInfo Build(ICommandInfo command) => + new SlashCommandParameterInfo(this, command as SlashCommandInfo); + } +} diff --git a/src/Discord.Net.Interactions/Discord.Net.Interactions.csproj b/src/Discord.Net.Interactions/Discord.Net.Interactions.csproj new file mode 100644 index 000000000..7eeb819ca --- /dev/null +++ b/src/Discord.Net.Interactions/Discord.Net.Interactions.csproj @@ -0,0 +1,25 @@ + + + + + net6.0;net5.0;net461;netstandard2.0;netstandard2.1 + net6.0;net5.0;netstandard2.0;netstandard2.1 + Discord.Interactions + Discord.Net.Interactions + Discord.Net.Labs.Interactions + A Discord.Net extension adding support for Application Commands. + + + + + + + + + + + + + + + diff --git a/src/Discord.Net.Interactions/Entities/ParameterChoice.cs b/src/Discord.Net.Interactions/Entities/ParameterChoice.cs new file mode 100644 index 000000000..30f107858 --- /dev/null +++ b/src/Discord.Net.Interactions/Entities/ParameterChoice.cs @@ -0,0 +1,24 @@ +namespace Discord.Interactions +{ + /// + /// Represents a Slash Command parameter choice. + /// + public class ParameterChoice + { + /// + /// Gets the name of the choice. + /// + public string Name { get; } + + /// + /// Gets the value of the choice. + /// + public object Value { get; } + + internal ParameterChoice (string name, object value) + { + Name = name; + Value = value; + } + } +} diff --git a/src/Discord.Net.Interactions/Entities/SlashCommandChoiceType.cs b/src/Discord.Net.Interactions/Entities/SlashCommandChoiceType.cs new file mode 100644 index 000000000..c3497d5c9 --- /dev/null +++ b/src/Discord.Net.Interactions/Entities/SlashCommandChoiceType.cs @@ -0,0 +1,21 @@ +namespace Discord.Interactions +{ + /// + /// Supported types of pre-defined parameter choices. + /// + public enum SlashCommandChoiceType + { + /// + /// Discord type for . + /// + String, + /// + /// Discord type for . + /// + Integer, + /// + /// Discord type for . + /// + Number + } +} diff --git a/src/Discord.Net.Interactions/Extensions/AutocompleteOptionComparer.cs b/src/Discord.Net.Interactions/Extensions/AutocompleteOptionComparer.cs new file mode 100644 index 000000000..9f16afa31 --- /dev/null +++ b/src/Discord.Net.Interactions/Extensions/AutocompleteOptionComparer.cs @@ -0,0 +1,34 @@ +using System.Collections.Generic; + +namespace Discord.Interactions +{ + internal class AutocompleteOptionComparer : IComparer + { + public int Compare(ApplicationCommandOptionType x, ApplicationCommandOptionType y) + { + if (x == ApplicationCommandOptionType.SubCommandGroup) + { + if (y == ApplicationCommandOptionType.SubCommandGroup) + return 0; + else + return 1; + } + else if (x == ApplicationCommandOptionType.SubCommand) + { + if (y == ApplicationCommandOptionType.SubCommandGroup) + return -1; + else if (y == ApplicationCommandOptionType.SubCommand) + return 0; + else + return 1; + } + else + { + if (y == ApplicationCommandOptionType.SubCommand || y == ApplicationCommandOptionType.SubCommandGroup) + return -1; + else + return 0; + } + } + } +} diff --git a/src/Discord.Net.Interactions/Extensions/WebSocketExtensions.cs b/src/Discord.Net.Interactions/Extensions/WebSocketExtensions.cs new file mode 100644 index 000000000..388efcbf9 --- /dev/null +++ b/src/Discord.Net.Interactions/Extensions/WebSocketExtensions.cs @@ -0,0 +1,53 @@ +using Discord.Rest; +using System.Collections.Generic; +using System.Linq; + +namespace Discord.WebSocket +{ + internal static class WebSocketExtensions + { + /// + /// Get the name of the executed command and its parents in hierarchical order. + /// + /// + /// + /// The name of the executed command and its parents in hierarchical order. + /// + public static IList GetCommandKeywords(this IApplicationCommandInteractionData data) + { + var keywords = new List { data.Name }; + + var child = data.Options?.ElementAtOrDefault(0); + + while (child?.Type == ApplicationCommandOptionType.SubCommandGroup || child?.Type == ApplicationCommandOptionType.SubCommand) + { + keywords.Add(child.Name); + child = child.Options?.ElementAtOrDefault(0); + } + + return keywords; + } + + /// + /// Get the name of the executed command and its parents in hierarchical order. + /// + /// + /// + /// The name of the executed command and its parents in hierarchical order. + /// + public static IList GetCommandKeywords(this IAutocompleteInteractionData data) + { + var keywords = new List { data.CommandName }; + + var group = data.Options?.FirstOrDefault(x => x.Type == ApplicationCommandOptionType.SubCommandGroup); + if (group is not null) + keywords.Add(group.Name); + + var subcommand = data.Options?.FirstOrDefault(x => x.Type == ApplicationCommandOptionType.SubCommand); + if (subcommand is not null) + keywords.Add(subcommand.Name); + + return keywords; + } + } +} diff --git a/src/Discord.Net.Interactions/IInteractionModuleBase.cs b/src/Discord.Net.Interactions/IInteractionModuleBase.cs new file mode 100644 index 000000000..e840e6a0f --- /dev/null +++ b/src/Discord.Net.Interactions/IInteractionModuleBase.cs @@ -0,0 +1,33 @@ +namespace Discord.Interactions +{ + /// + /// Represents a generic interaction module base. + /// + public interface IInteractionModuleBase + { + /// + /// Sets the context of this module. + /// + /// + void SetContext (IInteractionContext context); + + /// + /// Method body to be executed before executing an application command. + /// + /// Command information related to the Discord Application Command. + void BeforeExecute (ICommandInfo command); + + /// + /// Method body to be executed after an application command execution. + /// + /// Command information related to the Discord Application Command. + void AfterExecute (ICommandInfo command); + + /// + /// Method body to be executed before the derived module is built. + /// + /// Command Service instance that built this module. + /// Info class of this module. + void OnModuleBuilding (InteractionService commandService, ModuleInfo module); + } +} diff --git a/src/Discord.Net.Interactions/Info/Commands/AutocompleteCommandInfo.cs b/src/Discord.Net.Interactions/Info/Commands/AutocompleteCommandInfo.cs new file mode 100644 index 000000000..712b058a3 --- /dev/null +++ b/src/Discord.Net.Interactions/Info/Commands/AutocompleteCommandInfo.cs @@ -0,0 +1,89 @@ +using Discord.Interactions.Builders; +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + /// + /// Represents the info class of an attribute based method for handling Autocomplete Interaction events. + /// + public sealed class AutocompleteCommandInfo : CommandInfo + { + /// + /// Gets the name of the target parameter. + /// + public string ParameterName { get; } + + /// + /// Gets the name of the target command. + /// + public string CommandName { get; } + + /// + public override IReadOnlyCollection Parameters { get; } + + /// + public override bool SupportsWildCards => false; + + internal AutocompleteCommandInfo(AutocompleteCommandBuilder builder, ModuleInfo module, InteractionService commandService) : base(builder, module, commandService) + { + Parameters = builder.Parameters.Select(x => x.Build(this)).ToImmutableArray(); + ParameterName = builder.ParameterName; + CommandName = builder.CommandName; + } + + /// + public override async Task ExecuteAsync(IInteractionContext context, IServiceProvider services) + { + if (context.Interaction is not IAutocompleteInteraction) + return ExecuteResult.FromError(InteractionCommandError.ParseFailed, $"Provided {nameof(IInteractionContext)} doesn't belong to a Autocomplete Interaction"); + + try + { + return await RunAsync(context, Array.Empty(), services).ConfigureAwait(false); + } + catch (Exception ex) + { + return ExecuteResult.FromError(ex); + } + } + + /// + protected override Task InvokeModuleEvent(IInteractionContext context, IResult result) => + CommandService._autocompleteCommandExecutedEvent.InvokeAsync(this, context, result); + + /// + protected override string GetLogString(IInteractionContext context) + { + if (context.Guild != null) + return $"Autocomplete Command: \"{base.ToString()}\" for {context.User} in {context.Guild}/{context.Channel}"; + else + return $"Autocomplete Command: \"{base.ToString()}\" for {context.User} in {context.Channel}"; + } + + internal IList GetCommandKeywords() + { + var keywords = new List() { ParameterName, CommandName }; + + if(!IgnoreGroupNames) + { + var currentParent = Module; + + while (currentParent != null) + { + if (!string.IsNullOrEmpty(currentParent.SlashGroupName)) + keywords.Add(currentParent.SlashGroupName); + + currentParent = currentParent.Parent; + } + } + + keywords.Reverse(); + + return keywords; + } + } +} diff --git a/src/Discord.Net.Interactions/Info/Commands/CommandInfo.cs b/src/Discord.Net.Interactions/Info/Commands/CommandInfo.cs new file mode 100644 index 000000000..f9fdb6e38 --- /dev/null +++ b/src/Discord.Net.Interactions/Info/Commands/CommandInfo.cs @@ -0,0 +1,247 @@ +using Microsoft.Extensions.DependencyInjection; +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using System.Reflection; +using System.Runtime.ExceptionServices; +using System.Text; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + /// + /// Represents a cached method execution delegate. + /// + /// Execution context that will be injected into the module class. + /// Method arguments array. + /// Service collection for initializing the module. + /// Command info class of the executed method. + /// + /// A task representing the execution operation. + /// + public delegate Task ExecuteCallback (IInteractionContext context, object[] args, IServiceProvider serviceProvider, ICommandInfo commandInfo); + + /// + /// The base information class for commands. + /// + /// The type of that is used by this command type. + public abstract class CommandInfo : ICommandInfo where TParameter : class, IParameterInfo + { + private readonly ExecuteCallback _action; + private readonly ILookup _groupedPreconditions; + + /// + public ModuleInfo Module { get; } + + /// + public InteractionService CommandService { get; } + + /// + public string Name { get; } + + /// + public string MethodName { get; } + + /// + public virtual bool IgnoreGroupNames { get; } + + /// + public abstract bool SupportsWildCards { get; } + + /// + public bool IsTopLevelCommand => IgnoreGroupNames || !Module.IsTopLevelGroup; + + /// + public RunMode RunMode { get; } + + /// + public IReadOnlyCollection Attributes { get; } + + /// + public IReadOnlyCollection Preconditions { get; } + + /// + public abstract IReadOnlyCollection Parameters { get; } + + internal CommandInfo(Builders.ICommandBuilder builder, ModuleInfo module, InteractionService commandService) + { + CommandService = commandService; + Module = module; + + Name = builder.Name; + MethodName = builder.MethodName; + IgnoreGroupNames = builder.IgnoreGroupNames; + RunMode = builder.RunMode != RunMode.Default ? builder.RunMode : commandService._runMode; + Attributes = builder.Attributes.ToImmutableArray(); + Preconditions = builder.Preconditions.ToImmutableArray(); + + _action = builder.Callback; + _groupedPreconditions = builder.Preconditions.ToLookup(x => x.Group, x => x, StringComparer.Ordinal); + } + + /// + public abstract Task ExecuteAsync(IInteractionContext context, IServiceProvider services); + protected abstract Task InvokeModuleEvent(IInteractionContext context, IResult result); + protected abstract string GetLogString(IInteractionContext context); + + /// + public async Task CheckPreconditionsAsync(IInteractionContext context, IServiceProvider services) + { + async Task CheckGroups(ILookup preconditions, string type) + { + foreach (IGrouping preconditionGroup in preconditions) + { + if (preconditionGroup.Key == null) + { + foreach (PreconditionAttribute precondition in preconditionGroup) + { + var result = await precondition.CheckRequirementsAsync(context, this, services).ConfigureAwait(false); + if (!result.IsSuccess) + return result; + } + } + else + { + var results = new List(); + foreach (PreconditionAttribute precondition in preconditionGroup) + results.Add(await precondition.CheckRequirementsAsync(context, this, services).ConfigureAwait(false)); + + if (!results.Any(p => p.IsSuccess)) + return PreconditionGroupResult.FromError($"{type} precondition group {preconditionGroup.Key} failed.", results); + } + } + return PreconditionGroupResult.FromSuccess(); + } + + var moduleResult = await CheckGroups(Module.GroupedPreconditions, "Module").ConfigureAwait(false); + if (!moduleResult.IsSuccess) + return moduleResult; + + var commandResult = await CheckGroups(_groupedPreconditions, "Command").ConfigureAwait(false); + if (!commandResult.IsSuccess) + return commandResult; + + return PreconditionResult.FromSuccess(); + } + + protected async Task RunAsync(IInteractionContext context, object[] args, IServiceProvider services) + { + switch (RunMode) + { + case RunMode.Sync: + { + using var scope = services?.CreateScope(); + return await ExecuteInternalAsync(context, args, scope?.ServiceProvider ?? EmptyServiceProvider.Instance).ConfigureAwait(false); + } + case RunMode.Async: + _ = Task.Run(async () => + { + using var scope = services?.CreateScope(); + await ExecuteInternalAsync(context, args, scope?.ServiceProvider ?? EmptyServiceProvider.Instance).ConfigureAwait(false); + }); + break; + default: + throw new InvalidOperationException($"RunMode {RunMode} is not supported."); + } + + return ExecuteResult.FromSuccess(); + } + + private async Task ExecuteInternalAsync(IInteractionContext context, object[] args, IServiceProvider services) + { + await CommandService._cmdLogger.DebugAsync($"Executing {GetLogString(context)}").ConfigureAwait(false); + + try + { + var preconditionResult = await CheckPreconditionsAsync(context, services).ConfigureAwait(false); + if (!preconditionResult.IsSuccess) + { + await InvokeModuleEvent(context, preconditionResult).ConfigureAwait(false); + return preconditionResult; + } + + var index = 0; + foreach (var parameter in Parameters) + { + var result = await parameter.CheckPreconditionsAsync(context, args[index++], services).ConfigureAwait(false); + if (!result.IsSuccess) + { + await InvokeModuleEvent(context, result).ConfigureAwait(false); + return result; + } + } + + var task = _action(context, args, services, this); + + if (task is Task resultTask) + { + var result = await resultTask.ConfigureAwait(false); + await InvokeModuleEvent(context, result).ConfigureAwait(false); + if (result is RuntimeResult || result is ExecuteResult) + return result; + } + else + { + await task.ConfigureAwait(false); + var result = ExecuteResult.FromSuccess(); + await InvokeModuleEvent(context, result).ConfigureAwait(false); + return result; + } + + var failResult = ExecuteResult.FromError(InteractionCommandError.Unsuccessful, "Command execution failed for an unknown reason"); + await InvokeModuleEvent(context, failResult).ConfigureAwait(false); + return failResult; + } + catch (Exception ex) + { + var originalEx = ex; + while (ex is TargetInvocationException) + ex = ex.InnerException; + + await Module.CommandService._cmdLogger.ErrorAsync(ex).ConfigureAwait(false); + + var result = ExecuteResult.FromError(ex); + await InvokeModuleEvent(context, result).ConfigureAwait(false); + + if (Module.CommandService._throwOnError) + { + if (ex == originalEx) + throw; + else + ExceptionDispatchInfo.Capture(ex).Throw(); + } + + return result; + } + finally + { + await CommandService._cmdLogger.VerboseAsync($"Executed {GetLogString(context)}").ConfigureAwait(false); + } + } + + // ICommandInfo + + /// + IReadOnlyCollection ICommandInfo.Parameters => Parameters; + + /// + public override string ToString() + { + StringBuilder builder = new(); + + var currentParent = Module; + + while (currentParent != null) + { + if (currentParent.IsSlashGroup) + builder.AppendFormat(" {0}", currentParent.SlashGroupName); + + currentParent = currentParent.Parent; + } + builder.AppendFormat(" {0}", Name); + + return builder.ToString(); + } + } +} diff --git a/src/Discord.Net.Interactions/Info/Commands/ComponentCommandInfo.cs b/src/Discord.Net.Interactions/Info/Commands/ComponentCommandInfo.cs new file mode 100644 index 000000000..62195bf0c --- /dev/null +++ b/src/Discord.Net.Interactions/Info/Commands/ComponentCommandInfo.cs @@ -0,0 +1,132 @@ +using Discord.Interactions.Builders; +using Discord.WebSocket; +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + /// + /// Represents the info class of an attribute based method for handling Component Interaction events. + /// + public class ComponentCommandInfo : CommandInfo + { + /// + public override IReadOnlyCollection Parameters { get; } + + /// + public override bool SupportsWildCards => true; + + internal ComponentCommandInfo(ComponentCommandBuilder builder, ModuleInfo module, InteractionService commandService) : base(builder, module, commandService) + { + Parameters = builder.Parameters.Select(x => x.Build(this)).ToImmutableArray(); + } + + /// + public override async Task ExecuteAsync(IInteractionContext context, IServiceProvider services) + => await ExecuteAsync(context, services, null).ConfigureAwait(false); + + /// + /// Execute this command using dependency injection. + /// + /// Context that will be injected to the . + /// Services that will be used while initializing the . + /// Provide additional string parameters to the method along with the auto generated parameters. + /// + /// A task representing the asyncronous command execution process. + /// + public async Task ExecuteAsync(IInteractionContext context, IServiceProvider services, params string[] additionalArgs) + { + if (context.Interaction is not IComponentInteraction componentInteraction) + return ExecuteResult.FromError(InteractionCommandError.ParseFailed, $"Provided {nameof(IInteractionContext)} doesn't belong to a Message Component Interaction"); + + var args = new List(); + + if (additionalArgs is not null) + args.AddRange(additionalArgs); + + if (componentInteraction.Data?.Values is not null) + args.AddRange(componentInteraction.Data.Values); + + return await ExecuteAsync(context, Parameters, args, services); + } + + /// + public async Task ExecuteAsync(IInteractionContext context, IEnumerable paramList, IEnumerable values, + IServiceProvider services) + { + if (context.Interaction is not SocketMessageComponent messageComponent) + return ExecuteResult.FromError(InteractionCommandError.ParseFailed, $"Provided {nameof(IInteractionContext)} doesn't belong to a Component Command Interaction"); + + try + { + var strCount = Parameters.Count(x => x.ParameterType == typeof(string)); + + if (strCount > values?.Count()) + return ExecuteResult.FromError(InteractionCommandError.BadArgs, "Command was invoked with too few parameters"); + + var componentValues = messageComponent.Data?.Values; + + var args = new object[Parameters.Count]; + + if (componentValues is not null) + { + if (Parameters.Last().ParameterType == typeof(string[])) + args[args.Length - 1] = componentValues.ToArray(); + else + return ExecuteResult.FromError(InteractionCommandError.BadArgs, $"Select Menu Interaction handlers must accept a {typeof(string[]).FullName} as its last parameter"); + } + + for (var i = 0; i < strCount; i++) + args[i] = values.ElementAt(i); + + return await RunAsync(context, args, services).ConfigureAwait(false); + } + catch (Exception ex) + { + return ExecuteResult.FromError(ex); + } + } + + private static object[] GenerateArgs(IEnumerable paramList, IEnumerable argList) + { + var result = new object[paramList.Count()]; + + for (var i = 0; i < paramList.Count(); i++) + { + var parameter = paramList.ElementAt(i); + + if (argList?.ElementAt(i) == null) + { + if (!parameter.IsRequired) + result[i] = parameter.DefaultValue; + else + throw new InvalidOperationException($"Component Interaction handler is executed with too few args."); + } + else if (parameter.IsParameterArray) + { + string[] paramArray = new string[argList.Count() - i]; + argList.ToArray().CopyTo(paramArray, i); + result[i] = paramArray; + } + else + result[i] = argList?.ElementAt(i); + } + + return result; + } + + protected override Task InvokeModuleEvent(IInteractionContext context, IResult result) + => CommandService._componentCommandExecutedEvent.InvokeAsync(this, context, result); + + protected override string GetLogString(IInteractionContext context) + { + if (context.Guild != null) + return $"Component Interaction: \"{base.ToString()}\" for {context.User} in {context.Guild}/{context.Channel}"; + else + return $"Component Interaction: \"{base.ToString()}\" for {context.User} in {context.Channel}"; + } + } +} diff --git a/src/Discord.Net.Interactions/Info/Commands/ContextCommands/ContextCommandInfo.cs b/src/Discord.Net.Interactions/Info/Commands/ContextCommands/ContextCommandInfo.cs new file mode 100644 index 000000000..4c2e7af7d --- /dev/null +++ b/src/Discord.Net.Interactions/Info/Commands/ContextCommands/ContextCommandInfo.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + /// + /// Base information class for attribute based context command handlers. + /// + public abstract class ContextCommandInfo : CommandInfo, IApplicationCommandInfo + { + /// + public ApplicationCommandType CommandType { get; } + + /// + public bool DefaultPermission { get; } + + /// + public override IReadOnlyCollection Parameters { get; } + + /// + public override bool SupportsWildCards => false; + + /// + public override bool IgnoreGroupNames => true; + + internal ContextCommandInfo (Builders.ContextCommandBuilder builder, ModuleInfo module, InteractionService commandService) + : base(builder, module, commandService) + { + CommandType = builder.CommandType; + DefaultPermission = builder.DefaultPermission; + Parameters = builder.Parameters.Select(x => x.Build(this)).ToImmutableArray(); + } + + internal static ContextCommandInfo Create (Builders.ContextCommandBuilder builder, ModuleInfo module, InteractionService commandService) + { + return builder.CommandType switch + { + ApplicationCommandType.User => new UserCommandInfo(builder, module, commandService), + ApplicationCommandType.Message => new MessageCommandInfo(builder, module, commandService), + _ => throw new InvalidOperationException("This command type is not a supported Context Command"), + }; + } + + /// + protected override Task InvokeModuleEvent (IInteractionContext context, IResult result) + => CommandService._contextCommandExecutedEvent.InvokeAsync(this, context, result); + } +} diff --git a/src/Discord.Net.Interactions/Info/Commands/ContextCommands/MessageCommandInfo.cs b/src/Discord.Net.Interactions/Info/Commands/ContextCommands/MessageCommandInfo.cs new file mode 100644 index 000000000..e05955df8 --- /dev/null +++ b/src/Discord.Net.Interactions/Info/Commands/ContextCommands/MessageCommandInfo.cs @@ -0,0 +1,41 @@ +using System; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + /// + /// Represents the info class of an attribute based method for command type . + /// + public class MessageCommandInfo : ContextCommandInfo + { + internal MessageCommandInfo(Builders.ContextCommandBuilder builder, ModuleInfo module, InteractionService commandService) + : base(builder, module, commandService) { } + + /// + public override async Task ExecuteAsync(IInteractionContext context, IServiceProvider services) + { + if (context.Interaction is not IMessageCommandInteraction messageCommand) + return ExecuteResult.FromError(InteractionCommandError.ParseFailed, $"Provided {nameof(IInteractionContext)} doesn't belong to a Message Command Interation"); + + try + { + object[] args = new object[1] { messageCommand.Data.Message }; + + return await RunAsync(context, args, services).ConfigureAwait(false); + } + catch (Exception ex) + { + return ExecuteResult.FromError(ex); + } + } + + /// + protected override string GetLogString(IInteractionContext context) + { + if (context.Guild != null) + return $"Message Command: \"{base.ToString()}\" for {context.User} in {context.Guild}/{context.Channel}"; + else + return $"Message Command: \"{base.ToString()}\" for {context.User} in {context.Channel}"; + } + } +} diff --git a/src/Discord.Net.Interactions/Info/Commands/ContextCommands/UserCommandInfo.cs b/src/Discord.Net.Interactions/Info/Commands/ContextCommands/UserCommandInfo.cs new file mode 100644 index 000000000..8862e1798 --- /dev/null +++ b/src/Discord.Net.Interactions/Info/Commands/ContextCommands/UserCommandInfo.cs @@ -0,0 +1,41 @@ +using System; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + /// + /// Represents the info class of an attribute based method for command type . + /// + public class UserCommandInfo : ContextCommandInfo + { + internal UserCommandInfo(Builders.ContextCommandBuilder builder, ModuleInfo module, InteractionService commandService) + : base(builder, module, commandService) { } + + /// + public override async Task ExecuteAsync(IInteractionContext context, IServiceProvider services) + { + if (context.Interaction is not IUserCommandInteraction userCommand) + return ExecuteResult.FromError(InteractionCommandError.ParseFailed, $"Provided {nameof(IInteractionContext)} doesn't belong to a Message Command Interation"); + + try + { + object[] args = new object[1] { userCommand.Data.User }; + + return await RunAsync(context, args, services).ConfigureAwait(false); + } + catch (Exception ex) + { + return ExecuteResult.FromError(ex); + } + } + + /// + protected override string GetLogString(IInteractionContext context) + { + if (context.Guild != null) + return $"User Command: \"{base.ToString()}\" for {context.User} in {context.Guild}/{context.Channel}"; + else + return $"User Command: \"{base.ToString()}\" for {context.User} in {context.Channel}"; + } + } +} diff --git a/src/Discord.Net.Interactions/Info/Commands/SlashCommandInfo.cs b/src/Discord.Net.Interactions/Info/Commands/SlashCommandInfo.cs new file mode 100644 index 000000000..116a07ab4 --- /dev/null +++ b/src/Discord.Net.Interactions/Info/Commands/SlashCommandInfo.cs @@ -0,0 +1,112 @@ +using Discord.Rest; +using Discord.WebSocket; +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + /// + /// Represents the info class of an attribute based method for command type . + /// + public class SlashCommandInfo : CommandInfo, IApplicationCommandInfo + { + /// + /// Gets the command description that will be displayed on Discord. + /// + public string Description { get; } + + /// + public ApplicationCommandType CommandType { get; } = ApplicationCommandType.Slash; + + /// + public bool DefaultPermission { get; } + + /// + public override IReadOnlyCollection Parameters { get; } + + /// + public override bool SupportsWildCards => false; + + internal SlashCommandInfo (Builders.SlashCommandBuilder builder, ModuleInfo module, InteractionService commandService) : base(builder, module, commandService) + { + Description = builder.Description; + DefaultPermission = builder.DefaultPermission; + Parameters = builder.Parameters.Select(x => x.Build(this)).ToImmutableArray(); + } + + /// + public override async Task ExecuteAsync (IInteractionContext context, IServiceProvider services) + { + if(context.Interaction is not ISlashCommandInteraction slashCommand) + return ExecuteResult.FromError(InteractionCommandError.ParseFailed, $"Provided {nameof(IInteractionContext)} doesn't belong to a Slash Command Interaction"); + + var options = slashCommand.Data.Options; + + while (options != null && options.Any(x => x.Type == ApplicationCommandOptionType.SubCommand || x.Type == ApplicationCommandOptionType.SubCommandGroup)) + options = options.ElementAt(0)?.Options; + + return await ExecuteAsync(context, Parameters, options?.ToList(), services); + } + + private async Task ExecuteAsync (IInteractionContext context, IEnumerable paramList, + List argList, IServiceProvider services) + { + try + { + if (paramList?.Count() < argList?.Count()) + return ExecuteResult.FromError(InteractionCommandError.BadArgs ,"Command was invoked with too many parameters"); + + var args = new object[paramList.Count()]; + + for (var i = 0; i < paramList.Count(); i++) + { + var parameter = paramList.ElementAt(i); + + var arg = argList?.Find(x => string.Equals(x.Name, parameter.Name, StringComparison.OrdinalIgnoreCase)); + + if (arg == default) + { + if (parameter.IsRequired) + return ExecuteResult.FromError(InteractionCommandError.BadArgs, "Command was invoked with too few parameters"); + else + args[i] = parameter.DefaultValue; + } + else + { + var typeConverter = parameter.TypeConverter; + + var readResult = await typeConverter.ReadAsync(context, arg, services).ConfigureAwait(false); + + if (!readResult.IsSuccess) + { + await InvokeModuleEvent(context, readResult).ConfigureAwait(false); + return readResult; + } + + args[i] = readResult.Value; + } + } + + return await RunAsync(context, args, services).ConfigureAwait(false); + } + catch (Exception ex) + { + return ExecuteResult.FromError(ex); + } + } + + protected override Task InvokeModuleEvent (IInteractionContext context, IResult result) + => CommandService._slashCommandExecutedEvent.InvokeAsync(this, context, result); + + protected override string GetLogString (IInteractionContext context) + { + if (context.Guild != null) + return $"Slash Command: \"{base.ToString()}\" for {context.User} in {context.Guild}/{context.Channel}"; + else + return $"Slash Command: \"{base.ToString()}\" for {context.User} in {context.Channel}"; + } + } +} diff --git a/src/Discord.Net.Interactions/Info/IApplicationCommandInfo.cs b/src/Discord.Net.Interactions/Info/IApplicationCommandInfo.cs new file mode 100644 index 000000000..1e0d532b0 --- /dev/null +++ b/src/Discord.Net.Interactions/Info/IApplicationCommandInfo.cs @@ -0,0 +1,23 @@ +namespace Discord.Interactions +{ + /// + /// Represents a command that can be registered to Discord. + /// + public interface IApplicationCommandInfo + { + /// + /// Gets the name of this command. + /// + string Name { get; } + + /// + /// Gets the type of this command. + /// + ApplicationCommandType CommandType { get; } + + /// + /// Gets the DefaultPermission of this command. + /// + bool DefaultPermission { get; } + } +} diff --git a/src/Discord.Net.Interactions/Info/ICommandInfo.cs b/src/Discord.Net.Interactions/Info/ICommandInfo.cs new file mode 100644 index 000000000..843d5198b --- /dev/null +++ b/src/Discord.Net.Interactions/Info/ICommandInfo.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + /// + /// Represent a command information object that can be executed. + /// + public interface ICommandInfo + { + /// + /// Gets the name of the command. + /// + string Name { get; } + + /// + /// Gets the name of the command handler method. + /// + string MethodName { get; } + + /// + /// Gets if this command will be registered and executed as a standalone command, unaffected by the s of + /// of the commands parents. + /// + bool IgnoreGroupNames { get; } + + /// + /// Gets wheter this command supports wild card patterns. + /// + bool SupportsWildCards { get; } + + /// + /// Gets if this command is a top level command and none of its parents have a . + /// + bool IsTopLevelCommand { get; } + + /// + /// Gets the module that the method belongs to. + /// + ModuleInfo Module { get; } + + /// + /// Gets the the underlying command service. + /// + InteractionService CommandService { get; } + + /// + /// Get the run mode this command gets executed with. + /// + RunMode RunMode { get; } + + /// + /// Gets a collection of the attributes of this command. + /// + IReadOnlyCollection Attributes { get; } + + /// + /// Gets a collection of the preconditions of this command. + /// + IReadOnlyCollection Preconditions { get; } + + /// + /// Gets a collection of the parameters of this command. + /// + IReadOnlyCollection Parameters { get; } + + /// + /// Executes the command with the provided context. + /// + /// The execution context. + /// Dependencies that will be used to create the module instance. + /// + /// A task representing the execution process. The task result contains the execution result. + /// + Task ExecuteAsync (IInteractionContext context, IServiceProvider services); + + /// + /// Check if an execution context meets the command precondition requirements. + /// + Task CheckPreconditionsAsync (IInteractionContext context, IServiceProvider services); + } +} diff --git a/src/Discord.Net.Interactions/Info/IParameterInfo.cs b/src/Discord.Net.Interactions/Info/IParameterInfo.cs new file mode 100644 index 000000000..8244476e1 --- /dev/null +++ b/src/Discord.Net.Interactions/Info/IParameterInfo.cs @@ -0,0 +1,57 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + /// + /// Represents a parameter. + /// + public interface IParameterInfo + { + /// + /// Gets the command that this parameter belongs to. + /// + ICommandInfo Command { get; } + + /// + /// Gets the name of this parameter. + /// + string Name { get; } + + /// + /// Gets the type of this parameter. + /// + Type ParameterType { get; } + + /// + /// Gets whether this parameter is required. + /// + bool IsRequired { get; } + + /// + /// Gets whether this parameter is marked with a keyword. + /// + bool IsParameterArray { get; } + + /// + /// Gets the default value of this parameter if the parameter is optional. + /// + object DefaultValue { get; } + + /// + /// Gets a list of the attributes this parameter has. + /// + IReadOnlyCollection Attributes { get; } + + /// + /// Gets a list of the preconditions this parameter has. + /// + IReadOnlyCollection Preconditions { get; } + + /// + /// Check if an execution context meets the parameter precondition requirements. + /// + Task CheckPreconditionsAsync (IInteractionContext context, object value, IServiceProvider services); + } +} diff --git a/src/Discord.Net.Interactions/Info/ModuleInfo.cs b/src/Discord.Net.Interactions/Info/ModuleInfo.cs new file mode 100644 index 000000000..8bf367df8 --- /dev/null +++ b/src/Discord.Net.Interactions/Info/ModuleInfo.cs @@ -0,0 +1,217 @@ +using Discord.Interactions.Builders; +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; + +namespace Discord.Interactions +{ + /// + /// Contains the information of a Interactions Module. + /// + public class ModuleInfo + { + internal ILookup GroupedPreconditions { get; } + + /// + /// Gets the underlying command service. + /// + public InteractionService CommandService { get; } + + /// + /// Gets the name of this module class. + /// + public string Name { get; } + + /// + /// Gets the group name of this module, if the module is marked with a . + /// + public string SlashGroupName { get; } + + /// + /// Gets if this module is marked with a . + /// + public bool IsSlashGroup => !string.IsNullOrEmpty(SlashGroupName); + + /// + /// Gets the description of this module if is . + /// + public string Description { get; } + + /// + /// Gets the default Permission of this module. + /// + public bool DefaultPermission { get; } + + /// + /// Gets the collection of Sub Modules of this module. + /// + public IReadOnlyList SubModules { get; } + + /// + /// Gets the Slash Commands that are declared in this module. + /// + public IReadOnlyList SlashCommands { get; } + + /// + /// Gets the Context Commands that are declared in this module. + /// + public IReadOnlyList ContextCommands { get; } + + /// + /// Gets the Component Commands that are declared in this module. + /// + public IReadOnlyCollection ComponentCommands { get; } + + /// + /// Gets the Autocomplete Commands that are declared in this module. + /// + public IReadOnlyCollection AutocompleteCommands { get; } + + /// + /// Gets the declaring type of this module, if is . + /// + public ModuleInfo Parent { get; } + + /// + /// Gets if this module is declared by another . + /// + public bool IsSubModule => Parent != null; + + /// + /// Gets a collection of the attributes of this module. + /// + public IReadOnlyCollection Attributes { get; } + + /// + /// Gets a collection of the preconditions of this module. + /// + public IReadOnlyCollection Preconditions { get; } + + /// + /// Gets if this module has a valid and has no parent with a . + /// + public bool IsTopLevelGroup { get; } + + /// + /// Gets if this module will not be registered by + /// or methods. + /// + public bool DontAutoRegister { get; } + + internal ModuleInfo (ModuleBuilder builder, InteractionService commandService, IServiceProvider services, ModuleInfo parent = null) + { + CommandService = commandService; + + Name = builder.Name; + SlashGroupName = builder.SlashGroupName; + Description = builder.Description; + Parent = parent; + DefaultPermission = builder.DefaultPermission; + SlashCommands = BuildSlashCommands(builder).ToImmutableArray(); + ContextCommands = BuildContextCommands(builder).ToImmutableArray(); + ComponentCommands = BuildComponentCommands(builder).ToImmutableArray(); + AutocompleteCommands = BuildAutocompleteCommands(builder).ToImmutableArray(); + SubModules = BuildSubModules(builder, commandService, services).ToImmutableArray(); + Attributes = BuildAttributes(builder).ToImmutableArray(); + Preconditions = BuildPreconditions(builder).ToImmutableArray(); + IsTopLevelGroup = CheckTopLevel(parent); + DontAutoRegister = builder.DontAutoRegister; + + GroupedPreconditions = Preconditions.ToLookup(x => x.Group, x => x, StringComparer.Ordinal); + } + + private IEnumerable BuildSubModules (ModuleBuilder builder, InteractionService commandService, IServiceProvider services) + { + var result = new List(); + + foreach (Builders.ModuleBuilder moduleBuilder in builder.SubModules) + result.Add(moduleBuilder.Build(commandService, services, this)); + + return result; + } + + private IEnumerable BuildSlashCommands (ModuleBuilder builder) + { + var result = new List(); + + foreach (Builders.SlashCommandBuilder commandBuilder in builder.SlashCommands) + result.Add(commandBuilder.Build(this, CommandService)); + + return result; + } + + private IEnumerable BuildContextCommands (ModuleBuilder builder) + { + var result = new List(); + + foreach (Builders.ContextCommandBuilder commandBuilder in builder.ContextCommands) + result.Add(commandBuilder.Build(this, CommandService)); + + return result; + } + + private IEnumerable BuildComponentCommands (ModuleBuilder builder) + { + var result = new List(); + + foreach (var interactionBuilder in builder.ComponentCommands) + result.Add(interactionBuilder.Build(this, CommandService)); + + return result; + } + + private IEnumerable BuildAutocompleteCommands( ModuleBuilder builder) + { + var result = new List(); + + foreach (var commandBuilder in builder.AutocompleteCommands) + result.Add(commandBuilder.Build(this, CommandService)); + + return result; + } + + private IEnumerable BuildAttributes (ModuleBuilder builder) + { + var result = new List(); + var currentParent = builder; + + while (currentParent != null) + { + result.AddRange(currentParent.Attributes); + currentParent = currentParent.Parent; + } + + return result; + } + + private static IEnumerable BuildPreconditions (ModuleBuilder builder) + { + var preconditions = new List(); + + var parent = builder; + + while (parent != null) + { + preconditions.AddRange(parent.Preconditions); + parent = parent.Parent; + } + + return preconditions; + } + + private static bool CheckTopLevel (ModuleInfo parent) + { + var currentParent = parent; + + while (currentParent != null) + { + if (currentParent.IsTopLevelGroup) + return false; + + currentParent = currentParent.Parent; + } + return true; + } + } +} diff --git a/src/Discord.Net.Interactions/Info/Parameters/CommandParameterInfo.cs b/src/Discord.Net.Interactions/Info/Parameters/CommandParameterInfo.cs new file mode 100644 index 000000000..050cf4230 --- /dev/null +++ b/src/Discord.Net.Interactions/Info/Parameters/CommandParameterInfo.cs @@ -0,0 +1,62 @@ +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + /// + /// Represents the base parameter info class for commands. + /// + public class CommandParameterInfo : IParameterInfo + { + /// + public ICommandInfo Command { get; } + + /// + public string Name { get; } + + /// + public Type ParameterType { get; } + + /// + public bool IsRequired { get; } + + /// + public bool IsParameterArray { get; } + + /// + public object DefaultValue { get; } + + /// + public IReadOnlyCollection Attributes { get; } + + /// + public IReadOnlyCollection Preconditions { get; } + + internal CommandParameterInfo (Builders.IParameterBuilder builder, ICommandInfo command) + { + Command = command; + Name = builder.Name; + ParameterType = builder.ParameterType; + IsRequired = builder.IsRequired; + IsParameterArray = builder.IsParameterArray; + DefaultValue = builder.DefaultValue; + Attributes = builder.Attributes.ToImmutableArray(); + Preconditions = builder.Preconditions.ToImmutableArray(); + } + + /// + public async Task CheckPreconditionsAsync (IInteractionContext context, object value, IServiceProvider services) + { + foreach (var precondition in Preconditions) + { + var result = await precondition.CheckRequirementsAsync(context, this, value, services).ConfigureAwait(false); + if (!result.IsSuccess) + return result; + } + + return PreconditionResult.FromSuccess(); + } + } +} diff --git a/src/Discord.Net.Interactions/Info/Parameters/SlashCommandParameterInfo.cs b/src/Discord.Net.Interactions/Info/Parameters/SlashCommandParameterInfo.cs new file mode 100644 index 000000000..68b63c806 --- /dev/null +++ b/src/Discord.Net.Interactions/Info/Parameters/SlashCommandParameterInfo.cs @@ -0,0 +1,72 @@ +using System.Collections.Generic; +using System.Collections.Immutable; + +namespace Discord.Interactions +{ + /// + /// Represents the parameter info class for commands. + /// + public class SlashCommandParameterInfo : CommandParameterInfo + { + /// + public new SlashCommandInfo Command => base.Command as SlashCommandInfo; + + /// + /// Gets the description of the Slash Command Parameter. + /// + public string Description { get; } + + /// + /// Gets the minimum value permitted for a number type parameter. + /// + public double? MinValue { get; } + + /// + /// Gets the maxmimum value permitted for a number type parameter. + /// + public double? MaxValue { get; } + + /// + /// Gets the that will be used to convert the incoming into + /// . + /// + public TypeConverter TypeConverter { get; } + + /// + /// Gets the thats linked to this parameter. + /// + public IAutocompleteHandler AutocompleteHandler { get; } + + /// + /// Gets whether this parameter is configured for Autocomplete Interactions. + /// + public bool IsAutocomplete { get; } + + /// + /// Gets the Discord option type this parameter represents. + /// + public ApplicationCommandOptionType DiscordOptionType => TypeConverter.GetDiscordType(); + + /// + /// Gets the parameter choices of this Slash Application Command parameter. + /// + public IReadOnlyCollection Choices { get; } + + /// + /// Gets the allowed channel types for this option. + /// + public IReadOnlyCollection ChannelTypes { get; } + + internal SlashCommandParameterInfo(Builders.SlashCommandParameterBuilder builder, SlashCommandInfo command) : base(builder, command) + { + TypeConverter = builder.TypeConverter; + AutocompleteHandler = builder.AutocompleteHandler; + Description = builder.Description; + MaxValue = builder.MaxValue; + MinValue = builder.MinValue; + IsAutocomplete = builder.Autocomplete; + Choices = builder.Choices.ToImmutableArray(); + ChannelTypes = builder.ChannelTypes.ToImmutableArray(); + } + } +} diff --git a/src/Discord.Net.Interactions/InteractionCommandError.cs b/src/Discord.Net.Interactions/InteractionCommandError.cs new file mode 100644 index 000000000..7000e9ab3 --- /dev/null +++ b/src/Discord.Net.Interactions/InteractionCommandError.cs @@ -0,0 +1,43 @@ +namespace Discord.Interactions +{ + /// + /// Defines the type of error a command can throw. + /// + public enum InteractionCommandError + { + /// + /// Thrown when the command is unknown. + /// + UnknownCommand, + + /// + /// Thrown when the Slash Command parameter fails to be converted by a TypeReader. + /// + ConvertFailed, + + /// + /// Thrown when the input text has too few or too many arguments. + /// + BadArgs, + + /// + /// Thrown when an exception occurs mid-command execution. + /// + Exception, + + /// + /// Thrown when the command is not successfully executed on runtime. + /// + Unsuccessful, + + /// + /// Thrown when the command fails to meet a 's conditions. + /// + UnmetPrecondition, + + /// + /// Thrown when the command context cannot be parsed by the . + /// + ParseFailed + } +} diff --git a/src/Discord.Net.Interactions/InteractionContext.cs b/src/Discord.Net.Interactions/InteractionContext.cs new file mode 100644 index 000000000..53cda5871 --- /dev/null +++ b/src/Discord.Net.Interactions/InteractionContext.cs @@ -0,0 +1,34 @@ +namespace Discord.Interactions +{ + /// + public class InteractionContext : IInteractionContext + { + /// + public IDiscordClient Client { get; } + /// + public IGuild Guild { get; } + /// + public IMessageChannel Channel { get; } + /// + public IUser User { get; } + /// + public IDiscordInteraction Interaction { get; } + + /// + /// Initializes a new . + /// + /// The underlying client. + /// The underlying interaction. + /// who executed the command. + /// the command originated from. + public InteractionContext(IDiscordClient client, IDiscordInteraction interaction, IUser user, IMessageChannel channel = null) + { + Client = client; + Interaction = interaction; + Channel = channel; + Guild = (interaction as IGuildUser)?.Guild; + User = user; + Interaction = interaction; + } + } +} diff --git a/src/Discord.Net.Interactions/InteractionModuleBase.cs b/src/Discord.Net.Interactions/InteractionModuleBase.cs new file mode 100644 index 000000000..f0e50da8d --- /dev/null +++ b/src/Discord.Net.Interactions/InteractionModuleBase.cs @@ -0,0 +1,68 @@ +using System; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + /// + /// Provides a base class for a command module to inherit from. + /// + /// Type of interaction context to be injected into the module. + public abstract class InteractionModuleBase : IInteractionModuleBase where T : class, IInteractionContext + { + /// + /// Gets the underlying context of the command. + /// + public T Context { get; private set; } + + /// + public virtual void AfterExecute (ICommandInfo command) { } + + /// + public virtual void BeforeExecute (ICommandInfo command) { } + + /// + public virtual void OnModuleBuilding (InteractionService commandService, ModuleInfo module) { } + + internal void SetContext (IInteractionContext context) + { + var newValue = context as T; + Context = newValue ?? throw new InvalidOperationException($"Invalid context type. Expected {typeof(T).Name}, got {context.GetType().Name}."); + } + + /// + protected virtual async Task DeferAsync(bool ephemeral = false, RequestOptions options = null) => + await Context.Interaction.DeferAsync(ephemeral, options).ConfigureAwait(false); + + /// + protected virtual async Task RespondAsync (string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) => + await Context.Interaction.RespondAsync(text, embeds, isTTS, ephemeral, allowedMentions, component, embed, options).ConfigureAwait(false); + + /// + protected virtual async Task FollowupAsync (string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) => + await Context.Interaction.FollowupAsync(text, embeds, isTTS, ephemeral, allowedMentions, component, embed, options).ConfigureAwait(false); + + /// + protected virtual async Task ReplyAsync (string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, + AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null) => + await Context.Channel.SendMessageAsync(text, false, embed, options, allowedMentions, messageReference, component).ConfigureAwait(false); + + /// + protected virtual async Task DeleteOriginalResponseAsync ( ) + { + var response = await Context.Interaction.GetOriginalResponseAsync().ConfigureAwait(false); + await response.DeleteAsync().ConfigureAwait(false); + } + + //IInteractionModuleBase + + /// + void IInteractionModuleBase.SetContext (IInteractionContext context) => SetContext(context); + } + + /// + /// Provides a base class for a command module to inherit from. + /// + public abstract class InteractionModuleBase : InteractionModuleBase { } +} diff --git a/src/Discord.Net.Interactions/InteractionService.cs b/src/Discord.Net.Interactions/InteractionService.cs new file mode 100644 index 000000000..6c2a70f16 --- /dev/null +++ b/src/Discord.Net.Interactions/InteractionService.cs @@ -0,0 +1,949 @@ +using Discord.Interactions.Builders; +using Discord.Logging; +using Discord.Rest; +using Discord.WebSocket; +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Threading; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + /// + /// Provides the framework for building and registering Discord Application Commands. + /// + public class InteractionService : IDisposable + { + /// + /// Occurs when a Slash Command related information is recieved. + /// + public event Func Log { add { _logEvent.Add(value); } remove { _logEvent.Remove(value); } } + internal readonly AsyncEvent> _logEvent = new (); + + /// + /// Occurs when a Slash Command is executed. + /// + public event Func SlashCommandExecuted { add { _slashCommandExecutedEvent.Add(value); } remove { _slashCommandExecutedEvent.Remove(value); } } + internal readonly AsyncEvent> _slashCommandExecutedEvent = new (); + + /// + /// Occurs when a Context Command is executed. + /// + public event Func ContextCommandExecuted { add { _contextCommandExecutedEvent.Add(value); } remove { _contextCommandExecutedEvent.Remove(value); } } + internal readonly AsyncEvent> _contextCommandExecutedEvent = new (); + + /// + /// Occurs when a Message Component command is executed. + /// + public event Func ComponentCommandExecuted { add { _componentCommandExecutedEvent.Add(value); } remove { _componentCommandExecutedEvent.Remove(value); } } + internal readonly AsyncEvent> _componentCommandExecutedEvent = new (); + + /// + /// Occurs when a Autocomplete command is executed. + /// + public event Func AutocompleteCommandExecuted { add { _autocompleteCommandExecutedEvent.Add(value); } remove { _autocompleteCommandExecutedEvent.Remove(value); } } + internal readonly AsyncEvent> _autocompleteCommandExecutedEvent = new(); + + /// + /// Occurs when a AutocompleteHandler is executed. + /// + public event Func AutocompleteHandlerExecuted { add { _autocompleteHandlerExecutedEvent.Add(value); } remove { _autocompleteHandlerExecutedEvent.Remove(value); } } + internal readonly AsyncEvent> _autocompleteHandlerExecutedEvent = new(); + + private readonly ConcurrentDictionary _typedModuleDefs; + private readonly CommandMap _slashCommandMap; + private readonly ConcurrentDictionary> _contextCommandMaps; + private readonly CommandMap _componentCommandMap; + private readonly CommandMap _autocompleteCommandMap; + private readonly HashSet _moduleDefs; + private readonly ConcurrentDictionary _typeConverters; + private readonly ConcurrentDictionary _genericTypeConverters; + private readonly ConcurrentDictionary _autocompleteHandlers = new(); + private readonly SemaphoreSlim _lock; + internal readonly Logger _cmdLogger; + internal readonly LogManager _logManager; + internal readonly Func _getRestClient; + + internal readonly bool _throwOnError, _deleteUnkownSlashCommandAck, _useCompiledLambda, _enableAutocompleteHandlers; + internal readonly string _wildCardExp; + internal readonly RunMode _runMode; + internal readonly RestResponseCallback _restResponseCallback; + + /// + /// Rest client to be used to register application commands. + /// + public DiscordRestClient RestClient { get => _getRestClient(); } + + /// + /// Represents all modules loaded within . + /// + public IReadOnlyList Modules => _moduleDefs.ToList(); + + /// + /// Represents all Slash Commands loaded within . + /// + public IReadOnlyList SlashCommands => _moduleDefs.SelectMany(x => x.SlashCommands).ToList(); + + /// + /// Represents all Context Commands loaded within . + /// + public IReadOnlyList ContextCommands => _moduleDefs.SelectMany(x => x.ContextCommands).ToList(); + + /// + /// Represents all Component Commands loaded within . + /// + public IReadOnlyCollection ComponentCommands => _moduleDefs.SelectMany(x => x.ComponentCommands).ToList(); + + /// + /// Initialize a with provided configurations. + /// + /// The discord client. + /// The configuration class. + public InteractionService (DiscordSocketClient discord, InteractionServiceConfig config = null) + : this(() => discord.Rest, config ?? new InteractionServiceConfig()) { } + + /// + /// Initialize a with provided configurations. + /// + /// The discord client. + /// The configuration class. + public InteractionService (DiscordShardedClient discord, InteractionServiceConfig config = null) + : this(() => discord.Rest, config ?? new InteractionServiceConfig()) { } + + /// + /// Initialize a with provided configurations. + /// + /// The discord client. + /// The configuration class. + public InteractionService (BaseSocketClient discord, InteractionServiceConfig config = null) + :this(() => discord.Rest, config ?? new InteractionServiceConfig()) { } + + /// + /// Initialize a with provided configurations. + /// + /// The discord client. + /// The configuration class. + public InteractionService (DiscordRestClient discord, InteractionServiceConfig config = null) + :this(() => discord, config ?? new InteractionServiceConfig()) { } + + private InteractionService (Func getRestClient, InteractionServiceConfig config = null) + { + config ??= new InteractionServiceConfig(); + + _lock = new SemaphoreSlim(1, 1); + _typedModuleDefs = new ConcurrentDictionary(); + _moduleDefs = new HashSet(); + + _logManager = new LogManager(config.LogLevel); + _logManager.Message += async msg => await _logEvent.InvokeAsync(msg).ConfigureAwait(false); + _cmdLogger = _logManager.CreateLogger("App Commands"); + + _slashCommandMap = new CommandMap(this); + _contextCommandMaps = new ConcurrentDictionary>(); + _componentCommandMap = new CommandMap(this, config.InteractionCustomIdDelimiters); + _autocompleteCommandMap = new CommandMap(this); + + _getRestClient = getRestClient; + + _runMode = config.DefaultRunMode; + if (_runMode == RunMode.Default) + throw new InvalidOperationException($"RunMode cannot be set to {RunMode.Default}"); + + _throwOnError = config.ThrowOnError; + _deleteUnkownSlashCommandAck = config.DeleteUnknownSlashCommandAck; + _wildCardExp = config.WildCardExpression; + _useCompiledLambda = config.UseCompiledLambda; + _enableAutocompleteHandlers = config.EnableAutocompleteHandlers; + _restResponseCallback = config.RestResponseCallback; + + _genericTypeConverters = new ConcurrentDictionary + { + [typeof(IChannel)] = typeof(DefaultChannelConverter<>), + [typeof(IRole)] = typeof(DefaultRoleConverter<>), + [typeof(IUser)] = typeof(DefaultUserConverter<>), + [typeof(IMentionable)] = typeof(DefaultMentionableConverter<>), + [typeof(IConvertible)] = typeof(DefaultValueConverter<>), + [typeof(Enum)] = typeof(EnumConverter<>) + }; + + _typeConverters = new ConcurrentDictionary + { + [typeof(TimeSpan)] = new TimeSpanConverter() + }; + } + + /// + /// Create and loads a using a builder factory. + /// + /// Name of the module. + /// The for your dependency injection solution if using one; otherwise, pass null. + /// Module builder factory. + /// + /// A task representing the operation for adding modules. The task result contains the built module instance. + /// + public async Task CreateModuleAsync(string name, IServiceProvider services, Action buildFunc) + { + services ??= EmptyServiceProvider.Instance; + + await _lock.WaitAsync().ConfigureAwait(false); + try + { + var builder = new ModuleBuilder(this, name); + buildFunc(builder); + + var moduleInfo = builder.Build(this, services); + LoadModuleInternal(moduleInfo); + + return moduleInfo; + } + finally + { + _lock.Release(); + } + } + + /// + /// Discover and load command modules from an . + /// + /// the command modules are defined in. + /// The for your dependency injection solution if using one; otherwise, pass null. + /// + /// A task representing the operation for adding modules. The task result contains a collection of the modules added. + /// + public async Task> AddModulesAsync (Assembly assembly, IServiceProvider services) + { + services ??= EmptyServiceProvider.Instance; + + await _lock.WaitAsync().ConfigureAwait(false); + + try + { + var types = await ModuleClassBuilder.SearchAsync(assembly, this); + var moduleDefs = await ModuleClassBuilder.BuildAsync(types, this, services); + + foreach (var info in moduleDefs) + { + _typedModuleDefs[info.Key] = info.Value; + LoadModuleInternal(info.Value); + } + return moduleDefs.Values; + } + finally + { + _lock.Release(); + } + } + + /// + /// Add a command module from a . + /// + /// Type of the module. + /// The for your dependency injection solution if using one; otherwise, pass null . + /// + /// A task representing the operation for adding the module. The task result contains the built module. + /// + /// + /// Thrown if this module has already been added. + /// + /// + /// Thrown when the is not a valid module definition. + /// + public Task AddModuleAsync (IServiceProvider services) where T : class => + AddModuleAsync(typeof(T), services); + + /// + /// Add a command module from a . + /// + /// Type of the module. + /// The for your dependency injection solution if using one; otherwise, pass null . + /// + /// A task representing the operation for adding the module. The task result contains the built module. + /// + /// + /// Thrown if this module has already been added. + /// + /// + /// Thrown when the is not a valid module definition. + /// + public async Task AddModuleAsync (Type type, IServiceProvider services) + { + if (!typeof(IInteractionModuleBase).IsAssignableFrom(type)) + throw new ArgumentException("Type parameter must be a type of Slash Module", "T"); + + services ??= EmptyServiceProvider.Instance; + + await _lock.WaitAsync().ConfigureAwait(false); + + try + { + var typeInfo = type.GetTypeInfo(); + + if (_typedModuleDefs.ContainsKey(typeInfo)) + throw new ArgumentException("Module definition for this type already exists."); + + var moduleDef = ( await ModuleClassBuilder.BuildAsync(new List { typeInfo }, this, services).ConfigureAwait(false) ).FirstOrDefault(); + + if (moduleDef.Value == default) + throw new InvalidOperationException($"Could not build the module {typeInfo.FullName}, did you pass an invalid type?"); + + if (!_typedModuleDefs.TryAdd(type, moduleDef.Value)) + throw new ArgumentException("Module definition for this type already exists."); + + _typedModuleDefs[moduleDef.Key] = moduleDef.Value; + LoadModuleInternal(moduleDef.Value); + + return moduleDef.Value; + } + finally + { + _lock.Release(); + } + } + + /// + /// Register Application Commands from and to a guild. + /// + /// Id of the target guild. + /// If , this operation will not delete the commands that are missing from . + /// + /// A task representing the command registration process. The task result contains the active application commands of the target guild. + /// + public async Task> RegisterCommandsToGuildAsync (ulong guildId, bool deleteMissing = true) + { + EnsureClientReady(); + + var topLevelModules = _moduleDefs.Where(x => !x.IsSubModule); + var props = topLevelModules.SelectMany(x => x.ToApplicationCommandProps()).ToList(); + + if (!deleteMissing) + { + + var existing = await RestClient.GetGuildApplicationCommands(guildId).ConfigureAwait(false); + var missing = existing.Where(x => !props.Any(y => y.Name.IsSpecified && y.Name.Value == x.Name)); + props.AddRange(missing.Select(x => x.ToApplicationCommandProps())); + } + + return await RestClient.BulkOverwriteGuildCommands(props.ToArray(), guildId).ConfigureAwait(false); + } + + /// + /// Register Application Commands from and to Discord on in global scope. + /// + /// If , this operation will not delete the commands that are missing from . + /// + /// A task representing the command registration process. The task result contains the active global application commands of bot. + /// + public async Task> RegisterCommandsGloballyAsync (bool deleteMissing = true) + { + EnsureClientReady(); + + var topLevelModules = _moduleDefs.Where(x => !x.IsSubModule); + var props = topLevelModules.SelectMany(x => x.ToApplicationCommandProps()).ToList(); + + if (!deleteMissing) + { + var existing = await RestClient.GetGlobalApplicationCommands().ConfigureAwait(false); + var missing = existing.Where(x => !props.Any(y => y.Name.IsSpecified && y.Name.Value == x.Name)); + props.AddRange(missing.Select(x => x.ToApplicationCommandProps())); + } + + return await RestClient.BulkOverwriteGlobalCommands(props.ToArray()).ConfigureAwait(false); + } + + /// + /// Register Application Commands from to a guild. + /// + /// + /// Commands will be registered as standalone commands, if you want the to take effect, + /// use . Registering a commands without group names might cause the command traversal to fail. + /// + /// The target guild. + /// Commands to be registered to Discord. + /// + /// A task representing the command registration process. The task result contains the active application commands of the target guild. + /// + public async Task> AddCommandsToGuildAsync(IGuild guild, bool deleteMissing = false, params ICommandInfo[] commands) + { + EnsureClientReady(); + + if (guild is null) + throw new ArgumentNullException(nameof(guild)); + + var props = new List(); + + foreach (var command in commands) + { + switch (command) + { + case SlashCommandInfo slashCommand: + props.Add(slashCommand.ToApplicationCommandProps()); + break; + case ContextCommandInfo contextCommand: + props.Add(contextCommand.ToApplicationCommandProps()); + break; + default: + throw new InvalidOperationException($"Command type {command.GetType().FullName} isn't supported yet"); + } + } + + if (!deleteMissing) + { + var existing = await RestClient.GetGuildApplicationCommands(guild.Id).ConfigureAwait(false); + var missing = existing.Where(x => !props.Any(y => y.Name.IsSpecified && y.Name.Value == x.Name)); + props.AddRange(missing.Select(x => x.ToApplicationCommandProps())); + } + + return await RestClient.BulkOverwriteGuildCommands(props.ToArray(), guild.Id).ConfigureAwait(false); + } + + /// + /// Register Application Commands from modules provided in to a guild. + /// + /// The target guild. + /// Modules to be registered to Discord. + /// + /// A task representing the command registration process. The task result contains the active application commands of the target guild. + /// + public async Task> AddModulesToGuildAsync(IGuild guild, bool deleteMissing = false, params ModuleInfo[] modules) + { + EnsureClientReady(); + + if (guild is null) + throw new ArgumentNullException(nameof(guild)); + + var props = modules.SelectMany(x => x.ToApplicationCommandProps(true)).ToList(); + + if (!deleteMissing) + { + var existing = await RestClient.GetGuildApplicationCommands(guild.Id).ConfigureAwait(false); + var missing = existing.Where(x => !props.Any(y => y.Name.IsSpecified && y.Name.Value == x.Name)); + props.AddRange(missing.Select(x => x.ToApplicationCommandProps())); + } + + return await RestClient.BulkOverwriteGuildCommands(props.ToArray(), guild.Id).ConfigureAwait(false); + } + + /// + /// Register Application Commands from modules provided in as global commands. + /// + /// Modules to be registered to Discord. + /// + /// A task representing the command registration process. The task result contains the active application commands of the target guild. + /// + public async Task> AddModulesGloballyAsync(bool deleteMissing = false, params ModuleInfo[] modules) + { + EnsureClientReady(); + + var props = modules.SelectMany(x => x.ToApplicationCommandProps(true)).ToList(); + + if (!deleteMissing) + { + var existing = await RestClient.GetGlobalApplicationCommands().ConfigureAwait(false); + var missing = existing.Where(x => !props.Any(y => y.Name.IsSpecified && y.Name.Value == x.Name)); + props.AddRange(missing.Select(x => x.ToApplicationCommandProps())); + } + + return await RestClient.BulkOverwriteGlobalCommands(props.ToArray()).ConfigureAwait(false); + } + + /// + /// Register Application Commands from as global commands. + /// + /// + /// Commands will be registered as standalone commands, if you want the to take effect, + /// use . Registering a commands without group names might cause the command traversal to fail. + /// + /// Commands to be registered to Discord. + /// + /// A task representing the command registration process. The task result contains the active application commands of the target guild. + /// + public async Task> AddCommandsGloballyAsync(bool deleteMissing = false, params IApplicationCommandInfo[] commands) + { + EnsureClientReady(); + + var props = new List(); + + foreach (var command in commands) + { + switch (command) + { + case SlashCommandInfo slashCommand: + props.Add(slashCommand.ToApplicationCommandProps()); + break; + case ContextCommandInfo contextCommand: + props.Add(contextCommand.ToApplicationCommandProps()); + break; + default: + throw new InvalidOperationException($"Command type {command.GetType().FullName} isn't supported yet"); + } + } + + if (!deleteMissing) + { + var existing = await RestClient.GetGlobalApplicationCommands().ConfigureAwait(false); + var missing = existing.Where(x => !props.Any(y => y.Name.IsSpecified && y.Name.Value == x.Name)); + props.AddRange(missing.Select(x => x.ToApplicationCommandProps())); + } + + return await RestClient.BulkOverwriteGlobalCommands(props.ToArray()).ConfigureAwait(false); + } + + private void LoadModuleInternal (ModuleInfo module) + { + _moduleDefs.Add(module); + + foreach (var command in module.SlashCommands) + _slashCommandMap.AddCommand(command, command.IgnoreGroupNames); + + foreach (var command in module.ContextCommands) + _contextCommandMaps.GetOrAdd(command.CommandType, new CommandMap(this)).AddCommand(command, command.IgnoreGroupNames); + + foreach (var interaction in module.ComponentCommands) + _componentCommandMap.AddCommand(interaction, interaction.IgnoreGroupNames); + + foreach (var command in module.AutocompleteCommands) + _autocompleteCommandMap.AddCommand(command.GetCommandKeywords(), command); + + foreach (var subModule in module.SubModules) + LoadModuleInternal(subModule); + } + + /// + /// Remove a command module. + /// + /// The of the module. + /// + /// A task that represents the asynchronous removal operation. The task result contains a value that + /// indicates whether the module is successfully removed. + /// + public Task RemoveModuleAsync ( ) => + RemoveModuleAsync(typeof(T)); + + /// + /// Remove a command module. + /// + /// The of the module. + /// + /// A task that represents the asynchronous removal operation. The task result contains a value that + /// indicates whether the module is successfully removed. + /// + public async Task RemoveModuleAsync (Type type) + { + await _lock.WaitAsync().ConfigureAwait(false); + + try + { + if (!_typedModuleDefs.TryRemove(type, out var module)) + return false; + + return RemoveModuleInternal(module); + } + finally + { + _lock.Release(); + } + } + + /// + /// Remove a command module. + /// + /// The to be removed from the service. + /// + /// A task that represents the asynchronous removal operation. The task result contains a value that + /// indicates whether the is successfully removed. + /// + public async Task RemoveModuleAsync(ModuleInfo module) + { + await _lock.WaitAsync().ConfigureAwait(false); + + try + { + var typeModulePair = _typedModuleDefs.FirstOrDefault(x => x.Value.Equals(module)); + + if (!typeModulePair.Equals(default(KeyValuePair))) + _typedModuleDefs.TryRemove(typeModulePair.Key, out var _); + + return RemoveModuleInternal(module); + } + finally + { + _lock.Release(); + } + } + + private bool RemoveModuleInternal (ModuleInfo moduleInfo) + { + if (!_moduleDefs.Remove(moduleInfo)) + return false; + + foreach (var command in moduleInfo.SlashCommands) + { + _slashCommandMap.RemoveCommand(command); + } + + return true; + } + + /// + /// Execute a Command from a given . + /// + /// Name context of the command. + /// The service to be used in the command's dependency injection. + /// + /// A task representing the command execution process. The task result contains the result of the execution. + /// + public async Task ExecuteCommandAsync (IInteractionContext context, IServiceProvider services) + { + var interaction = context.Interaction; + + return interaction switch + { + ISlashCommandInteraction slashCommand => await ExecuteSlashCommandAsync(context, slashCommand, services).ConfigureAwait(false), + IComponentInteraction messageComponent => await ExecuteComponentCommandAsync(context, messageComponent.Data.CustomId, services).ConfigureAwait(false), + IUserCommandInteraction userCommand => await ExecuteContextCommandAsync(context, userCommand.Data.Name, ApplicationCommandType.User, services).ConfigureAwait(false), + IMessageCommandInteraction messageCommand => await ExecuteContextCommandAsync(context, messageCommand.Data.Name, ApplicationCommandType.Message, services).ConfigureAwait(false), + IAutocompleteInteraction autocomplete => await ExecuteAutocompleteAsync(context, autocomplete, services).ConfigureAwait(false), + _ => throw new InvalidOperationException($"{interaction.Type} interaction type cannot be executed by the Interaction service"), + }; + } + + private async Task ExecuteSlashCommandAsync (IInteractionContext context, ISlashCommandInteraction interaction, IServiceProvider services) + { + var keywords = interaction.Data.GetCommandKeywords(); + + var result = _slashCommandMap.GetCommand(keywords); + + if (!result.IsSuccess) + { + await _cmdLogger.DebugAsync($"Unknown slash command, skipping execution ({string.Join(" ", keywords).ToUpper()})"); + + if (_deleteUnkownSlashCommandAck) + { + var response = await context.Interaction.GetOriginalResponseAsync().ConfigureAwait(false); + await response.DeleteAsync().ConfigureAwait(false); + } + + await _slashCommandExecutedEvent.InvokeAsync(null, context, result).ConfigureAwait(false); + return result; + } + return await result.Command.ExecuteAsync(context, services).ConfigureAwait(false); + } + + private async Task ExecuteContextCommandAsync (IInteractionContext context, string input, ApplicationCommandType commandType, IServiceProvider services) + { + if (!_contextCommandMaps.TryGetValue(commandType, out var map)) + return SearchResult.FromError(input, InteractionCommandError.UnknownCommand, $"No {commandType} command found."); + + var result = map.GetCommand(input); + + if (!result.IsSuccess) + { + await _cmdLogger.DebugAsync($"Unknown context command, skipping execution ({result.Text.ToUpper()})"); + + await _contextCommandExecutedEvent.InvokeAsync(null, context, result).ConfigureAwait(false); + return result; + } + return await result.Command.ExecuteAsync(context, services).ConfigureAwait(false); + } + + private async Task ExecuteComponentCommandAsync (IInteractionContext context, string input, IServiceProvider services) + { + var result = _componentCommandMap.GetCommand(input); + + if (!result.IsSuccess) + { + await _cmdLogger.DebugAsync($"Unknown custom interaction id, skipping execution ({input.ToUpper()})"); + + await _componentCommandExecutedEvent.InvokeAsync(null, context, result).ConfigureAwait(false); + return result; + } + return await result.Command.ExecuteAsync(context, services, result.RegexCaptureGroups).ConfigureAwait(false); + } + + private async Task ExecuteAutocompleteAsync (IInteractionContext context, IAutocompleteInteraction interaction, IServiceProvider services ) + { + var keywords = interaction.Data.GetCommandKeywords(); + + if(_enableAutocompleteHandlers) + { + var autocompleteHandlerResult = _slashCommandMap.GetCommand(keywords); + + if(autocompleteHandlerResult.IsSuccess) + { + var parameter = autocompleteHandlerResult.Command.Parameters.FirstOrDefault(x => string.Equals(x.Name, interaction.Data.Current.Name, StringComparison.Ordinal)); + + if(parameter?.AutocompleteHandler is not null) + return await parameter.AutocompleteHandler.ExecuteAsync(context, interaction, parameter, services).ConfigureAwait(false); + } + } + + keywords.Add(interaction.Data.Current.Name); + + var commandResult = _autocompleteCommandMap.GetCommand(keywords); + + if(!commandResult.IsSuccess) + { + await _cmdLogger.DebugAsync($"Unknown command name, skipping autocomplete process ({interaction.Data.CommandName.ToUpper()})"); + + await _autocompleteCommandExecutedEvent.InvokeAsync(null, context, commandResult).ConfigureAwait(false); + return commandResult; + } + + return await commandResult.Command.ExecuteAsync(context, services).ConfigureAwait(false); + } + + internal TypeConverter GetTypeConverter (Type type, IServiceProvider services = null) + { + if (_typeConverters.TryGetValue(type, out var specific)) + return specific; + + else if (_genericTypeConverters.Any(x => x.Key.IsAssignableFrom(type))) + { + services ??= EmptyServiceProvider.Instance; + + var converterType = GetMostSpecificTypeConverter(type); + var converter = ReflectionUtils.CreateObject(converterType.MakeGenericType(type).GetTypeInfo(), this, services); + _typeConverters[type] = converter; + return converter; + } + + else if (_typeConverters.Any(x => x.Value.CanConvertTo(type))) + return _typeConverters.First(x => x.Value.CanConvertTo(type)).Value; + + throw new ArgumentException($"No type {nameof(TypeConverter)} is defined for this {type.FullName}", "type"); + } + + /// + /// Add a concrete type . + /// + /// Primary target of the . + /// The instance. + public void AddTypeConverter (TypeConverter converter) => + AddTypeConverter(typeof(T), converter); + + /// + /// Add a concrete type . + /// + /// Primary target of the . + /// The instance. + public void AddTypeConverter (Type type, TypeConverter converter) + { + if (!converter.CanConvertTo(type)) + throw new ArgumentException($"This {converter.GetType().FullName} cannot read {type.FullName} and cannot be registered as its {nameof(TypeConverter)}"); + + _typeConverters[type] = converter; + } + + /// + /// Add a generic type . + /// + /// Generic Type constraint of the of the . + /// Type of the . + + public void AddGenericTypeConverter (Type converterType) => + AddGenericTypeConverter(typeof(T), converterType); + + /// + /// Add a generic type . + /// + /// Generic Type constraint of the of the . + /// Type of the . + public void AddGenericTypeConverter (Type targetType, Type converterType) + { + if (!converterType.IsGenericTypeDefinition) + throw new ArgumentException($"{converterType.FullName} is not generic."); + + var genericArguments = converterType.GetGenericArguments(); + + if (genericArguments.Count() > 1) + throw new InvalidOperationException($"Valid generic {converterType.FullName}s cannot have more than 1 generic type parameter"); + + var constraints = genericArguments.SelectMany(x => x.GetGenericParameterConstraints()); + + if (!constraints.Any(x => x.IsAssignableFrom(targetType))) + throw new InvalidOperationException($"This generic class does not support type {targetType.FullName}"); + + _genericTypeConverters[targetType] = converterType; + } + + internal IAutocompleteHandler GetAutocompleteHandler(Type autocompleteHandlerType, IServiceProvider services = null) + { + services ??= EmptyServiceProvider.Instance; + + if (!_enableAutocompleteHandlers) + throw new InvalidOperationException($"{nameof(IAutocompleteHandler)}s are not enabled. To use this feature set {nameof(InteractionServiceConfig.EnableAutocompleteHandlers)} to TRUE"); + + if (_autocompleteHandlers.TryGetValue(autocompleteHandlerType, out var autocompleteHandler)) + return autocompleteHandler; + else + { + autocompleteHandler = ReflectionUtils.CreateObject(autocompleteHandlerType.GetTypeInfo(), this, services); + _autocompleteHandlers[autocompleteHandlerType] = autocompleteHandler; + return autocompleteHandler; + } + } + + /// + /// Modify the command permissions of the matching Discord Slash Command. + /// + /// Module representing the top level Slash Command. + /// Target guild. + /// New permission values. + /// + /// The active command permissions after the modification. + /// + public async Task ModifySlashCommandPermissionsAsync (ModuleInfo module, IGuild guild, + params ApplicationCommandPermission[] permissions) + { + if (!module.IsSlashGroup) + throw new InvalidOperationException($"This module does not have a {nameof(GroupAttribute)} and does not represent an Application Command"); + + if (!module.IsTopLevelGroup) + throw new InvalidOperationException("This module is not a top level application command. You cannot change its permissions"); + + if (guild is null) + throw new ArgumentNullException("guild"); + + var commands = await RestClient.GetGuildApplicationCommands(guild.Id).ConfigureAwait(false); + var appCommand = commands.First(x => x.Name == module.SlashGroupName); + + return await appCommand.ModifyCommandPermissions(permissions).ConfigureAwait(false); + } + + /// + /// Modify the command permissions of the matching Discord Slash Command. + /// + /// The Slash Command. + /// Target guild. + /// New permission values. + /// + /// The active command permissions after the modification. + /// + public async Task ModifySlashCommandPermissionsAsync (SlashCommandInfo command, IGuild guild, + params ApplicationCommandPermission[] permissions) => + await ModifyApplicationCommandPermissionsAsync(command, guild, permissions).ConfigureAwait(false); + + /// + /// Modify the command permissions of the matching Discord Slash Command. + /// + /// The Context Command. + /// Target guild. + /// New permission values. + /// + /// The active command permissions after the modification. + /// + public async Task ModifyContextCommandPermissionsAsync (ContextCommandInfo command, IGuild guild, + params ApplicationCommandPermission[] permissions) => + await ModifyApplicationCommandPermissionsAsync(command, guild, permissions).ConfigureAwait(false); + + private async Task ModifyApplicationCommandPermissionsAsync (T command, IGuild guild, + params ApplicationCommandPermission[] permissions) where T : class, IApplicationCommandInfo, ICommandInfo + { + if (!command.IsTopLevelCommand) + throw new InvalidOperationException("This command is not a top level application command. You cannot change its permissions"); + + if (guild is null) + throw new ArgumentNullException("guild"); + + var commands = await RestClient.GetGuildApplicationCommands(guild.Id).ConfigureAwait(false); + var appCommand = commands.First(x => x.Name == ( command as IApplicationCommandInfo ).Name); + + return await appCommand.ModifyCommandPermissions(permissions).ConfigureAwait(false); + } + + /// + /// Gets a . + /// + /// Declaring module type of this command, must be a type of . + /// Method name of the handler, use of is recommended. + /// + /// instance for this command. + /// + /// Module or Slash Command couldn't be found. + public SlashCommandInfo GetSlashCommandInfo (string methodName) where TModule : class + { + var module = GetModuleInfo(); + + return module.SlashCommands.First(x => x.MethodName == methodName); + } + + /// + /// Gets a . + /// + /// Declaring module type of this command, must be a type of . + /// Method name of the handler, use of is recommended. + /// + /// instance for this command. + /// + /// Module or Context Command couldn't be found. + public ContextCommandInfo GetContextCommandInfo (string methodName) where TModule : class + { + var module = GetModuleInfo(); + + return module.ContextCommands.First(x => x.MethodName == methodName); + } + + /// + /// Gets a . + /// + /// Declaring module type of this command, must be a type of . + /// Method name of the handler, use of is recommended. + /// + /// instance for this command. + /// + /// Module or Component Command couldn't be found. + public ComponentCommandInfo GetComponentCommandInfo (string methodName) where TModule : class + { + var module = GetModuleInfo(); + + return module.ComponentCommands.First(x => x.MethodName == methodName); + } + + /// + /// Gets a built . + /// + /// Type of the module, must be a type of . + /// + /// instance for this module. + /// + public ModuleInfo GetModuleInfo ( ) where TModule : class + { + if (!typeof(IInteractionModuleBase).IsAssignableFrom(typeof(TModule))) + throw new ArgumentException("Type parameter must be a type of Slash Module", "TModule"); + + var module = _typedModuleDefs[typeof(TModule)]; + + if (module is null) + throw new InvalidOperationException($"{typeof(TModule).FullName} is not loaded to the Slash Command Service"); + + return module; + } + + /// + public void Dispose ( ) + { + _lock.Dispose(); + } + + private Type GetMostSpecificTypeConverter (Type type) + { + if (_genericTypeConverters.TryGetValue(type, out var matching)) + return matching; + + var typeInterfaces = type.GetInterfaces(); + var candidates = _genericTypeConverters.Where(x => x.Key.IsAssignableFrom(type)) + .OrderByDescending(x => typeInterfaces.Count(y => y.IsAssignableFrom(x.Key))); + + return candidates.First().Value; + } + + private void EnsureClientReady() + { + if (RestClient?.CurrentUser is null || RestClient?.CurrentUser?.Id == 0) + throw new InvalidOperationException($"Provided client is not ready to execute this operation, invoke this operation after a `Client Ready` event"); + } + } +} diff --git a/src/Discord.Net.Interactions/InteractionServiceConfig.cs b/src/Discord.Net.Interactions/InteractionServiceConfig.cs new file mode 100644 index 000000000..8e495a5ca --- /dev/null +++ b/src/Discord.Net.Interactions/InteractionServiceConfig.cs @@ -0,0 +1,70 @@ +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + /// + /// Represents a configuration class for . + /// + public class InteractionServiceConfig + { + /// + /// Gets or sets the minimum log level severity that will be sent to the event. + /// + public LogSeverity LogLevel { get; set; } = LogSeverity.Info; + + /// + /// Gets or sets the default commands should have, if one is not specified on the + /// Command attribute or builder. + /// + public RunMode DefaultRunMode { get; set; } = RunMode.Async; + + /// + /// Gets or sets whether commands should push exceptions up to the caller. + /// + public bool ThrowOnError { get; set; } = true; + + /// + /// Gets or sets the delimiters that will be used to seperate group names and the method name when a Message Component Interaction is recieved. + /// + public char[] InteractionCustomIdDelimiters { get; set; } + + /// + /// Gets or sets the string expression that will be treated as a wild card. + /// + public string WildCardExpression { get; set; } + + /// + /// Gets or sets the option to delete Slash Command acknowledgements if no Slash Command handler is found in the . + /// + public bool DeleteUnknownSlashCommandAck { get; set; } = true; + + /// + /// Gets or sets the option to use compiled lambda expressions to create module instances and execute commands. This method improves performance at the cost of memory. + /// + public bool UseCompiledLambda { get; set; } = false; + + /// + /// Gets or sets the option allowing you to use s. + /// + /// + /// Since s are prioritized over s, if s are not used, this should be + /// disabled to decrease the lookup time. + /// + public bool EnableAutocompleteHandlers { get; set; } = true; + + /// + /// Gets or sets delegate to be used by the when responding to a Rest based interaction. + /// + public RestResponseCallback RestResponseCallback { get; set; } = (ctx, str) => Task.CompletedTask; + } + + /// + /// Represents a cached delegate for creating interaction responses to webhook based Discord Interactions. + /// + /// Execution context that will be injected into the module class. + /// Body of the interaction response. + /// + /// A task representing the response operation. + /// + public delegate Task RestResponseCallback(IInteractionContext context, string responseBody); +} diff --git a/src/Discord.Net.Interactions/Map/CommandMap.cs b/src/Discord.Net.Interactions/Map/CommandMap.cs new file mode 100644 index 000000000..2e7bf5368 --- /dev/null +++ b/src/Discord.Net.Interactions/Map/CommandMap.cs @@ -0,0 +1,87 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Discord.Interactions +{ + internal class CommandMap where T : class, ICommandInfo + { + private readonly char[] _seperators; + + private readonly CommandMapNode _root; + private readonly InteractionService _commandService; + + public IReadOnlyCollection Seperators => _seperators; + + public CommandMap(InteractionService commandService, char[] seperators = null) + { + _seperators = seperators ?? Array.Empty(); + + _commandService = commandService; + _root = new CommandMapNode(null, _commandService._wildCardExp); + } + + public void AddCommand(T command, bool ignoreGroupNames = false) + { + if (ignoreGroupNames) + AddCommandToRoot(command); + else + AddCommand(command); + } + + public void AddCommandToRoot(T command) + { + string[] key = new string[] { command.Name }; + _root.AddCommand(key, 0, command); + } + + public void AddCommand(IList input, T command) + { + _root.AddCommand(input, 0, command); + } + + public void RemoveCommand(T command) + { + var key = ParseCommandName(command); + + _root.RemoveCommand(key, 0); + } + + public SearchResult GetCommand(string input) + { + if(_seperators.Any()) + return GetCommand(input.Split(_seperators)); + else + return GetCommand(new string[] { input }); + } + + public SearchResult GetCommand(IList input) => + _root.GetCommand(input, 0); + + private void AddCommand(T command) + { + var key = ParseCommandName(command); + + _root.AddCommand(key, 0, command); + } + + private IList ParseCommandName(T command) + { + var keywords = new List() { command.Name }; + + var currentParent = command.Module; + + while (currentParent != null) + { + if (!string.IsNullOrEmpty(currentParent.SlashGroupName)) + keywords.Add(currentParent.SlashGroupName); + + currentParent = currentParent.Parent; + } + + keywords.Reverse(); + + return keywords; + } + } +} diff --git a/src/Discord.Net.Interactions/Map/CommandMapNode.cs b/src/Discord.Net.Interactions/Map/CommandMapNode.cs new file mode 100644 index 000000000..c866fe00e --- /dev/null +++ b/src/Discord.Net.Interactions/Map/CommandMapNode.cs @@ -0,0 +1,113 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Text.RegularExpressions; + +namespace Discord.Interactions +{ + internal class CommandMapNode where T : class, ICommandInfo + { + private const string RegexWildCardExp = "(\\S+)?"; + + private readonly string _wildCardStr = "*"; + private readonly ConcurrentDictionary> _nodes; + private readonly ConcurrentDictionary _commands; + private readonly ConcurrentDictionary _wildCardCommands; + + public IReadOnlyDictionary> Nodes => _nodes; + public IReadOnlyDictionary Commands => _commands; + public IReadOnlyDictionary WildCardCommands => _wildCardCommands; + public string Name { get; } + + public CommandMapNode (string name, string wildCardExp = null) + { + Name = name; + _nodes = new ConcurrentDictionary>(); + _commands = new ConcurrentDictionary(); + _wildCardCommands = new ConcurrentDictionary(); + + if (!string.IsNullOrEmpty(wildCardExp)) + _wildCardStr = wildCardExp; + } + + public void AddCommand (IList keywords, int index, T commandInfo) + { + if (keywords.Count == index + 1) + { + if (commandInfo.SupportsWildCards && commandInfo.Name.Contains(_wildCardStr)) + { + var escapedStr = RegexUtils.EscapeExcluding(commandInfo.Name, _wildCardStr.ToArray()); + var patternStr = "\\A" + escapedStr.Replace(_wildCardStr, RegexWildCardExp) + "\\Z"; + var regex = new Regex(patternStr, RegexOptions.Singleline | RegexOptions.Compiled); + + if (!_wildCardCommands.TryAdd(regex, commandInfo)) + throw new InvalidOperationException($"A {typeof(T).FullName} already exists with the same name: {string.Join(" ", keywords)}"); + } + else + { + if (!_commands.TryAdd(keywords[index], commandInfo)) + throw new InvalidOperationException($"A {typeof(T).FullName} already exists with the same name: {string.Join(" ", keywords)}"); + } + } + else + { + var node = _nodes.GetOrAdd(keywords[index], (key) => new CommandMapNode(key, _wildCardStr)); + node.AddCommand(keywords, ++index, commandInfo); + } + } + + public bool RemoveCommand (IList keywords, int index) + { + if (keywords.Count == index + 1) + return _commands.TryRemove(keywords[index], out var _); + else + { + if (!_nodes.TryGetValue(keywords[index], out var node)) + throw new InvalidOperationException($"No descendant node was found with the name {keywords[index]}"); + + return node.RemoveCommand(keywords, ++index); + } + } + + public SearchResult GetCommand (IList keywords, int index) + { + string name = string.Join(" ", keywords); + + if (keywords.Count == index + 1) + { + if (_commands.TryGetValue(keywords[index], out var cmd)) + return SearchResult.FromSuccess(name, cmd); + else + { + foreach (var cmdPair in _wildCardCommands) + { + var match = cmdPair.Key.Match(keywords[index]); + if (match.Success) + { + var args = new string[match.Groups.Count - 1]; + + for (var i = 1; i < match.Groups.Count; i++) + args[i - 1] = match.Groups[i].Value; + + return SearchResult.FromSuccess(name, cmdPair.Value, args.ToArray()); + } + } + } + } + else + { + if (_nodes.TryGetValue(keywords[index], out var node)) + return node.GetCommand(keywords, ++index); + } + + return SearchResult.FromError(name, InteractionCommandError.UnknownCommand, $"No {typeof(T).FullName} found for {name}"); + } + + public SearchResult GetCommand (string text, int index, char[] seperators) + { + var keywords = text.Split(seperators); + return GetCommand(keywords, index); + } + } +} diff --git a/src/Discord.Net.Interactions/RestInteractionModuleBase.cs b/src/Discord.Net.Interactions/RestInteractionModuleBase.cs new file mode 100644 index 000000000..ee1ce229e --- /dev/null +++ b/src/Discord.Net.Interactions/RestInteractionModuleBase.cs @@ -0,0 +1,59 @@ +using Discord.Rest; +using System; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + /// + /// Provides a base class for a Rest based command module to inherit from. + /// + /// Type of interaction context to be injected into the module. + public abstract class RestInteractionModuleBase : InteractionModuleBase + where T : class, IInteractionContext + { + /// + /// Gets or sets the underlying Interaction Service. + /// + public InteractionService InteractionService { get; set; } + + /// + /// Defer a Rest based Discord Interaction using the delegate. + /// + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The request options for this response. + /// + /// A Task representing the operation of creating the interaction response. + /// + /// Thrown if the interaction isn't a type of . + protected override async Task DeferAsync(bool ephemeral = false, RequestOptions options = null) + { + if (Context.Interaction is not RestInteraction restInteraction) + throw new InvalidOperationException($"Invalid interaction type. Interaction must be a type of {nameof(RestInteraction)} in order to execute this method"); + + await InteractionService._restResponseCallback(Context, restInteraction.Defer(ephemeral, options)).ConfigureAwait(false); + } + + /// + /// Respond to a Rest based Discord Interaction using the delegate. + /// + /// The text of the message to be sent. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// The request options for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// + /// A Task representing the operation of creating the interaction response. + /// + /// Thrown if the interaction isn't a type of . + protected override async Task RespondAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) + { + if (Context.Interaction is not RestInteraction restInteraction) + throw new InvalidOperationException($"Invalid interaction type. Interaction must be a type of {nameof(RestInteraction)} in order to execute this method"); + + await InteractionService._restResponseCallback(Context, restInteraction.Respond(text, embeds, isTTS, ephemeral, allowedMentions, component, embed, options)).ConfigureAwait(false); + } + } +} diff --git a/src/Discord.Net.Interactions/Results/AutocompletionResult.cs b/src/Discord.Net.Interactions/Results/AutocompletionResult.cs new file mode 100644 index 000000000..2dc9f93be --- /dev/null +++ b/src/Discord.Net.Interactions/Results/AutocompletionResult.cs @@ -0,0 +1,99 @@ +using System; +using System.Collections.Generic; +using System.Collections.Immutable; + +namespace Discord.Interactions +{ + /// + /// Contains the information of a Autocomplete Interaction result. + /// + public struct AutocompletionResult : IResult + { + /// + public InteractionCommandError? Error { get; } + + /// + public string ErrorReason { get; } + + /// + public bool IsSuccess => Error is null; + + /// + /// Get the collection of Autocomplete suggestions to be displayed to the user. + /// + public IReadOnlyCollection Suggestions { get; } + + private AutocompletionResult(IEnumerable suggestions, InteractionCommandError? error, string reason) + { + Suggestions = suggestions?.ToImmutableArray(); + Error = error; + ErrorReason = reason; + } + + /// + /// Initializes a new with no error and without any indicating the command service shouldn't + /// return any suggestions. + /// + /// + /// A that does not contain any errors. + /// + public static AutocompletionResult FromSuccess() => + new AutocompletionResult(null, null, null); + + /// + /// Initializes a new with no error. + /// + /// Autocomplete suggestions to be displayed to the user + /// + /// A that does not contain any errors. + /// + public static AutocompletionResult FromSuccess(IEnumerable suggestions) => + new AutocompletionResult(suggestions, null, null); + + /// + /// Initializes a new with a specified result; this may or may not be an + /// successful execution depending on the and + /// specified. + /// + /// The result to inherit from. + /// + /// A that inherits the error type and reason. + /// + public static AutocompletionResult FromError(IResult result) => + new AutocompletionResult(null, result.Error, result.ErrorReason); + + /// + /// Initializes a new with a specified exception, indicating an unsuccessful + /// execution. + /// + /// The exception that caused the autocomplete process to fail. + /// + /// A that contains the exception that caused the unsuccessful execution, along + /// with a of type as well as the exception message as the + /// reason. + /// + public static AutocompletionResult FromError(Exception exception) => + new AutocompletionResult(null, InteractionCommandError.Exception, exception.Message); + + /// + /// Initializes a new with a specified and its + /// reason, indicating an unsuccessful execution. + /// + /// The type of error. + /// The reason behind the error. + /// + /// A that contains a and reason. + /// + public static AutocompletionResult FromError(InteractionCommandError error, string reason) => + new AutocompletionResult(null, error, reason); + + /// + /// Gets a string that indicates the autocompletion result. + /// + /// + /// Success if is true; otherwise ": + /// ". + /// + public override string ToString() => IsSuccess ? "Success" : $"{Error}: {ErrorReason}"; + } +} diff --git a/src/Discord.Net.Interactions/Results/ExecuteResult.cs b/src/Discord.Net.Interactions/Results/ExecuteResult.cs new file mode 100644 index 000000000..ad2ccd1d3 --- /dev/null +++ b/src/Discord.Net.Interactions/Results/ExecuteResult.cs @@ -0,0 +1,86 @@ +using System; + +namespace Discord.Interactions +{ + /// + /// Contains information of the command's overall execution result. + /// + public struct ExecuteResult : IResult + { + /// + /// Gets the exception that may have occurred during the command execution. + /// + public Exception Exception { get; } + + /// + public InteractionCommandError? Error { get; } + + /// + public string ErrorReason { get; } + + /// + public bool IsSuccess => !Error.HasValue; + + private ExecuteResult (Exception exception, InteractionCommandError? commandError, string errorReason) + { + Exception = exception; + Error = commandError; + ErrorReason = errorReason; + } + + /// + /// Initializes a new with no error, indicating a successful execution. + /// + /// + /// A that does not contain any errors. + /// + public static ExecuteResult FromSuccess ( ) => + new ExecuteResult(null, null, null); + + /// + /// Initializes a new with a specified and its + /// reason, indicating an unsuccessful execution. + /// + /// The type of error. + /// The reason behind the error. + /// + /// A that contains a and reason. + /// + public static ExecuteResult FromError (InteractionCommandError commandError, string reason) => + new ExecuteResult(null, commandError, reason); + + /// + /// Initializes a new with a specified exception, indicating an unsuccessful + /// execution. + /// + /// The exception that caused the command execution to fail. + /// + /// A that contains the exception that caused the unsuccessful execution, along + /// with a of type Exception as well as the exception message as the + /// reason. + /// + public static ExecuteResult FromError (Exception exception) => + new ExecuteResult(exception, InteractionCommandError.Exception, exception.Message); + + /// + /// Initializes a new with a specified result; this may or may not be an + /// successful execution depending on the and + /// specified. + /// + /// The result to inherit from. + /// + /// A that inherits the error type and reason. + /// + public static ExecuteResult FromError (IResult result) => + new ExecuteResult(null, result.Error, result.ErrorReason); + + /// + /// Gets a string that indicates the execution result. + /// + /// + /// Success if is ; otherwise ": + /// ". + /// + public override string ToString ( ) => IsSuccess ? "Success" : $"{Error}: {ErrorReason}"; + } +} diff --git a/src/Discord.Net.Interactions/Results/IResult.cs b/src/Discord.Net.Interactions/Results/IResult.cs new file mode 100644 index 000000000..1b6089c3a --- /dev/null +++ b/src/Discord.Net.Interactions/Results/IResult.cs @@ -0,0 +1,33 @@ +namespace Discord.Interactions +{ + /// + /// Contains information of the result related to a command. + /// + public interface IResult + { + /// + /// Gets the error type that may have occurred during the operation. + /// + /// + /// A indicating the type of error that may have occurred during the operation; + /// if the operation was successful. + /// + InteractionCommandError? Error { get; } + + /// + /// Gets the reason for the error. + /// + /// + /// A string containing the error reason. + /// + string ErrorReason { get; } + + /// + /// Indicates whether the operation was successful or not. + /// + /// + /// if the result is positive; otherwise . + /// + bool IsSuccess { get; } + } +} diff --git a/src/Discord.Net.Interactions/Results/PreconditionGroupResult.cs b/src/Discord.Net.Interactions/Results/PreconditionGroupResult.cs new file mode 100644 index 000000000..40acb6099 --- /dev/null +++ b/src/Discord.Net.Interactions/Results/PreconditionGroupResult.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.Collections.Immutable; + +namespace Discord.Interactions +{ + /// + /// Represents a result type for grouped command preconditions. + /// + public class PreconditionGroupResult : PreconditionResult + { + /// + /// Gets the results of the preconditions of this group. + /// + public IReadOnlyCollection Results { get; } + + private PreconditionGroupResult (InteractionCommandError? error, string reason, IEnumerable results) : base(error, reason) + { + Results = results?.ToImmutableArray(); + } + + /// + /// Returns a with no errors. + /// + public static new PreconditionGroupResult FromSuccess ( ) => + new PreconditionGroupResult(null, null, null); + + /// + /// Returns a with and the . + /// + /// The exception that caused the precondition check to fail. + public static new PreconditionGroupResult FromError (Exception exception) => + new PreconditionGroupResult(InteractionCommandError.Exception, exception.Message, null); + + /// + /// Returns a with the specified type. + /// + /// The result of failure. + public static new PreconditionGroupResult FromError (IResult result) => + new PreconditionGroupResult(result.Error, result.ErrorReason, null); + + /// + /// Returns a with and the + /// specified reason. + /// + /// The reason of failure. + /// Precondition results of this group + public static PreconditionGroupResult FromError (string reason, IEnumerable results) => + new PreconditionGroupResult(InteractionCommandError.UnmetPrecondition, reason, results); + } +} diff --git a/src/Discord.Net.Interactions/Results/PreconditionResult.cs b/src/Discord.Net.Interactions/Results/PreconditionResult.cs new file mode 100644 index 000000000..3d80f976c --- /dev/null +++ b/src/Discord.Net.Interactions/Results/PreconditionResult.cs @@ -0,0 +1,59 @@ +using System; + +namespace Discord.Interactions +{ + /// + /// Represents a result type for command preconditions. + /// + public class PreconditionResult : IResult + { + /// + public InteractionCommandError? Error { get; } + + /// + public string ErrorReason { get; } + + /// + public bool IsSuccess => Error == null; + + /// + /// Initializes a new class with the command type + /// and reason. + /// + /// The type of failure. + /// The reason of failure. + protected PreconditionResult (InteractionCommandError? error, string reason) + { + Error = error; + ErrorReason = reason; + } + + /// + /// Returns a with no errors. + /// + public static PreconditionResult FromSuccess ( ) => + new PreconditionResult(null, null); + + /// + /// Returns a with and the . + /// + /// The exception that caused the precondition check to fail. + public static PreconditionResult FromError (Exception exception) => + new PreconditionResult(InteractionCommandError.Exception, exception.Message); + + /// + /// Returns a with the specified type. + /// + /// The result of failure. + public static PreconditionResult FromError (IResult result) => + new PreconditionResult(result.Error, result.ErrorReason); + + /// + /// Returns a with and the + /// specified reason. + /// + /// The reason of failure. + public static PreconditionResult FromError (string reason) => + new PreconditionResult(InteractionCommandError.UnmetPrecondition, reason); + } +} diff --git a/src/Discord.Net.Interactions/Results/RuntimeResult.cs b/src/Discord.Net.Interactions/Results/RuntimeResult.cs new file mode 100644 index 000000000..a29b29252 --- /dev/null +++ b/src/Discord.Net.Interactions/Results/RuntimeResult.cs @@ -0,0 +1,37 @@ +namespace Discord.Interactions +{ + /// + /// Represents the base class for creating command result containers. + /// + public abstract class RuntimeResult : IResult + { + /// + public InteractionCommandError? Error { get; } + + /// + public string ErrorReason { get; } + + /// + public bool IsSuccess => !Error.HasValue; + + /// + /// Initializes a new class with the type of error and reason. + /// + /// The type of failure, or null if none. + /// The reason of failure. + protected RuntimeResult (InteractionCommandError? error, string reason) + { + Error = error; + ErrorReason = reason; + } + + /// + /// Gets a string that indicates the runtime result. + /// + /// + /// Success if is true; otherwise ": + /// ". + /// + public override string ToString ( ) => ErrorReason ?? ( IsSuccess ? "Successful" : "Unsuccessful" ); + } +} diff --git a/src/Discord.Net.Interactions/Results/SearchResult.cs b/src/Discord.Net.Interactions/Results/SearchResult.cs new file mode 100644 index 000000000..874e57d45 --- /dev/null +++ b/src/Discord.Net.Interactions/Results/SearchResult.cs @@ -0,0 +1,37 @@ +using System; + +namespace Discord.Interactions +{ + internal struct SearchResult : IResult where T : class, ICommandInfo + { + public string Text { get; } + public T Command { get; } + public string[] RegexCaptureGroups { get; } + public InteractionCommandError? Error { get; } + + public string ErrorReason { get; } + + public bool IsSuccess => !Error.HasValue; + + private SearchResult (string text, T commandInfo, string[] captureGroups, InteractionCommandError? error, string reason) + { + Text = text; + Error = error; + RegexCaptureGroups = captureGroups; + Command = commandInfo; + ErrorReason = reason; + } + + public static SearchResult FromSuccess (string text, T commandInfo, string[] wildCardMatch = null) => + new SearchResult(text, commandInfo, wildCardMatch, null, null); + + public static SearchResult FromError (string text, InteractionCommandError error, string reason) => + new SearchResult(text, null, null, error, reason); + public static SearchResult FromError (Exception ex) => + new SearchResult(null, null, null, InteractionCommandError.Exception, ex.Message); + public static SearchResult FromError (IResult result) => + new SearchResult(null, null, null, result.Error, result.ErrorReason); + + public override string ToString ( ) => IsSuccess ? "Success" : $"{Error}: {ErrorReason}"; + } +} diff --git a/src/Discord.Net.Interactions/Results/TypeConverterResult.cs b/src/Discord.Net.Interactions/Results/TypeConverterResult.cs new file mode 100644 index 000000000..bd89bf6b7 --- /dev/null +++ b/src/Discord.Net.Interactions/Results/TypeConverterResult.cs @@ -0,0 +1,61 @@ +using System; + +namespace Discord.Interactions +{ + /// + /// Represents a result type for . + /// + public struct TypeConverterResult : IResult + { + /// + /// Gets the result of the convertion if the operation was successful. + /// + public object Value { get; } + + /// + public InteractionCommandError? Error { get; } + + /// + public string ErrorReason { get; } + + /// + public bool IsSuccess => !Error.HasValue; + + private TypeConverterResult (object value, InteractionCommandError? error, string reason) + { + Value = value; + Error = error; + ErrorReason = reason; + } + + /// + /// Returns a with no errors. + /// + public static TypeConverterResult FromSuccess (object value) => + new TypeConverterResult(value, null, null); + + /// + /// Returns a with and the . + /// + /// The exception that caused the type convertion to fail. + public static TypeConverterResult FromError (Exception exception) => + new TypeConverterResult(null, InteractionCommandError.Exception, exception.Message); + + /// + /// Returns a with the specified error and the reason. + /// + /// The type of error. + /// The reason of failure. + public static TypeConverterResult FromError (InteractionCommandError error, string reason) => + new TypeConverterResult(null, error, reason); + + /// + /// Returns a with the specified type. + /// + /// The result of failure. + public static TypeConverterResult FromError (IResult result) => + new TypeConverterResult(null, result.Error, result.ErrorReason); + + public override string ToString ( ) => IsSuccess ? "Success" : $"{Error}: {ErrorReason}"; + } +} diff --git a/src/Discord.Net.Interactions/RunMode.cs b/src/Discord.Net.Interactions/RunMode.cs new file mode 100644 index 000000000..1577da8ad --- /dev/null +++ b/src/Discord.Net.Interactions/RunMode.cs @@ -0,0 +1,22 @@ +namespace Discord.Interactions +{ + /// + /// Specifies the behavior of the command execution workflow. + /// + /// + public enum RunMode + { + /// + /// Executes the command on the same thread as gateway one. + /// + Sync, + /// + /// Executes the command on a different thread from the gateway one. + /// + Async, + /// + /// The default behaviour set in . + /// + Default + } +} diff --git a/src/Discord.Net.Interactions/TypeConverters/DefaultEntityTypeConverter.cs b/src/Discord.Net.Interactions/TypeConverters/DefaultEntityTypeConverter.cs new file mode 100644 index 000000000..943ad39b7 --- /dev/null +++ b/src/Discord.Net.Interactions/TypeConverters/DefaultEntityTypeConverter.cs @@ -0,0 +1,83 @@ +using Discord.WebSocket; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + internal abstract class DefaultEntityTypeConverter : TypeConverter where T : class + { + public override Task ReadAsync (IInteractionContext context, IApplicationCommandInteractionDataOption option, IServiceProvider services) + { + var value = option.Value as T; + + if (value is not null) + return Task.FromResult(TypeConverterResult.FromSuccess(option.Value as T)); + else + return Task.FromResult(TypeConverterResult.FromError(InteractionCommandError.ConvertFailed, $"Provided input cannot be read as {nameof(IChannel)}")); + } + } + + internal class DefaultRoleConverter : DefaultEntityTypeConverter where T : class, IRole + { + public override ApplicationCommandOptionType GetDiscordType ( ) => ApplicationCommandOptionType.Role; + } + + internal class DefaultUserConverter : DefaultEntityTypeConverter where T : class, IUser + { + public override ApplicationCommandOptionType GetDiscordType ( ) => ApplicationCommandOptionType.User; + } + + internal class DefaultChannelConverter : DefaultEntityTypeConverter where T : class, IChannel + { + private readonly List _channelTypes; + + public DefaultChannelConverter ( ) + { + var type = typeof(T); + + _channelTypes = true switch + { + _ when typeof(IStageChannel).IsAssignableFrom(type) + => new List { ChannelType.Stage }, + + _ when typeof(IVoiceChannel).IsAssignableFrom(type) + => new List { ChannelType.Voice }, + + _ when typeof(IDMChannel).IsAssignableFrom(type) + => new List { ChannelType.DM }, + + _ when typeof(IGroupChannel).IsAssignableFrom(type) + => new List { ChannelType.Group }, + + _ when typeof(ICategoryChannel).IsAssignableFrom(type) + => new List { ChannelType.Category }, + + _ when typeof(INewsChannel).IsAssignableFrom(type) + => new List { ChannelType.News }, + + _ when typeof(IThreadChannel).IsAssignableFrom(type) + => new List { ChannelType.PublicThread, ChannelType.PrivateThread, ChannelType.NewsThread }, + + _ when typeof(ITextChannel).IsAssignableFrom(type) + => new List { ChannelType.Text }, + + _ => null + }; + } + + public override ApplicationCommandOptionType GetDiscordType ( ) => ApplicationCommandOptionType.Channel; + + public override void Write (ApplicationCommandOptionProperties properties, IParameterInfo parameter) + { + properties.ChannelTypes = _channelTypes; + } + } + + internal class DefaultMentionableConverter : DefaultEntityTypeConverter where T : class, IMentionable + { + public override ApplicationCommandOptionType GetDiscordType ( ) => ApplicationCommandOptionType.Mentionable; + } +} diff --git a/src/Discord.Net.Interactions/TypeConverters/DefaultValueConverter.cs b/src/Discord.Net.Interactions/TypeConverters/DefaultValueConverter.cs new file mode 100644 index 000000000..8e049ea7a --- /dev/null +++ b/src/Discord.Net.Interactions/TypeConverters/DefaultValueConverter.cs @@ -0,0 +1,61 @@ +using Discord.WebSocket; +using System; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + internal class DefaultValueConverter : TypeConverter where T : IConvertible + { + public override ApplicationCommandOptionType GetDiscordType ( ) + { + switch (Type.GetTypeCode(typeof(T))) + { + case TypeCode.Boolean: + return ApplicationCommandOptionType.Boolean; + + case TypeCode.DateTime: + case TypeCode.SByte: + case TypeCode.Byte: + case TypeCode.Char: + case TypeCode.String: + case TypeCode.Single: + return ApplicationCommandOptionType.String; + + case TypeCode.Int16: + case TypeCode.Int32: + case TypeCode.Int64: + case TypeCode.UInt16: + case TypeCode.UInt32: + case TypeCode.UInt64: + return ApplicationCommandOptionType.Integer; + + case TypeCode.Decimal: + case TypeCode.Double: + return ApplicationCommandOptionType.Number; + + case TypeCode.DBNull: + default: + throw new InvalidOperationException($"Parameter Type {typeof(T).FullName} is not supported by Discord."); + } + } + public override Task ReadAsync (IInteractionContext context, IApplicationCommandInteractionDataOption option, IServiceProvider services) + { + object value; + + if (option.Value is Optional optional) + value = optional.IsSpecified ? optional.Value : default(T); + else + value = option.Value; + + try + { + var converted = Convert.ChangeType(value, typeof(T)); + return Task.FromResult(TypeConverterResult.FromSuccess(converted)); + } + catch (InvalidCastException castEx) + { + return Task.FromResult(TypeConverterResult.FromError(castEx)); + } + } + } +} diff --git a/src/Discord.Net.Interactions/TypeConverters/EnumConverter.cs b/src/Discord.Net.Interactions/TypeConverters/EnumConverter.cs new file mode 100644 index 000000000..a06c70ec4 --- /dev/null +++ b/src/Discord.Net.Interactions/TypeConverters/EnumConverter.cs @@ -0,0 +1,49 @@ +using Discord.WebSocket; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + internal sealed class EnumConverter : TypeConverter where T : struct, Enum + { + public override ApplicationCommandOptionType GetDiscordType ( ) => ApplicationCommandOptionType.String; + public override Task ReadAsync (IInteractionContext context, IApplicationCommandInteractionDataOption option, IServiceProvider services) + { + if (Enum.TryParse((string)option.Value, out var result)) + return Task.FromResult(TypeConverterResult.FromSuccess(result)); + else + return Task.FromResult(TypeConverterResult.FromError(InteractionCommandError.ConvertFailed, $"Value {option.Value} cannot be converted to {nameof(T)}")); + } + + public override void Write (ApplicationCommandOptionProperties properties, IParameterInfo parameterInfo) + { + var names = Enum.GetNames(typeof(T)); + var members = names.SelectMany(x => typeof(T).GetMember(x)).Where(x => !x.IsDefined(typeof(HideAttribute), true)); + + if (members.Count() <= 25) + { + var choices = new List(); + + foreach (var member in members) + choices.Add(new ApplicationCommandOptionChoiceProperties + { + Name = member.Name, + Value = member.Name + }); + + properties.Choices = choices; + } + } + } + + /// + /// Enum values tagged with this attribute will not be displayed as a parameter choice + /// + /// + /// This attributer must be used along with the default + /// + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public sealed class HideAttribute : Attribute { } +} diff --git a/src/Discord.Net.Interactions/TypeConverters/TimeSpanConverter.cs b/src/Discord.Net.Interactions/TypeConverters/TimeSpanConverter.cs new file mode 100644 index 000000000..9a5274ff9 --- /dev/null +++ b/src/Discord.Net.Interactions/TypeConverters/TimeSpanConverter.cs @@ -0,0 +1,36 @@ +using Discord.WebSocket; +using System; +using System.Globalization; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + internal sealed class TimeSpanConverter : TypeConverter + { + public override ApplicationCommandOptionType GetDiscordType ( ) => ApplicationCommandOptionType.String; + public override Task ReadAsync (IInteractionContext context, IApplicationCommandInteractionDataOption option, IServiceProvider services) + { + return ( TimeSpan.TryParseExact(( option.Value as string ).ToLowerInvariant(), Formats, CultureInfo.InvariantCulture, out var timeSpan) ) + ? Task.FromResult(TypeConverterResult.FromSuccess(timeSpan)) + : Task.FromResult(TypeConverterResult.FromError(InteractionCommandError.ConvertFailed, "Failed to parse TimeSpan")); + } + + private static readonly string[] Formats = { + "%d'd'%h'h'%m'm'%s's'", //4d3h2m1s + "%d'd'%h'h'%m'm'", //4d3h2m + "%d'd'%h'h'%s's'", //4d3h 1s + "%d'd'%h'h'", //4d3h + "%d'd'%m'm'%s's'", //4d 2m1s + "%d'd'%m'm'", //4d 2m + "%d'd'%s's'", //4d 1s + "%d'd'", //4d + "%h'h'%m'm'%s's'", // 3h2m1s + "%h'h'%m'm'", // 3h2m + "%h'h'%s's'", // 3h 1s + "%h'h'", // 3h + "%m'm'%s's'", // 2m1s + "%m'm'", // 2m + "%s's'", // 1s + }; + } +} diff --git a/src/Discord.Net.Interactions/TypeConverters/TypeConverter.cs b/src/Discord.Net.Interactions/TypeConverters/TypeConverter.cs new file mode 100644 index 000000000..360b6ce4a --- /dev/null +++ b/src/Discord.Net.Interactions/TypeConverters/TypeConverter.cs @@ -0,0 +1,46 @@ +using System; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + /// + /// Base class for creating TypeConverters. uses TypeConverters to interface with Slash Command parameters. + /// + public abstract class TypeConverter + { + /// + /// Will be used to search for alternative TypeConverters whenever the Command Service encounters an unknown parameter type. + /// + /// + /// + public abstract bool CanConvertTo(Type type); + + /// + /// Will be used to get the Application Command Option type. + /// + /// The option type. + public abstract ApplicationCommandOptionType GetDiscordType(); + + /// + /// Will be used to read the incoming payload before executing the method body. + /// + /// Command exexution context. + /// Recieved option payload. + /// Service provider that will be used to initialize the command module. + /// The result of the read process. + public abstract Task ReadAsync(IInteractionContext context, IApplicationCommandInteractionDataOption option, IServiceProvider services); + + /// + /// Will be used to manipulate the outgoing command option, before the command gets registered to Discord. + /// + public virtual void Write(ApplicationCommandOptionProperties properties, IParameterInfo parameter) { } + } + + /// + public abstract class TypeConverter : TypeConverter + { + /// + public sealed override bool CanConvertTo(Type type) => + typeof(T).IsAssignableFrom(type); + } +} diff --git a/src/Discord.Net.Interactions/Utilities/ApplicationCommandRestUtil.cs b/src/Discord.Net.Interactions/Utilities/ApplicationCommandRestUtil.cs new file mode 100644 index 000000000..ad1f7d646 --- /dev/null +++ b/src/Discord.Net.Interactions/Utilities/ApplicationCommandRestUtil.cs @@ -0,0 +1,200 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Discord.Interactions +{ + internal static class ApplicationCommandRestUtil + { + #region Parameters + public static ApplicationCommandOptionProperties ToApplicationCommandOptionProps(this SlashCommandParameterInfo parameterInfo) + { + var props = new ApplicationCommandOptionProperties + { + Name = parameterInfo.Name, + Description = parameterInfo.Description, + Type = parameterInfo.DiscordOptionType, + IsRequired = parameterInfo.IsRequired, + Choices = parameterInfo.Choices?.Select(x => new ApplicationCommandOptionChoiceProperties + { + Name = x.Name, + Value = x.Value + })?.ToList(), + ChannelTypes = parameterInfo.ChannelTypes?.ToList(), + IsAutocomplete = parameterInfo.IsAutocomplete, + MaxValue = parameterInfo.MaxValue, + MinValue = parameterInfo.MinValue + }; + + parameterInfo.TypeConverter.Write(props, parameterInfo); + + return props; + } + #endregion + + #region Commands + + public static SlashCommandProperties ToApplicationCommandProps(this SlashCommandInfo commandInfo) + { + var props = new SlashCommandBuilder() + { + Name = commandInfo.Name, + Description = commandInfo.Description, + IsDefaultPermission = commandInfo.DefaultPermission, + }.Build(); + + if (commandInfo.Parameters.Count > SlashCommandBuilder.MaxOptionsCount) + throw new InvalidOperationException($"Slash Commands cannot have more than {SlashCommandBuilder.MaxOptionsCount} command parameters"); + + props.Options = commandInfo.Parameters.Select(x => x.ToApplicationCommandOptionProps())?.ToList() ?? Optional>.Unspecified; + + return props; + } + + public static ApplicationCommandOptionProperties ToApplicationCommandOptionProps(this SlashCommandInfo commandInfo) => + new ApplicationCommandOptionProperties + { + Name = commandInfo.Name, + Description = commandInfo.Description, + Type = ApplicationCommandOptionType.SubCommand, + IsRequired = false, + Options = commandInfo.Parameters?.Select(x => x.ToApplicationCommandOptionProps())?.ToList() + }; + + public static ApplicationCommandProperties ToApplicationCommandProps(this ContextCommandInfo commandInfo) + => commandInfo.CommandType switch + { + ApplicationCommandType.Message => new MessageCommandBuilder { Name = commandInfo.Name, IsDefaultPermission = commandInfo.DefaultPermission}.Build(), + ApplicationCommandType.User => new UserCommandBuilder { Name = commandInfo.Name, IsDefaultPermission=commandInfo.DefaultPermission}.Build(), + _ => throw new InvalidOperationException($"{commandInfo.CommandType} isn't a supported command type.") + }; + #endregion + + #region Modules + + public static IReadOnlyCollection ToApplicationCommandProps(this ModuleInfo moduleInfo, bool ignoreDontRegister = false) + { + var args = new List(); + + moduleInfo.ParseModuleModel(args, ignoreDontRegister); + return args; + } + + private static void ParseModuleModel(this ModuleInfo moduleInfo, List args, bool ignoreDontRegister) + { + if (moduleInfo.DontAutoRegister && !ignoreDontRegister) + return; + + args.AddRange(moduleInfo.ContextCommands?.Select(x => x.ToApplicationCommandProps())); + + if (!moduleInfo.IsSlashGroup) + { + args.AddRange(moduleInfo.SlashCommands?.Select(x => x.ToApplicationCommandProps())); + + foreach (var submodule in moduleInfo.SubModules) + submodule.ParseModuleModel(args, ignoreDontRegister); + } + else + { + var options = new List(); + + foreach (var command in moduleInfo.SlashCommands) + { + if (command.IgnoreGroupNames) + args.Add(command.ToApplicationCommandProps()); + else + options.Add(command.ToApplicationCommandOptionProps()); + } + + options.AddRange(moduleInfo.SubModules?.SelectMany(x => x.ParseSubModule(args, ignoreDontRegister))); + + var props = new SlashCommandBuilder + { + Name = moduleInfo.SlashGroupName.ToLower(), + Description = moduleInfo.Description, + IsDefaultPermission = moduleInfo.DefaultPermission, + }.Build(); + + if (options.Count > SlashCommandBuilder.MaxOptionsCount) + throw new InvalidOperationException($"Slash Commands cannot have more than {SlashCommandBuilder.MaxOptionsCount} command parameters"); + + props.Options = options; + + args.Add(props); + } + } + + private static IReadOnlyCollection ParseSubModule(this ModuleInfo moduleInfo, List args, + bool ignoreDontRegister) + { + if (moduleInfo.DontAutoRegister && !ignoreDontRegister) + return Array.Empty(); + + args.AddRange(moduleInfo.ContextCommands?.Select(x => x.ToApplicationCommandProps())); + + var options = new List(); + options.AddRange(moduleInfo.SubModules?.SelectMany(x => x.ParseSubModule(args, ignoreDontRegister))); + + foreach (var command in moduleInfo.SlashCommands) + { + if (command.IgnoreGroupNames) + args.Add(command.ToApplicationCommandProps()); + else + options.Add(command.ToApplicationCommandOptionProps()); + } + + if (!moduleInfo.IsSlashGroup) + return options; + else + return new List() { new ApplicationCommandOptionProperties + { + Name = moduleInfo.SlashGroupName.ToLower(), + Description = moduleInfo.Description, + Type = ApplicationCommandOptionType.SubCommandGroup, + Options = options + } }; + } + + #endregion + + public static ApplicationCommandProperties ToApplicationCommandProps(this IApplicationCommand command) + { + return command.Type switch + { + ApplicationCommandType.Slash => new SlashCommandProperties + { + Name = command.Name, + Description = command.Description, + IsDefaultPermission = command.IsDefaultPermission, + Options = command.Options?.Select(x => x.ToApplicationCommandOptionProps())?.ToList() ?? Optional>.Unspecified + }, + ApplicationCommandType.User => new UserCommandProperties + { + Name = command.Name, + IsDefaultPermission = command.IsDefaultPermission + }, + ApplicationCommandType.Message => new MessageCommandProperties + { + Name = command.Name, + IsDefaultPermission = command.IsDefaultPermission + }, + _ => throw new InvalidOperationException($"Cannot create command properties for command type {command.Type}"), + }; + } + + public static ApplicationCommandOptionProperties ToApplicationCommandOptionProps(this IApplicationCommandOption commandOption) => + new ApplicationCommandOptionProperties + { + Name = commandOption.Name, + Description = commandOption.Description, + Type = commandOption.Type, + IsRequired = commandOption.IsRequired, + Choices = commandOption.Choices?.Select(x => new ApplicationCommandOptionChoiceProperties + { + Name = x.Name, + Value = x.Value + }).ToList(), + Options = commandOption.Options?.Select(x => x.ToApplicationCommandOptionProps()).ToList() + }; + } +} diff --git a/src/Discord.Net.Interactions/Utilities/EmptyServiceProvider.cs b/src/Discord.Net.Interactions/Utilities/EmptyServiceProvider.cs new file mode 100644 index 000000000..a53800946 --- /dev/null +++ b/src/Discord.Net.Interactions/Utilities/EmptyServiceProvider.cs @@ -0,0 +1,11 @@ +using System; + +namespace Discord.Interactions +{ + internal class EmptyServiceProvider : IServiceProvider + { + public static EmptyServiceProvider Instance => new EmptyServiceProvider(); + + public object GetService (Type serviceType) => null; + } +} diff --git a/src/Discord.Net.Interactions/Utilities/InteractionUtility.cs b/src/Discord.Net.Interactions/Utilities/InteractionUtility.cs new file mode 100644 index 000000000..00062ced6 --- /dev/null +++ b/src/Discord.Net.Interactions/Utilities/InteractionUtility.cs @@ -0,0 +1,113 @@ +using Discord.WebSocket; +using System; +using System.Threading; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + /// + /// Utility class containing helper methods for interacting with Discord Interactions. + /// + public static class InteractionUtility + { + /// + /// Wait for an Interaction event for a given amount of time as an asynchronous opration. + /// + /// Client that should be listened to for the event. + /// Timeout duration for this operation. + /// Delegate for cheking whether an Interaction meets the requirements. + /// Token for canceling the wait operation. + /// + /// A Task representing the asyncronous waiting operation. If the user responded in the given amount of time, Task result contains the user response, + /// otherwise the Task result is . + /// + public static async Task WaitForInteractionAsync (BaseSocketClient client, TimeSpan timeout, + Predicate predicate, CancellationToken cancellationToken = default) + { + var tcs = new TaskCompletionSource(); + + var waitCancelSource = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken); + Task wait = Task.Delay(timeout, waitCancelSource.Token) + .ContinueWith((t) => + { + if (!t.IsCanceled) + tcs.SetResult(null); + }); + + cancellationToken.Register(( ) => tcs.SetCanceled()); + + client.InteractionCreated += HandleInteraction; + var result = await tcs.Task.ConfigureAwait(false); + client.InteractionCreated -= HandleInteraction; + + return result; + + Task HandleInteraction (SocketInteraction interaction) + { + if (predicate(interaction)) + { + waitCancelSource.Cancel(); + tcs.SetResult(interaction); + } + + return Task.CompletedTask; + } + } + + /// + /// Wait for an Message Component Interaction event for a given amount of time as an asynchronous opration . + /// + /// Client that should be listened to for the event. + /// The message that or should originate from. + /// Timeout duration for this operation. + /// Token for canceling the wait operation. + /// + /// A Task representing the asyncronous waiting operation with a result, + /// the result is null if the process timed out before receiving a valid Interaction. + /// + public static Task WaitForMessageComponentAsync(BaseSocketClient client, IUserMessage fromMessage, TimeSpan timeout, + CancellationToken cancellationToken = default) + { + bool Predicate (SocketInteraction interaction) => interaction is SocketMessageComponent component && + component.Message.Id == fromMessage.Id; + + return WaitForInteractionAsync(client, timeout, Predicate, cancellationToken); + } + + /// + /// Create a confirmation dialog and wait for user input asynchronously. + /// + /// Client that should be listened to for the event. + /// Send the confirmation prompt to this channel. + /// Timeout duration of this operation. + /// Optional custom prompt message. + /// Token for canceling the wait operation. + /// + /// A Task representing the asyncronous waiting operation with a result, + /// the result is if the user declined the prompt or didnt answer in time, if the user confirmed the prompt. + /// + public static async Task ConfirmAsync (BaseSocketClient client, IMessageChannel channel, TimeSpan timeout, string message = null, + CancellationToken cancellationToken = default) + { + message ??= "Would you like to continue?"; + var confirmId = $"confirm"; + var declineId = $"decline"; + + var component = new ComponentBuilder() + .WithButton("Confirm", confirmId, ButtonStyle.Success) + .WithButton("Cancel", declineId, ButtonStyle.Danger) + .Build(); + + var prompt = await channel.SendMessageAsync(message, component: component).ConfigureAwait(false); + + var response = await WaitForMessageComponentAsync(client, prompt, timeout, cancellationToken).ConfigureAwait(false) as SocketMessageComponent; + + await prompt.DeleteAsync().ConfigureAwait(false); + + if (response != null && response.Data.CustomId == confirmId) + return true; + else + return false; + } + } +} diff --git a/src/Discord.Net.Interactions/Utilities/ReflectionUtils.cs b/src/Discord.Net.Interactions/Utilities/ReflectionUtils.cs new file mode 100644 index 000000000..b15662bfb --- /dev/null +++ b/src/Discord.Net.Interactions/Utilities/ReflectionUtils.cs @@ -0,0 +1,157 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Reflection; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + internal static class ReflectionUtils + { + private static readonly TypeInfo ObjectTypeInfo = typeof(object).GetTypeInfo(); + + internal static T CreateObject (TypeInfo typeInfo, InteractionService commandService, IServiceProvider services = null) => + CreateBuilder(typeInfo, commandService)(services); + + internal static Func CreateBuilder (TypeInfo typeInfo, InteractionService commandService) + { + var constructor = GetConstructor(typeInfo); + var parameters = constructor.GetParameters(); + var properties = GetProperties(typeInfo); + + return (services) => + { + var args = new object[parameters.Length]; + for (int i = 0; i < parameters.Length; i++) + args[i] = GetMember(commandService, services, parameters[i].ParameterType, typeInfo); + + var obj = InvokeConstructor(constructor, args, typeInfo); + foreach (var property in properties) + property.SetValue(obj, GetMember(commandService, services, property.PropertyType, typeInfo)); + return obj; + }; + } + + private static T InvokeConstructor (ConstructorInfo constructor, object[] args, TypeInfo ownerType) + { + try + { + return (T)constructor.Invoke(args); + } + catch (Exception ex) + { + throw new Exception($"Failed to create \"{ownerType.FullName}\".", ex); + } + } + private static ConstructorInfo GetConstructor (TypeInfo ownerType) + { + var constructors = ownerType.DeclaredConstructors.Where(x => !x.IsStatic).ToArray(); + if (constructors.Length == 0) + throw new InvalidOperationException($"No constructor found for \"{ownerType.FullName}\"."); + else if (constructors.Length > 1) + throw new InvalidOperationException($"Multiple constructors found for \"{ownerType.FullName}\"."); + return constructors[0]; + } + private static PropertyInfo[] GetProperties (TypeInfo ownerType) + { + var result = new List(); + while (ownerType != ObjectTypeInfo) + { + foreach (var prop in ownerType.DeclaredProperties) + { + if (prop.SetMethod?.IsStatic == false && prop.SetMethod?.IsPublic == true) + result.Add(prop); + } + ownerType = ownerType.BaseType.GetTypeInfo(); + } + return result.ToArray(); + } + private static object GetMember (InteractionService commandService, IServiceProvider services, Type memberType, TypeInfo ownerType) + { + if (memberType == typeof(InteractionService)) + return commandService; + if (memberType == typeof(IServiceProvider) || memberType == services.GetType()) + return services; + var service = services.GetService(memberType); + if (service != null) + return service; + throw new InvalidOperationException($"Failed to create \"{ownerType.FullName}\", dependency \"{memberType.Name}\" was not found."); + } + + internal static Func CreateMethodInvoker (MethodInfo methodInfo) + { + var parameters = methodInfo.GetParameters(); + var paramsExp = new Expression[parameters.Length]; + + var instanceExp = Expression.Parameter(typeof(T), "instance"); + var argsExp = Expression.Parameter(typeof(object[]), "args"); + + for (var i = 0; i < parameters.Length; i++) + { + var parameter = parameters[i]; + + var indexExp = Expression.Constant(i); + var accessExp = Expression.ArrayIndex(argsExp, indexExp); + paramsExp[i] = Expression.Convert(accessExp, parameter.ParameterType); + } + + var callExp = Expression.Call(Expression.Convert(instanceExp, methodInfo.ReflectedType), methodInfo, paramsExp); + var finalExp = Expression.Convert(callExp, typeof(Task)); + var lambda = Expression.Lambda>(finalExp, instanceExp, argsExp).Compile(); + + return lambda; + } + + /// + /// Create a type initializer using compiled lambda expressions + /// + internal static Func CreateLambdaBuilder (TypeInfo typeInfo, InteractionService commandService) + { + var constructor = GetConstructor(typeInfo); + var parameters = constructor.GetParameters(); + var properties = GetProperties(typeInfo); + + var argsExp = Expression.Parameter(typeof(object[]), "args"); + var propsExp = Expression.Parameter(typeof(object[]), "props"); + + var parameterExps = new Expression[parameters.Length]; + + for (var i = 0; i < parameters.Length; i++) + { + var indexExp = Expression.Constant(i); + var accessExp = Expression.ArrayIndex(argsExp, indexExp); + parameterExps[i] = Expression.Convert(accessExp, parameters[i].ParameterType); + } + + var newExp = Expression.New(constructor, parameterExps); + + var memberExps = new MemberAssignment[properties.Length]; + + for (var i = 0; i < properties.Length; i++) + { + var indexEx = Expression.Constant(i); + var accessExp = Expression.Convert(Expression.ArrayIndex(propsExp, indexEx), properties[i].PropertyType); + memberExps[i] = Expression.Bind(properties[i], accessExp); + } + var memberInit = Expression.MemberInit(newExp, memberExps); + var lambda = Expression.Lambda>(memberInit, argsExp, propsExp).Compile(); + + return (services) => + { + var args = new object[parameters.Length]; + var props = new object[properties.Length]; + + for (int i = 0; i < parameters.Length; i++) + args[i] = GetMember(commandService, services, parameters[i].ParameterType, typeInfo); + + for (int i = 0; i < properties.Length; i++) + props[i] = GetMember(commandService, services, properties[i].PropertyType, typeInfo); + + var instance = lambda(args, props); + + return instance; + }; + } + } +} diff --git a/src/Discord.Net.Interactions/Utilities/RegexUtils.cs b/src/Discord.Net.Interactions/Utilities/RegexUtils.cs new file mode 100644 index 000000000..82ba944f8 --- /dev/null +++ b/src/Discord.Net.Interactions/Utilities/RegexUtils.cs @@ -0,0 +1,85 @@ +using System; +using System.Linq; + +namespace System.Text.RegularExpressions +{ + internal static class RegexUtils + { + internal const byte Q = 5; // quantifier + internal const byte S = 4; // ordinary stoppper + internal const byte Z = 3; // ScanBlank stopper + internal const byte X = 2; // whitespace + internal const byte E = 1; // should be escaped + + internal static readonly byte[] _category = new byte[] { + // 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 1 2 3 4 5 6 7 8 9 A B C D E F + 0,0,0,0,0,0,0,0,0,X,X,0,X,X,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + // ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? + X,0,0,Z,S,0,0,0,S,S,Q,Q,0,0,S,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,Q, + // @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,S,S,0,S,0, + // ' a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,Q,S,0,0,0}; + + internal static string EscapeExcluding(string input, params char[] exclude) + { + if (exclude is null) + throw new ArgumentNullException("exclude"); + + for (int i = 0; i < input.Length; i++) + { + if (IsMetachar(input[i]) && !exclude.Contains(input[i])) + { + StringBuilder sb = new StringBuilder(); + char ch = input[i]; + int lastpos; + + sb.Append(input, 0, i); + do + { + sb.Append('\\'); + switch (ch) + { + case '\n': + ch = 'n'; + break; + case '\r': + ch = 'r'; + break; + case '\t': + ch = 't'; + break; + case '\f': + ch = 'f'; + break; + } + sb.Append(ch); + i++; + lastpos = i; + + while (i < input.Length) + { + ch = input[i]; + if (IsMetachar(ch) && !exclude.Contains(input[i])) + break; + + i++; + } + + sb.Append(input, lastpos, i - lastpos); + + } while (i < input.Length); + + return sb.ToString(); + } + } + + return input; + } + + internal static bool IsMetachar(char ch) + { + return (ch <= '|' && _category[ch] >= E); + } + } +} diff --git a/src/Discord.Net.Rest/API/Rest/CreateWebhookMessageParams.cs b/src/Discord.Net.Rest/API/Rest/CreateWebhookMessageParams.cs index bda0f7ff1..ef0e0dd1d 100644 --- a/src/Discord.Net.Rest/API/Rest/CreateWebhookMessageParams.cs +++ b/src/Discord.Net.Rest/API/Rest/CreateWebhookMessageParams.cs @@ -13,7 +13,7 @@ namespace Discord.API.Rest private static JsonSerializer _serializer = new JsonSerializer { ContractResolver = new DiscordContractResolver() }; [JsonProperty("content")] - public string Content { get; set; } + public Optional Content { get; set; } [JsonProperty("nonce")] public Optional Nonce { get; set; } diff --git a/src/Discord.Net.Rest/API/Rest/UploadWebhookFileParams.cs b/src/Discord.Net.Rest/API/Rest/UploadWebhookFileParams.cs index 3d09ad145..1a25e4782 100644 --- a/src/Discord.Net.Rest/API/Rest/UploadWebhookFileParams.cs +++ b/src/Discord.Net.Rest/API/Rest/UploadWebhookFileParams.cs @@ -21,6 +21,7 @@ namespace Discord.API.Rest public Optional Embeds { get; set; } public Optional AllowedMentions { get; set; } public Optional MessageComponents { get; set; } + public Optional Flags { get; set; } public UploadWebhookFileParams(params FileAttachment[] files) { @@ -48,6 +49,8 @@ namespace Discord.API.Rest payload["embeds"] = Embeds.Value; if (AllowedMentions.IsSpecified) payload["allowed_mentions"] = AllowedMentions.Value; + if (Flags.IsSpecified) + payload["flags"] = Flags.Value; List attachments = new(); diff --git a/src/Discord.Net.Rest/AssemblyInfo.cs b/src/Discord.Net.Rest/AssemblyInfo.cs index 5c9351d64..837fd1d04 100644 --- a/src/Discord.Net.Rest/AssemblyInfo.cs +++ b/src/Discord.Net.Rest/AssemblyInfo.cs @@ -6,6 +6,7 @@ using System.Runtime.CompilerServices; [assembly: InternalsVisibleTo("Discord.Net.Commands")] [assembly: InternalsVisibleTo("Discord.Net.Tests")] [assembly: InternalsVisibleTo("Discord.Net.Tests.Unit")] +[assembly: InternalsVisibleTo("Discord.Net.Interactions")] [assembly: TypeForwardedTo(typeof(Discord.Embed))] [assembly: TypeForwardedTo(typeof(Discord.EmbedBuilder))] diff --git a/src/Discord.Net.Rest/Discord.Net.Rest.csproj b/src/Discord.Net.Rest/Discord.Net.Rest.csproj index 8407abfd6..a1c6892ca 100644 --- a/src/Discord.Net.Rest/Discord.Net.Rest.csproj +++ b/src/Discord.Net.Rest/Discord.Net.Rest.csproj @@ -5,8 +5,8 @@ Discord.Net.Rest Discord.Rest A core Discord.Net library containing the REST client and models. - net461;netstandard2.0;netstandard2.1 - netstandard2.0;netstandard2.1 + net6.0;net5.0;net461;netstandard2.0;netstandard2.1 + net6.0;net5.0;netstandard2.0;netstandard2.1 diff --git a/src/Discord.Net.Rest/DiscordRestApiClient.cs b/src/Discord.Net.Rest/DiscordRestApiClient.cs index abe059c64..67e3107ed 100644 --- a/src/Discord.Net.Rest/DiscordRestApiClient.cs +++ b/src/Discord.Net.Rest/DiscordRestApiClient.cs @@ -786,8 +786,9 @@ namespace Discord.API if (!args.Embeds.IsSpecified || args.Embeds.Value == null || args.Embeds.Value.Length == 0) Preconditions.NotNullOrEmpty(args.Content, nameof(args.Content)); - if (args.Content?.Length > DiscordConfig.MaxMessageSize) + if (args.Content.IsSpecified && args.Content.Value?.Length > DiscordConfig.MaxMessageSize) throw new ArgumentException(message: $"Message content is too long, length must be less or equal to {DiscordConfig.MaxMessageSize}.", paramName: nameof(args.Content)); + options = RequestOptions.CreateOrClone(options); var ids = new BucketIds(webhookId: webhookId); @@ -1198,25 +1199,25 @@ namespace Discord.API options = RequestOptions.CreateOrClone(options); - return await TrySendApplicationCommandAsync(SendJsonAsync("POST", () => $"applications/{CurrentUserId}/commands", command, new BucketIds(), options: options)).ConfigureAwait(false); + return await SendJsonAsync("POST", () => $"applications/{CurrentUserId}/commands", command, new BucketIds(), options: options).ConfigureAwait(false); } public async Task ModifyGlobalApplicationCommandAsync(ModifyApplicationCommandParams command, ulong commandId, RequestOptions options = null) { options = RequestOptions.CreateOrClone(options); - return await TrySendApplicationCommandAsync(SendJsonAsync("PATCH", () => $"applications/{CurrentUserId}/commands/{commandId}", command, new BucketIds(), options: options)).ConfigureAwait(false); + return await SendJsonAsync("PATCH", () => $"applications/{CurrentUserId}/commands/{commandId}", command, new BucketIds(), options: options).ConfigureAwait(false); } public async Task ModifyGlobalApplicationUserCommandAsync(ModifyApplicationCommandParams command, ulong commandId, RequestOptions options = null) { options = RequestOptions.CreateOrClone(options); - return await TrySendApplicationCommandAsync(SendJsonAsync("PATCH", () => $"applications/{CurrentUserId}/commands/{commandId}", command, new BucketIds(), options: options)).ConfigureAwait(false); + return await SendJsonAsync("PATCH", () => $"applications/{CurrentUserId}/commands/{commandId}", command, new BucketIds(), options: options).ConfigureAwait(false); } public async Task ModifyGlobalApplicationMessageCommandAsync(ModifyApplicationCommandParams command, ulong commandId, RequestOptions options = null) { options = RequestOptions.CreateOrClone(options); - return await TrySendApplicationCommandAsync(SendJsonAsync("PATCH", () => $"applications/{CurrentUserId}/commands/{commandId}", command, new BucketIds(), options: options)).ConfigureAwait(false); + return await SendJsonAsync("PATCH", () => $"applications/{CurrentUserId}/commands/{commandId}", command, new BucketIds(), options: options).ConfigureAwait(false); } public async Task DeleteGlobalApplicationCommandAsync(ulong commandId, RequestOptions options = null) { @@ -1229,7 +1230,7 @@ namespace Discord.API { options = RequestOptions.CreateOrClone(options); - return await TrySendApplicationCommandAsync(SendJsonAsync("PUT", () => $"applications/{CurrentUserId}/commands", commands, new BucketIds(), options: options)).ConfigureAwait(false); + return await SendJsonAsync("PUT", () => $"applications/{CurrentUserId}/commands", commands, new BucketIds(), options: options).ConfigureAwait(false); } public async Task GetGuildApplicationCommandsAsync(ulong guildId, RequestOptions options = null) @@ -1271,7 +1272,7 @@ namespace Discord.API var bucket = new BucketIds(guildId: guildId); - return await TrySendApplicationCommandAsync(SendJsonAsync("POST", () => $"applications/{CurrentUserId}/guilds/{guildId}/commands", command, bucket, options: options)).ConfigureAwait(false); + return await SendJsonAsync("POST", () => $"applications/{CurrentUserId}/guilds/{guildId}/commands", command, bucket, options: options).ConfigureAwait(false); } public async Task ModifyGuildApplicationCommandAsync(ModifyApplicationCommandParams command, ulong guildId, ulong commandId, RequestOptions options = null) { @@ -1279,7 +1280,7 @@ namespace Discord.API var bucket = new BucketIds(guildId: guildId); - return await TrySendApplicationCommandAsync(SendJsonAsync("PATCH", () => $"applications/{CurrentUserId}/guilds/{guildId}/commands/{commandId}", command, bucket, options: options)).ConfigureAwait(false); + return await SendJsonAsync("PATCH", () => $"applications/{CurrentUserId}/guilds/{guildId}/commands/{commandId}", command, bucket, options: options).ConfigureAwait(false); } public async Task DeleteGuildApplicationCommandAsync(ulong guildId, ulong commandId, RequestOptions options = null) { @@ -1296,7 +1297,7 @@ namespace Discord.API var bucket = new BucketIds(guildId: guildId); - return await TrySendApplicationCommandAsync(SendJsonAsync("PUT", () => $"applications/{CurrentUserId}/guilds/{guildId}/commands", commands, bucket, options: options)).ConfigureAwait(false); + return await SendJsonAsync("PUT", () => $"applications/{CurrentUserId}/guilds/{guildId}/commands", commands, bucket, options: options).ConfigureAwait(false); } #endregion @@ -1316,7 +1317,7 @@ namespace Discord.API options = RequestOptions.CreateOrClone(options); - return await SendAsync("GET", () => $"webhooks/{CurrentUserId}/{interactionToken}/messages/@original", new BucketIds(), options: options).ConfigureAwait(false); + return await NullifyNotFound(SendAsync("GET", () => $"webhooks/{CurrentUserId}/{interactionToken}/messages/@original", new BucketIds(), options: options)).ConfigureAwait(false); } public async Task ModifyInteractionResponseAsync(ModifyInteractionResponseParams args, string interactionToken, RequestOptions options = null) { @@ -1336,7 +1337,7 @@ namespace Discord.API if ((!args.Embeds.IsSpecified || args.Embeds.Value == null || args.Embeds.Value.Length == 0) && !args.File.IsSpecified) Preconditions.NotNullOrEmpty(args.Content, nameof(args.Content)); - if (args.Content?.Length > DiscordConfig.MaxMessageSize) + if(args.Content.IsSpecified && args.Content.Value?.Length > DiscordConfig.MaxMessageSize) throw new ArgumentException(message: $"Message content is too long, length must be less or equal to {DiscordConfig.MaxMessageSize}.", paramName: nameof(args.Content)); options = RequestOptions.CreateOrClone(options); @@ -1347,6 +1348,21 @@ namespace Discord.API return await SendMultipartAsync("POST", () => $"webhooks/{CurrentUserId}/{token}?wait=true", args.ToDictionary(), new BucketIds(), options: options).ConfigureAwait(false); } + public async Task CreateInteractionFollowupMessageAsync(UploadWebhookFileParams args, string token, RequestOptions options = null) + { + if ((!args.Embeds.IsSpecified || args.Embeds.Value == null || args.Embeds.Value.Length == 0) && !args.Files.Any()) + Preconditions.NotNullOrEmpty(args.Content, nameof(args.Content)); + + + if (args.Content.IsSpecified && args.Content.Value.Length > DiscordConfig.MaxMessageSize) + throw new ArgumentException(message: $"Message content is too long, length must be less or equal to {DiscordConfig.MaxMessageSize}.", paramName: nameof(args.Content)); + + options = RequestOptions.CreateOrClone(options); + + var ids = new BucketIds(); + return await SendMultipartAsync("POST", () => $"webhooks/{CurrentUserId}/{token}?wait=true", args.ToDictionary(), ids, clientBucket: ClientBucketType.SendEdit, options: options).ConfigureAwait(false); + } + public async Task ModifyInteractionFollowupMessageAsync(ModifyInteractionResponseParams args, ulong id, string token, RequestOptions options = null) { Preconditions.NotNull(args, nameof(args)); @@ -2222,40 +2238,6 @@ namespace Discord.API return _serializer.Deserialize(reader); } - protected async Task TrySendApplicationCommandAsync(Task sendTask) - { - try - { - var result = await sendTask.ConfigureAwait(false); - - if (sendTask.Exception != null) - { - if (sendTask.Exception.InnerException is HttpException x) - { - if (x.HttpCode == HttpStatusCode.BadRequest) - { - var json = (x.Request as JsonRestRequest).Json; - throw new ApplicationCommandException(x); - } - } - - throw sendTask.Exception; - } - else - return result; - } - catch (HttpException x) - { - if (x.HttpCode == HttpStatusCode.BadRequest) - { - var json = (x.Request as JsonRestRequest).Json; - throw new ApplicationCommandException(x); - } - - throw; - } - } - protected async Task NullifyNotFound(Task sendTask) where T : class { try diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/AuditLogHelper.cs b/src/Discord.Net.Rest/Entities/AuditLogs/AuditLogHelper.cs index b3aaf582c..edbb2bea8 100644 --- a/src/Discord.Net.Rest/Entities/AuditLogs/AuditLogHelper.cs +++ b/src/Discord.Net.Rest/Entities/AuditLogs/AuditLogHelper.cs @@ -52,6 +52,9 @@ namespace Discord.Rest [ActionType.MessagePinned] = MessagePinAuditLogData.Create, [ActionType.MessageUnpinned] = MessageUnpinAuditLogData.Create, + [ActionType.ThreadCreate] = ThreadCreateAuditLogData.Create, + [ActionType.ThreadUpdate] = ThreadUpdateAuditLogData.Create, + [ActionType.ThreadDelete] = ThreadDeleteAuditLogData.Create, }; public static IAuditLogData CreateData(BaseDiscordClient discord, Model log, EntryModel entry) diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ThreadCreateAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ThreadCreateAuditLogData.cs new file mode 100644 index 000000000..f1cacd727 --- /dev/null +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ThreadCreateAuditLogData.cs @@ -0,0 +1,115 @@ +using System.Linq; + +using Model = Discord.API.AuditLog; +using EntryModel = Discord.API.AuditLogEntry; + +namespace Discord.Rest +{ + /// + /// Contains a piece of audit log data related to a thread creation. + /// + public class ThreadCreateAuditLogData : IAuditLogData + { + private ThreadCreateAuditLogData(IThreadChannel thread, ulong id, string name, ThreadType type, bool archived, + ThreadArchiveDuration autoArchiveDuration, bool locked, int? rateLimit) + { + Thread = thread; + ThreadId = id; + ThreadName = name; + ThreadType = type; + IsArchived = archived; + AutoArchiveDuration = autoArchiveDuration; + IsLocked = locked; + SlowModeInterval = rateLimit; + } + + internal static ThreadCreateAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) + { + var changes = entry.Changes; + + var id = entry.TargetId.Value; + + var nameModel = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "name"); + var typeModel = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "type"); + + var archivedModel = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "archived"); + var autoArchiveDurationModel = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "auto_archive_duration"); + var lockedModel = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "locked"); + var rateLimitPerUserModel = changes.FirstOrDefault(x => x.ChangedProperty == "rate_limit_per_user"); + + var name = nameModel.NewValue.ToObject(discord.ApiClient.Serializer); + var type = typeModel.NewValue.ToObject(discord.ApiClient.Serializer); + + var archived = archivedModel.NewValue.ToObject(discord.ApiClient.Serializer); + var autoArchiveDuration = autoArchiveDurationModel.NewValue.ToObject(discord.ApiClient.Serializer); + var locked = lockedModel.NewValue.ToObject(discord.ApiClient.Serializer); + var rateLimit = rateLimitPerUserModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + + var threadInfo = log.Threads.FirstOrDefault(x => x.Id == id); + var threadChannel = threadInfo == null ? null : RestThreadChannel.Create(discord, (IGuild)null, threadInfo); + + return new ThreadCreateAuditLogData(threadChannel, id, name, type, archived, autoArchiveDuration, locked, rateLimit); + } + + // Doc Note: Corresponds to the *current* data + + /// + /// Gets the thread that was created if it still exists. + /// + /// + /// A thread object representing the thread that was created if it still exists, otherwise returns null. + /// + public IThreadChannel Thread { get; } + /// + /// Gets the snowflake ID of the thread. + /// + /// + /// A representing the snowflake identifier for the thread. + /// + public ulong ThreadId { get; } + /// + /// Gets the name of the thread. + /// + /// + /// A string containing the name of the thread. + /// + public string ThreadName { get; } + /// + /// Gets the type of the thread. + /// + /// + /// The type of thread. + /// + public ThreadType ThreadType { get; } + /// + /// Gets the value that indicates whether the thread is archived. + /// + /// + /// true if this thread has the Archived flag enabled; otherwise false. + /// + public bool IsArchived { get; } + /// + /// Gets the auto archive duration of the thread. + /// + /// + /// The thread auto archive duration of the thread. + /// + public ThreadArchiveDuration AutoArchiveDuration { get; } + /// + /// Gets the value that indicates whether the thread is locked. + /// + /// + /// true if this thread has the Locked flag enabled; otherwise false. + /// + public bool IsLocked { get; } + /// + /// Gets the slow-mode delay of the thread. + /// + /// + /// An representing the time in seconds required before the user can send another + /// message; 0 if disabled. + /// null if this is not mentioned in this entry. + /// + public int? SlowModeInterval { get; } + } +} diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ThreadDeleteAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ThreadDeleteAuditLogData.cs new file mode 100644 index 000000000..962ec1773 --- /dev/null +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ThreadDeleteAuditLogData.cs @@ -0,0 +1,103 @@ +using System.Linq; + +using Model = Discord.API.AuditLog; +using EntryModel = Discord.API.AuditLogEntry; + +namespace Discord.Rest +{ + /// + /// Contains a piece of audit log data related to a thread deletion. + /// + public class ThreadDeleteAuditLogData : IAuditLogData + { + private ThreadDeleteAuditLogData(ulong id, string name, ThreadType type, bool archived, + ThreadArchiveDuration autoArchiveDuration, bool locked, int? rateLimit) + { + ThreadId = id; + ThreadName = name; + ThreadType = type; + IsArchived = archived; + AutoArchiveDuration = autoArchiveDuration; + IsLocked = locked; + SlowModeInterval = rateLimit; + } + + internal static ThreadDeleteAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) + { + var changes = entry.Changes; + + var id = entry.TargetId.Value; + var thread = log.Threads.FirstOrDefault(x => x.Id == id); + + var nameModel = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "name"); + var typeModel = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "type"); + + var archivedModel = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "archived"); + var autoArchiveDurationModel = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "auto_archive_duration"); + var lockedModel = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "locked"); + var rateLimitPerUserModel = changes.FirstOrDefault(x => x.ChangedProperty == "rate_limit_per_user"); + + var name = nameModel.OldValue.ToObject(discord.ApiClient.Serializer); + var type = typeModel.OldValue.ToObject(discord.ApiClient.Serializer); + + var archived = archivedModel.OldValue.ToObject(discord.ApiClient.Serializer); + var autoArchiveDuration = autoArchiveDurationModel.OldValue.ToObject(discord.ApiClient.Serializer); + var locked = lockedModel.OldValue.ToObject(discord.ApiClient.Serializer); + var rateLimit = rateLimitPerUserModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + + return new ThreadDeleteAuditLogData(id, name, type, archived, autoArchiveDuration, locked, rateLimit); + } + + /// + /// Gets the snowflake ID of the deleted thread. + /// + /// + /// A representing the snowflake identifier for the deleted thread. + /// + public ulong ThreadId { get; } + /// + /// Gets the name of the deleted thread. + /// + /// + /// A string containing the name of the deleted thread. + /// + public string ThreadName { get; } + /// + /// Gets the type of the deleted thread. + /// + /// + /// The type of thread that was deleted. + /// + public ThreadType ThreadType { get; } + /// + /// Gets the value that indicates whether the deleted thread was archived. + /// + /// + /// true if this thread had the Archived flag enabled; otherwise false. + /// + public bool IsArchived { get; } + /// + /// Gets the thread auto archive duration of the deleted thread. + /// + /// + /// The thread auto archive duration of the thread that was deleted. + /// + public ThreadArchiveDuration AutoArchiveDuration { get; } + /// + /// Gets the value that indicates whether the deleted thread was locked. + /// + /// + /// true if this thread had the Locked flag enabled; otherwise false. + /// + public bool IsLocked { get; } + /// + /// Gets the slow-mode delay of the deleted thread. + /// + /// + /// An representing the time in seconds required before the user can send another + /// message; 0 if disabled. + /// null if this is not mentioned in this entry. + /// + public int? SlowModeInterval { get; } + } +} diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ThreadInfo.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ThreadInfo.cs new file mode 100644 index 000000000..0e01ba8a7 --- /dev/null +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ThreadInfo.cs @@ -0,0 +1,39 @@ +namespace Discord.Rest +{ + /// + /// Represents information for a thread. + /// + public class ThreadInfo + { + /// + /// Gets the name of the thread. + /// + public string Name { get; } + /// + /// Gets the value that indicates whether the thread is archived. + /// + public bool IsArchived { get; } + /// + /// Gets the auto archive duration of thread. + /// + public ThreadArchiveDuration AutoArchiveDuration { get; } + /// + /// Gets the value that indicates whether the thread is locked. + /// + public bool IsLocked { get; } + + /// + /// Gets the slow-mode delay of the ´thread. + /// + public int? SlowModeInterval { get; } + + internal ThreadInfo(string name, bool archived, ThreadArchiveDuration autoArchiveDuration, bool locked, int? rateLimit) + { + Name = name; + IsArchived = archived; + AutoArchiveDuration = autoArchiveDuration; + IsLocked = locked; + SlowModeInterval = rateLimit; + } + } +} diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ThreadUpdateAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ThreadUpdateAuditLogData.cs new file mode 100644 index 000000000..2b9b95418 --- /dev/null +++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/ThreadUpdateAuditLogData.cs @@ -0,0 +1,88 @@ +using System.Linq; + +using Model = Discord.API.AuditLog; +using EntryModel = Discord.API.AuditLogEntry; + +namespace Discord.Rest +{ + /// + /// Contains a piece of audit log data related to a thread update. + /// + public class ThreadUpdateAuditLogData : IAuditLogData + { + private ThreadUpdateAuditLogData(IThreadChannel thread, ThreadType type, ThreadInfo before, ThreadInfo after) + { + Thread = thread; + ThreadType = type; + Before = before; + After = After; + } + + internal static ThreadUpdateAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) + { + var changes = entry.Changes; + + var id = entry.TargetId.Value; + + var nameModel = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "name"); + var typeModel = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "type"); + + var archivedModel = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "archived"); + var autoArchiveDurationModel = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "auto_archive_duration"); + var lockedModel = entry.Changes.FirstOrDefault(x => x.ChangedProperty == "locked"); + var rateLimitPerUserModel = changes.FirstOrDefault(x => x.ChangedProperty == "rate_limit_per_user"); + + var type = typeModel.OldValue.ToObject(discord.ApiClient.Serializer); + + var oldName = nameModel.OldValue.ToObject(discord.ApiClient.Serializer); + var oldArchived = archivedModel.OldValue.ToObject(discord.ApiClient.Serializer); + var oldAutoArchiveDuration = autoArchiveDurationModel.OldValue.ToObject(discord.ApiClient.Serializer); + var oldLocked = lockedModel.OldValue.ToObject(discord.ApiClient.Serializer); + var oldRateLimit = rateLimitPerUserModel?.OldValue?.ToObject(discord.ApiClient.Serializer); + var before = new ThreadInfo(oldName, oldArchived, oldAutoArchiveDuration, oldLocked, oldRateLimit); + + var newName = nameModel.NewValue.ToObject(discord.ApiClient.Serializer); + var newArchived = archivedModel.NewValue.ToObject(discord.ApiClient.Serializer); + var newAutoArchiveDuration = autoArchiveDurationModel.NewValue.ToObject(discord.ApiClient.Serializer); + var newLocked = lockedModel.NewValue.ToObject(discord.ApiClient.Serializer); + var newRateLimit = rateLimitPerUserModel?.NewValue?.ToObject(discord.ApiClient.Serializer); + var after = new ThreadInfo(newName, newArchived, newAutoArchiveDuration, newLocked, newRateLimit); + + var threadInfo = log.Threads.FirstOrDefault(x => x.Id == id); + var threadChannel = threadInfo == null ? null : RestThreadChannel.Create(discord, (IGuild)null, threadInfo); + + return new ThreadUpdateAuditLogData(threadChannel,type, before, after); + } + + // Doc Note: Corresponds to the *current* data + + /// + /// Gets the thread that was created if it still exists. + /// + /// + /// A thread object representing the thread that was created if it still exists, otherwise returns null. + /// + public IThreadChannel Thread { get; } + /// + /// Gets the type of the thread. + /// + /// + /// The type of thread. + /// + public ThreadType ThreadType { get; } + /// + /// Gets the thread information before the changes. + /// + /// + /// A thread information object representing the thread before the changes were made. + /// + public ThreadInfo Before { get; } + /// + /// Gets the thread information after the changes. + /// + /// + /// A thread information object representing the thread after the changes were made. + /// + public ThreadInfo After { get; } + } +} diff --git a/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs index 57de0eb45..f97c536c8 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs @@ -270,7 +270,7 @@ namespace Discord.Rest /// /// A task that represents the asynchronous create operation. The task result contains a /// - public async Task CreateThreadAsync(string name, ThreadType type = ThreadType.PublicThread, + public virtual async Task CreateThreadAsync(string name, ThreadType type = ThreadType.PublicThread, ThreadArchiveDuration autoArchiveDuration = ThreadArchiveDuration.OneDay, IMessage message = null, bool? invitable = null, int? slowmode = null, RequestOptions options = null) { var model = await ThreadHelper.CreateThreadAsync(Discord, this, name, type, autoArchiveDuration, message, invitable, slowmode, options); diff --git a/src/Discord.Net.Rest/Entities/Channels/ThreadHelper.cs b/src/Discord.Net.Rest/Entities/Channels/ThreadHelper.cs index 917410f98..e0074ecff 100644 --- a/src/Discord.Net.Rest/Entities/Channels/ThreadHelper.cs +++ b/src/Discord.Net.Rest/Entities/Channels/ThreadHelper.cs @@ -21,6 +21,9 @@ namespace Discord.Rest if (type == ThreadType.PrivateThread && !features.HasFeature(GuildFeature.PrivateThreads)) throw new ArgumentException($"The guild {channel.Guild.Name} does not have the PRIVATE_THREADS feature!", nameof(type)); + if (channel is INewsChannel && type != ThreadType.NewsThread) + throw new ArgumentException($"{nameof(type)} must be a {ThreadType.NewsThread} in News channels"); + var args = new StartThreadParams { Name = name, diff --git a/src/Discord.Net.Rest/Entities/Interactions/CommandBase/RestCommandBase.cs b/src/Discord.Net.Rest/Entities/Interactions/CommandBase/RestCommandBase.cs index a9efb6de1..338942a30 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/CommandBase/RestCommandBase.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/CommandBase/RestCommandBase.cs @@ -76,9 +76,9 @@ namespace Discord.Rest bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, - RequestOptions options = null, MessageComponent component = null, - Embed embed = null) + Embed embed = null, + RequestOptions options = null) { if (!IsValidToken) throw new InvalidOperationException("Interaction token is no longer valid"); @@ -115,7 +115,7 @@ namespace Discord.Rest Type = InteractionResponseType.ChannelMessageWithSource, Data = new API.InteractionCallbackData { - Content = text, + Content = text ?? Optional.Unspecified, AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, Embeds = embeds.Select(x => x.ToModel()).ToArray(), TTS = isTTS, @@ -132,37 +132,29 @@ namespace Discord.Rest } } - lock (_lock) + try { - _hasResponded = true; + return SerializePayload(response); + } + finally + { + lock (_lock) + { + _hasResponded = true; + } } - - return SerializePayload(response); } - /// - /// Sends a followup message for this interaction. - /// - /// The text of the message to be sent. - /// A array of embeds to send with this response. Max 10. - /// if the message should be read out by a text-to-speech reader, otherwise . - /// if the response should be hidden to everyone besides the invoker of the command, otherwise . - /// The allowed mentions for this response. - /// The request options for this response. - /// A to be sent with this response. - /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. - /// - /// The sent message. - /// + /// public override async Task FollowupAsync( string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, - RequestOptions options = null, MessageComponent component = null, - Embed embed = null) + Embed embed = null, + RequestOptions options = null) { if (!IsValidToken) throw new InvalidOperationException("Interaction token is no longer valid"); @@ -190,23 +182,8 @@ namespace Discord.Rest return await InteractionHelper.SendFollowupAsync(Discord, args, Token, Channel, options); } - /// - /// Sends a followup message for this interaction. - /// - /// The text of the message to be sent. - /// The file to upload. - /// The file name of the attachment. - /// A array of embeds to send with this response. Max 10. - /// if the message should be read out by a text-to-speech reader, otherwise . - /// if the response should be hidden to everyone besides the invoker of the command, otherwise . - /// The allowed mentions for this response. - /// The request options for this response. - /// A to be sent with this response. - /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. - /// - /// The sent message. - /// - public override async Task FollowupWithFileAsync( + /// + public override Task FollowupWithFileAsync( Stream fileStream, string fileName, string text = null, @@ -214,9 +191,9 @@ namespace Discord.Rest bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, - RequestOptions options = null, - MessageComponent component = null, - Embed embed = null) + MessageComponent components = null, + Embed embed = null, + RequestOptions options = null) { if (!IsValidToken) throw new InvalidOperationException("Interaction token is no longer valid"); @@ -225,55 +202,59 @@ namespace Discord.Rest if (embed != null) embeds = new[] { embed }.Concat(embeds).ToArray(); - 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, 10, nameof(embeds), "A max of 10 embeds are allowed."); Preconditions.NotNull(fileStream, nameof(fileStream), "File Stream must have data"); Preconditions.NotNullOrEmpty(fileName, nameof(fileName), "File Name must not be empty or null"); - var args = new API.Rest.CreateWebhookMessageParams - { - Content = text, - AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, - IsTTS = isTTS, - Embeds = embeds.Select(x => x.ToModel()).ToArray(), - Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified, - File = fileStream is not null ? new MultipartFile(fileStream, fileName) : Optional.Unspecified - }; + return FollowupWithFileAsync(new FileAttachment(fileStream, fileName), text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options); + } - if (ephemeral) - args.Flags = MessageFlags.Ephemeral; + /// + public override Task FollowupWithFileAsync( + string filePath, + string fileName = null, + string text = null, + Embed[] embeds = null, + bool isTTS = false, + bool ephemeral = false, + AllowedMentions allowedMentions = null, + MessageComponent components = null, + Embed embed = null, + RequestOptions options = null) + { + Preconditions.NotNullOrEmpty(filePath, nameof(filePath), "Path must exist"); - return await InteractionHelper.SendFollowupAsync(Discord, args, Token, Channel, options); + fileName ??= Path.GetFileName(filePath); + Preconditions.NotNullOrEmpty(fileName, nameof(fileName), "File Name must not be empty or null"); + + return FollowupWithFileAsync(new FileAttachment(File.OpenRead(filePath), fileName), text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options); } - /// - /// Sends a followup message for this interaction. - /// - /// The text of the message to be sent. - /// The file to upload. - /// The file name of the attachment. - /// A array of embeds to send with this response. Max 10. - /// if the message should be read out by a text-to-speech reader, otherwise . - /// if the response should be hidden to everyone besides the invoker of the command, otherwise . - /// The allowed mentions for this response. - /// The request options for this response. - /// A to be sent with this response. - /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. - /// - /// The sent message. - /// - public override async Task FollowupWithFileAsync( - string filePath, + /// + public override Task FollowupWithFileAsync( + FileAttachment attachment, string text = null, - string fileName = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, - RequestOptions options = null, - MessageComponent component = null, - Embed embed = null) + MessageComponent components = null, + Embed embed = null, + RequestOptions options = null) + { + return FollowupWithFilesAsync(new FileAttachment[] { attachment }, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options); + } + + /// + public override async Task FollowupWithFilesAsync( + IEnumerable attachments, + string text = null, + Embed[] embeds = null, + bool isTTS = false, + bool ephemeral = false, + AllowedMentions allowedMentions = null, + MessageComponent components = null, + Embed embed = null, + RequestOptions options = null) { if (!IsValidToken) throw new InvalidOperationException("Interaction token is no longer valid"); @@ -285,25 +266,35 @@ namespace Discord.Rest 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, 10, nameof(embeds), "A max of 10 embeds are allowed."); - Preconditions.NotNullOrEmpty(filePath, nameof(filePath), "Path must exist"); - fileName ??= Path.GetFileName(filePath); - Preconditions.NotNullOrEmpty(fileName, nameof(fileName), "File Name must not be empty or null"); + foreach (var attachment in attachments) + { + Preconditions.NotNullOrEmpty(attachment.FileName, nameof(attachment.FileName), "File Name must not be empty or null"); + } - var args = new API.Rest.CreateWebhookMessageParams + // check that user flag and user Id list are exclusive, same with role flag and role Id list + if (allowedMentions != null && allowedMentions.AllowedTypes.HasValue) { - Content = text, - AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, - IsTTS = isTTS, - Embeds = embeds.Select(x => x.ToModel()).ToArray(), - Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified, - File = !string.IsNullOrEmpty(filePath) ? new MultipartFile(new MemoryStream(File.ReadAllBytes(filePath), false), fileName) : Optional.Unspecified - }; + if (allowedMentions.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Users) && + allowedMentions.UserIds != null && allowedMentions.UserIds.Count > 0) + { + throw new ArgumentException("The Users flag is mutually exclusive with the list of User Ids.", nameof(allowedMentions)); + } + + if (allowedMentions.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Roles) && + allowedMentions.RoleIds != null && allowedMentions.RoleIds.Count > 0) + { + throw new ArgumentException("The Roles flag is mutually exclusive with the list of Role Ids.", nameof(allowedMentions)); + } + } + + var flags = MessageFlags.None; if (ephemeral) - args.Flags = MessageFlags.Ephemeral; + flags |= MessageFlags.Ephemeral; - return await InteractionHelper.SendFollowupAsync(Discord, args, Token, Channel, options); + var args = new API.Rest.UploadWebhookFileParams(attachments.ToArray()) { Flags = flags, Content = text, IsTTS = isTTS, Embeds = embeds.Any() ? embeds.Select(x => x.ToModel()).ToArray() : Optional.Unspecified, AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, MessageComponents = components?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified }; + return await InteractionHelper.SendFollowupAsync(Discord, args, Token, Channel, options).ConfigureAwait(false); } /// diff --git a/src/Discord.Net.Rest/Entities/Interactions/ContextMenuCommands/MessageCommands/RestMessageCommand.cs b/src/Discord.Net.Rest/Entities/Interactions/ContextMenuCommands/MessageCommands/RestMessageCommand.cs index 53055cac3..7a85d2e0a 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/ContextMenuCommands/MessageCommands/RestMessageCommand.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/ContextMenuCommands/MessageCommands/RestMessageCommand.cs @@ -41,5 +41,8 @@ namespace Discord.Rest //IMessageCommandInteraction /// IMessageCommandInteractionData IMessageCommandInteraction.Data => Data; + //IApplicationCommandInteraction + /// + IApplicationCommandInteractionData IApplicationCommandInteraction.Data => Data; } } diff --git a/src/Discord.Net.Rest/Entities/Interactions/ContextMenuCommands/UserCommands/RestUserCommand.cs b/src/Discord.Net.Rest/Entities/Interactions/ContextMenuCommands/UserCommands/RestUserCommand.cs index 58f1ed375..7f55fd61b 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/ContextMenuCommands/UserCommands/RestUserCommand.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/ContextMenuCommands/UserCommands/RestUserCommand.cs @@ -44,5 +44,9 @@ namespace Discord.Rest //IUserCommandInteractionData /// IUserCommandInteractionData IUserCommandInteraction.Data => Data; + + //IApplicationCommandInteraction + /// + IApplicationCommandInteractionData IApplicationCommandInteraction.Data => Data; } } diff --git a/src/Discord.Net.Rest/Entities/Interactions/InteractionHelper.cs b/src/Discord.Net.Rest/Entities/Interactions/InteractionHelper.cs index 7cfc6a2ec..b20cfe2ed 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/InteractionHelper.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/InteractionHelper.cs @@ -34,17 +34,20 @@ namespace Discord.Rest return client.ApiClient.BulkOverwriteGlobalApplicationCommandsAsync(Array.Empty(), options); } - public static Task SendInteractionResponseAsync(BaseDiscordClient client, InteractionResponse response, - ulong interactionId, string interactionToken, RequestOptions options = null) + public static async Task SendInteractionResponseAsync(BaseDiscordClient client, InteractionResponse response, + IDiscordInteraction interaction, IMessageChannel channel = null, RequestOptions options = null) { - return client.ApiClient.CreateInteractionResponseAsync(response, interactionId, interactionToken, options); + await client.ApiClient.CreateInteractionResponseAsync(response, interaction.Id, interaction.Token, options).ConfigureAwait(false); + return RestInteractionMessage.Create(client, response, interaction, channel); } public static async Task GetOriginalResponseAsync(BaseDiscordClient client, IMessageChannel channel, IDiscordInteraction interaction, RequestOptions options = null) { var model = await client.ApiClient.GetInteractionResponseAsync(interaction.Token, options).ConfigureAwait(false); - return RestInteractionMessage.Create(client, model, interaction.Token, channel); + if(model != null) + return RestInteractionMessage.Create(client, model, interaction.Token, channel); + return null; } public static async Task SendFollowupAsync(BaseDiscordClient client, CreateWebhookMessageParams args, @@ -55,6 +58,15 @@ namespace Discord.Rest var entity = RestFollowupMessage.Create(client, model, token, channel); return entity; } + + public static async Task SendFollowupAsync(BaseDiscordClient client, UploadWebhookFileParams args, + string token, IMessageChannel channel, RequestOptions options = null) + { + var model = await client.ApiClient.CreateInteractionFollowupMessageAsync(args, token, options).ConfigureAwait(false); + + var entity = RestFollowupMessage.Create(client, model, token, channel); + return entity; + } #endregion #region Global commands @@ -427,7 +439,7 @@ namespace Discord.Rest { result ??= Array.Empty(); - Preconditions.AtMost(result.Count(), 20, nameof(result), "A maximum of 20 choices are allowed!"); + Preconditions.AtMost(result.Count(), 25, nameof(result), "A maximum of 25 choices are allowed!"); var apiArgs = new InteractionResponse { diff --git a/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs b/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs index eb47e15aa..9660bf7b0 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs @@ -64,9 +64,9 @@ namespace Discord.Rest /// if the message should be read out by a text-to-speech reader, otherwise . /// if the response should be hidden to everyone besides the invoker of the command, otherwise . /// The allowed mentions for this response. - /// The request options for this response. /// A to be sent with this response. /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// The request options for this response. /// /// A string that contains json to write back to the incoming http request. /// @@ -76,9 +76,9 @@ namespace Discord.Rest bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, - RequestOptions options = null, MessageComponent component = null, - Embed embed = null) + Embed embed = null, + RequestOptions options = null) { if (!IsValidToken) throw new InvalidOperationException("Interaction token is no longer valid"); @@ -237,29 +237,16 @@ namespace Discord.Rest return SerializePayload(response); } - /// - /// Sends a followup message for this interaction. - /// - /// The text of the message to be sent. - /// A array of embeds to send with this response. Max 10. - /// if the message should be read out by a text-to-speech reader, otherwise . - /// if the response should be hidden to everyone besides the invoker of the command, otherwise . - /// The allowed mentions for this response. - /// The request options for this response. - /// A to be sent with this response. - /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. - /// - /// The sent message. - /// + /// public override async Task FollowupAsync( string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, - RequestOptions options = null, MessageComponent component = null, - Embed embed = null) + Embed embed = null, + RequestOptions options = null) { if (!IsValidToken) throw new InvalidOperationException("Interaction token is no longer valid"); @@ -284,11 +271,11 @@ namespace Discord.Rest if (ephemeral) args.Flags = MessageFlags.Ephemeral; - return await InteractionHelper.SendFollowupAsync(Discord, args, Token, Message.Channel, options).ConfigureAwait(false); + return await InteractionHelper.SendFollowupAsync(Discord, args, Token, Channel, options); } /// - public override async Task FollowupWithFileAsync( + public override Task FollowupWithFileAsync( Stream fileStream, string fileName, string text = null, @@ -296,9 +283,9 @@ namespace Discord.Rest bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, - RequestOptions options = null, - MessageComponent component = null, - Embed embed = null) + MessageComponent components = null, + Embed embed = null, + RequestOptions options = null) { if (!IsValidToken) throw new InvalidOperationException("Interaction token is no longer valid"); @@ -307,40 +294,59 @@ namespace Discord.Rest if (embed != null) embeds = new[] { embed }.Concat(embeds).ToArray(); - 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, 10, nameof(embeds), "A max of 10 embeds are allowed."); Preconditions.NotNull(fileStream, nameof(fileStream), "File Stream must have data"); - Preconditions.NotNullOrWhitespace(fileName, nameof(fileName), "File Name must not be empty or null"); + Preconditions.NotNullOrEmpty(fileName, nameof(fileName), "File Name must not be empty or null"); - var args = new API.Rest.CreateWebhookMessageParams - { - Content = text, - AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, - IsTTS = isTTS, - Embeds = embeds.Select(x => x.ToModel()).ToArray(), - Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified, - File = fileStream is not null ? new MultipartFile(fileStream, fileName) : Optional.Unspecified - }; + return FollowupWithFileAsync(new FileAttachment(fileStream, fileName), text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options); + } - if (ephemeral) - args.Flags = MessageFlags.Ephemeral; + /// + public override Task FollowupWithFileAsync( + string filePath, + string fileName = null, + string text = null, + Embed[] embeds = null, + bool isTTS = false, + bool ephemeral = false, + AllowedMentions allowedMentions = null, + MessageComponent components = null, + Embed embed = null, + RequestOptions options = null) + { + Preconditions.NotNullOrEmpty(filePath, nameof(filePath), "Path must exist"); - return await InteractionHelper.SendFollowupAsync(Discord, args, Token, Message.Channel, options).ConfigureAwait(false); + fileName ??= Path.GetFileName(filePath); + Preconditions.NotNullOrEmpty(fileName, nameof(fileName), "File Name must not be empty or null"); + + return FollowupWithFileAsync(new FileAttachment(File.OpenRead(filePath), fileName), text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options); } /// - public override async Task FollowupWithFileAsync( - string filePath, + public override Task FollowupWithFileAsync( + FileAttachment attachment, string text = null, - string fileName = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, - RequestOptions options = null, - MessageComponent component = null, - Embed embed = null) + MessageComponent components = null, + Embed embed = null, + RequestOptions options = null) + { + return FollowupWithFilesAsync(new FileAttachment[] { attachment }, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options); + } + + /// + public override async Task FollowupWithFilesAsync( + IEnumerable attachments, + string text = null, + Embed[] embeds = null, + bool isTTS = false, + bool ephemeral = false, + AllowedMentions allowedMentions = null, + MessageComponent components = null, + Embed embed = null, + RequestOptions options = null) { if (!IsValidToken) throw new InvalidOperationException("Interaction token is no longer valid"); @@ -352,22 +358,35 @@ namespace Discord.Rest 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, 10, nameof(embeds), "A max of 10 embeds are allowed."); - Preconditions.NotNullOrWhitespace(filePath, nameof(filePath), "Path must exist"); - var args = new API.Rest.CreateWebhookMessageParams + foreach (var attachment in attachments) { - Content = text, - AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, - IsTTS = isTTS, - Embeds = embeds.Select(x => x.ToModel()).ToArray(), - Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified, - File = !string.IsNullOrEmpty(filePath) ? new MultipartFile(new MemoryStream(File.ReadAllBytes(filePath), false), fileName) : Optional.Unspecified - }; + Preconditions.NotNullOrEmpty(attachment.FileName, nameof(attachment.FileName), "File Name must not be empty or null"); + } + + // 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.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Users) && + allowedMentions.UserIds != null && allowedMentions.UserIds.Count > 0) + { + throw new ArgumentException("The Users flag is mutually exclusive with the list of User Ids.", nameof(allowedMentions)); + } + + if (allowedMentions.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Roles) && + allowedMentions.RoleIds != null && allowedMentions.RoleIds.Count > 0) + { + throw new ArgumentException("The Roles flag is mutually exclusive with the list of Role Ids.", nameof(allowedMentions)); + } + } + + var flags = MessageFlags.None; if (ephemeral) - args.Flags = MessageFlags.Ephemeral; + flags |= MessageFlags.Ephemeral; - return await InteractionHelper.SendFollowupAsync(Discord, args, Token, Message.Channel, options).ConfigureAwait(false); + var args = new API.Rest.UploadWebhookFileParams(attachments.ToArray()) { Flags = flags, Content = text, IsTTS = isTTS, Embeds = embeds.Any() ? embeds.Select(x => x.ToModel()).ToArray() : Optional.Unspecified, AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, MessageComponents = components?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified }; + return await InteractionHelper.SendFollowupAsync(Discord, args, Token, Channel, options).ConfigureAwait(false); } /// diff --git a/src/Discord.Net.Rest/Entities/Interactions/RestInteraction.cs b/src/Discord.Net.Rest/Entities/Interactions/RestInteraction.cs index 103c43ffb..35b356997 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/RestInteraction.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/RestInteraction.cs @@ -139,8 +139,6 @@ namespace Discord.Rest /// public abstract string Defer(bool ephemeral = false, RequestOptions options = null); - /// - public abstract Task FollowupAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null); /// /// Gets the original response for this interaction. /// @@ -154,14 +152,36 @@ namespace Discord.Rest /// /// A delegate containing the properties to modify the message with. /// The request options for this request. - /// A that represents the initial response. + /// + /// A task that represents an asynchronous send operation for delivering the message. The task result + /// contains the sent message. + /// public async Task ModifyOriginalResponseAsync(Action func, RequestOptions options = null) { var model = await InteractionHelper.ModifyInteractionResponseAsync(Discord, Token, func, options); return RestInteractionMessage.Create(Discord, model, Token, Channel); } /// - public abstract string Respond(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null); + public abstract string Respond(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent component = null, Embed embed = null, RequestOptions options = null); + + /// + /// Sends a followup message for this interaction. + /// + /// The text of the message to be sent. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// The request options for this response. + /// + /// A task that represents an asynchronous send operation for delivering the message. The task result + /// contains the sent message. + /// + public abstract Task FollowupAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); + /// /// Sends a followup message for this interaction. /// @@ -172,14 +192,16 @@ namespace Discord.Rest /// if the message should be read out by a text-to-speech reader, otherwise . /// if the response should be hidden to everyone besides the invoker of the command, otherwise . /// The allowed mentions for this response. - /// The request options for this response. - /// A to be sent with this response. + /// A to be sent with this response. /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// The request options for this response. /// - /// The sent message. + /// A task that represents an asynchronous send operation for delivering the message. The task result + /// contains the sent message. /// public abstract Task FollowupWithFileAsync(Stream fileStream, string fileName, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, - AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null); + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); + /// /// Sends a followup message for this interaction. /// @@ -190,35 +212,90 @@ namespace Discord.Rest /// if the message should be read out by a text-to-speech reader, otherwise . /// if the response should be hidden to everyone besides the invoker of the command, otherwise . /// The allowed mentions for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// The request options for this response. + /// + /// A task that represents an asynchronous send operation for delivering the message. The task result + /// contains the sent message. + /// + public abstract Task FollowupWithFileAsync(string filePath, string fileName = null, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); + + /// + /// Sends a followup message for this interaction. + /// + /// The attachment containing the file and description. + /// The text of the message to be sent. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. /// The request options for this response. - /// A to be sent with this response. + /// A to be sent with this response. /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. /// - /// The sent message. + /// A task that represents an asynchronous send operation for delivering the message. The task result + /// contains the sent message. /// - public abstract Task FollowupWithFileAsync(string filePath, string text = null, string fileName = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, - AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null); + public abstract Task FollowupWithFileAsync(FileAttachment attachment, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); + + /// + /// Sends a followup message for this interaction. + /// + /// A collection of attachments to upload. + /// The text of the message to be sent. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// The request options for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// + /// A task that represents an asynchronous send operation for delivering the message. The task result + /// contains the sent message. + /// + public abstract Task FollowupWithFilesAsync(IEnumerable attachments, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); #region IDiscordInteraction /// - Task IDiscordInteraction.RespondAsync(string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, RequestOptions options, MessageComponent component, Embed embed) - => Task.FromResult(Respond(text, embeds, isTTS, ephemeral, allowedMentions, options, component, embed)); + IUser IDiscordInteraction.User => User; + /// + Task IDiscordInteraction.RespondAsync(string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) + { + return Task.FromResult(null); + } + /// Task IDiscordInteraction.DeferAsync(bool ephemeral, RequestOptions options) => Task.FromResult(Defer(ephemeral, options)); - /// async Task IDiscordInteraction.FollowupAsync(string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, - RequestOptions options, MessageComponent component, Embed embed) - => await FollowupAsync(text, embeds, isTTS, ephemeral, allowedMentions, options, component, embed).ConfigureAwait(false); - + MessageComponent component, Embed embed, RequestOptions options) + => await FollowupAsync(text, embeds, isTTS, ephemeral, allowedMentions, component, embed, options).ConfigureAwait(false); /// async Task IDiscordInteraction.GetOriginalResponseAsync(RequestOptions options) => await GetOriginalResponseAsync(options).ConfigureAwait(false); - /// async Task IDiscordInteraction.ModifyOriginalResponseAsync(Action func, RequestOptions options) => await ModifyOriginalResponseAsync(func, options).ConfigureAwait(false); + /// + async Task IDiscordInteraction.FollowupWithFileAsync(Stream fileStream, string fileName, string text, Embed[] embeds, bool isTTS, bool ephemeral, + AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) + => await FollowupWithFileAsync(fileStream, fileName, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); + /// + async Task IDiscordInteraction.FollowupWithFileAsync(string filePath, string text, string fileName, Embed[] embeds, bool isTTS, bool ephemeral, + AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) + => await FollowupWithFileAsync(filePath, text, fileName, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); + /// + async Task IDiscordInteraction.FollowupWithFileAsync(FileAttachment attachment, string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) + => await FollowupWithFileAsync(attachment, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); + /// + async Task IDiscordInteraction.FollowupWithFilesAsync(IEnumerable attachments, string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) + => await FollowupWithFilesAsync(attachments, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); #endregion } } diff --git a/src/Discord.Net.Rest/Entities/Interactions/RestPingInteraction.cs b/src/Discord.Net.Rest/Entities/Interactions/RestPingInteraction.cs index f979a4df2..5ed5e054a 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/RestPingInteraction.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/RestPingInteraction.cs @@ -38,9 +38,11 @@ namespace Discord.Rest } public override string Defer(bool ephemeral = false, RequestOptions options = null) => throw new NotSupportedException(); - public override Task FollowupAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) => throw new NotSupportedException(); - public override Task FollowupWithFileAsync(Stream fileStream, string fileName, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) => throw new NotSupportedException(); - public override Task FollowupWithFileAsync(string filePath, string text = null, string fileName = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) => throw new NotSupportedException(); - public override string Respond(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) => throw new NotSupportedException(); + public override string Respond(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent component = null, Embed embed = null, RequestOptions options = null) => throw new NotSupportedException(); + public override Task FollowupAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) => throw new NotSupportedException(); + public override Task FollowupWithFileAsync(Stream fileStream, string fileName, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) => throw new NotSupportedException(); + public override Task FollowupWithFileAsync(string filePath, string fileName = null, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) => throw new NotSupportedException(); + public override Task FollowupWithFileAsync(FileAttachment attachment, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) => throw new NotSupportedException(); + public override Task FollowupWithFilesAsync(IEnumerable attachments, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) => throw new NotSupportedException(); } } diff --git a/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestAutocompleteInteraction.cs b/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestAutocompleteInteraction.cs index 3b879cd4e..1abeb4b3f 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestAutocompleteInteraction.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestAutocompleteInteraction.cs @@ -46,7 +46,7 @@ namespace Discord.Rest /// /// The set of choices for the user to pick from. /// - /// A max of 20 choices are allowed. Passing for this argument will show the executing user that + /// A max of 25 choices are allowed. Passing for this argument will show the executing user that /// there is no choices for their autocompleted input. /// /// @@ -93,7 +93,7 @@ namespace Discord.Rest /// /// The set of choices for the user to pick from. /// - /// A max of 20 choices are allowed. Passing for this argument will show the executing user that + /// A max of 25 choices are allowed. Passing for this argument will show the executing user that /// there is no choices for their autocompleted input. /// /// @@ -102,31 +102,21 @@ namespace Discord.Rest /// public string Respond(RequestOptions options = null, params AutocompleteResult[] result) => Respond(result, options); - - /// - [Obsolete("Autocomplete interactions cannot be deferred!", true)] public override string Defer(bool ephemeral = false, RequestOptions options = null) - => throw new NotSupportedException("Autocomplete interactions cannot be deferred!"); + => throw new NotSupportedException("Autocomplete interactions don't support this method!"); + public override string Respond(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent component = null, Embed embed = null, RequestOptions options = null) + => throw new NotSupportedException("Autocomplete interactions don't support this method!"); + public override Task FollowupAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) + => throw new NotSupportedException("Autocomplete interactions don't support this method!"); + public override Task FollowupWithFileAsync(Stream fileStream, string fileName, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) + => throw new NotSupportedException("Autocomplete interactions don't support this method!"); + public override Task FollowupWithFileAsync(string filePath, string fileName = null, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) + => throw new NotSupportedException("Autocomplete interactions don't support this method!"); + public override Task FollowupWithFileAsync(FileAttachment attachment, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) + => throw new NotSupportedException("Autocomplete interactions don't support this method!"); + public override Task FollowupWithFilesAsync(IEnumerable attachments, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) + => throw new NotSupportedException("Autocomplete interactions don't support this method!"); - /// - [Obsolete("Autocomplete interactions cannot have followups!", true)] - public override Task FollowupAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) - => throw new NotSupportedException("Autocomplete interactions cannot be deferred!"); - - /// - [Obsolete("Autocomplete interactions cannot have followups!", true)] - public override Task FollowupWithFileAsync(Stream fileStream, string fileName, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) - => throw new NotSupportedException("Autocomplete interactions cannot be deferred!"); - - /// - [Obsolete("Autocomplete interactions cannot have followups!", true)] - public override Task FollowupWithFileAsync(string filePath, string text = null, string fileName = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) - => throw new NotSupportedException("Autocomplete interactions cannot be deferred!"); - - /// - [Obsolete("Autocomplete interactions cannot have normal responses!", true)] - public override string Respond(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) - => throw new NotSupportedException("Autocomplete interactions cannot be deferred!"); //IAutocompleteInteraction /// diff --git a/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestSlashCommand.cs b/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestSlashCommand.cs index 785e39a12..21184fcf6 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestSlashCommand.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestSlashCommand.cs @@ -44,5 +44,9 @@ namespace Discord.Rest //ISlashCommandInteraction /// IApplicationCommandInteractionData ISlashCommandInteraction.Data => Data; + + //IApplicationCommandInteraction + /// + IApplicationCommandInteractionData IApplicationCommandInteraction.Data => Data; } } diff --git a/src/Discord.Net.Rest/Entities/Messages/RestFollowupMessage.cs b/src/Discord.Net.Rest/Entities/Messages/RestFollowupMessage.cs index 693d36e56..aa5dd5aeb 100644 --- a/src/Discord.Net.Rest/Entities/Messages/RestFollowupMessage.cs +++ b/src/Discord.Net.Rest/Entities/Messages/RestFollowupMessage.cs @@ -5,7 +5,7 @@ using Model = Discord.API.Message; namespace Discord.Rest { /// - /// Represents a REST-based follow up message sent by a bot responding to a slash command. + /// Represents a REST-based follow up message sent by a bot responding to an interaction. /// public class RestFollowupMessage : RestUserMessage { diff --git a/src/Discord.Net.Rest/Entities/Messages/RestInteractionMessage.cs b/src/Discord.Net.Rest/Entities/Messages/RestInteractionMessage.cs index 26beb03b6..815f1953f 100644 --- a/src/Discord.Net.Rest/Entities/Messages/RestInteractionMessage.cs +++ b/src/Discord.Net.Rest/Entities/Messages/RestInteractionMessage.cs @@ -1,15 +1,16 @@ using System; using System.Threading.Tasks; -using Model = Discord.API.Message; +using MessageModel = Discord.API.Message; +using Model = Discord.API.InteractionResponse; namespace Discord.Rest { /// - /// Represents the initial REST-based response to a slash command. + /// Represents the initial REST-based response to an interaction. /// public class RestInteractionMessage : RestUserMessage { - // Token used to delete/modify this followup message + public InteractionResponseType ResponseType { get; private set; } internal string Token { get; } internal RestInteractionMessage(BaseDiscordClient discord, ulong id, IUser author, string token, IMessageChannel channel) @@ -18,18 +19,31 @@ namespace Discord.Rest Token = token; } - internal static RestInteractionMessage Create(BaseDiscordClient discord, Model model, string token, IMessageChannel channel) + internal static RestInteractionMessage Create(BaseDiscordClient discord, MessageModel model, string token, IMessageChannel channel) { var entity = new RestInteractionMessage(discord, model.Id, model.Author.IsSpecified ? RestUser.Create(discord, model.Author.Value) : discord.CurrentUser, token, channel); entity.Update(model); return entity; } - internal new void Update(Model model) + internal static RestInteractionMessage Create(BaseDiscordClient discord, Model model, IDiscordInteraction interaction, IMessageChannel channel) + { + var entity = new RestInteractionMessage(discord, interaction.Id, discord.CurrentUser, interaction.Token, channel); + entity.Update(model, interaction); + return entity; + } + + internal new void Update(MessageModel model) { base.Update(model); } + internal void Update(Model model, IDiscordInteraction interaction) + { + ResponseType = model.Type; + base.Update(model.ToMessage(interaction)); + } + /// /// Deletes this object and all of it's children. /// diff --git a/src/Discord.Net.Rest/Extensions/EntityExtensions.cs b/src/Discord.Net.Rest/Extensions/EntityExtensions.cs index 9e1e5102f..bca2e8715 100644 --- a/src/Discord.Net.Rest/Extensions/EntityExtensions.cs +++ b/src/Discord.Net.Rest/Extensions/EntityExtensions.cs @@ -39,7 +39,7 @@ namespace Discord.Rest return new RoleTags( model.BotId.IsSpecified ? model.BotId.Value : null, model.IntegrationId.IsSpecified ? model.IntegrationId.Value : null, - model.IsPremiumSubscriber.GetValueOrDefault(false) ?? false); + model.IsPremiumSubscriber.IsSpecified); } public static API.Embed ToModel(this Embed entity) { @@ -170,5 +170,48 @@ namespace Discord.Rest { return new Overwrite(model.TargetId, model.TargetType, new OverwritePermissions(model.Allow, model.Deny)); } + + public static API.Message ToMessage(this API.InteractionResponse model, IDiscordInteraction interaction) + { + if (model.Data.IsSpecified) + { + var data = model.Data.Value; + var messageModel = new API.Message + { + IsTextToSpeech = data.TTS, + Content = data.Content, + Embeds = data.Embeds, + AllowedMentions = data.AllowedMentions, + Components = data.Components, + Flags = data.Flags, + }; + + if(interaction is IApplicationCommandInteraction command) + { + messageModel.Interaction = new API.MessageInteraction + { + Id = command.Id, + Name = command.Data.Name, + Type = InteractionType.ApplicationCommand, + User = new API.User + { + Username = command.User.Username, + Avatar = command.User.AvatarId, + Bot = command.User.IsBot, + Discriminator = command.User.Discriminator, + PublicFlags = command.User.PublicFlags.HasValue ? command.User.PublicFlags.Value : Optional.Unspecified, + Id = command.User.Id, + } + }; + } + + return messageModel; + } + + return new API.Message + { + Id = interaction.Id, + }; + } } } diff --git a/src/Discord.Net.Rest/Interactions/RestInteractionContext.cs b/src/Discord.Net.Rest/Interactions/RestInteractionContext.cs new file mode 100644 index 000000000..7e73caa4f --- /dev/null +++ b/src/Discord.Net.Rest/Interactions/RestInteractionContext.cs @@ -0,0 +1,80 @@ +namespace Discord.Rest +{ + /// + /// Represents a Rest based context of an . + /// + public class RestInteractionContext : IInteractionContext + where TInteraction : RestInteraction + { + /// + /// Gets the that the command will be executed with. + /// + public DiscordRestClient Client { get; } + + /// + /// Gets the the command originated from. + /// + /// + /// Will be null if the command is from a DM Channel. + /// + public RestGuild Guild { get; } + + /// + /// Gets the the command originated from. + /// + public IRestMessageChannel Channel { get; } + + /// + /// Gets the who executed the command. + /// + public RestUser User { get; } + + /// + /// Gets the the command was recieved with. + /// + public TInteraction Interaction { get; } + + /// + /// Initializes a new . + /// + /// The underlying client. + /// The underlying interaction. + public RestInteractionContext(DiscordRestClient client, TInteraction interaction) + { + Client = client; + Guild = interaction.Guild; + Channel = interaction.Channel; + User = interaction.User; + Interaction = interaction; + } + + // IInterationContext + /// + IDiscordClient IInteractionContext.Client => Client; + + /// + IGuild IInteractionContext.Guild => Guild; + + /// + IMessageChannel IInteractionContext.Channel => Channel; + + /// + IUser IInteractionContext.User => User; + + /// + IDiscordInteraction IInteractionContext.Interaction => Interaction; + } + + /// + /// Represents a Rest based context of an + /// + public class RestInteractionContext : RestInteractionContext + { + /// + /// Initializes a new + /// + /// The underlying client + /// The underlying interaction + public RestInteractionContext(DiscordRestClient client, RestInteraction interaction) : base(client, interaction) { } + } +} diff --git a/src/Discord.Net.Rest/Net/Converters/GuildFeaturesConverter.cs b/src/Discord.Net.Rest/Net/Converters/GuildFeaturesConverter.cs index 9f82b440b..22363199d 100644 --- a/src/Discord.Net.Rest/Net/Converters/GuildFeaturesConverter.cs +++ b/src/Discord.Net.Rest/Net/Converters/GuildFeaturesConverter.cs @@ -2,10 +2,6 @@ using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Text.RegularExpressions; -using System.Threading.Tasks; namespace Discord.Net.Converters { @@ -18,9 +14,6 @@ namespace Discord.Net.Converters public override bool CanWrite => false; public override bool CanRead => true; - - private Regex _readRegex = new Regex(@"_(\w)"); - public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { var obj = JToken.Load(reader); @@ -31,20 +24,11 @@ namespace Discord.Net.Converters foreach(var item in arr) { - var name = _readRegex.Replace(item.ToLower(), (x) => - { - return x.Groups[1].Value.ToUpper(); - }); - - name = name[0].ToString().ToUpper() + new string(name.Skip(1).ToArray()); - - try + if (Enum.TryParse(string.Concat(item.Split('_')), true, out var result)) { - var result = (GuildFeature)Enum.Parse(typeof(GuildFeature), name); - features |= result; } - catch + else { experimental.Add(item); } diff --git a/src/Discord.Net.WebSocket/Discord.Net.WebSocket.csproj b/src/Discord.Net.WebSocket/Discord.Net.WebSocket.csproj index 4121e7d00..2ce89be5b 100644 --- a/src/Discord.Net.WebSocket/Discord.Net.WebSocket.csproj +++ b/src/Discord.Net.WebSocket/Discord.Net.WebSocket.csproj @@ -1,16 +1,16 @@ - + - + Discord.Net.WebSocket Discord.WebSocket A core Discord.Net library containing the WebSocket client and models. - net461;netstandard2.0;netstandard2.1 - netstandard2.0;netstandard2.1 + net6.0;net5.0;net461;netstandard2.0;netstandard2.1 + net6.0;net5.0;netstandard2.0;netstandard2.1 true - \ No newline at end of file + diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 9ef827778..eb64b5173 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -1954,7 +1954,7 @@ namespace Discord.WebSocket } } - var before = user.Presence.Clone(); + var before = user.Presence?.Clone(); user.Update(State, data.User); user.Update(data); await TimedInvokeAsync(_presenceUpdated, nameof(PresenceUpdated), user, before, user.Presence).ConfigureAwait(false); @@ -2627,7 +2627,7 @@ namespace Discord.WebSocket var newEvent = guild.AddOrUpdateEvent(data); - await TimedInvokeAsync(_guildScheduledEventCancelled, nameof(GuildScheduledEventCreated), newEvent).ConfigureAwait(false); + await TimedInvokeAsync(_guildScheduledEventCreated, nameof(GuildScheduledEventCreated), newEvent).ConfigureAwait(false); } break; case "GUILD_SCHEDULED_EVENT_UPDATE": diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketNewsChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketNewsChannel.cs index 944dd2d7f..eed8f9374 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketNewsChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketNewsChannel.cs @@ -35,5 +35,6 @@ namespace Discord.WebSocket /// public override int SlowModeInterval => throw new NotSupportedException("News channels do not support Slow Mode."); + } } diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs index aea1bfda5..8dc8e9844 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs @@ -112,7 +112,7 @@ namespace Discord.WebSocket /// /// A task that represents the asynchronous create operation. The task result contains a /// - public async Task CreateThreadAsync(string name, ThreadType type = ThreadType.PublicThread, + public virtual async Task CreateThreadAsync(string name, ThreadType type = ThreadType.PublicThread, ThreadArchiveDuration autoArchiveDuration = ThreadArchiveDuration.OneDay, IMessage message = null, bool? invitable = null, int? slowmode = null, RequestOptions options = null) { var model = await ThreadHelper.CreateThreadAsync(Discord, this, name, type, autoArchiveDuration, message, invitable, slowmode, options); diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/ContextMenuCommands/MessageCommands/SocketMessageCommand.cs b/src/Discord.Net.WebSocket/Entities/Interaction/ContextMenuCommands/MessageCommands/SocketMessageCommand.cs index 0aa061439..fee33f8cb 100644 --- a/src/Discord.Net.WebSocket/Entities/Interaction/ContextMenuCommands/MessageCommands/SocketMessageCommand.cs +++ b/src/Discord.Net.WebSocket/Entities/Interaction/ContextMenuCommands/MessageCommands/SocketMessageCommand.cs @@ -41,5 +41,9 @@ namespace Discord.WebSocket //IDiscordInteraction /// IDiscordInteractionData IDiscordInteraction.Data => Data; + + //IApplicationCommandInteraction + /// + IApplicationCommandInteractionData IApplicationCommandInteraction.Data => Data; } } diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/ContextMenuCommands/UserCommands/SocketUserCommand.cs b/src/Discord.Net.WebSocket/Entities/Interaction/ContextMenuCommands/UserCommands/SocketUserCommand.cs index 40ee5b537..75e8ebff9 100644 --- a/src/Discord.Net.WebSocket/Entities/Interaction/ContextMenuCommands/UserCommands/SocketUserCommand.cs +++ b/src/Discord.Net.WebSocket/Entities/Interaction/ContextMenuCommands/UserCommands/SocketUserCommand.cs @@ -41,5 +41,9 @@ namespace Discord.WebSocket //IDiscordInteraction /// IDiscordInteractionData IDiscordInteraction.Data => Data; + + //IApplicationCommandInteraction + /// + IApplicationCommandInteractionData IApplicationCommandInteraction.Data => Data; } } diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponent.cs b/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponent.cs index 928a4302a..d5d5f959d 100644 --- a/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponent.cs +++ b/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponent.cs @@ -72,15 +72,15 @@ namespace Discord.WebSocket } } /// - public override async Task RespondAsync( + public override async Task RespondAsync( string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, - RequestOptions options = null, MessageComponent component = null, - Embed embed = null) + Embed embed = null, + RequestOptions options = null) { if (!IsValidToken) throw new InvalidOperationException("Interaction token is no longer valid"); @@ -136,11 +136,16 @@ namespace Discord.WebSocket } } - await InteractionHelper.SendInteractionResponseAsync(Discord, response, Id, Token, options).ConfigureAwait(false); - - lock (_lock) + try { - HasResponded = true; + return await InteractionHelper.SendInteractionResponseAsync(Discord, response, this, Channel, options).ConfigureAwait(false); + } + finally + { + lock (_lock) + { + HasResponded = true; + } } } @@ -231,7 +236,7 @@ namespace Discord.WebSocket } } - await InteractionHelper.SendInteractionResponseAsync(Discord, response, Id, Token, options).ConfigureAwait(false); + await InteractionHelper.SendInteractionResponseAsync(Discord, response, this, Channel, options).ConfigureAwait(false); lock (_lock) { @@ -246,9 +251,9 @@ namespace Discord.WebSocket bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, - RequestOptions options = null, MessageComponent component = null, - Embed embed = null) + Embed embed = null, + RequestOptions options = null) { if (!IsValidToken) throw new InvalidOperationException("Interaction token is no longer valid"); @@ -273,11 +278,11 @@ namespace Discord.WebSocket if (ephemeral) args.Flags = MessageFlags.Ephemeral; - return await InteractionHelper.SendFollowupAsync(Discord.Rest, args, Token, Channel, options).ConfigureAwait(false); + return await InteractionHelper.SendFollowupAsync(Discord.Rest, args, Token, Channel, options); } /// - public override async Task FollowupWithFileAsync( + public override Task FollowupWithFileAsync( Stream fileStream, string fileName, string text = null, @@ -285,9 +290,9 @@ namespace Discord.WebSocket bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, - RequestOptions options = null, - MessageComponent component = null, - Embed embed = null) + MessageComponent components = null, + Embed embed = null, + RequestOptions options = null) { if (!IsValidToken) throw new InvalidOperationException("Interaction token is no longer valid"); @@ -296,40 +301,59 @@ namespace Discord.WebSocket if (embed != null) embeds = new[] { embed }.Concat(embeds).ToArray(); - 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, 10, nameof(embeds), "A max of 10 embeds are allowed."); Preconditions.NotNull(fileStream, nameof(fileStream), "File Stream must have data"); - Preconditions.NotNullOrWhitespace(fileName, nameof(fileName), "File Name must not be empty or null"); + Preconditions.NotNullOrEmpty(fileName, nameof(fileName), "File Name must not be empty or null"); - var args = new API.Rest.CreateWebhookMessageParams - { - Content = text, - AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, - IsTTS = isTTS, - Embeds = embeds.Select(x => x.ToModel()).ToArray(), - Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified, - File = fileStream is not null ? new MultipartFile(fileStream, fileName) : Optional.Unspecified - }; + return FollowupWithFileAsync(new FileAttachment(fileStream, fileName), text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options); + } - if (ephemeral) - args.Flags = MessageFlags.Ephemeral; + /// + public override Task FollowupWithFileAsync( + string filePath, + string fileName = null, + string text = null, + Embed[] embeds = null, + bool isTTS = false, + bool ephemeral = false, + AllowedMentions allowedMentions = null, + MessageComponent components = null, + Embed embed = null, + RequestOptions options = null) + { + Preconditions.NotNullOrEmpty(filePath, nameof(filePath), "Path must exist"); - return await InteractionHelper.SendFollowupAsync(Discord.Rest, args, Token, Channel, options).ConfigureAwait(false); + fileName ??= Path.GetFileName(filePath); + Preconditions.NotNullOrEmpty(fileName, nameof(fileName), "File Name must not be empty or null"); + + return FollowupWithFileAsync(new FileAttachment(File.OpenRead(filePath), fileName), text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options); } /// - public override async Task FollowupWithFileAsync( - string filePath, + public override Task FollowupWithFileAsync( + FileAttachment attachment, string text = null, - string fileName = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, - RequestOptions options = null, - MessageComponent component = null, - Embed embed = null) + MessageComponent components = null, + Embed embed = null, + RequestOptions options = null) + { + return FollowupWithFilesAsync(new FileAttachment[] { attachment }, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options); + } + + /// + public override async Task FollowupWithFilesAsync( + IEnumerable attachments, + string text = null, + Embed[] embeds = null, + bool isTTS = false, + bool ephemeral = false, + AllowedMentions allowedMentions = null, + MessageComponent components = null, + Embed embed = null, + RequestOptions options = null) { if (!IsValidToken) throw new InvalidOperationException("Interaction token is no longer valid"); @@ -341,22 +365,35 @@ namespace Discord.WebSocket 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, 10, nameof(embeds), "A max of 10 embeds are allowed."); - Preconditions.NotNullOrWhitespace(filePath, nameof(filePath), "Path must exist"); - var args = new API.Rest.CreateWebhookMessageParams + foreach (var attachment in attachments) { - Content = text, - AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, - IsTTS = isTTS, - Embeds = embeds.Select(x => x.ToModel()).ToArray(), - Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified, - File = !string.IsNullOrEmpty(filePath) ? new MultipartFile(new MemoryStream(File.ReadAllBytes(filePath), false), fileName) : Optional.Unspecified - }; + Preconditions.NotNullOrEmpty(attachment.FileName, nameof(attachment.FileName), "File Name must not be empty or null"); + } + + // 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.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Users) && + allowedMentions.UserIds != null && allowedMentions.UserIds.Count > 0) + { + throw new ArgumentException("The Users flag is mutually exclusive with the list of User Ids.", nameof(allowedMentions)); + } + + if (allowedMentions.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Roles) && + allowedMentions.RoleIds != null && allowedMentions.RoleIds.Count > 0) + { + throw new ArgumentException("The Roles flag is mutually exclusive with the list of Role Ids.", nameof(allowedMentions)); + } + } + + var flags = MessageFlags.None; if (ephemeral) - args.Flags = MessageFlags.Ephemeral; + flags |= MessageFlags.Ephemeral; - return await InteractionHelper.SendFollowupAsync(Discord.Rest, args, Token, Channel, options).ConfigureAwait(false); + var args = new API.Rest.UploadWebhookFileParams(attachments.ToArray()) { Flags = flags, Content = text, IsTTS = isTTS, Embeds = embeds.Any() ? embeds.Select(x => x.ToModel()).ToArray() : Optional.Unspecified, AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, MessageComponents = components?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified }; + return await InteractionHelper.SendFollowupAsync(Discord, args, Token, Channel, options).ConfigureAwait(false); } /// diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketAutocompleteInteraction.cs b/src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketAutocompleteInteraction.cs index 5637cb6f0..955d7d53f 100644 --- a/src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketAutocompleteInteraction.cs +++ b/src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketAutocompleteInteraction.cs @@ -45,7 +45,7 @@ namespace Discord.WebSocket /// /// The set of choices for the user to pick from. /// - /// A max of 20 choices are allowed. Passing for this argument will show the executing user that + /// A max of 25 choices are allowed. Passing for this argument will show the executing user that /// there is no choices for their autocompleted input. /// /// @@ -80,7 +80,7 @@ namespace Discord.WebSocket /// /// The set of choices for the user to pick from. /// - /// A max of 20 choices are allowed. Passing for this argument will show the executing user that + /// A max of 25 choices are allowed. Passing for this argument will show the executing user that /// there is no choices for their autocompleted input. /// /// @@ -89,31 +89,20 @@ namespace Discord.WebSocket /// public Task RespondAsync(RequestOptions options = null, params AutocompleteResult[] result) => RespondAsync(result, options); - - /// - [Obsolete("Autocomplete interactions cannot be deferred!", true)] + public override Task RespondAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) + => throw new NotSupportedException("Autocomplete interactions don't support this method!"); + public override Task FollowupAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) + => throw new NotSupportedException("Autocomplete interactions don't support this method!"); + public override Task FollowupWithFileAsync(Stream fileStream, string fileName, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) + => throw new NotSupportedException("Autocomplete interactions don't support this method!"); + public override Task FollowupWithFileAsync(string filePath, string fileName = null, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) + => throw new NotSupportedException("Autocomplete interactions don't support this method!"); + public override Task FollowupWithFileAsync(FileAttachment attachment, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) + => throw new NotSupportedException("Autocomplete interactions don't support this method!"); + public override Task FollowupWithFilesAsync(IEnumerable attachments, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) + => throw new NotSupportedException("Autocomplete interactions don't support this method!"); public override Task DeferAsync(bool ephemeral = false, RequestOptions options = null) - => throw new NotSupportedException("Autocomplete interactions cannot be deferred!"); - - /// - [Obsolete("Autocomplete interactions cannot have followups!", true)] - public override Task FollowupAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) - => throw new NotSupportedException("Autocomplete interactions cannot be deferred!"); - - /// - [Obsolete("Autocomplete interactions cannot have followups!", true)] - public override Task FollowupWithFileAsync(Stream fileStream, string fileName, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) - => throw new NotSupportedException("Autocomplete interactions cannot be deferred!"); - - /// - [Obsolete("Autocomplete interactions cannot have followups!", true)] - public override Task FollowupWithFileAsync(string filePath, string text = null, string fileName = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) - => throw new NotSupportedException("Autocomplete interactions cannot be deferred!"); - - /// - [Obsolete("Autocomplete interactions cannot have normal responses!", true)] - public override Task RespondAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) - => throw new NotSupportedException("Autocomplete interactions cannot be deferred!"); + => throw new NotSupportedException("Autocomplete interactions don't support this method!"); //IAutocompleteInteraction /// diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketSlashCommand.cs b/src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketSlashCommand.cs index 5343bb225..5934a3864 100644 --- a/src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketSlashCommand.cs +++ b/src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketSlashCommand.cs @@ -41,5 +41,9 @@ namespace Discord.WebSocket //IDiscordInteraction /// IDiscordInteractionData IDiscordInteraction.Data => Data; + + //IApplicationCommandInteraction + /// + IApplicationCommandInteractionData IApplicationCommandInteraction.Data => Data; } } diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketCommandBase.cs b/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketCommandBase.cs index 92303d488..7c90878be 100644 --- a/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketCommandBase.cs +++ b/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketCommandBase.cs @@ -1,6 +1,7 @@ using Discord.Net.Rest; using Discord.Rest; using System; +using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; @@ -68,15 +69,15 @@ namespace Discord.WebSocket } /// - public override async Task RespondAsync( + public override async Task RespondAsync( string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, - RequestOptions options = null, MessageComponent component = null, - Embed embed = null) + Embed embed = null, + RequestOptions options = null) { if (!IsValidToken) throw new InvalidOperationException("Interaction token is no longer valid"); @@ -113,7 +114,7 @@ namespace Discord.WebSocket Type = InteractionResponseType.ChannelMessageWithSource, Data = new API.InteractionCallbackData { - Content = text, + Content = text ?? Optional.Unspecified, AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, Embeds = embeds.Select(x => x.ToModel()).ToArray(), TTS = isTTS, @@ -130,11 +131,16 @@ namespace Discord.WebSocket } } - await InteractionHelper.SendInteractionResponseAsync(Discord, response, Id, Token, options).ConfigureAwait(false); - - lock (_lock) + try { - HasResponded = true; + return await InteractionHelper.SendInteractionResponseAsync(Discord, response, this, Channel, options).ConfigureAwait(false); + } + finally + { + lock (_lock) + { + HasResponded = true; + } } } @@ -145,9 +151,9 @@ namespace Discord.WebSocket bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, - RequestOptions options = null, MessageComponent component = null, - Embed embed = null) + Embed embed = null, + RequestOptions options = null) { if (!IsValidToken) throw new InvalidOperationException("Interaction token is no longer valid"); @@ -162,7 +168,7 @@ namespace Discord.WebSocket var args = new API.Rest.CreateWebhookMessageParams { - Content = text, + Content = text ?? Optional.Unspecified, AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, IsTTS = isTTS, Embeds = embeds.Select(x => x.ToModel()).ToArray(), @@ -176,7 +182,7 @@ namespace Discord.WebSocket } /// - public override async Task FollowupWithFileAsync( + public override Task FollowupWithFileAsync( Stream fileStream, string fileName, string text = null, @@ -184,9 +190,9 @@ namespace Discord.WebSocket bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, - RequestOptions options = null, - MessageComponent component = null, - Embed embed = null) + MessageComponent components = null, + Embed embed = null, + RequestOptions options = null) { if (!IsValidToken) throw new InvalidOperationException("Interaction token is no longer valid"); @@ -195,40 +201,59 @@ namespace Discord.WebSocket if (embed != null) embeds = new[] { embed }.Concat(embeds).ToArray(); - 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, 10, nameof(embeds), "A max of 10 embeds are allowed."); Preconditions.NotNull(fileStream, nameof(fileStream), "File Stream must have data"); Preconditions.NotNullOrEmpty(fileName, nameof(fileName), "File Name must not be empty or null"); - var args = new API.Rest.CreateWebhookMessageParams - { - Content = text, - AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, - IsTTS = isTTS, - Embeds = embeds.Select(x => x.ToModel()).ToArray(), - Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified, - File = fileStream is not null ? new MultipartFile(fileStream, fileName) : Optional.Unspecified - }; + return FollowupWithFileAsync(new FileAttachment(fileStream, fileName), text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options); + } - if (ephemeral) - args.Flags = MessageFlags.Ephemeral; + /// + public override Task FollowupWithFileAsync( + string filePath, + string fileName = null, + string text = null, + Embed[] embeds = null, + bool isTTS = false, + bool ephemeral = false, + AllowedMentions allowedMentions = null, + MessageComponent components = null, + Embed embed = null, + RequestOptions options = null) + { + Preconditions.NotNullOrEmpty(filePath, nameof(filePath), "Path must exist"); - return await InteractionHelper.SendFollowupAsync(Discord.Rest, args, Token, Channel, options); + fileName ??= Path.GetFileName(filePath); + Preconditions.NotNullOrEmpty(fileName, nameof(fileName), "File Name must not be empty or null"); + + return FollowupWithFileAsync(new FileAttachment(File.OpenRead(filePath), fileName), text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options); } /// - public override async Task FollowupWithFileAsync( - string filePath, + public override Task FollowupWithFileAsync( + FileAttachment attachment, string text = null, - string fileName = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, - RequestOptions options = null, - MessageComponent component = null, - Embed embed = null) + MessageComponent components = null, + Embed embed = null, + RequestOptions options = null) + { + return FollowupWithFilesAsync(new FileAttachment[] { attachment }, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options); + } + + /// + public override async Task FollowupWithFilesAsync( + IEnumerable attachments, + string text = null, + Embed[] embeds = null, + bool isTTS = false, + bool ephemeral = false, + AllowedMentions allowedMentions = null, + MessageComponent components = null, + Embed embed = null, + RequestOptions options = null) { if (!IsValidToken) throw new InvalidOperationException("Interaction token is no longer valid"); @@ -240,25 +265,35 @@ namespace Discord.WebSocket 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, 10, nameof(embeds), "A max of 10 embeds are allowed."); - Preconditions.NotNullOrEmpty(filePath, nameof(filePath), "Path must exist"); - fileName ??= Path.GetFileName(filePath); - Preconditions.NotNullOrEmpty(fileName, nameof(fileName), "File Name must not be empty or null"); + foreach (var attachment in attachments) + { + Preconditions.NotNullOrEmpty(attachment.FileName, nameof(attachment.FileName), "File Name must not be empty or null"); + } - var args = new API.Rest.CreateWebhookMessageParams + // check that user flag and user Id list are exclusive, same with role flag and role Id list + if (allowedMentions != null && allowedMentions.AllowedTypes.HasValue) { - Content = text, - AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, - IsTTS = isTTS, - Embeds = embeds.Select(x => x.ToModel()).ToArray(), - Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified, - File = !string.IsNullOrEmpty(filePath) ? new MultipartFile(new MemoryStream(File.ReadAllBytes(filePath), false), fileName) : Optional.Unspecified - }; + if (allowedMentions.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Users) && + allowedMentions.UserIds != null && allowedMentions.UserIds.Count > 0) + { + throw new ArgumentException("The Users flag is mutually exclusive with the list of User Ids.", nameof(allowedMentions)); + } + + if (allowedMentions.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Roles) && + allowedMentions.RoleIds != null && allowedMentions.RoleIds.Count > 0) + { + throw new ArgumentException("The Roles flag is mutually exclusive with the list of Role Ids.", nameof(allowedMentions)); + } + } + + var flags = MessageFlags.None; if (ephemeral) - args.Flags = MessageFlags.Ephemeral; + flags |= MessageFlags.Ephemeral; - return await InteractionHelper.SendFollowupAsync(Discord.Rest, args, Token, Channel, options); + var args = new API.Rest.UploadWebhookFileParams(attachments.ToArray()) { Flags = flags, Content = text, IsTTS = isTTS, Embeds = embeds.Any() ? embeds.Select(x => x.ToModel()).ToArray() : Optional.Unspecified, AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, MessageComponents = components?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified }; + return await InteractionHelper.SendFollowupAsync(Discord, args, Token, Channel, options).ConfigureAwait(false); } /// diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/SocketInteraction.cs b/src/Discord.Net.WebSocket/Entities/Interaction/SocketInteraction.cs index f0465d336..1bfd77479 100644 --- a/src/Discord.Net.WebSocket/Entities/Interaction/SocketInteraction.cs +++ b/src/Discord.Net.WebSocket/Entities/Interaction/SocketInteraction.cs @@ -4,6 +4,7 @@ using System.Threading.Tasks; using Model = Discord.API.Interaction; using DataModel = Discord.API.ApplicationCommandInteractionData; using System.IO; +using System.Collections.Generic; namespace Discord.WebSocket { @@ -130,13 +131,13 @@ namespace Discord.WebSocket /// if the message should be read out by a text-to-speech reader, otherwise . /// if the response should be hidden to everyone besides the invoker of the command, otherwise . /// The allowed mentions for this response. - /// The request options for this response. - /// A to be sent with this response. + /// A to be sent with this response. /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// The request options for this response. /// Message content is too long, length must be less or equal to . /// The parameters provided were invalid or the token was invalid. - public abstract Task RespondAsync(string text = null, Embed[] embeds = null, bool isTTS = false, - bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null); + public abstract Task RespondAsync(string text = null, Embed[] embeds = null, bool isTTS = false, + bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); /// /// Sends a followup message for this interaction. @@ -146,14 +147,14 @@ namespace Discord.WebSocket /// if the message should be read out by a text-to-speech reader, otherwise . /// if the response should be hidden to everyone besides the invoker of the command, otherwise . /// The allowed mentions for this response. - /// The request options for this response. - /// A to be sent with this response. + /// A to be sent with this response. /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// The request options for this response. /// /// The sent message. /// public abstract Task FollowupAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, - AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null); + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); /// /// Sends a followup message for this interaction. @@ -165,14 +166,14 @@ namespace Discord.WebSocket /// if the message should be read out by a text-to-speech reader, otherwise . /// if the response should be hidden to everyone besides the invoker of the command, otherwise . /// The allowed mentions for this response. - /// The request options for this response. - /// A to be sent with this response. + /// A to be sent with this response. /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// The request options for this response. /// /// The sent message. /// public abstract Task FollowupWithFileAsync(Stream fileStream, string fileName, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, - AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null); + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); /// /// Sends a followup message for this interaction. @@ -184,14 +185,52 @@ namespace Discord.WebSocket /// if the message should be read out by a text-to-speech reader, otherwise . /// if the response should be hidden to everyone besides the invoker of the command, otherwise . /// The allowed mentions for this response. - /// The request options for this response. - /// A to be sent with this response. + /// A to be sent with this response. /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// The request options for this response. /// /// The sent message. /// - public abstract Task FollowupWithFileAsync(string filePath, string text = null, string fileName = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, - AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null); + public abstract Task FollowupWithFileAsync(string filePath, string fileName = null, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); + + /// + /// Sends a followup message for this interaction. + /// + /// The attachment containing the file and description. + /// The text of the message to be sent. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// The request options for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// + /// A task that represents an asynchronous send operation for delivering the message. The task result + /// contains the sent message. + /// + public abstract Task FollowupWithFileAsync(FileAttachment attachment, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); + + /// + /// Sends a followup message for this interaction. + /// + /// A collection of attachments to upload. + /// The text of the message to be sent. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// The request options for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// + /// A task that represents an asynchronous send operation for delivering the message. The task result + /// contains the sent message. + /// + public abstract Task FollowupWithFilesAsync(IEnumerable attachments, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); /// /// Gets the original response for this interaction. @@ -222,22 +261,37 @@ namespace Discord.WebSocket /// A task that represents the asynchronous operation of acknowledging the interaction. /// public abstract Task DeferAsync(bool ephemeral = false, RequestOptions options = null); - + #endregion #region IDiscordInteraction /// - async Task IDiscordInteraction.FollowupAsync(string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, - RequestOptions options, MessageComponent component, Embed embed) - => await FollowupAsync(text, embeds, isTTS, ephemeral, allowedMentions, options, component, embed).ConfigureAwait(false); + IUser IDiscordInteraction.User => User; /// async Task IDiscordInteraction.GetOriginalResponseAsync(RequestOptions options) => await GetOriginalResponseAsync(options).ConfigureAwait(false); - /// async Task IDiscordInteraction.ModifyOriginalResponseAsync(Action func, RequestOptions options) => await ModifyOriginalResponseAsync(func, options).ConfigureAwait(false); + /// + async Task IDiscordInteraction.RespondAsync(string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) + => await RespondAsync(text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); + /// + async Task IDiscordInteraction.FollowupAsync(string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) + => await FollowupAsync(text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); + /// + async Task IDiscordInteraction.FollowupWithFileAsync(Stream fileStream, string fileName, string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) + => await FollowupWithFileAsync(fileStream, fileName, text, embeds, isTTS, ephemeral, allowedMentions, components, embed).ConfigureAwait(false); + /// + async Task IDiscordInteraction.FollowupWithFileAsync(string filePath, string fileName, string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) + => await FollowupWithFileAsync(filePath, fileName, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); + /// + async Task IDiscordInteraction.FollowupWithFileAsync(FileAttachment attachment, string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) + => await FollowupWithFileAsync(attachment, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); + /// + async Task IDiscordInteraction.FollowupWithFilesAsync(IEnumerable attachments, string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) + => await FollowupWithFilesAsync(attachments, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); #endregion } } diff --git a/src/Discord.Net.WebSocket/Entities/Stickers/SocketSticker.cs b/src/Discord.Net.WebSocket/Entities/Stickers/SocketSticker.cs index ee45720b5..b9c122cce 100644 --- a/src/Discord.Net.WebSocket/Entities/Stickers/SocketSticker.cs +++ b/src/Discord.Net.WebSocket/Entities/Stickers/SocketSticker.cs @@ -88,5 +88,11 @@ namespace Discord.WebSocket return base.Equals(obj); } + + /// + public override int GetHashCode() + { + return base.GetHashCode(); + } } } diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs index ae3319227..d64597501 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs @@ -176,6 +176,8 @@ namespace Discord.WebSocket internal override void Update(PresenceModel model) { + Presence ??= new SocketPresence(); + Presence.Update(model); GlobalUser.Update(model); } diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs index b38bd8a4a..b14993991 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs @@ -59,6 +59,7 @@ namespace Discord.WebSocket } internal virtual bool Update(ClientState state, Model model) { + Presence ??= new SocketPresence(); bool hasChanges = false; if (model.Avatar.IsSpecified && model.Avatar.Value != AvatarId) { @@ -94,6 +95,7 @@ namespace Discord.WebSocket internal virtual void Update(PresenceModel model) { + Presence ??= new SocketPresence(); Presence.Update(model); } diff --git a/src/Discord.Net.WebSocket/Interactions/ShardedInteractionContext.cs b/src/Discord.Net.WebSocket/Interactions/ShardedInteractionContext.cs new file mode 100644 index 000000000..ac0524172 --- /dev/null +++ b/src/Discord.Net.WebSocket/Interactions/ShardedInteractionContext.cs @@ -0,0 +1,43 @@ +using Discord.WebSocket; + +namespace Discord.Interactions +{ + /// + /// The sharded variant of . + /// + public class ShardedInteractionContext : SocketInteractionContext, IInteractionContext + where TInteraction : SocketInteraction + { + /// + /// Gets the that the command will be executed with. + /// + public new DiscordShardedClient Client { get; } + + /// + /// Initializes a . + /// + /// The underlying client. + /// The underlying interaction. + public ShardedInteractionContext (DiscordShardedClient client, TInteraction interaction) + : base(client.GetShard(GetShardId(client, ( interaction.User as SocketGuildUser )?.Guild)), interaction) + { + Client = client; + } + + private static int GetShardId (DiscordShardedClient client, IGuild guild) + => guild == null ? 0 : client.GetShardIdFor(guild); + } + + /// + /// The sharded variant of . + /// + public class ShardedInteractionContext : ShardedInteractionContext + { + /// + /// Initializes a . + /// + /// The underlying client. + /// The underlying interaction. + public ShardedInteractionContext(DiscordShardedClient client, SocketInteraction interaction) : base(client, interaction) { } + } +} diff --git a/src/Discord.Net.WebSocket/Interactions/SocketInteractionContext.cs b/src/Discord.Net.WebSocket/Interactions/SocketInteractionContext.cs new file mode 100644 index 000000000..4cd9ef264 --- /dev/null +++ b/src/Discord.Net.WebSocket/Interactions/SocketInteractionContext.cs @@ -0,0 +1,82 @@ +using Discord.WebSocket; + +namespace Discord.Interactions +{ + /// + /// Represents a Web-Socket based context of an . + /// + public class SocketInteractionContext : IInteractionContext + where TInteraction : SocketInteraction + { + /// + /// Gets the that the command will be executed with. + /// + public DiscordSocketClient Client { get; } + + /// + /// Gets the the command originated from. + /// + /// + /// Will be null if the command is from a DM Channel. + /// + public SocketGuild Guild { get; } + + /// + /// Gets the the command originated from. + /// + public ISocketMessageChannel Channel { get; } + + /// + /// Gets the who executed the command. + /// + public SocketUser User { get; } + + /// + /// Gets the the command was recieved with. + /// + public TInteraction Interaction { get; } + + /// + /// Initializes a new . + /// + /// The underlying client. + /// The underlying interaction. + public SocketInteractionContext(DiscordSocketClient client, TInteraction interaction) + { + Client = client; + Channel = interaction.Channel; + Guild = (interaction.User as SocketGuildUser)?.Guild; + User = interaction.User; + Interaction = interaction; + } + + // IInteractionContext + /// + IDiscordClient IInteractionContext.Client => Client; + + /// + IGuild IInteractionContext.Guild => Guild; + + /// + IMessageChannel IInteractionContext.Channel => Channel; + + /// + IUser IInteractionContext.User => User; + + /// + IDiscordInteraction IInteractionContext.Interaction => Interaction; + } + + /// + /// Represents a Web-Socket based context of an + /// + public class SocketInteractionContext : SocketInteractionContext + { + /// + /// Initializes a new + /// + /// The underlying client + /// The underlying interaction + public SocketInteractionContext(DiscordSocketClient client, SocketInteraction interaction) : base(client, interaction) { } + } +} diff --git a/src/Discord.Net.Webhook/Discord.Net.Webhook.csproj b/src/Discord.Net.Webhook/Discord.Net.Webhook.csproj index 24ae442d7..175b486d2 100644 --- a/src/Discord.Net.Webhook/Discord.Net.Webhook.csproj +++ b/src/Discord.Net.Webhook/Discord.Net.Webhook.csproj @@ -5,7 +5,7 @@ Discord.Net.Webhook Discord.Webhook A core Discord.Net library containing the Webhook client and models. - netstandard2.0;netstandard2.1 + net6.0;net5.0;netstandard2.0;netstandard2.1 diff --git a/test/Discord.Net.Analyzers.Tests/Discord.Net.Analyzers.Tests.csproj b/test/Discord.Net.Analyzers.Tests/Discord.Net.Analyzers.Tests.csproj index 1257041e4..460a2c9e9 100644 --- a/test/Discord.Net.Analyzers.Tests/Discord.Net.Analyzers.Tests.csproj +++ b/test/Discord.Net.Analyzers.Tests/Discord.Net.Analyzers.Tests.csproj @@ -1,7 +1,7 @@ - + - netcoreapp3.1 + net6.0 false @@ -10,8 +10,8 @@ - + diff --git a/test/Discord.Net.Tests.Integration/Discord.Net.Tests.Integration.csproj b/test/Discord.Net.Tests.Integration/Discord.Net.Tests.Integration.csproj index 8b16b2971..0f399ab68 100644 --- a/test/Discord.Net.Tests.Integration/Discord.Net.Tests.Integration.csproj +++ b/test/Discord.Net.Tests.Integration/Discord.Net.Tests.Integration.csproj @@ -1,7 +1,7 @@ - netcoreapp2.1 + net6.0 false @@ -10,7 +10,6 @@ - diff --git a/test/Discord.Net.Tests.Unit/Discord.Net.Tests.Unit.csproj b/test/Discord.Net.Tests.Unit/Discord.Net.Tests.Unit.csproj index 716c3ebc4..ec06c3c3d 100644 --- a/test/Discord.Net.Tests.Unit/Discord.Net.Tests.Unit.csproj +++ b/test/Discord.Net.Tests.Unit/Discord.Net.Tests.Unit.csproj @@ -1,7 +1,7 @@ - + - netcoreapp3.1 + net6.0 false @@ -9,7 +9,6 @@ - From 98b03be26a198c8e22ccd8ee51512092519b2fbe Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Mon, 6 Dec 2021 16:20:58 -0400 Subject: [PATCH 168/212] Update isRequired (#1959) --- .../Interactions/SlashCommands/SlashCommandBuilder.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Discord.Net.Core/Entities/Interactions/SlashCommands/SlashCommandBuilder.cs b/src/Discord.Net.Core/Entities/Interactions/SlashCommands/SlashCommandBuilder.cs index 074a52f32..ccfb2da0a 100644 --- a/src/Discord.Net.Core/Entities/Interactions/SlashCommands/SlashCommandBuilder.cs +++ b/src/Discord.Net.Core/Entities/Interactions/SlashCommands/SlashCommandBuilder.cs @@ -397,7 +397,7 @@ namespace Discord /// The largest number value the user can input. /// The current builder. public SlashCommandOptionBuilder AddOption(string name, ApplicationCommandOptionType type, - string description, bool? required = null, bool isDefault = false, bool isAutocomplete = false, double? minValue = null, double? maxValue = null, + string description, bool? isRequired = null, bool isDefault = false, bool isAutocomplete = false, double? minValue = null, double? maxValue = null, List options = null, List channelTypes = null, params ApplicationCommandOptionChoiceProperties[] choices) { // Make sure the name matches the requirements from discord @@ -423,7 +423,7 @@ namespace Discord { Name = name, Description = description, - IsRequired = required, + IsRequired = isRequired, IsDefault = isDefault, IsAutocomplete = isAutocomplete, MinValue = minValue, From 5a7e43a8cb33d0e04af3c754ba36926c5d2b936e Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Mon, 13 Dec 2021 04:47:54 -0400 Subject: [PATCH 169/212] V3 Final merge (#1966) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update azure-pipelines.yml * Update deploy.yml * Remove version tag from proj * Update deploy.yml * Removed versions from project files * Removed style of the nuget badge and added logo (#201) The style was not properly added to it and the plastic version does not look good with the discord badge. I thought it would look better with a logo * Fix Type not being set in SocketApplicationCommand * Remove useless GuildId property * meta: update XML * Add Autocomplete to SlashCommandOptionBuilder * Added autocomplete in SlashCommandOptionBuilder. (#206) Co-authored-by: Quin Lynch <49576606+quinchs@users.noreply.github.com> * Fix duplicate autocomplete * Fix #208 * Fix sub commands being interpreted as a parameter for autocomplete * Fix exposed optional * Support the discord:// protocol in buttons (#207) * Update UrlValidation.cs * Update ComponentBuilder.cs * Add docs and better error messages. * Fix wonky intentation * Add competing activity status type (#205) * Update GuildPermissionsTests.cs * Update GuildPermissions.cs * Add competing status type * Add Icons to IRole (#204) * Added icon field to IRole * Added GetGuildRoleIconUrl() * Added Clean Content Function (#174) * Added Clean Content Function * Fixed Spelling problems and bad var handling * Add StripMarkDown Method * Clean Content Expanded (#212) * Implement CleanContent In IMessage & RestMessage * Update Spelling and Documentation * Add SanatizeMessage to MessageHelper and Refactor Rest and Socket Message * Add event for autocomplete interaction (#214) * Spelling corrections (#215) * Remove null collections * Followup with file async warnings (#216) * Changed from NotNullOrWhitespace to NotNullOrEmpty * Added NotNullOrEmpty on filename * Added system to interpret from the path * Added a check for if it contains a period * It has been done, how ever it will break stuff * Changed to use ??= how ever still added error check * Added space under check * Changed from with a period to valid file extension * Added checks for SendFileAsync * Removed filename != null && * Add channel types in application command options. (#217) * add channel types in application command options * Indent Docs * Stage instance audit logs as well as thread audit log type * Update azure-pipelines.yml * Update azure-pipelines.yml * Fix system messages not including mentioned users. Added ContextMenuCommand message type * Remove file extension check (#218) * Fix NRE in modify guild channel * Fix 429's not being accounted for in ratelimit updates * meta: add net5 framework Co-Authored-By: MrCakeSlayer <13650699+MrCakeSlayer@users.noreply.github.com> * Proper doc logos (#221) * Update GuildPermissionsTests.cs * Update GuildPermissions.cs * Add competing activity status type * logo changes * logo text as path * add missing logo * Update package logo and favicon * Update docfx references * Remove Console.WriteLine * Rename Available to IsAvailable in stickers * Rename Default and Required to IsDefault and IsRequired in IApplicationCommandOption. Rename DefaultPermission to IsDefaultPermission in IApplicationCommand * Fix different rest channels not deserializing properly * Refactor summaries and boolean property names * General cleanup (#223) * General cleanup * Add Async suffix to SendAutocompleteResult * Fix more formatting * Fix unused RequestOptions in GetActiveThreadsAsync * Add message to ArgumentNullException * Ephemeral attachments * Add missing jsonproperty attribute * Add IMessage.Interaction * Update attachment checks for embed urls * meta: bump version * Remove old package configs and update image * Update package logos * Fix logo reference for azure * Deprecate old package definitions in favor for target file * Deprecate old package definitions in favor for target file Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com> * Update package ids * Fix url validation * meta: bump version * Fix assignment of UserMentions (#233) * Fix CleanContent (#231) * Fix SocketSlashCommandData access modifier. (#237) Fixes #229 * Update README with better header (#232) * Update README with better header Adds HTML elements that implement the main logo & improve the redirection tag positions. * Resolving border issue in light-mode * Update sponsor section * Implement checks for interaction respond times and multiple interaction responses. closes #236, #235 * Add response check to socket auto complete * meta: bump versions * Fix #239 * meta: bump version * meta: update logo * meta: bump versions * Revert received at time, confirmed by discord staff to be accurate * Update docs * Update CHANGELOG.md * meta: docs building * Update docs.yml * Update docs.yml * Fix docfx version * Update docs.yml * Update docs.bat * Rename docs repo for clone * update docfx version * Update docs.bat * Update docfx version * Remove docs from pipeline * FAQ revamped, metadata updated (#241) * FAQ revamped, metadata updated * Update FAQ.md * Update README.md * Docs index improvement * Fix InvalidOperationException in modify channel * feature: guild avatars, closes #238 * feature: modify role icons * meta: changelog * meta: bump version * Update README.md * Fix non value type options not being included in autocomplete * Add new activity flags (#254) * Add new activity flags * Add missing commas * Added support for GUILD_JOIN_REQUEST_DELETE event (#253) Fixes #247 * Adding BotHTTPInteraction user flag (#252) * animated guild banner support (#255) * Docs work (WIP) (#242) * Main page work * Metadata logo dir * More main page edits * Naming change * Dnet guide entries pruned * Add student hub guild directory channel (#256) * animated guild banner support * Add guild directory channel * Fix followup with file overwrite having incorrect parameter locations * Update GUILD_JOIN_REQUEST_DELETE event * Update head.tmpl.partial * Removed BannerId and AccentColor (#260) * Removed BannerId property, GetBannerURL method, and AccentColor property from IUser and socket entities. * Fixed errors in IUser.cs * Added back summary for GetAvatarUrl method in IUser.cs * Support Guild Boost Progress Bars (#262) * Support Guild Boost Progress Bars * Update SocketChannel.cs * Fix non-optional and unnecessary values. * Spelling * Reordering and consistency. * Remove log for reconnect * Add missing flags to SystemChannelMessageDeny (#267) * Rename new activity flags * Guild feature revamp and smart gateway intent checks * Get thread user implementation * Amend creating slash command guide (#269) * Adding BotHTTPInteraction user flag * Added comments explaining the Global command create stipulations. * Fix numeric type check for options * Add state checking to ConnectionManager.StartAsync (#272) * initial interface changes * Multi file upload + attachment editing * meta: bump versions * Update CHANGELOG.md * Update CHANGELOG.md * Support Min and Max values on ApplicationCommandOptions (#273) * Support Min and Max values on ApplicationCommandOptions * Support decimal min/max values * Docs imrpovments + use ToNullable * Logomark, doc settings edit (#258) * Logomark, doc settings edit * Replace standard logo * Bumping docfx plugins to latest release * Bump version metadata * Logo svg fix * Change default sticker behavior and add AlwaysResolveSticker to the config * Implement rest based interactions. Added ED25519 checks. Updated summaries. * Update package logo * Automatically fix ordering of optional command options (#276) * auto fix optional command option order * clean up indentation * Fix maximum number of Select Menu Options (#282) As of https://discord.com/developers/docs/interactions/message-components#select-menu-object-select-menu-structure the maximum number of options is 25, not less than 25. Hopefully the change catches all necessary locations * Add voice region to modify voice channels * Update summaries on rest interactions * Interaction Specific Interfaces (#283) * added interaction specific interfaces * fix build error * implement change requests * Update application * Add Guild Scheduled Events (#279) * guild events initial * sharded events * Add new gateway intents and fix bugs * More work on new changes to guild events * Update guild scheduled events * Added events to extended guild and add event start event * Update preconditions * Implement breaking changes guild guild events. Add guild event permissions * Update tests and change privacy level requirements * Update summaries and add docs for guild events * meta: bump version * Increment meta version (#285) * Increment meta version * Update docfx.json * Fix #289 and add configureawaits to rest based interactions * meta: bump version * Add GUILD_SCHEDULED_EVENT_USER_ADD and GUILD_SCHEDULED_EVENT_USER_REMOVE (#287) * Remove newline * Fix autocomplete result value * meta: bump versions * Add `GuildScheduledEventUserAdd` and `GuildScheduledEventUserRemove` to sharded client * Make RestUserCommand public (#292) * Fix Components not showing on FUWF (#288) (#293) Adds Components to Payload JSON Generation * Implement smarter rest resolvable interaction data. Fixes #294 * Add UseInteractionSnowflakeDate to config #286 * Implement Better Discord Errors (#291) * Initial error parsing * Implement better errors * Add missing error codes * Add voice disconnect opcodes * Remove unused class, add summaries to discordjsonerror, and remove public constructor of slash command properties * Add error code summary * Update error message summary * Update src/Discord.Net.Core/DiscordJsonError.cs Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com> * Update src/Discord.Net.WebSocket/API/Voice/VoiceCloseCode.cs Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com> * Fix autocomplete result value Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com> * Change the minimum length of slash commands to 1 (#284) * Change the minimum length of slash commands to 1. This is the correct value according to the docs and it has been changed after user feedback. * Fix the limit in 3 other places Co-authored-by: quin lynch * Add new thread creation properties * Add role emoji. Fixes #295 * Fix mocked text channel * Fix precondition checks. Closes #281 * Initial fix (#297) * meta: bump version * Update property names and summaries * Add Audit Log Data classes for Threads (#301) * Add ThreadDeleteAuditLogData * Add ThreadCreateAuditLogData * Fix ThreadCreateAuditLogData using old instead of new value * Create ThreadInfo Class * Fix Thread not being a property * Add ThreadUpdateAuditLogData * Cleanup usings * Add RateLimit to ThreadAuditLogData classese Co-authored-by: Playwo * Fix #300 * Interaction Command Service (#52) * init * attribute rename * added docs * Revert "added docs" This reverts commit 30aa0c4ef7e190a726ec2cb3a183da5e2f9b07d9. * added basic docs * Switched to nested modules for method grouping, changed command traversal method * interface now declares the helper methods * added new method with predicate parameter * added config option for deleting the "thinking" state of unhandled commands * Slash Module Base now exposes helper methods for interacting with the underlying Interaction * Revert "interface now declares the helper methods" This reverts commit 541b0be93530e880c482962d41cd6e0cefa4e771. * IDiscordInteraction now declares the helper methods * new cancelable wait interaction method * added support for user created command types * added option type 'number', added write method to typereaders * added enum and timespan typereaders * revert * added interface method declarations * inline docs * revert interface changes * current user id assignment in sharded client * added wildcards to interactions, tweaks * tweaks on interaction wild card pattern * Pre-app menu * fixed CurrentUserId and added application command events * made event listener persistent * Sharded Client Application Command Events and CurrentUserId Issue (#105) * added interface method declarations * inline docs * current user id assignment in sharded client * fixed CurrentUserId and added application command events * made event listener persistent * removed option type converter, task offloaded to typereaders * added "deleteOGResponse" method to module base * Upstream fetch for Discord-Net-Labs/release/3.x * solved merge conflicts * removed merge artifacts * added new Context Command attributes * added Conxtext Command info classes and changed the naming scheme for the existing classes * added IgnoreGroupNames prop to command attributes * added ContextCommand builder * moved command builders to internal * added ContextCommand methods to the command service * command service now uses InteractionHelper to register commands * bug fixes and refactorings * docs update * added inline docs to public members * added inline docs * added method name property to command infos * added inline docs * changed the execution callback to a declared delegate * createInstance delegate is now created only once per module * declared the ExecuteCallback delegate * introduced a way to modify the command permissions * changed method names * added optional compiled lambda module builder * added the missing sync execution option * moved run mode selection to the base class * info class refactorings * switched to compiled lambda based method invoke * command refactorings * added docs * removed untended class * bug fixes * minor refactorings * reflection changes * bug fix for interaction parameters * commands and modules now groups the preconditons on building * added default permission to context commands * added DontAutoRegister attribute * renamed TypeReader to TypeConverter * added docs to TypeConverterResult, made ISlashModuleBase public * namespace and project change * added inline docs file * renamed ExecuteComponentCommand method * added scoped service support to the dependency injection model * fixed premature disposal of scoped services * extended the scope to cover the precondition checking methods * removed slash command related preconditions from core lib * added sample application * precondition checks are now executed according to the command RunMode * reverting the conflicting changes * reverted SocketInteraction * reverting more conflicts * added indentations to inline docs * implemented change requests * updated the sample app * moved builders to public * added indentations to typeconverter docs * renamed old componentCommandExecuted event * bug fix for generic typeconverters * Revert "bug fix for generic typeconverters" This reverts commit fcc61957deb5dfc17c41367f1c7c72d27024b0ee. * bug fix for context commands * code cleanup * removed public module build method * modev OnModuleBuilding execution inside the module build method * added try-catch blocks encapsulating arg generation * fixed parameter preconditions not raising commandExecuted event * removed OnModuleBuilding execution from ModuleClassBuilder * removed setters from Precondition ErrorMessages * added methods to interaction service for creating user defined modules * added IParameterInfo parameter to TypeConverter.Write * changed the target frameworks * DefaultValueConverter bug fix * GenerateArgs refactorings * WaitForMessageComponent now relies message id * added ChannelTypes support * added ChannelTypes support * fix build error for new lib version * added ToString method to CommandInfo * added ToString method to CommandInfo * Fix index out of bounds error for new non-null slash command option collection * enum converter rework * added user extendable types to command context and module base * added regex anchors to ensure pattern matches the whole string * incomplete guides * add missing ignoreGroupNames assignment for ComponentInteraction * typeconverters now seperate pascal casing parameter names * fix missing IServiceScopefactory ? * Revert "typeconverters now seperate pascal casing parameter names" This reverts commit 141300f3d2c244fc6795999d910462939d16a2e1. * moved the option name pascal casing seperator to RestUtils * fix component command arg generation * removed , from default command delimiters * updated the regex to match every non whitespace value * added Autocomplete interaction support and updated the regex to match every non whitespace value * replaced the posix class with range exps in pascal casing seperator * added inline docs to autocompleter related classes * added regex metacharacter escape to wildcard patterns * added null check to Regex EscapeExcluding * added .net5.0 support and updated the project package * added .net5.0 support and updated the project package * add dependency injection to autocompleters * add net6.0 * bump versions * bug fix: pascal casing parameters are not assigned * rework autocomplete commands to accept command and parameter names seperatly * rename *InteractionCommandContext to *InteractionContext * add max-min value support to number type slash command options * add hide attribute to deafult enum converter * add inline docs * guides update: min/max value and autocomplete interactions * remove net6.0 support * add inline doc to Config.EnableAutocompleters * add autocompleters guide * added attribute usage to min/max value * implement rest based interactions * add handling logic for rest based interactions * update default TypeConverters to accommodate rest based interactions * added interaction specific interfaces * fix build error * implement change requests * bump metapackage version * replace concrete interface types with interfaces in command execution logic * fix min/max value attribute target * add rest specific interaction module for creating interaction responses for rest based interactions within the module * update rest callback to accept an interaction context parameter * clean up RestResponseCallback implementation artifacts * fix command registration bug when using the sharded socket client * update docs * fix build errors * fix slash command depth check * implement requested changes * fix build error * the grand finale * the grand finale Co-authored-by: quin lynch * Remove XML doc * Add Interactions service to azure build * Add DocFX refs to interaction framework docs * meta: bump docfx version * meta: bump versions * Remove versioning metadata in csproj * Fix user command mismatch in docs * Fix parameter in message commands * Fix SocketVoiceChannel options are created as generic mentionables in Interaction service (#308) * added interaction specific interfaces * fix build error * implement change requests * add autocomplete respond method to IAutocompleteInteraction * fix sharded client current user * fix generic typeconverter picking priority * Revert "fix sharded client current user" This reverts commit a9c15ffd6ab02651e83e72c275889502b60cfddc. * Revert "add autocomplete respond method to IAutocompleteInteraction" This reverts commit f2fc50f1f19a0b41144b6dc93080d2f3a01282fc. * meta: bump version * Improve the `GuildFeatures` converter (#311) * Fix Message/User commands are not being executed when their name have spaces on it (#310) * added interaction specific interfaces * fix build error * implement change requests * add autocomplete respond method to IAutocompleteInteraction * fix sharded client current user * fix generic typeconverter picking priority * Revert "fix sharded client current user" This reverts commit a9c15ffd6ab02651e83e72c275889502b60cfddc. * Revert "add autocomplete respond method to IAutocompleteInteraction" This reverts commit f2fc50f1f19a0b41144b6dc93080d2f3a01282fc. * fix command parsing for names with spaces * meta: bump version * fix minor spelling mistake * add missing $ on docs Co-Authored-By: Liege72 <65319395+Liege72@users.noreply.github.com> * Squashed commit of the following: commit ff0bbbd4d3c4141a6e7eedbe2da0a2cbf5a8a208 Merge: 41b4686b 19a66bf8 Author: quin lynch Date: Sat Nov 27 08:39:35 2021 -0400 Merge branch 'dev' of https://github.com/discord-net/Discord.Net into dev commit 19a66bf8782e7b8879c6b8b372134e01be0090d7 Author: Daniel Baynton <49287178+230Daniel@users.noreply.github.com> Date: Fri Nov 26 15:41:55 2021 +0000 feature: Add method to clear guild user cache (#1767) * Add method to clear a SocketGuild's user cache * Add optional predicate * Compress overload to be consistant * Fix global user not clearing (may cause other issues) * Remove debug code and add param documentation * Standardise doc string * Remove old hack-fix * Rename new method for consistency * Add missing line to reset downloaderPromise * Undo accidental whitespace changes * Rider better actually keep the tab this time Co-authored-by: Quin Lynch <49576606+quinchs@users.noreply.github.com> commit b9274d115dfcec28a732fd3c9122ca65ebe4951e Author: Monica S Date: Fri Nov 26 15:41:08 2021 +0000 Add characters commonly use in links to Sanitize (#1152) Co-authored-by: Quin Lynch <49576606+quinchs@users.noreply.github.com> commit 51e06e9ce190ac46aeaeb8650d71d58eba0b5412 Author: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Fri Nov 26 11:30:19 2021 -0400 feature: warn on invalid gateway intents (#1948) commit 82276e351aa306920e6a0ea7535c81428dd2003c Author: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Fri Nov 26 11:29:53 2021 -0400 feature: default application games (#1949) * Initial implementation * Add missing summary commit 4f1fe2b0843976b7e8cc2aca3022f78b8eac9274 Merge: 9d6dc627 3cd9f399 Author: quin lynch Date: Fri Nov 26 11:23:32 2021 -0400 Merge branch 'siscodeorg-commands/validate-get-best-match' into dev commit 3cd9f399186abe078735486ccdbfec25150495f5 Merge: 9d6dc627 adf3a9c4 Author: quin lynch Date: Fri Nov 26 11:23:05 2021 -0400 Merge branch 'commands/validate-get-best-match' of https://github.com/siscodeorg/Discord.Net into siscodeorg-commands/validate-get-best-match commit adf3a9c459958254cd7241acf27a8c2afbeea822 Author: roridev Date: Fri Nov 26 09:26:53 2021 -0300 Fix incorrect casing on `HandleCommandPipeline` commit a92ec56d884ffe41f74c1f6b9541c1d70d6d823d Author: roridev Date: Thu Nov 25 16:42:18 2021 -0300 Add requested changes Changes: - Use IResult instead of Optional CommandMatch - Rework branching workflow commit d1b31c8f529033afda8d4a9e320788de0d034693 Author: roridev Date: Thu Nov 25 15:31:48 2021 -0300 Add `MatchResult` commit 9d6dc6279db499c48811e80e9c385f7015d00333 Author: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Thu Nov 25 11:25:19 2021 -0400 Update socket presence and add new presence event (#1945) commit 10afd96e6ec6dcb2bba8c1f5d54a696f60bac989 Author: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Thu Nov 25 11:24:44 2021 -0400 feature: Handle bidirectional usernames (#1943) * Initial implementation * Update summary commit 143ca6db437ac18d4615c0752e00464b566f6264 Author: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Thu Nov 25 11:23:33 2021 -0400 fix NRE when adding parameters thru builders (#1946) commit d5f5ae132ca4cd9a6bd156cd4bc57cca354c6afd Author: Cenk Ergen <57065323+Cenngo@users.noreply.github.com> Date: Thu Nov 25 18:22:50 2021 +0300 fix sharded client current user (#1947) commit b5c150dc166f288ab4a400097259a1ecda5ce399 Author: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Wed Nov 24 12:53:39 2021 -0400 Add Voice binaries (#1944) * Add binaries and read me * Update sending voice docs * Undo markdown formatting commit bc440abd445d58aa5bbe2c8f551c43d54aecbdc8 Author: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Wed Nov 24 12:52:55 2021 -0400 Implement multi-file upload to webhooks (#1942) commit f7a07aec02658cd289f283bb1e992d511ed9f5c1 Author: Paulo Date: Wed Nov 24 09:57:06 2021 -0300 Add default nullable enum typereader (#1518) commit 6abdfcbf878329f8294884b60e90acf797bf1f9b Author: Slate Date: Wed Nov 24 12:55:07 2021 +0000 Added negative TimeSpan handling (#1666) - Added unit tests for the TimeSpanTypeReader - Fixes https://github.com/discord-net/Discord.Net/issues/1657 commit e0dbe7c69543d9fcdf24c26e9c16c9b8b1eaa94d Author: Paulo Date: Wed Nov 24 09:43:57 2021 -0300 Add MaxBitrate to the interface (#1861) Co-authored-by: Quin Lynch <49576606+quinchs@users.noreply.github.com> commit 3cb662ff7a829c0d436be5437a921da7927e38aa Author: d4n Date: Tue Nov 23 10:49:31 2021 -0500 Add null check to AllowedMentions.ToModel() (#1865) commit 900c1f4385a66fe0e190a92edf05c434b3fd5838 Author: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Tue Nov 23 11:46:18 2021 -0400 Fix emoto try parse (#1941) commit 933ea42eaac47094ef77608aa2aa3f6d602ac30d Author: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Tue Nov 23 09:58:05 2021 -0400 Merge Labs 3.X into dev (#1923) * meta: bump version * Null or empty fix (#176) * Add components and stickers to ReplyAsync extension * Fixed null or empty * Changed Label to Description * -||- Co-authored-by: quin lynch * More regions (#177) * Preconditions * ChannelHelper * RestDMChannel * RestGroupChannel * RestBan * RestGroupUser * EntityExtensions * DiscordSocketClient * DiscordSocketClient * Discord.net.core.xml fix (#178) * Changed Label to Description * Added Discord- .MessageComponent .ISticker[] ,Discord.MessageComponent,Discord.ISticker[] to ReplyAsync * Remove references to labs * Update Discord.Net.sln * Added SendMessagesInThreads and StartEmbeddedActivities. (#175) * Added SendMessagesInThreads and StartEmbeddedActivities. Adjusted owner perms. Change UsePublicThreads -> CreatePublicThreads Change UsePrivateThreads -> CreatePrivateThreads * removed extra /// * Added UsePublicThreads and UsePrivateThreads back with Obsolete Attribute * removed 'false' from Obsolete Attribute * Squashed commit of the following: commit dca41a348e36a9b4e7006ef3a76377eb32aad276 Author: quin lynch Date: Thu Sep 23 07:02:19 2021 -0300 Autocomplete commands * meta: xml. closes #171 * Revert user agent and $device to dnet * meta: bump version * meta: bump vers * Fix sticker args * Grammer fix (#179) * Made IVoiceChannel mentionable * Embeds array for send message async (#181) * meta: bump version * meta: bump vers * Fix sticker args * Grammer fix (#179) * Added embeds for SendMessageAsync * [JsonProperty("embed")] forgot to remove this public Optional Embed { get; set; } * It has been done as requested. * Changed the old way of handeling single embeds * Moved embeds param and added options param * xmls Co-authored-by: quin lynch * Fix thread permissions (#183) * Update GuildPermissionsTests.cs * Update GuildPermissions.cs * Use compound assignment (#186) * Used compound assignment * -||- * -||- * Remove unnecessary suppression (#188) * Inlined variable declarations (#185) * Fixed some warnings (#184) * Fixed some warnings * Another fixed warning * Changed the SSendFileAsync to SendFileAsync * Removed para AlwaysAcknowledgeInteractions * Moved it back to the previous version * Added periods to the end like quin requested!! :(( Co-authored-by: MrCakeSlayer <13650699+MrCakeSlayer@users.noreply.github.com> * Object initialization can be simplified fixed (#189) * Conditional-expression-simplification (#193) * Capitlazation fixes (#192) * Removed-this. (#191) * Use 'switch' expression (#187) * Use 'switch' expression * Reverted it to the old switch case * Fixed-compiler-error (#194) * Submitting updates to include new permissions. (#195) * Submitting updates to include new permissions. * Make old permissions obsolete and update tests Co-authored-by: quin lynch * Update azure-pipelines.yml * Update azure-pipelines.yml * Update azure-pipelines.yml * Add support for long in autocomplete option * Add support for sending files with multiple embeds (#196) * Add support for sending files with multiple embeds * Simplify prepending single embed to embed array * Consistency for embeds endpoints (#197) * Changed the way of handling prepending of embeds. For consistency. * reformatted the summary * Revert pipeline * Fix duplicate merge conflicts * Changed minimum slash command name length to 1 per Discord API docs (#198) * Channel endpoints requirements correction (#199) * Added some requirements to channels for topic * Changed check from NotNullOrEmpty to NotNullOrEmpty * Added some requirements to channels for name Preconditions.LessThan * Formatting of file * Added restriction for description not being null (#200) * Update azure-pipelines.yml * Update deploy.yml * Remove version tag from proj * Update deploy.yml * Removed versions from project files * Removed style of the nuget badge and added logo (#201) The style was not properly added to it and the plastic version does not look good with the discord badge. I thought it would look better with a logo * Fix Type not being set in SocketApplicationCommand * Remove useless GuildId property * meta: update XML * Add Autocomplete to SlashCommandOptionBuilder * Added autocomplete in SlashCommandOptionBuilder. (#206) Co-authored-by: Quin Lynch <49576606+quinchs@users.noreply.github.com> * Fix duplicate autocomplete * Fix #208 * Fix sub commands being interpreted as a parameter for autocomplete * Fix exposed optional * Support the discord:// protocol in buttons (#207) * Update UrlValidation.cs * Update ComponentBuilder.cs * Add docs and better error messages. * Fix wonky intentation * Add competing activity status type (#205) * Update GuildPermissionsTests.cs * Update GuildPermissions.cs * Add competing status type * Add Icons to IRole (#204) * Added icon field to IRole * Added GetGuildRoleIconUrl() * Added Clean Content Function (#174) * Added Clean Content Function * Fixed Spelling problems and bad var handling * Add StripMarkDown Method * Clean Content Expanded (#212) * Implement CleanContent In IMessage & RestMessage * Update Spelling and Documentation * Add SanatizeMessage to MessageHelper and Refactor Rest and Socket Message * Add event for autocomplete interaction (#214) * Spelling corrections (#215) * Remove null collections * Followup with file async warnings (#216) * Changed from NotNullOrWhitespace to NotNullOrEmpty * Added NotNullOrEmpty on filename * Added system to interpret from the path * Added a check for if it contains a period * It has been done, how ever it will break stuff * Changed to use ??= how ever still added error check * Added space under check * Changed from with a period to valid file extension * Added checks for SendFileAsync * Removed filename != null && * Add channel types in application command options. (#217) * add channel types in application command options * Indent Docs * Stage instance audit logs as well as thread audit log type * Update azure-pipelines.yml * Update azure-pipelines.yml * Fix system messages not including mentioned users. Added ContextMenuCommand message type * Remove file extension check (#218) * Fix NRE in modify guild channel * Fix 429's not being accounted for in ratelimit updates * meta: add net5 framework Co-Authored-By: MrCakeSlayer <13650699+MrCakeSlayer@users.noreply.github.com> * Proper doc logos (#221) * Update GuildPermissionsTests.cs * Update GuildPermissions.cs * Add competing activity status type * logo changes * logo text as path * add missing logo * Update package logo and favicon * Update docfx references * Remove XML files and use original pipeline format * Remove console writeline * Remove Console.WriteLine * Remove useless log * Rename Available sticker field to IsAvailable * Rename Available to IsAvailable in stickers * Add summary indent for role members * Add summary indent to SocketInvite * Rename DefaultPermission to IsDefaultPermission * Rename Default to IsDefault and Required to IsRequired in IApplicationCommandOption * Rename Default and Required to IsDefault and IsRequired in IApplicationCommandOption. Rename DefaultPermission to IsDefaultPermission in IApplicationCommand * Remove extra white spaces * Renamed Joined, Archived, and Locked to HasJoined, IsArchived, and IsLocked * Rename Live and DiscoverableDisabled to IsDiscoverableDisabled and IsLive in IStageChannel * Remove newline * Add indent to summaries * Remove unnecessary json serializer field * Fix ToEntity for roletags incorrectly using IsPremiumSubscriber * Update RestChannel for new channel types * Fix different rest channels not deserializing properly * fully qualify internal for UrlValidation and add indent to summary * Add missing periods to InteractionResponseType * Fix summary in IApplicationCommandOptionChoice * Update IApplicationCommandOption summaries * Update IApplicationCommandInteractionDataOption summaries * Update IApplicationCommandInteractionData summaries * Update IApplicationCommand summaries * Update ApplicationCommandType summaries * rename DefaultPermission to IsDefaultPermission in ApplicationCommandProperties * update ApplicationCommandOptionChoiceProperties summaries * Rename Default, Required, and Autocomplete to IsDefault, IsRequired, and IsAutocomplete in ApplicationCommandOptionProperties * Update SlashCommandProperties summaries * update SlashCommandBuilder boolean field names, summaries, and choice parameters * Update SelectMenuOption summaries, Rename Default to IsDefault in SelectMenuOption * update SelectMenuComponent summaries. Rename Disabled to IsDisabled in SelectMenuComponent * update ComponentBuilder summaries and boolean fields. * Update ButtonComponent summaries and boolean fields * update ActionRowComponent summaries * Update UserCommandBuilder * Update MessageCommandBuilder summaries and boolean properties * Update IGuild summary * Update IGuild summaries * Update StagePrivacyLevel summary * update IThreadChannel summaries * Update IStageChannel summaries * Refactor summaries and boolean property names * General cleanup (#223) * General cleanup * Add Async suffix to SendAutocompleteResult * Fix more formatting * Fix unused RequestOptions in GetActiveThreadsAsync * Add message to ArgumentNullException * Ephemeral attachments * Add missing jsonproperty attribute * Add IMessage.Interaction * Update attachment checks for embed urls * meta: bump version * Remove old package configs and update image * Update package logos * Fix logo reference for azure * Deprecate old package definitions in favor for target file * Deprecate old package definitions in favor for target file Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com> * Update package ids * Fix url validation * meta: bump version * Fix assignment of UserMentions (#233) * Fix CleanContent (#231) * Fix SocketSlashCommandData access modifier. (#237) Fixes #229 * Update README with better header (#232) * Update README with better header Adds HTML elements that implement the main logo & improve the redirection tag positions. * Resolving border issue in light-mode * Update sponsor section * Implement checks for interaction respond times and multiple interaction responses. closes #236, #235 * Add response check to socket auto complete * meta: bump versions * Fix #239 * meta: bump version * meta: update logo * meta: bump versions * Revert received at time, confirmed by discord staff to be accurate * Merge branch 'release/3.x' of https://github.com/Discord-Net-Labs/Discord.Net-Labs into merger-labs Update requested changes of obsolete and references to labs. Added `Interaction` to `IMessage` Fixed grammar Fixed bugs relating to interactions. * Update docs * Update CHANGELOG.md * meta: docs building * Update docs.yml * Update docs.yml * Fix docfx version * Update docs.yml * Update docs.bat * Rename docs repo for clone * update docfx version * Update docs.bat * Update docfx version * Remove docs from pipeline * FAQ revamped, metadata updated (#241) * FAQ revamped, metadata updated * Update FAQ.md * Update README.md * Docs index improvement * Fix InvalidOperationException in modify channel * feature: guild avatars, closes #238 * feature: modify role icons * meta: changelog * meta: bump version * Update README.md * Fix non value type options not being included in autocomplete * Add new activity flags (#254) * Add new activity flags * Add missing commas * Added support for GUILD_JOIN_REQUEST_DELETE event (#253) Fixes #247 * Adding BotHTTPInteraction user flag (#252) * animated guild banner support (#255) * Docs work (WIP) (#242) * Main page work * Metadata logo dir * More main page edits * Naming change * Dnet guide entries pruned * Add student hub guild directory channel (#256) * animated guild banner support * Add guild directory channel * Fix followup with file overwrite having incorrect parameter locations * Merge labs 3.x * Update GUILD_JOIN_REQUEST_DELETE event * Update head.tmpl.partial * Removed BannerId and AccentColor (#260) * Removed BannerId property, GetBannerURL method, and AccentColor property from IUser and socket entities. * Fixed errors in IUser.cs * Added back summary for GetAvatarUrl method in IUser.cs * Support Guild Boost Progress Bars (#262) * Support Guild Boost Progress Bars * Update SocketChannel.cs * Fix non-optional and unnecessary values. * Spelling * Reordering and consistency. * Remove log for reconnect * Add missing flags to SystemChannelMessageDeny (#267) * Fix labs reference in analyzer project and provider project * Rename new activity flags * Guild feature revamp and smart gateway intent checks * Get thread user implementation * Amend creating slash command guide (#269) * Adding BotHTTPInteraction user flag * Added comments explaining the Global command create stipulations. * Fix numeric type check for options * Add state checking to ConnectionManager.StartAsync (#272) * initial interface changes * Multi file upload + attachment editing * meta: bump versions * Update CHANGELOG.md * Update CHANGELOG.md * Support Min and Max values on ApplicationCommandOptions (#273) * Support Min and Max values on ApplicationCommandOptions * Support decimal min/max values * Docs imrpovments + use ToNullable * Logomark, doc settings edit (#258) * Logomark, doc settings edit * Replace standard logo * Bumping docfx plugins to latest release * Bump version metadata * Logo svg fix * Change default sticker behavior and add AlwaysResolveSticker to the config * Implement rest based interactions. Added ED25519 checks. Updated summaries. * Update package logo * Automatically fix ordering of optional command options (#276) * auto fix optional command option order * clean up indentation * Fix maximum number of Select Menu Options (#282) As of https://discord.com/developers/docs/interactions/message-components#select-menu-object-select-menu-structure the maximum number of options is 25, not less than 25. Hopefully the change catches all necessary locations * Add voice region to modify voice channels * Update summaries on rest interactions * Interaction Specific Interfaces (#283) * added interaction specific interfaces * fix build error * implement change requests * Update application * Add Guild Scheduled Events (#279) * guild events initial * sharded events * Add new gateway intents and fix bugs * More work on new changes to guild events * Update guild scheduled events * Added events to extended guild and add event start event * Update preconditions * Implement breaking changes guild guild events. Add guild event permissions * Update tests and change privacy level requirements * Update summaries and add docs for guild events * meta: bump version * Increment meta version (#285) * Increment meta version * Update docfx.json * Fix #289 and add configureawaits to rest based interactions * meta: bump version * Add GUILD_SCHEDULED_EVENT_USER_ADD and GUILD_SCHEDULED_EVENT_USER_REMOVE (#287) * Remove newline * Fix autocomplete result value * meta: bump versions * Add `GuildScheduledEventUserAdd` and `GuildScheduledEventUserRemove` to sharded client * Make RestUserCommand public (#292) * Fix Components not showing on FUWF (#288) (#293) Adds Components to Payload JSON Generation * Implement smarter rest resolvable interaction data. Fixes #294 * Add UseInteractionSnowflakeDate to config #286 * Implement Better Discord Errors (#291) * Initial error parsing * Implement better errors * Add missing error codes * Add voice disconnect opcodes * Remove unused class, add summaries to discordjsonerror, and remove public constructor of slash command properties * Add error code summary * Update error message summary * Update src/Discord.Net.Core/DiscordJsonError.cs Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com> * Update src/Discord.Net.WebSocket/API/Voice/VoiceCloseCode.cs Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com> * Fix autocomplete result value Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com> * Change the minimum length of slash commands to 1 (#284) * Change the minimum length of slash commands to 1. This is the correct value according to the docs and it has been changed after user feedback. * Fix the limit in 3 other places Co-authored-by: quin lynch * Add new thread creation properties * Add role emoji. Fixes #295 * Fix mocked text channel * Fix precondition checks. Closes #281 * Initial fix (#297) * meta: bump version * Update from release/3.x * Remove more labs references * Remove doc file for Discord.Net.Analyzers Co-authored-by: Simon Hjorthøj Co-authored-by: drobbins329 Co-authored-by: MrCakeSlayer <13650699+MrCakeSlayer@users.noreply.github.com> Co-authored-by: d4n3436 Co-authored-by: Will Co-authored-by: Eugene Garbuzov Co-authored-by: CottageDwellingCat <80918250+CottageDwellingCat@users.noreply.github.com> Co-authored-by: Emily <89871431+emillly-b@users.noreply.github.com> Co-authored-by: marens101 Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com> Co-authored-by: Armano den Boef <68127614+Rozen4334@users.noreply.github.com> Co-authored-by: Bill Co-authored-by: Liege72 <65319395+Liege72@users.noreply.github.com> Co-authored-by: Floowey Co-authored-by: Cenk Ergen <57065323+Cenngo@users.noreply.github.com> Co-authored-by: exsersewo Co-authored-by: Dennis Fischer commit 3395700720bc42b0cbb4222b9821ab40bdac54c4 Author: Nikon <47792796+INikonI@users.noreply.github.com> Date: Mon Aug 23 02:00:18 2021 +0500 feature: IVoiceChannel implements IMentionable (#1896) commit 41b4686b5e77cd9986006866b9ac7ac418bc05f2 Author: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Tue Aug 3 20:43:10 2021 -0300 Update README.md commit 5fc31451a1fafdc471acfe3a08269d371b20b70b Author: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Tue Aug 3 20:28:15 2021 -0300 Update README.md commit 56d16397f7da77df31b6e1e2a1fd1a318c081cfd Author: roridev Date: Fri Nov 27 18:42:23 2020 -0300 Fixes Azure linux build failing due to a CS8652. commit c455b5033123825c639d8f18e52033b69b5595ba Author: roridev Date: Fri Nov 27 14:10:39 2020 -0300 Make use of new ValidateAndGetBestMatch api on ExecuteAsync commit 7955a0909043b964875796142bcfc5d9997e4798 Author: roridev Date: Fri Nov 27 13:52:53 2020 -0300 Creates ValidateAndGetBestMatch function This function will validate all commands from a SearchResult and return the result of said validation, along with the command matched, if a valid match was found. commit 574b503e9e87caee54c6df8143ada14268f4dcbb Author: roridev Date: Fri Nov 27 13:38:00 2020 -0300 Moves CalculateScore function to outer scope. * Update from Discord.Net dev - fix merge conflicts * meta: .net6 support * meta: pipelines use .net 6 * meta: bump tests framework versions * Invoke SlashCommandExecuted event on failed type conversion (#314) * added interaction specific interfaces * fix build error * implement change requests * add autocomplete respond method to IAutocompleteInteraction * fix sharded client current user * fix generic typeconverter picking priority * Revert "fix sharded client current user" This reverts commit a9c15ffd6ab02651e83e72c275889502b60cfddc. * Revert "add autocomplete respond method to IAutocompleteInteraction" This reverts commit f2fc50f1f19a0b41144b6dc93080d2f3a01282fc. * fix command parsing for names with spaces * add SlashCommandExecuted event invoke to failed type conversion * update interactions sample app * Revert "update interactions sample app" This reverts commit 6ac8cd0da60b440874cf29abc7202cdc49fd0538. * meta: bump to exclusive net.5 and net6 versions Co-Authored-By: JT * meta: bump versions * meta: add net461 support back * Add System.Collections.Immutable back to core * Fix presence NRE * meta: bump versions * Fix presence NRE again... * meta: bump version * Fix current user presence * meta: bump version * Fix NRE on service providerless command execution (#322) * fix not set to an instance of an object exception for service providerless command execution * add methods for manually registering global comands (#325) * fix dependency injection link in docs (#326) * Add back netstandard2.0 / 2.1. Closes #324 * meta: bump version * Add not supported exception on news channels when creating threads, #296 * Revert thread block for news channel. Add check for news channel Co-Authored-By: Nova Fox * Make autocomplete log virtual (#328) * Fix #300 again * Update GUILD_SCHEDULED_EVENT_CREATE (#330) Changed _guildScheduledEventCancelled to _guildScheduledEventCreated in GUILD_SCHEDULED_EVENT_CREATE * correct the number of allowed autocomplete choices (#333) * correct the number of allowed autocomplete choices (#334) * Add FollowupWithFileAsync to IDiscordInteraction (#336) * Add uppercase character check to SlashCommandBuilder and ApplicationCommandOptionProperties (#339) * Make IModuleBase and IInteractionModuleBase public (#341) * fix command validation (#335) * fix autocomplete command traversal and use IList in command map instead of stirng[] (#342) * Refactor Interactions (#340) * Refactor Interactions * Remove ApplicationCommandException * Fix Module Preconditions (#343) * fix module preconditions * fix module preconditions * meta: bump version * Update autocomplete docs * Initial preps * Fix #347 This comit makes `Content` optional for webhook execution. This comit also adds null checks to content when creating the api args to properly specify the optional struct to the model. This is done so the message entity doesn't try to parse a null string. * Fix merge errors * meta: net5 and 6 support * Update README.md * meta: bump version * Trim SlashCommandInfo.ToString() (#346) Co-authored-by: TheStachelfisch * Ensure User Left Event (#349) * Update README.md * Add 50055 Error code (#352) Co-authored-by: quin lynch * remove DeleteUnknownSlashCommandAck (#353) * [Robot] Add missing json error (#354) * Add 20029 Error code * Update DiscordErrorCode.cs Co-authored-by: Robot Co-authored-by: Quin Lynch <49576606+quinchs@users.noreply.github.com> * Fix #355 and make UpdateAsync return a RestInteractionResponse * fix: unclear parameter naming for MessageCommand (#361) * Update DiscordRestApiClient.cs (#357) Add missing check to Content value to prevent NRE on empty message. Also made `ModifyInteractionFollowupMessageAsync`'s check consistent with `CreateInteractionFollowupMessageAsync` * Introduce emoji role property into rolehelper (#360) * Introduce emoji role property into rolehelper * Add check for exclusive properties * Oversight resolved * Valid order for error responses * Appending suggestions * Rename component to components (#363) * Adding BotHTTPInteraction user flag * change component -> components * added Interactions project * make SearchResult public (#365) * add missing coin emoji (#367) https://github.com/Discord-Net-Labs/Discord.Net-Labs/issues/364 * Add `IsAutocomplete` to rest command options (#368) * Make RestMessageComponent public (#369) * Docs rework, prep for merge into DNET (#359) * Appending previous changes * Deprecating unique feature listing & unused branch * Getting rid of old faq * Add all missed changelog entries This was painful :'') * Appending suggestions, large interior rework * Deleting unused entries * Removing more unused entries * Recover accidental deletion & append docfx file * Resolve a few docfx errors * Resolving more docfx errors * Clearing up final warnings * Appending suggestions * Removing main nightly for dnetlabs * Discord link updates * Add migration guide * Update v2_to_v3_guide.md * Fix spelling mistake Co-authored-by: quin lynch * Update docFX plugins and xrefs * Add changelog and remove old docs Co-authored-by: Simon Hjorthøj Co-authored-by: Eugene Garbuzov Co-authored-by: CottageDwellingCat <80918250+CottageDwellingCat@users.noreply.github.com> Co-authored-by: MrCakeSlayer <13650699+MrCakeSlayer@users.noreply.github.com> Co-authored-by: Will Co-authored-by: Emily <89871431+emillly-b@users.noreply.github.com> Co-authored-by: marens101 Co-authored-by: d4n3436 Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com> Co-authored-by: Armano den Boef <68127614+Rozen4334@users.noreply.github.com> Co-authored-by: Bill Co-authored-by: KeylAmi Co-authored-by: Liege72 <65319395+Liege72@users.noreply.github.com> Co-authored-by: Floowey Co-authored-by: Cenk Ergen <57065323+Cenngo@users.noreply.github.com> Co-authored-by: exsersewo Co-authored-by: Dennis Fischer Co-authored-by: PoolPirate <94938310+PoolPirate@users.noreply.github.com> Co-authored-by: Playwo Co-authored-by: JT Co-authored-by: Nova Fox Co-authored-by: Daan van den Hoek <28300783+daanvandenhoek@users.noreply.github.com> Co-authored-by: nev-r Co-authored-by: TheStachelfisch <50026847+TheStachelfisch@users.noreply.github.com> Co-authored-by: TheStachelfisch Co-authored-by: Discord-NET-Robot <95661365+Discord-NET-Robot@users.noreply.github.com> Co-authored-by: Xeno --- CHANGELOG.md | 129 ++++++- CONTRIBUTING.md | 6 +- README.md | 4 + .../Commands/ICommandContext.Inclusion.md | 4 +- .../DocFX.Plugin.DescriptionGenerator.dll | Bin 9728 -> 10240 bytes .../description-generator/plugins/LICENSE | 8 + .../plugins/LastModifiedPostProcessor.dll | Bin 12288 -> 12800 bytes .../last-modified/plugins/LibGit2Sharp.dll | Bin 424448 -> 433664 bytes .../plugins/LibGit2Sharp.dll.config | 4 +- .../plugins/lib/linux-arm/libgit2-6777db8.so | Bin 0 -> 968668 bytes .../lib/linux-arm64/libgit2-6777db8.so | Bin 0 -> 1278936 bytes .../lib/linux-musl-x64/libgit2-6777db8.so | Bin 0 -> 1498680 bytes .../plugins/lib/linux-x64/libgit2-6777db8.so | Bin 0 -> 1477315 bytes .../plugins/lib/osx/libgit2-6777db8.dylib | Bin 0 -> 2102976 bytes .../plugins/lib/win32/x64/git2-6777db8.dll | Bin 0 -> 1241088 bytes .../plugins/lib/win32/x86/git2-6777db8.dll | Bin 0 -> 973312 bytes .../partials/head.tmpl.partial | 2 +- docs/docfx.json | 67 ++-- docs/faq/basics/basic-operations.md | 42 +- docs/faq/basics/client-basics.md | 8 +- docs/faq/basics/getting-started.md | 2 +- docs/faq/basics/images/scope.png | Bin 0 -> 15921 bytes docs/faq/basics/interactions.md | 84 ++++ docs/faq/basics/samples/registerint.cs | 21 + docs/faq/commands/dependency-injection.md | 2 +- docs/faq/commands/general.md | 6 +- docs/faq/commands/interaction.md | 52 +++ docs/faq/misc/glossary.md | 48 ++- docs/faq/misc/legacy.md | 4 +- docs/faq/toc.yml | 6 +- docs/guides/concepts/entities.md | 5 +- .../images/nightlies-vs-note.png | Bin 10162 -> 0 bytes .../images/nightlies-vs-step1.png | Bin 13372 -> 0 bytes .../images/nightlies-vs-step2.png | Bin 13713 -> 0 bytes .../images/nightlies-vs-step4.png | Bin 8214 -> 0 bytes docs/guides/getting_started/installing.md | 70 ++-- docs/guides/getting_started/labs.md | 30 ++ docs/guides/getting_started/nightlies.md | 97 ----- .../creating-context-menu-commands.md | 15 +- .../receiving-context-menu-command-events.md | 0 .../int_basics/application-commands/intro.md | 51 +++ ...ulk-overwrite-of-global-slash-commands.md} | 0 .../slash-commands/choice-slash-command.md} | 0 .../creating-slash-commands.md} | 0 .../slash-commands/images/ephemeral1.png | Bin .../slash-commands/images/feedback1.png | Bin .../slash-commands/images/feedback2.png | Bin .../slash-commands/images/listroles1.png | Bin .../slash-commands/images/listroles2.png | Bin .../slash-commands/images/oauth.png | Bin .../slash-commands/images/settings1.png | Bin .../slash-commands/images/settings2.png | Bin .../slash-commands/images/settings3.png | Bin .../slash-commands/images/slashcommand1.png | Bin .../slash-commands/images/slashcommand2.png | Bin .../slash-commands/parameters.md} | 0 .../slash-commands/responding-ephemerally.md} | 0 .../responding-to-slash-commands.md} | 0 .../slash-commands/subcommands.md} | 0 .../{interactions => int_basics}/intro.md | 0 .../message-components/advanced.md} | 0 .../message-components/buttons-in-depth.md} | 0 .../message-components/images/image1.png | Bin .../message-components/images/image2.png | Bin .../message-components/images/image3.png | Bin .../message-components/images/image4.png | Bin .../message-components/images/image5.png | Bin .../message-components/images/image6.png | Bin .../message-components/intro.md} | 2 +- .../responding-to-buttons.md} | 0 .../message-components/select-menus.md} | 0 docs/guides/int_framework/autocompletion.md | 47 +++ .../int_framework/dependency-injection.md | 13 + docs/guides/int_framework/intro.md | 353 +++++++++++++++++ docs/guides/int_framework/post-execution.md | 69 ++++ docs/guides/int_framework/preconditions.md | 77 ++++ .../samples/intro/autocomplete.cs | 9 + .../int_framework/samples/intro/button.cs | 5 + .../samples/intro/channelattribute.cs | 5 + .../int_framework/samples/intro/context.cs | 14 + .../int_framework/samples/intro/dropdown.cs | 11 + .../samples/intro/groupattribute.cs | 21 + .../samples/intro/messagecommand.cs | 5 + .../samples/intro/registering.cs | 5 + .../samples/intro/slashcommand.cs | 5 + .../samples/intro/summaryattribute.cs | 1 + .../samples/intro/usercommand.cs | 5 + .../samples/postexecution/error_review.cs | 28 ++ .../preconditions/group_precondition.cs | 0 .../preconditions/precondition_usage.cs | 3 + .../samples/typeconverters/enum_converter.cs | 30 ++ docs/guides/int_framework/typeconverters.md | 118 ++++++ .../01-getting-started.md | 32 -- .../interactions_framework/autocompleters.md | 27 -- .../dependency-injection.md | 27 -- docs/guides/interactions_framework/intro.md | 360 ------------------ .../interactions_framework/post_execution.md | 73 ---- .../interactions_framework/preconditions.md | 8 - .../interactions_framework/typeconverters.md | 130 ------- docs/guides/introduction/intro.md | 9 +- .../dependency-injection.md | 10 +- .../{commands => text_commands}/intro.md | 8 +- .../namedarguments.md | 2 +- .../post-execution.md | 6 +- .../preconditions.md | 2 +- .../dependency_map_setup.cs | 0 .../dependency-injection/dependency_module.cs | 0 .../dependency_module_noinject.cs | 0 .../samples/intro/command_handler.cs | 0 .../samples/intro/empty-module.cs | 0 .../samples/intro/groups.cs | 0 .../samples/intro/module.cs | 0 .../post-execution/command_exception_log.cs | 0 .../command_executed_adv_demo.cs | 0 .../post-execution/command_executed_demo.cs | 0 .../post-execution/customresult_base.cs | 0 .../post-execution/customresult_extended.cs | 0 .../post-execution/customresult_usage.cs | 0 .../post-execution/post-execution_basic.cs | 0 .../preconditions/group_precondition.cs | 9 + .../preconditions/precondition_usage.cs | 0 .../samples/preconditions/require_role.cs | 0 .../typereaders/typereader-register.cs | 0 .../samples/typereaders/typereader.cs | 0 .../typereaders.md | 4 +- docs/guides/toc.yml | 85 +++-- docs/guides/v2_v3_guide/v2_to_v3_guide.md | 30 ++ docs/index.md | 62 ++- docs/toc.yml | 2 +- src/Discord.Net.Commands/ModuleBase.cs | 6 +- src/Discord.Net.Core/DiscordErrorCode.cs | 2 + .../Entities/Channels/IMessageChannel.cs | 20 +- src/Discord.Net.Core/Entities/Emotes/Emoji.cs | 1 + .../Interactions/IApplicationCommandOption.cs | 5 + .../Entities/Roles/RoleProperties.cs | 19 +- .../Extensions/UserExtensions.cs | 18 +- .../Info/Commands/CommandInfo.cs | 2 +- .../InteractionModuleBase.cs | 12 +- .../InteractionService.cs | 9 +- .../InteractionServiceConfig.cs | 5 - .../RestInteractionModuleBase.cs | 6 +- .../Results/SearchResult.cs | 58 ++- .../Utilities/InteractionUtility.cs | 2 +- .../API/Common/ApplicationCommandOption.cs | 1 + .../API/Rest/ModifyGuildRoleParams.cs | 4 +- src/Discord.Net.Rest/DiscordRestApiClient.cs | 8 +- .../Entities/Channels/ChannelHelper.cs | 20 +- .../Entities/Channels/IRestMessageChannel.cs | 12 +- .../Entities/Channels/RestDMChannel.cs | 40 +- .../Entities/Channels/RestGroupChannel.cs | 42 +- .../Entities/Channels/RestTextChannel.cs | 40 +- .../CommandBase/RestCommandBase.cs | 10 +- .../MessageComponents/RestMessageComponent.cs | 12 +- .../RestApplicationCommandOption.cs | 6 + .../Entities/Interactions/RestInteraction.cs | 6 +- .../Interactions/RestPingInteraction.cs | 2 +- .../RestAutocompleteInteraction.cs | 2 +- .../Entities/Roles/RoleHelper.cs | 23 +- .../Extensions/EntityExtensions.cs | 2 +- .../BaseSocketClient.Events.cs | 8 +- .../DiscordSocketClient.cs | 20 +- .../Channels/ISocketMessageChannel.cs | 12 +- .../Entities/Channels/SocketDMChannel.cs | 40 +- .../Entities/Channels/SocketGroupChannel.cs | 40 +- .../Entities/Channels/SocketTextChannel.cs | 40 +- .../SocketMessageComponent.cs | 12 +- .../SocketApplicationCommandOption.cs | 4 + .../SocketBaseCommand/SocketCommandBase.cs | 8 +- .../DiscordWebhookClient.cs | 4 +- .../WebhookClientHelper.cs | 6 +- src/Discord.Net/Discord.Net.nuspec | 53 ++- 171 files changed, 1928 insertions(+), 1193 deletions(-) create mode 100644 docs/_template/last-modified/plugins/lib/linux-arm/libgit2-6777db8.so create mode 100644 docs/_template/last-modified/plugins/lib/linux-arm64/libgit2-6777db8.so create mode 100644 docs/_template/last-modified/plugins/lib/linux-musl-x64/libgit2-6777db8.so create mode 100644 docs/_template/last-modified/plugins/lib/linux-x64/libgit2-6777db8.so create mode 100644 docs/_template/last-modified/plugins/lib/osx/libgit2-6777db8.dylib create mode 100644 docs/_template/last-modified/plugins/lib/win32/x64/git2-6777db8.dll create mode 100644 docs/_template/last-modified/plugins/lib/win32/x86/git2-6777db8.dll create mode 100644 docs/faq/basics/images/scope.png create mode 100644 docs/faq/basics/interactions.md create mode 100644 docs/faq/basics/samples/registerint.cs create mode 100644 docs/faq/commands/interaction.md delete mode 100644 docs/guides/getting_started/images/nightlies-vs-note.png delete mode 100644 docs/guides/getting_started/images/nightlies-vs-step1.png delete mode 100644 docs/guides/getting_started/images/nightlies-vs-step2.png delete mode 100644 docs/guides/getting_started/images/nightlies-vs-step4.png create mode 100644 docs/guides/getting_started/labs.md delete mode 100644 docs/guides/getting_started/nightlies.md rename docs/guides/{interactions => int_basics}/application-commands/context-menu-commands/creating-context-menu-commands.md (89%) rename docs/guides/{interactions => int_basics}/application-commands/context-menu-commands/receiving-context-menu-command-events.md (100%) create mode 100644 docs/guides/int_basics/application-commands/intro.md rename docs/guides/{interactions/application-commands/slash-commands/08-bulk-overwrite-of-global-slash-commands.md => int_basics/application-commands/slash-commands/bulk-overwrite-of-global-slash-commands.md} (100%) rename docs/guides/{interactions/application-commands/slash-commands/07-choice-slash-command.md => int_basics/application-commands/slash-commands/choice-slash-command.md} (100%) rename docs/guides/{interactions/application-commands/slash-commands/02-creating-slash-commands.md => int_basics/application-commands/slash-commands/creating-slash-commands.md} (100%) rename docs/guides/{interactions => int_basics}/application-commands/slash-commands/images/ephemeral1.png (100%) rename docs/guides/{interactions => int_basics}/application-commands/slash-commands/images/feedback1.png (100%) rename docs/guides/{interactions => int_basics}/application-commands/slash-commands/images/feedback2.png (100%) rename docs/guides/{interactions => int_basics}/application-commands/slash-commands/images/listroles1.png (100%) rename docs/guides/{interactions => int_basics}/application-commands/slash-commands/images/listroles2.png (100%) rename docs/guides/{interactions => int_basics}/application-commands/slash-commands/images/oauth.png (100%) rename docs/guides/{interactions => int_basics}/application-commands/slash-commands/images/settings1.png (100%) rename docs/guides/{interactions => int_basics}/application-commands/slash-commands/images/settings2.png (100%) rename docs/guides/{interactions => int_basics}/application-commands/slash-commands/images/settings3.png (100%) rename docs/guides/{interactions => int_basics}/application-commands/slash-commands/images/slashcommand1.png (100%) rename docs/guides/{interactions => int_basics}/application-commands/slash-commands/images/slashcommand2.png (100%) rename docs/guides/{interactions/application-commands/slash-commands/04-parameters.md => int_basics/application-commands/slash-commands/parameters.md} (100%) rename docs/guides/{interactions/application-commands/slash-commands/05-responding-ephemerally.md => int_basics/application-commands/slash-commands/responding-ephemerally.md} (100%) rename docs/guides/{interactions/application-commands/slash-commands/03-responding-to-slash-commands.md => int_basics/application-commands/slash-commands/responding-to-slash-commands.md} (100%) rename docs/guides/{interactions/application-commands/slash-commands/06-subcommands.md => int_basics/application-commands/slash-commands/subcommands.md} (100%) rename docs/guides/{interactions => int_basics}/intro.md (100%) rename docs/guides/{interactions/message-components/05-advanced.md => int_basics/message-components/advanced.md} (100%) rename docs/guides/{interactions/message-components/03-buttons-in-depth.md => int_basics/message-components/buttons-in-depth.md} (100%) rename docs/guides/{interactions => int_basics}/message-components/images/image1.png (100%) rename docs/guides/{interactions => int_basics}/message-components/images/image2.png (100%) rename docs/guides/{interactions => int_basics}/message-components/images/image3.png (100%) rename docs/guides/{interactions => int_basics}/message-components/images/image4.png (100%) rename docs/guides/{interactions => int_basics}/message-components/images/image5.png (100%) rename docs/guides/{interactions => int_basics}/message-components/images/image6.png (100%) rename docs/guides/{interactions/message-components/01-getting-started.md => int_basics/message-components/intro.md} (98%) rename docs/guides/{interactions/message-components/02-responding-to-buttons.md => int_basics/message-components/responding-to-buttons.md} (100%) rename docs/guides/{interactions/message-components/04-select-menus.md => int_basics/message-components/select-menus.md} (100%) create mode 100644 docs/guides/int_framework/autocompletion.md create mode 100644 docs/guides/int_framework/dependency-injection.md create mode 100644 docs/guides/int_framework/intro.md create mode 100644 docs/guides/int_framework/post-execution.md create mode 100644 docs/guides/int_framework/preconditions.md create mode 100644 docs/guides/int_framework/samples/intro/autocomplete.cs create mode 100644 docs/guides/int_framework/samples/intro/button.cs create mode 100644 docs/guides/int_framework/samples/intro/channelattribute.cs create mode 100644 docs/guides/int_framework/samples/intro/context.cs create mode 100644 docs/guides/int_framework/samples/intro/dropdown.cs create mode 100644 docs/guides/int_framework/samples/intro/groupattribute.cs create mode 100644 docs/guides/int_framework/samples/intro/messagecommand.cs create mode 100644 docs/guides/int_framework/samples/intro/registering.cs create mode 100644 docs/guides/int_framework/samples/intro/slashcommand.cs create mode 100644 docs/guides/int_framework/samples/intro/summaryattribute.cs create mode 100644 docs/guides/int_framework/samples/intro/usercommand.cs create mode 100644 docs/guides/int_framework/samples/postexecution/error_review.cs rename docs/guides/{commands => int_framework}/samples/preconditions/group_precondition.cs (100%) create mode 100644 docs/guides/int_framework/samples/preconditions/precondition_usage.cs create mode 100644 docs/guides/int_framework/samples/typeconverters/enum_converter.cs create mode 100644 docs/guides/int_framework/typeconverters.md delete mode 100644 docs/guides/interactions/application-commands/01-getting-started.md delete mode 100644 docs/guides/interactions_framework/autocompleters.md delete mode 100644 docs/guides/interactions_framework/dependency-injection.md delete mode 100644 docs/guides/interactions_framework/intro.md delete mode 100644 docs/guides/interactions_framework/post_execution.md delete mode 100644 docs/guides/interactions_framework/preconditions.md delete mode 100644 docs/guides/interactions_framework/typeconverters.md rename docs/guides/{commands => text_commands}/dependency-injection.md (85%) rename docs/guides/{commands => text_commands}/intro.md (97%) rename docs/guides/{commands => text_commands}/namedarguments.md (98%) rename docs/guides/{commands => text_commands}/post-execution.md (97%) rename docs/guides/{commands => text_commands}/preconditions.md (98%) rename docs/guides/{commands => text_commands}/samples/dependency-injection/dependency_map_setup.cs (100%) rename docs/guides/{commands => text_commands}/samples/dependency-injection/dependency_module.cs (100%) rename docs/guides/{commands => text_commands}/samples/dependency-injection/dependency_module_noinject.cs (100%) rename docs/guides/{commands => text_commands}/samples/intro/command_handler.cs (100%) rename docs/guides/{commands => text_commands}/samples/intro/empty-module.cs (100%) rename docs/guides/{commands => text_commands}/samples/intro/groups.cs (100%) rename docs/guides/{commands => text_commands}/samples/intro/module.cs (100%) rename docs/guides/{commands => text_commands}/samples/post-execution/command_exception_log.cs (100%) rename docs/guides/{commands => text_commands}/samples/post-execution/command_executed_adv_demo.cs (100%) rename docs/guides/{commands => text_commands}/samples/post-execution/command_executed_demo.cs (100%) rename docs/guides/{commands => text_commands}/samples/post-execution/customresult_base.cs (100%) rename docs/guides/{commands => text_commands}/samples/post-execution/customresult_extended.cs (100%) rename docs/guides/{commands => text_commands}/samples/post-execution/customresult_usage.cs (100%) rename docs/guides/{commands => text_commands}/samples/post-execution/post-execution_basic.cs (100%) create mode 100644 docs/guides/text_commands/samples/preconditions/group_precondition.cs rename docs/guides/{commands => text_commands}/samples/preconditions/precondition_usage.cs (100%) rename docs/guides/{commands => text_commands}/samples/preconditions/require_role.cs (100%) rename docs/guides/{commands => text_commands}/samples/typereaders/typereader-register.cs (100%) rename docs/guides/{commands => text_commands}/samples/typereaders/typereader.cs (100%) rename docs/guides/{commands => text_commands}/typereaders.md (97%) create mode 100644 docs/guides/v2_v3_guide/v2_to_v3_guide.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 21e37b295..dd07045e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,98 @@ # Changelog +## [3.0.0] - 2021-12-13 + +### Added + +- #1767 Add method to clear guild user cache (19a66bf) +- #1847 Bump API version to 9 (06a64b7) +- #1848 Remove obsolete sync voice regions methods and properties (ed8e573) +- #1851 Remove DM cache and fix references (7a201e9) +- #1860 Remove /users/@me call for socket and rework sharded client a bit (384ad85) +- #1863 Change GuildMemberUpdate before state to cacheable (c2e87f5) +- #1879 Add Name property to Teams (c5b4b64) +- #1896 IVoiceChannel implements IMentionable (3395700) +- #1943 Handle bidirectional usernames (10afd96) +- #1948 warn on invalid gateway intents (51e06e9) +- #1949 default application games (82276e3) +- #1923 Added Interaction Support (933ea42). +- #1923 Added Application commands (933ea42). +- #1923 Added Message Components (933ea42). +- #1923 Added Thread Channels (933ea42). +- #1923 Added Stage Channels (933ea42). +- #1923 Added Guild Events (933ea42). +- #1923 Revamped Stickers (933ea42). +- #1923 Added `TimestampTag` (933ea42). +- #1923 Added `Name` property to teams (933ea42). +- #1923 Added url validation to embeds (933ea42). +- #1923 Added `NsfwLevel` to Guilds (933ea42). +- #1923 Added helpers to `Emoji` for parsing (933ea42). +- #1923 Added banner and accent color to guild users (933ea42). +- #1923 Added `RatelimitCallback` to `RequestOptions` (933ea42). +- #1923 Added `Emoji` to roles (933ea42). +- #1923 Added `UseInteractionSnowflakeDate` to config (933ea42). +- #1923 Added checks for gateway intent in some methods. DownloadUsersAsync will throw an exception if you don't have the gateway intent enabled locally now, this will help with the vauge error that was given before (933ea42). +- #1923 Added SendFilesAsync to channels (933ea42). +- #1923 Added Attachments property to MessageProperties (933ea42). +- #1958 Added NET5.0 and NET6.0 builds (aa6bb5e). +- #1958 Added `Discord.Interactions` (aa6bb5e). + +### Fixed + +- #1832 Grab correct Uses value for vanity urls (8ed8714) +- #1849 Remove obsolete methods and properties (70aab6c) +- #1850 Create DM channel with id and author alone (95bae78) +- #1853 Fire GuildMemberUpdated without cached user (d176fef) +- #1854 Gateway events for DMs (a7ff6ce) +- #1858 MessageUpdated without author (8b29e0f) +- #1859 Add missing AddRef and related (de7f9b5) +- #1862 Message update without author (fabe034) +- #1864 ApiClient.CurrentUser being null (08507c0) +- #1871 Add empty role list if not present (f47001a) +- #1872 Connection deadlock when trying to Send and Disconnect (97d90b9) +- #1873 Remove OperationCanceledException handling in connecting logic (7cf8499) +- #1876 Message type (ac52a11) +- #1877 Rest message type (22bb1b0) +- #1886 Change embed description max length to 4096 (8349cd7) +- #1890 Add default avatar to WithAuthor extension (c200861) + +### Misc + +- #20 Update EmbedBuilder.Overwrites.md (76a878a) +- #21 Fix line about PriorityAttribute (75b74e1) +- #1152 Add characters commonly use in links to Sanitize (b9274d1) +- #1518 Add default nullable enum typereader (f7a07ae) +- #1666 Added negative TimeSpan handling (6abdfcb) +- #1852 Internal change to GetOrCreateUser (dfaaa21) +- #1861 Add MaxBitrate to the interface (e0dbe7c) +- #1865 Add null check to AllowedMentions.ToModel() (3cb662f) +- #1923 Merge Labs 3.X into dev (933ea42) +- #1941 Fix emoto try parse (900c1f4) +- #1942 Implement multi-file upload to webhooks (bc440ab) +- #1944 Add Voice binaries (b5c150d) +- #1945 Update socket presence and add new presence event (9d6dc62) +- #1946 fix NRE when adding parameters thru builders (143ca6d) +- #1947 fix sharded client current user (d5f5ae1) +- #1950 Add custom setter to Group property of ModuleBuilder to automatically invoke AddAliases (ba656e9) +- #1958 Update from Discord .Net Labs 3.4.8 (aa6bb5e) +- #1959 Update isRequired (98b03be) +- Add `MatchResult` (d1b31c8) +- Add requested changes (a92ec56) +- Fix incorrect casing on `HandleCommandPipeline` (adf3a9c) +- Merge branch 'commands/validate-get-best-match' of https://github.com/siscodeorg/Discord.Net into siscodeorg-commands/validate-get-best-match (3cd9f39) +- Merge branch 'siscodeorg-commands/validate-get-best-match' into dev (4f1fe2b) +- Remove docs build from azure pipelines (2336b98) +- use async main (125f6c7) +- #1923 Made `Hierarchy` a `IGuildUser` property. +- #1923 Changed embed discription length to 4096 (933ea42). +- #1923 Fixed gateway serialization to include nulls for API v9 (933ea42). +- #1923 Removed error log for gateway reconnects (933ea42). +- #1966 Updated docs. + ## [2.4.0] - 2021-05-22 + ### Added + - #1726 Add stickers (91a9063) - #1753 Webhook message edit & delete functionality (f67cd8e) - #1757 Add ability to add/remove roles by id (4c9910c) @@ -12,15 +103,19 @@ - #1844 Add Discord Certified Moderator user flag (4b8d444) ### Fixed + - #1486 Add type reader when entity type reader exists (c46daaa) - #1835 Cached message emoji cleanup at MESSAGE_REACTION_REMOVE_EMOJI (8afef82) ### Misc + - #1778 Remove URI check from EmbedBuilder (25b04c4) - #1800 Fix spelling in SnowflakeUtils.FromSnowflake (6aff419) ## [2.3.1] - 2021-03-10 + ### Fixed + - #1761 Deadlock in DiscordShardedClient when Ready is never received (73e5cc2) - #1773 Private methods aren't added as commands (0fc713a) - #1780 NullReferenceException in pin/unpin audit logs (f794163) @@ -29,10 +124,13 @@ - #1794 Audit log UserId can be null (d41aeee) ### Misc + - #1774 Add remark regarding CustomStatus as the activity (51b7afe) ## [2.3.0] - 2021-01-28 + ### Added + - #1491 Add INVITE_CREATE and INVITE_DELETE events (1ab670b) - #1520 Support reading multiple activities (421a0c1) - #1521 Allow for inherited commands in modules (a51cdf6) @@ -57,6 +155,7 @@ - #1690 Add max bitrate value to SocketGuild (aacfea0) ### Fixed + - #1244 Missing AddReactions permission for DM channels. (e40ca4a) - #1469 unsupported property causes an exception (468f826) - #1525 AllowedMentions and AllowedMentionTypes (3325031) @@ -99,6 +198,7 @@ - Missing MessageReference when sending files (2095701) ### Misc + - #1545 MutualGuilds optimization (323a677) - #1551 Update webhook regex to support discord.com (7585789) - #1556 Add SearchUsersAsync (57880de) @@ -123,7 +223,9 @@ - Move bulk deletes remarks from to (62539f0) ## [2.2.0] - 2020-04-16 + ### Added + - #1247 Implement Client Status Support (9da11b4) - #1310 id overload for RemoveReactionAsync (c88b1da) - #1319 BOOST (faf23de) @@ -146,6 +248,7 @@ - suppress messages (cd28892) ### Fixed + - #1318 #1314 Don't parse tags within code blocks (c977f2e) - #1333 Remove null coalescing on ToEmbedBuilder Color (120c0f7) - #1337 Fixed attempting to access a non-present optional value (4edda5b) @@ -161,11 +264,13 @@ - include MessageFlags and SuppressEmbedParams (d6d4429) ### Changed + - #1368 Update ISystemMessage interface to allow reactions (07f4d5f) - #1417 fix #1415 Re-add support for overwrite permissions for news channels (e627f07) - use millisecond precision by default (bcb3534) ### Misc + - #1290 Split Unit and Integration tests into separate projects (a797be9) - #1328 Fix #1327 Color.ToString returns wrong value (1e8aa08) - #1329 Fix invalid cref values in docs (363d1c6) @@ -190,14 +295,16 @@ - 2.2.0 (4b602b4) - target the Process env-var scope (3c6b376) - fix metapackage build (1794f95) -- copy only _site to docs-static (a8cdadc) +- copy only \_site to docs-static (a8cdadc) - do not exit on failed robocopy (fd204ee) - add idn debugger (91aec9f) - rename IsStream to IsStreaming (dcd9cdd) - feature (40844b9) ## [2.1.1] - 2019-06-08 + ### Fixed + - #994: Remainder parameters now ignore character escaping, as there is no reason to escape characters here (2e95c49) - #1316: `Emote.Equals` now pays no respect to the Name property, since Discord's API does not care about an emote's name (abf3e90) - #1317: `Emote.GetHashCode` now pays no respect to the Name property, see above (1b54883) @@ -206,16 +313,20 @@ - News embeds will be processed as `EmbedType.Unknown`, rather than throwing an error and dropping the message (d287ed1) ### Changed + - #1311: Members may now be disconnected from voice channels by passing `null` as `GuildUserProperties.Channel` (fc48c66) - #1313: `IMessage.Tags` now includes the EveryoneRole on @everyone and @here mentions (1f55f01) - #1320: The maximum value for setting slow-mode has been updated to 6 hours, per the new API limit (4433ca7) ### Misc + - This library's compatibility with Semantic Versioning has been clarified. Please see the README (4d7de17) - The depency on System.Interactive.Async has been bumped to `3.2.0` (3e65e03) ## [2.1.0] - 2019-05-18 + ### Added + - #1236: Bulk deletes (for messages) may now be accessed via the `MessagesBulkDeleted` event (dec353e) - #1240: OAuth applications utilizing the `guilds.join` scope may now add users to guilds through any client (1356ea9) - #1255: Message and attachment spoilers may now be set or detected (f3b20b2) @@ -227,9 +338,11 @@ - `ExclusiveBulkDelete` configuration setting can be used to control bulk delete event behavior (03e6401) ### Removed + - #1294: The `IGuildUser` overload of `EmbedBuilder.WithAuthor` no longer exists (b52b54d) ### Fixed + - #1256: Fetching audit logs no longer raises null reference exceptions when a webhook has been deleted (049b014) - #1268: Null reference exceptions on `MESSAGE_CREATE` concerning partial member objects no longer occur (377622b) - #1278: The token validator now internally pads tokens to the proper length (48b327b) @@ -238,9 +351,11 @@ - Exceptions in event handlers are now always logged (f6e3200) ### Changed + - #1305: Token validation will fail when tokens contain whitespace (bb61efa) ### Misc + - #1241: Added documentation samples for Webhooks (655a006) - #1243: Happy new year 🎉 (0275f7d) - #1257: Improved clarity in comments in the command samples (2473619) @@ -251,16 +366,20 @@ - IDisposableAnalyzers should now be a development dependency (8003ac8) ## [2.0.1] - 2019-01-04 + ### Fixed + - #1226: Only escape the closing quotation mark of non-remainder strings (65b8c09) - Commands with async RunModes will now propagate exceptions up to CommandExecuted (497918e) ### Misc + - #1225: Commands sample no longer hooks the log event twice (552f34c) - #1227: The logo on the docs index page should scale responsively (d39bf6e) - #1230: Replaced precondition sample on docs (feed4fd) ## [2.0.0] - 2018-12-28 + ### Added - #747: `CommandService` now has a `CommandExecuted` event (e991715) @@ -316,6 +435,7 @@ - Reactions can now be added to messages in bulk (5421df1) ### Fixed + - #742: `DiscordShardedClient#GetGuildFor` will now direct null guilds to Shard 0 (d5e9d6f) - #743: Various issues with permissions and inheritance of permissions (f996338) - #755: `IRole.Mention` will correctly tag the @everyone role (6b5a6e7) @@ -363,6 +483,7 @@ - The default WebSocket will now close correctly (ac389f5) ### Changed + - #731: `IUserMessage#GetReactionUsersAsync` now takes an `IEmote` instead of a `string` (5d7f2fc) - #744: IAsyncEnumerable has been redesigned (5bbd9bb) - #777: `IGuild#DefaultChannel` will now resolve the first accessible channel, per changes to Discord (1ffcd4b) @@ -397,14 +518,15 @@ - The socket client will now use additional fields to fill in member/guild information on messages (8fb2c71) - The Audio Client now uses Voice WS v3 (9ba38d7) - ### Removed + - #790: Redundant overloads for `AddField` removed from EmbedBuilder (479361b) - #925: RPC is no longer being maintained nor packaged (b30af57) - #958: Remove support for user tokens (2fd4f56) - User logins (including selfbots) are no longer supported (fc5adca) ### Misc + - #786: Unit tests for the Color structure (22b969c) - #828: We now include a contributing guide (cd82a0f) - #876: We now include a standard editorconfig (5c8c784) @@ -425,11 +547,13 @@ - Fixed documentation layout for the logo (bafdce4) ## [1.0.2] - 2017-09-09 + ### Fixed - Guilds utilizing Channel Categories will no longer crash bots on the `READY` event. ## [1.0.1] - 2017-07-05 + ### Fixed - #732: Fixed parameter preconditions not being loaded from class-based modules (b6dcc9e) @@ -438,4 +562,5 @@ - Fixed module auto-detection for nested modules (d2afb06) ### Changed + - ShardedCommandContext now inherits from SocketCommandContext (8cd99be) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 752b40931..840650cf8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -17,7 +17,7 @@ any member of the community. We prefer pull-requests that are descriptive of the changes being made and highlight any potential benefits/drawbacks of the change, but these -types of write-ups are not required. See this [merge request](https://github.com/RogueException/Discord.Net/pull/793) +types of write-ups are not required. See this [merge request](https://github.com/discord-net/Discord.Net/pull/793) for an example of a well-written description. ## Semantic Versioning @@ -28,7 +28,7 @@ that are SemVer compliant with the latest version of the library in development. The working release should be the latest build off of the `dev` branch, -but can also be found on the [development board](https://github.com/RogueException/Discord.Net/projects/1). +but can also be found on the [development board](https://github.com/discord-net/Discord.Net/projects/1). We follow the .NET Foundation's [Breaking Change Rules](https://github.com/dotnet/corefx/blob/master/Documentation/coding-guidelines/breaking-change-rules.md) when determining the SemVer compliance of a change. @@ -59,4 +59,4 @@ The length of the documentation should also follow the ruler as suggested by our #### Recommended Reads * [Official Microsoft Documentation](https://docs.microsoft.com) -* [Sandcastle User Manual](https://ewsoftware.github.io/XMLCommentsGuide/html/4268757F-CE8D-4E6D-8502-4F7F2E22DDA3.htm) \ No newline at end of file +* [Sandcastle User Manual](https://ewsoftware.github.io/XMLCommentsGuide/html/4268757F-CE8D-4E6D-8502-4F7F2E22DDA3.htm) diff --git a/README.md b/README.md index a10a6cf51..69a24a157 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,10 @@ The individual components may also be installed from NuGet: Nightly builds are available through our MyGet feed (`https://www.myget.org/F/discord-net/api/v3/index.json`). +### Unstable (Labs) + +Labs builds are avaiable on nuget (`https://www.nuget.org/packages/Discord.Net.Labs/`) and myget (`https://www.myget.org/F/discord-net-labs/api/v3/index.json`). + ## Compiling In order to compile Discord.Net, you require the following: diff --git a/docs/_overwrites/Commands/ICommandContext.Inclusion.md b/docs/_overwrites/Commands/ICommandContext.Inclusion.md index 4c1257b23..a5eaeeab6 100644 --- a/docs/_overwrites/Commands/ICommandContext.Inclusion.md +++ b/docs/_overwrites/Commands/ICommandContext.Inclusion.md @@ -1,5 +1,5 @@ An example of how this class is used the command system can be seen below: -[!code[Sample module](../../guides/commands/samples/intro/empty-module.cs)] -[!code[Command handler](../../guides/commands/samples/intro/command_handler.cs)] \ No newline at end of file +[!code[Sample module](../../guides/text_commands/samples/intro/empty-module.cs)] +[!code[Command handler](../../guides/text_commands/samples/intro/command_handler.cs)] diff --git a/docs/_template/description-generator/plugins/DocFX.Plugin.DescriptionGenerator.dll b/docs/_template/description-generator/plugins/DocFX.Plugin.DescriptionGenerator.dll index 095ea46efa86b1f84fd7c500f1bef165237705ed..6e8839796d557923be7980eecefc44a1045dcc0e 100644 GIT binary patch delta 3792 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 delta 3598 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 AegFUf diff --git a/docs/_template/description-generator/plugins/LICENSE b/docs/_template/description-generator/plugins/LICENSE index eb92c0a03..d74703f3d 100644 --- a/docs/_template/description-generator/plugins/LICENSE +++ b/docs/_template/description-generator/plugins/LICENSE @@ -19,3 +19,11 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +============================================================================== + +Humanizer (https://github.com/Humanizr/Humanizer) +The MIT License (MIT) +Copyright (c) .NET Foundation and Contributors + +============================================================================== \ No newline at end of file diff --git a/docs/_template/last-modified/plugins/LastModifiedPostProcessor.dll b/docs/_template/last-modified/plugins/LastModifiedPostProcessor.dll index ccb2b0e3718efef6eacea25b3f1a0a7afdbe0bd3..be36969c9608e529ab58bbed5aa49156d105980c 100644 GIT binary patch delta 4827 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 S$<>_yVccP-<`dRG+W0TZDjN|1 delta 4495 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 diff --git a/docs/_template/last-modified/plugins/LibGit2Sharp.dll b/docs/_template/last-modified/plugins/LibGit2Sharp.dll index 31651507274c76c4e538cd3078fb7c4f79daa7f6..5b3568103eee937dd9ca44c8f7d182bd423b1b32 100644 GIT binary patch literal 433664 zcmd44d4L>M)&E^nRb9QzlJv}^dol@3SSA+JJpqD*Rb>;A2M`c3ph5saiAsfTf|{ns zQ2`MXzztk*i;6zD%MQGU<+{_zf^>)dm< zbI(2Z+;jKiPrt?sJkJaH_s@TN-Y5C$?=buQ*FUp(4^4b}$op9F_T4_&ciio}o$}oC zn=3XnlIJwedclfw&br`&oCDHmQ`uGgYxUFpJB;dD)j0S02?32(XtuPj-!9w{ z-B=DPim&{MHs8y6hd$Wn9d%3S6%E_{nf-9&&32tTg-+dVcJ;=me(dTW6spbrJg+oc zqHd;k_2b9lnEIgm`aw*tksrp?Zsb>D0!4l8NvYQ8`&rD9^#AWmzysi@S;)_w7;11LYGw(UNRMU;eGLMp{4yL z@L(R(#oVlr(Oh&XF`Ea%f#yN{w3m^M(3j0eF9#jAYDBNxx2o(rFzzEze6SVhl9l)g zF2$=H0{L@@>S^&l4pr|#Atq7S+N+zQz~(a}Qe16b(_Jrt&WrjMzg(MW_{rY5gMG?@ zgZyL~_u9E|sv@Q$T~1mJ0D)jRgaII`8Nz_oeoMtq4xto^k3hQM27o}!9KryCi!Ght zWWev~|p;FVpH$BUg$5H)LNMoHZd zlEcj92ODYszLJfmR+(QyUL|XaXsXiGD%zxg%3R-+WF_al+$iz9nJ*&& zbI}#5XfUO%lhqXU$}VawMP1oNElp9c>Y~O|)aEW~S&G`yK{byelUWr51=XbUDz$f2 znOt2$67Bsk8arGnZ|9HNqLqftw->xx1l=3O?*P|ckz!5&(>z*<@0nsw z>|iFrl!$dKnEIj7CA;Ik9Nw?INQVIsu^iG;Z*zPjW^BVjp=*TAQEc@bBxG7{DHDu?ALzDB-z zzh!)Ci2>z&lj@9;CqqX$s;(W0%27FYz_+#yl*4+y9M02azx9sVk0#3B8ka_(qL)k_ z0_jQh{pIFWWG&tC6=?*^i}ruD>g_)W9aAN>{`_c6_^9sZryA(a4Gk36hUW43Z#vq= zN#J~GGn`*W(@FT6UfYd4tkW@oCbWBoFaX3J8NvV%D0mme01#+QhcF;({QCN2@{sj8 zKzv8%qU&H;6SJfg`_SE9NnGdg26-S0CH0H7Hu^W5q6I5JauR4cgiKDB<6^&+@56Bw za^NRxlzj3u)#?h9!JsLj&KGprvDd!H7 zKPscuesa2U-QXN8MM<6kM!bBs#e-3Dwcu&VZ(gZ@lw)Kc-`S(U{>J_JsjqZllB?C4 z&meU2rBF550pl~3)J{Sf85RIpTc?0Xh4M_UBfVzOhbri`qle618s!}lmTTcsk7;)?F# z&f~swM{)b}F@-Em59J#l!GAoaf=a5={M6Yg4Xy>Lkd^qYY7(+rs6iDb*akd*e zej9-uovGg&C{2{mb4F4}5(23s=jnc<=5H|iq9&DQRziswmLH|Jzf`u0;OmvtaT_9$ zoJ(rSdHf)ZR_}`13G(&%L0oVCapS86ehv|v$aHB_rkxIU-5T8%iZX---=h_H{ggRq zl>5*f3A!VQUje1{0)6$1L^9uve9cj!fw(dn{^FhB(I+na)aj0_WlCIS^5gSWo?f)d zu|2x67g16)G^&1TeCarlBaxq63p0WQ#e?9C#|vpsfI%=jo(bYX^>Kr zoR>DEa;-;ru?k2D!%8yK1=|AGhmHM3wW-q}Ob(Zsi`K9kX|W@-vqtA6LBvsuq291-Iz|_jt=CGyQl@*ge=V|Q9ic00Yg~Il48_m}luk8XC?&(o^ zVOm3^yR~d+3wj-i9GTuprwM|_i&aK7sL(oqv~9I%*r6Y`>&pF%z?65L!oOAmK{I)sz8cQI zJ_D{5aE3oacU+3)NI?r={RX2oO%qWUO4W%;f8*ukpGsUX><#zD^gWS}{iILcrSEjj zlZnr$x9k{yzZmaQQk@y&ODUlveoOQx>eix!<{zy@{dZ9TI@PPeF6)O|d>K5a=?207 zUAlqm(2@%!CVQs2bo%hXb>G-pT|wRvC9WMm)AP@8vMXJ-3A#q0D;zy3H+oWF0$A@4 zEx(g;!AVnr$zuHojBzWQ>9wkLo+m9NBs?)SByuQd84)LKThVP%j-?FxHw4B=*GF~q z%L!ip_H!L?P=!m!ybn4@q0^6r@`Kj?jC3|H>GS-m{l*Pg)81bK)#EqTr2GS6Dwa`+t2VwUWz3fDDdur?j_J&Dful?R}Z7=I$%))JhrYh9Ly~lr5wY-So^W0 zHylK56|UItD5zX5ibrzg+s=&3QHp&7m?)nA~-ydFW4+!t)ND3wZoW*PRfmm46t^1 zFy*dv>MOY92ufrVGMAPjV`hKQIvkvhLi3dTT&Hc{c8I#F&0fizh7!A-(jC%>tn>f z)D~@p$+$l&WPiS*Da=}a>eP+THxtmtP-RF#I+T2rTqcDXqd7`B`%NCF^qihT$~@+M z%2h&JrhA0*Q$c!!&s!=%ayU`x-S6oq1!`^sD!n^XiqR3qk7^F_k3?>rO1d_THUPxa zGlT&k)@BF;Krr5NQ4C=I@k8)qGXerg@v|pVXV>%}OIG%p|QGVlhi*H$f!k3mI zcMF@vC1^kvAgix1{(_PS;+tLc7DF}{+yLS~Gea1FtUZhZXMXzDG{U;f-vA<@|6K|O zfMB%Z5C(u??BNgwfMEFH5C(uaH$xb(#*e>2ZlkV@tNr*ET+@DKsybDwFro~ap8^qo zM--XtZ=}x0B{z-hP@>j}28|C0l=&Vuew1N->*SIlct!GG#jvaI5hb6~cbT6&L>C<; zU&LiL$e>>g-usI`<#OzYDX^`Yk6mgjw=Z#~( zFzSg?+TFlO1*p;f=J{AC&7xTJ9TxHj#It_qFe~ALGIquX^LU^)XjUn4s~_%!bcNV>JJa+%9Iu z+4|-9htOSW-i|o*=bBHU2To4pXCR+^6Vza_&_0g|#9|bmK+5g&fpf`kNnj)#4r98R zQhiCW2g7)%l!p4fLgj{YF~g-&eHTJ?FfRc!9gNlbs_o~HVl7{+7?4Z;NTm9>`(9Nq z6G@o(kI>S7o(LI^=9Ziy6&+RE4}vI1?e%=3u*mAsv!HRuwz+HunBg-6b?fgln|x32 z`+v`D@|<@uJVl|;Z!3_OnxV$JXTjFRzHbvU%vaGUqv`&}MglooF|xT4P`~J)7->C^ zV3jRcpnYL-1}TijKLUdWP1fN`n76diOm#HA7rYH@Qt*a(4drpUlo-EisWE`r%8=y# zG!pR*lx)z}e#e&)O1b%Zn;Y}nUt^9dYU#IE8$3ygG8U-?OqyM*8L?SvC&nVK#hA6V z{^rYY54ecQuMo$Q75%hOkPc>axP)iMp@gc(%~ZREuiy! zFC$8=P)H%tm;f>T(fM=0#pF7I7m~~ItL!_PcLWqD?@uUi@(R#lJtZq2KLF0fNY}wm z_fC4BTM}KC&Ry)Px=nsZqDjCiP05v_zqX2{HWC|%3bqzsWb!@;NmE;)70;d& z_uf8da=9hiSuP>I@67Macjq+JrW#Sv+c1`n?K9FRt3YDlW{he-ElJTT@!%`x{`t>s zr6N`9#_|P|IhHJXE4R!X=HVDmK1CGok!SB6{3`+LPxuP|-VW{)J@~Evw(X9_zfjZt z_W?r}5Th%NvW&I4kCN94$@F%uS;OYB5|cioHOA)eMA-W=F~j5?K=oWSv6$h6iDMMx zn{}G!Wc+-*lGT7FodboLucIbxs{A&9x#*2j44WzRrg zwuvezR+6j0nGk1irv_|RPZJ)cO$8Hv^vH2kk;y)Kq$BKOtM({I6Q%u-pX80y-}Fk? zW^h{TkZ{+Ax5tr|>67=(*C(CKo|Db<=KiO+#faz?8`xSi9RgA+#3Hzg-{>ImKCi5 z&2IzuAcE=C(VsFi%$C*SVs@7P|a6M45Q>VdTB!>+sz~D2ww3#X-1C2aa#qi++EyvH}jz8isZ1@e~+aF$+3% zEM1|hcaFG46RxjlR7yPxEl12W)pW`-qsww+5N?sjc9i47w5L}zF7Hh{Qra$lns%xp zf3-kG_Vl1xAC~g3_T-d##o?l3gfXv#tINFpLb;UM0VTKjrQC1d_>FL_Q0`CE)?D7x zAKG3wW5;E>_$XMnoGM$#zpO2&?OclcX?*YQ!E4SHrQq!$SuyoM_b)BcALaM+qp1d# z-v&3k#5g7Jo=8}9eYyE2!eo|0XlBnqZBK2^0Uu*wMS~1|I*ySrDxwPBjAyj`cHR!UC!G)|g^b`)Z{`EIk_!uB^&x_%I~^o{o? zVC1*&5Y8>%Iu8uE8>FY1=P1Q=NwqfPmia-N-<2iJl!(y!u;hFLQ`$`?P)bQvan7IT z`JVZn>vx>sa~xV95`3THyj=-0PN}t@H_!9^^F5zG&+{L!tS2V3|F)UuJu1~ZNU*t; zpLQa2%8cfl@M~WHhViD2r-I~ow6x}$m2vV;V#uM4Iu0e=aj3w_yV77PV8GHCSjo8=0~}@Ouax2aHXou5_K`27KJA z{4UAgiRLGNrr>V9>)>=?7REP`5OZ2?oHpv5$mPgBkq7 zXuLH8bB&uaa42kiwgcztrEn-R`WE}So^1oHMKPvYN)^WcDN<|VpWx=pCiigtROu;%|1Mn^O`ZhCP12mWSc}l%f?czUS zY000a=}wfk9AX;wPO|KaZ^Q##cIPHK($q0_=Wboc(mTK1b&TJ6SJ$!Z&cUu@`JMZB z9lP8~r;w$#>zxO89TUYnztwU1$@^5%<1nmVq)tD8i>-qGMNr%qGhDAFA2O6CMzs1K zW12@jGlmyYUSS~B2uXB7iTqQ00^qVRj>gd zS{cFs5X>RC5C(u~X9xp8Fn{1e7ytrm#UTv1u~{Q`b~5}AZ7A8z!G96FhlBqlcv2Ly zL^L`YPdRXOG{``9-Z)UY|4?M?G1AlVN&>R6XmUEgGD=q9u+$^$Vj*@HLRmyis|c~D z5X#4D=dn~Zi^{e;%wHO>0#7^H$9>lD5x*|WN@4(r%QJ)lAYPFn3;=<};RbSI;~%O5oNPJ$jAyYW!cJk1$7x83PtT#5!25xm6VS^L5r_N7&v&gG5kYz z=bFbSdp)+8hl}xldOfiJ*%|jKQ0=P)2Js;(vfA(up&>T@epcSs;2qddB`{6LmevD; zbEN_Omdeoe zl55m}D%=B09Vz2vGouPHa*{&LE>m~sX-pYG-m{9r0|QhTN8 za$^OhbC~9b!7!hxDg17snSiGjOZB{~i8OZOBBHrK9}#ErX&}d&sqIpo@<);T!&C#V z31lF0Z{Vs?4CGw%V1>}!;VNj~%j)R4pft%C#p{6BxH1pHS;&Sw6W0 zOJHHFqb2(0fwi-MUdEQSsUAwq-Oa|F^Wqz3wa=b}fO=)ENf_@{osuDM?*Fno#L<1=60CJq*vP8 zqO;Y<5E6&1v{l5))Wt+sQC&UDpsZ&A8O$!E949{Xo9 z9eIbPV;eoe~v`ik~G&Bo>||kaTWPzv!r*@RGoPkY&P)Ia4#K3vuU>Z8Jv@T z`?GxJqR;W$#E#XVBz`tUOIFLlo@4v6?NC~VQPjEkHUA60n2{jzp*AC3iJmMk@@!qY z6tym6`Pa@dM6Jua;1z()FDPBt*7hUbVztl41JIpdkTOxzcsPUmqxc*GPZ!*FNNs?O z@-=GJ)eaUO)izLZfvjsQ; zr5S%s91N11!AJ4UTC1U3`x4)K6xZqT$eWnd_EXWF^XOIWulXh7Ox}qR>@0lPb2EuG zzYJPOQEJIoEC5zhC%~5!;1&fyn`Qy9qB;S-r~tPr09{=cU_(!UFDt-T6#)8NfLS#+ zS#DngZ37(xK-`ug3;^-<3}HZKhGiCEpq1Pb*4OR&h1S>bj5{{cBlz(qwWu{SZ&jQi`IfR??Oe%S za%czD5dwNoVW>WiP3vRn7VLSQ!T1hy5OdKdsof^yDm#PWP@n3e#?nxq?x33AA?&QO zhc&=Or(E)18p>+a`U?+UK;Hm z9T*)PWi`bmbOixNatD$p>lDfN2%-g*N@ahJn!w{2=P$`^{wjcTLc zCxS~d4aA`b7h5xZ)zh9BkcQ7ciS7XZYKzKIe{FR+8mLW|qrqD2s#t8l7B!do7+?q zJWeiCjc@gvcY|!d9X9$+?C?_ion4R_kj`P25$1%6YJZP1lC$1rP{P7==|St-xgJc; zmf(j%cEP+3f|}nM!W^87UN86u4!&0KJ;3odROz38l({3YuT>Eb_FF1lko<_!t(4@y z1E)1q13+xe5C(t{4-`@ikYFhR8#D{~?kuzccd%8Ay^Y~!Cg|9QqTjedPL{c!yap1q z9m8*Ip`PO_aaI`f_}&UQS(cEseoE}H^%JS;mLle86zst`Sa3KJ_1c|EBXCTgong^B4^#~es`JeH=(G}rnCVWMV*xuxVDvhkBwfo9)E zb#1a4DE=|Xs_m+pthf}fPqu;Uubt~B*H{uiUzo&}P7+uB>m+vn7s*Gq6SJQ!l;TdO z;BRux<1?oDL~DAQOnJH;tmi|WD&&T&LJR=$o(y3?rcbhcJwg0N<-=AdKE!w0X4fEo zHfNROew*-_R<6YFQs`Y`7FaY~f4_^=!dP=cWB{3BW;uibATX{R!T=DMQx0JO2uv!6 zFaRSmY}_p=Ig{xL2(jHKQ>9Vc-|>Pz&tn3i+`NU+U@4kx-ArXn9Ja2luiM3;b-Tp@ z`^*u-=v(ctsoFz2?421M6Vfs-Yg&*nW#L(pRLUCv1d?#`YV{NI_&5JFnWZoOxFF z>(Gg38qd+WYnO^{VPw~2i60<(dZLG^4-*{`-PFD`hvw%rq45sgRtQYF>eJ!LTy5$x2>%nX`*m zE4k6p1S_J3s$}4lIj}7>U7UKEYm{?@oq%NM9N35j57p-#039y(_*PNE+IFYw;Jh?l zNB{P{$v|arD6EeccU{Lfxu1B`Z2U=n0#FZ&erg%bWo}Fjd2pQK3>>$olayfC{1B}-GHATjSAh;us6lZ5^gK5EM`Rs zry!n2z$Pyyki4SGvdX81M|HZmh7DI?*3-d9`|Ju(zB|CMGsVIm+X+L)4rO(A963OJ zR%c&To#pD|!LI8T_vIY%g`BI2TrdujNhh6WVN|V}V3JC-4?uc8CB0z#X2i+j;g0UJ zn>SNGjFrA`cIB6FG(W=+gQzb%j~|%FS9&~daUOS@$E`gcUv(ZoG>@mzd=>73fsO1IS82Y-iIt|c_t?I1<)aWjt$3H zVzueMsi>t;PP&KlEVSM(vH2a1J^4L9skd5ieIOrylW+6utU_+0Z7R>lljq}<=N*=3 z<9alF{0Ac1@uKD*f!aSN1KnKk%>^k7@61s*Cf-O|`it2B6wOKjHUC8X$va;r)p8@? z%r>ITMRzHoKjTgwHh&EMdH&yC;D6}?|L@H6pZx+ksgL|5dlo4cf2+$QvjVE|1Mr#TTi+Cw z42|0cfVeY57yto(6X_Z!KLft#k6{U-R%&dczK2pn_BkLpV&A-rWM>|LHP*M^4=@+q zExw#efXP|;#D525a^Tkl_36QRE2F~z==ewKaaZPH03jKpyCN6> zf`Pb07y#nC8NvV%-^&mNkodzc_tcQ~Ti?$D7(k34WC#O5+?^o|0D&aBTnzy6qYPmH zh8t8%l?-y$2r~b82ZeOCPjpu9_;L!G?{|vd&Wp zoOv*-gI`)5{8)AHPm-LRm5<8l>?_V{e_M()MpZF^b)GCoP9ukt3}HtxSDM2NTiY8_ z%o1UC7v>@`Z5lhuUGrm$O)}Kho=K2xoL*Z_X4(BMjOYq({)47xAbA%FJOv23XJVZ3+cYK9f?OX}#&O4dk(Yeoqq3sFql(R=kzo=W)Kh_w7 zRk{_Y7O$Y8jpa=lbrBO|`S^QuI7>>~$ThP?e6LXQR#CD(^{F%TS%+D=%^$*EI?Kj7 zrFtPe9LhCjGdO?APgDm>nzTa)!`q5Dd4)Lnay&ceF`+LN`enW7s?eK-zEtRZODV={ zME*sRlb;D|$b3t1MT?8I{7|m_a~EEp_&{*&p9+Eb@)(kA|HAniuB9-|JSA!WH;|ui z$v3GHE(Q1Qf_nib1N`_c$*9XUucdlzL%WfpyNRD|rw%wjn>dZxSW&81940Q{$Q$11 zA8R}?zfKC<)k&dKCxJ`jUe(RvREYix{HstWyYdfpqjLgQPhSK+-0CT4tQt-$$k81P z_a*GkC`~VJ9Ey*5H%lNkr5U&g4Qe#s5?5BJOK?-qo+pWHRtB07GkGjcvP< zddYw*>Bkn7l!BuW9HZpaMz*VhQ}Ov%RlvdE7bERCZOkb(hg1m*Yh^I46v?NCNz8wS)%_0JSzQ&A zK?2rR@7#Y#{=*YvjT=Pv_fZKGe`nZreD5y4-pby#??^P(_}+Y$F*%B%RO(jr#2DKw zyZS{VH+aaDzRxbG_1|}O>vJQ+D}K_g=imI++gH5ZHn!y|H&N|$`!?zJMR0@Oe#W8h z?Vz+JrZg+1iLQ0sn{2nk$WMO`6*N|iQaY_X1&uX;%aStD>I03VaRjbKn1?%Q&oC%x z|2fs)_B}64=#xswbxrXEypx81SRrL&7+|*JQ(X3G{&+n?7`ib!d1?0|G2??e>W#jT z*-s(;mf(txP}YJZ-@%0O4>dfnzNpek`x)|&_vE+RBRN_12{Sb0`lKnpMb8-OQYI!! zMTjNL?QVvj-n|DI|A=fH5!OIBQ>nN;y!GwQ4w2wkf@w1)GIE!^h%VFJ{1vYfCUAQw z>gLB7yyDk)*%c4L3ip927sVTbqE6_I!eo|RqfP-Q|{!MMNf6c z2c!g`>RoCEWN~$B4Z)Y)bD9{&U&yLM$XE3v1-FcUBmArF#`ZES1s#abHUC3RU2?9gb4W-6X#6X5vnj$c;U5If*%!VZ1d4s#{*` zRNJrUlIEfZq{o)xxwSd2AmW8eMHlVl$pBg{op>1EO)Kc`JdBTq5vUY-+59sV<{eGl zGn@G{1gFXQgi@2u)}>kc^Kj;|{LIp+giSX7m1dELFy2B#imy^@nvB-X((Q1LCq9;R z8z&X`>s?UiFUP1ZzlGhc&4`E;U7nh7j^uXHLd`riW&2lI)U5`C~Oe07K4!k9hkX?c`edolAbl{OkPu_&69j+4>DNT`xDThb}*^k*JPfls5TI)&NQaldWIl zKg~I|Luo37wn7&Mt!bqs6s_;Hwl(4%o!*_G{YIBT1I_ARmD$lSP_RrOBC2$V_z@$* zO$A3CoyaF>-7eT*q1qNrjzF7>6=}@G7K-Mt8SL7#Lp~^28sz&k0$(@-tKUoD&=Ek#mUe3NRb@OTB`Q^kt*2?>Q zis3q8OUhL(7qR4rZT~0ZJh6VT=y+RhTu%7N@&423Q(YLDHIHTGr zg@s9juzFNl=}KgVT8F@lzBAG~IMy-Vs@ic{?KiTqgw;!T50Gz)Vn*5`;Yve}DOX10 zk5NfezPbH`3+*Dqj5qFpu51~^d2c?4THb0S@sW$N-7X%{-6!dSKuWd@s$c@(ac zlXh{o4f9g=mxcaZH#CM`$VQe8OSAasYDVUzStYZrU$d$ucc3?|8=b}&T4jG6u(kRk@2PW;YjWnTY1c*muIB%dKHS?I)7K%g4*>5%wIF4 zr9ve^+m?3Pjtky&x@T#%zk0&4ui8R;J@p!DT*dVG7BCWJ2RNL$*h) zr1dC0vd@t&uT8zQFHRi?5j~bIJhk4Bzk-xjw```)+3CXG*wR}PCJ5c0D&OuN#5QLh zeu;VZ(>XAa$Ynntg_W9=XLb8l2|6a>E$R2G>Gx~t_qO!=b$!QUYRQ5#=cH`R{+F&g zk$jpzrH9cymz*BrynFk%`sCWblYX_)iY8WnCM$r+i}W^J>>`eQD}wEza^@Rh)PuzwuRK^$GrTv2tIfS%YopqZhgoy0Kq20UWfkr&9Zbw&b0pI&b_! znaVZ@Y){S1A7H6XWmpdpv{qe)(pD)626_Qya?+E4Yo7#<8yEERC;?VHWC=YRfHt9)%6!mr%TbJAy?7 zvwU`!gs*&<9>qSUvt&Q=c`_DHas--2?4i^&zr$@KERr1w+)tr!vFBIV9RQ%!^XU!l}@ivJ%1q>Llswq_;+%h5Htptr6R+sz-DDlHP<@0G_W1U z_=#f39?r)8xfw3>b@KH`ldoS%zK$~al27A!rE?f{8Z@4lB^mbQ$ee%%JGuBZX_?(# zV@89NSyvF0Y8P>Mg$CE}4n+?XY;cLmGFqfK1bVl;z}Ut0-k%oZhY!Ie+mVZU#a zkFuz(bPFFk4(=kjWbF`s&k^wSCi6=dFxB-7d2cq|Ym7*lK#M1`m!BrO-NBV>X@hog z6BW+IO}X|gqkQgaik}E~+ONP-=ns=WVq;Xe1?y7W-7Ayt>%Gy~Ro8IeeenaZKZ>72 z!t<`vGg)(8qSkP+P)IUm1m0IdFmTHSh5K z5>pdgoJ^t%Sdz-w{$BC%PR_FC^(P4nJdy6)lP~kR%yp>s^vH4iFriRD66`3(45>+z zGs<#m*#HoXxE#U&5DdB;!T=DvX9xp8Fzj+63@|!EJD(`~$gkYDpIwfsda!NErRI&4 zjrHd@>Emx#A-|)dlC9+*IMd*{zU1wA*xUeu;m7Yb z*9>Dz%?%ul956RvE*(JG$=tvvoWO3R_4u|8l>5R+XY*%C(NEq1=w=Gsedd`Cw({n@ zXYtkF_?EZ3G5MdZl|H0adJI`=y3wJ2+eM9~sNZ!_OH3KT_zE}zzq$2cF~`KjaLsku^cXe&%3fbNy1tyOy0X_-j;`-O^ZgW_8vBqw`Q#(| z6q1kfkqj|zcJ*%n2nNUwVE_n*$qr$FW^fQuuIy3*Yi1aQtCo&+wPdd3KXzJ6=>gg| zTP=N%6#V4F_Ine*u4?A*Q{L+8<6*0hKZ&i!rS;)Zf9|5jW*q9_4yt*)m@k?-%^G)o&2n_ya1P)zfO~X)X2CJb}chh)($U*95dqE27i-91)VI5X9a4 zx%yW!4C2oVdm`A)?@BwZ|5C!4_(={fCH=8pIe4|I&z?3=XHsf@kr-5;4wfZf7VKYg z6+ztmYI2KVTCW0=eAW40-SxfA`EHi)H=OS^UEe#L?-u#q2`qVFuEW)~0U(&Ca0mlH zp!6KV01(VxID`Qp7`i)z0U#KdI)nir7_B*k0g@?L?8kSBh&3||btO|L!8cmIxssFR zU}il&Lb|(mWBY@y<$n~J8s7pZvG)DsOQb}r^^>m{Fy<#;GhnHo+%6z~s?w9JT?_y9 zx676roUHwi$=Y8fMW+x*ZQr5()d;qP2nG}8{(nK$AGqexraHLh(Z0c) zt)Nt!AMVn5zh#guKcC;U7eej1)-3G>nRqlD*47~i`b;Nsy>VaFP zZH)LAWY8J(QA;pG!#=#4&!nu4@5(}?8PvkY{Q_+b%7u$3l@Cka`mpxS6D(14`66V3 z=S{kK!Yw8QTnjV+1aklmVE_om`wn4%=|b!qn>Pt#A7L#q#YU<@QY>8xI9kR3RSrosn4f?734BQnBz~r5r ziEHzXP8Q?UDlZRxtOMDWw_~Rcy`O*=3law@1Ozdra0D3u0=wKH3;=;C>JSEiz$S4B z13+MxID`R=R1Z}i@#Fb*mpvX__2Yx(`V4iyPL=;DWiN%Mc}UktKGT6d+krkOh~QX8 zPG21fkMx)AP5M0|kn5VY-0O1}R_V;&kQy7%{?*i3DCwc!WPwfZSgaeeHfqNn9@R5xZnm5A5Gy91`uC$t#Zywry4(7=>+j}<(u7$ zQOU69$g>HM z9$7%v8|CHRhS208ft2owrECqRGWGUBxtUA#%-@lPv~Hu89PJAzhi0N83CuYp(0sO9 zP@>{7WYIS{SLyOn$UC!(De0__U|=*F&xoO1KGE?B8~Z_zQ&BEZ=mMP_G@jA*Nn_6R zAm_zQBWYdp0?L5B&KOCg+9;o?5%RTrm8o~`Rj#&6l%?1|%w8n=aDO;VZ<`DUxO6aV z9uKj0PiDVHl`IvUtQiqYkW;9@TGZ&?ePxRpZcIDuJ>@JnepA!cb)B+B*i@gqTtyem zM(hsEu6cvsIos-E}-7-kq*42>7lCubap;NF^ zEa^IOdQ;*Tdlz@JG@tI$984>rb1``_Vd*h_T*Pidbhg>bUAR@w(k?n8&L_Vxc@?FZ zf8$!3=R11yWN_^Ei;Q_kKEv_e_g?F*{FFN{=dBRS(&)y8pjH>3957( zr^w&}N@bp0DNf$lkMJVmTZ>qrk(h5cc#4EG=qUu6?JzFb$6!f zuD8LwEGt16qwBSMIX9heZeZ&zx4!lWeR4QbTy?j{=9(vTMLKNWM<+9xOSt+qYX2VV zelp+wgFaf!xAwqhjt4;$+JEFXUW*v_%6obr=HcE^mpQ&lcW91nopeVY&A=A_M`&S_ zmG(dQ%tZxhi}O$mbk&_^8O2AriHiTVF8p&xb-yOnQk(~alX`0KE&6gUOrKo*Ht`oV ze4+FdO|xwPh(?Am07NrG7y#m;3}FCvPT0NcD=tVe#Cd+%9vw8VQ#Kl|T&&^BR&&j4 zAOSSsbEFklJ6G~tId(W)+3K3a_0+PTypjuK`d;VDX!)o7^nK|Ql zzc_wAxoCXiPy=1mSc)3#pqlFmJ1bH87}gPSzoI`=_i%PEDhP+bjyOjGLoFGBNx8K?H*)CDS$YCiy)(VjAUpR*}d&ulb(IrSL zGlp4WVO&H!`}6fh9LE>$!}#s|vVygfeL4Ghm305Y={@PhIa0CsQW$P&?&&J~a1O}lvzigYBt6tfmqOK85_j&%-U=H8a*M zjUXOYp}A&kJC6~0sJ*>}`lWqRzjhUwTM!aq?h+^@J*snF7fflo;&k8crzROXDR(FRjq3jC&oUvVNfU_^@!=V39|I*00X-Tl0(OkAy+K z!q$@(sp+0>_Duv6?0dKb_aoMH>Gpf6IK22$&`1Y**^!kSj{B@~LuGtnJ((vK~LwcRhLKZrF2&cyu1@R04 z>x=vV@FjrB9m*rvDT_K{5XP@oO-Ht&zrV|^!OD6)jgm`~p3W8F)@Yh~IXn&L`goR{ z&et^&+&|9GKAfB^1;q+mlrv`5kN1j`BW!6X7p^*gI^y}1e67D+aF3_p$hUMhAu8wN zmy#Adw&z2V%h=Sua$7h$Qn-hwSm69fcwmG39JX z`w-!tOE`{#^mokf&V80aSI76Ncy89p0;BG`7g|R3QjYVLx^Q!GFqE6=pWl9$sr|l; z>X@9BPka(Qh*?a|7-8yT)Ci8^_fjmDMoJU@i`?e~LxayKR0@#Su6|0Y+9ywcKa3{~)! z?cv~mlkN}xx9Q&1vw#{lF3UK=YPMET-I{ig`~^5Un|?wU*xK|#M=<6^8r8)pcFU~= zx~`L4<82w}DwH{}^E4H0W2_-`5`$9e>_b_ou<@-7Y@SKkN{m=f;mcv}!}&>00!~im zM~MBkB7K(?4UFoaZW;^wGL<&e9vKt>odR zjlJvKf!$CV?l6j8Ro32*sRuiRAdCNiglQ&y zByy4IQy#&h+|IUG<~@xo3~c?>RNw?MIdKz6W zdAiEImLI}&+h4Ay`Q_%dJ~h6d6a4?jjnC=g8@!3HWNmMgw>ffc?_@u~PUr5RsQD^Y z(|-fG z_wnc#Sy-`W++N506uW|~;@fXFN7R13Lplk#Hg%W+z79tr?KE9aYHg<)51_tM!8N>V zQx307#yU!r3*dET^siFMxouc--Dl0a4~^LUBi5h3!5hCRtHYOgPxyQ$|B<}|=*mnd z(k*n_qqtJ1ea+5_jkg4TLAmK{tmknB&$^!NO5R(--jX{NyMvOK!(xtewDG(CZP8O( z;;r7Y&K&Gz-eF(K%I@19uMH-jofpA4vYoYk*^skn(Nq9;W4zU$50ceIoZ;n& z@JLjcZ&4I}{0_>`5lb^Ej&>%6UbZlsq92>0$cqhTQ}m}cMajMCWHv=V(%qk4Pgis{ zN}hM4m|yAS@2rY+m{K0-S{1rEZ=|qoPhJhrW4G)=2X@bb`|i|tIXrj8umtCO|L`W3 zv$usm-}|QbnzJ(aGgL`^zw}~cW>3O z-@94zcfwnLt@5^@;UdvsYoqCdr`%OGP|s;FoU7c2^khTf{>or&AYWV?6nQh0Tj&Oh z6QiqtJ37G1T3UcGvI3Mt#{&Nnal-h}173Chd}fFjY-I2@cIXJI@x!W2I+m*`WHw{; zRrt~ShAa$=ufad%x8p5y`O1`O>2Bs)6EMb~5pW-zl8(1A5IZS2aWtM2Kd2A)wusRX z!~s<`P4;t3zMx?)bDBPw=BvrfCjK`ex$$2VbIlAB44Qs>jr>+SSMpjpSi#jO)9mF* z%6Bp43*tvWv1dX)756cFHi}jQaM$&=nP+10>R&oK zDZlq3(P<|pl*9q~>Nz|O`Reg=?i!5plRS3Y;56=rV*GmOeG48Fi_Vl!FV>#K4JPK! zTzzv;J+r#sL{L4)76O&Z2(JWJPqX06TUjbm^I9>CytDE3i&YNy{BFrN1}U9Ezp*=c zn{m9@6LB+4Byn|v$V!w{aveY8XAh+KE)EK-=M;)-Q*O94SASu9$#vrh`fU62-Ad`= zz}*OG6QDM^X*5m5s~%%MPARN}HY&|&1;+Fxn=nna!pzY8COn}g{069Z)oH87c(ss%`%}D&Nz**Ldm^}kh9`Qb<3BLTb7BO=WghMxK)UW#SSwp%x%K#>JTGBeAR-iaF|hH zzGj%i9A=3yUl(S@EEGCqMaXY}T;Wk1hpP&A2e@JC>pfz^d--YK1%@s5YpGs$tBP1o zr>{>XJ`J>kUAqiBXH4i}{*(B-!D#)xWX;}ACbLndm}8v)n=i-Jb6y|~)LF_{ z?RuZ)jikD%yT=jRO^MwZT0?EJev2=QLun$5o}eU{e7~EW@=*Uy<%Z9PVLv1Ml-Qc_sDm$^#eX* z>)QJG$ub4lGn&~;0e-9iGgAV$b;FLkuq>^0E9gE&j^fih6(r&zMW0Ii467h3&sC|p z(tSiQTMt@}w6_`PYqO}kj=nQr<2!^|NwKV?e-mUs-=Elce$YjSpE9Aqh zg95rY7mjs~bY*9E`D5Q%Lh){L9i4{W1BYFF(!uQ6!BBrzCccc0-BP~+-92J^LoI#% zz9RaTpwUD&-Jvu0>|3RAH5i^z7XE#RNAvv>K5RF}93~+4Z3Go&Q@%+cI}6(}@USo~ zkbN&suQ$dX~)c$qxw%@lwh= z$oIP%is?bocz;S$WL{tmUw6OqIAMCPW=Z$vvR$XUaY=2+%{A=nO`hs(UEkZ)J8pf~ z?md_=Gtd__U(HMa>R2U++#w-tK;Q9=$x-u2C`mp@kxeJFE`icvEpTV|9tW3f0Nf=hww)H7Y+MUT-{z)%QF6{Vj<;I{ze;m;<@)TVkqEo~6YAeyHG#-B> zS*~VgYN_{X=0;i3d0?5jM?L=9QUx>Y`4P^QddU@Wa?X5Q(qCPHl{3XvUI*9y_9(g1iCn8p15dT zONAY=)#PyUP9Ju$?UHl^I`bFAC>h->fr)E5>1(2)oXqihO&?{B>v|n}GPL8PQ)V59 zj+u2FI(epzx;Ih6Hr8|2dbFN+CwzFRwVegNJq_l-Hxp>PHd7Ag$=eX_uD}iS`kKUz z|7wfwyiHt?9Z^AU)$Dq`!@N6 zGw3VlHA~kf_wp|LVAdu_yqnVb6C_2M>eAm*@_+b|q#Qp_Qcjdh{g>qAWhN(zB02da z5jt`r>Le#3YpPcol9NcmNkejS23j|5((p7;z0$BjBMoh4x=_HQ-_QRWGIu*~Ap$$! zscQp3V6Qub0U+LxAq)WV#tdNq2&`Ne#Q+dkwhmzc2#j2ZFaQL#<`4#epnrD=1G)ru z2*pCx`GJ{9Oj#~Mw0W6qmOtw@)|bwLMhprz>u4*eml%qobzK&wqfR2D)xpLOS}=!wH!k5 z&czZ7yf^O)Q_?-F^pIDQLi00JP-!SP+Wa^@Sby_=ekZH#M<_fCz@Na??qeaI3&fMp z5^|7dmi6WR&zu8teleaUp^-?PuR(dAF{?qWuyu+l%}_2B;z^Xp2$OBj%kHn{NLDmb z+V;$Hk@>Ooh3awvIDJNV-h$qvm_zGMKie$6n^!AM^*x*7dq41&{3e@+{x9#~zh>~q zy%TfUyxRM`^U4{#)#F5NIuG|o@0z_b_!{rs`@3}rpBei*pWtBC-6VBKcguWgXP1^+ z53s89UDbt-}pZ2QawnV=j4W3w_=UwdDLX>wZEvH4EnwROlcJoz^_(c&u^@+eXMHB1pw#X<(fj;R#?MLbk7Ewr z-5*UZg*t_kjfg?7JABGcyBI_J97BV74E;BpjHltzj%nhq4qLByyjMu~{`uaxx8_9G z|A+?q5#6hU%`w0AO%zvg1h}_Cu@O6!7+EE9(XuLRfLC)>O3!Bhv&ldHuYAf?ZoSEyb4v?L>9Q*`YJ|nELoSP z*?DI*stve-?bEL&C`+3y*18~jfV@|V_lPL($0O#Ri@My>s%uZr$Fw%?PYSHcIN@G`nJto6*Q}^n5y2}dF(OoXR z>V5-N;T;qE^Rg`h-5Km{hL1t=Y9t`Jlfzf|TRftgw|GFJiv zcXC#Qk)J4-8gKj%!ukBceTHIl?Ws@0O~D=t>_T(+T~uoof?Kd!Vm6zGPsQI|RP9hx z+^u^%rDdhyv9z7J=uoW`K#(0Maj3_2P)$-P&5GPkb#~4FFA1&TVNP}TR=*{L4Fcl* z;3GD99@aGBODTR9K@vD)quTGNY^Fjh3Dc#FhQj!>e5Z5%=t*NbEoBvZlFwotGvd6> zRb>x7av^*4R=zAgV2_sj(iy(6@h(bflYPv0hcVN&+CeFD!il*`@;=BI;7(H>pV#&4 z_bJPKb-#lO>1M2bdPooG3v%&35;BZ>B@weiT;suyle>m^fl(a&L~c60F6SPy4@_RB z^Nqq@-iBJPLBF{nwA#>aoH&98Kj79gbgYQDM?~o15Z8B~?JaINTfmMLrhG9t=XjLz z%i`IX3O-!3kPn@s7Tc9*Z%U*|?M{gdMkgh~ z3!pLUFOgQIqU5I{oVyfMRojv18vhz;f|Tb!&&tUd)?=N6^gA)b#)X*}=BDeeP3}Xo zv~^<57l*)-4(*tiguE!}$e*Ng7TLM!jA3b!B{r%hs~$3%h5G98()l_bCr) zmg+?xzA`M)b;>}$6(qV2B~8`k!fMFH2R-UaaCK1i7NvKH`QDJXd(YmIgUI7`R`woJ zJ113L$;0FZR0H*IDg_ngR7CQS2o=qv$?pWJzCJ*Dub~ePN@cD|TFcjP}#&W2(#Ml-!-1JE}ixRJr)z zM_q}MEgK{Ez9~H9Jtn=M(~)oGGx_WVtSpswbj<$)R~JZv%%>g4j4oSG8W3Bv$d|TenuKy4i3nC7KYS0y(42q&)RoV zi(*BuoiGpePc1g}VDj-x2()dl?l|04_<2-K_uNy@>(gmm4H%O-s|(jIKkbd&?%L(c zd=o>C=2;)Na{Cx=&&RQpOMk)4!Pp^oWyL{ekQ^rKgJQ5vLO$+n#X8hOH(@FK?Gx_F zSysjN0eX3X+4@+Dt~cLrlpMPAYaQ+doM+WtC(SR*dO1tEbK03wcg-10Lo2B@FSi$b z3fZ{M+UKXcvVBJe2F662fULh@});7T$`Tn%BJ#WTI0$7yAWjIb^E zb_LJZ9zSf)os~uk7%{=DKWdi z$>mw7bw56j!nlPjCMY<895lAguR?CHrK)sMW2c{X^gH$9e9sFTf6J;yqZrbvB{{{j zvGJ2c41YbLg6=FwkQ~Jfbz^xw6P=jBd`-+QO=DtMGvwU(-?0*tNBCi-tJ^e#_;C_F zOlK!M9bmN|-$rTUK~aH&tsY&+H+mhncN`43+{x39g|7A$*gL??sg|4HfhM|__ILTZ zVIha3zlS4eyjZ=YPAx_)`F6RLYn-Bz*$qQM`}>NSb77Jn;Ar11j6<}4Xz*P0Bfiah z^z&nW+S~Zia7aPNHk3$wJ9e9m{@JIttiY{G zlIebWvL|T5qQ{3^GkjvhsH5%Nt}Ph znEG7NqdzBrZn!1d{rKnn+8f`a?gh+zV-}{>*yGpnu|}3&KxhLq7$Ooi3cCkF7=`@; zCl}B1+x#UzI@a${4|Y(^UjfdlAoJ=t*E#pv!Av5S1$5Bny`&9BLiDPQ?p_rzQ2fbruIUFLnCz=u~oc`L9O9|p`C3S;m| z1ULB&5pAz%Vf6#O^PW-i5I&plrQB-wHV3+kS3Ab_8;Hbi68m{Aef|8Fo=tCT>r8JP zPS$O-AA{@o2*D^n!AA;4vk5**@EyPsM}^f_;q+A)ea(M;mTnuR2UqN#(KdQbLEJ(i z5-WH7BodYQn&a4B$1%N*C-*x3Lk{-7C{7R`H_vtaJl7NFxsI0WbSHrKP>X(2hf~%o zcj&S!r?vUs_944sJXoPGj52u=SmK92sVCAjg^PV0_Z3e!eKv+>A0+f16+RX|Tx zPxM==tob{B+B7=N(Q6O!D)PBrZ8Uxwq_Lk6f9+wZ<{9F~r+{ltNfQ15-u9!wAv)JWeWmo>wfo_i@+?VS&=c@2hy~j`XI-O?z?Wy!+Y#8g5XLpQ>I2 z#AmB+GRL`AQK`>)ICL$KZ+9eh!knNm2%IR^13dc996=qJ33NEXTy&f`|7SQfIV&Gc z*4H{=kDMR&_-WPD7J>5u~-UpdUo-Y{f zE%72+R+v}kM32f^%3T@=Ax5eMDs74A8#}H$U3MJPQ6Z+ z7tgsy?ZxIL+EcHm%Bvu+5%UrWsn^rxb*B=<+8{wulzOd|SFBh==A{CqUZ==wg}fG- zm-w1`JxyM}R)WLkB{rvCr^@Sh@+zB`IGTE$Ca+Klj^bsumv3)Bz1`$W94J*eXSNs% zEx;fjVBNKh#X=W!kHpaQ(Sg*-J1o4|V&NwPyQ`4k;e{u|*7(On%5}kHNlzlOm-Z%& zt(J!Phs1Jug+>7V?$X17LY)oeh2|zCA~}e-)lUAt7ZVpdp5$=Wcx&clzb8wh5;NJG2VZ%KCGK(dsK28+|t z!~;x&n@Q! zN8jmdk2fB;c>Rq!nyE>vFKy}#V^N!zARe}Fp`6>wyL{Xb!MVcKAN5-j`9iY4Drwtp zJfOGzgL&iWgLxG_$k|(#viHI(yxqjRtS{_pKMdJWYc7@eSu`Z42Lo>(%DYVEb#vrq z#$dIGke2*x2yk8`2X zQ`8ClMN)e{!l1Q)PHyp;a2N&l95r-wVkzE$#!vnRr2hX*<;;BnWlcbe(6Hxzz-}tE z{--FN9&({mZQ?M#`rC05xyJR>RyxPqp-FA*#0AMQSnSZyLw*oHm4N9)+_@r_y~Uk? z>Fn=z49>;pDETmXree%9X)mPoJ%d+`{VY&cw<;4-XMbrw(;cUU*1cxqGKK{hsn$of zvDWP>ujh%)bVDUr{(QlY05|D>N^OQ07UTszK`xjdgfWL2t!RMGM^D55x7nNRGEMI9 zK@RaJ=_+(=y}Z6S6N_O3)VLm+8X!Xl0Nv z$Ip9YyRsS%@c$6^CU9~URo{Q-cK7X`o`uY0(lc4eB*27XwuFRzlYN&}*;F=JBrF&E z5|&JQ7?4Gf0D=NWMG2w;ihv953+}k#zG1|DLqTzS6vF@eJ9TgO?a3hVdH?U{%_q~h z>eQ*KQ`@PkQ>RX`@|%)-$(=y9$@Rh?wP<&GUKixH$qgOd%=?AQaqRz5IezfJEyv3@ zy&R`*R1JA|8qxLM$CUcXyW^iP;AIM60jGYbZIHhCXaikSQ0sa?^=&|>Gl<%w!(}^W z*17Y4JaA?ws=Y1SP8~S2m9ed!pvqBTeGM+r0MmcqE@MO>Hek!6g&T`C2@1>?A)9(0 zLBZ{QbM{ZQMN}t+Aeyk>OZoMq{Y7*q&!4@0G7YXdYku#A00+WRH-smOi_Rbu2?0Fl zq$a380iE0c#R0gJq7DAk+go+76YZ>dd;1zrEKV8J#?(7lYu>GK5a)?mr##8FFg}Gu zWi;MPOdcuGHa>O7KAu0Q;2t zZn{?;_9^!&q$PEl#-jdMQ9Bfsw{<_F82Bdw&lI>@V9KlnH;8iD zPi`*Ug>_n_pa<~Wr@`j|yuFz4^-ufQYiPH%{I%ikw>4Bg_iT{M-P78Z@oCnIh5FH| zY}+8wq(|W?>Mmt_##CFe|D^uqGsAIVHl>=m_#9GbFNO8vltO;ASe4=LtNe|EE!2 zrLh0SAV}k%rT9}uLK?P0VN-@f8g{nAHf>DsaCM{E-5SP5c976l(s3eL#5)-iPxF@@ zC))tmJ}dBc3T>(8dKif^D9=8q*R7;|))yDE?nckV*3f;b)N6JAM zpA4r%MM0O!Os*t$70rU&p?4-dy}kAgMT9*dza1Cj9JRN4vWr6*tpYoD6w-pSy$B z0$>~sK-JwT0Cl1@*>b+@o6~mD`CD&bH==lfn-*cOd?6ou|77YaPwf+6rLJr1<~r-Z zMta*UWyP=b^0lK=r++9iNnV4y`a+rbJjQZeyZJm&a~Rmr>+V(&%w2W&$}NkCE@ZAs z!W#Z0Tzm2Tpp6r8_G6i=l-c>w6Vs@ z<-%A2*o(RB*G}Ye-rYkzT1k0lvUw8iQ|z~NeTw~|hs|xm>|m2Y+m`55_va3IrLU8{ z)n1!h8(px7?m`Fbb@%xWs5Tj=O!rxRHSE#bWXCGV?7N#0`4cFOjL4(?$40)RrsKnl^<$#rBa|J4CNIMN52fz9ilCe8ZU;P#X^%-%xP&LhO*2!(pe zh3Ip{9>t6&qR|NhwbfVK7qcUE9Npzv#hxM$A%W+frIzZGK!bcw(cPu1v|P|>G81g1 z&S|-uQydqzJskH~A%c5R6(4|fZu<4P2XUi%pwnc@z(jCShVyv&~4rjGzZ(KCH zZFl=nZm-p9R~mx$fK}xd@ns&ce}ey&Kgs4tfp;3z|F8wkwc|XJuhxBZ4_e0T?B;ra zy^6nzN44~iz)fA{Y8kln@ovI@zxqM+2sN_vRe0mewXe;`ucbWg@oZWbb9n9g1SXx< zK1}Yf5+T~m!zI~{m;wZc*>jTZ-OL7|1UTvvc3Ue?FX}8sx0Ck739QlVDC2k>8^Tv> zrXPTp3{EOUW(S6&h4`_ZdNbssV6aHOBD(d_A4$jF-7VREAIP5sc{44lD?mbd0ze_g zGy+$A0_(RJO-wrO{WOv9xSo~-y&TP;Jb|?=$ZA^D9vXya^Np^gmLO?>&n~A(W1+4EdMPVE-sQ8aP94?nylpD&E^@Epo#bhqK6dx*M$M$OOLlkNkgTSOV`>wxV_9aDyG z(X}V(+3_}J_wHbjO%a78XKY=$`9r=KyO3A>5ps1Ou}s8+q1*B(G~Zh+)+);q)|Fi2 zYvgI`DsM z+9lG^BaTQyn? z)CjYhFGVs)l*As{JmkRA-9Q=<8z2U#>KaMnaNmYtct&+rII?qhIJ$j;KH5>cQKWs3 zq=yG;U&oy)2c-E(L1-xJ^11_RTbWz0@KPkk9 zzIlYMG zA)Jimzo~F%(PnlIsdMiSkWR}w+w>hrW_ws-bhcn>m5YbM3%zv^*I zrbzD%vvHvxcE6Z0A$ljs=Y!;vA0eyOnjXq@fRWH)m1%e=-kRnb%wjqKXpUG{(G}Oe zp7_jpy$ z52^gk@mi>zSxCpLahF5rk|;NOhGX5-ESS1y$-Ba%HXn!9!D_e;5&V}a_eP6bKZbYC z%|6VJVa;dflJAEt-)qpSPmT$mCtvNfvUk~%S_ti4a(jb-QcA${YgjY+G64sqjV z^|SSLeg@x}CX<&CePG)1`|hD6hwr%bX%L;OZ0zeux6glpdn zW^_F@I`Q(>?h&hdjL|ZKlM2z{)3A(`bJTwQ=%S>{tzeLJ)V|AzNr!fMUA(VtI1!hv zC+&ENx&TYzVYiweSQ0xDHB0CEMJ2PeK0H&ScCG0?aQp2zDG_!Tu0LzpZy!t7+}Gqf z-e^-3^G29E9^Uw|seR-N+a=AG9VP9x9{~2u(eqjKJ?T5WmGlC)Y<00FvL(0~VdR{% zX&Dob42dQS!#8T}SV+vn-jaA&NEPb0;$iU~{|eU6>o{mthV@Yv^n>O4m_EtP@FlpB zCfT+o({FWd+~zKavn34t3fSVvX}$2X_}e7K!*}1;r!V?0ANMGg=Qw-CDk0o9-w)?4 zMms^~$kzCi^o>!XD3;U)CcDA{mVrM;T-9&92Y|}@-oD<%mDv?(_?yf_>%x8cYooqj z%wGk!{%O2);s5y5HfUVm_H|9a`@dM%ANO@lM+ocOqgGvCpiffQD{((>UEc|($kz3? z)OAva^RiWzkN!dOje4t6ai0X>E6%&7RGjB6Bf0Md{yz4@`Tg=#nW{46ufX3hMqB!a z`i5%9Y>&?SbqCV>{AJA>sA2|~%>#Q-$N zw&=b>Y8^Y>)`-*BjI%QfeI5yf%{(Hc;R`oTb-{m1b$Gwp<~xwvjS#xZ$IYZZvUMiu zyS2XlLB7P!=ZGVY@x zWu#D=E4QpdYs3cwGi^I=?1AmLu?M2MZ$4>|ELVFA@dFGzTgGSBLZ(UE;hW=U zG)Kv-s9R%oa_i%ZtZ=x9U^2>VEL|t`y0mS66*P?4Q`2iXF|;a+mTh*2WN}}~_jtcH z8G-IkLw9@u)0B>tUcnp{R_iD7@fFJn&`M2V+iLz{Sv4%}Kpl-l%YZ~zYoX%zAuN1y zpHUr1?qSb*R{SAt`|!3UJEZL>+xfuA%v$%3nC;Tq-rrCOd7t@D&}-6@=tKk_$vbmj z%*vU=Y4u&?Y*zeZZ3{=i0z&=bZ103amy)(I0LgBqpMMAv7Ms&A^`ml&8{~FlR5y zzq4g+*0`0Qo!1KPE53Sdu2@0+K1^AX4)3l|PvhcRBE1Wv?Wu)!yOmVwK!rt8%F(uR zVAmpfZ0g8jBFOVHzKk^Q$mspYHZr+aEB`ga4t&pZD`+W%}seV(-c)j+sCLnTu5gvy;n<&2@)PpM>o zqIOsiJxL_i_P?ULM$74}bZ!qTL`&p7rUgY>X@Z^@M86}VZA%CJB{d0#>Agv0-6b3q zCT*_0jra$0O5|6HR|!`lj0i>%k)J~S4bvHIgA0Xh)bl0xJIE0we-d?th?Q*C%j#Bb zp4^W6gK(7xOM6?p7yR1YWZDJy1i@&Ph7rfBCLggzLYYtm_jzfvEPi_|6ElO#Txn3LXbC)>w11GSm;^_-0poenrUgC7cL9g+gR zR^3f~P4$Fqw7VaY-Jg|uA?!OD&%g$*;NjOLi9N|*ywfvnjDJ`Q%yp-c=;$n7E3>va z0iTDl_>o-cNzz6Z>G^Jc<@tjB8ZDDbmU60!&Yl5v}sxT)5d`eBeel{Wjl#!admjcx@BFfOF`CC|m_OpOUt;y||=cY9!GPgl~t zVdgFXGboKP!>16QHe~Md5zZrmD+3_kaZZ};`hVRV0MNSd0CND~(Afjb0iZ1fn1dN# z^!cP;MbcUWG$AWCf{bqjd9@(aff=XJ6`q-@6xF(WK{X*B+$fmf$$qL%GUcHM)2egx zRqleDs}GN@>4T+?1@e*q5)Uv308Ym}z#IV38Swyf0N{+=1Iz&c z^$`y+2Y{I=z#IV3B=H#LXmkSIS2~})iT=gAz`zF=PU4(6TU~gxZ}G$m92>&Rwes3k z!IKJ!b~DTz5hu=R#e7W@Qz0oP8>WeKTQRR_Vk*RA_D!7EigjfZOCcVseH~2G0ph}@q+)iv?ST1a8dB0Ey+wAW|31a6uMg(#HjP%#z!~Gwkfr( zaBsqcSh>3}zP}y4j#9aovu5S+F z3%rx|uH1_5)Nb3_+-38;TkC})_4!5WGyXHI5~G3#K?&z#-%-^cj2ol%zs8M4gTe7b z@M8*EpCI~e7TT9Wzb9x=(@nLlsAUzpY~f zFJ8N%I;{i2GNo!p#C62VBCT=Cy16$0nH5}?3=Y<%?qM!r-0@M(RQsMceHeO znH#tF3#D<6Y5k;Wj&#yY?Xwo#p2TMfu{R$TloMQ!ZVmv0DZm^DCo6^8`4ro6CBhpGpwkQU?{*HOh2ly*AsT=4#DS6Z-Y^< z=e6lW@jZr75Z~7qu+Q6YWt>q?l@@riqXVL3fq=( z)-Q=ATNdglaEx!;0I+KYuzDGQ@mCA_ViCv#Iv!L5bdEbrWFF2>9jS%a!8_1*QMR?p zBe}cbPl10tHxb?>(DUK!Xu}FBCzlJ2ibCD;F8VaTkR~*17w}A-FmKAA9yxD1pFT#x z$3RKm(iyj8#zmQ1;}@`<>egIq@1blfs1}KD1Pdj)8gxI@y%`V&1>;hy^l(VbNeo84gm04 z4=@LS15~WRhu~JVl zx&tiMQ-+4(RSO=6@?}^h7wPmVSCdD;EOecF34fUC0bB-TS( z5SB-Z`Q9VTLnRANui$;LkwnQ}b}<9NuVZDQ$I1G}_*pR4J=~9MXg`YN)+0wavO1KH z?|}Ez1Y{kIXrI)>`g?(8pxnt3ptj1F#Zxy8?TVaGr{fiX||4G<<3*~`dyk4Kc5uxI4_U@O;{YKozCkna4p%p!Y z?)bM*HaKyNf?rFT^_|Fe@KIC&e8WGAkba(Zf#^7Jk`r03_7?`-H7RKobZ)Q3gKpBq z@k;4+cw}JxCNi|H=c~$y(YSyb-!A3=K>i+J4gkld0CS{8#BhpO{nW>0$Wsd!@uU4I zm)bUIgA)j8w5mK4SPYo9RSh%Ks`86eOPepH_Y|fMce`p+?LJAKjG>l1t=-Rze{b#X zQ;Du6LVZ{A4<}Zu$#*j+oUl;mmL|{%Iroq=+Yw#_fR1ooTHAGzMn}-6>ec}EZc%%3 zN~JjfoRR{}k=7&Mmp12&eV||e=sCLqt=-NLDmE`NqTKZ@2G_(S)S0LOhRu|6hbD_- zz#p7ch~B)iHQCAf?$7+h*J~2@Ci^&PKeMN89W4>9BecoK9gCeZcJgj{?{3Lr#SBU@LJPx1lY4FS z7$7|V1w!h$73HfvDGkUcS_s;7hVqkInCy4*L#Bi7N>vNHttF4!YFDzBA1IgJ}v z$Y?v7gwSnhp@E_Y@SE2SKKF^pD&!u89#KE?WkKD>8vDPIj&f%O%Zz6#gZ!nFiOk{!6OiDI5yB#TY@a#6nMM0uuN0!t3crr6G8g6K;mfpB7MmUm{Q4*R8{Xy!y;0naXPa&{O!l6n%o z!>t%V9@(S=2vEKZhMDqAUdY?G6(d2gRk!HT8Ik_YU4vG*3_rbw?y(_!x7zh2N}@Hl z2i@HS^(UZvnxHue=-vh>hK*MyRVPEqvtV%1??WA*-}uk({O6~9RK-^cmzt}a1He@& zz#IUsP66fs@Y)n$4glAr0CNDiHU*di!0S?gIRIRj0?YwmO$smvfa_C$IRM;{0?d(i zG4a>WQI{MfHP1R;4=TOwCVh(aoAsf$y@4-t)9>ifoW^0*Zym0fd9D)OM4zs|QFwyi z(F(sMh2PlM`u5QDbl-l zLyXQwSF*=J}3( zg?04%)L+jb8Fh3IdS3$+pG&}`GA0whP;Jh}Zx-10AbZf}-w{8)pP14sxl)WaU%yJ9 zas7JJ40f370Za=ID4X-hpz3a+%8j=db4u&G>ObR3-zp{V)>0oRKg_Nj!(dL8CNX;Z zF+@nK(2~EK@M(3!I) z1*CJO5Q)aqIm~fVVZxjP-}tMVFMGn|MoyUA$O-L6&S0Be!>ONVsD1T_Z+8)sZH1@; zamYAP4t$<_N?HebeT_YGwflV;^_JXQKAOrm^Es`j^)FM#33g3>A$T>84dDmW2oa4i zIH?ea;+srrmdHLnAF#U(fL#nxHwyrhvBvopr2Bof`3J4d3-xP=&I$d7@Iy-S)z+?W zYPPG^T|bzM$c))Y!M7Rb&`ZLW5Gh*3dNn*DF3v&wivNF0DL9|m;=DWDZm^6KAQr} z!Sc9^x(ZwezwR!rh%0>>Lo-!_e7O~B-w#WtazV=OoS;+Lv#u^CR5>AkJ_G>X}1Ppls@bxNn++oCs{2N3ZuEw5=8&4X&sAF4ec zvi2<2+3?Vw5`2GH4XVw8`?n&nk3%`IVtNA_|3Pjcaet(?wE*-&m;lh?PnOD<5R*~? zw*iH_&9u0~T^=bDcTX*|c?_AS2sS6W*CgN_+UOZkBCDGjB@A&V9qjwEa4etuvC8rh zD@(qPNQc>ETp!+U1Tpn6A>2>Ti{Gv^5!npaAEEZsP|E&Ml|9x#c#A^6oC%G;t0nE1 z1PR9VA+ZOP*zF`1^$Go}ErIV#bBg*E_!R;*dnm^Ul5Hvxu;Ec|(FJ5KG^G{2Lue|j zzD-vAHNvdy-mdp!lszL+&AT0`KsHB0vlkjdIE_v(l5WLOjDkvGJYNmfD?>qsYw8I1 zK{hO57lPuIs)@G}SE5y$d4?5(sY-^&tI?Qz^oh{gnHiS1#m-`rmDurBqFgrZGbI=V z%QCs&Rg9J?78@oKSSqLZ%OGv&<7e)+ZX7?_t|fm<$@15_?kBDFkdPwTaItogsFJg* zP@8OTxOHuVwc)&y%Tw&M&QuSSFzhP2djYc_iH4dq8wrnODm;@>rXn@Q-;<4fZ6-<< z&+SCo?!BPOhVJJW-KjiVT|e4hIbRiIrc~DseIr3IWWyq`w=a<>O~n`mgIg`FBd3K= z(sQTsNh>Ehj&tE*sJQ$As_NhN-Hp9im#yd5tDTeG=!_vpwI{3duR?plD^ zzlVhaHsFcw6kBk!KYcl0|A=!s?>z$Z^b?!iBGJX;^XuP*M&L|KpQJGHxH`+*H1mAV z7h+uBh<(1_t{+Cu{yy2|w8_uJJG}z837D{lnQl>bAp5-gC~2}Lm(74<^L=ZOaB{vp zu;i@~w=gU2?V4YBDBkAilKmbZv9`x5dSL2>=%tZjFfJm??nv^EC-^}Y6pmoWYjaS! z$&~h)Epjip(6&j#D zmIx7jtFmn(8T}r#rjk)*lD8MIE8+MLInr@AL3d$!r5M^v)kpRX6?-|uq4Zz(`Mp&c zee1tV+mce19j_{r*!fuR=uaJUQpbYSF*kM0OC443SR4#gyo*8ID4dl&)Ej~J&yUC} z_sE?;zo8@Xa`JR{q;sL^NSrtYgpR~3rhw3qIB5z99f^~tfY6aRr4{5ABJ}L@nFJ)Z zj-gmJ?nk*~p8G-VuV|~F_F%eNiO0c5ze(MzeRy^$+RDaPIl2r$IXaKu#mUWzU$oq; zpb8Sc*PmOI*eW?OXkH!->@Kr=6$uR8g4tv>ee@bS2CufjXD${z0WX2zgp%bgPy?Bx=e?71olq^|@khZKE9jPRmiKZTX_4stPL~XZ9S~+xN&r06)sY z%Ae##h~_GfUefA?V`V~ZzVLHxOI@Ja?P=+AE2$x0;zD#T?#08MNm#+Hz^?`n&zT3E zzoEWa&g_*E=k8PWN(EmrwZ`}I1&??3yacZ}afjH9lv>}8V?+2OF(r&CAYf2PZ3m^e zCu57%@cUYmv^3{8@^0MW0rPb>ss^vaWij)wB&t%ONvv=-56s9_x={d zRr%VUX`QeO_#;w;eDoy0(FNdbRDUxUH0tlcmUOJFoUP@4t1)d|Q}2bZp_%nwcrvQuJPeR$6D!h{Z@|VWjMN!|*KbX59)`SY^hj z5{BUibo?ohBjmTN#WgZ$*&Few4B|H%Nc?xAE$=P@F&}@2$^=z?+q!;?&{Bpt4S<*w zwY?YrH7rbqKPo?>4_n&Y)DQzT z=87P|XW;oq+8Kiq0rcNuu15M#sO*{LUw^cY_$U>uwR22+>}zx|y#B2I<=cmSS>Q~( znFZBI)iXZMaZr#tlTMplyQ!{K>@n=2H;lWBTOX7U)p9 zkFn0IuU8h{{|WrE8}bA8eC}$hQg$z2tIqcimE)iM)PItR|6%amr0|jiJ}$uJ0C-6CZMCO%i~4?wGNJ?q@@?`W|* zL(TpMWtyL&5bbXFP{aMcaBs<=8Q|?rjMd);<8k*S(rkBI6E6#1*Tf$G9@q;cm3C{J z$QkH64BA|eySD&9ls5nPzU{G^7^uyEnYOt(0Q@Qim;=DCQ-C=D{3ZpM1Hf-nfH?sC zE(Mqa!0%IlIRN}21(*ZC6DhzPKk}pf2y4xoq1x{?%R%&3Jj3)W0fXqx{9eaQ7o^8n zUiL|PPo?RZ1HhkCfH?sCB?Xv+G4V$LeoQd_3wHMVq{jcxZTtuIchYy_cakGo4RV|G zA$oTPpg|JdlL45l<2?r05dK14tU2VBo%pu$I-c)S%IlX&UZ{*9G}3Rav3l}(Ga{5; zHO)sj{z_h&&#$J*=SM-)iecUaF@C)x8RvBA29Z)TSu3*r+@D3;uM^tdO^*4Ad-%1L z+}$`fguhp&ekG@n=4vYbY*PH+2;)7Bt>|Gvd^xB9mH!~}&_7SgLdkr5G5dWnJvoCD z_qJyGhqR=FlM3;yG+VDI?&SU=+Mi5le~-|t4HxG2Of%_A>r$bub@^19Lndu8DqDMh zP*t?U#GhzL7}a~lo0fTBbe}xaGAhbj)cfrAZ_b(>Jzw&b_=IwMA5q1ZJm`;2P=5mY zQv(#=5ALM$pSxxo6S0_#(%P3KOfr^u`c0adc;=X>(t9SKR6m?Mfhe>vROuDZQ~eCh zwF*iOramr6r7DK;w9qxtm;-DJTN{j^xv;#@KQt#{^q)W=8%*W#p#PV*{{Bn!^L1@N z_5Nx(5XBc9mP`^?t>MC~Ndm*DNjTIs@OPE_e;fIKhCUj&pHf9q(El0V76pCO@fGGn zOdWq{UHl6mJR^BaI(tNqd%&#?z|R4wzWbd(PYN&xWSee2Upw}h8~;)f=hjxi zJBQ}F&#`u3!moV?ulv1%@GRaZ_0S77w`pH>A>+hLstci;YxiFi3=DOcUx?<1CZvZ4n?6~eE-h}ITu4ncf*(`nFZZ0M%G zH9LFu@?IF*hVW@Ij`xeb#2*mjP;u3))&|Yc|SyP{U95Wuv*-d;7d#O4X=n zB-vh?rEHEp0Ao+xxDx-%*U6;nWL}+@4GQgrk*?CqDRW$CN&|IH>lz4yB*o70cJ3qx-;IxUX;99eKq?%zu?%aeDPAagFP)rs;x6 zoWhSP@kz;9In`_EuU&uE8rbHH`o}0xwKBX|${b#&pWZ59SbB3lyz^q68CTsq2@Ly= z<1QgrC%(h%WGL64B_f3E^(7XN$1~Pmf>o;R!yRGiR@1dF^&N)=AtL`NbG%MKC3_TMZpOfjzI(9#*#<%**uf;z zu#W2tc!cV7^2Q?4rvWVPorQ|Qan++r@d4V~9h2NEFm3x8oJ>oBUkuw{4mm5OrC@J> zA&=sm;_>D1lzatocfo4vfYE=J!sVff8iw-KQh0pd%T}C)=@{}GTG#TfRPRuMa!@~& zq2xiSDxw2JRJ(6Ud3%+IY;sg9v>$m`Q$2C$#ueD6GBARv+oc zn$#PqqESpp4tHAd1FPR%aY1Dp>putInbhcr;>hpM4QDbWKST(vwFj8P`+3+t55Q3$F`(q2`3#zLbLj^Aq zIyk7VSQZAe&s#cUDDOemXZM6=7Af6adfO9`h0Nr9LInGlue})+E?H;z-WTD=tFi#o zC{+K42iU*(i=utteJjmPv|4RZ7rof*~;Q1-=KPK=(3w%;-I&@ebzK)Eq5`USpI!<lm&xs#H*^6QN3Be%`R9g4NR_fKTu6PQTB22p`jqDM#>8($|7W(d9uviImx zuPW5p9B7$1Q}kSjO%8d-4LB~CG1p3wyM>IAqG%OttbAHFQT^@Upv`N{Fsv%(M^B zFGW}5=nTgdT_uU_E>hQkk~BSJ?9#05-&fVAzEe{ErmLF0Z^hxgn?B; zCUr#O`i<@(V`hd8VYg`Fw7nv}&QKg_E1QsH?pQe-SL9*N{v<=$=vqaxPHEcrx;*}x z%GMWsU7vpcnPZvbM`==tAEhs>YHlaa69tIZ^o{OQ zW+=O+{`=+k^&*)_KwnRLmEpRNfS_h8xWD46v#n=3$tBj4bA5HQo}9}^?^Ec@2<72b z_hCHJlML&x%tBaPhV@enl8=;g{bV1!TFH)|#=^ROIxcRp5~!XU;WJ@}IRKoW0?dJ` zk7ByN3teZ?yHN)CANOs8zT@{Rs6_lxHMt)C=JGeZz^<}XhN}zp%0OkfYoVSSs0@dE z7qVcqvl*oW2juLej?luF*odU8Qfdw|g|HyK}&_x--XB!T7lVm~{j9 z4KP-pjn68ML=^&RU-V6%R9~GpeA8@FB6y?4eUq*Q-+xH>I$x6TWwSvDh_0$!p=DUp6wQCyt3k!`>gBDz6j;+u5EK5Q|5b#i$Mj)flOuc+p3q1aqi3F{7g7$onkNX2?@YX z-7M#BfXR(?;O$Px|dM3KV{8zs)ho zrs=mc1olaZNA5^^*zQ3dPKOvAm|0&y_+Yg@z=tOjP!lswSYL=gZ)& zA+{k(u5!z7L~o9xLA3J9jI|MkZA|l+fj1g!OPVQdT<7o0*17JRXX-pH=hU{mKO1My zY#i10Ud`+n+K1xvd`DrjYm^k~#H7Hd3N-N(x<&n!IJy0Ys-K=&iPx(eKR{j{rYR-n zaIoSY6pTLR-!cuwf07Mug?HksLHW+J*~oVC`cGT*I1%1#&%}eX?3dz1E9e+KGgga@ zI!+-g1pL6?Zx=0LwPYN2+z7k=EXTQIB|!%>-XCUYlwzX9=E-yE1KM*1mf~s^!ZCMN zuF!U8p@&*xCClvu$w4dD2z^<)431jyvg>#>Dw z-r*Y7hckHEczDZF*#{dDa7roC*4#($5Uk;}0$*L*jw93oEd5Jf8GD2F`Oy^1c? zZd(Gb1yiHp;Jk=|Eo}$G=dgwaDdeC2L(> zK4Z=yEAIW|6g^BDvx>um7^ddv(G*L}P-JZ@$E)>Q5Q<%Io@{=WBo~7;Kz|zj7FME* zBj}KLy;8jgZgp}5buz-U3k^^7FzD;gnpFx%2NLj6!s*F)P*vfKv$CEua@D_#Lh8kt z4qlg`ZaDiQ3EY&sGWrMq(hRn(6RniTHq1?;ai&vwj5mqi;8zd_(bik=$N2M;mD-*^ z=?E?3@6-Hs@TY%*FQi@O@J0N~-q8OOobyb(8$S#9_6b}ch5dm)^d0Qnb3T1sF#R0} z?!o+}>FfT+&w#UNW!_bPL&phnF*KU^p2CN;>6^sYm3ZAW8aXNmC%(-7!;TEUgkwW^ zi}osPW!U^Hgw|BE#2m*~Cb-F)MZHz195{ih5cdIbs=PfGqI)Vy4yB2&v_`v4(f(@D z6haO&)L;Il9KPC$`X-_N-B1|3eh}u6FvxCNcl-}9BnRg(Mkc{Hf-%hyBx2y7;%@5z}Qdk1F~q5?R)fGXdDuPwVQY;7wRftbBX@}zqv|3Cme2a~;^EjD2TQXDpQZ;%4`WbUcCJ1FR znQW9|TP88huZRE`)9v)>yju)IMiWYsgmy3JfIW+c=c6`K9XYNL?QeX}fAcblTNxY; z7V8zdgB7yKfAdj0Aw06-nL8sHRlMjMtT5XP(Sbtj^xu5c0b)m)5t-MBM4nJ_A7aQ& ze64j@uGO$K8Ox+XOv2({TPj3{DZ!2)-&S%MT$DgBlW!Qo1JP%N=kvQ2zooW9^b(>( z--I5$exzA5&%0rWjif-QwIF*5Z(lk>io~-zsFjttcQzAGYTRR_kB1Scz0r{*gOOagheRC2?&kv`VD;G33t)J?+To8HGci}>cZ6TbN(s&53d)TrSt zCPOFQg&FOwaMM0ED;eL|GUM^VeLjZ07+_2xoo>}4WhCxflSUW~@*91Z+DIs1mQ`J} z4c+8fYjOb)RiQqtE{mPpHBqNY_qd^JQ?gZvQPG(x#>z!tH#dcn3Z->?5p~e1es`UY zMMla6`%0YPA>O~7TsPxbSvb+Xu$aw)jK}RH21XPUD%l~)Kv-JKQDB64r^4%l`nbJ` zr-U2lCO_^|JLq*F=0&xGKmOPYyoygMS=p`i33Y}G*Dy>@Xp?m$sz->YRBUBeV%hus zaOkEWM#fXABW~ek#_b5NBQL4=wHxcMemp+UDtYo$c6UCA=Kv%>#o+}}{nG!mpC$d= zOzR&?goSR1J}AQzMNRPdi@-8K6?b4RX!E58g$_X<6v)l1bC zGExtu8@a{&Q75_K1M{`#V2(CVREGD=*Y-Oo_0`VA+1}T|gkF1p13ElEU;B5%R~tCk zsOzP}jxKiHd^q&n+-*q# z-B$dJw1ut@=;GmW*zc-xxqg0Cf8qy=_*#0$GH{U4arzV1&V?5DI#RaM*wcqYwF#aF z+H)j6;M_1+ z$o%=m%w3_kKe@KkM2toVqsF?6>!MMdi(v`In;)kwdT9gOp;ZFk%p6`+cK#9})_K}X zBON7#Ewkt%rihsCA8LX0U{MvLgUj)|z^mWVpE;5Sr}49zg5nTXC- z>8Q;+B017JP8#;zML5=%^oCiG+X4D$#qRap?qzi3O8hB07g6Aq|~$7DxJd@z$(SZ5E^t+tqJZ zO4+xS3p{{e4=ej1gsq0c_Sanwjm@i10{g2^4WVQGZA$H`U|e5~QtygiL&Oc?mHfs} zX}BHb;ToCSLYaF^Vs2>GoNx%=+2V;Np5eI=hJ5XKN*+a21bhSScMLOd5K!gl!7ZaL z>Tf5zU|#(W(%bb%HydfWvxM%WiG2gJdR+d)BYbI*vyhf(o0n}&^eZi_~= zwEdKJRz@k@EgM+wCuCu=^)05sGg{ojDcGVpZ~N}4>3aM{)8Lm(m$#oX#@lVCwm_MU zg)7I1&*~HRQndQNapnUrqjnNd(@D1nJKmXE#=V2whf~jeYu*imy)DL58gNJ=2+%ALfaedQgUYyzv#A3t0sHINegdDXoG*0bMupR#QvDW zSH3QdW>-`9hdKoD?J7mS-pNPP{WhYFHWbfMn`5xZ`jZl%KMkizq`7HbwI6uAx7lsg z&;H$aJ~s+(djSir1J8~XO9TI2Ug+&uzo6v1<2Wz-73{ohBQ>jp|Ao2b$^A&>vHSFS z?5sS<;J;3Lcw4{5qR6|b$jU>q9`-1#A(I0RUlM=HVXakgyQUS;x^zouZp$s$+NXPJ zS_^7q>>8%gRJY1&l<($hV_r|O_wJLtl5Ad0yIVy~$)=IdoGpAlk{9XBb3xKhe(d;6 z^;_Jm;A-kbrGeir$B0JXQNxw4B8osMS2zG9h)Uagz^CI+V+(Hgly2I4YhluttlREE zK>Tv84O7UA8jyKQE4eG7i9I44z>`3#6z$XA6~?c&m>?xN~^h7+%@<_>GT zE8mqnIeAw;V7$KiVqc&0mbT>%V!gny$n8eP?ye zr{N~EFsd>!qm?u4CO)t`#1Bp?#C@14!+nGwsclUJt;oAK*@!~iM}_<`A!As0a293l zE?dK`5r@D ztLb6=7TtweZPi&79ye|4t|X6}R#@9qc;Q{fh_2|mW(Q~c4teFG(Mnv-I)a-0I!yv#B%$3?yt z{1R|(Ddl#{z$G(i&TB~@ww z5lPcuAOPJ)U#uSHl7kdUjop*qFq_jT6vskq(r}y?s0;3=On)xV0Ictf?q*NEWPzor zfx8gc);ay7A-sP}g$78oPi>5?Fjq^)mg-x&e&R93(L(icUjMX#&xU?)@#;2U0DWn#*3~f`Pv@INBS(J*5|pzZPJ;5B?54Rd6)v zKGxJ{-aU8nTVa6w(>lGE?;vGhi*pQk=`8UgGPHW$if}|GwkEJPbH}D+vN34PDhYm& z+YJ2uX+IU~xJH7$Z55_AQ`qs-gk772ozM)!8j|lR?qw;EbJi60@@ZhNm0H8=s{zB zQcDoAI)r3rrqp1bK7JW6Kj(4BytH99RTT7;`s%kSrIIJC{-(rpw~}3pr@O>9nfd5M zrO44`nqoP5M>{jQl-DoJ9vRy7vVdrhHP!LEt^eAbes%7+pZepoAa`PJ%^y7PRIUH` zZ{Dr-$Z^yyrz-H^KCirjx{W!I`8G=0TgteLU4`DRVwYDVbLXe@PS5xfzSoo6cAqr= zw%ooi_U>b3kGkm3reB?=V{=0>w-0n7RP0X4;m|&r$D5?&-NBT;=*~&wmipoy)d<-M zgbGRLkFgznz9+J_1ubvC?%XssYu%!~usl3%ee_@fU#qc9y=1DT=*~{lDSIlOcPdEk zg!JT=@7Ju8{Tpw_7EJy(0u7D*jg_b-UB~PmQs4!d?L-UY`r5sg1Bu>r%y|B z$kx!XL^RlXj3l)z;~`#+Fnc8ZQc`N}|LKah6LOPj2I`6exyu?5rHd4)F?aeHm#5(f zj`CWJ9!#vfyCMZQL9c0m)DMfYzM4bzjd9pBL!;kEyb`R=Hm$UJhuZu)z}?BFr)0ln z`;Ax95REyGK5JuH@!eHvCJf?z0MM}7VSPv1r%h@s+JQN)x*Qs86hs$c>7nxm&U^_7YaE*9$KZrrEYR zspP7=DGg~>^34rUn#~&oF`66Myb(~7@>}Ffv2Sg}w{@BHO}v~eDavhWc(O?$T>S!_ zn-;vh?>ujsf{kt4%W2D`%4|ckHbs%4*G8awa|3LBWoOcVK3T(NdG`*m6H!CKL=A4uWca`p#im5tYI5kZ#Ub}rd+<6<}zI`ehEiSR1Tc?0z+h}!t0&$;VJ(!=! zx5^0ikc{9+SkB<2Lfogc3YCnY;(0~LEjB+-Z5B}6J4x6Yg(XejQ9~GuO~gMoCX04n z%ifrL3a$CPsF{yKGWisW&79m_X^BWrcTrD-?j1-kxkJ^w`E?W|!_Y6?w!OCHVd-;2 ze!p4@`oc5ayOh#}tY-b*)8vDC2E#5Au-s|NcbfZ`k=){={Q6?v(sJ%p^5)k6RJoJq zyPfIUhU;WaDM?RW%RK)=k9&7oma-QwJ?eb=@jzBr$NHf|n-}eE7pzZCU+*2stkzQNfqO5B`Wa^Zd_TiH&*GYLr**w-&t_fk zbFg<)Amd;k&lE^=jbyA;L^Ag_#OOUU3homdl?PT3H_DSY8P)EJo5+GYdUECFioD=H zNdmN5Q}k6FtxC|n8G`PyN@?J)5_$ho6Ix?WY{{o<^y+}8U3)s|AMTOKtC9?f%nICn zN@bfeGCHQOE)9*OzBbEkmDu19a&5WocK3OvBCJo7rq;D9C^yTk`;~>JH^tYwKzkGI zM_I`}Kv>0gFrj~NY^3%*M(~{E062eLjVw9$oqe5p-nzm5zU$}>tkinwNvmu zoAwrsgY6?lG*(7=gtaov5ig=F9GVG`eLslEdz2>G&oRuKR3?Rk9^;xzTAT6 zZ7@!QS8!iyAhLoJF?sh@K-`Y>zN&R8-><&bz-71z*L_8(spsqRK)3k1=7|HSk3{;X zD#_cDppcyRX?cJFhp{wCs_7y?K7QWD)kg7`OhtxEt`Zqb74W#0&Z-m1V-Fe~E$23Q$``@az0jMW<6zNI8#^3{mNXj*HJ;!|oHAdI7NxtG4|_58Y^c8U z1gn3>(W}qipBniYCesYtktK7?pO#m9uoOe8bw%kxtLx`{(K@rCQJ(d}^ZZu1W5?6E zXY<^vuJrC&hTx=eI8xcaLfV&6}5 z)TsP{JbpE#xsQXbMjiRH@1px*ir=UqKUYa6t~N;cl%!IMB2M+AG)me4={aj!|2}Q^ z;}kDV8e$&i;YUuHeO!sAbSq372^*Sci~%DoeLr|a9i`;8*m4!J4LZLHrnTIBk*P?+0l z$oJ>z)BNrKQJT>EJJHMciRAl-=taaq3(O7hUPgBbfnbNrR5>F%i zcLo{!m;5(KY1*W=(j5ogPvb>-`eYB+_pQMTjYMYHb;6GLBqoT?_+)-(6{@p}J6%p; zISBgphWVEwfIZ>37u!R{^K<~MQ%#H%vlwsq%BU;6l4Zq6du=z?1^)6%ciCX0o!y)& zVT3cy5PCz zo~zDk8$Of9(TzmG^|!Xnyj22wf;B>GgE%d~c4j7X2~=i)bvlF-de zaaj>aqiV__UOJZh7y3ETi0E!5!eBkEFu1dkGAm8q*5JO}$En<}PRd_4Q-;Pu&DHIs{BXr5LXU#2`*uqh9^ zx@9#7^cg1nn~rMrJ{RQXB2794Zk|BRxnVwDzb$C2}`d|m>g&%cVaTays&v;1Kyx!Q3FK1XkOBK{b=pK zpI;xc=myhREnAgj-fYVaIN$af4=jUb4K8S2Cb%U#&gXD@d1R zBb;~zKQeT&zOoHRKYoK`D>AeU$h4_i?X4lAX(Mv#LWkTi)yltk(|H0yb>JPCDG zcbH-(!h7viB|AN{rLHx#&31>Uc#XJucSH)Kp(Kktfw-?CuGfD^nSY|f-8@2T9*20@ z8#1IL)0F(_+4HLgCFc{fb4&L1^Ml^@*z>S-t|;YR{=cOGUFV}VkqUpNG&{HL{!JS8 zJ|d;TpNpQgQ9YzAC9!^FM^8m}bed<$IO~*ET{?$#-Kl!g-v&%2kT5&gRBKg-Bo znj&w~9*u5e=VHeYOMS>Z$I7Ge7?|!evIJzm7IGXRm0k>rK0d~Cq|)tgFRAxh;PJ{i zl?@r>1SKSsp(iRRdv2uhp6c+Nq(r?A&pk&q+07Iko*GBRAP&L-+iNqAW~28}og4X7 zW!1XqPE~d+c}~;U)2}lO6#?H|4a40is-(IAoDDd$#;dmX(gU53=^FgKhzrGTA3xbgy=pChRqQRFKt=5H|WZd(KUx`?W>(d`XDzyfi$~8`%Oo zpnw*O*b8uA)%;@idul_~nPhxic=h{$_PIQ?a!D$InC^_;-;*x+djU!$-2e2=&?NZ79NObH^yz|qx)gI3xUt;B`F3}cmo6=}GZfD});#OZq zUm=$5=jY*ZVQ#x!JP+L?NpTe^>M~>MU!C}oQz^&18&3exlgdwDovmAje;t&x2v(C! z!anju8q%kFP<huK3h+QAusqgJKMwfI;ASv{{4>c_k}gRDY6g--XK0WCj@4K;s-m zRhat5;sROBoZ5j>UNJcA`_C2(@PYr~4lJxmwjX@^7ISx!&qd_p-bVUdnAlJ~2S#I> zwUg50kKZoh9=!mdyN7ra{(|P-5*4B0UWwLO_*GNF_n8uY^_1{^r-YwBC49e@@JU?) z8M-_$6@`Te8ZTY3LwoHJjmMdq+X6okT<;MUfuMhvf>U@&6Q`3C*NmZ$dz2;@vGw&A zvE_@&S)?y+;|VjkP~xAI}^b-KpB=v;pzfuSLMzl;49wNUnm8>Wq0PmTFCN zG3^!Dz4AP^r}NP}6nPls`@7U2x<;1R#Q5WMa)j<&Um{01gW2MpLi%k zz`ctQ*i7ENTPTJ4{UV#OTd+OECF+}#w2}@mw?%vyjNh%?x$=&wBH>btm#G!+0o)fo zLPan^HLQ(1pwzf^Zr?M4>WV)16a{ZOWaH1qUYEUbiunZgp|W(_)#0vFzFnOKoPQxw zdk~hoI*RUTB@jl}5E@3;@{3frP+c*M3i!Pcp*PyQ!md&&x{{0U(0NhQ~kLe*$wKUc7OVi(bN3w85u&1zbwf?1HTind@hPJ6ePs!Q5y zyQurUhrCzGs$jHE9ig=1_?bD%xos(sYT?pHbDnD%)u$pn2# zWXUgKKzTr_)qQH6k*^O6?Y^411V3`z*E2^#kRyPxwD< zfs#GYPPrYUbpJ6ocT(p4bgZQ1>dh7bkVI0j}ohBWiTOVsjD#UtMC_3_s(~*>imQ7P5n&qYR}J4 z%pH1aS*$NZ#dgJR9% zP%JMLe@f6jg5*hvg6p#tvi2Q`;S*>Is%~?@>$%4|pU9lZru_;ViEaMg;+W5%`Z#M$ zOkXQ?|IEeOVEof~MytWN^5PM#Xg-NyCdHG`S647IN1tWlU$inR>}{)l(UTx^zMciXk5eGJv#ub~2__<9*JZe)BU%RP@uiI3_pKdB* zw5j#@`Atpn?oCBJYf};T+f*9gxv43Ba8nVt+0?B6v8gFOw5f8C!o(ZKx6UMFoVg@iHD>ym*pdt$9~2d!h@V3@hr$kEV^MR z`3N@H1R`O9U*sdSK$`q>hkP*pdD4wILvBLhq+d{GWAV+(_>0+$NkMiy8-&z?@h>ZZ zr_h*;@<;&kX8OtuUy;CVO5l-f0$pBZSFqWbXK8^`N{Y% z)L-PlGc|=eAK1+4{TOz-f%IM zgYw5(b()V*zk`zsabKf|(H2x_Ww;j;r8wHDI;CBT-Ux28#r$Qq`B_l-b?T0}g~$4J z>QUU+-Vj~`rSThx<=!W{PSw8E0aKL-YnB;}{tV5zz}yzU-a#@W>~KGWkixOA`g>I=XhlPbS|d zEgLD?{6Fe>n-`v38;t)T4NRP`r%pA9xLf|sEGj+thbd~l=)RQ=qg}L@(izd^);>Q< zF?lgv&PJld{5ml!30%W>DvHnd|0C@^;HxOU_VKxU@7)vvBtSxw5}MZ#LPtR9JwXI1 zf&~aoK)zf_K$J@`K~O+IR74R}5Ti&@1W{}hMLY@9fO1$qpCl@iFCC7{C;er z;JbS}-Uav=IOK73Y(I25uUjT$MNZ&1d=Ui>%?GIYTodyS!MNwe}VQug;4S$rK$3Jl*qla%mTF_RL^!1uKT#A}eFAim8c zAU?e0fVz{#_q`(*p`MQqXXX3x#jwIZVp8L~#N8rC*Y+2}^KV5_yI@&7r-*S~-y@6s zjqnI=PXyRv`5wJesE&UCCR$h!7x2o?|5|qeiA?Yk5LXv+fc;#_9(G%WVk4JDQJS)s zV`Rm+8h9Wc+ip>V(B3T^mBdJai9#TZ1#~nFLsI~t6$#=uAO>oI=yJ|xc%UE-ME04c zB5(I|%+`BM0ep&qVIiz96Eiang9!tAhIrtk2b4?*jILicLGO|_2qcWE8dr{n^O7beR<7I~!-%y~U`2GbXcA7sv)D_+uk5Z_}Qb+*mmROoU?UF?wb06-9 zSQUyTdBtkriR5bh)KzvK9+J7sAKHYTH|-K?-j|Uz1zEuxH5&|ggbnc*mKXBOF`0X- z)7URg;pbxXS2LEtY@U4C3=IQCVpSlW{fXm@UuE7L6#&T0!yMDSbOM zvJ(g=f#VTfyy`57_mmBi9NEWiwi3b@P}BvCi4i@TI~+BQ%^q@pMfR|z zg!_Ivdv;9rWUP_=U9IkV!pYy&s_;c8e*u|mJt%drDr}pt?2qS1rm6Y^UNi8c* zo|HNczm!@ymK;;u@NyI~=OK85r)tne+rV-i0AvQz4Te&o5gVH$LN^ zSDzH;k6IAVr^OC(tSdz`aLy?c-vN=?ZrK0|BA^SRc2E2#>N9Q}UP z5&CEScm3Grj%KTjFI?Ir5vP+#I##k|wS)wnoup$b-jrcEmEKg9)b{H(`4IKHhNop< zHV{=DPJ!AI$4VwuONbX;X(f)SIHRkiDwpo)^2>X3W+d#6^xt&Jpxn{XzHG@C z-=ppd-}Z&ei1A5id9EA(Kgy`2YLy)=BP<=&oGbDG2f&Hd{6(0dMsC3DH(WL*6RDC3 z#M5P7Ql-{#@?pvSkhxxcKBx=FL4`d5dx1W>*s-$uM*gu9Zo%-85~D9kRjQ*(u#DO7 ztwcKf!^HV&6ij|5b_WY_GB*GqM4$nIWDQ(Hpb3E#4P+8%OQ4JfG6*y$P*wwV30zO0 zoCfL<=tv+{16c&R5=hfPeFEJHl-B@mA=vpn2~+@}?+FZs%@4C2rkwom{q+>-uQOZX zrN}6pB>jclw9)Yu^It%-D{12skXIo9eP%^ZqxODDCso=u3JRy#R8mJ>2Ntd?_Hz0c zz0Uo=*m3O@cEn5D7bB|tAB=znx*u<D#J@wCNb zDmBAti|MLdQ|%|**X8rskNh9>m$kzcp)}U@jPIqZ_-mrR*NH`oKe$>WR&jq;aY)yB zV*Z4+~+O>6lBt zn%K#ap6BqH$46O@5q#V#z>kKN!6zcDNGEXNZ7|FID#SN(mXv2War_}Ae>=jsN3;Xf z6g9SgJ_MJ)lRqEfr(hQY0|g(0aBqZccsG9h{M-qmeaZkV?c4x9MP+RY6nr?wFvU*QUH$4+*m$XJoy_zkCH zQ<0l^9-N_(pD;JhR|w?26N!wOT9moR%iM=H?utEt$)`7Ad{4$0zSoNMr)r(LdxFks-7(G7P_=pW!)4@#R97kc-TkR(!!=hLsn= z@`*=NqtT!wj-14sfOj(aTD%JVSc6f~cmiRZI!r7WNe$Kh5fydwtqA!r&Lt<7ge;Rz z(7SrFV^=Urr2p2^b*%__*}{{L)oF7oIOgE!j~eD2`SVC zi4dBRmUs-!e*~^FE9Ff^BX!>`Cz&v>ErGCJ?n2E4YeRaFwIn2!D77 zT5)yN7BBe2pg@K@GSQP_J+QF@(27ie)#mHfS@{n$A9s86f%cAqm3EI3lRgxMV$X)p z_+(8!7iIed%T^BCVoiQ6c2uIv`lK?JUe<4bLni7M+Ly5Fm8zDMx64`Hr{XA~Jj04l zLrsVB5{9MFrKk|T`x+MvKL~;F68s#uWm&4gmk;ga;aN|q1* zn#1kI#O*OuP5wyE!X~1A0L&*ahQK`P(PrJ| zSuZU@9%yv*HTGp=jpka(Qo~i!ILGFms&2%wS+8ZD`QL43J6MR+{!i^-5xx8#`psnR z_KOKjCQzV(rwJ4in8J3DmA?c);eEVzW-aK|^rFLTT4SbMgz)e>Sm6)ffcYr*kD|RL z!qHUz9iEl{B6Z&%qnkY|XPfMHXSYKcaoV(#ASgZs${}MlBTkEnc+SY27ix^d-5m6a zfe7~hF&ROZhZ)whxOL_aE#Zx}@3g*k)Q8T|lS$p%x|#0bm#^I6lZ}uHJ&m|nM42=& zV50p;S87ndyP<|E2h5Pfqypg$? z*U@95bD0wRCd_rrT#pdnu#tr~+~c7}&K@=+LpaUEzJsTotg_BrE>7V@u6mY!6=6I~ z1m=NYN47*<`K)o6eyu<_<`N9VUK>}5@zGCH=sV;Ek1!B33K2>xcob~i8?1OMA^{Qd z-l*{re3v~C>WLd#1rIZ7d5Kv*@mO0|i$p4E;YPZsvxFZTFW+k%-DsK466Q=yLC=sj zGLN?Gqj7$;X_L<5SjTuVhBF;TaSw|zea}osSf?VfqIe9!q5WJcL?_$xftktn0>nkOH^%6yIcsY_kE^n8tGN9Su|S7P0= zY5Chwgq*L@^aB3i8l6d?fJTbD?t+BJ`_QlH{QK1?q=VD1$Ui~kA7hJ?|9X;t;+P&j z15&q-Yl7BG*705#RIVVfP&nZ4sAkf zD|nW2E%CuHP>ijcfpHy3Hnhdd$f1C&{Da74A?8KVHvI1!jsHd*w?PND3~{Z<^Y{%H zA%CG>_(4B)oO+ABdeMhb0DW2HFxrIMhrqfQ7<-xoMmv@ly^(otXE~*?1w!>_ss1Ie z#J`Qq%G-zmOW!C)ulgeNyZ1p~BJ-u`Vpqnbyo!3W@_%L;tG#I;3qN~hv8(Yi!Xx-z zG0NZ-T>3+wqLA}{jFEaZDzzp?Dl7jFrn45XTO_ymopn>d^SZ~38rYUTOwGKg&d!k+ zc;SY=z?anZ#ePQy&$Vb|wIh6$gW$Y_4!V^)1<@A&8tgDF{&kwf{+8=3y|!kk^tWj0 zc&u3WxbYY>J?BTuq7QZY+<@APb=xv&D~yZvvmeU1h}(;QIE2l$^BNE|e@QwY_sSCs z-lY{*gXkInjyU7vr50^>htea^8+Dpcx)W0BO4v+8E4 zdAc)U-8J{~uD|F$oQ@dn!$qsCxq~o-efS217tmL5{SL2L*SLO**K{1|&yyhSwy^d% zxr_jR_$&H{XBRfxAAStQi$jSBmahi7aj-_v?9DV;O#Iz!(@q6V7y03xg19Ras zxQuynUe8M^sB)Ql?wghWIP5CKlrP%+(altV4H;STKt}jiwoqXExPjIlnAAN!mGuJy zc<7)lTfWmL=UI_&kgooi^*L!gXK5tf++=5b`R~AQ5h&|AncG?sm(TkF-Dmmm3B;?D z@s<_&4ubzZx)nKxFp&>`k1G+6HR1<}?rN9R^yk3qcy0llr&OTeM-b-dC(_YY2rVRH(o%^@1*cA{j4F{o~lxK07agE5dnn< zaW#cMwZngaugnXlrQk3Sq=^XxjsWIk z!!I$k5_M|@L#s(}>-ZJA;0S+O{$&K#4r6mGF)bhW=<(rq{J_x2G3cP>1#$u4xC6)q zfD;ZN7sykP=L8jQnx#}%nDpwiA!(ya)NP<2K^h$h;h<-t^FUE1bkI`giJ?F|9wV~i z;z#!{f#;(dd=wYJ6Gs*LW8lOiJ&BWWM_1Y<-|dis|3kyzQFxQ7Y`moA4TfMS2T=HH zc&vV6M%M0pHx%vSU!Y!6-ehX@BbRj(^QJl1{`>%t+TkF6^X3B0dmcYl=v9*=6F(m3Ka9{0%^P^zykd)_^wN-qspPnzy$Fcq2TKx2qFFdoZYk%Q3Zt zl=um_Nn~X<6PGQUm{zt#N@AH3@_}xFY`mil_h1vlY4|z%4iZi&kr|hgs6Wb$=uEY2 zQc6;0yZ?uZl%()+xB$pWko@wF!ee8-+Kvr&a#;_#%qrz@S>PI11;;Gp-GxkrE8r@G zSwdZDN{PqnmKbJ43$R1R??l2x%Vsh0%ZvaK} zmOtWmfv*dS{h}-IRAAo%yNrK{BF%OXR7JR6eq~$3j!j>jc7$)$8){jhb*TP=BjC_A zk??+NVz?52D&vQ{NVu_`SilHa97sfYqAs?fRz~~PPxS?Z-O)b#>ZZz8`e9ne4?1RM z8BN1HQ-oofT6MY%k@Rr~n;~LSXd##V$OE4rgvUnR z>3n+suRx{D)lH6j7<=|;KkDIRP@8!TYZfj*^`7~nure-j&A-AeFFjvmB}C_oQd}}$ z-V8BC85cfPon0_;nz4y8ZJYFuXGfO;%iJ13WsvN4sx~eri2jQGi4W) zfdDF-@=j&*y6$^;BRkAwW%r@EsBHEVtlwF)qV+2#=~RZ8`lUus{R->W?`k)1x_((; z(fSo_QosC6AnTXk2`pejNpYt(6Vq@GqTlz<-0HOldC ztiMz88zCaoZ47Efa1vjqixivUIzI^|r~MmmAc(4%g;P2R_RH5+^v1D1vB?L?!_5%n zrpED8x2IQ`-n9s0dd)$tNDKT*K9OEaT<0gd>6P=QhjL^DQ_|tlci9i_7NF;`D zxIzS(=piCEibycrlQO-okipi~O(N4<%V0U#hf;m7kb*-sq}zu30WQaR1AP_mFq1#M zS62$J^hIG+tKKjry46LCt~YJr@nKC8!D_z0Qydx4Mzy+>kl| z^JYaulH8D|7*ggoH%>`6q#3}xm!lyG5>jm#657k4Cbv70tWv?Mp_`GhD%Bc<`-2uV zLSFe+j>e?;z!UBcCRPm%Kv1<3j!YAgvE4W=V)&NACl*{Qv_wI3q45RR2~8-tUTBgV zzm@PMUA{GWe?eQ4KtUT2*>lIkDC#x%TXoK6^%^g96vd7+XAr42EG>Ks%#_y;*lA&G z>Lr?B=1IfVhIw(?ZSXN(oc0@hyccJg#FT{*o9q>1@o2pI3^<7d+0_^0(u%MMLbt)R z#l|+4g%N(*5tg95)~F>D;)AzEQ^?DXhVZydG{lOq$W5e#m>|}I3A!dGh!tRhy2S*s zE=*9bm>^b+3Bqf4wHfFOfyxbFK&nv<4TNrIZ4Bhk1LzGx)A3_h)1_vIrhzLVnT|91 z=3iM9J);?3$^FulR@PhwZAUR6GIDN3yBt`fXaWXer2t9HHeb*A*f#U*!r;9(S^9l1<-ze?A=Q$!6Iyn)Bx~-d0lK0y z9(8U>6m)=QIB+|XU_pBlw5*Px=tv_DB~G4Vq>KfBw-r4GJFn(_7S)EeE&`zaNE&nq zhqBP`mLE_%F|A>xYV~L1Mz;?ye8G93M7a*NN9)Kurr(EQ4=6vN+OYaH?X-r~EGx|p z=mdtswdp7JX3k{?HweE$N$0I@AO#;_@XcehjIZ$vTiFL_d%(||DI}8Op%dYppLMY1hs6)S;m)8|tBJKqG5=OT3yRdK~)DZ5A ziH4h6XDh^(kj)Yv<4Fazf>a9nfb?fCwB-`<#52Dr1OYIf<{ zts`hT@D0!wYPKH}9ztRKS<2_T`SNqs5~_mv)7O|URATDf&cH)&3XZPe_o_4&_Dg`l zeANl~O3;tMQx?k`mWx^kIvrt?aIXUUTna>;0M2oba{R}2+7tMPwj=N5#a#}t48dwh z)tiV@gWGv^JDy6_S0(Rtu13MJgWE8cs=yA30J*k^acG&uaIb!RP^k%`r8%_dt5obP`yr>VZbYbs zIXlLUn#mxR%yf;e_sAiKmYxm#6-6t_rceq_sScO1`!p zH6OrMqrTb>Ei5ZrZAYklc#M=sE+4GWzdJ>%y0YuBnf zTzwnR47HZC<(;d;Zrn?-lpeNB{l3NV(<5#joxNYFv-_D^hYe2L=JYQjggH@#@=EA5M>k+9zJ?BmdI? z+q)cFCZK(EgYVmFuG<36zv!f~-u20>>l|z(H0!eJ_^eZdSM_nQ=_oZF+W#RZ^q2P? z>~&Z$M%vcLZu{s6-_S9-Z*{I#KJM6e1ZB|a723DSwQB3Dj^_O@IWY#J=h9l1!6&uf zUl;E)?I;zqf8CGpFD&-=+N?*66#){02b&pwoZ3KKOf*=bB{V#)7*3ixK=H9OXCqt zKDCd(i`4Yh)ksZWjYCcAtEX2vwZHs#C$%!LK>OsG!;Zg{bTzMqcj~fli2Q1~jZ2-Y zQ*O^NVz;AtDpJ!P7Id}zKGMN1yS3FDKJ>u?*6L1_y)J_xZeMpj%8zAL+V`_te%trq z*`Xzj(SNVgDvn`*8;XCn`Vs!8Tfin4tM-e7)pM^tazjrcZ;heJR?ou%9d`iAUbnXg zUAY>tRHyM4JWOA$gLi7VEvO@XRSAPQZRX!Vc#Qtz?4l6cOUKX#`Iifx|0Szb)JAEv z@?2~$VqQ=^S$%@KAhOGsqDo^AKUu9sX=<4ie2bbg<Pe@Sp=JuQ7Co;<>Z-Yt`oLWpDaNeiNy%x$JV&N65Ne(>O(R|L z=D&r4)JCaNPglIJY_aI^q1K5M<9WL0P`b(L@*YP|M<6V*V)z_ocKJH1HH}9R* zD}qdi?`u8X4YJ}B2f0xY)Wrcub3cRJ|Aj{8`)*NhiG^QdgruHaJSqCFXny%CN6+o* zeIO`9Q_jja7)TM2lYtPeF(tO`}8#G2`P!gL}i)q3c$b*zW*4Pqkr@|Zy$ z#ap%LhQH`TPk-<|87|^Uuv1>2B>NQaxF1GJZJT_lf#U zkVziokmTYY<59Wl6Pe2=s~3!gS!$0uEiySqM)~%u^HM&ay1m2~>Nl}xqU&|XRM27> z)^q*m2OzX?1a=>Ess5rWS@fuYoBD663J}Z-ZgKMUyQ(fSV@=8Dsy~T9&*%NMOfDw% zwY6r`|J3pYd<`Y_b(mx5v;w{+qUS`&K@xnOtRkdU?o$UT;p--PDw{IQRb_p{E!J0g zgEa6}@ZDuCMT@^5BRn-LRl%1hNK%p3LnL3)s)-eWPQ8L}yv5!)?ue6CCEq;~Ym;fY zN>%dRE2;l9HY%f$s;GRer?PK~$o%Y7^98pz9zX;#cYfu_-0B-7X_YZ)E%yy3f>;aO zSc83oCDyHOtf9V9f_&<>ixEVsC##1|$?x)w1yTgWGBr3J$X%j&zdJ6E^-Yvm^W3_) z%lELzyg$Jy!@GP71Zm;+nG<}=CDs%-)pxE3 zr~2#wTS4djj?9BVSYI1^N0B%|b}n>~8NTuX`o`+D4l>J^9-xnHIH{3T-$TAkk@?u| zNoM=9PHxPDEb#Rc&Bdl-J?de<|T_$COlB+tpkbG``lDAnLOjTGaQ(iD*y?3U^(AZ#g> zo^)cZ_B|x2uW(11)xJkX&!eultn)1uJ!@Ti-Y`g(J7;^_w^DLC$Q=td`qoLw``vzZ zlW&9QxwOnl{e9masX^PV!L7c8AZzfY6h~&OuN3B-$!g;B4)UR|njp`+ZTTZ#EkR0U zIx?U5G6Xs2rnSe{EXeX{Yx<~SwcmHW$o%5^>K8y*KCkU@^c?oxATnLu)KB?t5j`2M zAD;G&6q)BYII+$Wsh+I9c1z=X-`yfJ$(>bx?~6bW`WDms<*J{24+e{XY;{W`XdRbW z-z;@B2d&GZdAw;m<9&%%Nt@;K>tBuxzU^pJ^Qi+4QrfB}G8avq=BhGQ9mpuP*6jhR zSuG{jY!hp~uO<;_Zuf(urKQd4uGto2(+S@VjI!^NrQlnk})~g&fU&t$BhBeab=lTTh6ES?&mO ztF=`0)O1_ZU?NC;{xlt{lp12aAToR15*uQ@B6{9+=VQaI*9E!D^d!YStjZ!Y(0D>E-wvyWAfwz|d~Aip!e3k; z+il^#88kP4SL-RK_5op9@oula-)bw!>C0NCr|&bXiKhphrZ9(7}#vgQeLt*NhE^}Y2%Tp{eqGRQst3)Wj=b4i0t2J)^T z=S*5eHcL()c6+T~tgUfugSWahco7JDtxPjojrU!&J`kk62iYk|J9nON(fUM?&rRyP z5bJZKm8>Fe4{*`q)Aq^g=VzU~|7o3yV>#dL*5IGk_ad`nU{vP3AZ6V8x@27zWa(p$ z%w?-YJabWJn}hiL$?^2V!Z&cv2`%BI@*8Bq>rtefmhm7J1WEHCR|(SCqo=wctqY@i zY6;S-c@zl=Qr{CRQ;<(Rni~l6^ZID4CW4Ie$TSyZphwU3f;{Iz+6vT94+g zg52$i)m@N}Ju*E78Sg>*2y)wCZDBFWu)iQ@Tp1e(Yp@6-^?J1VTs-V}TRc5;=W7lU z=N~M!QxZMDmWlWON06uCbs9X6BgQQG%kS0JF>jyVh zbAuGS$aN-G(~3^4wnk$PSl#V^SJJxo zbB(0>A_kd_-cOg$bc1|gVqqQ*gyj=JucdQ3$H?4+{Yo9{af5Wn_@$924RZN22U%?N zY#VUkS8efsAodJ!_3ZX_(;;~h4DhCUM;Xo^0j-DMpAt>fUqu#&;x6k zS_Wx_(NiN`84LDwbvxMsw31)ZGGD4Uj7$%=E;a-XNWam+?Kj>Bf^JT|jTNiT*ZYA(Vh=WB zOR$&=h)mUkj?A}2VDoUd zzJ4?^o84aP*T6}MH2~{MZQ&n85bH&^UHlD%Y0Y=Ldpl9{gSOoQA!ORjft?{}7oC zZZA55NI_Buf2SN*1y7o+>3`%~S@q}D8#ULwOq%ioWr1k4UN6*yYU*h3= z-_%I1nhu2HMWr$tQEGNDkib^(s5>i|9SkNE0-4|Zyr1~7>>C9NuhNe-+F{vk4Ny2$zRsY!*9xeoQ^AowT{knzJbvfSPh#7ASPXGj#O zDacTd3_isPnK>Srx`K4}$lxp6kQwTcX)H+E(5U8X1-Z_HTqnq*9;A&Rzk84lg52y$ ztBW969+@0LUiBdOA}#EB--GlPWRu6jn+0j;(R`~Qy*)C61gY$i87j!r9+^7?Ipay| zPC-8L$bXErG$q(O1u;^E;_btKullsTDl(t?omd|RACHmQ8GItik5c{kc}Hef@F|Ja1MP=@ zxoUT?SY&?M;vk;}mx~NOs3L#4YG3fR7|r{GuP0%tqkeuz%bZl71>Y8#nb@!6UoMbM zq6ZJ48{~`NdxAWPeFpyJssq8Tg5XoI200kqCJ3f%200YmA;>P*=EK3Ag5YsNBXcCU zOOR1P2RRzt9b@yc;HM%JE!E?}&thaw2EUNfNFVR$`6_rQM&@kra18QY@I+D&aGX+?bu9}*~erH}m)v`W$s zXSm+-S1>3@w08au#>K?C6ikRgE(c3VtbnV>vdai^(yfbtU9Kd(?hC9__=jBxyln1D zdlKvlF-VeqRY}~iR5w1XW1Uo`?HVQTht29sjpPEUQxaPeswdV~{3})!@nT*gc<|UD zHGwczSvOV)NC_Yx9n~_azD)aC*o^lEedWZ;A_AL}f6z#-YD6U6+fJLZDc+wEgyTH75(W}RDNZS1ZwGVSc_7(E^B9%5nZ6vx8OcF&ktUG3Y% z!hIW@e08&PMGsyMAb+{)27^>}TgpxLFp*h-zKegks*gP;M)LqWEHWG2mV3KBUJw+c z{N<`a_T4eDM%#rVbJ~qH!JZu>bGJQL>Z`h2UlZ}pKGt9qnPfi^gG{!ciqUhQ{j8)F z?b(X#=LCuR>Qwvrm{|AQFT^0z>{SvgT07J2H8C;|+G|B-h}&z;wATv~ZG*GyHw1}# z!bA3(f<)WkZ2N6N8l^gAIM;qRM&>bls~}a&J2La_ZGv>G;2?|a-QpV)F!SUeW@z^Q z7@L>a2PD>i+`3q1ABmAEwvUO-R9EH&`%6KhHTa@^N|4u0#pkN!_SZ3bUb4RtnM$tL zt+LO@$gH-15}9Z@zij^^NGF{Mi%oVZL85xL z*vX|5A=74^j+N?r&n_cK9T#~Y2>YKOp3yQV)mDRS@gQj;^P~rGSL%jupnN|!=!d@ zc57$5JyK-4xi;@GNPkz)4tq?Do*njGg52Se881lG!X5TKf-o&miy+0WkDatH z3NpZh{4K~#528x5#OiyHfFKn-r4cVkOOJ&~g7ED!{A0e71g7FrQ>cCq`$kGNRI0z z$Z~hoONr|(NO?C_#kku9`Nc&l#|;#ui96f5DsHeK@3}Hn;)V!vmz!3#xM6|}LvHz( ztE$J15Tt<{D?M(cASK;cHR47Ka;cOPt7hC7K@PjIYQ>Ee1h0gUzg$&2?k+*%Y$%@yAU=7xrnT9bg0Iv-(}pw( z{6E;2Qo+XR@;H2hsCDnc+xwCCsj^-0crjk6_h%1$hXQo>^-5*e_Nn+@c-{^C4>xM+ z$bH|_i#JqfuowCi@UoO;;Y@`Ch5_q331TLwYal48p$K4IR}^r#Dq-x;h-eT?**=9e0*K z0lj^yQeU*Lsi?nc0QzsnvwgrF{{H)wI_*iX`4~Lofpqt7)3oa$O=nKibU*r;v#sl> zTi{dQgFaS5(;?uqYu8bW!L$4(AiqC(^p0(!)Nj!Hb|X#yxmHs?97_D}rkZ|i_$AFW zf0w~)HrD)extc~Ke!A*{9{x|{XCCVLvM0U6kK>+Yn|_5uunHvo>xib!5TE=+w3|Si zXgM?A@xY(#PkJSu1e_<(NoQds zpIT(<%kj5PsK;badefjU8TvjxL5i<}pd4AAli_!yC);Yj9iOdvNAEJESFTOEYKLC7 zB527}O#`QiOVK4|~7hIT_f$oD||xE&u&nxSp2lP#Roc8o9Y;>olN5^UVN+JJjcR!$9Nc+LQ;n2I%wCA?4do=hvaKDar zZ+H+7u_K=g44q-Qm`M@oenX4b`j-N{vVSi6{^D8;_!1#^Ub4QY<_25~Fq& z!@j)4euV=J-HaVz@_e3$v?=zC@)Fb4q4)4THl%+C{FBrYs{4~U;2**PnkPV)ti`jz zNOvsq!F-KxMVhW&Lq3-x{8OPmbsqU+d0r_OwTu3}66Hq!CtZMgC!Gm@Cw&lW0n)n- zZ+)$Ko?IoqXp*LX4A%4}Obv+NB;mS$S_3=#qdaKGCX^5DeH{KxJ}mVfwTJ!M8pO}o zt?B$HNF9G_s7_)nu)a-0Rq3!&J3W5&pChcteueu`zNBq#CXMQ4K92&onreCr`V;bd z(a(`Sgm!w=BhQogUjoOCHqdmn9p!xn`S`wrwtE-oPvHL%fAp#S$e+|dc;;(*8}vsA zUypXJ+WJ%-wtvucwD%;?cE@?W>(4K})H*}ey6E`&{r)&AF{ZLh*d zF^{z89fS#A&mrt~AsQyIy4?(^i{ONJf z@0v5c6jg2+-gVtJMQxo){VD1x_!04!W{_{F9zpwk5&8cJ?RO>oyASG}^MeCI@Rxm{vygxKoz9o8 zuLHn;MZd}N`4;|0x>u;vk7&6sJ$lbbx%kvqM!(;btFNt2Z?_5GA>oc5lq39?^|S!( zSp}OZwzub?m;K;5(E2EcpFo>||IL%09`B-l!FcE37n2rfx@VK7mG9GZ-6~Cc7is!> zKT`PNr%L?=z0UZm(5_e>-=n+(Xot>t=#0BNfCt+}(`COCY=?fhucp^yo)m0{z83u` z^}K8Ps~O0Dc5Pdo!Z@<5wXJ5HCB;)akV}O8Xp|Ge-FX`48;Q`%`35QH8>F{BtK~V) zmqxtUa`P}J4wEwstx)*+Go-`7}rhu zH@8bu7vK-q)rgiipKHuTzTvuHZ|$1Al3dg*_pi7%7-R6X<)TvyS5$?rse;ayMdLch5dxHAv#1^=L5 zeb|vy``tE_1N%p=i@J;?p04`5M(X%mEw}$1gL%u7Y3b@s)ZfN59sdjPI-Vo%@agKn zVm&S-t=9Ay{Otv#(`T?w=kf%cBt`o4U;2@k{|xxwAK*!JPkU>Hay^UuPn%Balxw=$ z0=XZIp3jiqXYOUck*+2k=lmdDH9W-mLAv5|Me`wd>oLv~($y-^h2Xn@J_9=FVeJ=J zA%B$--V^m(9aOj1XnnlUP^k;B(jfo^Gpbw6l@#+rVG`2+dy?$h+HCYnxas_EO9XEA*KB~4#?SJQz8AAofw{o=26 zN0m29d8C52@`Z%D0JD~qP8*1Ek9Z?f&Q5v%c0F;O{wUbv^q0j;;>)LeK|6*MUCbmQ%07Q}gjI?hd^QF9?m6TgPv3Ckgpu zy^(UCiIn?Kq+BmA@stbYi-F&S2E zb2 z68(+UF*@Ek;iuupTpyP~zed02{OdRLe-+F)*1+ib)5v8QIi0@t_qdLY)t~U66zF&K zI_dR6yP*Dmx+qn?W3>D^|F$~n`8X-p6SS`e>~zKnXFRCc5%aY3dOupXC-jSt;k|Ml zoqE8y3i~)7ej)vAzryFQrk;L`I1?;}K^?DQJhoU}7bA>ik<5531BmS9H+ODG6Ob_c8^w+)HlvQ2e*Wot33TMKf4wk|= zK1qjnw|tOmsNTW2m5cO9M;LmiC*7IVv7SJB{;HZ*sHN!#H8eeM==|E`ZP}lg0DA5d z&6me`a1Z!Z=kPvC&}R(&=}zo_)quRAD^Tv_+qKkk|E$sci7=kWL%c=?KmHK*L%@G+ z!q=Ga&FD{OdF*ZpyXU}eyxd3V55n8BpYkZ;cOQ#=4^Zx}JORr40*gU;Utp<6&v4*R zKo7piM>%)AWxIM5c!P?X_V8mb3_OmwiC#y4nQJgVhu#X$NPgV-{ZO7OAfHx6)16mo z+79*-KZ9~6ol!~C_LVi=Qb*IKh8{NZ2Ve)~-#77A8oJbkSE#AOs~SBYm~@AvYJ8B9 z>tpoxH}Wrw-e|qP5cDA(TlGf0a(|)EEqE6ec)qiXG=I0o52F5)+SsaYUG!_fgXnjw zC)$cnmAwZ37tHs`SK5PlA$UK^lYA|OIS6PctmjErEztPehAuIb&!TNaystzL_G`aD zzlL@@CI|f*XfM!@L4Svz?|~ejAEkX&kPd16FO~WnbO`7UPrcShzj+wt_}Jr`K4WO* zz2u{MOgz;B@lODM2!6!!;66I##^0~)ei3#uADc{m=NbML!w-62`*Xgb8_<8!zTxPv zNpA*z8uThdM^m2lYTc)!_{-2mc}7 z9OZ*_-E#W?{*nT`F2YHFgs@4h7+^|hwlXC=@5SJKJvYWmDVP5I^u;p6h4QpE3TD{$}J^Kjb%J--eX?_M{0$?m2U;b+VJ& z!M{3y7NH)xfI)btZ-xZ!U= zJ5fPforip4JB&Y|V?2J^8vV#P)awfLBc$&bejmz<{6X};<2>@U5PmoCR}fBGREIR` z_xC{09l$4|za;HgThph|Kanqk{ug$;{Y?SF#{geZMbj>+nvO%d#LHZz>0lFH&)|y; zo`dwpbi)2D>cxA%W*PkD0qkoHhd+|uiuOs$`#7ZRM@YGjBxV0XS`F!ww!KEv@KPduSfq?2%7pT&TW8N6YwroP(Hu+Fz9N~`Jim~3qkRALiG&jGPEP= z$t{APg0BcaC;#KqnvT2`_hW$b9nsYj)6_VOqiAn#xiS6KC?BS`8gjdO>v)_8kRN2` zdzleE{!T;t;yBEBYZ1hkNYp6Om7S5mFe{>Qm5SXxI{jP@?bs}qFhPkz5?in4K>gCDbpK@a`5&qSN0>edT=!A2mbz; zp$F^f_S5DMQopPZ*S7PEUy!efaLV&OJljc}E>E=);}+A|fc8y$W*yY)iw{7tzECS4 z!G5*JU)gVdhWyQFp=lQMlHZShmX!T0={&3hKI`N+>G{>}8U z0_y!N==}))0rdJqm~VnU4*nwOX3&2?yI>r(I{Ve?rI@#Y29VF{iGG#TNYmyEF)!+@ z*D=fw?PEV^U8iZEQ9A#<&S>ha12}(7K|J~m<3(oZa%i?f)8-Fq`WEV&<+JEXp>Dkw zpg&0I+^=vD+A--E%%ezeGW0?<%^woEs6YG<>p409!Fu9;J}LM4(_r70Wti81M#dq1 zQ2J|a&@25F>(6=G&JR&9(jP9;w8}+|)BiINkN#iZ=xOp_^mxk$``YpjUHZfMhcTW( zexLDI&a>;cwN)GCQ>}qNzY*gXs1rZ`AKZ@y&vNbtYSs^K`Eh@_Bg%{W%cR_2hP)fj z{p)VPxqnT{^F^dj?bLMM5lwmCi1=p1`!8!g0DFl0p_jD0p(l4~d@1@N;t7{DU4;II zd{apm9|QbUm)o*m^*oe^Zn^F^)U}iQt342p{QxQVk4d?IOv-)C9-eaHJBeAId?zf| z;dy3%qB-oLANIOa_g62Nb~^5auE*Ynwl{RBp`UKm;adz{^l^0GW&+k511n=+4R(B2 zNz>o1B8~P32VgJLb@~U6?+8zRX#&mzffm8`mge+9jO_RsUR|GAd)Cg=WgwEkJ1Pr>dX zeKh^(TTSPm)wB%8-w7Ri6_!tBIw@+zX{Da+oT7@J!+kx_XAC_#QmL20cbJLqZ$MuH z;_-aJiT9P-0J}1e>HEGzHz@Tk_!DUV?|J;N@hP11MZ8uRS4bxz{`SsDcM{WWsGh($ z$oGm1Sb0=C)2iVK|0?h9x^_iZ=yTb0D zQLW5RvXn2zTSIrkZ#W+4^2UB%f1J;Q+{HgxZ#w=>h+k}Bo^I?N(#5a7S+;S6tHRP|7{HCcMNth==j`h>2y;DC?etTc~70%ORd^rcd?T7yA zUDVeo^gE8;51=nS9_L9x@l7YS&!lq#Je%uj(3~Lde*$pon}_U*qbSj{ska{*<&L#(mPRHArCD7%x<9L_3+ro{<}Bq<9d#?@j+5seYO_k3g|lzAOZAGlMFpz zDD7msa45%*A^(SXIc3nUOgW8#-4kK=I8c0dP)!E?4av=f9#^ll1Du~4Prt?UB&Z+W zZ)=7Aj=a8Ki1v;Cp=ki;5Yaw^wb9Om`qW2#^m>1rP@Ka=`t!T`@Eu+Fr?F!h(%l0) zmV>fgk+v_Z=^KzEzcWqK$>lZu)zD!TG{48t9mvOe*st$@>hj)<_-o*2l{=@YWAOj# zplk=VK{+4%;;J;&81y$#wzCZ2^w0W6u1ROD=L6_*`U{r#PNbu$4*$gDXTK@GiRc&f z{X`vp5b@a`A47O8%%`{yqQ{45zpU+spJ5&O4a&(|?&pkNp1VvfhjXn6uZeQuJXYV| zy;8maa=M;$ef|dd6x0LveUpUZyf^f)9=+)lpgpnvDX+uz`23g2pX#Rjt!e0=*dIjj?E#s?fu7t=a9$d^7~_^;3>t^wagoZ;Q9k&TwC&iBO;M7kn=a?U46} ztD#()AwK=I9qf1l^R^t&iRiEUfgUjVoqZGfU6j8=%|3(ME~dPPb7dHxb-1=S*OcD~ z(7cj3p8@(E{Jjv=hx(iYS_SQZ=`jDhYuc)4q|WyU%uB{%T&;|C+CJbNLB9cg3^>mh zY>&g);fCp|<|{Y{-O#71Pr|$k^tNm1Zz<|vE!KBKb^Gg>A9ib~#^z!^hAE&Uj0JJM!dzj^Q(#Tp4~Z_*+pwV=`^U_AvmI{5HeCYWVu~ba(|&hCgrk zhd>)4o}G>UenU57endSFj?j1p=0D_h|DLYu&(QeC3Hsb*TcgL(r*T~ltnbbZ^t_$zyQP_D zCui$%Fg3f5YBd-2j{J2(`PT;Jc?0@E(L1PrGmprC{CN0R{p_CAk-B=MLU)u(i)^17 zA^fxoox$_NE@OqiU-(uCf6Bvm%MPm5!f#9XdL?$xv*Xoz;fvxgfbS1}qX~Z-t#wd# zg4$-nw}BrH{u2{^ZxejA(U+*cFyZsTS5}GYgb9D(GEN=VEup?K;ZK7flU+jnWWr1Q z%J3xhhY7C=eoQvLB9*T2_khVyNtNi~@!m&O*29m>E~RRC_NO;G7oW}O>$*QLM!^4luuBH4ns87q+ORl3z3h&q-Qssr$^|>rN zL!}GvPxysGDs@0OjZvW0i*yT0OXoKjAG*H^ci@X=CV4b)H*evi~w1I1lD zwATb(UpTE~!gYN$RE5H8`&MQ*Qj=;@-YJhJYO3(td>igm>hRHVvtoQ|^zrU$^ zQTU?x4d8>Ssaj*gC!sY~^fyx*O!#BqgQ}U@V#4nYKVhoDSR8XN_eOJw^P?))fFx8cB-fFx;{S7Zl_k&(e{s6q|{g0ozy#; z_pL&Ge3ji<#a}JqzOS}m_c^Kc@EkQ!^QOP(uI>}w@xSisLE&|I_;b3e_l4h<5FcUx(?fk~cz)wxlCOt4s(D}K zr*Nt~r-%B>!Xw{=YMkK@VV1%0`wTw={x}HXJl#Zp|G0q;|IYA7RCOy?k|# zho7G_L2dT%%X98gyFC1woJs1Q`dZ)fc{s(FQ=r}u{ts_1Rp^}K4X z%EP=U>YsDfB;mIuRLN87yPUads_;ee^}zoGezx#h-^HAV)m{((Q_ehfO7m*S5vc9{ zi0apr`gMO`cYjok5&nVry$>V5-RCR5)q(x@)Opzb0>4=J$JD;X_+BXZb^joGyGEY@AbPsr81jIeAB-!QB6F2vRa~AdH8YJOH~&SUoUx?>Lt7`zb47W>Q>=( z{+4CGsD=yg%x7LwqjdcEI}c;F-2Ejr&hSOx+kl@W{MQL{Kf!Kn_Z4cY34Z~6HhA70 zV}3`#{+``es>ci;0pAb&V#8NNesAx-N?CXy63}r_ zACyZ)!U%L07=9~D$U&b!Oww->#-s0porFz7KAPqCW?>GR<@aV`3A*7q=#A{ZMfe}O z9e5geBlR`R|ENWVBad|E)ra#f$p?DulEr`OV`0>%Uz{ zw797MPT`vl@8Y}QAcrM} zZx+-?uBU{lXj;F!o)zX;T*LL8u*~AmTrUd8Ep~RjDqOa>qicz9yE9pTzR=_ne8u2e zDg<<4z6ba7ey%r#;I3@@iNSEbT<;1KEDmuk6MnJS+4X@?Y;m0HBjI3omVPo#UoM=o zINSB9@X}&u*B64(dshe%xemZkq_Cwac8ERxxm$oi%gGuK5A^B06yu9ZddwK0ibyarF}11gJc&`*v+ z`w`rOI#>AQF8r1!*poV6Xq7Dp4F`N6MooDL$ zafQX*27DxLMaOJ}+rfa3#a4aD{+QQ)9nqcH*bn#L=mB*^KlBN30yq@i1M)Xq_*9HV z`-9)Od@80;=NVovV071jx?(QIQ|R(_#R=#sbosjC3|xLLUH&t15ypLJ`}#9+B{~l5 zBzz`rpw1Uo!SbUA)DtuNlKp4rvwpq$;&_WE3}_%Oq`qmJK#!-PxSE-^#|j2C6n9XY z?XiZU9pjf^`GpWyT*&%wio`1iG!j3tc;kS^Vh?IF|C)$y%*IFeNd4AC^hG;^orEUh zQ1lWSZz{&1x6pV~aX5MvoZn2bnV5wx20Oto6OTb}TMxa91DwUl=%e5x;2+SeJT?~> zpzA{U-0jj_T!CigvxT@0y`Y%HTZmiGto*kWccL4>_8oLTfTfiTd|tO^1u#a0JWKaUBs~WoXc!HIYOUz#R+H)t`}A4BF;eD zY5Z$(F8Tsk6}}e9EC=NNegK|_s}Afcu15a>t_dzecY}6Prr1p^MtgysV49r$=#BHB zmu+Bo@fdnHxFPrtbSSjDGsPa_RrCn3lh8xFMQzqUJ;jIAth_o8>?x-7C;OKx94Ldg z6!rRu0j|s`>mv|mM4(>}*iY*6{ z?eC-Oa}xZ;F4T5$$W8bPeqey;Z}I4Xf#Ph7rwj}hFIzlkV2Idf5LusHtnxR!y&D)R z##p?5V3$@{BNvvgY z`M^~13yY;eBg76CR~?io_OZC$pls2PI$x*;`~T&j95K@3?t{J)$KdkAAb&gujS;6? z95`sK*v*~o4|yJJC`=IhTO2iLlDG{0U@*L$9W+(kU~$f%X<}{oe^Q<%hQerwLHS}7 zb-u7`E417YJFra_D9VTJ9(1ycH3vr-Y%Es zh&`!ujW59PdzE5;j8Dvfuad>Nq6fxjf@9^mVj#wKD4&l9%@e~hUIjd&!aOma+Pwbe zi)qx~)AsX+73PZtxIBAaT_kS$&+?1J?bPggeKBZ}c#+y}Tet__GPo@fucJM$FyBR& zU1t7=8T;>+z(WN&Ue>=?$!)1vnc6O}{=8+P6E*A4tLnB)Y=9>Hc~#w3h%Kqj{97fC zr8bXml{l4}?e8aUtHcG=tbNnK?I&>qx~N1Dn!5c@+>Y*d1ZKSeAEk!#2k~~`^WJ2C zS$XLJzDsSEm;Z_XP@CKTpIF<6EYG&@3d=9I*hyF?o@EwZKzq$mSTB}R+ilTM-fPMm z#4_r=71P10ut9u+@gLif_|M{NjQ;{wg`Y*um+qf!0qnoO+b?2e^cr+^^aI#lx%7)z zAHC>*q`v+|Y)YMLYzD*gjo6x5ST+^Dj&<88Mxhg?!SkHkW^pEZ2gI}8wuxkPK3s3u z{@N}UQJcrJT`a~pJD%<0evGr@*&!aoI6Iyl;vdvze(n^nQnUP=o0s{Q`^c5fx~6zH8s@6)U~xFPLe6?JT#wVk=y&jx1j$vQ?!d=Xz4GK-Y$}MF}Xi`JRtD{Vk$Zw z>?9lzM^Urm@7wR7IEC8m&pRysKy5czf8}9uHg&%6=UI3w=yq7F5=ho>=I3#-CN*1M z{d&j6#?<-3<&7}v$nAGA3Vj6X?_=P{#d+h@k;mS;%$r9g3B%5=Key|g5Pb=?*3A&VeudCZ^UNQdu5UzcibguCUw5B z8uI;(yC$tgfA*GGm+a_0G;Tj&BBkEEO^1`_39tn=leL&wmZ68#O!s?t^Pc zWV9r?|4fJbao}JlX#ulP4)t0ncrmrvK6R2-S?nk{Nk3bhZVvL=XN#`ZSzu&)nZ; zQgdcQ9!svTW>Q=9XJB}qkh-ETeGjvS4tAElMLz&%g2`8&=KhO9bIFIAZ7+9lb7?2F zc|Eq44p7@|ha*XS+gkdaI@h=kb`)Am=P}OmyNy(WZa$kV-$uHP%eMtP!q}fj7_S25 zAX98By})=Ku#?bMk|OBw8h=8)JZ*40sRH^TcrLgq+BHrPRt#=0IibD5w_CNB8ldN0 zgs;{IcaWN)*Mf_{ZJ4qDuA|h2njJsPMJDye^^{hj>mL(@dLBKc4b*vt^egmNfVZ;rBAJctEAX%AQo6oxq+;}m zWEdUk@r|?ty>bEc-+J_w4x&lD)7!&UIz?^A_LZAdLe1J&ZXWK^eT=jA)nMr*HEUn_ zcnp@5C~`c725DdUcz8;V)VV@uxZe-;@Rp*`WpKZb^ze}!W61Kk!g=sek3i`aIv+gT zV~8|9mc<)G`gD&VsT9f?)K6F+4V7vSBR1=!p;7~CcD=%Hg-D6icH5feBtJu?^#8;| zr5Vgd>39+kljc(A8jry68|Tt8YF0i+dxT3uJlURkz9Oa8)MJgU9m(|+DRo7&^A{G4nn2cPw{3;% zafL^m_Lhe_Vl=Kd#2LDVdN{Mp-QPOO|F*+ilOB$^N8B z^D+G!@HX&rjL&XF_9s;;qAsA%@4GxwrP_%sf63QgCplpWDFno>YxGpT75&JoBV6)CI!!=YnAK93vS}Z;<|u zWa{swt_)L zJts=Ppznekdrp$Jp?xO^u)mX}%jg7fur^6*KZ33Qdm5iCB~lj(&EWa3x#wi*1p4|m z7=HyWvABol6lrEUNna>Df_Q(=X_An^)<-Z}P{;>Eu&z~e;WRf|(ujd+xeEmx9hj$ObsCUn`(%)=(+P{7l{Fd76FIX!XBgyi1aXR#iltA1E z9kiYt?>Z@%I#&pJL+bB!Qar}l_=fe;cWBZ-<|u5C7F&GF^JnQ5b)G=h|H!jQS_9Vs zDW9`T;A<4mO;QncuJH6VJfDC+hkEf{eYjQXPR;f&+-0lO-(s8BHp$20>R!J|yU^sT z7*W_Eoj`B)C+~Z9NJ0)-zum^}Z#yJ|I@e(Lw;fUyjFWzbhF&|Rnix+4Hv`whxD%AW zue^3iO)%aB+yVR*##_+ywOi_h@t$BOVYk!^9;Q*K@dr4Ojh`^{mg3$=MY z9+vu0oA-yq($Cap`93TaQ?vc^_c|=~`i`uh^}m%%N2LDLxyI@}q&ysvJTXrC!X#|Vo@gJAIr)I|=?)AG=fN^&GC#1#H z?D*rnPDnqY$^AFZ>y)&K+C2U<(s^q0c+W`9^T__0$9qO#}`3aPsM+~F0G>{5p5I&2Y-;m*x+N{P*ipD8 z{bX^H%WY|+#meQf4#Hn8x7;xEM9a2-rsoFHq)!b|9XGIO=eS)ed=%@f&FvvsVkqg zlxO%RNxot+jGvcpTI}rDKz?X(l1oEb8Amd}EdPz=%G6_xHXBHLsEJ%1{qJLPzi1-Y zp=Q@dEuSWGa~8+`p=NShi{a}6xvRxVF3xgai=7=?$b+fP?YEKxsm<%}D>;(dy#CtA zvDDDN-9`}V`m~Yrs0*l@__UL!qe*+Dl}~$l7qwYGbdnER+{vet+)? zQ|B4veOhmyE^;pxH^}?6eqdLO2W*1xL43ZJJuw~y_5lyUc;r-Q@B4I>BQTx~4hJVP z3)5ivIG=8EKDAkY_K=rRk2P3(sfWCVIuF}RJ>*RoXXD*^%G)u{#=G^D?JSPxqnCVw z#RV^TpONCzORg}19PdrqKF#*&BiE)j>(f4R18OtB`pE6x^EWI#jwkFR4`6YFjVJ6Q zd!y$-dm~fqD+i(1f}MoEauhm9fzhTuE^;C|9XuJFfo9|1`pLOyHvX-jJQ2;tEB2RX zpxJoE{_;F(bNrjDyp9>izq!iW+47h_uJV419R*kUxW!2>1LX4-J39`NuTz`l)m<*L z80G+%%c)uUo#Epl_nb)b+iqjy!M$Y|A`5?Jf3debnA*&5Z`q&OC?)Toe7xmQ^egaE za2z$;KJ?hhQ!$6HupDBzDLdSXNymuEKVZ% zVYiX-nY(?0WE*v^LB?ku0Dp*aR^Ef)0(>02 zfZE)@2zj~1jzWaI&f+AONO`Np&W_RY9%{3^#mYyi&H8be{0FsJKPJc*Ez84*HTk+_ zdFT(6?^*2Zm?%H7ILRehers`S#}wH%nVcVUdue$8+4}+eJ}g~sOyg#Lr^_uZ%h#`$ zE)S=++iYE-%NR@#UJ}-%V#XE?>ka1r-t!?g)m;oceI={ zh3sFxaCj&gPns)Fptg%-Jn5IddGZeyck%sR{?X!ozT@S!7JK_nlFy>YKs$9wziIL< ziz9re%l}%O;5$QBpk9aaE0X0ieGBAj)82W!?+i}QVF%V`!b@SQKuw0ODiLV2Ub z8+?D1cUipMcc~mVoveRvMSnZIKk;25|3qz;uNCso7CQB!1dw) z%der%GhQEKt_JN;Qh$=?ry2ux%Q+TT_uC_%vACY!Ubz>vOQF33eJN!9`(=OX0-<>n z`F>}=JQ96Bg4ixEqqd8rzp0tu0lDrEbbIuBnl64vs^!^LA^n)SMvQ{Kfg<|3$>a5mt=R0zdjAK3_v^I+ekJmFi%0rhle^7k%aiou{cgy?7Ekvpl}A}T$M2>*ojO+_ z%P;l2BbU#4m;M*OGP(L(=5cU8`pxgY+|uHGeh=hev~(Bh3%`f*c#CiPJ(YVxxgq;c z-ZQEGuVo*LEBgydBHCvud=KLJd5;$KO5 zgMQ@&;}!fXD-9N~^j@%k?*5KSz(VH1a6J$8uco9}9PR&+QfU#3cY*dxlK;ob5cJ$c zm<7ncrZU;$asE!q{KahfVb@?52>(x%^FK0w0`>Mv|GLWG7H{zXOnHuO`4-wE{`HkX zOW5+?fKT{0R8~>v3S@mH{!NtmkT2wVBK!ZyzqvAd8S_W5{tfpJ8ferOGN2XZ2f^fG*0X7S{;) zTIo#9($@>&gTN;+9stK55im%hv!=lEr#lM5umCsZ_tj+iu|hO#|GL9qrHtCF-#wH8 zYe>9M=syhJcL#VVlc~-3#bmA^^0&{S{aF|v7vQP9dyXf1dHpujG5YcqM8bae+{p1N{>L@yd2;^Zu5g?5AeqNuj-| zoU+892P7z^)NFjTC?uNObGQS?n<>8Yy_El$=EvIr9#_fnz70q=)2n3mRXs38X}g~6 zpWU_q>fg$NsY*BMJR^nff2yKwAaV2lo2oRS9xIUhS+&44#T8u+->+2*9HAsy;@dpZ zm5G-4HjfNt8TB=B99$3Z1+?-rb)G=>&k?*2y~YmDKY>}wDQ3g{3Hg3HTPa0{qMxG4 z`>48s*~%O0v4$Df;JlObkp;`gxnwIJP@C8DNab^8qw7Sn{ZWcH`U`NmG+GHl=fnP} zaD`=~)4(<59Ayl(c|LQLWz;Oc8V2Sly?!Cv&lN5P!}yiJTxBx)AzUBXZr>^EHj+5I zpSB4ctL&mS@26vxgDg(lC*2@^o|^UNe;YVXd5&>5{&lwK=|jg5pDMj?bT<_)(k3J5d=*&5qYQaH5h-ZN3kf ztc*sp_fwOV$!Jo4ZuFR}%t4dq*Py`3$_ljWSd#yfm5u03U-Eunva$=^7SkW2Huq<; zQbKL!|77L-rg!-p7C1$@OKs-w6y+Zlr}>)zabYuA9^aP)PF3ns+il~Zyw{YcDUH#4 z+cCGq<=Oa;X^JF`rYTX>W_xbBl4!A`FkQ*8ILRen$+Otmu|SzZ&5pOV z;}6O#YIeL!U1ljiQk(6$Im&WNdYC~(S<7rRJV(BNoTF?)v+p10C_B(y{($>Q;9SLy z9svFx{5zVBC!437L$mQ@^OO=a8&5W0xs7Jy$>uAM(4C>(Qd3@_yg&zmRbhc5Z6WzT z)|j(X5GDsMR4Sm?gJ*!NqEoKIEN_8}6esjF@FH*n^mFJhTM@WeX@>p~;%mTd&|Tqq zb7SC-N*8n(cpLZ|X6)Zuq70xm%hwXci`s7c`6%>f2QE>Dplz_dOmT@4PtDH95r~id zPx__GR9wD~H!0ssl|t%V!wc*vEL9d^oIT$yQ&wV}J>M-;Hc(^v7M3e^i_ZnFRLU&A z5x83Ey_Mvrx&LdFjQ5;N&DK}H-Wp{(b*^v+>eG9HYn2VucG2}2>~G*YB@XTjq`qpI z3Ew9S*{Br%#=HsQFz={x(Bcn=Y*P9cvv?BRx7}SfD`n^|;F?1=D`Xa8vc3b*K5X7} zi*g3t3hHa(20KU`zK@6HMPZB56TKYnWOavZQKF~|g;vncXgp-Aa+x|`=$QoHa}Oz2 z1SmJ8J@Yf%m%kaZL+P`N`8e2b$Udb2-2i0E6&MW^=@3WEq$zQ-PF@B|- zobL;YyocoXK3h3B&gFtqiQ1eG=%P{$<8`2X#JOBlKA|@E?~?L4HQT>!LoO*jFg+Px zwr|K)#f3W8m;^oy9*l9;Kl-QQk8##N`lk{`y|-c&XL7xkC~+9C1$GollvHZ7d|XpT zQrm5lY5U=t@;xrUg0?TNDN`-WpB!>sSwzkDzqR9E%1;)LfZ&3pT>PZi1Ds)-zD)C%-CP_Kq;bT&oeKFJXH2zoITGxQhujq&nHsQ zBjr4rJfBEGkCjqfo;~k8QOc+b3?16vQ!71D9;0tVd!P7U^hLC|j~ritaRhBpo9&$^ z%IDPP_{AqmH)`{F<%yC`ZI-VmN)EMIUp`T$QM3M|NU?31H_V3-^sn;D5^odqS}EC2&kyZC>KY`fWfp%MB&*LY9u%ah3bac} zeM;8vA7oSGERGCvP}40=3i?1DV{vxShw5~T#|3?)3J2b;uOO(VTFK%CK~8E7G#g)4 zN9}9zs-RERI5e3rW_?gyHQnN0gX*gd4zl%=c-NptYDw~(g ze_L!1>Y+ZjxK2Qid-dI?rP{GG)c z<-+rDaIo6c;=te#wJ%zS?>!@ehpJ%~Ck2P8Td4Ddw>hN#j8Mt1*pU1ft->tIL6Pcd z^xqnBlzN%EK)3<*Rjd-N-a(I}j!~bYouU4URbo~71X*8!upa8KSS3z%q|O%#p}y#* z3{z`So7Z!K+JKrpe+x>2O2);K`jFLk$?7Jw5>4v2WOX~5wBI@^$?AS)+CM_#$Ee2` zQ~n~~n-eq^Y|DY8GTep~06p$1U1 z=hK|vEcHCKS)XO8CDi8jveZ}9=K8W!<@CGtO@j2DsqMB0&=0!NBU|l-j#NoM<)y{se2r2kqrY4Zvy}&rQsSgqExL%e8=csqlkEnCi=hSBYe5ZbJhUAC2 zzu&1fsM+!S6#Si-d7q?e=ji%qd-m4gNooy??*>m+(=C1!JViaqEG&ZS;(72?wd6cW zpDXm+0^@zbju)5|6t3F5HgY*qT z7OD*{vh|VgZJUKGQFozT3t;|+kd#+5 z_J~W!dbKW#3;&A}1h}BJ~W$NqZt0;+3wD z?XmVnX2@pM2hHyP+tf5Pxt}M8{Ho?!oEK88ZlpHP*G~0!W}&MN^J#_bRL@hJ$G1x@ zp=QT7HDs3>cJmJ)rzJ`0Z24a}qgUgTZq>_o-{pGiiLk`W(HC#`mi! zC1iQKjePGnJH)O|L9_1%52!29qoI5|3J2AlXi|O`g&a~3pj(1hfzP5zd0rH9SiOSI zqw&M)J!bK}}^guM3-=wB|R`q7a_WM~ioSNOAwuStm4#zmVADvTksM-B! zSI9Ya0-D^9c7$)p2MxUbR%6hGyeaOVwFuHa@jf zU4&-iQ%lvA%s9VGsk(vMydRXRTd51_d^3ML{H5-*_)*ABwb~t)|71Rz-=y1WI`vJF zjc2{9jTR_DcCx;gY9-ijQhvI` zk^O(A*0A`ip>Nc>_emU{*ABxh+e1aI(nIFXIZ!_jRkTLvf$iZ}X@+XrSJXE}HeS`x z`lH$S-wIk7b*}KhAAYT7sDri@<7~XHqju2ZRPPV9W{=4BZi;NY@JCt>nvM6Zp&k5( z?T=Rw)aOHMYmSeJb7AZ)dB0p&OGlq+3-5o2*3*=762B?3@xS%8?$q!;_7LfBtFMJp z=LyFke@70juchPiY&>uS?V-hsyc=obpRo0j_*(BK+CelM|Ld&Hf6C%)d~pk{?sH}~ z9{5YG{|n+=7@G_I%|qL0IcT!JsYBapNB?DUmAZp=`z7=3U})bB?W`?+MVx2!x5Ie5 zpYE}Pf80~+k7nbKdut`sX8qVl>j>*5$A42M zac$AKAI1D`Nw3ubRR7kU8e>af89rmLQer7gr9LqM4zh& z?q9FR$-jY2f9GpfN?e-=mKpU#?#?C$`luByD>f% z>?ADI4r4s}D-vI%T}G>`neU@}ErIbMVT<5rKFRUfZR~k*k@g|A+1^^D)w0-8Sftgr zILT$PM&@CC*WOy9wWBuMTg$ZW7K_3PtuHmpuZG|u7Iz9;rA?x?+y0nH+Fxt60_t4j z0oYMktIfxF9+bbD@;Yr9#tXr!uufZxao5=-{d#Q^#{I!C|B;}LZI8#Ft{GwAv^ zXuo58dIU-Tvvv;SWF7}c;b*OcdaOalWyAbN+HLepu%qyc_6S{-#y4s&(4W!xMoofw z6(PTj4=cj2M}`$?70{o8UBFeD@qNN3tu}SOu+ANxN5VE~v!R^4dmi4THGuDG;mV`S zM?yRW`jN=>*yudmufn!yc_fY!1)i`s%?Pnkn>H(?@b8%O{-Cfn)bg=4=dI_ zr#7EwiZy2zx4Faf%shyBowL#P@e^-QU*CMFR`G0q6@zm!0zdN-N7$@&}r zX@8)d!5@JCME3&M3E!{XLi>Q5fFGhWuaWx0u02Oj2g7_)npm0UuhDH3jL!-`pxMxF z;Icsnv=7lKI|ZRj_(81}ItTnMxIVh$L9+fsT2u5uu#<2|YfWv=uXR|PkMTt@B)^Vm z%g}4U@I0ukMY}-$xrZOsHle-2KHwe9czqqy4pOu88x(#_Yxcpr@)8+-T+6XIA^fEF z3w54Q9iE3Kd7jpeusF`ga#}l$X5X)$)-IuMEr9t+!cS{AsLlS$)7m3y_PjVU{EYS% z<@ch920(4`v^^*7srI3(>|lNV}I%etsAxZym&z?WXlU5!v0PTzo2cP zHp|~d?G=j~t)cxsEBvBXp$gkx=n>``=vIF*H$*Qw#M~PF(MIMTX!URALDXZ7ntt$W zez1NYbSv;ua0q&aFSI|yFKN-}<=_qAWb{#}|7yyYwM=vgSQRd7dFaN2N&Jd73H>ct z6|QJA(GfI$Rhy4ar}3-Wa&$Re|DW1gbY&XSR?uBCiP%bPIklpyR3|4SQKl{nW}4)?2a z>9*#L-U4QS5H{~l;9Eb%|W zA86gE_layiorjoTY`o)@@ONh8`yOjE=<;@3O*lWd!k=h!sdJ4!P(L+k{6t%V_5uG5 z@zvCM!hY(fS`o9chaTTEty^_^K8+N(KV^!~v_9x@U?<_3=7ugg2jd&VpKHG87vLA* zq0Cr6z0hK)&EtQerBJi;HN)qHwwD^d&-aJ%U@ot;Bj}7o<|}B@A4B3d(d7P1{D3-F zaD(erhyQ52(%W$6jk6Q;#)fU4rqD5wEpR(f;{5pT4X z=yl+l;11|jo8eb>Bi?G=(Z%4;!7j{r{DSUIZ63d%`%$ywuU}8lP#^eA-cTKGMZ2nW4=EfyzEiTFV8fhPUGs^F+cQ=9FTD*E@#f{P5}%Ok4jbEwVZ zucrS<&5nO;L^a(`ZMTUj@N1qCHT2`?g0ZCjsGapmvU?-ujo`TLf zOyZyE+2}$r%x|uLk6wP6#Ovu((8XXUp`Kod9!}%+^@ZrkG+tj{iEh)3%xBj?Uytqq zE&^{wFU}+D|6JdN-UfCOKGzSSThscYp?(tGm(~{z^^0g$pET01qgj2@NWX`^1J`q= z*jRszegk$A8tbp9&GPewu6#oBpOv2-5nt$MsLl6P&iZ9E`ySX?FGaKWSI&AF`g{xW z{?S=~fo|B6S*t_Ki|r}KtD<*=Lw`zyvtAcH5quo%j9vyl1MbL7`yJlo3eFr)no`-5i zcGeG5k2QXU{mT@)=%>(o!A?RK{SumukNaA`fo9|5zShgoY)%s8KDZ#{+D%)j3H&(!Andh5m1Y<*w%>#g5q>1}gj~r|q|!Wd71Vx-a@Ay?*=Xk<{k>vX4HB+T30reLOYWp4_jG-mU>#AA4Wy zqW40x{umeC4b8Uiq7OlD*a-cxE-rd3wYh#5eK@sQUS0GtxIB5@|1z?levFwu?{|po zuRozS%VU52HO9&N%U%$#^f}!>dcPbLIY{qrabTpU-rwTzNN;_l#qp7T`eciPMoGaWDU zWn`Rwg_=G8tc)C{ms8t?`8nkGCgb&)jmZA&6WH%ZCh4ueAkG!Y_buxpQ}lz>=KKG2 z{VcVa|LOV_YL@@IBGdIUYP+pf33-0V&|jeIptUCS_-z%?Rna-e$oS3-{c~#bcrtWv zYIA!TdJr|+-ZIY&J(}9wzbrlNKg(z7qb$oGh|JP|rZ(pz8>R0+lkzgS-zfbcb*}L3 zc;eA|R8z9Qc{pE0j-E)JD^!H1k5iF3dJ%PjP;(r4AN0Lmp&30sTHbC%j?-&Wo8@hs z{u#A-eB<=K)aLPx(>SMC} zM06{30h;_y6NxWCv-#kr=xeCW{FtJ5Yfg^GJfBnafz;;r5mWR4YW8~{^`oZhyDV-N zHBCQHoh!7ni9(yG>AKK@QYt9~3oHKWMRERH6RR;;^XM zdaqXRmQReDr^i{G6}3>`W%2l^AN5-n&xl&88(*^YgJ(kjUeq$ZB{ht1TP_I8qgLog zsq<+6=h~=Mdihsm`CMVcS?G_i_miH|n)#+b^k+x?PoGZB?$4W}*60tZ^M(2kp#Lmt ztsdWoEN}LItkWk`=L$tCv`?be>C36j^0!{!K+VeE*{Jn;P+PjcHuinaMm>@`*I@I< zZPXJn&g%0bJssoD5#;&3NYBMMYhP{Br=nT?zDb`)oo8&K?WaxpQj8}IgWm&<+N7_h z&NW7X?|_S#g*15Y9yoZj-k=@bKWr~;*1x1??WKoNTl8)iXYHk}x+^tn&p(UWs(YbH zd;VF}uli7Gvpg2-qp8jIQn9{;+RU$FeHS&$FXzBweR6xUKLs#1GPG}^x9hX0&G#ca z^hMO>`;i^`Dvaa&eEJ5Apgtbsth^l5^D)lK*CBll#`i#Z+vagdUqZdNA}f!F^$pbQ z_XsOTAJ%JkWapFoKHqQ^ax1uXUym|ERdhJf{mTw<@QctnCd-N&&7&Y$? z)h|)A^6C<`tSQnT{v7JXKKizemOE&7~ZsWaK0Sw1i5KT_NAdb*&mqTXA9 z9p43gHMN<)7xay|Jj>q;`mbn~pBMD))Mov0LEryg{2+@Pfxp0b^5_ft33N0#3Vh)| z=`ZTnsM+_uY0(#TqYK%8bN!ceM~h*6k6zQ_B$vy2eT$tPujgQ{`flkFmbfU~(c>+41dp&d$>pw|Yq7IqnLdfyT;F~D z2WnPdEOmLPFQPWT$NNWLYDq5&|LChNb_5q$oaFLY-(j({;}iWLwYj}#`YCF2doT3M z)aLeH>Lt|X`-YeL2Vb-DOXkTP9sNpgPd(OP?;l?4-O%j)!)v`Sn!JA~m)_`ZX!8ES zQFx>KG2`>iTYV@s+dolwtH)3m(EHshkGFafwcS>(V9`j;^LJ8(*La+&(WK~j^NJS$nluJ_hT4+(X4;KFx;rk`zb!&pkq@~eJ5!ziL=?T?~pn;~?k+o#V@zeQIt7F)bOy0THJ2aAWs z!T6u(Dn<>9k4JxKq*Js0fIp(E8D$v1u^WC*A^KyZT2GSRY|nmd)TTC%=VPNiv+yY_ zRRqf?Q=9cm4I|s)$I&&68Ps+gJ0G=-x#(f^eAF_QP@C(oWx#4-(nPkt6Ow7WI5UKd z|E`U3yEqN}BKi~V@4-q;-S^Ue#^WS?#hCisBz^UmhTJTD)A!Oh<8hL{QA~4glK#t> zR@@|g_n5ZtrEkaMB)v;a2X2zyJ*G1^+kW@=()ZwTl0G=57dJ^C8Pl7arSJ1z`o26) z(x=4q<0k2|V)}El^aI~ZKZwUk`tdRD+${ZIZjydljMsbVy?LCZFO2c!Cg~T%1aPzM zhrE}5D36o$|BDIZCh0fEL~^tAaqp!c#^WUYo|pt~lKyy1A~#Dv{Jr!kJWkS=#H4YP z^tWP0aI@pjd@p?#kCXJ}F(bK2`j;^|+${a~@1-Bh<0QQiJD!`Q{~&fEH{1WI@1>u{ z<0QSKkk3uhzlff}&9?u;d+7^#oTZ=5&C<`|X6fg@mwo|{lk~M?7jcvH^{@P;zEA8rZkGP%_tO8u<0QRDY!Np} z9}v5lo2CEN*k`H#b~OCW_^6i%HQHE%J&zX~pE3)gEDHM@78{MJ&FArA!=0Ml4`O1A zjS!6Ahx_jvm+eL#n7q&2VZ>s*Ru<_G+G!+WJQms)NwGVPV)PAo{!WYCWgMk0 z6wZOOVs{%~_9pvRD4d7!r8OM(8hy~DeUcZu&+xH$Qmox5uy|(dL8BNwVk2D7u}6%1 z7O#jsX1qmTng#FQV^0_rzhT?6L;h`!J!LdTCya(!;q)^`A9Sw_;y;Xq=+^tdvFD8< zv<^NLd(k*boi9Y~g!zqPuNbYqW$RaAobZX*t40^}v%iV|G+fcC)Fp-=IupjTosGR_ z#GyBQ2;==?ON|`#LD>I$u{VvQ)aL#BwsE=-+umYL6duRkHf~X~`}aD}yT)^irMNO9 zv@coyChfm+hdGMuCmD(Kd@zQXjX7iKuk9%o! zq0XoC@ehuBWw=wb_L5)RTVpt;|KK#tU(-Oa<)Yd1m1vvI(&PS#wx6gAggdc<5E3Wa zj-tC(6ouG0*>;V(P`Kp<<3r;V+ihyQz{whQcfs$d(3adN%n#8tG-w0K-x zCEJf^a(zsTbFi(WHn&&Vwwc=8US->!_u?lp{SU`s{7YPA8yt+Kee?mEwU1i#ufjbo z1jfV0ea!tmcthN$@1?KH799;q_6f>3vQBre_ShW zw*5BLa6VM>eOF@twx%5dRe1kxF?;{h*7grQes(>bjB9HXT}8+N7%xuKx3g7dwz2f> zY*o-KeLGuSYL?&UQtei+x$c8=Pt zuRGaFsSAXBMHHUKb+R=ZK=#i(zn$^;nNLWj+4)NG`I_es$*(tYJ-AtZ^?5ISUmhp< zo#NAvo24Jf&C+|?Qt1Ae`|D-P{m=e+*`~ke+3$JrdtU#Zx4h?_@A>R|zHV`)VP3XJ z%=COz9p-I&L7i)m^HB*b4J7$#_D}oR8c>_Z<7;!KHuKxp*7-g6vRLltYxAJqC%pav z?w7;-ZOf<&g?sQk^7*g;+X?g(=nw5SEXZaIBHJ$%x`O)-3%2#4Hm}zZTikn|PHpZ_ zh;24YPv?7b9~NR;Y_b2ap|)aln~Lyz?ZZNCr~Z>Z)K>bQo4K+5X%GEj39x(uwV5B` zwsF+v_QP$n-*XAIx&Prd#htA0-SU;*b2aLB%eQ|o4v8)GQ8+Juq;9mXbSBYQAo8N z^&;tWg?Zjk9}Y{k6??z)@nLDU>3+-~+=cHshGp88`7=+w2j3G6%eE;2%#EQxzH)J2(LLI(`XvRmjgd@k_aH?I2#k{dO*V?;8IT_a`v^Vq^Ro?r+QC_ebK_ zaVLTg#s9)xGg}Z&#&6{A)DFHEk1yih1LwCaej9g8AbCFcm3!MOXivuf#(fCdKX2l9 zaF2Nj+||G}68_>| zmjvU>5^i&E9wG=^6Yg*?f&JT>P{!R8`r{5JJm78%&np)a9&>LiCNAfGYKQM-6P|F- zg7%}7_?CNT0$lHjMg>-$3+mPkhVQi!9k>r^BKQOD38P573b$KFc)yugm0N}U?w66}=9ftt!hIaJ7oHTty#dk>OB%{O2J$~O zDU>@3%Kwz4DDKW7@cun%827v#aQ!4DaDNBhpER8N5!A02l16Y}hx~b#l*?VV9@>Y= zpRB%5vuJa;&h$1jFo*oIj;9cUh1i#HW0~ zeG={$X(?5>-Qaj~Q$FN=4()@2lw9C$C){TS!~C8ppK<@<4BzLb zG~j*&*W-zlhTPGR{&GrV?k;dYxt-FK+X43fMM?|q-+zYoYidjGWso0LQ(JSlhVtN) z+J?J2`192E+;3ogtx`L38xZf1+KKyLdjIUk{R5o8eyQELpB2J*k<{MY5pX^eQu}a! z5)b!>R2S~skY8g``*BZ)_S}rr0o+gig!^Br8~0V%zcs0z+@0b0ic-C})1W<6oa)UT zUk2^NR6p(?p*}564d9*&<^51<5cl#|&|jJw!hPupyq`-A<-Q2*m%FK9+(D2(k5ePK zBj9?zo*K*jBpJ>}S{(N|@JDIM+&?sh@|%{<-58GVtF&zH=x9=(kL2D5?e$J+qquuR z{(qa6!@Uxg_e{&bmk5ApQ0DcncF6Vvj!=YT!a ze&Bus{ReZ>W^p%#@|v4GoBKE%&(gHH+(B^ttWKN99R~H;wzP%Z=}@2TPFuuXh9(w1-^FNW{g)0T4g42Jeh+A?lw0rYRDt>CUf{S)_OXs?9VUc)_PIkf-N z)^UFY`5j(+J@+xVUc+nu%)QVD+Cym@xz$5Z@r)?q{)Bonci~8w-*&`S?hDW!sXSsE zcLk`QJ|D4zTY&nt^@u&(KSBN3W5j;$Y4ALgn|zqtXAImgMjYjy0r@|4#0l=h`{8?= z5huCF!urxioaVkw<7c^-eh>5Gk07%;u=?~TxE}IHT;vX!1LuFlCGMWE{W&A9a*w0& zYuwXdeRD>Xa(_?D_bu)_w0z&@&V%yZdc<9Bms3!lM*Piv64GxR@sQgIwzqKv`IQs4 zzbVw^+&@A7|2E<&ci49LJ*yEfxaUIoJv-tx_a{(4TpJ-&GS|1@E9g%hA#zt=O)PQG zxew!QN66fppuPC-2#vcxv`6%GgL^vEhj&I)9RI{*2ks2mzv}6gxtj%( z`%M+@j*z}ydR1ZkVU)wx^4{`5+(!5uak+Q;d&xwTR7em=bpcMcri zoDp@oN5k>OrPt@)v;*po^v}7oA-~3?H|DO`4u0=3y$SaRAksgp}u*W{w?=RNM9+VFZV_$&yUmlal63&+)H=m9-jlxBN+p@7d{~ILEH(j{rVYh z+`+KDrWx+s>)?F0&+z7M2IZk=h95WiUGqU10o>Ym&|i=d!u@nDJilgyaZiW#TSi6% z_ic!0WJGg!3y1k}GUB*3*#69n1n#*|UoXo@=9ZwoUXwAL`&Jwd&J0`$UU(4NYi!F{ES#0$AQL4Dsdb2fJ~uy5u=of9{3+c%Q_m|wUJ$dA5>8@Zj~cr#OrxQ~{R=fzFjZJ@rh`VQ0&Ry)A{ zewX=f`A)?!e_`epp57U*&;2cbeWmy}h`T?&rQddl7KODHc{&$y%G;CyGjs#F5~&F1@;Sy^u?eHBV=oZ1V&-`$TLlt}vDD>yVpkDLeXgRBY;0n9?oA{L*E-n|C; zOX4dytU+&`$$SNU0Ll-EE8%qg0_hLm4eM)$CjI5dvm6{cquJEb<*!D`nFSBYntU{Cia3lK@hfQcw z{yxaA<8TyB`p2thf9g;-lBFm8ez#|MQ~k9uA|>r2lzQc29@tXwTtLezJQx^p9cb zN&oY%?0ydIljInPWp)$=^( zm?xhQpFt#zYw;;Ul6(5NObO{iH=2?ZMKd+G=GxR~T!xfO`gB7PilQM&iV%v@)h$Vg zNc3B4ueHv3&Y5{?`1t;Qzdyd?^;o_4T5IpM?|ZMk&pF+~cQZ!+^YLA-4Hq#+|MTY2 z-NTa^qyPDv(btF9#^Ikv_XuxijQ;3-qi+oFV~qajr0kyI8H33l^zR;$-6y=3@m#E* z?0#W2g!t%>J|=rW_$0>Ye?Bq$mT(8g=zm6h4P*2_Bks=_{m+O;F(&`>E#U&j=x;tX z`_}L!w^4fNUp_B8D?E@f`j;;R{2*iWFAoY03D0MY{^iq$-4x{mIEW4~OS7Mt^bBoT=e$jL~1* zBIogNhvB4;{@^ono(x~Z82!N=a{d$U#~A&=7w60fk7A7HcUR}k3f~up`wp2Cp2GNn z8SuPC&eP%f8ds`&0r$yyCcJzErHB6HK{?Nc|6q*%48O(ck-d&RgMc7^8o8XU>Z7?~Lz+{`^zU z+wj2xN)P?H`*T)?(-?1u^cs$NCwvTJ^yeNr=Dl!R#^}%8ne%@5GREl7J#x$k;qHvl zpL@cX55uDvqd)hwF&~A?8KXb9?U;|lQyHT_cW2JJ@I1!o&+RbglklsI(Vu(ynDyaR zjM1Na+L+J6n;4@%x7(PF;gnI7AN1$;8nY?fnz8By^*Lrs_)5m;&mA#lTX-Pj>6@Yc z#(W;0%NYH;6US^1Z)1%9-HBs%gqz+?@uNTYkuf{NofxD4cJ`Pb!dZ;b|NG*Y-Qfor zf0F_C8^`<{ewFdzFg~st^GkRQqmfe>qd)hev38^rWAx|#d#n=~ z%lH?V&w7lFMN|&yqrY?C=))p0#^~=HJofO&m5kBfIeP4okwuKr-&sEP=*X#KNFV*3 z_m4d`at>qk|4tp-Jd(+n{J$+C(-@=wcgEP3k=2aRpZo0CR*{sk6d(G7Um1H+q%&jm z2d^A^a%4DT^zW`4ds<`xWAyKC9or_di81${78xm*;kl%wdfF)ys3Qh%92f3(~tf zw@YLnV?1vkkb6z!_Ik=rdYK;z1k2}i?xk$Y`q4D<2)JqK_V zV?2K^$-OSJgfX7KPs+VMGP;1`$Mg5cb8n1HW{l_WGjn@JeqoIM-{*3BM=}aY9{s;ecXMxzOk|Ay-a(i-@Q1mByu%l^zUAr zR~qTX82!6f<&{OU7+(P6_trbhBf}Y^fA@yG@sZ_>(Z72`-h@cAVoIOnZ&jo{WAg9b7wN>9{JZx@u3$|5-3KGx7^8o;Pu@e3zKqeIdu!gq zk#fc}VLTj>Hzl%wG5U8u@BDaV6JzuT=jKg|WR#Ho=--{5Gb3^}<8h!rDQ{M!KV$UA zPRW}S8Oa#^yHDml6VvPRV4*6>% zRgBSpdujf<$a==;zdb5{ePkD7^xqzpzabKuKq zv$2~aGZ>@4c1Zq~$ZE#uue~dOYa}+2;zR##PX4w?8^-9rEdV^4ao=)ypK$({krKw} zzr8>ItH@-==)bMW+a8(A82z`8=6@S`oiX}vXXSqv`Is^KW9R38AKA_r{juZoe~9df z!(+34jHpVo5B;dH}ijvoXZ&fz0-4kiDWWH|LuGEdn3~rqyKhG{vVND z8c$N_zs(tKMBCm=@uUCtyZi>xiHxW81^-JyYIG4}^xrlrXcXPX82z_R3c}IGlSm)^ zw?`F3qU{-@|F%&u2n@uUCt;er#RnT*kY`=5f0=sk?lfBRg)$!VGpNgn;N$9K6Q zdK_c)#~$CMN3;!N^v6yeePgr-WAw-F8{IQHgfaSK?;qPMdJkjtuMQ~e9W7^!{?*$H zZ;HOg82zQallw(CGA4g&|LAtcr>}zZnZjG6yBVYZG_P<_wE071FZxf*3kOFF7^A&9Z;w_pCV%O$=wrf%_Vq;J9ntxs5B+0S;qd4t#^^77u5d)O>BE#B`b%Fa z92q@_G5R~3hDSv&Vod(dyQ5tg4_OK0N#Q-w?u@^N_O%l59LBvLh5H6wM@JVkZV37L zpfEeSlJN^L9^Te(0WW=!1;W-@2!;I68wd`d9Z9mP8jY zM*r&{g{9GzjM3kkJgz+Y6JzwZ#>P#IHlBjn;!YEU+upQS$*-K??PuYWwcgXH;n zsK=uZKT7$%3CiocagRqAG5#LL(;s_05#6LQ`FE$@I4$}eVeQ}DJ?_b<^BC&G_bWbw z{@mxuXokilzjxfs=s=At)x$9U9Z~dDbTVUnpX-@LbE7*nUdrE_dN!K;IN7u85cEeq z7maGn{^G9lqv;yc^Ai^qy%6mg$N#wTi_yUv7o^W!3g4G{ zRndZI^CvL9Ds{+i=&wa@MCWT z8pHQxfPY`nC(#*C68}-aFPoo5cWNxplWmIrq_I3twmG^-W2v7l(fy>)^|K|~Xu6Ki z#m8#w$)BpR#J?r_FOB8-u&vSV%>NkLWA`E3qWygOpGSxJ^goY|VtsmE?ThF`%*W@; z9xwVb`ky%5ui018`Ehtg(bv(}7~}J1PZxa?eK!vG>aiobL1VdJzcc!i#+0A=MLVO7 z{)72lmO|gN-xZB8rtjVFiaLycf&O;4u`3#5eCu?4zu2zm5sdEwoORi*=rN3&j7R?W z(Uyc&39Kg!^?kGzErSC2z`UsSX=I#px({!l^EZ_)n{*3TcjUi4dZaU5Pz^m}x*#`3+k z{ZTao%O^i&@dKFu{n5sR)n!ZZeZ;`mf6J2SeZl*qhiSf?*X)mW&{*tM_NAn+(_dYr z>}%riiXzj#QR8L&e&mpStH$(v=DMPgJuFUsYf+LtIu5TWYG9A^>8IM0;`DbErP>e2 z$^Tr`(0(!wuPAD4KjYJn*o)%y_ZLO%rE&79#Zmj6IJ~0BvDf2Y{P(Gm8EKK&!@f5qvy zEk4pdFHXK=@lp1rad<^hx_ymL{}{V>oc`s-$Jhho9X8PPCu&>1Wu_#_8W)oMFEdCx1`zN%qn>yrSq7`yHSDY4)da z`USzr+y0aq{05Uv9q?hgTF` zVK4RR|J!~qPXFiPf7|QgG!ld$LXI^($mh2lW$kj z%kCM6R}}TJ2m17HwnxP2cPzQt&W@AsT+-Jrio+|4`rDO0{ekwBIQ_0A1MTT?^1VuK zvFFC&6-9&Wmwftz?Kk7}2bK)B-;I+WRx-q17l&6A4YjxW^oQBI;`Hw+8D{?yCtp}{ zhi%UB>SIOG2)nVyQvP?@hiOdZUr}l$2k4RN=Dn4 zX)N#}USALAb)ghy&D^MAHo5YR7Y`7Mx**(KR_HREtwkK#>b=~ z9%Dbv_<<&f$J#G5e(6xex%TUfv;KiN&wg8Du{YoTfcfoGVLrbs-`?!w7ua7jAM-P> zq`>}OW3j)`{@o{EXeT|T%U|`jP`=O(Yb@!Fvzsu#JEXTIJkCB{V~MZGKG!E-WM9Pc z;4V-LN{Z~!aeV9YVtcK|xvKSc_})TEsh#;Wrcdv8nAD}*?ys@D-=W+d!hC!mX1~kI z?GcQ7!FdxrF=LNr{QC!RU#MifJ%RD~*-Cv}Qei*A7~i+Kx@4j~i*PEvU!>B0k?~2% z`2Ctn`z4Jf|CRP@8t3cwv8kle{**Dck8qcJ?cH(mC4hT8qw|wG{YPv+RrYNfZ%!=& z+)q{6BZ+V9-;3*^Dtj7ZdOo+xp2wKJA5mp5(OA|)RrYGe$H98=>yrEIE9YW*xvBv0 z&m|Ao{TQ3qA%4)#VLTW1$G3Hv3pJMd zo?^e@lb>R*V)^Q1Fr##e{UPIh(Ee5FRC@#ChoSwe(noFhzw+K!^%!G%zP~}~6E2?6 z2hK-Jr@OciaLdx!_UAf2v1g9`y~bky9Q#*JuWJLi-_~f3ZOp^+5&lzls>b;W-$c`( z^eOu&AAhcWJoEA9euL7v_N6}lbM{rte^cu}XZQ2*U$BQV|69#}!T!p}Uuf@Q{->J1 z(2hMDZ{H%jna2651*Cs^=_0$0kH6S%&-_&AkEfR|wy)P%%HtKgzfb-ZdkD*amjvfw zrLWj`GTs68)2{SYJBM)@)K9z8CH6Rl`1yr#yUud$?8V=oEFFK7ARAY1cF zYV6fM{%iJHpZ;t1wg7(z>pyM6eT352?A?r~LM>ig`ntW3@rzJC7nd%zL(gIPi9K)F zw#HK5Z`e&WhVOAg{=1aEVW<1}%j^>Z_*9ms`CysdMPrG7nSFgg{w9_m0^?`b(q;B2 zpZs#W&?mp#9?$Xy*wd?Yxjoe<|CT-5C;yiH9Lr<=`1z8p#vQ|m-?L9*{4&Hhy!3thEXLo1y~9gC zusbp~Vg4Ily2k!D*t>o58|-~7KNH5wiqZ{s z=y@vN#!x;LrJvc28PA6DsVLoO$26AsHreSKOMW-mC$M~L-QPCZr!pP@_4oaCo9%W! z`7QSO%&&m_+*i8A?&{-jwQr2$PcGeR-xt?lCX9D4T(;eA!x-Ii&zF8RxN1!X5X z(-^-A{i&d=l{3eupW!U<>1Q}gSpMt~+)wS9;e5y#u9v8?vXh(*KKYZK&zX6ug(5(igUD2{#2(W^D+LavQwS*8cY1A zI+q0GuVncGuy-oR-@y1r7>}oxo#yoS$)D~FWj?;i$WW&{kH+ykG(Fw)gV4YYmJiMmuM$#wUnP0r?)x$NEG0TNv+!`37+=W=62_AOFTd#=XO+gDy&p1P?A^jx?ES}Um|rQcbDU!}_Vin6oUd}B{cP%gj&lLy zUeG_DDm&M?oUsAXyij(YbB#~GgVTfgzeD~PmvwN;;`mAGd}oHnn~fsy4;!kZqh3dQ zHuHX_qceFa;#}1m&Lfcj2IJ;1za!qF@#fUX4{%%izFrzjd31CJX)NW@(YZt8eDx`m$9tfk%eXttkMEUrawahD z4DIK=vWuKY7}tQk@0DHR%x1g>+RJ-ompKa=kAwPsudK84Cgc4YcX2*sJOt|Zy|OEv zt&Bg__-f~S#_vOYJla3gX|xRUBldQ6(lpLjI6ptyzpK+iW657Pr?pSMn{zhH!|<&> zE$il7!1zBfetueZt#dhJ6Y}?IS$C(q#+CYgLR-qNb3$)o`jra5U-r`nh<4vx!k}>&Da-F%W&^{S& zfUoi9)E{7c$tcft))40LCD-|s`82-dI$JfC{Ny^{XiWZ|!>nBAmpFcs%5@HT2h$UK z@|+lBvM0}}BAogtq*GG`{6IPcWa-&vWK5zj+PR=fFJYH^wx+$`e zr1G3YG?w)9ofu{PGPBIj_8 zrTmMXW0;TaX}4MIoTahEU+i2Iknh6sjbJ=&TVCvRWBd^GzqaKiPEVhFsnehN_$HYf zuPJrz2=MO-@bd%wGUhLX^~8DQrB1cRVqcl_q))!gd5Yx=A=|x5%bZskp9kZ`jn|Yr zZ!`W4`rpOn<<45hH^KVm;_~s%=Zrsv@#Et13g=smrMxCMKQW*3Gr{>?W3gv~llq?5 zehf9iaWrOsNcjZkFdu)Sb2RgD{ODRf(K*k@uXHYE{%4T?uH}_ZKaC~5d!5^T^7lHU zSiTkHuV?wa&P2vbz+cj{yvnI&TnhEov;2PNamHDY-=5_UI=N z?pZ$BSE%f1BxaU`+jOrqg~6@@4#)>2%k4bLu%i!t+JtGo9XqdHk8_3}8O>znRWZ=8vp_ z@h@wp^EPAZ|1+HrG?x0F>3phjzUlTjoGYn-p}O;kn3&OrQvseV?M?{eeA_&1mT zj|Ipfn9lYOhr!(2Y*FLV46E=K*E$N$sC zs6TT2aRL37E+6$v#OV04R2QTE?D78!=(ltEsQ<$Fvt5k(HRI27G3wWpUl`E8 z*yW@C`{OTlG3sv^-`T~ezjORm0sTyukNUrj@8)9E4^?z`G3uvP^a$wpbor=%R0ZyW zs6J3XqoS{iQNKgQtpWYPE+6&(U2&U>QNMe|Fc+i#+^o9-`XgOF>fe!hw~JAKNclZ3 zM*Ru5<^=S|xO~))wa#@h>c5ed?_x^7D4<{L@={jQX?3PY>wNaQUczN9HUSqyCWc*)B%?3Aa8S z(0|6|qkeY9JQt&WamDj4M*W)dmjn8XT|VmHl=-TQDg7lbru@Gi&|m8E$$q?*=(WEg z|YVkf7|7wes#qv7i0R5RjhU~+5cfc|6`Yr`p;CXb1~{KsMz3Q)PJ*LYe4^V zmyh}*Grx2(>JO;c?qbUScLDufE}!!MgNv#BesnSA|L1`I9+yw)|LS5&f1isfeFIi0 z@$)P0vc2*5rp%CwDg7iDlYUA-Kh@=v{f%5q`i)&o_D2Kyw#!HTBb(!?kXQe!D-Lxr z>TjuNmeyC#N3wo9GHs}DzB)2(B+pm)Wt?v+j!YZN_#RlF?yfj0t(@_0h&eRjn6xU! z4Pkv2o^Wj1lZ;!y`fhbei?pXTmih36v=^9{!tj1rY;`^OvpVlg^SY!CUCCDRwLgUTG z6z8xq_h?vqkWX#krPfz>!xw8Is~8Rm~dL! zP{Ju29)$0)OgKGlB;#)Zp9wgZ@uB)YK`zgCnL>Ze zhJNkR9?^Iy-ydwx?M2oHf@ytm#e{R+_Jr-T=Y)_%*Q2Qa*@P)BpY)#y=udO`s6YCu=`Ke7T@z-xnDplc^yj&J)K8lDoQqN4nfQW> zNgq$4vA(2zFLL>)e_iWWT#Wk1PONb;>UXGE7SMmo<)ePAHJ(a%?fZ?aRW7FV-wWu! z@A6TW`QhbusF9sAv+8F=VH{qf8q%) zCjFBF`X{@5)PJ${sV+wSCnlcZV$`2KzI{OdT$hjf$!$8g81^@T#WiZOdJ-_AMWx|zq;a17o+}T6{B2?`ZeV_0sXNqANAYz z$#XI4|2}b?iz)x*0sZkVAN3=Z6I_h?hgMEs$ z&WN?~&8IVC?KRF<1HeDgp>k$y5aS&1_g!2$E0*n(pB*b?{*#(NJ2qZpSs%@bRr}=U z#2#b$6z~UjsGJjfn(->Q&(Wpwso0y0SHOC)L*>)4cNsql{A(+piG9rYR5*{nwsLN4 zBjXw9Ppq65`+;$H;M?lC*lv*r{=mxlF=K-PBTT*;1@RB8d_ERod;^R`11n#M9l>}t z_!|dSz8E`7V;WzQ)Ph)Bjm00hFgBDi`2!cmhJS|fi$8E-tXSjCsoj5o`x=)oj7=oW z{=kK?2bfR(z=g3#ng7WWm_I@OJI3S>To~J;d-kdu7d$@Mb0eip~ZGQTC{XTg<=WA8Gi{49=rtg+a;IJQaSe1%_*SaHJQ*wLFYec`_nYpF5Z zCxZOI{2aT$$FGT9&isC$A8TC`>*eFW9vjH~9N2G^ws<`@)5l*Lo5%br*nh-YFO4nn z@t4JxGauh{erM&f*jgX|&DbX9KMv{NdE%R~BeulbzdUxV#`)?;i2udb%VQV$_^V=9 zGXEaXf8)eeu`(b3o!BJiuLS+%Ht)p#E=BDEP@qMx0jGOnz{nx(OK*qBS{C?oR*igpNV&ad~7{0G} zJNUCJ_r=n`*7oW1vxh7Hh@C??<`ihfevZ^s$F3$! z;ifu$CgBBa$D#1-I>wvU3#qAEoQ>2{_8_ExJ=`AekB6|S9%_hX>c#(8?Unr8+W_P9 z%I#BKo(C_tT`8z%s!7mRQUAm&q6aJAApeBk`U>7<@mK7Tcu&>!XQ(D0Q#_O5T>u!LV4|jy@XH@YzK12AtnL_Ysf!09 z1-sa83J+pSUGo~rT~$QXuV<*$w^Dc_D)PiPRdQjxy!01|N3f;tAK{lHyBQ>EOQ(q_k#ds+dLMB?&e}eeIrNrN++oh#`)HI|TpHBJi8@*K+}-gt|_ceHBDB{GzD*2Z_@j-;}YqaO8U9v>tOVRZLsFHrJWpn+&ox(GF}{& zLHY1w%k94sF7@iiwdH6YFqFv2yddL&gwyzJsn^zG`XRNh71=@Kh^h8-yB2xEmfH6Q z$y0nu>NY*jd+B}n9P(@1MdOkuC*%1aJl;w={_v1GMBC@-9sVBKDe{CZMe)>@f9BWP z^0rO#wq093k)5Z0R68E*he11na*5)rZ@z+Zw~a$PEY-c(Z_k~2UWWSQ`8f~PeApk$ zH1+KKfaNx@oY*gR$~Yq9zKp*#j~hznCFw^`!n2C;;}PjuYR1)dg~NA+Ud3=zZG?C3 zU_L0G5U&@K)GwPcJXx*Q?W%#2_z%{f#4fVmn@>)73FCwBH!_uc5;fiMgTL{yjM=7YPr!dWq6a6fX67_+yxFOMUVv(vVuLX_DHjsk8_9E*Gye zNZwFHP1Xxyi{nWY9&+RF_W-5~-__*#fT*bs7XINF(tBYG(eyn?O_ijnrP4I5f4uuf zQ9O00FZRH=#&VJ_QPT}iWJlfMAy-e*y@l5^f~g!VCE=2u;6(Ade7$~;vyZXxB^_xe zeryHm!F2ZliR8}Zeoj=%&ER-Ul@EIyY;U*ROyymy`?sNP*Ym!i7V$b%=m$@boY)tn ziR}19m!qi$Y@qZ^O}%kR*3So9H_ZzTLVy+24CPWuLLT@);r8ogeE{?HavG1Sp#dKB{$luv}+{B}n>4fPAm zZ@9jxfO!Gu$6sDW8d4APyeH$T$|iX#CzHzwzGtJ$OR(kYjky8kp`B`KC_lE8%;$B7 zd-HQ5zStM!Ckm(ZB;KT2cK)`B@+a{Tu5G73T;lWcS2y2FPx4LFRB2~Wx_)fA>z}&A zz50>*LpiKJTsPEJe^QT$X!n!R4pZHxDeNZ~BM#~I0jEw}U&(A&1GoH!>2;RrVp_LQ zd%}KjKCd^-}Aldh$22oBRoe@>5gI(AY)_qVO+E3(_59Qxdzw!7tj^`<%qMwLLdysW<5R0Ba+)_h^puHh?-YJK17VGWL zmZQXf+-TG{IbK73!+wz<-S9Z2lZZ-uLS?-iEI-i~zO3hnn(lc1HIHYB=<=OpkCe}) z+Fxd=l=4^Et(5s0-hwaM{01?2A~&8`&QSHPtC4Brod$>BrJO zB%Us1BzO2LL?`mRN8xZg`FaXpwmd#QQ^~$a`dx6}K;yf&A0X_F|B1>W7*77sKi{52 zFBqTTKifW~{KWrwu=pjNMD(wwFZC&Q(0KpX=Lzu}N&A=hWgL}o@qbG_&g1hrYo~`#e!TplAZz4M__gqEB(FHG(9f|sb$o)IFZn>-Ue$7-dyfh||t~)$bORr%-p0HI*ZobZkl&7f(dva25 zf3_V5>+J~MA5pla9?|=jkQ&sD${|rdlJJIiqMXU{qW|aTYgy;WydmimmGy?4Q+bs7 zqxdCZU#8ceA@)Zmx%m*e;QS)#G{Z1&QMI>^Q-&ArG8EL z&^^h$qxVOiA6eET7xKI+^Jx%w())eyoL(@k&rNrIK43ehV=DV8O7HkAq@KTQvEGLp ziYT;4_A>|LIhXf=H)Nu|q2_KzYN}`Sd7#05KA7n@V7NDa$vS|jspj5+{KWDHvzPpd z{&Y;pPtwyI?*Z})yI5B)Xix4psBfx&CMc&n+EM&_dEA$Cmg`QXaM_PaKbP>$Er^d4 z*FiV%eu~0P_1Rg(53ZX#aXknJ7?6+g zNI1n~D6!*HZjbgPvQPXBG!7Yx(j$AY9D-QllX>3XAH4Ox$jLZYavG&4^TlEMUPvz!miUE=A6w2_$iHo>CwLy0_(fi*$p2mAzU1@2rEjkEmz%^#_e*5H zgIi+*P!9I{y5CuUPJ9ZfH*d;#MEe?Vza!yv zkH}Cfw7p|6n}S9_2oorIwVE zUZQ;o`JdtZc|OSn{X;=4_lbhz>A}WNX-EEhN+x_S2-Br?H=g52JDvXkg-d$k=Zcrd zb{D*-M0{@@Ao4*u*^kM+4T;|$UORr`d-02WF#ZzlkM#Bv62CvZcKpQm;um>;{8COr z<^GhHo|Gfqzmjk-J^y_yL;10H?Glu=QQl65|!NO%f6_gkM zk(9f%1CjHG!+Di2eM4Q(Sju1Y>K6`UkY0ZZg>$4{)W0Y^F~)msc>Xw-=iT3Dk=_wH zK2tT&>q5h&(m$xY4fZdYs*v~7vJMk0@|m+KUZE16h|+n7sZKO;eD(arl&*JAQS6X& z5E&=xH$Ir|y~qOXr}p--G!98SN=#)xE%Jib-$eP9@l4huGLMVh)GlCM!s}4kzjyzb z^yU5@t%GQNhUFpQSL=PTrF!XgE1ZY&{!I8ZFL-)%J`U$@r&Iht{D>6xVfQ1oc-`pv zt15b9xT#3aVmadD_(|(zQ=R)D%7MR0(~wHn>w+XVookj-Jp1%|75uNaBKFc*r{zs0 z`4s!4+@ze4#fgY#p3 zG0mfY-akH9-%EoXQxTS@r9S8LHt7e_FAmlpWSvRWTSs-`cI*$g)OQOoJvrBtalla0 zzJu|V3?ccLULU~vT~lv8F5@Sy%RPTPg?re~x75I5iZ_MVD}H%Py~_Pa?jcLN5PzHW zyEk?D8R`Pveoa-x@%nLaA8e{&TFz24$CDjbR3J5#+{X`Me>r;leL1g?b*T6aBwWrh z{O1X9zvp^NkNgUj61ha@9n{X`zFcs9>YamKsQ1s73Z04Zht%$`k$U_ro?l4LP(SwZ z^MmIRvW^di|Jn14MCT>JbB#gW$)3)7{;GXGk|=ze&ZpP@sr;dxbNi6`k#k9*;@1&= zqH~hD>|da9%~aCv1Rq#x%d1foZ6*lH{sfH(l14i+Go%|>dpT$u82Hg%e{Xk!6^X zq(|-8;`25yf0U2f;nWYkdrT6Kln1pNFP>ojq+iQ^RP-gB`je+G;nYtgT&V2tyz-QB z`C#+ZU!9+hEW>_is$2B9YA8RpREp+@)O=Wn;youBM-OJt!T3^t(jSGc-b(iT@CQ;$ z?P9;Hl)J=xu=6jG`){b+BgAnv7*8vH-bdCWbl(E*6+MD>8;b5-m@fXa^F8^sYo{Bu z<6xMcOM&w&Ue~RJ^_iD1*ca$^f~Bs1lkArGWd4==sB&*c_(5v?O8W8sKJ+90#N%mv zczk*O$DsW~Fg|G?vj3Cwh28u8cGj(DxaX?LJkAjH<_*EpZ~WL>M^L(+p4f5Va7kbM zYnHl*%Yo)8*w+lF`-r!FK=%>P1d8SIXWL0I|9=;j@~8IgJwGSwv!I zzGz)w@%-$aCrLi*<|oziPs#cssOR^GBtE|qy}Hl0YNscDh@hT7Jy^G9Q+p&isUNui zF`L5W9;B>;gU_?lcwPHB)Vjk%YVC^@Z_-AhvM-nN_t%TGM+3f(OY%agT|$4=>wQbz zr1#$;zE7K^R`I@}Lhr*(*Y7NTeTUZ<(!UYoI41YBr2or4O72(4I^pzN&>mA=KAr4p z#O=0&o=0I`;Q3bgg0D!WaZvEYR;X_&xfdtlG=9_$r}kPqT*O7Wk6z|^^F7-n7 zVY>Ap`&_9X8P^3%`AYf!*?fxqa$YF&)L*-&@#p;(|6O|CJ+Hqb9&f#3sKfMrxAwY7 z&SPbq2#)78j#=tyKDP|kN6{>5$1>i?xF`E`(Wmh%q+UIPqnoW^oZ6!y_R!Gk7)h% zEO5UgOnI3Nqb;t>1M-Y>o_xz^FNqGIR+?z4@Js$FWO%Qu>sduA2 zrdl$P?E1U#oKYAboZoZ2GR`NWl5Y8Yzn+9kJaP|B{BfUjLwQr}eG94QhoXKE#Fmoh z$YtIoIm>;1T*CW*gYj8vtzI{V)C1h^67jFo^3tD!)Kt0p9yj>YHHEhV>wJ3qXIYQ+ z<9#t)vrut(YQcFcXLF%3B9hjfQ=_DUCogZ{Rj61jV;l%y=zK_u!I-kOG zL-FU!`d8@3A=)1W%Xx&Ze^dQSpO?aO{d)ZL@^@f<{qraB4AA>GOWjcJFUJG(6Q?8R z$dXUlS4zJSKg8+a7m4qWvfs<$aM>pamHU!H>AcKT;!h5iWANPBj}zBl#Ee^Q+1EdVjuGam$w|Z>cji4XGnE_0F@zZ$$fSQ+=_Sti&ShtsSs3$!ydiRY* zPxh;RIXU0u=l?)IAKEv@OZPuvzl-+*Abg^3?*_lO4E!7VzMr95YCjR=vlYo*f^z90 z^_=ei28Ba>$j5m5>28pvdo^{*OFN}_ zBtD^Dz4d*Z(h)hSAHu=&wIo%g&l{56b3oCPaYD`uBz(&U6u;ze3br38my>jP*UrDZ zKa1*9`h}@x7hpWzxwWJhACBcf>A>>_)tHW@TJiWO=iTBTLyGc}U$Jkn9tT4F+(i;S zcafe<>#p<$obMEVA5N;8^b^!#dP9CM4&2vTiFSJR=6ikv+Ld1SL436CY{2oPs9zu+ zrBZb~b=lQtH?X1HbooL&Q?5n~KmEt!Q#wP)m(FJpOE}n-J%&cs|yHyq~1baLAX;I}6Lmu9Zw@GOc8) z^&vg<^I^K;@1uAv_q}tHj;woVeb4?^?%$}7azgQ63-x$S?_V*~*}nt%di48T{@dztgWod)?X#1{l5Vn^r|<7HP>)PRyHnKY z2}o1b+d90VyPlTxNFJUi)AAvf2fvn<_txJcFZK|Qv-@{QCSA@!pdGw~>00#u1UKAp z-OwN~ZJVv`juUfY^ z56gN)_>%v+;=z8Q!_)ocgz_Pr_?Oss^A3{hrfHIvN4cpmequYjLXV?VZdeW!Kip^4@q6>C z9v{>B93Jxb_GXHA<1>_QCfAEj7x+u+T8F?sUGJk{9YW8krnu`=jngqs{4 zuRlrrvM-}_!C$1)t-bCOIpRzCc7#ZHNjo(nU19)os= z^8v&o;lG}U*efr4AKGE6M?XXg`zN4SKk|H;(4U{ha6=L0=aZow%K4Koyqn6J{=9Jf4c+lBeV^0*|I@+I+6`FQOE`68#w zf!igm&t;v?G#zE}&kL9J<6{{R9M|sZ3{OX0{4>;{C@(Y}|BZhfp00t$I$j9}O6k!1 zNl-qB>3IR~IgeZQ^X0JLe;?xvsgKqnO;U|MrE-zy3w-4Q<&5W&*dBuXMB%h=AU)h~ ziQUp3rJYE8``$o1U|osxnA9t$7vC;}`H}U8wA&!RhU1lev+%_ZjiH|89@gIyo(|6i zu>V8s!g%W{KP(3f9}43Kj&C#%SX9pGSSI+#<({rVVhnO(Kb5b=>th~=(@k|{IjBQ^ z*R4Vd&y}vnI9U(UkDsT!aN!fh{iC)U;*)!tlE3(M2j)xPe*rmK=Xv`nS?_6k-Sj1$ z+IC3)!T2y{1LcTx1e5YgH@z1-TL-%#O{lB&k?APT9hmU@wO zNKjtZF%sTLmz$}Y{EBuNim;*mMQA_yje_+NQdbQ^`6M+R$|I2+hF_rLH5J}BMl5zw zdBJ^s%n#&`{8~v${K!(C@%{?0e|YUc9yBjzV-b#kZ%n# zC`TA|@Gk+D@IOl-9q~WoJ#{Q0v7g4dkV?KSK3%#ei{(J;{o3->Z<4q@kstHV$}8Bv zh+PLvN7iLv57})he0~Mfi=Q9j$0L1TG#&GVf8PC3xknnLa_+yhC5WekKS@7F3jQr# z_lbWk#Oj&HbiW%9>7 z?<9rqEk%9l@2$@!J)wA>g7HZIm2ngM9qI+g%|;2vP3foPM;3pwq43@s##2|n#PIlb zfLP`sx%Wo**GwG`+9~0hrhE6>4wMeoC(Xm+|C4yU`}k5mI6vd_LFb=B(8J`iZ z=#4aZ@5$RQQ#pF)apFIg@(r#B+;cY`&qQt_x0AbUg-`1( z+249pAtg?~{1GPj=rgMDqf#XTVNLH+~-cWJyxcF&_kp58|V`xouM3%TbwLA(4|?yr00N%im5 zx5!I6(mv#zh|Yt&b*%3k2I^J#G#@3xUO2sX-r#c@@oV!r4a6t?MW{c1@7(48R=Aws zOL}q+Mp*Ji=P&W?Vj{O&85gB|={@ej_uoT1tiX1e%;yRX_*?DbUyTshzH@6NCL+>PNz5-6`*L zq3002_v#8?+P}OvNy5dS`Mbg;Kawupr}f&8zuvuls@N}fNV!hsbw?sT-Jg@^Nxb$Y z`IGgp=nK7)_l1<6rzic%A8zpbZQ#49#aJ(vdv7-==f|c>6rZdYh??vtw8*av?J^jT ztdl8R+Jom$mT*~j2&Q}O!T5ssApT`&ul{<2b7EeXpQY=E)&cSDRs0{a?-P6IJ+qcN z*#1%E<$3HN7XPrmj~7>7;s+MK%#Xov8TTce+M9PCA@7awha1}O8=p^lPXU}a>iZ$J z*Z=C5{H{CqyYg>_}{eLVG(OLm|8Pb4qT-~0JeZU^_Lihou7 zs^tH!?N{v%_bISFp}!UVc6h%~ub8!;HQ*-&zRY*x4-M9@%*)~*75N~Q{RidG^NW(- z6P_ELPIifZGw6?`e8IX{-`nuM6Cv$V!hf1RaSJa>6mcTtcl>1HlM?jnwHiWcwPieT~_^Fxv6!YR6U&dv-CzvoN>eExiR9$Hb<*C_^mygH*HW;wvvJxExIdXdPWt=*%2B(P za{AwLp>`N-7ynx>|9_UtZT#NhKTGe|^8l=;c)YrR{eofkKgxV6@9PTUk-UBqD(9d$ zr{GV*#os3S^8GUzr|5ZWQ=M5z<@4K1m zs__`V+^>e`Rkl%j(of_&4L@;zq4#VVO3EYH?!@me_f6zp4#^qr_gPwiKMnUIJ)s@p zy~6IATIwpGcRJ_x0tTBdv=iT>RR-Zz3SVgMA}oJX$#>6Xd=#2!{Csy6 z>Ur%-;uos#e*u4l9)IBbNPKQ29o#>}au!VMa7#4=`|up?w$tk7%kv}Bex$zr z?+x(Yvn1(C{neMsJonakw8J|Gm2jEQWxkbq4^orQGEGD`IzWT$l9>Q8cz=OlQ>0fa&_e+ksi%wN$z?gK7VM} zUtKT!6+L_|naT^EONM%{Px>_PCnvQ3K0|rwuUqO~ z7u8?R-#$@~()YgC7p%YFdWybRmw3Gu&#x>05?@{Y0n11Dvc5z65{2XVK;=vOrFc2Y z7u;vsN&P=QU$x7tb~y+8-GRyp<7;q`_2hy1{&o@{AGObe=cDd*s`q>htzZ4+h3Oo) ze7tg@@;LZBBjqIPWk0Upc!qWb*G2wyPjG!*|9t&V$4mM3>?d41-%>7#%3s!ZVsCxQ zAKSmk*R_5<7{9LmD)A+RT_t{QtfE?yuVO=k=oRVEZuDU3$M~sh(dV z_U@+~nD4L0_;GUFH5iYfM4zyCPA&JL>MK{penvSbe6s=iGfj0Y`$r{Q&gSCpZMr`4fu}r5G)URe*l(W-Qo40U*vsK`h8Up zuYQjev^&{{ADHhim-u$)Tfd|mYFGxl*DoF{Z@JGv z_e?C+Nw>3*x?m;RnWXbyU%9&W9}<6E<2K9+?)Qet4?^{sC_FeXBr0do#~T~Z>2qR# zyut9l8m|HM75{zYV7ftmaGtJ@{k9%gYTF+lUSIn$z4CU{{=U%E>pyje*X}<-xw`5V z)1iAV(jJ4je(e+EIoQ361M}#y5wKR@4Cb5UoK)V`TM={t~iQ11mmqX9_!TUq?IOFxB1M_RwJLxB0U(mURci&d>QFnO#>qYJb zQa-%!<4qJEoEPHd>WUxRLtWoL!+6C0 z1M_RwU!rtYw54*9bqC$A_tH5qzy9g8IE2#qF^1Gq*@q$xsjmM(nxuAV3jLs7a<%)H z}0&d6ARnmW99Oca(?kaqIgf7RMV>Q*``EZu}x2j8DSpTpXS| z)AtGBd+RzrSckHGA}9Jm`z2i3sbG|=j4$~SIXSONbl;Jl@A~`hJ4(4vtIO1N zstf$8)eR8;4WM%a{JRI}^aahn@b7+*{+*z8m%1K))oPUL3BPJ}x4KD<0l7TYAAZ&F zyTr%?T%c}+Up4$LF$w@zfc_*kL`?#ls?;!51-$#!o$zaGJOHsg0Qe!51HWoD8Nw!m z&J>7k3gE{<`w2DFcml#^g2YS+n+u%Rf%7{2`wcZ+EmyPP*VcGTJ+0n?uy-N7HR@Tl z2LAmK=&gm{I`snls?{gz75E{&#P|fl*Q;gfGqpl}quzmETVscMU+nP? z_(-J~)hgBaOdVxFT|jsS{LY165BT+m->vW)1iyRW_Za+Uz;71(-Zl<}-{J79R;!Go z;P(jpHYmd!2ftGILA>Vu@I!hp{2qbd26cq_68s*4-v)K0`3n51;rAN+9)aHmbrk&j zDERkL@b7=ZFT?x@e$WogPvG|m{5Gg==63jfp{_N5P&wuy@T-R3&+vN$ej8M-c?|rj z;kOrlkHBvOw7ZL5!!g#;G)W!C_-IWVs?#*JRXe7aYT86yrRfpShEV?q)ra}FFuk4W zD5kkgOPE$Nt!6q?({wdYQ+Q{9rpK%I7_VdM7?_@|S~5M&*jl4h89-@j#YDY3jCRI;@H*XXG}m%PfIGo$2KdIEj^{q(b}eV9;mj{!I-2=2 znLnSy=WzHu9e%#Kkoj+Eda1e67z4LTZZ@|WrK6N8GIp?DbA@)_XY6L&iSb)HpHs{l z&Tp=DD4YgPH?ugM66M*)KTyiCYE;wflsXJ3;v=nQ9B)k146C`OhN`r%{I0d;Y1+eDXuX_l zsGER)%;`!E0@@#D>)Wji)~~Vpf2&ln^_G@DUNtu{zmHq(ncsM#XRb95ZbiKec42zQhRV&VK3GmQ))PNLdJxaWxH?FpbkdS8H43wpIzDNk zbs~6uF93S+eM(&kbn5F$bp?v$-8ZR3m(O6J5lC-z(mX5oWw0ly(lWnRs)Xr7Nmb@n zXm58LRh+NMj3+am#^qOIJp*3ESn?c=4K-ief1k0)#C}v{%;EZ-V?MeY%VCcBaBr|L z`Fm^o7RXQNd#f1Q_w~uYGX7QL-pNZj{*|n^lG}$7qW-&v!&4cr=XAGmx;xCH;VoZ9 z#%?nM+BNhWZTBk;94&7^jr|f+>Xin+T1)R%>h%Wu*#3}(?eWZ%-5Q^n(pcBiYBR=k zsc}D)`%Nj$7&m8{q3K4mjYa*ZJ=0E1GnjVPa#)WB*!NmWrpE9MGvnHumD-e2qXrCC z>g$vm>vw2B-vOWcM~!tj)R&c-X;Jwdt@ClbqW*kLYRk}fFkZDz&9%D0(+%gP_T}`l zENnML#&D}6q*tA~&KN#Ww^s}M+tk$2nm;e~Qey#xuT3prdkQSPJ@*yh*BUDI6Ubq? zuQtn>4%g*#NW*#7kMPt=dc*GxOvg}FtUsCMs<=F-F`mP8KGQ|kU01>CDru2*Z%3tu zG+bmocA-+kfVKpCZMDd%f_6B_T4Xs7D0LTvW4-P+7jgbp>VD=}D=i#{N*k`>cvotg zVXfB`-VJS0dtA@ux!$7jpdhmGIgU7iZ9A977zs^|R6wBo* zV?5ke`nYjch~|T=5Y@w_AsnB+ZM@LB0_G7b+#~c)=vNKH^DG=!4+$@{GGTmb3gJ|4 zG#(xgYZ+{3Eg^gz^vm-b(YVw(?C9{T!oxZJEKM_DT)hRx*R-V398Uq;QNVVTv)$#K z|0>2+j3;w^1svZr#&a~?XwKIZ?shY6X}y&MUycg5w8lfecAG7&xsM_xJGO*#t%+Tg z`Z8Q%9S!rsx8XTlzE_1hyrh&FnIEElI6rh7^uIGx=5u{t6;d$YVgJSXp?PGpt_NE! z)#)M~cmwvY`JwetF4d_e*4eOY`8K>+HSLAzFACB4x+pYj6|{rM$`IDe^a#zLOCpOn z-9?=5MI6r}PQS#8E>UV-B-cuVd0>5{Pl)FIH6a>5*Mw-iT(9j}ZPr-d-T`(-w`rWD zw&{2WS=&O?uXeNCJUy>G6y3-5vXAQ}ltkmnJ}sAFHBO@T(>RIRPmKAEHO;V^X=$hk9_N?EY^{Jc$eZ#I9#3Dp7Yn9 z^VeS6je4KAP^yo8i{=lod$3+#O*fi-lc;|U=kU>N?`XESzzxUp$gs*8SF!$lUe{G| zJd>GUqt^!)HJ-+J4%7Keb9F!K5L(1|5yw+vO#!dbpwLndUztSX%~i(NaGUvV*uCrp z`iyhC&Y!K;Xt_bwnj~5etYJGwg^q=J=2M62ceAse<7=n;>1l`js;&U9M!Q3{>F^|2 zVPk#WXS7!|4nJmL`zi)L)#tV(oDU})vV-Hr$Q7$VjmQ3SpGp&d1xC-W#@eoe!u{qPmn&S9^;m@Sa z)9XGQxAwt$>gBZa&Ge;8)c~b_d6i*~P-=NvrIiBn@ai<`cQ&tk*QC+-wGQOxoCND^ zpshgvdyvlqZ`vPew61}7+3R{eCbgQ&KSSGLs5Z$oez!@+{(X6DC6{NLWEwx)vs|ZS z>aU%WslRq+z0Rz+hV?qLUS=|l8=0)%L(|n}4=$&^T&{h&T(g+pSJMn@IOA;`?`Xya zOv^RBAi12=sp9Y&tLqmqPaZm%!$}U#){?1TPfMnHpUij;<8qy!LDrmP+J{YJT4ODQ z_Hx;w^EtjnIvp6dlkw@42M=A8oc^9tj~u!*8E<8u5$d7W(^FHIChM;@CoOg5zK8Wr zk+G8PT%+kmb7}IzXJNev`rW4Bc)K*2_6uvc9WG7&@!cN8_C ze$==D^^1L6AI(_4Ifp;S?dp5I?pbYSFh9im!#0fDGwq~lho+qxjD~)4L2~B?)XzFM zpnPSrTxU%)tR9-ePJ_dKu%DY5`Wk54!>%*Czz}Hp>}Y6?dJG)G@x~Tj|SVG!uHpL z^?EcYD8%t?AIpVOsQzgmW2?rDS8{&Zv)%1OG@iy%Xgr9e(0H)U!2M*GBi0$X4(oD6 zjn#H9jE_e&)A7K1k>hKYLgP&ahqvKyT7QmD%h3EmR{Inh*E^+9Ido3J^?8xeIR)F{ zD-D{b;COpxN+!!^q)>U(SP%5YblY$_F0^)CuT;-w3$3@ugZ~BShk%=ge^rOSsnl)F zuCs20ac@MkU)2Qgw~TJqBZb;wj}&T$ec8Sqnr2v8DNSBh>g{G(Dc5Q`JmtcP&_5yG z#jtK!-)x;R9d6fu-E4SDYY6|jS&en>xA3g~k)t`DPHa~Jr&GY`lrz78)2U*-kN1U> z8Bb$6hv|G>9!16?rc0TwWV(jaS;Oh9XT3F=W?0)8?_j!{={}~RRGQZsr&9ZfrP4Ui zjB#Ji&vnMVP>u_as?_uJ;H2ivZ?5%=j10zYSii>l=dV~#xmFLTm$W3>AMHP?J4TysO%z2@v=mSOpL5T5^6Iaz|L_0Tp3nPx_T`>??wvC?cM5&w^{sm& z<$ZG@m0zOOZ(!Yh#XQ^?JHl7Y!+o*ieC0eGr?u-#(_|W-X8C$j60>knZ+)v#yt|Ru(UTC^mC&npUw?Nz9c%^B3YF9^Mck0h(y5E!gYYUt9p?V96CBzXL3ykA5 ziu=wz_;${iFxgM8o71S>C4OQaw@a8q;dA`t{4DX4^Q_QMo?nH2^1N9@<&_hwh#QDo ziMxrl8u2a?KXE_wZ9=V|_%+;D{c8Qhuiu_XI86Pj_3H@#<%E-(|M!G*6fXC9Es3>$ zrPwcGhFZVXK4Sit_!VQlAFiwQ+h!L2LO*$)UeoeLBmF|uv$RRAUk>)&ME$9_@5MXw z=(yjZ@*fiQ{}x)U;;VHhaQ+7;Eh2xpznq8V+HqLzTSentqMc7xzYSVCg>CQ`Z*`lVw88(OFZSn> zwo?B4$_|W^F1eTP1>8>ufP>C3W=-Br_1{;fU_UD{xsJuIW2^kdHfN-#x_0+wDF&m(m?qe zD1U>$_7+M*ga2EY=kF$6qxd_Glec|E#D<8_Dn zdCgz$*8~K}c|OOu=?})9XrYonN+b3?0>pgXmmC$a2K{)wMIyzgQG6Q3rv*$x{Js`B z6t8Oc2W@=rvkcrvWu)F`FI{G=Rq6m;_anI9O>Iy4+f)Ab0U=lyUrg;t`MXnmcZ%;G zZ~*0RPwhkTg%n>HAlB6ZX(f$*@on~qw8DUNls7(Y1f?GrAkXW`ly0(?Z*$tTM!(4S zb=qVt-_f)=ly4E`tDl9Yy6NYP`VZ=M4i(G|T(JG$yaJX-w=7R%fJ9`fA;4L&WzuIcB-<-`*^a(`Mg} zTD-zKn&m!rsjdgsaWyla&&TKYAuO1?ux@3f2J?})&u*33i@q;uSwig}XO`>q2y?qP z#r0#HSzZ^%nPtDmnPtDmndLe*&MfaY$7#o7jc%M-e$JXk?I|&de$G_#^-VLxeN8XJ zp?-|*Z8^^8&OMw*U{j3~^$m~2e%Bmo{~WW}=eK7qqI%|-<@Gp`u1Do&dEZfPme-kb zv%K%9(&}C9yTL54zZ=Z*I=aCuufrS6@;bc1EU&*?we-=68_e?hx!WxMN@7XYZgT?e zgVuoJy7LKGs9m>eH9z(}%;IUM9a)E|zH{3AxWLcR_sCbY`+vOKj(>gv=UdhlUIQKm zui>~wvRjSuL%zd(L6)Me>p{#{;}2QBx?4Xm_ET25mTtIijG;N|yPP$V=54r^?tWId zZjzR+RNLok&Pom9c>H8uz~A12`^;8yUVmeorR6&n5Uw-gI+N8ZT=(Z~tWT{L7)1Uj zTKVecr!&^E)k(9m6ZdDW&Y9zJ-p*9+^QQ;kd*fF3xkxvm)lNf?*KnO~b-?ibE86vu zuSfgeYjsQe9&%Bu<61qU9s98Utwug?JU~dUwa%!-Df9TW=BbYi)dhMV#LX3$TcEPiCtYxt^;Qd3_47 zv_bj-*-={h-xJDd-zSmsC2IM2b{geNv&idGqGgd;)RRN$a3+-ZL+QF(4kMj0r;yrPLg`AhbZI#wC|!x=CA9O&oN-#Z=W`}gy2)C) zi8<3K-DFDy(#^@4L;YD~k=KJo7I~d0*TQk%V3FtZ1}*;Uv<+JP=CrNUj@=YrtHo!g z*J|-$>4&M@lN5hWi?2#Qr^U}sZ_whO&$&kNcQpTS-Er-Ejf~c%x-Ga4=Cqdn$Kl_n z`MYZ0n>>Z^JgmF_YJJAQF;9E9t~0!Ugt7juA8P$Q#`S@6-594G{{o{0&qJo+5c;q@ zXaIW}8pJB0s-|IVH|!{O2pY$t+FDp5Th-2j=ddc<_%J8i+s=pW&~!Jeh3#esptbB< z=r`;Hv_Xr#ti@i_VsEn32*0DHxre8Oeb__x6O<{Jpn65*@=>lq1C(3PC`Hr~r-|tEG5!F0O-plAEA5U}nvYJjDnKV%6{Hib3e!TOG&@cwT9~L4r6ub` z?^-mV z`nZ*SsFko*7mnBsx)|stT>^BgE*ZL8m;Shg9n-af?a@*;XmwrI=aP*J`mFwAf=>>`5*5G-9nR-Lw~)rDU~9C zA77C-z*poA@)f;MeZ`nRrp30`V(nUNM=f@=mUo;M`-T=fS&Ln&g_mpLRhqq4vo~mI zHfd?LY9;K@%HQoPj;Y&M%=vG$^oOyg>`Utc73GO7QU$?GNzNj)I?P z|7gE=aa_jv&4W(%TLg7#vD38Jcl<=}=J<);Ez)9_Y9*9wX7~@N)>q`W&zpbJ8c^ z5Z2qE0Fg@#5alFmcA93l3^>qE$GQaEM@vey@Rzml5eUb)1&A>j7a;ohMu65wEw)yR z{U$)v+n|M9)(p0F&b$>Vl?__Y5E6=z7z(DzBsjzX;sXItqPiuq3_4J#d z=g_LdL50v`K}FD$K`%j1YrQxZG#s`kXf(7TXgu_Ckhlt53wjgw&7i5!J3-T+_kw0Y z9|pY#Wx)%f`rxHdpWv0yfZ#RIpx}?8YVZbVSg;tMsNl`86NAN=BnOLrr3L>RAuWS< zL34uL(8q%JLE8r(gxZ6TLOTYZgmwu&1MMFCBeZ95J+x2oWoZB4>(IjB-=L0Qu^yHL z{{j2u;D^u=!3wV0ql1mmal!u3H-dwplY>K`&fo~>wBT6iJHd(2Il(E=`N0|OP3&55 zHtaX7qP3H);^;W7;^<7XiZOr3DvthqEq0L>yHtyHX(3fw$XYFAgO+}imVSp8yIYHO zYq7Oj>^EBMVXK%+$E;$kPFlq*I&BqaS%b9=T5{PcM(mna!cDD&J6Z|%tYRiS)XHHt z?asj_W`d7R%!EER(dPa(t<5%ZH0NttZWH}-*+jppv@}7g2vJoL5~hk=QL4xlr;45? zs-m=|T5P!%>(XMYwAi((X!!zJkWQe%$8XY3mmT@8B&^JQF*)%ysoK4OUaW+j05oc3* zh!`K2R#%l)*V+&aksy&rQm8Gtl9wD8>s=WJh-*V{uEm&WrLeaYpRc z!rfY#wOW~{wUBdKh(`-a4i|aT!bQC;!$qrZg?GZ0;(mk(pC74}94TU#Mv7LIM~YE$ zMT)jnMT+^eHd4%=4UyuAZ;BMH-5M!Yk{yv^CD|P*RuXrlSV?Ll#Y*x`q*zG~M~ao? zSfuFJ$w;x1oQ@PL$+<|el6WG;+-rywE6L@^sc6rDC~;pm2x?&`qh7?gosJsWp0kTl zopL!F5GUGPm$(=0S8{~C`H8*llJHf<3Vd?P0R4$J_RR;vk3Bh!3GAlERCZruHZv>{ z@wu$6#sX&7*o{4EG4>#6~szV~E{&>AimjH@(3X1mRQ+N^4 zNh~G0h!w;tP_)}keh;x86!qed6}54VBNl+79vAs5L2aDKUqkU8^5c)KWPYNZ=p?#` zZlZ@+N7R{QJMg2(S~&^iw|o7#ENbn<9=n(qI#4_QljtJ4i5?>UKuorq zm;j3NpbQlK6%_SU601Q`e+~KT$X^eN^ol>V4;1<0$)5m<_M`uAnHl zjQoPaUjd47swUPEm0)T&G2cskr!3MJ5sN`lPAU1zK<#)?cqJ&>SwsGMVuDTPDdhNaFj+g+7a_r=H5S>I9v4ZF(Ruk)pN~kP1p6DPti5?;glj(GzIIrT!ZzmRmVtfQe zyPXtX28#49@>f#4oBSRk3#alykw1?737{xfP=wnlyZ{vacaYynbP+2-QLmf)9%3C4 ze;BBZrw$b9;>n)?ihAliKOu*CV*OhK&>7MFCc#r z`HMl3u9W;`6kkF9O7a&+$#E!-mgSX!B3~u>t7BySN*uL=m`^MsI*Be~C76p{NH_Uw zKr!AP@+Oe#N1<|`sPi7uj>=po_{(zW*3i4I~lv5v^HWjciz zM~o-hiTOkav4~gFSV62NmOUo(RT686^+a7e8J|EbAeIqp zi1oyT$7T8gVllCdSV^oQ))RHPR1dL$SWK)W)(~~=W%@W`0?|$^AUcS}L?^L~SV^oQ z))QHtEMG^ABPI|Fhz?>g(Mc>Lx`>rTH_=0^C*nm5+Pv2hmgIElTdFdp-hsZk6 zcn}kacA|q=Omq^N(tR~hF>xlJ4 zC7B0iq{381*{ z<&(dF{6*w1CVwgU%gA3zbW?Z@`90*XC+a%O@)L*!#A0F@v65IrtS9QaP<~n*t{(SNmkiUrh#pEv~e;N5Ji8aJ} zqV8$x4>2DU?Jgn~6U&Gd#A;$4QRyc0m4TwYmBboiJyGdS{Q|Xqkw1a_`Q$Gke-ZhM z$zMwTGV)gvYlt3-uO~n2LG^*6zBuwHkl#-J0`fb^Urc@{`OC=fB7Y_M-Q=$!e?3w6 zFB(^30kN1^Myw>(5bKF}#gBIXQ4EUXQAVsJ))4E7x}Gv!0o~V14`b8`t786TAv0j#uU)Niv zk0aWN1w;qYNh~9}h?PV)(L=;*mbBv#N3;{&ePy_Zh!-l!bVNJRK~(z7_;_MI(LpRC zI*Bf#o9H330aOpsPIM5RL>JLb^bpze)Q&>Qd}0x?lvqKmCe{&^L6o1E2#Vv7PyQle zDN%WW(i8KEMMPyV#S`m@ibIAwUzBtaoh9Tax``fQ11Q?VhRAerL?_WjbQ5bqk>2AC ze@W)6274>P%RS_;)BLY5XG5u6qMg_g6y-R`?5n7Y zi4LNZ=pwp_9-@9cl{10LeN+1FQ>5QPbUWob>6|XZT}1b6>Gu%X9O;iE+KCRLljtJ4 zi5?=GOZka*qJ!upmJ(e=H__wuzenvNvUyZ4(Y`?X?e9x=1hx4@ekajIbQ3*9ypBz- zKSVpxL39#b-ta{-y_4u7x``elTTJB=?L-&RP4p1)8aUYwqMhg@x`;*P;{1AjxyL2b zvkJ-wYM;M}4x*FjB9?5BEnoYqJ!uny1nsV%JdHKHe0q-P}J)rx`=L~hsgF)Jw!XvL39#bL^mI9(L-d1 zC?C=8&Y?cd6H2hmA%5#2-&5wAy-?I7BT4x*FjBD#qlV%#yA-%fN9-9)@VQI=1% z6CFe+(dFd{nchu|J1PB%pjglBm%BU4x*FjIxW*Ve~@$$-9!(O zou%@KcA|smB)W)hVl~l2tRvzTlUn-}VjR&AONA!54AFr>` z)`K{r9Te-FgXko>h;E{X$bO=7iS|p_$m2@16CFe+(M5C8*C9Ym)$ z{+>){Cptl~4p%*p$HxPTamNGvvVNkSI1LoXvE-5DwEs%l6-7($BD#r=Kt*0(f)sX} z4PE9AmVOU0PL+Ol6Pe#bWTDa@NA!eCKZ_tn%6xG|N1P0I#Y=W}WuE?m zCzp99QF|s6r%1ZqmUMrnut@Anc!-XT((fd?h;E|C8@^qpa}(osNWY!vAi9YjV%$zj zM|2RKL>JLb^bq5|pnOCJ(S-+VMEl*uxN1sAbP%0HmpA@2vMkp_ zv|o{a2hmA%5#8SSUt~Hb(L-ccWq2IXPIM5b{U(oR1F_?6>8~PwV+zgl_(bOY1lIuf zGu&mkU*Hbb}(-wI0h^Q%fNZyez*g0 zN8#$=>XGLLco*&uxJS0bc_uY3&lfHPE)*^tE>b<37YmmF*B1Ufa?o4AY^RbP_PVc0qn&g2lJM}u7o=dcLMG#oT&-=(&S)XFc=OO+vI3o z3YZC(2e$=o58TlvWAn~~bx2zeUV*y`cOCv4;BB}EaE4Hn8G1C&42Hmkh91ld2jk(A z;8NgH5uXj_!gYn+3w#c40PMkV#c;#n9|czmR|Yo=ZXVnMxP@>_;8w%!gxdwT7p@v^ zAKZSpLvTmnj>4URt3#O=;jX~lfd6jj*t|c`w)>zd>}Z}ZoGol@UM5^NTwAzyVQEhk zgy9&%^??7Gu!DI6VGl-lG2BepAH%JK+YGk_ZZF(5=)6#Cbe{B#A(Fo#2Lhy#CM3Z zi0=|-6Xy`;65k`vBhDu-AihsrNL)l*3hfAC&V|>H^uic-)_GBeP8x<`tI`e_lxpd?swVmkza!U4*zQZ@BRPuHw1(Q zBn7+^P!(_~;7&laIm_J6{IdB~^Ct6eW?xGyOE1e1%UH{2mi?A`%VkS&V7I_m0-b^L z16_eT1HTKj1ho%(GH7Jb^q|#2dxH)IH4p9){9>>xczf{v;7h?bgF~#z)+elktwXG< ztRGsxu+~_Ax0-G7woF@hTR+<%+iSLMwgwwlBh(Z%SM93~Rp+Uz)RXEB^?@1?5*5-s zBr_yCq-)5tA!J5U{lW^vUJjcc789Nl-YUFDcwzX&@D<^8;lG6c9^ND(HljmBmxx{wgCdF} z$|H6}9F8~}@kfL{GAc47vVY_Yk>esiirgEyFS1+IfT&lZmPDcjg?H~I>>?^T<#iqvP z#&wD7757Tq=(yM8CdVy~tBTticR22R+?BZ7apCc?@vY-?$OY)z|h7@Z`bV_nctCaRBPo{KD>6KELQk*g@Wpv7fl+u)0Da%q;r>sla zm9jtOXv%+5&ZpF;bZybAMM;Z~T5M@?t;OvY4_fF_15=|@6I0u#7Nqt}otOGS>dMp) zQ_rT>rQS?^m}*Qjr$weUO-o73O3O`qGVO!3`)Mzy*QZ}kS2NmXbk69T@qEUpjL8|( zGCs;UnxV@K$PCYHn%Oq9Tjqewmomp^mS(=2xg^t-`AO!k%>9`^WZul2)N*Faxh)sA zbhX^ja(l}oEx&JhvE|*CEXy}b&5Fosn$<6>FzdH0U8{AierWYetDCJ7vRh=g%pRBh zUbZJYB4=ohz4eIJI;;$OtSv@n!hd*vA9sGfI2-+02>uQ=f|>DGrxwi|(vv|DazbWg^67UxPW~?`IJ%?P+vlh(3(pU*gXG4+u z733bnve{VHn!SNs6ImX6lRd#EvkuJ3?0C}oN%k%)U~^eVyovuQY(jNr3s@Jnn03X* z&C_@ze>YZ+T2`|jtO~y)@FBjA_=xpnAG1DqSASo;tG^%Ky#E~gg7s&+*Z@|87VKk% zc=YZ!&afi(1ACF3XG7QpwCEyxnf;7bU1B5f9{y46SN0mah1UJX#^LUBJiCkE z4fq|uLht~s<;t6QPyZBVRNlhh#!kgw#yVM`Qp$qxD+E@hjD_LX2V#}!`1{xyteG;C zB`NQ)3}qH;sl3NpDf97u_ysIad7s&pg)ASxOwdF5fc3;L67*A+vgZ{19)hx*6)ENH zMP(I!eZj?ERo39G@s(_X@*$g}e9RUpYuPeo9V=HpVe6C)c<29TY=g3qZBsU}?aDUx zg|dU~SH55em0fu6{~mTs`I3F7>}98v8uo*-kDXKYvpVG)b`8H=@P~4g-B*sYzm)Ir zy8tJcfuF?tb5AjUeg=PY`vX(?S-kK6oc6x|=KM#j&KFn?_pmm+jy;C={6Eewv0Q$c zwa2T!pWs*7ll&U%!mqQZxlZZ9eU*RlXr(8QQJ&?oN+14&(vLr@Jjcf?{rMzi0AHd! z&zC6!`Eq3tuTWm#A1Z_SdZmOPQeNUml$ZHE8YB!K>$tKD9qwq--{?+(oD#|aW@RuokE`=w&!`OYqU*d|!u`3vR z1pib6ev$5d#uhZ-w>QAC#H!)4{5s-=NwS>}@U~{revv-_>935J{dwkXyiE=MAK#Mx zH7D@4JNS>clzz{rvVE)S@K$|}!PfBRM0k9~hq|AxwXe>*7s-g3H~LfigUUIf+W9j}JLGGE;vl1_}5 zXn*Ejc^o(Hmh>sa+nP|$4UE?qP=}qa$)I<9PGVeU!aulN9=GT3VXKk;d795BaQr@me^R*a1NJGfNoT1bW+l9LMwD@V|&19Ki?YB*i%GhJS|#PtbycP~QR2)k@a; zV_V4zgdautCL)$Ot-deT%lf_b{4<}J?>`{lLCg=)Z^tBAp7Emezji~?JD=aj4v_e^ zpxF!=o(cX8|Ic*%z43-+vi_z;GTj}V&)1Ny81v~5a5Hw+*h0MF8vQkZneh9A=YAA_ zIEXi;e$H4Z*b^=q?g=N(2e8*;czZb5XP7KM3G*Nme&ZMT^#<_Zhcf&wo!`43m-Tzo zA3{6qNY{V1OjntSx8A{j=XdG%j?;@cPeu6or2iS-&qrb15$-+z?~i2cS@?fjjWR)9 zCEi{Fem;w_5^&;hd7j2>mHgk%WAFJ~N9B9x=P1k*F>k!>pH;%x%P6-J>!eus24>6t ziFxuW!Ue~JM=)O|gWmpl`+MwpoVy6mK)LULowH?rZ-2e%#e5X?iuoug=A)oDUexm* z@_WnuHA9ZqTq@s6iK*i}1EkupM^jAA%K|2x+dgsra-`j~9qSF~e2*~;=p7I5dg)zXH)9;d z`SlgnRTb&H>!Www^{%(x>jGZy!NQTQ4Ck}Rm+`aYue6^0iQ^NC_!@@{7wd8}_`UTC ze=7XmbyLiTEcm_c_tK1UX^-&1U*oMWe~VW$bcSZeV|KFqI>OFqB6#mM7#(E&X zg5w}4j%Pn&32`*&&F8KEopyLDIl_D6csoJw`PTk>yj2eVr@z2G19%(R;kT?e!j4@A)Iz zE!GDy&YvLvpc%6Kcd@>R^Q#lZi}E*7J=?+Atz`ZC+e&)N_l}46digBAp>QMpKi9$H zl``KJTpzzi{6egkhruS`ci_v@G0(wmxIX;|nrYtY`pfotkLP$N?o|-~F4ofgJGWcak#WWT)SdFfrx zz1PXIr82#^PO2zp$3EOEfc=Oc6Jw_R&+@$O75#38^xpEl<@~dJQC=F-iSh)iXx`o< ziu)LGet63f=TU2<``^~%f3BO}_0+rW{{Pl%?>hU>b^Cu?uY2PB%|(0q?ZEK>z3ud# zpFX&LiuvZfKYjO+9IuhtlD;^OV!n03@#!x5h5J2`{x;3e<#XlvHJFZvWwwm}=q1U& za9tPan-LTI74|I35#!$<+=cUdFc^&b1kXMuSwB@WIY)AIYe`od$?5-)F&QGOx%^&|K- zT_0v+JVpN=ox;5V!q*Ix_ha`))BPFlFU03Xaa;tw^Wv+sIH!^R^V4V#=*0E@4k(WI zpP=`+B#pzm^8sU~nR5L4oq!F01ksyrEasyb;osqSi}sws@fKWuP*QxuEBy0`Po**K zK6wwVn?0x>-v02`GQIaWdCvpyd4G z%HP8GUz7ED?_0dr3-9&Ad!6up&J&*p{=NzX=)4k*5jTh%_JCyqf*JVL*o(d*p zOFqOn3;z)cf0a0i(tFGImM7}zi1gn3g?}C&Z@<2#IP7oZ<4y1UM|$sZnER$I=PBGji1tjt z=UlO$;hm@d^k<*JxsUQq-{I}Mpzu!uJ7fJV1-+l!|5JmvQo{fI4tf2F#rh%cPfBsT z=OTPzJRCT6IrgML@BOOx{#AUY5XW!QM{<5Xjq8oLZxz?sl}KN`M8u<|- zY1%EEPw2-M%s)}iKhwqDl;^oO-5>C;LAhT4I{4TAKm1Ri{LlUtFZ#U|{##gocY@9S zl=be%d==w51m%g(Y2NbPH}H1VzvbWRE3aSPdh+nuA?*1-s(0u-l*p1$*o9uph&Y zI%n-rkAnU3X0UTn56Av^3bYG$}Q}HJLTE1 zdqFwti`qE$%iBU2y%?2UlzQr#O zE9@wg<9A_8q2J-V3XbmxrbF+rnb5mz7W8+F0cU@p_nh6s_ZOVqNAEfN6I)Uo-yZ`0qh#wTQQK^6i;JW~YnW3Bo<2wP4ZyY{G zNH~<^F`IR;BcU8`>-+?EG?e34gg=EH3*~r!=SJA^P|lhvn_(wFF_V=ou$w_KW0h^N zGoYBU%68Z-p_s9Fc`jxw6f+jzFyOuTP|jN8n+AoofpXRs-!>@tRpY&|hbz^vM?mpL zC42*+;QNdk*rV`Ggo0mK-UoXuzLDVUb$lPe@h!(8=o`urXeqv(;OuRDKfzgYz)NdW0;4a<*K#2zvz- zb5FShy9$cmJy)*4{s_w1$I4aMYoQ$9vs{P09?ID#$_>~XpqQn~E$9j5HndK;i}0VI zoYgCTz;1wYc3HU(`wEn^Uz7*XtI8vUT!V6UUHJ?4uTaizDEP;2Lh$A!ygVPj(+$P! zQVg)~Kry2f6YP6X%qYbd_McG9D8(Q4LnvpD6f^AqLNUjbK-i22!d7@NY!2m2$8E6n zP^^AD1nR>>p}ssE8pR`_G5Gcda|Vief^Tp*OW^U)6rOXeZtpu}?uc>&)9iyK(XIpgueo;k}_) zsdygjeo(AMyaVi)p;(J}KI~VZm~XrQ_6R8E8}9`BRVd~g?+hKyyFy>%-JoN659oOQ z4D@y03;H(i4K3q+q0{(t(CK^tbOs*?UBCxH7xKZ-WxNO_FNborf)~Rshhk0RLtw9h za<-Zeh3$gk9j<&B>@`r#B|aSb86Sy|jZn@u@lmihLpl4LkAb}f%Gpjn7P<%DmvL6Z zCm_5Qig$hSiLk$ha<(7eq$zlR?IhR-_!QU&p`0D!Q(+&5a(0B5!u}S@*->5w`xun7 z|M2P1ANWk@Sw0JTkDEDgbe}+db)Q02-9~7LZZkAmw*{K0+lIC^gW^i6 z+YUPkiYuvZC+rj`$M4nbf}IZKEJL>kb|w_FOSczxTPS9it{QebC})rBYGCI=Icu-m z2RjeS*%P|`usc9G%hw%%cGVq%cGn$2cn>IN&*;P+P){gly>!Q6KMUoox9$Y&K2Xd_ z-S@EjK{Cg`POlU`a7PON-8~T*KHMFz7Ewqci9ki=H7y7h55BiM0 z1GJ|;AKFV_0DV^93EErV8Ct0C3VlJ}4Yd!3a^}$YfL#Q|{g3_`*u_xX|LA+c9sfv`tGvD)YdLC5L`LtobyA$$T9 z*EoGK?1@lZt@J}+FNAWoNIw+zVkl=H=!d~x0>yFH4~M-BisP;y33~+;$6Y@P_DU$$ z9Q_z*rG6|zs-U={>BqzV2#PD3egf>ZP^?1wiLlp0F)Q?wV1EY1tk6$^y$On0p`Qx- zb128J#)|Kiwn4EX>C2#B>Ze2Z>SsdT`dQFw{cLEBelGN&ejfCYegX8bej)UTelhf0 z{SxR={W9nY{R-%R^(&!@VKp?!Pyr1#R6?zW5232zV`!9N9W>hT2{gg*DYUs^BQ(jd z8JcX^0!=Y&gQgj_L(>gAp&5o<&`iS~XiLLhXlp|?G}llA%{T0WK55twEifE_b~GG< zb}}4+K4mxx?QA#>ecEsW+RgAiw7cOHw9s${`jX)+#$=S?Jan|-0(6X_4&kpE>S2$C z;;z_m5%zc}XHyK9pl=zjK&Kk6LZ=(9L*FypfX*}Ag3dSGhAuGNg}!h21G>;~AG*l! z0J_-l2>OBHFX$5d-YI5<0Vge6W-vgP8%)p@2485o!5_NPV1}+T1VUFEf}w{EHs}#U z2=tU86sj1*@y#)Z;;z6L30n`v=Obe@Y$Ft_w=ovB4-~7nF&^q?On~|un?VDNNzf3Z z_`U5WP|iY)sj$PKoP`_HVMjo*Vi+@FM?rBkjajf`pjbnU*|6iF_*7+V4ZA56$J*Ey zb|Mt(iLo6t!&>`qY32jf84ouOEBjDuizg<@_P2gB|L z#oRC!!R`UYr!8YK>}Q}@i;P2H_kv>K*t!TLSHkMqJ*(f%s^uq?D0^n zKgQ{>CqS|O7-zzs2<7Ze<1E;dpqx!M&W1e&in(f>3wtUQcjLx+u-}Ga-WnIco&n|T zUE@ONeB)w-EP!I(8kfLc2*tcLE`z-oiaBXq0bOZaiI7!Lj(4}OhE^CW5V8h}waZuu zy9&zLTH}Y%b;ggO>y7K6pBO)Zero&_y3x21DK|l}QW0@t#sjd= zLODBUJOukZl(Qd=M_^xoa^^7}g?h-K*!57(8jL4kUxae@v+;Y_m!SA`U_1r; z3KVx)#xv0C##gZN>|iKoHq!&BYI+0>GyMgPFe!SRrzRaV z#$%9i}X3ktrMcqNz2s*whwUVrmB+ zV#IPkC>Vc3& zP^`D6XJCH-#d>S%1$!wJ>#eCb?B!6bx2C?Z%b}RtrsrUtka?4O{Rho&jeOQxyN%cfH36;m1X zH`8?JZPQHX9n&o6UDIsnL(^R7Bhx&n;$4DQ_E`+I_$+}2`YeME@>v0$?z0j) z!)G;gqfZ5NlTRgdi_eG9tv(+^|LwC5?b#0HY=_S$uy;anhv4%m>|;>0-)AFK@4Ff5 z^xFcR>9-9!%WpgMUB8{s6#re&YyNwnJ^_27z5&%xzknL3f51MJ763(S1NK9k1RQ`y z1RR1^1{{G_1ssL03pfs4A8-QN&ip;JulW?TpZN@QlKCujiupXW+I#_8W3Gc9FxNv5 znJ+?*n=e66n6E&6Emxubmg~?pmK)IZmRo4aCs5pzTW-Vt6pDLt%U#$Tp}3|5{sHYC zcpv&)-~;G@z(>$`0{?=}3RDc}bs%oj+3Y|A^u0h6bY7q@bbg?}!57cWW@D%F4m1+` zEiVK|VyC4rIF`9IU4xKV?07hW6IgSejUB|Vq3QT-lWg`R3($*~;XDcL%4X;r^nGwA zmW|yzCv*VY4J~0W8MCo7=QI`u55X1Th2ROSpD7zVXEUHvS$CgY_BI>slg*~#_c5~3 zn)beh!SAsrd|$wWSF3y*^o!Vf-)ua|`?z0&ehKU7myIWS$3e^SYZC3COA)>bzyFZU z*0JXUvhn=xYvye1(EV<1&>vt%OE&i45-o+nM_F^r3(#bXBlslikMJ|>Bj^w8-_Wb< z&%g%#HM|!;8@p-$g|1gxg|%acl*hxf@oa3L@V3|!`8*;UyB@zrSM%q>SNfkTQl>A!Q8z2r1KeKvXW&64e1}jp_weqY9u+ zqC{+1RBvcRR5o@)x3!NX+0lFw=F!Y0%0_f71w$SA< zMbPq?Y*xzGB4sIGkCdhSvzTJ&CZsIopCe@{-x@On`fsFMj{WvkRyS1_J`Yr5w&S%Tm8vGsMR<;Lwsz=#rR>yw9uINMTYg&|0B~D3ES}7frE=n)u zdF4gr73D2ujLJ%J<5T$|dEdg3qVipR0J*w>i(`kMW*-03U|uekbB7 z-&uSy-_QTUeRT=CcDkv$4Z5wmuXM+Br*yyTZ2Cz3^ZLE|{rYQqkKu|Tz?fldZESDc zYOFPOGQDV;YAQEvH5q+kd^-B{^O@{3!)KAt8lQDOpZo0cIpZ_ZceL*tzB7D3^7Z)s z*EhkhjbA6fo_+)UUh;d(uheh8-yXlO{f_#b_S5-?`e*w0@t@%Tng7rJ!vn?zydSVW zU`xR6fUg674Crs3Xr69<&%E6Hk$J0mkNIo!F>?#ca?4+q(7^tIMS-IOKMLF!xHs^d zzzczw18)WDgCc_xgSrIu4;mXZIcR&(xu9D?e+KD;{e!K+X~B8Hy@Ov1o)f$%*d6?5 z@Koz!tKMd_J#H(oO|eb4eQ2|&nd(4wl3J!NRu8DdL&k-?6;dB^JtVD3>n1NY8Qx@E zlPOK+H~FZ^XHEXyA?$M4t*}4Cbm0NvA>q~G$HRXJH%GLHm=IAK;TQR28 z(p$7{QP|?u7BgGyX>p>(^Qo_;ZcMFBeI~6WZF1U-v=7t1Ogo*{koJ3;UwTq{L3*$B zA?cIS%hSI|KbY=Gzn|`#5u1^mk(cpq#?p-Q8J99{WIV{Yl=)|7M9ZX>IW7CQbhLcA zWt*(-StVH`vLyJEebwqvt3O)>WJhE_p4}_^rR=w|XJjwU-k4pJ z{Y&kuxS|TF%0pl{p{hY|h!4voGg(&Y7G`Id^j&<(OMXw{F(@h1TO* zGbP>n%ql!ffd4bC%}x01hyCGfYvO%8!w9Rj_1#)&wY8qdca9>go%O4`(#o|SL{1Tw zXHCF2`oij9breb~-)dVdtpe+%FQwJV`WL>b6zMu!qw(Fou)111-;q`~>u9oiSi>jF zuxG5f_|99T>t+3FoV0pdUl}B=zSf-&rS+Wk0KPjE=>}M*J&@Kw>leeMHOP9CY8z~g zLVrcNBI}#KORLzr7vFb^upw6QU4XELT1%*uVb;4>W$bY4u0NzT(z*ptMu~KztZ!3) z$5_YXDG?Di)~b><-ul@X88*TC?-!&s(Yl7}m}D&&A;YFv+u#Wjk$0+f=Wc10T7Umq zT4mNHTckDJx_6YcW?I7?(wb#GfNyO@-r3e!Z^^K^)?SZGYo66Wyl}6(k+ctbE7d`J~iyA9qd)w9&N~^E! z+F)rtXFE=3_W)ZjYQaF;Jz5h7*$z_s2HTF)Tr0Aj>@D*a+dfa1))3n*nmI#l!zkS_ zTOOV9!)<1&ccks;W|?D@t%_PY#+E}PIo8&Mtns%0QjQ5W9}1gj`;%Ha$+norWs2>O z4`g{$Z73vtJh?@ z1-1%0qZZnh(@|Y)`|zQRU1B?XS6a(#KhV0n!Zw)Nywdg(&9K$ByRXS~6}D4kRoWJ( z%CHY@$<&sQZNuo=v(8paSJO{yov6Q`+CHY(jkbC^Mw@Nh@${NF(pzi}x_)f4{Yqim zZHLL)X&a6gKDS_%ZvVzrh)L)xgvPb3!QJ2$k3ss|OPKK*1vt?|g z+T;^yMXSqxl~$~}jjk^7YIj;$6V&;1rZiI*J(B5?R1dW;MV&}>q^fCjRMXYRDP5-8 zhvsgUnoDy$Tg{=8TdO5=WO;2><6F{dr#h)Ex$0DEOP;#zOBvfiolLFISN+?{umUxZ zW@0DxF*<^s)nk;SYopaoExasq^iWsQ`TLAIhtA(#Y67*Yw|bq9d0*8uK<0Q(Eu~pJ zKwU)X2C7@=2o6%8rjiG%?>J?SB6ZabX%(xZsJtPngGw2yenulSOiiPa9Iie==juq+ z__oYDO8xy)X^m0m({*92dYQt;tM(x>c7kf8@+PXw>1>>&aylEQsFw!GbW>IT7o=6H zzDo6$sV!&@O;#^VHN6mIx>}NE}gX>s%d0>tbR)) zzD}*6WB!SH|Gv!osrrbnTN~9nI%hVkUvH7ITT~xv={7Z;TD4t0OttM)Thm#wOT9vK za*t}J+V-lsyJacWYC6rK8ntMl4BMyPpmTM<`ZA?Epe7HLv4_+mIvz*VzvjrWqiPl% zkK^hBYSjs~4Xw}LtNo~br_?rdRL`gjXbzoK2U82qt6k|zazRa^BVDKJ@p(&(bG`aL zweO;8qF!E7JCJonwNj3&YAzk$>+16~H*Tn>XiRUZ$El^a)o)tM*56fMq51NMD*kRw z)OKHOAnSqJyp;@lqz)S)EIrN*@f&91p91%8>p;{a{^4_BR1pY$(Np>FYN2M#fpmbv%r8}!rdgIxuKCE8pi|4BPv5QK7_OnvNE-6Ft zgw;4aUo{R-SG|sBt0v&dstI_mY670BnuuqrCgO>zH}O2x6g*8e174`{TcyekDo|~$~ zQ&W}90B3|V!TG@X@+#)X*WoYc*Wov-H!(Bc!7O|y3*@`-m-JtgF#a72=Ofol!d2Cglhg?fzt zOKAu9I9x7Vd$>HfC*V53+2Qixo`fslJ(Z4do#38=>x?I-x^Rcm74B)cZoEk8&R@h| z|G$X8{(n(<2G20{gzE+OEFY)zhU){@7f&+bZ}{;xfC+dTz(l+a;7z;@;7z;@;7z3v zZV=oHaD(9-a7A!0!WF}nzzuFjG+GlItx1j6ltyc6qgC2yl{H$^8?Bj*)~rTrcB3_yEd0%JW7wL;uzNarEb-Se zjTYC-egv^7vherT`qJy-nBy<58^b0vrd!cyt!%VbH(C{qRwY^Zj!WNnvRLJfu-?Jv zb}^eiq*y$)PqBJfG8TW$pv8*o!g~GxA@6NtB+ah#uy=N6Ne+k9?vUb+NQvSuN%KPz zN1T~m?owW@RQ)-X?e1!JRqv3tgmQJ&+ufz9t}51BH8V{`5v6>{h-D;H1S58W0FkZy zi9}i?6#@awC`#-gkr0PU_$Q38HWGk<3CIc{AVwS|d7kIoulJ*8DUyGJaM@G$o^$T^ zx#ymH?z#8<@BdGx$g~n84&cVHq5ZZi`hi!+@>WYUw2%&F;(ElDn|N2!= z_g{q2e;GpmRR~@EK2P`7r+ny-L+GD}&=;=xar@RaPxt57j1wE0Pa z58mNZ{LOcG>|3AqpADc=(n#kKaSvU2iO;``w{%Ybw7e%2-x2V z*xw1*-?{Eb@OJ{;mjd0F0^OGa-IuQW5&Tj}@dv8Q--gfT=dXPge}DM+uRZqa<^TE0 zZ(RO*_McyV4S!!o{G0GU`xgGb2|uxK;ct2Q%TN62l~*tSFHgOC`SDAyg7($Rzxw#U z{f5Ucef14r&%XMG&m#Q!Yx{5dsZ00q_v+A18pStwtZ~ECw*RK5fV_R4LUHsjD z$JUj;qU9&Kfdy-@A$`8{(Y4D`;WEW{QHl6_3__-><{tx>gBIp z`VX%@e0=N5DgHi-zhA}QH!l73TmBe-U(bH}EwADCYnT3qw_JJb+Ldo+fBu$l;qU5W zfBu$lW=C)R7XFr(x32t0`1^bK`=!TTe)5;EZa(=ZPkrXe-@Cg1rayV=;HlS8*FSpt zTTgxM(z~vG?b3U${Zp0sv1^ZC+P?Odr?;=YmTh1A<*O6m{gTRMe(7&q|26cW{Nm;R`q{_PjwyKRZ-ef4pV+$cl_&ni+rRR}o4)@mPyB-)`pOe;eD^;?zW?kR z#{P+C-}irAJICLD^1iQK`o;JEoy#Bkz}GJQA0PMx+_*7DAN<6nw|?*!-tgrot~~ae zAN;NB|0!Vq)`vcS{hxp66BzgZ<_+)rkuP5V4}RpguK#a8^7pU*n?L&b>;Kb_e(KV1 ze(=A${#N{b_3<}<-!B%YXe=fp+``%KN3q zPM+sImdCSy^4PnxJC}YKfA7KHGx&QJfA7WL`|$UE{QV{TeE@$S#NUVT_hJ0~2>yN) ze?Nx5kKpge@%K^WcN2fNk>~UH{TTjUK=?)ceH?#3fxo|uzn8L|$6m(oPvQ3-XeRhO z!`~EtGr;Ef`!xQF?2mC*>iw5i_`8q4UjPi^=%w}9+1Yrx92ci~@$#tOzxC1VrI$b6 z@8A4rAEE7hxj9{(<%_{`ws`r-gKrE=(U*t){>HeNPX_1flR;5fTIO;~xpbFb{A{+&`xBcVHwBONv3RX5j>^^I zmZDW6gT}0GH&Qt$>hzrOhw~9w^G-e(^#+(jOLnMXI9?wY%|X6gjPv{X{$K(2E;`4( zQ^(9}`FMI_+^s<}`dTL{7s!u=WiRflbd^;WMc#bA#3L51w$(w|vm$p>+aj?GEM86A z483_Rn^#~tF=#HWKr#ukZYM<59%4q4~tV;Z9~M0 zQ!N*?OaacXBcS?=!GqxpqGG!27fW=asw9#-gXw6JZ!Q+L5(-uuKS4D>8{^~SgS=Qx z#JPf3>)Z&u`C=23-x4%wP$SjNkAB>yfL~y5DqbzupfR&sjZ_Yb9unG36dztgPv=vc zx-8Qz6<7~*4ERvv-I%Qbk!z4@E=B)%hW;L&_D|dpU63oly+xk)X8e~!3BcXi;@)Vy zD8bs(QU0(5aa678sE*T^9Zt^%&_nXk{$P1p?B+$`6c?3w9`qPQ@2sZxwq}c+@zmGB zJUzd{&GhoX`83<)@IQk0v{&qI3aS;n&WFET&vKTn{G| z0Iwg9PZ|)#a!{N$z{^>fTxV~&JiS2it8G%0rq}U!f@L@#_3M)ior+bY-(KdLbBKEF z0>Lg;i%GtmO$SA`hXVnR_xENuvJ*dMX@m2*^z*r`}zN_Z?Wr8t%k#KCFh%}|x< z#d0c$*-|bLsED)13N%YhP#6PWBo#r>lrp3XjNd3w>ST=q#gR1%6o;z{6bG&g6rWdB zpg8#JiG`G`ad8Gg;|2=w+K2%b1OUP{p5lJ;uQecUayQn5xW#QjBjRHhAT9vkdI5TD zQ%2801#5yo5AC4|e)D4&AZ}4qG^Rk~8WC(3kw!OaZ&yPKJp z;hY{X^!pD`5dhhao7n=nbl?Bd%P;o(li6@EDQ;$)50|7o>-V?D*eXoU(b&oOWZIiO zfAf|Jxg!h(^gY&D_9d8~fO1p_-NS}GpWMEc^=5}qC=h5ZPGF6iF88T5!DwL6&Tu)H z^kx>ZbwFATy1dByW2H>M1y(=<_E3?y3Sen1#W7z>@#k)q<5=^6*CKhFp>)kFCFBZM z0$_zxJnqU%Xza~OaV$@zIF_eU{Pv6GI2N7~9t#iRw(ua(w0wwS{POcyO|zF~M?dF6 zXM?#5agbcFDZR?`%|Tg}ZRAagPu8IVzkQqH@RrSbjPq)aDUV^c*>@`oZ0}S&;9kkk zH52y-;{~D{`5fC2umr;Gjj*OVrYjMW=}G`FT`3N(LEN|kfu>RYI4Q&x7Z3m( z)>DM*!^=hOwhixXKdiSi?u~C#s@!%{`(w{#$pj7awhVUj7Qo(fX_ujk5O-aIP}(IW zLiB**o=;uWtJdg{6pb*(di``TJ;`CYdS#5=E`}T6dNX0R`D@QvGoNF-o}>1Dy1Vf_ zfBDmUzEWevU5yb+Yg{5kjTMhIE}>E56pe7bYSadvx2iqQs*#9#{q6q8$^|1DWg!Yy zJQiF+qu>;caBW(A%*q7H75759I7CauDISYUqX;M5;g<`u6JSK1e^K-Ku($PMC=8*r zQxPo{rnoB%;Vozzcd!^@AI>30ewh6q`Pd6Dyf8X?FLVZx?Zs*lU;MY6*Z4|q8(AjOwq zwYEA3$hC%xnI3GmHdZ zY;J8HZ0@aZ_V+sdtyUKl2X|WsDNSpywezWN8zWRf$G)_h_V3<7le+t@_08&1)=Xf% zrCzG0jd`oX9+6%==I}chvi9C~HM3+*RlfVJUYl)>^QHs|9FM+8iCiIEo5AXqx-u?| zvI69e%Is-vCFOZ8>wRi}(oBN$^ zyVt=yXzxLbT5BDoy=}e04vk%Ou!%|N09LP1`r&@R*XdI(ioBZn<|lib2bdK7-sbN9 zj;C5XXzi`vk+gH^ELY5{gU$8BgKqoPq;zrZ+NY$-wYODFXe!9jtq=~o?QR#`RK{vP zI0>=&NlJM~p^n*TcO|pH(097vt^RJSw|=LR!^Jep18k2}ePmHhskUq#Y<4ZjYRBxp z!eX_Gwz})>wu)7jT07jJshvV~UeS;1If&8LjsVti(t(wF7h}5Xa5aGMWz^YH8y7}tmZxOz?4vEcc4sdRiE4{lZ8m_>h;{&1 zy6bRnt#h!KbGG)h?s=5DN;#?(ZWfEP)y_0H}ta(^^sYmf7}N*JcK=78x6tmfuA z#1#~uSQ$6eQ56#^q_1geLVGTdqO}KUn`EfgVRdhWO8=-5w~);mgwHGBohrda@U#@u z;!0^>r%S0DcC+=xtSGjU+L*|s*61`ec3FZ)qo|ruCApBs=VAT25p#%LirLY-v*~j# z!8;Jy*>3BT=m{GwD?QL)>O(K}>ts^3Eoxqp%m&q~hmAHWRg3Ybg;f{f=@3+uCigR#+fi*dtTJ5_R4e6Eek`ID@ zGD#(s2n$~Y#`WT$bvHZc?QB5a+*PHx7-0SRq#`QQu`qWj1`WNbRqb`qPGeSLS`j$*Pt6`Lf})zAK~>BCh>gJU{O}$R zru#>*E92l?Q158eIr=%6?sxO$KwxxS1p?dou~3Oc;TWc!{@hySay#D0CnyX~4>(3x zu8K`|D9-y0+~r9ij~hD2g+Z9x2v)8BNa;e9T^K>muGpW=mqnlEEV#xXm;UUyFe17Q zz#HZWay6$>a|}~DVh6cD)kDO$pg%m4DFR0r!`w$y2OP4O0TUcfdkT04jrxP(r&r@e zfF;feo@^0{ta~Oj(9}*5JxzK{=waqt5UX$JG5uj;Q?XHYBx=+t94>qYCC?&`96Irg zNKtAe;k!YA6@?>{$+?ZNgU`XuI4=%8=&RteK&{8e=ftZbv(>U6L1Azm1A?kEvYgP7 z8k3~=2>L4+_-r;A(Z7>J3rmuM)BJ&cy<<|w!%&w&)A_HNp3G&VWCqKMBUqq@*l#f|NJnlFeNpN%It>RX;e2ob;>>HRTX-pN-u0z|`=c@=hygU_ssvy4`8 zju4L#TLq*pT+j^Cn&4lrnA$g4gos!Q1W3ZkZ>j+Rr)h*(dM0g*7lGh`dC-OU_IMe> zq$j&R3=k}sNo=Ue{z?3vzX&}#YKWARwmCC z5!kWc7H7HQn(qp=jqhAoKdNTom^Ch$0k=Mwa#m$W=gYiMC=ooT#8}*~wOXMC9|UaR z$&v(7wE~TnJkAl9-|=L20wLo|wjhgAFIseJ6G$nd*UciI%#dtj_F$@jR}c0F=PvH+ zx_;zg`_yBw%K3Ou7v?TeSROsVt!zFjO{6!2>XY>r=lo$^$se4w{Q&?X=`UxB#Fh}n zK|q>(lsOKw2*LD~EG){2nna21K{8Jg*s>C*4&zdb7cHZKit4V0!yF0|gaoQM%DB`y zX@!l3oGVPN?ae%Rd%T2jb?z6^hgEfGdr*z3HtrG6 zRbWilE_kYhRRELNQnrgbU;;k@E@C#Qi#9{51mv%X>|#yBp%k({gzn+wTq?J*XrwkBh>e5gsege;1-MX{jq92hT5h8wW#|!_I|u8LIumg)#HVWjD4Uq zL&pW3aM%ZJ>|0pD5jKSOJI`}QnacrSX9$nQmR=NRkToQL_{T;e<8DFJhhQeSfVf!b z0uL;8r3bFcX-=ka@OD$dI=SsYNoo&jlQ&L%Ofp8qQt0|m_iV-xY zZ|Ba58r3dZUL&l|Hdd)L<4ji!@?Z4Mfyrs4QYIt8>7ZE4^QrfU#u%6vmg@p~T|t+G zGODU{Ntk>C<#RmV7*EJQbgJ5$)fc15Xny;(WLf~kt^Dm!mlVDEF9A0vFO7q zhjnAwab0a7=wN|;M0zXWXi((cWlpn2Dc?HWc;H}$Eis1`PTUNb62cIKu-#rnc(s^d zB`s!?`-oUU^uUKEB2RqiBGm~+efj|icE=C#uj_Xxq^4MmKjZT0jIH7NT@3ld>^qZD zz*vy0BSBpL`P-ZEU#G+&gcXMXurhy~YZ8N_LJ%t4eIw{c6+k>#gFYB}O6!5XmS#sL z{R3g!`yvo{vTr)1Pg{;*$?IEfJwB#$r64aV>R$IjR7!ag=R|eHruqB4Tv@VEd01?v zX+p@4>D3l&8erQIgbGkz?9G$n-8(KT3d<8VNlo#8_Pju zJ;n4x(q%ciGXv~+wt@wSA(qcyt0zO;`}21%f3Us6@6iN1AIc`Kz%SqH_jwZrrm?MY zP7L>qbtvasvH`3U_^nwT(;n4fwneMM-QK5;h&!J;PCK3ku-k6bF}>2hc}h*)D(6JT|?sRi7QU=H8{Z7ty%)Si3JTksKNmX8^obc^^AwCl6^`6JN#xKsXM zwrHqJxX98_O-#!bY#+zPBZz=@*VSsxgvy)Ob49N;BkrEUAg3$g&3LmLG~;@M6K!#u zvDT5;HkeO(Gm&O~Gs@5XW-MlZGopv(tloZqC$83A`->c}2pnU-W0&S?1U4OFH<=z^ zF9Ak&?V0Krj$<9#^_Sk7(Pp=7#<}hEU^<(^yKmA=bO5e~wF`x;PK;h1pRLZ;odK$KbOdAWm=@k<`p(pu3b0_;b88U2um`~T zvzgdS-iv8)ZIIh8uPy9yw_7i^Gu_KiaNtnZw%2lAwbV-mHD+RlP5G3rC)NqN(ucMN z<4I@wI;4mJ9ZITu&2*CX4PIr{ae z+@ln;DQ*`u_4M`_7Hyom;r{xBhWL7QAvFS17F!pRB{M-Lf_g?f*!E27VDQ{YegW=q z(U8DoT_b8|P%Q1nMI(B1I-1Wgu#L#p^_yicZNoC_TYaW97|U04 ze9t4t2`tQ;IC#ZKqFeLHxM(OF+2O8LL!F8>9U5b7usz{@tU3+%rtRtRtd4P}Ck;i)L%s>o z!WI%%sd^>v=naGhgtt0hNMN&pN`+G$8!~|MS00?UL})O_)JR5sIL=a=%?P+EHb zZ=Vd_)L>pmN&Xi9JI0q5|gg!OFy;Nfyqa%_6Oohk4XDnXoYa6&uV0AO*5E?y z=0jM`hhr_f#f4P9>K76~A<%O^z45%Eg6k`sqMq5jYeJXL3>FO}dh-Aq4W3Li;T=x| z`#7|LhFlz#+gUf$XeZQ=78{)gs7+s|78VTzov9aXbw&gZ>yneAk0is4gu*Z_u-kkT z-M2&Ihw|clyk)teHQG6Bp3RrIo=gXb1`^rP8sN|fFG88HsrL^A*nAGvuC;8!nPT09 zYfT;u&LO#BG+XSq}?__Lw`?m4-h0vnYFb!fYQMHv@+4d&52GGpwuBjABIYI=tEOYFeSPZt1^sd2aPsNQ8#1kK#BP@88nk(8qrK$ zGI1(F8G;?ls5ir2E9+p_c?LaO4dUSfSF^(LZZq7uZuk2`c{M1$0aojc&vHeO$VlByXdJ8IG*Bp(2Y=xC zXrerAqIoj9#Zwo59wTKJ2(W$ySG11-G-8;f z12L~4rjd6*(l>{9xjL$xzL%zVeatJkm-nlX}&CccyBgM=2x~i zOJmqzz%;GF@^)$sZ-{sUVgSsYIUBxE#c(k`%HdDr0x(QWU{}Dwy?n|RGM9Ge1d)lj zJCcoACB)b;HDMY7$;lBF6SxvK!H*hfna4(cJir@vu`GYQUPFv(lvpTYx@oBU2CR;z z!bNLvW`G^c0w@eMcxy6AU|4I=As8O`QnsfYCPcC01;d7Dj%RB_1Y;e-5{ zMCalDN*f3q!h1prh8Ua2AeK4j@zTxV{>cus)BO;|QpR4j4CvlOhkw`4c9N25Tf{S1 zQ<|Y7;*x@#Ga=^as^TKYX@of%pkEj*pM!M;-G4Bc-0Pnb0EU4qI$g&Z5UK_%_f$bn z2<@pALr262Q4k&wtHM#xBvE2{%p%rMfDm_>B%luy9$7u4sen|P8W1R~xr%ZF9|}ni zmsC;-fHuTc1fvdb7Owj!HHV}SO{JvfN$r^yC{A3fT}4yO;ko5#_C9d(*S0D!2r}20Zeu&*jfxv zA&3+fFTgsk2>-FyEHkR0dzD0x5PAwQWtaPQA#9XNAk5wkDr!ey5kXWP%`v@ zrKd$LsTl_RoM$dEihZ4CdBC&5#gcpMf@dHWu?Vz+Lt=EqfDe*I zf<^G>iZJw6?o{uP(zV$X@&L8$(YYhd9x;`{WR#6Sjj8g5Q!#%-+&Nh(Q7%ZBpWPO>#yeHe=vPr2b{>LC>LkV$hG_Hqx? zKE+H2xP;@O#+g1Qn$jVhe{WVw>H!zV0t>B9(@nc9pRlW5SeDaMcigTi$2qq{9+=*m zNoPJ&3N<)=`8el|4^tKlWg;qplCDiD-K4Y8_lU$chL!Lnr#HC;n7Q@3r2uOJ4L@f6 zcF$HLM6shepog{EUR4)uFQP8E0EOgS1|4Cd+DLc7qE3-x;XRs{CKjg1h4Nt$E=nN+ z1;n6Z3>5T4F_QT9Oi{R`T7a#yP&|ZL=bZ;R)1t*VlyPzRvyJl%n?5+F&FguiJ5ry4VG~gX3Jh z>EZ`oopW)ncy6*eh@VV81MiRF;%gNDE_?uk5_XjIH}KTHxV_nf;4$EEwpqkBbilFl zS!m!~1P%6Z)!7a?9nw}27ioDvUz?T&rFM(<1$rOaz(r06G`Z#?pv4?<5$OK7l!DzN zMguC8=}s<=PGTFGzk^V+xZpx92;Q>}df>d4*R`Ix#~4G3`OF1-kd10;zHpFanmGu? zW|;=s^l;cJo((5CX?!r0Qf zC$1fUP1vNe=Hik8E_`bJX|FwNhGD_RNiDR40xBE2+C1MmwKJ&9`o;E~UY9F90IG*I zsUVTV>u5nR;X22L%VCH`R@-Ad5_o)Uhr@zEHRDdfrnysLd{nbOAR)E5uqqCnDoq84 zUg%KRmTC4?|>QdABP_jN2R%W818N(Ke`d zq9*jQeNzP*FC4D@tSp2IQT1_9+7z>*Wjv+(nwTb3y&oQ-rPF!dFTl^$d&4+PrilBnmP!2^^CIfa3)c1Q{lnB$z_fw-nH- zr|Bfw;Y69UjPUx3oYDJJ&MPVmHXIcMWl%!lQwNYSgijm5F0T*=S6VhBZ;h7CNl`vic6L5rENtLgZm z0_-9xG8y)WZU9Z6JyRT}N4WTOj@Nk66mtc818}JrAHJb#2!G8e&m%p*{wU1qJ8w~u z`f&2a3BGNsM>Rr%z5GE4@0v%cC3az`J$S7E4IEFg1!Q3G&;r!01W~zosY4Npja?r( z^8r|H-Fm=)zSpE79`eggYM&06RkDTlX7V?tF~x( zK;kDSkeoyn+QoXh2E*vFCtZ`2R7~dr#>yU>WYoo(JZpgRqM|N{)6J$Q_Ewf)CV$Y4 zJSHT&Fe$G1=s?3okW&($Mbx(GgVtCRAWW_%$EaCrHmMr*B9u>#a=0zPXlq12#3@Tm1R6|6I13K7KW8RPNO|Do zgA&u0WVxWe=31=wyWm*P#!g;%g^}X$2xc{2`GOLdXE;Z~zmVl<#w}Xh<~P>iBZcD< z>@09|>x8bfxVH`vyUFw^4sg&Q9EddxT93O*h<#WA}^P0y#k5xevM(ltov)vYWJeqXNSF(>Ur_#=Lao8dgbOK=5^Um=b({xzIa7t4PL6SBvprx?IO@ zfoazV^N`0HBu{2%a0(h{k8(wLRJqHIwPL0nk>1%y7cMafoKKUbqRN{Blm*P8>&{%1 z;#eNOCZJ~}q;9XX0J;||0L!5TM5oE@_oCu1Ga-mKc|Foa&Cv-i)Y962XtqIu;MC; z;iC1O0TPD=K+2Dx7y{^Y!`wDFv8pZ}55|;1oU*nH5->S@a)*GfzrA29+_NoiFIK_Y z#Bo5`ofC-cWl5akuM%~pSS$%CrZg*Q`Kl?Q^i(`yAFNB9glLtP{1}kj+K0$?zO1;X zqALS-7c&lHP%Hzabpp?673oYv92N`!x9{YiV+$Y?x@=p-%o-Mc>E)Y!*vkEACbmEW z*5vXHexgDf@|Suq-)Os=(6hx$z4mmzTE2Y4-;IV@fm0|Qgi(aB(~~F`I9mJ@h+DKA zgo}l8lQ6|@MaLy-DRwOuF+YM14tyOF+{u%G2RvC(HPUkdN(kiBjEzaS<&OtcFSRr+& zg4_NciY6}%#<@vOmn_3pe4)pTFwUda5=Ui6E1-DyHHq=HBNFhiGlCDNs4Bz(Z7*fa z272b?gz!j>fqHdZj7u=TGm}vyl6pgx7!gkg!rv;%2$o|=$)FR)WL9dvpi>teQC26X z5otQs7GAQW2gkjL@Tsu!!&fQ7u^Q+2PU|cI`RZ<=*ItFNZA9`i0Ua2D9879dI+Db5 zQTsf-FPd|Jeg~F!M!{GiU%L5`$h$ZqoqxtIY)ttgg5_nkrq4n~AkQK621-SqL<)I3 z$EeF3TlzLXXS(d>184{oRYfG?M8sQIZ1+Jv89Y=d!Tah%ml#23hzUJ{9#Xh&ewv`x zce_tkcXNRXrN>13WRAnHZsiQbcfP z2kl=!EoXypm(;0?W52{hXrVW!ILTQxXstKe6pt@y8}#xGPEv8OmRSqAb$(>A{2`nj zFy$tec*~qIp;92E!cii63+p(wo?K!&SelHUQJa1-DLHFYBUgJ zBOl^nH@jJ=1dqOasH|Rx1nA0@MeIKK#a0!FH?(|JcFoH`Q3&`-RHsSU^$UF`w_lo~ z1aNx~wywLHFP8*8NP$WS&;?QF7^7m3t8C)w4SH$; z)X@u}2*^-^-yT$n%qv|C!;ZxtXSpT-vzm~R?)))idrF32W#SJj&~VDF=lYJJMQcIS zs#VZjBzldgV`~FqSh)cf7L!_@0LX#{e8Cie{ljAB#mEzM7y}_-@Gd7+WDE(r2S*S1 ztS_y)y}^lFd>N9)&j3iZ-JqJ2;03;{~=(*W2+$w#lnG+aRC(NLgwvhXe%%5x>8TgeJGEl^5`bT2@ysIf5Fvwx2&*tGoj1dHU@S(B#-1@EpM&RAD;Q~! z=2q<~)uE?BBiaRg!}K_ZlF%8TD6ky{3cHef%*yS&oan#dR%c@F4i>a1p!Dc61d$Jg zm{2&d&7f8&3{l}iIFZ7M{PFmqi^D2ciuxgX>^xP#qQdo-hiqu_t^VXqk zii2X8=R&q@C_T`-R4R~{lneaItKTEz;aoV6go>pb&l<`{;Ts?O38^VjO@veV3Sd^a z0c>qI*BqD|c;gy};ZU1$TT~eDK*NAb1l7(6Y#rl(AVwvENW8&kc#qE+1jA$E^=7O^fv~H#}|~0Vlzn0XDKh!k{yFRo@}6G-{AFviwJa15HunZApK^Ix?R{WYm9u5v7J58cElKD1okJ6O|?#{WayYPz+pwe zLx!^BccwaTmRaY41#Mo)a6%a+Misle70dv1es?>t?Cdm~o@TStEHNfQx5N6XMFp|~ zkuJV~iJv`eis4R%5O>#jiP&XLvl>p?r-X!KEs&B+It#PH6KD2oQE7HFWZnff+m{ig zpd@azY4r=xOXgjcx9rL%mB8EUF<6O)`W_IhZSNGtSodfMdsCVGeO9oFRPdYXR=yd6{aojnkVP zHYF@PigzpVfw}AohZkG5eNki{AIirf1Vv2HaEhM5ptB{h6FDv?fI{DFNdR0rk|>0? z)=cG(>c;IjFKHD3%*@fG&F0!l~$phNqIz!kqY z#j}zMvE~Zgh0O&=>k8BUg1vykn1McMn*u>?QwR$qPv)KVK?v;dVQf~AV$%hkD}ZH) zM)-$G#FrrgWztfjE2*0Ya;XuDSr5RQNinF`E<|P7U^Neekc;gfU7bU2btnc5Clpvm z?lt0!wK0y=itw0KM8LjE3EUhtYBp$4SQzp%ge8a~I20Yb(va*o3=b}EiiBcU0nSJT)RiH* zVs@eNyaJ?_aX;@L)#0mQpN*_xDnM4n9aMW#q}s`+Cm6UOt6d!K6E1}L=t8ilV8`bP z=vHBA;bmCxcvvTjP-+%Si$Y7WO@tm7(gd}GIoROooO9+XRTFz-b23Lwq_`HDCvFzhWb?X?lEj*=?DOC8k3nfKrO#A%q@(tiv_YR+x3Mwbb0EDAx;;b z5aBx{A;OMzmG)IrX%(0~(^N`jw%!0@SNk0X4C{IdJ|JbPszD`lU=<8x_Rd3y>RTxx zhV7MoEG0l-dB9e$0%U{C_7UhT+X^tPFU%r%SS8Ry0pm+bzCTEL*z~NHIH?%})%AfX z`gjAg6&~V({qR_y5AF|r?qCai6~xD=Sl2EzMl>(D#8?#QA-#_EBZVCq$2c}F$%$fw zui_)d5jZrn7(FvEw^O(bLvEWM;kKdloBIf_5=IQ$UTES)nCz=npt@xmAFGSx?zU9u z0Jr%=-JQQwBvnt-l#wq|pmvaEB8G3>9AEG8gW>Y>Y#I?<)WmrZsL9uTe7c-30+;f^ z5Sz4)c{rjfSd(u~DJKSvJ3`GZaa^){H6Vmp4Hl}%Q?kCkZk75>;J!Vc+s}~RU5J&2 z03f1sya=ynskuT?JIuHQhX`}_0GTr_sTqPNBtOJQBk)rqTsat}#9-RZbHlr9acV52 z>OI&+?Nc|3KxHcM6g|M~3@7&#clwuwVH*btF5aLc6g2aiF8(X-Mi&*DkkW33Knl`W zPBT5lBflJ?Usl`v?kOmt)8f4++#2dD23t?!@D{dB`gq}hs206k?wF#EGp{`N zVK&00k!{}8Hkgs;GuR7hSfMBiRwi}?7Og3V8z=?$V5(%qouAN}} zrXwdnO?6R^I436^?_-bTqu%?%ulG9OSmEtEm{cL3;AbZfcT-l10JeA2a7I=AR9m1p zoWjopi62F?1r2wS&4&D!5Hlfh9w!7JwW$sQMlDZz!D z4L|)FlNo^E-ivg47y^$-pqH`0?BfFnni6Ii>hpsL#`b(@Q4?FwDhdXz&AqZHL=uIS z*vM=b?(7&YWgK)KIY1v|&YU`%@T8q&eLU}hAM7^x)&qElSKqJ)M1Wn+UuRFnb{(L^ z+i?T{7zT$p2xv0up$M{oH5m^_*x5q$QdqW+&3Y;#u;qaX?PxYDL8*EQW=8sODu82t zD-f?h+IoxMp(3*BFvR*C$bjpKV$5W?r=n8iX?%F)Ji0j%iR<8ua6I)XN^ex!D8aSK z)FIMXNla@NK%WjuxPQD-snR$O`2vm;HLl|;wgwQZb>BxL0W6X{dltr5-0qo@mfJ2! zDxb{d!mh1=xSm!(r1IcyG0C_SG$jyi^g5zDCB|8_R&5P`cp1jQs5ZMGYAc_^NS)}G znO1s-TH=ihPen&sxg9&e!2qgM3UK$*mU|-qruIA|k)q-K0 zdcJ6pyC74AS67u|jByc-F*aQ1lsfU8&8$Su5wMaSrScI9;*|U6_hVaJ%Sq_feFk zM9aBFcFuhb@6xJ8uR}7)k8!%aI?Lqfq|my5m_}+Pu8!D;TeCIDYJ9*o;}w)HT$eJs zroiri0}8kez%z(p+YU11c%4BG65n8=Zc^~~0sq-w9pMrvo+9hv?(x*EwN%XUN&w;} z0Cmtp4p-a^F(Ddv{F(&WXd)DLUHk-I2CoJ_C#RIurBgRZ!nKV$MosAi-A6#8hyj*u z^Vu}y3e4tO6?nQ@;w28;_b;bspRMK7TVXrPaTA~7Z#1PM$fkmJx1$5YBzPAw?0 zP@X8;rH;BFm1q}40wVtvye12w0c#Bw>-%tVL}1(d6Jb54aW*&;YH*z2LAVpj`R-wU zuKKvmIIF#S{Y zN=-&P^LVON%`7p&u?dbTIP_tiz?q!WahpVlZSE4-U1wuRKo|k+pm7yEfnk@CMos-r z@bV)~;^>MbhJw}0c)#81wk9WtgaTVFKED+S^oj&6rV*x_1xXyL7es~jMlM^97~eTa zh_Kuxu{IC%_9!69V+)7jtnlm~`OZwD~y9mIL#RzBk!s!;HkS5y1FaV~8;q%H= zsCuv*;A~Sy732l=HI1@ln?VUp@K3H`j-GOn3bMAf)Ne{H!^4eW3J%>v8yun4(|-La9Vj5a9lWzRe*rToAT% zpa`b;XaM65ag~y?*5zehUrQ8&T_P=<*reO9Mp++0H5PX}AFnalXFylteyUtTd!-ik z8*MtE?#ss|TRxofVH$1~_GbKOpbN2(-i&GCPL6;dB@QZ7dEEYjc@|$m1BsaKc$V4K zSSoCAS#vjd6?2zqEv(ZacXP~WQyoGO=184Q5q4gPn2)XLc>yS&+6rtyKidjyn`*zy zl|?uuFu+(+6^1lb5EL1%+cBBX)2=RAr2)eyskuW_e9TT6PiN`P@7)>V{>WkKx!9gH zrZ%4q@R8{Gk{5F{gtnKpEhiT*e9tjB!E@wMdL!Q925DR=;M1j0?-XXp%nckyUrb|fF@ z*ze@OB(?`zSrWD5T~wZZDL%sI9J2ix!q7wt-PD;12x#hJjB29?ZE~Em$H0EVWNK; zH(F>WD3)Ek5xtPzW|1%(OJ0Zu&(HRc5r!iToFx_+tN1V|4PCkb5AZOTa1dgA<3?dP z+vr#G&EPyEXBL`nWspnBSG}zotRCHFahCvJMZk3?Rc@%QjJr|WKjXz=T-#4k%savn zkyO(&Cr)0;F%VkWBKdfcs^pFft0*>Li^t$q1dD1!Oej*V$O8QBf+HAMhWYN`=kPL+ zAsqzL!9!@4A^YP5mYMWnZo{2O_wCv`9E;M(%xJQ^Y8Sw(pZLDK14Fmg^HDP5M6j&t z6&O0|UIm0YR6$DVGCwSOgM|xA8^V@F+bLw@z@{{@o@hodrw~w(>`sd`*3*%eEueXO z3oak}1XOl}dy8-s3URSfI6DlViZWhmfWsEyP8}m{8}kjOsE{YD-c}ehR|8m!B+RXa zhuf0xW5?!DIz06NEYUGSOR7hheDE<0Eei8733eZ0mr%MN*~M%zbz+Om_FU);e<@BqAo8zQIOJFS~9=Y8-dK2v}-9FpA-yBp8f;Q07$h14tpE**7R z7u;sOl^H~U53pmWF=hYvAI*K zs9a+1!;C-|2xNv@>6h>GBHG0@$H77&Ssf3T$1l3g39vhZhh>1jNft@ST0?wE!u-l3 z97*fIww(`@s93~-7KLagZ7!v&Wg?9zwsP0NM* zT!FShp2RFI2e1?3It-4HaSJJ;sDyCsN59G+++$$l@WF8!|!(8LDlj?)R@F^+}B;P~8$eYc>C{n7hL_}0k zs64Sw4m4mlaCSgX5ZOsEyBkQ@ibtU?Wywu^5qY|PH^7!q&XqZ145su4h&@Gl+{hE;KSekY&67@KwUmS zalry=9bLnG%wsd`;F3tZz#j+1_xKZ@j#kI4T20>4+c1n#X35$$3Xl7 zK=I3^%I&Re5~EpFFk1{kOf{iIT7{9$lG`d?B5p*)6lel?0#A2nyOLI=igBN<2$Vr7 zmN^i&6U{1~FCfF%YL>y#cd-z%3OR5eVt;Y&A`<7vM!$*U^pHm{piF&(>qo<~QND;3Wh7jNgSy zW-_cXMQenoxHKoY$3=j;A*>NDwgy=rA}3HptVU2RZIdNMDpaQocBHG|238?X5xCZZ zvN05%k&N*i&`lV|sP9A^YczBkl75sNK-czy50S zG^j_ALf&3f#Xwg&jdYL|cIg;7y6ayH%q@K?XJY~WMQmIQVRggoP_4oq6ndAz+dO*! zUcd0E;K>VifSQrEzQd~Mftdb~FA0DHU-{~przKxsfPz2Va-afxGf!@1!M_jHiBPt; zJ;nDsNH#*XaHASBR8Air1phi}bgot;D%G0+N^eK0Qc0#*VoKJ__x_YJo;JNe6yhf?*V+rKTJnsE3P-4H<1SVOqJ%sn>(aYY(5l_g98@f6%9^zdu?5A}SmGrasV@{se3y+ZyS6=J#!_FLbByiB+FUgSh6qZS+Q7vGCK zp~Nf8ZzHc{NGja|(Fgs-zyF4TB`+W8^fi2TL@=9mRM&Wb8gV(CLsm3RWjuPmuh0#C zw>`Tt)XxyRMSN|?o__8^Xb6gvKz>F{c8maoGZJ7Sig#Fy7?xa4ZJUVB>sP$*zYru0 zn}WBvJf0IWiF$8gk=hv^G-G|%SXos-bhCtE1RA0a$r+pv&UHNsL0)&F27{nq1Hx$> zfwth;7nl^s@bi~4o4?$b(elJF`%eKH0qpdRV9Hzm%5FgvBbX=lm?qQ&M4eKAkP}`6 z7BJ`Fhn}1KmEe$m&zPA>gx5Bmp+op-^OrUw7xae_ZJb@fMF3*nAy^R??9D2~*pbkd z?xA!LXSPFLq{T1&IQbhTHDfu&00UBFQFmy5{W;>~!<#ELO9M+Z*dzb%aIDlm9fJ@LbjS zY;|Tf+s?5)DOA|hY(}9UE=Yv&_35FpfTdVG`Xgl=jvQ9lfU_2O^V%`^ygx=V3Ki_F z3%y(hdzaq(hO-SWdK9>}QH4w)>4$=KNVH z<_)INyqhm*$*!SMBkkz}-mYbEPYfQiLze<4H|bpsx+miB{{UXX`=USO*x^l zpvdUr%li=p6gxi6h=W&)uBH!U6p%NH)%~vX2`a)3B!k12lzx54Mz01u#5+#p7DyGh z8k!O=t&lw~m+TakuAK6MDFL9Q3{Ojtq05RKXlpo{Ws4dD?!$P}c-Y$TGJ)wv#wu>6 z^!XCKDMw{EU!@Ol6eAN3GB0F0HNHU;@tO#L?(~VqR{Q7puKU zAm3rTI3bjb2Zy#YkPX7AF!9^*Lj;U^zXSFI<61UM;qo9R^f8Cd>fN&A>2{BD@=CIObddLDa^KH0vJftj?xw3ExUJ!r|2RE#r3{0^rHtNJ7-YRZ z)OGL8@Dn>&HQixh>A0xKR_XgsMYaidJ-CwWAbV;pxW@{cwZ4!5B~+Fo8W>QLv=R&V zW@H)*b1ktDSlSk|_;wLQP!kXuO#0Fg<}@zUSSGqrV?hd5Jg>|Lov5xF(08fDIH@-| zr!6{HO<#KXxjxj!u~=W+(}Ki5F94t*IHT_$o+))8?6z$B(501oMkiWB>@Uhx)z>Lh z4Lc8sMVPpX@qHBRPPq~wq-BrBV`z*K>U$tUhM}&}*9kX}p-vVVSC^oknw|}YxzWQV zYU>WGNqXJD<}fTmU_^Fo?n zV0lo(cPExs$!N1Ka8|1W_JH5yIhhTiwm-ofYRd??2n&tdbY6gCJ-OrIb{SjKazbu@ z8WBu|;nAC7}Czv{*q*!aKO2~eAj9p>}{mV0P zf4RswBxppzow(qKAl=DT0$kwA0;Pf7)xi3#I}c$dB{tP)ztA^^ygdWY4ajf4kW*j_ zN;UcxEblG~SaocjGk)-4?FxLvFUeSpQxIM|h6dxmqGDPC^Y=937$3n(5Z>}9ZPyr-gB$cMps zSRBBO9)M-24B(uTDZ^86&XoYjz7#)BzC%N;iOQ-^Oyi3W0|goE-v01Fzp?Of-rV=$ z9e7tB;_?+8smeHc5`^hIR<1K< zOG-iRL)sq1T%EE|!3>qN^P0rsXf`D`pZxO4RjR;Q?H2rY*@!M&;ITH0=a|G?Gmnqm znJ97O#28H(Izm&Hj!@FdKPZAoSOG;=k7Ow;I?D~J;!KU^{)3u%FK!PoXFcy91mh)M zuaLD%p2JwL*t+c;6W0#^W&IJ*y8}cBwhG)KnN%%cGj*;C*ess=ad$?TU`yHbCW3h0@1i&R0$g}vqt*Plv1*R{33Tc zU$bOGQZ2j*h0>eA))2q5sbo|GtFkpHgl!$B4)TjlCEpr&Hm!kFR1F%ZY{)Wf$mf2n z=IG7voLTK4Bam^8AfwiwKr7qS$;bsSJ=r(C!0SxNsCmN|!n;W(OO)yJHYv1=$ww(j zMlKIncr(>ZhmP??&c`Qwy~=$@(krwcw@r~^VxMM$gB%kT$B$Mr4FEiQws{m|R#Uyd z12coCfmR$NY$4QKxQ*b20X@KF8BsvncBIfP3?E)TIA z1K>1-SQnd;Q0vQ|m`7WcE5DIN)4ns7`3O_Wj+NZuvzFGOY>w#%Lzh)D;n0CNL`PBx zrn%fwXm!yn+lNNYFs>89pAtr055Vvn#%)&2?m^cx^Z~dJmLzPncrQ~15kqXd&zp4M z37UCrSE4LvZru1k!bnCJ=Fl=L7+7KKYpDU^ z&9XUGWJIldLX-oA^5v=?upzo>H?@J-rk4;ba|nXH@cM`Qe1UBm1AP;mP4U~pbw zP30Fp90dz9IP5V{+!7S4bODNe0`sDFG<;4I8j<5TXhb|H1HmnmgIUl0+97b)-3oO; ze@WCu*YR)z9b{lehgbGzuv?SpRNf|$9Ka8M3ApX;EgWp0l3Z<>m^V#{v1holj0#&z zaaaQ{HhfjVL~XV<#`*Qqw*6j!swVa|fB<6Z3J8Y-Vsegpay^-*Bba27DaOqoc0>KA zvaEWUWFC6gA`DK}vnD28fX9h>?m)fW;dWuZN}?Q7-ZIAlmEjQG;Wq zpV^OINrWOZ+JT8*c7B}gBLv6+zY?fAz(D1lIwk}@$c55b0KOE0FF+!{d7lqK&?v&N zw}WJxFtcS{AjG=vBWt*ii^X#X#sP6~1C*QyxdL0ZQK8DExb0oARS%iygKai<4Q34B z!uU|-1HRUU`GwP@HCXxrC%}5#G7Umg#RXZQ3wqY#L~)>sUV^vKG;1B!Ogka93?m^1 zl>#@QQHi|h99N)Dmk4lPvh;a|b;<#-e7l9K1mFv|4!}NiH$@YOB&3VO+BtxVM^y^u z{?H@%l3ERBDpA0g&CHQ8vYNYyHh(URJ(>%#E-l=+<@?q5$4~_voZZ|6$H3QUO~G;r z-3@maGi}L5q+8;wOU=ScT2=lu%+PIT4-!2wit-f585qXe`6p{igf(nv#n@Dp3X?!= zj5s7|+N#$yv`l*JCFvkB@cC7lv^`ke>Lch^A7sJY+_=*z@64BEX5HcGAz5*{=VLhB zPGX*6)EDF&HPx${5SbQo7>6XKGk6Z8%~q^u()If8K&4Buak zsGy-l5YpSkXe}df3pR%&3crlow~R;mtwgHtS-V9CbQcM#V;Xm1(+_i~3uZxR90;-uV!to8vwy+G)b)=B@D2zcn z@D*8vufl7H7UBFxuAjOnT16NTm7%Sqb%LdV+C+@30+@C1T)dF~hyQgdm9jue`qIm{`u(AspA=?pIh*-c76Y^bYYgjxJi`24g@@yGR;|9yYr}AG}81-^nUy3Q;)EdLY7Py zodl68TQk`Q9MTF&C`|`*%Sz1Iw(1Mq0$tqC2WQx4;StZ1 z9+WYvOil+h>~{fg;T=AYl@>oR0NUo>%+mwR@@_2wtiL@Iw3ol4{L9*`tL$fT-1^N2(gZN#8)F^IHtE&xo~$H=`{66<#-_p z_6M;wFa)q)aHt1EBQ8$kl@a{IVYjn89NqbTw+F*Vh;xhL-g|W?%Ia7=H#dYm0Jxx- zD>j10u0Z_wmZC5c_z!R?&H*^YizySu=wpDaAR15cl@)|+Y8a(NgEtjTh-H<7vp|4& z_dHKQQ%OK3b4~Sc7tnZZ!nh#rml1Nxf27soJ{nX}`H1&n|AVVpFjz54hj76G)~{;C z<;86xNyLZJ_zUPl0q;zyh^rI{G}SE|^bB@1!+QjiYeS^hp3a$<{_S;EOU5t}F@^kb zn*$;#aWpCN4K=Um(mjk@9!xiypA==Sp@c(X!sJi90lfVjClY8v1DyNI1g?q7J8??y z1XPIIWfeT`9P&4flAnLSF2 z8I}c0iI=pp_Q<{wkXD<6#fzWz2`%hbT%SZ4kGoW8jKTGCKQ9CXNNBxJ=o@SCRATx} z(v{4^T&IQFczC5-YIvOV@WP>zHu^tWhWap}~Ic1l_y&0N; zARng{e=4x;Pi7P&zK!Q=;ce@PVywbnHoS#2aO0s_nZ)hB57(wz# zfX|Cwr*@5$MLSOw+%GjeJHl+I0R)pbG>8!8Ns?{g(ln);G9E!;(1_UMivw1mE{f_H z!5nlk8(5s4|8%aoy3ORUckN*Tk4Y@2yzlCWqJ70|BN6jT&i66daB&2*M2oSe)EOhL zq>)CV1~62$sJj~FHbhqXiY5!BOP67_s`E`Di<<6d;lW}tz>AusKXSiJ7oOS_0%x7@ zsLAa_-F>5BtTd;vhwxD)XiLG1wDk<6_W9GorB zyLgNa_26Y#s~2r!_Jk!*W+(Wr+IVs_dzkUvy!E9KVY{}nP>XD{b}rfI!>lfqTV8|0 zqpnt{BE+oaP>g+&5YcOWAopoqmdpmhPw>eihqWuNxt_n949@8cbJ`;7!y;+F63=+k zg)r$4eN7GJ4gFtrq5aW-x9osU-|yf6pQhI$xfMcf{Ty?lG$s( z=t$(KN^V3xJ1hf`SbQ9tpEJ}ITO$e{cc}lJv^p>dQ;0YU%FhkT+;J_ZE zd<%>2Vve^-aI^K1&MM(Xm#<30)!0X8z>fFT44KI5y#_6dPCI&r(}f$sp_hLF^5E3C zs^xCxQ)zV%ZNt&R1ADl*6e0r;#p>@)BzcuqTS{zp@-A@49O#ko{MJSZ%lB^eETnn+P$QPgOp@Z{V!xXC6H8`NoBtu*VL;7}8SrB48-T-8#tDG_L8SX^O; z0@3;a%!peVa@BATS;~cD>Yuf=#V=gnuuWGIjX}RBf~~^7?&Wv>x|7I4SS{}kuZ%)O zXONym2k%f+_(hA(!eUBVU|t}bvHNvGk<5k-1Nz#~?V>v43=T8J!*g=g4sNDrpUJXI z*$@7F_R;JYvX5jxpWVdoGuej_x`oh(vrAVd**KeKd6xa?UN!^nG+QBl520hk7x;z2 zCL7@2XR<*1>@iZ|yQoOFQ2LXslg$wyBMm;zl4aL&{0?&(#FB0xzczCDpvqz2F`XX+mdUXiqHkG;6X4VOvls7Vn^`N{KtHUb zWbzD0<|pxIy_#L|_04{^TtnPr5bX-BVM|HJ`j*Rh2D!5J^}3a7l093FTj@8DA9+*! z^}c3`w8hyh_RV+7aYKy*YduEKkrS&e@|=hMdx!6xbTqS%G;vx7?O4-za7LYGUG!Uy zQ1;}kJm-GC2P`>-JUYkk4E$WJL)uPq8t29eb)A5hp2;i+*3CG>xau@;0r~D3)q*v+ zr;%Th3*Q?1dy!?Ij`@&_{oHNhEAp2~nltp7mmp>7!#0&?Te($`7>72?>O7T>@?SXD zD|6L}^2&!G+kWZOhp6-bQ)1$}o1Nkdx-XasNLD;{_>UnrP-k!gQ`B0FgUTsPW@T4# zQVbNMcqj`2#zvrfsNwpQ27sNz^!Cf4j6&l8w4Bzg)rTPPpV7piNT+Ci27-!pIYlU~ z{}y5tfOqllA_##E(2{D16efOt5<^Eu=agnm$!=I>!BEVZbz(b>Y0~^jOU$t=C)PK% z&ji54gxqJp@xATxau;*fv8pD?Ise&|W5ii$YecN-5vZ-p_%9p&K;02#CDWHXiUZGq ziw*Vi6LaU62H)Gpae4Fth+}WfF`?uqSn>Za{wcn*9`?&5XJu6Y84E4J>%^Ln<6NhT z^+Afn!KPS;%XBIQD7v`d;oU{RZQiax$vJI;os39USx@A`D=5JjD3)>QI_?Fce7u;5 z6#K}F3<&}CEF}c%$23u>CKR)#{_t{w^OEXaS$cg}eR1AYo=GJ<#dWLHcjf@1t6>*Yld#`UeK+MT_S#%@5Jqk1qw?i~FC z{8549%3|x3m+7Y5a?u^5Mp<_q6j6O7)cB0$R@F_;0*XpYOU{ej6~`{SasxSYM6)+i zIX}mCz<$YrcxaS7`cCG-Ik3!L5sk-XKgiX@${AI0?_|$0T@CYLwwkLEm6>JsDnjgw z9O_aYMqPb=)wT)5WrJ<}%ehAm9Aea42%R7uN6iGkDN#$bg0r(clcQ?G)eNs0frfp? zHgXPAF=9V*ALhzIHX+Q;A&Zcr+_{laFJ1TD&)v#<-9&vam|;^x{+$c# zF3PrPzJnT2<)SK<2<(rnp~f5}E5mBotarRQ%ijI-sN0X?k2_&1kA4UL3y5F3{vqT< z#WUUAd^pQK`**FI7a+Ge!6I!%@m$Q#qHLjD@)%~djttL)Av18G?ANvd%^dy=W>}T) z{Z^cF%vL$(^ApI?8guChHYaP59Zkui66Hf&)j0p2LB3OQFI+@K$yJf{<`5UiFMH1x zwxK=L`%c!!pKVG1sw?GZv2`ac<>?sRM7hiQWRL$?mThkV=1mwTJt?usP&6TY29%VH zTrrOD%gxR+fIUQra?$Hi*?TC*d_G;&Jg&zqH~X+j!hW*KQRcBfI9K}`n}>j8FLcB* z_)Y;Zlp`EBZoN}_wjbXu1cq&){LEe{w}edSb6-&+kK3{Y4?IUaXX~cR|U*AOyOq=?)+VzgK zj6LxrHIEeflVL;e*LdSSPi=FOx&UXb;n-g4I9!d{dM`n^BydKMo8sQ{z3A6Ci+&P9 zIlE>?2i(m=zMSt_r@4>3Oe?R<-gr5~?EN{E$vtZ-im@`kP#wdVQQ8~5y^-?a z2wETOKh18#l$u?$`cuaJxc>7!=poq?Ka>3oG&nqnDoMtk%Em3!sjRoK-&V+-bC}C4 z9t08Bv-Y-dS9z?w%#r)p-@g4OZ?l{w;Tk{kq;B#TFNOJX+{ncyryELnXG)dohS_ir zt@w6p;O!z&-%0bmu=K*psQ2f$)9UZA%$coV&!}&>;G2~Ec1kSkj^uDkxN7YyD%bvmRA{ z8f1)p%BrrJYo38{+S8K!3^qhwBzXG>t7n^wNJW){!^_gR@GTwdo`Kb}&;CvqD6ZiD zpQ-XMmThug?s4to$TWAkNfdUMDTZFhVTTQ#8o{OsBswA|g=DuBJ$ zXMbf20I#C3pHqS{GN+1m2JYbGHuFRj&g}SDZN_YqNxQZ2iwP=jar~y)D_~UeY#aQu zT(mlVvZTU3HmEAt9zFfJ?T&j6p5Ab&k$NXFWV~c`3`@wnS$|Hkhu~4FQ0(r2eb#q- z8#t@0H-MT&FKbM{i_T`A*%c}*TyV0#WRuQL+Gqx#;q@o8m+>$68$5f%5*PL%)<^6s zVzOr~wW-T?VrLjq+$P1=mpICLhoxRT7puC!a%j|Xk-G>x5I!+pe~j+&qgIIGQ1ICjn6p6U&h z)X+cP!)9}euqGxjDGPu*o?poS1K|cHMP*IE~ARB!)kVSH@?)jP` zh}~&0KRg`$x}k`wFSl_DKUDdrJTsM5X!32Wwb>e2 zj#)E&`H&NTxjDV%Zt4;@npO3iD_!<(G7}ZQ4g67V@pO+Yz@g8sGETO52-Pm_YKw89 z)=as^zM|r1@(8o^jZ9BPn{BZ31W`U~>LJgSDVb=Lx`z!4d(xdozq^T|gIs8H$=+`B zx`Q$EYH#*-rkrLwD34Q!6D|AfzqcuilxfD+3DGXb1wPf@t#eP*6~-7`k8H-0A-G%S zaC5NPA*O-Qx{y-Y9?6VM6!ye1jd48&s!t8yYcn3pIHd?R8t%@GExXw5w_xG8iS%i` zy}q;!+9jM4VmCaKUAoEvG@Bze@n~hto}?D-yBITbcM~-+D=PqGA>61(c)*chs?U4HlGBCLy?F%yS0Cn&x zfnN}h0OJUgf&P9Q6v@4Z$1dIkf@vbFgm zyX2r=z4~$M)~#Fj-nvz6@Wm~2WmCtL8* z-%suV=%DGhL!*o-f6nW#UTY6f#_6Jo4(6Nm=JhV_UYgwUv{YXroKI;Ch>^=^mrH>(JuWU6<(PVO=4v!Nx#ZM=Lq=KZ7H84^; z5)R%I4fB&gd;~m>x4GEc?Ht;>D`hYDC8rz4$w-_EJHSbkI?ZFE+`W`K7aqRw1or(8 zP-~%s-t~a9VQRlhx;k6C%uPCg-|;d2txGb4(W{#JR5OLeMndu#F?Xc3&RS?}HNE2I zku&gOyH%pWt!ypT)JF+Ia6k4r;?ivrJ(?JcA^N0HZH=i)s`k<+e^kbE<1|=m`yu(5 z%EUHxMr&aob^;~Zj!ES|TZrJT#dSa=?t`?miW4FtvT&#L_6tTQ)Go+*ATaQ~f${k< zI}z+>m-hJl<*`gX&dHaSh9#LP^TkaYX^)iLaTiBJAxWksh71njElaeWw3^xu3A`tl z(qr-;Y8mFMbg`?Bi8++?sDayg(Rgu2Nc~c&kV0JCsrLQAnq<4o9y`2tSDLPvyoN4u zIoM`W-0Mh-J?S;tAo&=IWhp%rnLk~+XgR{t<&n<;In{N(aPYn?+(Hr~Yf+?0Dvd9U z7S~I*_!O3SiASdd|B2Qiy3bIrU6+gBFk(LD_-T~eJ>8;kO2M!XJE)cy(m5GyH`%pUMhAc{Ke_B;ng zbO=TZ$%B-<6`~gYaTS+ZH*!3r3rOefTkA$rv~z<<;NzfL5|eJv=qWKMGh17X$>ZML z+Yg2;1JxI?eSb+r_1k{@yFy);#+Fd&U&gx;ZqP;eD-CeiNoVadGSW2|pwBx)9+w`%$7%j-;iE2IR_?aa6LgYOyPGm!h_TIaNBbAQw?dh4) zGSlPSnJm|+w$vC$^;}Y8@Z2d*_ua$w^r@A;D)O~Uwjd+yRLrgXklMArxOyB&a+V#! z!6Hgc(7Hy=t$$5TA456OoZDP5_@2GziPLljB4X#%ehg@$U2?am6D9ZhV1%rgS#l>mnwo0n{{7}RX zw^Aes((`ia27J9BS=1g@{(}vL2lp2#GJI zeYtfRq^ThjBVDkno(tL^Y)#UKk3=uMw{?5UCwKca_yHxlv<;Rl`z5x+)+Zm;M*Yw) zB)^nw=U*AdQ_334;k?3N`ysZUgK~Hj?~J&J6OXn=ExG?ea-|qjjVXQW$GTFb6}eWE zR04+HRsLZly@p%%o}`o*;C5C?I(y~t_C_bnGv_A>q7Kqfr)8Zf)u?oxyd<%%Cl%$3F}r#w=GV0F=_#wZT?@g$pLmp#N_Ckn&3!ES zDN-Dl*s7?z*vp||eB%K#$AoGmsG};S-rkgmk#0ZxycVI|K9l5HSXxjVai4kZ>w1w> zY~m=z0n{p2gYTVQ13u!w^a}`hdzDtk!c%qpXbGtWrKTj0DKazNlpzH#U#h%al>1^v z#z<26)5y&W*IE*`TB6Dfm5B7N2vqx-y=di#zGk2no26hzJsJ5i)r-OvuCXnK=zS8Ik{1^9u;9iLX%E`T_*duTh0FpzKP9Em zeln(=j$*dObZc9QR!%InJoJ^hyD#N6{}jWhCFMF|5+ov#jy>LP$lN=u!IQzQ-9CK- zBC)ctM!Hm_8;kr)i*e9#O2@(RS_%h2Sxk&rFCIfk>j|3sP~@F?4m}V(EXkI|P})f< zmew5PGgM>hwt63LFPF}glzt0w&pi2nF{CKty^~0Fjj~w#x9?Io^U8(ltS-@>8ip?F zWwJ@c>btCDlM6aY37=GwFOpK}zUJcgsMR`15-pWvMYM=q7beTy*B9O<9{{4Kv@ejO znn;&2_k>b%w}^FRcet8}lg=$5sXBdI=R!jE3?sbs=NFE?1gd-bwRUudOJziyb56dr zguln8qlZAYu~__BP?TFW?lOppqe&3Oz7rr_X{5g9c3HI82$Sd)c5Q3AM^b0t-)gP# zb<|RJayfaPe=4Dk*K(o~8!e_1n_49f^R}6{%!to@`A@_YI%6%2#k`nAm3lm!8J9X5 zXOYjlHxV2esZUuIqi&O?Nw*%P!%_}h3|AZ=@-2oh9&6Wa;*ex8E*7@Y4Uy)j@w93_ z-s)2n*JxlQUo@QJAz%DNUP~TZJdqUCZu^OM^b*NJh}s5y`+EY43JdJLK!K-{I)tNZyRIwUkC`h79tRCOWT zegXioa!+Kt_Eq>22PJw$BfeGm;3no|s*Bz9`b3}^2c|zHN*!la{-iOKmON9uMU`iL z?b*yc-HbIX`&^#Uq=R|cvxS|ZP2ssEoHbmE`BMqzeQ!V2EZL%w+|LwBjWzj=5^Hs1 z>tM*o!CBKx7E+Wm>CRX@0HWLn!BHHgF?Q3^4Zt@ZHYRsAh~|@us-Q0s+z`~DO9($g zUOTIZ&5vMRi0#|=N!)N3qxq6VQ%nNYnLCQsxT6%?is>@9d^IKqknfW)&_DHqMeNrh zf{WMB5p(hSATf#8Olt@JAtOWki5)q>;{N=txye24&a!cv(34A@`=OjBdwbpv-Za$F zau=bK&IjC|{|UVJ59bWP~9u)S&NF0E_aCU-L+uA5S0z$JwX(>TvlJ2uYC=V-}4 zrVuW!MKu_bM5-INrd+jacqH{C-y93!nL=HNr9+ci5xyEo>0L31_9;?6l@a9bp@le$ zUtQ^_zPIFTBQ_Ou;pa6YG;dQ>h&k;ZHPJzN>W$b}_@rM4IGd~Qt_MU9?XUP~s24sm z8j%T;#RLhzdHxA%0rVF8pTfs{0s&Emmr?g`3D-&nRk7 z(A`Y;Qdj%-`hS8{zOno4!uLtiw7-8J?QGyVf#BEz&urxF0IB!!K1tp|;EaL&6XdAW zMpEzRjq}@|T?&t_uawy$naUb^U=k_)YoSRB3GQ0Iys#@^C-}@3zs_gwDy!~ z=3jj+h0)?Qo&=hfDp6x<9U!qNaU>QH<4befNz6*!n{1a1J}We`?Pr_XO?oLVx4OKk zc4?4GV#!Q#LyC%qA+;VQ$?bxXJGG;$PIF-wHR3_yr1DQ>=ie$&Ttvsu3`9ls(AWDK z&CgKF4+Y$VKU_{psT!S?aFcxszK|+W?qNi=?xILl%kAp;LM^S4^3`H~%KXfaGHs$* zi(-$d^I)v+$}6(}Qj~BW)L462jkJ1{eD*=8l1`o5pX?cjehZb;xN(PXd5(vL1X%sd zUlwA!pP;RN;nNtKI}Iy8ORQZD;pn^8GN%1Vt(*74>Ib<7CG66Lw$EzSk%|=mw=-hq zV`ACJSnI+Ja3`h|QEXc+XV(4TvT7sU;>S_!%RKUz!TWZ#Z^3-%wko^wip~wFd(tNB*WMiXA+D90%%G=i$sCXJK1?eQFcOOo5Kk~3;Y{Qvm*!e% zr~WlppARv6HM7#zS|12(`B7@=Q{`Y3uk(7cF|@Ffh4BMgG4F1>ywjp)@g`05B(^(O z;_^bePh%9NuHu@bJ`wdcfp_=op8=V8PEVwi|3v0UYHIm@om9CN_Cj3tLp0qMs#vA_ zip;mLWSaSU#rFfX0$vPBt*V}HR4)-J<;-8(v`GQQ3#VfFgg;-EHY9*r8 zN!kzJXSon*wzGOs7S;aF#PM>zyt6OKXk>ZBO(mQ8ypitJ8 zs^q~BJ4Us5nHMdMb}QEj*X|5ox^a!QEEH*3+i0HrTE5X%WTOUCs}2PedkO zyvIPZBQ5}BWGEib;I%g_u3z{)p?I-<3(Ebf5>h^UBq)7;YBr>P1l5ats`lbyXbsy! z4`XOQjzAnoRE~2=$78&Gh6RvPcaZxS>7PXT=!3G|R%Rz@yLo?*lt(N@rsGH2%=GB3 zaf9G-dM63swy1avdw7|cJfuJtR#nMBsn1=AGLlu!`d0vhvzRP>>eDa zMNvzbY0;(8TB@DsRK0c5CC|2-$+sTx{P)Dn_s8)Q_L`6ybqR2B(_)9LbD>YEWYdpQ zQ|7NUK=KQ|&`9qSkg}55uvqT;NNUQY=K*eA_G(nU% zag@$-MC}IQDPF(b4GD|6F8QF>@DEib4Hv3|k>6LwBHBPKK~Y~3LVDt zLp{lT>9W)}S2W8+-)O99{MEmRX+#5 z8rgMd4e^pxekOdh_;F^de8qAQCLO?D{!p9Um3%SM$9YksA>dL5X$Cq1*_2g7k`qEYZoFMVIDMViv1j!k|_GV@mc-$^Uu zXi@KlYdC4T_8rCKN!NzrA<15+-J?L4)w;C*HOgv4g5R#sTW;Uu=Da#uMiR=%pYDsQ<}#oC@s zvC;?$8%d~qO9_flqSBy^VZF@iWtpWCyq3u;5r~yDv8W<~Rvisl)m)5N3gD{aF{KsR zqZDOX1c23jF(pPCEr6F|Rx8rVx)QQ#{UK6$OA!FpcEzk+{gz^A4kj@*HdC93Dbpgy zw=#o?lf{b)(tI~`Empn*QL-uwQL0xu%Sj7Z^-6C!v5ZzyeWgmO_PGfEMo4L8)yp9( zjqHpm(~8hg-6Bw`J`+MGkbGg2x zD_^XBD?dCuEc`CP&NL~kRXj%v*k;R=z3_N zYeiSFd9Js2MWL}>bEj7wUy;crotcrYT*)TbU_v6p+S8LQ&XtNbWP+VtIgrV&)~HuA z_V@;G+0H&15Hl32AEs81JxMVfpmASEU#741mgOzmZDj8AN4A@0Dqqj{l{+BD>&40& zStHkQs8idOFDk2c5(ammB&lc6a-*IQabp201a=RP&Tgtm3e*~qoiyNU6!;p0ND0DKG8+((^Febv479c`xS7E>g z@)f6!h$P||j*J3Nk*K&)RhnmVpwm3V-}0W0;&u($Z)b|zbLx;H%YY>g5tM9qz7tIH z9X((ylxoxB0LPGqr^(HUxgq4&R`v828smk=?h^lO$a5>Ya@_*AIss2o>0~LF8_0A3 zy9BkfImR9iDDf~3;MvnL(glRQJ!Kf9Q2j2Ge?^9hL(2@tUUi}|NGq_%db*2qqjdh2 zOy0v{bvKdOAm6`{&1Z+;#Xz3)VGOA;rJ^2He^4*Xu__$8tfx~@1uPF|Wb#>hk;#wt zh}={x)(^$z5JCJEs-1;#ho)ZD4}GX7SEyVrR<0AbIutU9q5L?{z`gaEtkp3I1{2h0 zM3VZUXL=-}e_vhrrUtUJ6@jn3uh8NTmdL+NviP-AaF(u>&kxhWw=%cMR%Z1FWg_*K z27Kpj($#8X2x$>PtZMhjO-=VOCnN591qoOo#Y&B-hZz8&e z#YdH|NT@Z>=DU$j{MU;pX&$oZIijT5 zfNES~H@}nrz(8ck$b?pDb+S6s-6yK&`()>kh{O%mKtw98ai&;#b5H_(J0>K5lAO)+ ztCNAAE>DXIbP=={cCiokp`ywcd%8x@GR5kb1+#gczq~Zg#bV=Pq4rLpb^*()IJXxl z$l1nd-#{jsDw^+&(b7^HL+VwkHqJMV7V6h6afgF}WQmwXk|g_Bwd5gji`|^WmUl?i zF-v@9fL&4@g&NgNwp5&(4s@yZ=S4F;fQ-cxn5&wTA}&6IrcMwQDBv8GiqC+2VfKRb zH_AE~eiEnIQb~HNggUc=)vn?*5_y7XmK$}8Js5rfsrDADDDjnmr_QpWZpy9bidI=Q zH*6HTNgpT#%?q<*NJ=O}cZ`!rh-i+I=zT9#ucq+ZvD$Srij|j^Q4`e^kgPsgP7_r)W&?G#d z2s#c)Vu`DJ;N@75`ilw=_H@ClZTZF870j@HJG6% z#JrG*KQfrf72sKw27IX9ZK5nsMtdrm+3pUQU?e}%A^Wc54l!_rcD|WKtNsr5pM{#w z3sb~wmG2=KtA!2;4*m@dWII;J*{KLwt09lgP!-S+H!t?XR)B-Ekwa7z zNEWK+WxMdO(Lgmv^9D6jD$M5i>*A_~Oi8t>S0aOqM@AS&M@cQkj6E@9&oF2NEcWDD zXzU4s(N@Tkx7B^U!Rj7~tAXmiwz~V$y8B|?ed6tWm1?%O|~pEy*hVFq=9{Fw$6loYsZI>Va=OZuo$c!QUr#m?Yh$pnm@#{Cj}~PwEwZu zc~$B%>A+BPKytb|)PCLDy(31I)TIq zOCt4j?u^&Kh`dCy9xV`Nh*mFIv9oHnz&zi{p9(Qh#pZj&j7_e?*HQ`+*rPc~D@C-J z8B?dekRq_zp zEy?!v^}$9Z7NMbh2g|V$!|O`Gqtf72cvwVCIlB`UqI*{ibce96?~=Z$juh*AG!^rO z+5?^VmtH9MApPD%GhQrK-{KF%VSf}hf6aFQVJ!0I5c&vk%2Z=S7)n+$?jo{8<|<8o z3vL-Pn?RbPdefFa&5J90x(l`;$R!_`$l%8OUv((uI1=PR`$@7Nx8Ex(9w#C@?PF%)D>j2Tn3Czx0ZOh zTyIbJNC(TlTo*#P!)jtXc+8MrCXLDX_|0gDA^3U{r&J z>Ebt`RtmFXt+>+-KB|p=v`3lDmW?dti;d@tv-=bYf7gml`1F3S z3nwo3^{pt(?k(1KP)hP5X30td-dtzQUxCeI38B19elH;IuWc{PU1Es)R>|VJ%)1q1 z`qp+7YHL+w?lR5w^mIV=xl03L+6f#AI9arIk3zh*D-36CSCG8QH;ICq1DpuwBoow4 z{EomSQn?Z$^&KYjj0m+|vPPO`d>K(4HKT18Ws7w>yNlU_|>b1o^mnmlGThi*iz#Y)nV@#J_rg~*ow%QrQ6j}))#%eFDHXZ8LFer(-+(o zGFb#x3(arD7h5V_4?yP>p(KlUD~VMTIu8S0LckW91Mq?ZwJD4Af=VX2qS^LSs+ynE_ZQH&U#vSy9RnVhn@!d{}?U4dxsQ?D&9e&U`b8aC{W!AB*7bPj*3pzb*!%m@p8!v`b8}=YrmM&{A1qEB{K4>qr>veoo(4C z3oVkMvRhtOzU&r@z<`Zu{!{~LTs;$|lj0&(rNIhyq*%EzLOv?~jGnoGb>)T` zJAkd+P_oPrMT`Tkt%80viGAty+2aZ;4e#bkEqiA|R-@uskiRfHT$nA>N}>AdT{2G2 zm}#(v0%jc;C4kbek-9TA7}y{p!oMsF3Vxj6wwQE-n{h-!x7@D9a8x zqk1u=m$f5HcK%p!7B`Cch1tunLcgssDJi*VLoy1~;CYaTvib=q{%Wzl5^$}!_>ku7 zE2WEPzfx?zCCM}UQXKP@=FXq}%4TVedHvN_QYAPP&GXrUg)#RB*@a2I?7B_Hl0XKR zC@dtuB_!n|m|q)FX4PfJNvT+UNbAlL9F z;Xa0US8;c)R4T3P$+39?2Yn~UKTMG?7aA{#vt}zArr8QAgN3Q>*p!IRZzYcUII&g> z`;x06Ud)C69jnq%_C-Yr1!>-r=j9!2X|LQ0@qYDz&Kzdv&SFgxz3ojkYBx0F=XYop z&wja3Hvurev-KJ}R$ti~F!S3qE5&BT*^NCe_^=f()W?8J*p{-^Qr5PmY_*iFf{r89 z4U3Dae&{iKWx^wbz{`bm1rH&%ua7+ zC#oagwiMYZ5Y>mfw0V-3w3$D|I@+B*QWcfgRiN^Ez-!Ko1X{>Rm^V-7f$Y-iG!Y5z z%J(`9t7$3K?`DEcfekNr=vxEQs8cqpD9;~o&AU-QZdMC(-*?9KY~@V}V*R+#t4|Rr z)aN(#^cClyx9LGZX_6T{r1T>ex2dH>%cwV$U7wKDe?>CbE672j3UZM2wyIhx(>tUR z6O3RHSKlj+i53n(@JvDb>zxR+fWTBl0DLD}u&0PQyeW58P|p#ZVnUDPSq{p_f;G?N zXDK;G$LXvXP<$5+nfkQz-ASYLmo2nOJpXbmdOQqR{WwM0x7iUhPOJ1>f6PAZkX{WO zJlD@gwI*Zzw5UCMo}wsBL=Fq-Rzm%>n3J5@w~bBb`rFu4FAklaop!FXM(1DC?w^E8 zqhA81d!*Ef3sK(0krMpW#X`HZqT``FE3RC=x7?Xq(P2A+J=qnk8EpyH$qK6S2Fo-2 z&AHqixS;$~-1YjEG+v(?ptuY?je%85Gu@Ch0HQBzBe%@zESE=_ ziy}5+gq2u#>)gdkTq_2VGZ?C5hcQ|a^l>iD9*)w}Poju(Iae~6tPs=wAyPG@XS+FC zqSrkliaY09@j+kV&<@mc0Jf3JhHtEolo-xtyKQ~_+rSqE_c8z|Lgo%_v1ZMfds4Pp ztR>{MZx@izYg?{h*!dYWD4yOd&iq2{1uQ4LUN00i6f!f5Cnky~4i&4vIjjWMY zZmGNb%4po*%$wb$)yXWmW}a4mlk{HCE!0kE0aN`AJiEigBlv%NN_dqE)vq$|)ME9k zY!8f(BndnFUOeC-Y>L$l5){pS;G~vqCG;DnHJhCh*(a{j2bT@z#y)WkO^*3`9RuHr z&0g1XwRtM%{?&v<3F~Ujdo=ItP4f!BS!}*(;ujmt|J>j~AoD8Gguk#8uVJaof~u+F zW|p5C;en7|QF>^kqE@vAm`L2QS4@AJT5#)uS5Sj~6Zr6>J(;%63(L?UOi-Cx zIq`xV6aJQyz1Lt-l*O7IW>qtLwa@^cD}+EC6K0K<`Lo5|>{asdFc6X{x10I3lp5Y0 zA9k|j<$XQJZm>2whH)-3sIQwFul7|$9O&6o>6Pz6WO)s`d=!R;jL$HZ#BNgmo=#hg zomMIK&&RU4(wi(nP>O}bt&xz|N}_-BnwAJ7CC~!tQ*7zrf7Ez7V1`}8L59)q#hla6 zo}%B`0jJ*stO3O-rJOcBjfiPduCFgR=9!w>i`xlF*5;%GV^gSg2DK>=F`9#P<_o;) z&8yy!n>xi82fS;$HM;T=2e68IPCxT^Xo!)$%Xvnx?b}y@q*xeJC zbGQ*TgPLzLV+_gJ>)z{?q1Sq{pfAjxrjvijriIU}K-s`?J2XFMUt80&Yz5;nH3YrQ za+TLlk-UazN*)$j#XO{V->b?bhH9?o(7ql475{XO#r9o@;G$>R?4}; zvB_iaxt=}|QPWvNu+3?8Q#-jLz)h?~4LH&3Ia33e%18s2_FiGTi>>Ebsp2p1V>Wnf zxn<8j@7zNRIe65O8w<$kxx$ef;s~Ijqq82ymaUXrZ=WwRP2#Xd55pK}x-k$?$2gdh zFWPaA$m}eTb1Ndm2Rikd>+VB_*vhL=->4NTBEhDS>@^b%AY!;m96!&Q8t=(99W#@Z zn7zgfJng;rWm)r-kMB6Rn8+^H&wBni$6i2cyBQ4f>x5`H{2}6NS9j!C-oKc>%D)K!Z)UI~G}I9r>cFGiKuT~@UnIg*kJt3@46aHpS4=WolflF?=nOVI`wwgJ-V z#obYWUp2SJi+hSM?$zE?m*jYtx!4}o@l%pnCbB6~{cT(0Yw@1t9F|y0=VlGqKDo%v z(Tp>x($Jfo0kgLcVDF%aNi%~Jzupz%mZkkjZ5c|DH*cgHdsxd?0)EvivdlOJg-e=h z@f4KObR+F=RpzZ2)&UtVqgSFf<=)o0T+Rw5??URNK zeC?#=!drh&SDzQ5j{J85##--&`QhVr;dO%3H}RNC3CmAU zjxRPGdZ8w+|4_4)YH(VXl*si3M={6V8u{5Vgw~ zq3Re%aCk{OX>mH)g9IR(1ttvJlXT<;5PdLI@fj>7QL1)T)Ts9MQL6PGC?}$NKIHEN z2^=1*M0sizY|K4BV|GaWP>!v2O0ZJKn-QOqT$((Myq{QkBd)e;Z&<2zyb}ey3QiuIX7$$Vki#z^DOGvG)50)x&QNl#$l8Kky2Fr%?MA6V+dRk!(A45u~B|hgSXDeRkaE zkAe5TSb{JC*FUl2>eVWn9Df4ZFcRBM>|}wq1K|{w*Q7~1HC>aONzR9R8YIo2k%^a`V;&AwD#GFKW#ktosa*$4Nvud^lwc5vw!?& z@BjXtd#Cn%^_TO%Rr%?k{@dsN`G4`m(Xane$JD=jbmYE&IdbWz3lIIPSI7T+{pSW| zej~T;!XNzMcklk<$Dg}C@^6p)FZXo)gBKtD#cdzD`gG0=WfqP~FbZ%^3M{_^9zN3nFfPj~a5 z`m* z&_C}RTL2@b`O{13;z@l}scRf3XhBywJ^>zrwSo7I;a%57-bZ|boF~9-i?y+tcU|>( zFAz5JZ!@(f$T?u8HdB5Rx%UG}R}1U%$%8!g^OI_8KXpZ5U0yk6(AB~g;2-2&9~R!v zyRIr0mIr{M&o)(3aGoGl*eUfst9`G^irFwj#^Wis5`;)UT_dK{Nm0r$|`rOwIuk$Npuk=f*MChqbU3~ zP;vvQPY|m7X8N}o826E)UJ85RsEamrMW^Vk>oxD^f7R5d%;J&#q^YLb5f-{qLcFq- z|1~;-Elv_$$0)7(4ymmBK@V6FH7xRoAWsmAocBpGATu%wBrrPl-kDRN4?sK7r?}}A z^eE_6(5GNP!7>H>t8`Wf5nBoX)5-t*0j4vdU}v&j0cA+eB>DDl_dk(zzOA~iRte53 z_>O|)l!D6yE0w#3p!~yr;I#AF_rL%BPDqk;68U~-Sv9vSNQmzKao?qy{kXbgU1h@| zp`!$41=|%=6l4`7e40g6fsuDWv9f~gnR4c1nRS^yg!88|J2Ri`uv)aS0UBUmQ;NL3vHwyk#!T+h?I|{BU_&*fO@=;WNhVWyWqqbH_tvy;z_KmDc2BcC{UaLa)W_dW5%!HIh( zCMGs*Sd|&i4m|dy!_z=I{KVmd`)2@`=~!KGcmjeROjDV_IpPD?n=Dvw7_iovI@0LxITPOG5KXGvKzI!)L zZoF^Hmd#@a@7plB`Thf&CJ$~HJNS7(e&lu_KXrI&a`*n3Lq9rL7Stczy$9GIyA}4X z{l|stqfb9LHM#%Dv(tYC=slU&7ZM|W`}rFO7^+a>V7$ICd8 z`V|FNdE3Xo3H}}8-*FYWNie%sP3mw0>%$PMoeNFmDKNKI<~cYK;3cVE(zi`7tNOfR zU#6&*Tpgs;E-K|+VjTNXrMOWLKKCM{I&O{7<;oeo?k1>w&w9B>>*Cz=0b}t*6MTx5vn@E|YE>kvsfP}GPb;=hxhJX7P~8(3ti4xsx=R_a zDmbm+tO6r}jk@{2&RAiPs~vB_yChCv@I|-gbt-9RgA|VNceMwNS2s8XWXyc`K& zC#XrO&$OjfME&Y1CBLTtek#_*Gxf_6*_x28tyS7hf<~g(ZLzu9F4FjBnU-#*tjWG= zZ9?UylzT`qQBh8ue5>X>lVmITm6O&KU9G$tW5$X#@nhYB{+LmFNi~FK_1&0OO_}YT zm{zmF_0ydyEHvx%q*!kewz*ds+pWg8V1ktvV|eN-BfBp+C#PP#rr@j*&^PufUn%$q zAS8TFvZ35cDb}aLs#AO5G{?~aWwNw;MvXtj&S2oaSFl#Wm;y^P z8c8bIys3}VTC+j!>{}XCGC+daAGkBunmU{aB47JD5Tb?7wBV-59`Dj&&9B8{9d>vq zP^5lZeLYM027TpF%PI%A=-7(#hXtNxx=X_b9Vj;FK(V3zG`42DdvQY%o!!yZtu2U- z?iC%`Ze%mw8U=e4(6PciGomnmj(p49Cm0h74v{|ls$v>}#*8XVGajlr`WJy}hL1%L=R}#fl9&RcM@5@TP*d6k4it06_6X zqQIbRQ>jcet1t%4JS*=_kHn&niSu+Fyj>pjS`R#a>fzx&``D zmMJbZ-lz1pqVCD20uPO(taC;O`=lup>Y$;*9Q`iL0l6^uu8Kk3!ki&_HMUXP)dmeW zy^5KZHyTagrfzL9kX5S?%;x|z?;7H}$f(`QIHe3xcz!s7=D>PH)J~GebdH2muJTpG znH?u*VR_0uVaP$p(YSgcr zX3*6vDuIS&qf9aLa8lsKL$N9wXS~myS33-A@x>W~ROrB?iGLxpjBm_}HBP)W_&kvh z(1_#t)PBPb-zM0hmrBE4m@;e~^s)ELr}sK*f+St0O7#gaD7=s-4i;FG_31o%m{)DN z6kd>XRmA5+6S#5;z^>Q9$WlY+yrFYlI^JF85ENmtjPDs_P8PYop}3Z;VwwF8eVYP9 zmGLYT){vMftPw`Tz7uj1Bn;cvbCl<@oaz9e`MUQFdsGJ~#zx2h2^^y$UDxT@P6h2C zE+P~@yP`f_pc&n7lN7fJY?YAZ2*m;#8zBVmd0g*2AQBz+NS4E*%3ks;iTsadB`|nWSmfxI#ASV)~{M44y=B~ zUqswOW1k4JN5~eA(`QvYZWRgPl$(y-%^WRnWURUSK;0!$oPz2W<)hz_$m^7FQ~`kX z$7I-lsvobIl3}i?ysC0Z4%|>kxFdI#0{u!>q$KD1*H&lPJWI7sz$Pmw*d%N$Ui zDSEx%GmT60IE+-nUzEEFmyYdKEl8yY2B=uOzQUuSQ0;mvtFkDoay>SmFSgh5nk!&( zVtkL{;hIDrr7U&nOAC=!MIs#FW(}u4isbbP+e))V4!33br+chqIZ|Vlh%zxa;>Xe} z(UwQP13GgGP86$N$uCPdj~HHt6FvwP71=RNPl@{X_8l7j%F7yG9%53RTN>_7)C`f< zEUe5s7CLOu&{V8$V>!*?xPZ=l9?oyY$%+i$(c0qduuEUQLVd8~G%68r5))Y5hCHT{ zu_Ebg6%y_uOYNd@V(p@#{jQ_^ZeQ8CM<3pU8Ed%4D5PPfl!tHh5Z~Ano&zcgd_#_C z;>r_dFqE&H?jN%wp*k=)l3zZS(ctNYlFQPpe10r^>qm|*Od*R{j#M6;SN8}xRN|bB z%CHe`rAG3eJ3=`sD3>F@V;P)?L^v+xb!k^;v*riU?mtGuzMc*%3q9ykJ9G`EwgmH3M&r`=9cw;~FS@FEEN8{8@$S zZXUcCUsREJ6y57QitenON!j%b=cP>uj}^y?jgY}2sCvAYolRNF{oHWjv0~#~DX$L( zNF`ouoG(e-+Z|z?WiTAyQTw=iim+1S46dAbNlWDvzGM2j_(~V<9b*uR&GX1}u7&}N zF;UZF#mXsIg|U)MtWOkd*gXy?w%AwNK)0tL)Rsy-1&6>?UJ|f(j%7I4w5Vcxb2y+{ z%@JSJTq}j;rpyS)5!S_%(L()2svDOe!Xa2X?w4n@{T}6PgSAH zDG3Vhz^R=aDf98uc?6pN=C&^?21l^_d!7n+NE{>T%}%k;07qV%mp|ZFkZQ3#9RlZVD=sop_u3}J{KXUMd zvznwI48#K$D@C#oN!1GDrW<)a)Rx=#vF{i#T6^YWl=rluyeCDOVu0L7y#cSsO*IJQ>OTIg z-ahZ~zP9T7((3!HXRj)(n#o(UusX%mDQ;DA-IHIkf|sn|dltTHxyCB>Gg^*7IHw2p zB(FXtFhz5sI9w$rB*Gyu_h;xNphPc8#8#BC05~>g7E!VCl7e0+mf32QkUdTG#C?M5S66V!22C;fd$kxWJY0TG{Jrf{_)$y}h_>T3fUrPwS zs#y!t7=UKM)cE39mY3Ea#mWWi-#K1c&GIE++4B~KKoYcjQ%Sp2mmLXXRBG`at zLlB{~Pj^;9A(JGVrnRu@uxT1!47%&UV&#T`!9Isc^BC+hC==@mVX3{qrpoM(F85lZ8{RE?k<(_9Ld(_Z^05| zHR^rI4BwxF`05qk@v5&x=vcANXjjoJ=N#|)gg=?lHkyE2X%SjR0a6bfnM4gudoDw= zIQs8RXdys=)l~$~fso48$8VGgO8BJ90{*)(u9^qMR z?&F$1b^1D^!kOOJ@k)^u47TgCA+R%LxR?NIUbfO~sfZL9>@7~O^^;TNt|akdt-ol? zL1sq|xUhD8Msh7x#}%1t#mZY&yn@|73JHqUQwH88di_0nslTV3`XzrcB~`aoDEony z<0#cHw**^lGzh;}z=SyRhYsnVV?Db^IO@WrGh%_-cEpbUuVVgg6)Tcraci=+l}8bG zo<@h8F1Q4`QzhmIS@&C=#Ojbz-Oky~MY(-_D-$lEyxd+x@DgrE^xK%^Ihea7aC4p3 zCF4N0HTBX+42=c{T|43YZGC-ICWELll!8nw)Yih;vWAFx`dVFt#T|8!7=enDL&lsI zJ-STkB-d~d2Z8InP(hAd9s z?G>msOUZ&3#=emr)MGR&A?nF#0V`YI0lVyy)W;ueQ7h|lmGziUQhjixcC0B?2~n%! z@w9-b@&BQEo z_!et>eO7Su7HFgYYHzZ$*g%^q8Y`#7-sgPUEPG*n?RCRO7R!y*1t?K(8b96uvPV9n zVr{|`QW)5|l)}|#*OM3OVd_;?R{VjEv`5ue6tjnH6_P7SjMxcgJFG2vLF6s7Q+j)c z?3wHB4U3o(N6KHqcCoelE({q1GQ>mp8NqmDrQY+c-H{YUT`#V3&N4iu-7Nvnym#^> zuR;_2T_b-Bp9b&rni$PN4jEX$nRo7;Cnk{t1GzAnW7(#8P&>t5jCHwY1|!!h$%kjW zQI!R&HIw*3CM!aDR&qt76jv_{9{#f6a3hWZ)MFPS7oX>uDL$Wf$zOk`SbG^{P{}M* zUN+0btYEH-BBQg?Pkve}kt!JE6Qa8k)4eU&Xys$t;jh9LAVf>B(H`O9ndl#`I5 zZ#-s=`ER<0CGAhW~Z0`CP&s(pn)0p-El*}Qf!~nwFiv|o3{NX7?JeY@>&cOgG zDkJJ-o-9jhr3|ky->y2X0>fG4kO)F=v?MUYPHznKIkHUPIX%bPGm=nwu&qQ)Yll&1HP!}$I}HSb4+nH!M8E#fdQq3TK*E~P@sVKHD{9nu z$f@yA(7n%_R$^BxCkj@#7haHI@B)RH!}3h)!Jml3;=gvTD@pJ{TW8HfQ>bYX$9WXN z0*kO-(7q+KrrL2aJ0OxKl0qWVf=%B)M+0)u@kbGX8UmON(RS_`$*=lqP< zFY_pJZJNu-I>tj#@myk5mQCvJNv+sm7+qV$&F(CB>larw;$IUv>i>w1ZQ3?_>%%)M5;*ZW+Bq>-zR6htT66a`bZ zsmb0!bxvb zlD6gCm1=W|L*pwF2s=!`!fjzVA>&yw-CV!IV6k#Tk$Qg`Qo~HA>ASvqwwM?W98ND} zXI*cEtrZEpxz5UX69-{bGG@E3Ni&NaGSj#{mX@S))WjY#cth>(gYayiY_W z=p;8Jah;MQU{R&RgwZ@%Q?O>7#cOL)xTCSHQBT7(%Hu)*-fAV4^4%zWE@|sb_%WIl1NQqf(7|qsvJ!o2 z2N^OdbB^Kunp3IrwHB|n?Yvg!3oXNAUgD2^R<2o*Bt%=Nttb=@S)d?566OHirmXDO9oKVa1BKnqn}(c#aLE}ondEUXzQGdk~w69<8cN@3T8 zP$v?UC;`ly#c38$NHjXzn2~{~`R}(_@v!mRW8n7{_60EbB3mQWxURX@xDH#1!f5ol zSwJtQU+gxKtBY~cEnf?TS_?G>;2FPvyNOE9?xB8(q~+?$$%wubxAShkaxZH4*u zRfef{!a@;6w2wYwgArF&^7qFkprs$7*&WQAyseXfJ?s1B$WSyU9vn z8-;XB2cOOO_p?fe44BqzAXy=1g@3HtPu*e@>Dj~yMLn{cJ9%=Sb8}}gVaJK`*R2jI zTUA6Ceq3iZ>2q<;n&!QAD|9`d^+pEBC@rIm!3L|ll5WFsmp}5v@lG2< zWbd**&hAxo2xpn0VsEPi3{FrE@SfK{zFardtQshK4r!vqE+(03ysFkYO+cy;quqec zP7t0BbTk@{k}!{MbnwlcBS~Lql59_$eLkNT7DFSYyAm!F5Ea!o$A^!nq2SPp66>F| zChk$TIhEs`+o5PLX&Tg>-kzn2^gs+i)eI{t-L=vj&|=5Nu{oeouq4#D*3x8J?^HE( zeZZfMlgpjTjgwYv0Qic)7BoG3Gt1nwK^O?-n&PN|UU)P&z`0F5a{lN8fzWKW6=MY( z()u*)2KvPFjES*{S1gsnC_3yewHQi3NtLA982>aHr^LM0{pJ|2FNf}og=g+g=glTf z8AI(1DaL?D4AKqTL+O)3vSu*5!x&9f$Z z$j#CnVQMcdv@#5Vp6Xzjc(b{X&b-&1I3h!ddCSE>9_MB)>v1y_=(hqwO5-jB1BaJj zMn^jDpe%o=Ew1!1shTAdAEF9CL?z{U97ghaPu}d!oPM++vKjKn=IZqz<0OzI8bs1K z13YO#4P~dZbgL?>-biVP9Nb@x=~CcJLj^R1mIke44RLOrc-iYjf^EgKqoHOO-~$Oi zd}n=W6EjLM;z^XPg^1$EwJ92FaV#4R*IFM`9LKRCMoAY(N)#*DjGDbEv2TToCtfOr zsk@DzSJclTh|pvtq&sUxP0K+{8+L!U4lLBgZUIdQO6c}* zWbI+~O5#G@8U_m>}J5&)nQn1DQJ5q9498fouJS1Jw zDnC0O`nAKkPt7?GQGUwUU`OZ=06R1eH(7~|i&5wsLn>?ASqQu71Ws%pt(y|tX4U9O zu&PBSvB_@MmQtyWftmt1$FjtfYg%EO%2{thg*cX~%x4ya@HSy6XGqe+0qVrKVG^oy z#8z|G=S+-K9tq_WojCU{z9tFf#B!xsoIO6|jOwye#q^JTLrE+bD?6EeDOYMBwtExJ z?G)P?iLgE38mIJjCaM+Yuxg;-^ZkK^F`fEyrlqLFOMv0B%2XbJ1<$hae5KSpuSK5q zHB57Exh&3p*{E;6P#b_KG!g;9SqcKwX(k{}%1eq4Ia19;PjOo0$&IQ5O2$(gvt*r3 zn}0hr-`pr$SpD0`QxbV&I(0TmFx3&qO^=~TLQKL+8-Wn1ZtZBiXV0V-EiF?-eSbcG zN756B*`AtB#b!vx3}Ye0F%pi6fOTHBu#Sgt$(UMVNh?(&JMWtJ|C*W@iUP;p!W^5u z*6PLVHSgH04k($JwG>H=mbf+kG!vI8&>S`O*(>G{V<;uiNKet9)qwqv*%S>MYyE8&(?TXip{ffwzJYyc;Zxd z8RNgoB9_G$wpPMNPYiXjd5(fwJOM!~D-y8F@h*@`hvdfL7bW-^*`$+gb;a4)%c^F4 z)0O;vG{Zx8A9Cnj8>Upx%Mr?g;|!!$D%y0kE|$gL>scDdAcxBel8`tbCdH7(ANbZs99|iCb)P%^g2Ta?#5|5bBb2 zKFtG&!GYJ)(v36etL4U;jf+OgrdSuody6V^T4}Y%J;a1jp@yiY!+KM zN>(ygl40{PE&TaC;fE{2zUF|a;vxPR1NBmxTTdU7vsxeUdJ$MawJ0M*j8k4DJLTRX zCKB2&k~y{)g+dLlm zYAu6!^J1KR;&DTHDB5L)MVhzxJ+;DaVDTT z?4<%j^PI70Wcv7$U{ay)bUfGX~54X7>qcPRfutyAPTn zYIQ+RV41zV^}&-clA=(F`+rrOb2jX&is9xutsP6#rnC!Z(2#8&Uoq70SUgsEfRQS` zo3E{S>rJQ*!9^LG#g+%TGyIvcA0#_@@OOA|N!sKXp-n>wbjcXLSth1QZIGH}#rUQM zlN{4JkM?FL>*JisFi7?h7CMR6JgS8N^t;(+ar->FL89g%4Pk6*m<|1#7)L74JLeRO zv*=U3OI=J`v;81$~Gg_ecog{}re( z1K0$Pzba||U#2-_jPs>r`ODt9r~;$Fqz$F7Q=0aLv~)`Ith$gdG>@Cu06-8G;-Cx8 zUc?YuVl=fNl2*>Q72^ZWklDQEWUv|LCNqdxJ*Ei1p=31qX1L!N5T+k(P6pn-!8jV{ zGXP-bQ|pE?Ve^JJa|5H8>BUYpa_I#og2h@ZE(~GD*Myi9H3o3_LHU$^;YW3JbEkDm z1FbD#aOI(fi?d&5&R`SsLYGbUpO1 z#Z@zl0Rsy}BfuhLBHnvR3=Cg2gJkm#BIZV|lNd7ALZ{V9lQdy&UbFs66oUG@+S4M}W8Wru>1QZYk+f?vLM#@7UF+fiT+ zgsYlI3XN+Y9q0(fAiibj+GeX^CnmJ*z;2d`t{> z6^&B)wsw6`d1;aGg%Me7p@q6tm0VVidqvHwtIEqwcvN2Jv;|VXcsKJtSR6%7>(zAxWY*Bt0LJo@Y*bQWHfdSWQILTOp}4Br!YB zg``|aVrrfbN&O)S#(Fy>4TPitL|aH&8Io2Oo9~3AQb;Nx_CnHdNE(*5u|766tArN< z^WBiNCM2yv4~L|+A!)756t6fIl9<|8Lej>N#O%HrlD38o(CeY-`=V@e~k8)VdL-dmnQ)su2S6cJnoM@{@CYv zCvEfghFQ2-&$+~-$R`KO08_n$;^faiPkP;~Rh|4NiS9uXeyF#Tu!Dee=GM-YetP5R zgE+H&EhJy5-)$=ouQsaiNXWcowkj%D0Slh2 zMUbNAJFpj44BTeRy$MWHU2Drbw+gE~NM;Ii??NO!JYkq26@{Tbmnqm;4fbU1&?<+i zCahnzd6i&sRDGFuC=A0<<7FVUPIq7l0Jd0rwOC*2mCgmEOB@Rm3Y-w*(s3{ar2!p- zAC5)qWx=as&s{}Ep`)x7%?DZ;g@q(H>o^|>XS^bZS@qdQ^*w(*?vK+32bIUx4%lEkU!1>BLV-NyT#Wwi>H5Wgf;X*ivMpp@h) z1488mBYH=u(Ke{628XxGX;1*Ls_Y)C1=WY{D)*A7A`8<61F^R}D-C{NegnpDYC5WkRT#BoCFbOV0u5KWBl(83lmsQFB&p~5V|4O zY;{8~D%4}BmN*{~`e5Uq10iGFyy0Te2yy`6?-wk+7=E(KvzQP39N7EfN+R_gE9ftg z+HT@R@`1rCSJI3Mf^akskLuPT)`_WGrA6MaX=0w%ln=8|+=A^5>z@RQXB>{ub zFak0?I1#YT8qcD-b&3LguVPBFb53?^IiH6c&G5BZI{b}y)THJ6c}t0t!B3>C?h30S zPfUL(ArR)7;d^tHaApiC`s!SX%b>LP5A@`}+gvFG7 z0D_bfvi$4g4fC5=&T`KY%Xh8O%{W}o zTUf*Ea5t~IxQ2Qg6>L*UF0LV&i)Yq^du0sl?5Xrc0sC66ksUsGoIxIQ+J1t_1=EBh@A&sliE!t)lsZJ`0GUrbT%S8_w0!kei$ zUymuAwv?+~IY7Ruu-f205^JJ)Q5aYGV%r`$m9Lz&@@fi~q-E^M*@MrVRcxOZdsT(` zpqY>lniZb{bv|e&;Dcr*zof7tQlgM8d{<$8)WS0gYh#wa%ffdoUHxFDD9$l(!V?z& zT-ayHYPC>3ZJ{H2u0;X9q!q;DX~GR3Km0Pw*T~jnZDgN|E=%9?y=!FCArVC_#0hPU zh+p{-5Ed*6Wc9j2KDwj(`n1j-Se!!3$D9x7Nc0crRN<5=@X4G)>pvgKDSo+yTg{1} z;VL$aiE7)37x-*U;CI>haKc+jQwsTXC^9PMm&)+PhNbWcj-ap(j|KQ3g#>;Mk9w8! z7T>Nabv|c^WjMGl*k_kpf_;@xWQY@Sg8c{Plx)|sT&${9ky5Tc`KtaDDXSP3fEe=)jCu5 zX|l^+IR9>VFvQq`>g#c37wYr72IAi47FTz$D(> z$8;IeJ9qW1NmgVO#p+Zzqp&(pGCz5uXw`=ViJIeQS-BWH!PAgrlJV>vUpTsd`q8J4 zJaqiv0dpTp`0#CPm*Psq&tqX#!Xv1P;ko42gnbYODB zx{dcgv1#3bjaw(zZQZ=#z!Ohwyq~L~?@N-+nPh1FqYsTg7Voi+*I54w_gI5|e&wf* z?tg0XSD!xmr5%TlO;7EA?onRVx1sj?m&*sAKH}G6KYjFAlJsYip3hBk!}GC8Zh_7u zKk?wx)6X3}{N$mT^8fI9`3F?2R5Ho0EyzD`^ze}g7?VNN1k4f^D2|{w%*^3qhbE8x^u*(j-^*~S>kF!mADx{1*tSnk&OCJF*{3Ft?gxmihDGonAe&Fc-BL@#Xet4#>PxmItwoJ0+2iAjao;dtu ztKQ>JPCb1U;m3$um6+(=FdL#8;?~h|KxXn z=ABPB|LH6L?wKv$I5Pe>|G^{w>Vf}xI=SypYn{LUrM>^{)}y2Kp(Ed|z4AAIzvJT1 zz5M!H_dL4dWcFX*b;mQp;m>~S%J-7YBfBNYex85hU++%F|E_-K!T*ym8sy(S{QE8P zeyc4{C43AN^Z!2g*pA1(`>+42fB6q{4}5Cwl{-H9lh1Yiu3+r=$-VpcZrFQl@6!i< zd2c&I?F~|9Z`)P;2(ATX)=y6yNFLkyz`dI`Cjt0>-V=b+ffv4Xc;|}GKQ{D>v|ra{a{ARLuYWhXJ#=t1znoE7*d0^K{MN*+=_Q-|DEaVqeupvW+-)-^e2~q^sjX%E4_~YZ{(+Apg}T_ zd7ktKf%g>uPf~k^R+8j)zpGTHUTozUlW0E}P4S#b4pF-djKj2lhlv}h1^7KenIrte)_~Fyw@~7@r4*V5fE4e_%`HKgnsK4BV;lR9Vqv zs;wutYim7}(unH6>EtJXv5WdoT5WO3bn={G?qi%7=PXPsC$BRew}W4%=c4vfbov{H z^JfBlak6lZvqEp;fZLBjJMKSeG~W%Zr|HqNv^vw)``g1%zyDUUj(#t!yO`qb^!{=F zpqbkL$)uO|A7Ffs(ch<-DN|6rjFeb7>g_n_C)fUi|L;t9(hm{VV(0$H|Ng_H!2b)p C{V|#V literal 424448 zcmd44d4L>Mx&K{LRbAcFvm~9F^h_p@3Co0Hx+jDnAs`|MA|eR5U_gWbf)bGmU4WQQ z4+8>j2?Fkl2m!e+SKJjh#Qk0uh@hy50ln_~f?mCP$KU7soT~1gNl@>-?;r0#`aI`3 z+jE}toaa1et>aI<)(bq(3;FlAzj@vrxcWQXe*gZ@48eor9~<;O*!$Hz?&vx0t9v}- z`RAp}H#U;zHO_qD^0Uvp;DY3$wc;y(qRsaT-o}S|ytVHRy#z{Bz{vGA09!1IScpjYWL8g7L=soQeudK$%`My&fttvsgQuC@e zsj9^V1?M?5+AX)IDjCMqK~1(oHHD`X?6__Kh)Rwy0K}pkVSwiitqQ!qKqC!YNl)wd zqH+|p?kISnD=B>rsJ>#<`Z%a!xOvaO3m=Z}gQnKU9A>*>gAz^16KP@RX;g|S|~l@b@$|P;^tu@X3aF6CiH{k@#gb`i_zx3*d0x-w6NrGg{VVP zXnAsF22^KzV9C&`g7*@m#PfFBdL*4}qB{Kv1YkBgOYQswl5Cq8$xvr^P@@^@xgFG! z40TQiHI|{y?Vy%ssOPm&DaDp&R1MTrdK8`(9WawzXjH#HoK6pyDm#UvymljU+AMj| z#7Judd6*as6NbDf-VClanqi&-CIww??UrGVZ)0``Qzq4uz|;?oHjm-o{GE`WJ0mab zFFo8BWTEjl3$()hbe!gQ39lB@qsel7I3{Vi`fxwdo}6W}bbclS%0!{_GwGd|Nmz*D z4P`GH3M*l}06xWkpe93w>QGeMw-Q#O_yr0r`c30gQw*pS(|yP~VUQ_TqLFn&Q6;Jr z4*J@T{z_OcR>C2lUu5w#MZVh_159Lm+)ATcwgdpQ5ElJ}HG@Wks{md1|*~ zi5=4t7mz9d z`=lHrV6_%HIGm&dD?)N2XnBN8PLk&mzZv%6xez(^NiBqKzx#v2uLjh{S&WW({PV#rxR<3;Us77(}qhL+*v6h%3=JL@2!m?(5{)IVrC zEDQQaFfkRan0_}c77Wk!q>xrFN6FK1`nm_VA_?61w%F@k)*jy=sXQs20MBIxRniS6 z1BKR|l7S#Z0A3&gp!jlpy6D;lcKR+tC#FVLOn(YsHo72>GBKkN7x8K$7UGjh==-zL z`J_#sg(qFdPYc-%;capb=;3%Re5(7ylg=L`zfwV~eKDdOztDM_N|L}mbfBM{Y3ZKr ze9hBv{q&`ZNIiyD`Of|X_Afq=pZW^l;v^0A=I0PQxh+&nwn33xo_v&8MutT|*3M8w zq(WsTo5(MnrQ8WW@q5Voo76-!EMTksgyey6⩔2{OK~enp1#+l==uJ^J14AV%GbPu? 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%0DNuN=qWh4LMlRSe)%h=$ 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%0AO3@kU%RYsMV|-PZFpJT$I1)MilP35Tv7Ym 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 diff --git a/docs/_template/last-modified/plugins/LibGit2Sharp.dll.config b/docs/_template/last-modified/plugins/LibGit2Sharp.dll.config index 21a2b5601..c93e4cc22 100644 --- a/docs/_template/last-modified/plugins/LibGit2Sharp.dll.config +++ b/docs/_template/last-modified/plugins/LibGit2Sharp.dll.config @@ -1,4 +1,4 @@ - - + + diff --git a/docs/_template/last-modified/plugins/lib/linux-arm/libgit2-6777db8.so b/docs/_template/last-modified/plugins/lib/linux-arm/libgit2-6777db8.so new file mode 100644 index 0000000000000000000000000000000000000000..4324c2ad9987e147d014d8fd88cd6ab560ab5b8a GIT binary patch literal 968668 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

Vw#-ISroNRKbIB>s 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

uwkU~?bU{z;^F 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

Q$5xEFD! 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 E0hsd21ONa4 literal 0 HcmV?d00001 diff --git a/docs/_template/last-modified/plugins/lib/linux-arm64/libgit2-6777db8.so b/docs/_template/last-modified/plugins/lib/linux-arm64/libgit2-6777db8.so new file mode 100644 index 0000000000000000000000000000000000000000..a72d7419d8fecb74d30c44714c18c896bf354731 GIT binary patch literal 1278936 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%0A8ADD4V;@4FIc9tT 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థ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

Kr`;8TxxJ^iEr8ho$3`w#uZ-UB_T%l`k+Pc(Ob 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
Vd?rc?4oeS%oUJYGk-O`SkoJA~!KCblm_T$h8 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
%=C`^_8jJJ6V4ua`uQ4 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 z
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

S+NjLht{0nU7S5dGo7(eH0>r0o> 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%0DkJh$1c^A! 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%0DUb0+QBcm`N$V}_P%_3LpkCC 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

tau)Nw*si3(Ig7ca8iB}@ zu5>2z-E`;G^se2>c_89*?9CV~*{G zGR9|!Y0gf5B&B(F^50-5?;79n50rmRAphz&Uuen5zdHtIqC8mCuJUhxK-yW!Pv-5v zMgF~TC!yt^QU0Cs)$+=G>imP`6%6G6bn@@IK>pQlJ}716-|ahtQcnKOfzl`M?hcf` zT>c%u6Da-D%D?fihNlMV{Da`>A1nXj<@j3iFZKSf{HwT+uOt7ye(nF2e?z;Mf42-& zD9D$~zamFSKMiXGTJ-hh->=#7-e1!4|B3Q%Fj>Ra#TF z|E|srYB%z4FsN{@*6sz)|Bn2d-f~BV7O3OdK(!O3qJ@`jg`}*0$k9XGi>8iw9;>X)- z`me3_pYOP`inP3#5&DYQN_Owlcp7=HY$W;M#ewy~MUtP83A!s4Wwznu<>qVxL9)gN zm7-tukpV(s(*??>zspYz|G|NAfhdh+&@UBa^4w-Y_aS5pZgSye=Xr;D{?}HX!YVPAC2kjF7IZwzT5KWC{i`x=k5ljdAP&JHJ0WW4qdIZRdG%R4LGY328E)EhazDX{GUAedhY@T-XM^hl@Fue*cd0 zY`hqmp~yxflPX8ZnAfZe{?yZn-ox#Q zwr*sH=H_4$`qJGZGkxuLOehcz-Av*}%i$7`QZi_Rd1BM{&f4VYdNrYi;}B7I7)*>~ z9k66xqVUiwunQ(fk0ZsXsbXWv-KAdZiS$nA$7r7?OQ5uvIE5lmsq?rfr&>p9lUK6Z z&)IzGGO~_~K@{sm@i4BDi(KhWhF*p;*4h?>#u3x0Cs4gQ8DGbFE&9G)&!-DwoV-0# zxh6CaM#DgC1S@lT_y+??kAtZ}GqW{N?izxX5E!;zi>-xYbovBkcF|P5-1tA>^Qj(h zZD3h!PU=X~Aq^P~92WWHyV0SE;y?J%DEnwj5 z>IAI};DM!+aZS088Z(9stP{^D2JWg|4&4pPyd>HRg*RKHV)kXO`h z^AC^Xpye1wA&axAAwys74IqKF=bYqDlsGkb7E9Kbro*x+`Og6_Q4 b&?|AZOP|r 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ȖU+file>0Bt&xphfAwgQo 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�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%0Dnu5vB+j64e_5vMH2v^Fxak6{gD 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


{qH@dcbbEb6EnJOQutF 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≪`3jd(+KH<+7={E}hhKTnIZ+s<>kD^)lfJi4Q`~s2B&BDJZ;$y;} zBI36R|GMz4!cP|YY!`mBNIx$8dBS%K|FB3WA^dkle6R2)37-^xlBnO5@FxqO7XAW} zPQUP9ig?QY9I5&jgBzE}7G5nn6(sUqGd{5Qfk3V)#}XTR{HMgE(G&lBlHg+E8c zZx;S(;bX#Ai2QF8ezHivRro2ww+o*V>BNPv7W?fM{zt+mgm;N_dWD}P;*-MXi1?K7 zyF`3i_;%s@h2JUCv0OUR{x1^oIl}K0ot4w~KUA!hb39pBCOB^4Tx^S;AW`8)^Sj#C~&xpC;n%!oMl@n68rTEe@LWLD}0_fE}!s! z624LRsMxPx_}9dKn}t7D>^CZWNTjn_`13@3O!(cxZxj9=kxr}d5s{yE;a7|JxbOuc z{chnE5uXsgN0d*m@E;4G6#gH=r-UyQ`%Me~E0O z_-(?s3V*Bc?ZQ7P>OC&JSHyPzHlH;DLJ;V%~6C;Uv2PNVSmhc)bPaD_e#CK*YBTf1^l0F8uSNUb=<9Or(<#{yW0=3jaruep2|$MSM#5 zr$qZn3;%#fr(bxt@Rp*H_P-oD7;VjD}-+p{?}r^e&I_*e6#S+ zi2Ou_cZzg23-1^4G2!nK@!N!N74faY|3T!ZUHGW*ap7kR-!1$qvEPL7$34Fj{x70E zB!%B2d`kG)BK@@RUyI}F7k;dWw-k@G|B%Rkj_~vYn8W|Q_!{9|A|0>rZsBW%FBawL6aJ4PzESvu zC?CJ@PLZEx;YSG{6~0uYzghT4MSfz!&k^z4gfA1mRrn#{+l9{+`Hu^~SM0Z2_zsc( zgz(2ie6R2|BK@TBi-k`KUnhK8c%Sh7(u@6CW{tG}^F=;$gnvfF+l99apC|ls;T^*N zUibpxe=PFp6n?dcFA{!?h<6EZ7hV;FM)=1>I$q&(MSQLB6NUE)|Ews_ zM&ZvD-Y@*`L_V8^pDTP+_<6!_mR_VE6aG&kew*-HMgCibe@&#*F8tjhow)F)iE`@} zzEt>x@Wxk?IJI8kYejrg_-?V^l<+5se5QqO7QSEjpzxL}M%uqB($5jTM3j$R_yr=J zJmG7EcL*OAzCid2v0ta~mBJSZUntUX3ICPIrz-qaA{~$L_lx)%;pKZNUg4`nI<>-Y z74_v4{z{S0M&Ua|I)35TiFBHUUoY|*75-nsZx(*O@G;>Ji~MX8zDC5i3STVp(=Pn` z!pDVAi*&k$UnBOL5I!m5dxh^6=_iH%zDOq}{A%IT!k;P9=@Lo|` ztA)1F!k;dDk?{W%`EdzfFZQbn|E7rd z2)|I|zeaiy?-kx5(ytZ%bK!l$8$VsgdubH@Vv)XI_(dW=&B7Z$QO9ee!apO@*)04V zQEoBeuMzRvgdZ#7TZR9Z$WOcQXNvf^@Yf38E&Mm4d=kQ!3*RgJHDbR>;hz)fr-Xl7 z99LTSKZy8#;TMbaE#Dn!|9=zd6>Hw(W^ z>^Ca>_eA=eg)b5Li3z`4_-(@fLikqUe<^&s@SlkN#)VG^-!1$S;S<7l3EwOH^};8G z4~hJwg#Sd8Pg?jnqCESBe@Dbyt{iFqH;Db_2!E!Cw+o*w($5oqmB^<<_*Rilf$;re zzfR%T311|9RHWk)zFy=<6+R~N;}QP5BApuHCkXEq{=XtWwZb0~>HCDAEb`MR{11iq z3xA_XzghU3gpUe;m)P%S;cph{$Aq6Mj%%CnQ$&2L@TUvkF8qliow)E{2;VLIHzJ=2 z;old>)hm3HNGB=$pztZ-9}+$-{Evk17ybt#KNi@uMz%l!h3~ZCh}h^e65K02_F&h zjlzE>j>|86fk>xW_;-bm3jYI<{$}APi1LXE|D{N0oABp|_*UWX5b^E8KOo}c!k;US zt6TX0h_6vWD@D}$-`~REpIl^Bp@@W_T zMgx#SBUaagJ;FaDe2wt83GWsDVR2lw z!hbH}eZrqC>ZMWmM?^mT!Use;&BDioj|%@Ek`~R`X zPmb{8MZ8`3HW8mEe6#Ql;jJQ_0^x1KJB4?N<1G@tPo(b>{$b%&;ai3G2!D_8HNtBm zKVIQ)7xA^ie@Ddogg-;%zft(xh4%}8p-87$c(sPONIbT$jWO{5bOzEb#Y!rvi| zt5x{*BEDUCMdT+g{AVJ*Tln1~p9$et3EwOH5|MsV__stpQ^Na%PYZvi@cq(@^euBn z+W%Q1KRLo56USv2{xT7tC;V@OcL*O8zCifDhwfW`zaf09@MAGgQx@ZZ^BOfg}ME}mo1tZ5=g4qVfp0zmhASKOD0JT=;L*Q(zk1-zvj{--T z4}eF5{mlEoI2_H#+yl-5dztrw$AUe~o#0%si+Lyb1hA8N2Y4LV!Mq(j9&Bgc3Z4MA zFmC}X;Pf#P=R5$mgOkjgz!Sj<<_%yfL^^)vHQ!h&B;6yd^*^{JRN)n*v>o+d?wh!JOw-z zoIZ-XMq#UHt;lXoO$qb;}B2yE(Cj+JHdG6S93A%1fLIfGVcIi0Cq5M2VV%bGj9c71hz150bdMGf5Y_; zc7l`4o4_-`3FZypncz6{8ZcgY)LNNWf^m`3V$93Imw}_qOTpg(`R`V;H$t+<{e->64xBe+riafJM&iX)nE(r7BC)NYUx3)f3OFfWZnc` z08TJ(051f`nb&~vC`4;zUJ1Si9AjP%UJQ;hF9lx<_A@U5V~Sk!F)swyfW6F>;O~Jw z%%xyV(P}Q{Szt`TYEI^vU`&l_4(93L8^LzwX<$szX%^-wU`!cl=>e{Puos+U&INxT zoM5(rmxANWgP#&F1Gh3C0{;LUV?GGRt-TgyJ^;ooz2;}$2mTS*$J_(P1xWKU?*-oq z_AqyXmxEo*JHfYsoyH|UIWI^No!?Z3C7Sxi!m<;W2m7;nU{hwG|>FaOTeqaKIVmB3}1{nz8CCZ-VTm{?aW)j_kk_UTfp~&(}%hK!BKFMc@y}j-~{sq@B`pD^BVBa zz^%+H!4HCC%*(+Kfuqbz!4HG|%uB#O2m6>8f;WS`%$49@fIZBm;4NSm^DOWqU?=lT z@S|V{^K|ep!FJ|p;9r3)%u~R>2B-ha^$(7Llgzo`$G{0@8+a=?&OCUK_&4BI=0o7e z!7=88;NOCy%m=`~1N)ixfqxJ7G53JCfxXOo!B2oa%$?xvU>EaF@RMLC^A7MIzz*i^ z;6H-x%v-^K0$Z53fd33m|A*@z+zL)IZvy`XoM7Gn-T{s?uL1uR+{(NX{1iCGyd3;D zaFlr|xDD)QUIKm^>|0gBtNJa4Yj6@blmp^Fi|^c$cZ0pmd%=6a9_CK)Ua*UKC-_CMlX(aDC9s2eJNRE|!Eb!Z4C-Y43J75R%bnv@iJM%Q~dteLm6!81t^p{-!;3PQ7 zoD1F$PB7cR2f%UW!4&Za;8x~C;19tu=7Zpmz)|J{;E%z6=6&E#z&_?4a0={Y-V4^i z9_CK)L9mN?C%6ynWZnV(6zpK$4*m>mXWk0_9Bg6U0{#M=PILW()8HiYCh(Ww1oH;) zA#j{|4frc?EAvY5f50*3<>3EEZ& z@Yi4`^GxtJU~>~3-cB*rbxB)=Uo3_J2=U_35-|9wFL79Fdivu zappB({A8Ba%DfVcpIXpj%*(;}sVXhXycCR|cG3LIOThT*qvm5?2+jk0nJdAQ!5-#P z@D#9%c^3FIu#hCWX=WSRYWbp zYy(dN$C(E|CdR8mS}XG*a6UN3d=PvNILdqgj7N`}pLrknJg|?s2V4O5GVcW!f<4Tg z;OSr&^G@*jU?=kq@C9H8^LFrsU_0|x@I_z?^A_;M;Pj_l|6nIL$-D_X1Ds&q0G;-%3jPk*&%6YDIoQX%5L^WIGFO7}l^xB)Tne5Ab}`Qa zUjcS9&jjNYc+J5)9gMGBX?EsmV7yAAS(vAQuLP(2xc0ME(6Dy4}$UPoEBw10LD*3X@2H?;CWyla}QVrdztrwE5IJ+PH-jI#k>=Y zpYG6{%saqUUNWZnT@ z0d_EN2mcssXWk0F9c*FV0=@&BPI3K%ec&YXCh(o$1oH;)N^qQc4R{r}m3bw&4jf}% z4z34BnU{haz<%Z>;MHIs^FnYV*vniA{t4K_Tnb(Tb}`Qa-vxFu&jhapJD8_~*MaTK z)4+I@L$feX0p9~of5P<-_Jfnmx#0ES1hWmi0UT!@{D3$BZe>0M4uWIM2f-n5l=%R7 zBiPTp58MRyG53I*!CvOQ;4s+3+zH+Ub}{b+w}73@JHYpX9n9Oo5wM+kEBHRJg?S73 zesKC@u77Y8oMhev{wX-YyaD_GIL^EV{4;PX^Gfi8;286A@I&Az^HT7`U_bK`@Xx_M z=7r$RU@vne_!nRgb18TW*u^{x{0P{|JQMsV*ugv<{7bN%c^ddvU<>mU@UOw?kGTH9 zF>sPO7yKAF!E6I>1;?2O4-o$b+{%0i{5Uwqd=UIwaFqD~_;+AG^FHwJ!9M05@HViQ zc`x`0u!p%5ydCUf-U)sZ>}1{n{sY*-ydC^Uu$_4;_)lO9^A_-*!RZgV{=u!_B=aWl zU%(0G4d5N%IP)6tU%{=+E5T2JW6aCJe*;IEmx9~Ce&!|Mr@=nvh2VCum$?%B4A{e5 z3f>8JG0y@&3wAQk1V0CMFi!{n9c*Ww2L1=w!aN21PjLDJu77YGoMg@gcYqVjHgG36 z&OErEco(>p`4ISdaE$pN_yus3`2ct~*w4HV+y(YA_kg>>Ugo{vJzx)WCwMQ|#k>>z zBG}2i1N;)$!Mq*(FR-0?EBIxwg?S736>$0h*FQJ`PBL!-zY0z;ZvgjzzYdNvF9p8=_A@U5zX|p+F9i33z08&1x4<6eQt&>oi+L9KZLpJhCioq& zgLyjmU9g>b8u&f1g?S42eQ?xd)sAdztrwHL!=d6MPWtV%`bv13Q^_fIkI0n74yJ1KXLm zf2&|KKz@$-D{tB{;#n0elD?XI=yT3f#)P68s-zj90<51hWl{SHQG5^Wgi$_^C{-mH7}j8ysUk2*ytWXi??^;L%_| z^FHtxu#dS1oCEeU?*-#4KbnWR6PycnG4BN96&20NyaPNA>|ovw#w&4}op~#G0@%X5 z1+0M6?+xMkKiCdVGH(J;1Sgm`fKLR+nb&~vm1eD#c_kP>38}@HmxE6RN12y`@hXqz zXI=t673^bP2*yveX|&k;J`L<-o(Vo3>|mY_#;ensop~AA9D{FuU2bb=DpxTu!p%5JRR&}-U-G}A!ttK9pDSV4(9D(ysD?!nYV&3 z0$Z53fG-B8-{JZPGb3 zF9qWjM9t5<1bjKz$Gi|+1okplf{Vc(=2Gx1u#0&X_zJL-c_tWNDbgIw)4{XBcIIi| z?}9DNQ^5G@x0ZgJ>mTd_Cz*4>Zg7Ix1}+81nFrq`##i{XR^~%syyB|Gm=A)>!BOS| z;JIKw^FHuAu#dS1tb)DFd%+c84|6BD66|8$3BC&KWZnU;0y~(ugR8-I=B?nX!4~E% z;Q8S6KCXYT2b^Ty1jbJXXbI*G;Dz8g^BV9Xa4Yjl@HOBV^K$TFaFlr|_*$@^c?tMB zu#b5m7(Yp%d6_H0-vfJ?OTkOPF6LR_>%mUunP9xara73WgKq@enWuqo0$Z4;fbpun zmVS%tAM6DunRCJ42Pc?q;HBU=^WZzg%fPM7hrmAo$CwX-e+Z5;9{}T3K+Vs*5Bwvr zkGTho7tAy-^Iq_+U=MRAcsba`yc2vI*vY&DyaMcC-VXjT*v`Bad^^~}yajv*INi(j z5B7nR%$vY>f)mUez$?LV<~3k^g-mN@UJ0%P$C#Ic>%mdxrQimzpLq!wKMA1um=}T@ z!CvM{@K3-V=2Gw)u#0&X_%5)Mc_w%**ugvb}Mu{?FnWpDk*!s^J&uy}^lUWMNKO#5FWyPwK6)7EAbrioouiz!gJv zMJ<=K%*j?G*Jnqrwib8Sr4cnm|GOJ^V8~iNIqqKHJw*Rc)vEBJvhc@M;V)8KXmjfe zeY>s?r*3rL;J(p)ll$gf?rV9!YWNj>*J@;W&Y~G_w#n|dxc7QvAG;Q*;jh%l z(@A>Jp@!c~UAk%%UWin~yX%&ykw#Y+Mm&~Vx?H(d%Z#|Y-AUv++-0rH-tKO_n3imH zquqg&?UpCY!W|u&&3!m-`|8O$Vz)nOt+Q@dTjmx7uCC2i!|$u%xi!~oJp!MFDKfmXsDe3c?Rt=HS^I?IKIA##_pEV+XS@18#Cf4^KVI(UPpDLrt3*BP+Jz+ zX=61~m2X$WpSas|k?xWY$5XZ&PgIv>=hNR@wdI<8yMLC2^YF{#^YEuf^gN8N2xsS0 z-U81%c;~lVq)f#tC{)*xQQJE2~N*Z!`C^L zJz)x&Hz_= zT5>5mx1}}o%T&yna` zqUgU4RZzF_46PY*V;+S1F*o|L>hKHhYszPQNQHOdZ;wr|EK(ykXHf$zQrhNasgb&T zhZ?TS&nbCq^(>_=p)R}TA&Y7~h-#$$D{XVEO4}k^M>1z@Lfx!dclobaU8j+zBz9$$ zJl60c$5E3j;$qEoG}M`KI|}TwAq{unc`I#T?c1ytf30l1k@CmewIjRO_17u3qKE`|G!ttX4v}G$NaHkVg)d540-0BHxjEm^$oG zoDYqUlaE+wE}`V;kWtJi!B4nbAN7mNQNFI*^>U4T4e#*?r|0 zI?m7lg&)}+rwgwV{3Wf;6qV9;RW>&}s-&!r136>&7AKU@ixjQzYZUf1mk`I5*@*I> zZ$vRzf39ggC&=sOWJNq*s*yQ1|DaV>=Jrww+1Oh9ih74Air#3mHf=u{qo0A(ULE1` z@P6$++DBQqTf2<@w$pz@+WGW(e1GO%TopOv&qpUv*VXU7hB`yK%w#Qhs4Yued>)i3 zZI<$2yl%eR-(Rl;-^Js;zIihxSu{K-;O- zDrufpK5g4(s@q_c(SS@Diy*(#Z5(2q0H^*`vrAM`t=0st>*Pw1J1F`_AV)9gSL)RIqv%7Uf+**LEJm>xu{&3n+SYtb%*!VHMooSu3Qs-nFdGP z$r|mVs>K%mvMl^|V7E08x4Mc%95YaE-ftF)ge<-#;+V-L7KM;UAdgZodMHC;JC3!gw^0 z{K_4OQ-|m$YoS9cFYG9fEEuH9wkb_FP#!7WEO+E5$6Wp)I-;LMA?yP1@-d;WgPx@FsLvO&0njb(RvmNME|B{>m=fnUwl7XV6DDS82;p+6KaF=yTkJ z;#b0zW- zDotpQN?W5tjrbgq`RHU;&%`voMSbm)BVCt_qO~Es=5?ftyO_`ctcs{-9qGd4n5vY2 z$?Y+GL@n%6!)eMLU3;Vcfisn0Ic3T}Ftt9PGTv1>E|bS_WzH`D!046Z{R870dIH)+ z|G?OWz54Z;j$f@SrO(Am=t|mvw!~rKuxDu(K^W!j9~h^Eenrhrdx$=wT{aX^-@}>n ztIOsfer76ta1-yc@!~2@fzD4OJ6bn4e;08!A9KWa7JvVT&b+gfHs7?4{W)W)m-C&Y zJlH{f2Mso~iIfJ77s_Y!RMU7NbFcF+_cc|Ka|#D1SQgU&_-h&;sA{Av-$6rzysB^+ zMy7O~P}cgtc6E;OeH2B`^rMy-J^td0QMgO^ed z4BoB;-=xY74A4RntJmh|g@)=+3=H0(1pm%!XrYJJ1P+c44BC|@ybK)BMh6BaDNRvY zRwLOD(0G1Ej)KJvsTh+hd!ftP&>Ixj+ zv&*TFg7eTKjX|OselJrlg}aru(Sg*ul2OXWyeyRUs4(q^#siJm#Z$Cm5% z#n`$kayku6N7e8KoF_MpI+f7fv=tp8cAKC)R)ycC<|7aDxI>)Gho}U9%cWgT#Z^yT z<+?2FB#o+j!N1Nz4fri;BGlsb9B5NGXLM6ZL*j6PZl%@8wK)+V4ZQrQ*TAt`Tc~?n zKxu}*tXMYg-YV<)ui}K1hXiVS$4Z=(jfPnGx4gdi;bux*2*#*?2aspM5c{uls|t zaWrLp_RWA_&$iI5dfjH);Az@GPhV+zf|k`Q*5>DwwalXv4mX%e*^5<$9qw>EkR0Rg zNM)5$XKYn|)1d@vs48ju)x16Srvz`MW$JqAczB;mum%F-t)^MXsD(3{t2AMBP1|0< ztEqj=K4ziqn?{kYXt_G?aJJR11dmWzP|zt9#K*5Rjitrm^`STQ^@nMAWvqXJjIo~X z(Vo`VzcI3Y4=oO_5B*$U-!`&7G_pNirdI3gA0AmB9@#!y302g=I8XCIx>D& zX__TaO!t(RP|Ow9`Y-4>uBNz5fBmiT=TQ*i1O0Tzd6*7&MjYj*P2`R76;!n>oXDK? zfwYxxoGcZQ#W{5T(g2YvPg_gd;Y`NO0baSLHFPuZo?5t@u2?ji5f~gxy&;`JtM3U6 zj!}Y*w5T+p?+Of#*3Yxhuf84{;**T}Ub`B(+7;@d>w-fG(oBzKMo-^K97pYxI*UQl zhv^nwX}ffy(pF+W@dtdBzxGAcIuWDgBBJ|p!bI_L<*Tz#oP4oO&spBsKsd| zkVQZhO$C4}_JX0HXQ=LDO7n;0Gw1Uq`gRMA?Pm1o#d#lgpgn;G)T7}B%-CZA#p!zt z4Nw_SVtHif{Kr|V1jk}E&Riw5PhUMS!1*_7>T0{TnA7b0icQ~7ak#-h>9POfSU>G~ zRs8jXO$ZO-YdV3!bxIJI*~o@_ zxYj5J*TYEZljz#U1_p0ZLhsUg|2@|6^=r#RPv!fG>Q|PBKD+0~?v`MFjF9e7zt8>6 z|1}Sxg#Jb$?W^fSXG`fE*pC|^*c^b30+OQ>3ahCj+9b+r6Vsv4hB!7{sXJ-i(;3YhS)3O%fbWNO%&q3 zt|C0-zP3EP8`bmQ$emV92){%(jx_rj_%x4e=#1|aC>9!^jni6D1h{XDL>qZev`c)q zBND|e8BW2C7{f%OTysEtQy|d4&dr%93-4Egk8{91nRvX~5%D}p+frTiQ(fWRBdRMJ zw&H{>3;oegf0WQ#`YaE9c+cvxaQcK$jHrGE%|~H?LLb8;lnQH?n}#S#2(P>uRaTN! zWu-m_H8y{^#>!{wZ3yH2NR(?1J;>RVukvu3a!NC=W#P|L`}E3tm`XD5xXRP}ySD5s zRNrGpf1r-*2e$gOm@nulaO4JU`1nK!e}=Nd!7p z`3LN)PvY`ZUrRnQm2Q8O(CxHY6%DI1#j0nvDm*SfRmdqc+vij7!!!)Gd`on_Z+1|N#cB9gLI-oIf6%{rx_|KQRUSGwR~GmO zM>UM{4>r`FsYb>xKL^9ZNfTA;n|fr!8<9#XtEC zao6yC9@USPTN|C6ud2)TsMc5L7TG^Q<8pe!FhNf{m(teiDZ{tW`PXIRxwc0rO?TiM zy0UNO)aO~tic?AmrH~n$X2!HU_o;*)qE+00HQW&zH&FEy*@g zBjM`^E#FfzTG@ChynpasC3sFYM+}xcwEFw>5a6TFCs6go>Dfq=YV99NV!n>*U(Qq0 z>|e?1x=)Obe3zDodKc~GTjJ^1XpX7pe~wkZWu(m9z3O`U%w9Q;K1Vgs9LQip-K#kM zCQM>v&PO`8ivIW9a{V7|%E)KmMx)>QmV9N7BUARuMjvXQ%U{`8P0O5zd#P3RZJ?m* zF`IUkjXH!~^xv!8hLzwCv5kMQN!_dj@ooskOv<9ksSm2?GGd?6Qy%`9NGlKjyRU@v z!=n!B*=hT-u_?acb^E`eZX6Q;wDl_N<~Ey%AkNPU_0+#WjeA^GOLl%$nC98|(boH^ zA7ZfBLpN{_b?Vp0;c_1Cr@!U+wPkcBN|SD7YUCb|`JO@GE>o@#5}!hc=&*9^Su=rq!(|uI}P~ zC3q>VqA{_J(pdQc6=Yeyl|HNTDJr3~eTix5LrQQ0MbXHhZ=$$fe9Qd&zLle@ia%I& zhDs%a`S%HZ*Wi5BXXES2s*1fi^@rR$>v4Y9QE7#Gs6zf-g`uz#T884o{kVKwB6Gzv zu$(lVg7jRcw<`RD{DP|R2W2fQ^2b$#pYJ>Mf6o-Ux2}Hz-49Ll&>SW`KR!nH)v0H` z<|%?#Xlv~@YB#F2mkQ8M&4+H9yD2AXc$YpEj;Rc~segfn#x#{n6aF-rUZl^(DNR+h zDYqi^wF5^w_4&9*DDp_BKIMM_t;b|CO%2#koSjN=Ev=@}sysZ(X)?I78ZUDlY73@Ny~%TBh2cV=E6Iil_Xqvhga)4W{ElrL@pxqi3~rxW*N&3?sTd^_wXR zSK-tyk9k5Fs;fbWrLe0U^Id$cLRy>!Hs-9BVDP+s@wS*Abk$$J9(2Lc_Jy9@VFS4T&8)H^3Ku5ezYst`xF zhXjref6cLhuc;u$O)igAP3F+R*Dkj*Z%^QBHx=Nh^2xN#{sDUGaCuqb9!`45OOHzw zD!Ae#J@t5%-d=GTe?`)JX~1Hgyl4G>i}j14^&NPzrL6c>C9sv613f^b^3pnSa?*K$ zszpnr(@F{9^|3A+eW0zyC}Oz3)aM#Q_mV@6+vq97c}nm-9w7{r&^$6N(J<6MK$WzC zT5S1@4+$<*g1ZUa5qF|wY&+_yVSL}Y!|n5)Td8eQSE08}I>WA_rujW;nqQA?crQd# z(I?Tyyxu=Rqm)rZUAAI9cQ!r$bgCIOA4*eyIGkVoeAM0{$L$BHpl1!FoF!u$zU;Ei z){}Xb16=4z4#!8?`ceElQ>rP95nD^wYi7CbIs!tam9PKQ^VJ2xv}vz_2=k z{L{4PRau#1Sbh4)^$^n*6fickuHkbk9y+EgC=pt^KnYdS8AuTo)Z1XiG_0VciN-2T z7t+eANCjQhDr{v&5v@L%>W`ko;et0dBO5;Ftv{ss1g)P>o**3y*C(cAD0GgkI?Kc>qk*Dty?C0%7)kb#!xxv^-Gr^XUUj`LtVCM z`i|bA2^C76#&DU`eq~NAIh-1uC6wAT++JuS4R`A8r%^(bzV-m6i~8R@s;V)@u~6^ntRIUrICwAZ0KKdJJP!3U zFLKSq@_Yg4Nvvu%KV;y>a71td!F*Z#bw&juP9X<8SjYe;4LJL9W}UU2f4@X z0Oj}`hL2PpC`Y^jg79)H^-BX(6u1e0hKu4>S~B$N=UDaaETLBM811mj=Aln&EvNS5 zoV-?tTmn4&!OT*ZZ5DlMN9gx)sMXiq(Pf*j2Yp0_x~XMZ)i@o4AJ)yF%j3Gb^XVFx zPd!n?DcT+iL_b82^iPh|Cg=&#*wxn=CzG{gUHvEACn{|(;TuU7?Ls;msqCrWdx~Zs zcUiSUoSu;lmI9g|9Kvf7O_<;0=Vw2qg)Uo#o|Ee-CnXow{kHvdBvXxig+8o1rMP3= z_%55G$6QXfup{EO9_iIKbGn<5?)m{eVRt6sqTz(KY}$mnWGdW2dYz39j(XbfQd#!> z+&F)#BBS2@Z~`7~>E}P)YzOz$-Q*vjR~EL>Zv6vmX}+EoB5s}?#4J(7eOHOKp+4e% zvSjY+GwJrNVp+DIUJ4jWV!mx2jUl^+)1yZDy^}E^kex%CQ?K93k61JNn`e#q=*i|h zo6CO;FL3nt(VIxL!MrT9|EuAZw$=P@NV+&t|7&^=Lw}Br=V8|`; z%ERlE_?gvO%7ZqU{BZv0eJf+|sILFCoB9~FWpq``bhYKteEjeH=sI7khM&ssr^8mm z59X)&Z!jO-9VL4%{dSxhel))sNSp8zvhcn6F$yaS2lG=1Z=uC|^YIHF2t{{_PzR-6 z*78)oh5lBxJf82QziP`L@{917;x-#`_@CH-V+OknE+YPc+H(3i1xCW{xU#-Yw<2}9 zLkYC}SI(2IO(%X6F>t;?G6Hlk!J|Hx8FU_YS~S%#bZvv*HZ3N z1JC8-7)U&qZ>NRuZrT+l3eiFkncf$ zE##z-FCjRat%wmc#vIUotE$#*M{})L5eA z$ck2DF_5&t$vK7PFk1?8;>zfUc?k^WnuMyOTLVX2Yl@-6hYf(pffHjv=p=kj~$FVFv8 z6#A?_Uk$9KgQ}xfdvD0E89qY9BN2L?pn@J_QH+Nw=9>H!^uE(rq+Mlyw4(SGrRk-U zklC_)FP?*WDvG;Wlq#jPzbZVa7IwDN?-txsh_~P9#jtxjDAc-_-g^t5ss#Ua0=3)X z75Tm@%ClG5a3Q6N0pAOhxxmpI^y?U%MR8(0RQn_SMa$y4px0D6M@n#ko!%QM%dfS# zD6hdNC8|>EK+fH}$23$&?ilT+_DNS~eM@>bw&MJ2@|_)nIqv4`Y!&C1O2|t!RI)$` zUPoHNbq}xK)za8Kr|!lITFeWl_;jV5(W6#+RN6j)@*1JJ6r+DeQ`bwppdySj!0MuV z-NV@vt@R%Uj-E~9BrdV9R!!gv)$mFmu3v$p1xj#!4t3t;Z(u_C;m*L(D=F(a^eSFA zU6%rQwc``ocE+CJ@@q$1*9)Ev)4n z(bo#BRn(IqUG2|wVLnV*qub?Y>6&irzI+Nd!_%o7$>e~_&D!_ROtI2D>61q$Se~I0 zq9XFpR~X*->UTLSYTV~^EGOX}wCqAWRiuYlbcRqh zSg3&M*h+H4FVJaPGG0F|U#DR;btRdc(!&ATH$|gT`RcWe7EmmxIr7|ZQnAn?su$Hr zi>P!uNHl>N@#07Gu@SvbL#myYUVWVZ&`b+175Ju|61-y+S|mN`uZYaWeb=?t>c~?Z zHhkYgw?-4J`cnx1;Mq#ZNt>wj@+8flS%dNV>DmKyHbyIG_O*zn3X2aaO=-IH)0(;T z@+U==)3Or$hMb$q39T@6xITepWQw;_m%XeO?xi!j`1RGf?xJA+bF`+eB-~9W@6L*4 zdiFV+sx?JZf=Zj7sUW5aF_(w_MO#2HJYEVMv*Nq^mb#sERKfhe(_#_5lJj6kxVw+$ z9`(+zB0|%%R61z%6t>XnADpfP-F9T_hJ2TPs?w#yPg|>n`YG!lyiy6CKhfx7D3qS0 zQ_Z@mA^0LS^vWh(={ovya7A`E-<-wXy_0r8m)||lhUhOf%WOPuZl-0*_iQ{UbyF_D z%Kev7#Yb)n1de7YP47_2qM%T(xN5uvrVA_>|L~x!c`DLEBTyp`@?~G8emurZ0~6XY zt`_)98)ilYv^TU3&KzcJi^{^2@=2mbFyD*oBaLS|Ba7Cr{~C`+anial;PG-%J-C~` z6GTsHaTQ4ztDRVF=hY9#5nlk2q)Grd01jFU$OEK}HFhfb-C4o>9BLu7E+;jSejbue znBWQ1DTjeSaJg95f4!deqXhS(KRTMVdMwu5OUhavJX}|;XSu$dF4Qyj;5wqeufEbo z(+QYc=l8GZmG#E@kKO)zvVKZaJ!eru12*OU^XQ(7-Ys|*he_w%G|HmUJp8i?mC)-H zr?!;Q;0<|tm#D=_1&)%WIa+;4kS^|4?sZ>k1X{nuwFQ?ATNZs}HR9?*3;LBLE1Z)# z%e4(OZ9qxa29mbnev9ff5TAmsYdGwB3e&Sdy${+dXXO@L4d^RIgDMRHyvL1AB5n+7 zD3>uhri$>}U6x5WIKH1Jn#ndL1jSrE@9BY+P zKwTE942y;rDvf?DbB*#hTCY?>|D@YZf1{0hv%k?&Rm7K-x%S~TbpK#s-Sl8j-MQ4Q zWcShAJ~aLzJT=o*P!D8`X(+P(qabzi?Q|Ibn+X~aShP)a*`PhppiRHJQgfecEum4) z+u0UN$@xm~YWhoez9m=ET~#;gDfj_hK`E@4YmWikBBCPYz9P_ZUijtm=4wm0*WG-ht)rjDoaOWsqnzGT zXtcVTotVn4Av`6r=ayl#)sd*Mw2E|`3AE{HQRCDq<2!8a|1o#SiSqxE~ToZXYUV;;^+GG z>^+g$Mc*SzTMgYio!r3dDsPM|`jW~JQ}{OPUUgZIh}Bl$G7`o4=0jga_abzQPQTbn zmlkRV#+e}RqmDZ(#u@FCM!PR$GD#ipgD744N5>qcMM`{l$VQiLvgp9+*q)+4w9^&Z zkBoFGB6rgz>bcA%YOb{+d<@sq4$4sl-4db4#(Go{efhFH{BqwVI6sE3$AkKVWV#+N zP$Sn-TKc6A^B+hDKfpxa%M_R97ry1v{HC}xpT(EvKbMEUtX^hZ$F0XQ4O}~i@-}?^ zeVrPmas8#455E3BPxXk46!J{{Mk;z4dJMi{r)~#52i|AW%Nud%@|3opSR>aZ{Pf~s zla3~ zak|mbufxDal`4H7SbLv-CDt56 zAr@@`#n4Haq~*}tkwrtweJ|3D5!EYOT!qgBy9s7rJE@3sy1YN6>Q$z)NlJC*Y=m%g++Jovgc8|V2ize5u{gM~`)L0X_O z>8L)^|9?Gia3iMP(WUbL24HynM{54ijKhJit;&6ATxOp$Zh)TC2h3G;*3k@u_HSB8 zQvzD;mw4gne)O^%@xU_Td4S#~QZ|0Y%K`r&y>slhqrir$3co06!a1i>snH(~+ClJ- zXHswOSDISsZ|H3$w1^Ioc8WI6_osm&n^M|E#|wj2?WezVS5GM(_y_8qzePP<71q?O zy;K#;9^}1LM5^iTjJ`ztO6roQNryX(=9MXYG_L$2Bv@{FOvBrkDqm}7<5Z!>(o8$Z z3~PAG0MAYEe1~5=DC`U;niq|tF1>k9wssf&JgbpBE*4ePR&hW(Y4AC6o%rJ!!$j8! zCyj^8BGt9S10PFyvtnF0!o3}-oNy`M)8l=cdZ9?(qbn)e|eym9L}iaaVU zcn|F^+#A?kIDE0Gr;&5HbtGra-_YcQahHS3Q21pfcqcZeZuVt&b2UAXuFkF-N1vnJ z&Fiw=&5K7F8yC`}FWN=;blL@d%c$eLX19&zP|BLesu6cq^8%Ucko)h~KgDU$IsRAfv^$*E!&7)!V{k?BRYh*IYG2c2 z65rI)xC*C%pGrZ$;V9HWJBz!y**B*$x77OWw2j6C#_ja8ACKHl|CyKd(}~m3v`^{G z*gfVn)BUkqr}cvs zbU);xjNrb?5g44fld8^At(1O&^Td4QFXz^0}c8 zl1B!Pbg&lf4P%uZ)mlWapPWQe7gCeXe#j4xZ%Pw zwXNoP^e}o}7Bw!ed0h7?+jK5J$8*?J@0cnky@D1U`XYt{n5?GO!$+*oS8KcR89{f5f0QB?mC#S= z)9@HEVOKFynd?{!Po_LpP8Es?*6}B!yG6MwW%_gponiP!)e7)~v>}F5#B0H57sQw= zLD52?`A~rawJw^piDdivK*~xJv-RT$Q(e$;oD!*|H(uyLesM3wb6z7ia|ZSHRTWNm zWzo55(Qef@D7977e)CFZ>0cakAI`?4(n~Zr=kxymKIwmlM$7l#O7Qu~lr{abF2|eN zRO&kD8;Dk(q`=g+pZ3aUR^|+%Z&1#1(`}j(tjNKbb?71`c%{BHTM1r9OSn4oJF}T_ z6VKP_V?%l{SWAyakKRysCVkSI*fC0zK@BJLkwxE&bPH8ZQ|%ESy-YLvA0JGh zO6tIj-zx~iz0(u)Y3ut<1&y#&dbWfnLnXP!7P;k%Ybe1FrwyNkXfj6gplU|z(B3|XJGe*l zeUyDv1peY5mhpoznPtCNZZ?*wzpKRv3&&GVFOt*sE>4RxKBH~X8u5=VbM!F8Xsz_l z(%XTgix7h{HIkV%3GzUII#wmP5A7>3NKX~;b3(L46aF3ahvyPIGUp~*2-W-z^_QWV z>i<91-UU9Y;{5;L%>@DmPrRd|MjMrg7hNuN7Hes>insw()Zp$y zPQwOlv9+yL+WPC4wzk^VQp8&lgn*X{ctNEq(rR;z3iSd3l>FbHnR9kG0sXe$*FP_1 zXXea(o_TKb%rmE%rNG1@Y1&k*sj}8d$%9(Jh9MkZhGZMx0;cA4wT}*3EvMu@l1v=V z{+MFH{28_webA?2=bpCkDt-}L*T(mQ*$ZFJIqnyjQLD`MkL%4P=O|`UsLhjeHJYjo zvo6(c!D4BhxlHSFV{A9tF~Fs`$o(5vl_PEM=W|sV!D>5qmA_ckalay9OH zcLx{D%(do@@bmwQ6jkTfRBgE7A5v}xW8@h9;xNG6I7&x6la1ewmqGfR&oU>OZ0vzc zlno8IJ_bi+%ra0m6OrD`$M*=Z!d7D~`k-Y_>_%<9vS#$+0Nq@JNRw#0*5|96xi9s8 z#3+G-2?TW?%iyo^u0PJK=hv*kfLY^|OvaRP2~``lbJWcDJ~hv}Y59YVbgpH8U8PK| zVLOO5JdO@@TLqXu4vpHuF)bzIZl=nx#kEoYaL8yS|Ok;8`V(!2)ub%fCo-Sv*->1xKRbFS*k zdP8mHs8`W-lx0avo2dW z1U-x8HSN5tv6}nI+@%2Cf2z}n^n`-$Lrwd#wM8n#-hyv8>szKIUQk}5Z2a#@X7V9; zMKkXK9I;QlB3eU-Y|eIk+%_W*0DTEuU&7(Z!ebal`oet4yP0ZFN8Hw}H}d_Bd_{SU z|8RGfYvLdjt4f5?_8=8kY#^n)u|iwq6jBpA3!LNtFkWKk0O|uSp*83&oz%%E0vJs< z<&ATak5@1NpJ2l8bcU({8m|aO(D2m%f=_T?uGk<}-4g#ih<})^>+65u+MVP?m>=(K z{s~esAfy96J8vqQ3893EFe)K#`%=tQcWxL|))fx89`7GG`X|$|aOYvGJ2Gz>nDd0@npQ*SRxnD-AU}K-p@wvfy=qBcpqj4_NDL^d+NpgCD4CF# z*fqjQ>19`9(-8?K?}LokI&o|sr;Lh`eGSFWlJ|e)dHS_qOy)p6#ZJ(6(%x)qzc zOY}Q;w>52@1n}iFIIcHc{IdpkTl%t?%xec2d#^z=pN&**b5iePG-&FrJ4%5OvVS|7 zphYotu;AzyPZBL$J+Ki;P=}erA%yu*ooDEv{`?iI8$o8DC|;KrpasK7JIRlc>!6*` zN^cWRdo`c9GRRAAXgtGPfx0cL|Am~#tD8WM$zPHlspL-0_2GE6R4I`pM;8l7bw6m@ zby?$!`jWo*K3&$?Oc)0l?cr|x-CWP!-{B;`Y0Ec03H)E)_;|Fb2bR>bSW?&>nCKYd z9^@6GaQz%XPf&*}7e=J>E{9#>h>K%7%a)tXB~H5DeY5@j{qVEVb?RRw5`D@=R=^E} z+5E;C%pL5<>{|_ ztwfo0f9@oE;75X8 zo)ug`q9O07E>=l+HM@78AKFhg*LL;3E+J5m`4%dv#5*H(qj%mb(pv%h_3oOep{@S~ z%zKwW7qajW^sh5CiGE@9wg{*15*A=BylbQ_PmlQnT48%w?5>7wOm2r8B>A4c$*B>@ z6NXjwPGpQ3es#=um5+S|ZZ*Y!Z;Masm%P9xU)C@AYMXps-{jQes7{u{ABVgZ$iLa~ z_$zIe1$g+P72Fb=KW#jKm77y#MK&BkFx%vn{3h{NYfc#n95Olr=?Ptb6PWVcIP&DdyuiW3j6*2u$R3G$5 zsr~W3;v~Oz0?gV@bZHk7sKZNOz=Au=zS^6<`FW7w`J6GL;s;-$YN~!b7T(c|q2O4o zl`Q6^t_$RoIT>sc%=clX{r|DyS!fhqcL+d#S>HDP1wNLZ375<}V6sbHFUi zTzu?oFF2Ho`A3tQ?F|(?B_sgP)rKYLfD$O;izDv0b^5YUE%Y}EY)%Ix#Ta9=7^&<5 zvy)y+{ZpcI_c)LUXW^qGK()1b+PzoKIRL#-;?q*?;VYem&!28d$OLZUsk7qNoK{`@ zG)6a}BFO3&jx&RcOMj-klP>%PnY7Fe>6+nTXW7X`#=0~g_8RzG#ST)j#+TH2 z6*Jct-+-hyneiESqe8@3s^D=zLAIu%RYeoP+ty#4EcNK*hxat2!s8 zQ=S@fiKH99BCYH%7;X-PlZ4EHz2*1PVq_+7f>$w?760P9*t0kRL3En?n)?J&BX zhsy5qBPEc|@KB{JA*E&1LQTU`1&e>o8GiE_)Lzk+TC2UR3Y_LQ(S@a}2e8+ws}Nb_ zFbW9kDQ$d5>|OFLKI@=5c^!;{2B0M|k_iqQS>5Xjx4j_4*sb6e>buJ6wi4=9&TT>9 zy259JEb5fW(qsZ;Q9yjiWBi7^^_)70&d?k2;xI&4!wDMp+Pm9m#RA3}yRqtcarKGu zqG~P=tk90mF{iL6E!7+-GG24HVh8~dmxpgr|0}lt7qq1wbSYZ@osQR>(&6dTowTW=leYY-MUswW?kxLo7%j(_d@u%4B*!^0USXI(c z^=bU-+Ny6AHU3+hLhD}F(#YuE=z2COaBqBt4n|wP$2E?dB&7n+sy@~diRr4}LER5i znYykt^A7z|=dTlrs$Oi|ruw7Cp%|@PRpU+`+<0d_7)D){nQs%nZnthMr%t14!yw`) ziM?Z#SMDoy=~;$MD5K#P11?=)m~g@N%kvje34dV)rr5_zqd5 zsfy@mX>^$iMZ|OwRkdaygS(IP`+tz>|MQL8EPq1Br^_&*58KK`a_^K^;A$isohLHS z@xv_drSmy&5X0iK51rZLu4GE3 zYE};jW)7i!PSYy9_z)aPJEXARx5t!k9^30Z$%hyM!p^TassCqKv#iRH z>LkQFsqY;kLdE^zdh*XnP(k(8V@bU%z~Pr5h)&0X~jq$^#}+%maf z?(TauU&*t;!?H`9R?hDxr};d7r6a|X%vrW+?(QFvYfkCh-9J(8)<2MY?(UxvzAdW` zEYS{m$d}Cp1@1<%^~+xr?XdW!9v^}AfQ&`Mv!otk-(5^?MjRAXsCPTM;Q_YC4@YgK zgYZE5b(R@*QhDPREE?*|JLgIdAHo;uJP*A?0Nq*1=X}0;U)ZF^A>r*`$WbGFgB?)^ z{ukQ!d!wkcY-su-b1Lz+*s3K|fF8MX;272P%Bx1Z_kY#+I;kS$Gq6g~(asQ(QOLWU zYJ;R~-%rt}Z}W+cA0J4pzxzAbYxgb87htR%n~OgF^UdoW_kudI(whNvA#Qv#BW`?! z2BJ;3$PP|z>3COXNWRd>k@?r&RA(2IHPJl|rmeKR<#Bchmqap$)CFC4{*HXvL+S$m zkh=9QaaT4Ul0v%n2OLa?6AkIh^9bbWAXi7#`S1bnX-?D(_I!rfd#L{H0Te@gyaEuNo#r<%JXAT3kQ;rIoxefT~UCCL%e!-H(adPuc_-|<><4iZ0i&9nB@l|LP6z9HOvPF~|*y$@MVu(d|xjX|}QJ%G1%Jar@Hl#OH-H{a?2>=5;&+RRQRjy>*&E^FKpqE!hJAjl=>y^j_cKSNAy1 zK4Y*Knf5Bz31c8F+7Vg#@Y*dsIV|!|Yq|fPP9qx*;IkZju&9QqkT|F#kbG$=B zW^)94GuVxEU2`A?_i1$792oU@4g|9KyI(g zxn74YrInO%yb^WS%b(W-Ms4|WNxy0aH=KYN7l!Af!{DnCda4PKw7^L|$O_qyzb2%v zs!%lj9gGo&>wx>_hSc_WL3H(i#hRLh-vDmBNBKwcjlT#&D?i)C6j(-19NYp$Va>$7 zi9I8yc(Ys->~nBFe`XC6GHja9!};9Wy??Xq1p?lVjgitE5wB~WV$6L;LCL0i4^Ul%z<^npt%gDh}AL@kku5Y zUh+f(gycCg(iw4IJdPCq2mW$Xq^>$@>xCgLceuNU=)oWb@{#!+_CSF{}I= z`g!kbpfG9*Dm4}lLA9!}h8mftnW|OWo|7b00Rhhz3;TA5&ipaVviRbP4ca@(njZB7 z^yjkOl0cfCI0Jt!(|d!%hgS@Pl$uE~-(yB=p{k&rC3L#ZeY!J*8ZYFHruX3e#NZ;j z>^Y#x#NdMN52Z)CpYK3wC~6cJ-j_iqoD1c1U*XPDQZYqOXZt;ke%lL!^oolQ7dlCY z2BqLj9>^YR+J!%a6q~$h*NFI_CRD|#kKy~cfCvj}>6keVz-9fi>EZNPbG9*rcBJB| zXzM=2$B)E(-yM%qS-PMpU|=z3OJih#p=AxFqfI@7W-?b#F%BVZ7$2ZCYK#;s-h0?! z-H~)F;4c~c<1nr~?gFme8_JVgboh}AKdhciSZ-CBTiKL}!4Xea*jfFt`PIi-c&{Gg zq(%YvtUs5*KO6dPQ!SO$l9jImmHES_SLeaECkE$vlW8F_IP6W}cPnmFL{oU%i0q?mjR1v3#&dBBhm9U11W5JP=(KRpBXO!6i?vps5GJIK_#dF8ht7o^vyYK6;l;p5Y^v2+VQ}Dj4V7G`W+o`;^Xo{-*Egub6Y6 zHwha(SNFz1pYH>DXXt3n?WE^=d(TN1T*xUOr@7uNz#QD{cJsUA6>lvl8h-Z53_m*; z*2rQs1Xf0d@hd7$qm7xIT6^nF@SR4XYjl!LG!UD*sV@D!JZT0Lt#>yfbc^5AZD_$? zjC%;|Yf+T0DK`j@>C%v*(i$oUBtr!n@yj&_mWZ=kdR{lRrtHcnW3LOZisI|(r@;o! zqB+0|J6~W&1V(x=OHGK)CTOU=Z|Y_#2_NS0;Vu>Xknuxkt}#cT|D6ua`>V?Kk@Kxs z4|~Fx#eaAobeb$WyBcIEU+$sBCnz3_8o5+Zn^~`mRPyV_T)id$0wnzpP!SmDTK+X< zxN4il>uk4LYY*+S1DYt~7ddrMk8m#s-#ph~C~Wnm(sDf-4U*=aROse_ezKB=|tiyEV#t{(M{H2lnjh>Br}rh}IS6=pqao3E3( zlQlv?pwq&J-Id}(4{u|`W|c1&U0^;bJZ%NZ1P&o zNqt|}ijFrF?9oYH42|C>Nlw#&Cg>e9trm^RqA>4v|KB6i)w+5 z1!UGePW|%y8k9jQIjP_8T{(B96n8Mv_qHXvzR9I%)ahoc>vA;P+KYkN8{E~fr)$|t z>d+Djs6*Z)KEWU?fmIu1xr0mgNQExjX{%Ci-0a;9cNNT-VUtIz=mv;Ea;?jm$X!fG zpk(zvLAe2-EK-&;VeB6fYevr{(t>}LP6sqS`eWF_Eok$v@s8z4I}q)%x}{GgcIXZS zLIuBD>&xHkI{PQ$>2AR<(~BsS607pN#>`_Jkcs)2(lL$!>6)gblt^xu5%kR2!ga=y zS$71uQlIDb(j4e9zW?fhiRi-#dg=X~B>09KIdcEh`_o#D+R_Q#hRX3B+*Cafo9{Ha zR}WkeeRzS&-bO5#qySVpL!7UMyrn=-@TozJI@UQjSR&OY1@-P*4elPi*=e~*%b}{A zpvrVS!fJ_pNl}BqI=e1?MZV0($LU@IrhL)nixKYUQLofCS0!c-4#nd-rBFdl=5+ny zkYL0DV{>n2GrD@5-k$62+WKQU=)PK)zKwg1d+N(~QT?DUk256nFazLo+bGQypMi7h z%X_TVI?c*ZohrEY(|qwjx>95`Mw}y|Bw`RFDI-92@sUEbM}2dLD!7dx=vkmp@0Kd1 znY{MfB9*$^*hjdP`gE5P9yO%W=2)V<=2ImhHVP`fBDT2t=-+a!T6fDKD!YUh?A=xj zOiqIyDN&_#YhyXTA@6WfZO9?imAVdo9H)w@mtbbFHHn~MCb>*%v_hP(aDUt!4QCC51Enc{M;jI z%0@yVd^b2`fc52tz6|qe*i!HCjat~JgTZx%PNX((JwSlz{0Z^H0P>1WvfUhpP{Z4w z72CZ-5%7WBd_(>MP?m~iVZhfS=^RQy?=^Ix?i=NuiQcJB>)k|{@$pyTk8A4g%o=^u zI3v;;m9j=%4nD&TBB%$WgRS$~+0nV++E58IfHUogS+@|i^kQ#9Jm|Vs4QnUJt-&3g zjDwLpwHvHv7V22qhh;`xE9&Vry$y}5df!?26f5S_(O?K1}8$R^Jk!3VU^Ez++6sF0PqPYky}@Vhh{; z)x-y3c!V|dk_h+ziTsm@yPHKy{6pU!(g{QcOdI=k(d`*FM@8vc;)&hQ6SNp8*tWLCok9 z;$@R%DbzZjbX=#RQE2zKzP1OBpvCMfSeKp&g4-I{DoLdL+R+HLF@CxRP1QbU zn=2+JRv)EZQ098lr|{dj-#JaFyzLVgzII_1+J)7%_-$`ZZEBnhSA_0vB6+b4Z>)o; zRU#_*c9rjc`0K_m2`ul>fbG4V43?V(@W$jU+fvf{^cB6GA#P`J|BZ#pB!dU-gc!}m zBYZN3ca8k>>Pamws*t29R56*H zh5t5sfoZMrPVWIf`x1WZ-0sfMFaq8`fB~O+u;lVa=(TYPRNDF00o0qjNgUwah1OKJZogi*_tygNCcduF zK+$omj}Jma(1F_;_Z5S~XowREN)gNvUNF0Lh z!TJZu`-@>U9?NAl-f_43i12i=)9J$6Z^$trM4K7*?xL2ush5DdW*IbCG+k)$w$cC# zUIG%l&BuY4L~b2I`A?@<6o>%rLvhr-?wSVox>B+BT78QGjmSN9O$@R2?)os#mOkao zdmCQJvOWv%6I*n0=n2!;PYqji!PZP)=kZn5tCKNYqWhH9NnOD7S-d)pEEOA|3m=Ov zun9CMK{x2!+dI-=nDg^cnc`=1_#O|F%C>T(d+T)r9{XdK5 z_8^IV_?+2yV++y~UNTqJhainrqwFu#@6GW_`1zkpiVO&np>?2D@1%A6s{LHm{u*n{ zMjl&e{0h%{l<}t zo1$B=*u(w)b}5RiBp!^n27WhBijnl~4^l&{YNd1g2LwKJuDg8+zk6Fs>Wi}OZ6KLj z=O4uW<*mJzhfL7zPmYcI^><<7Qp{;01X~Z7#;Yq;GZFW!&cA z_qk7zBdJD3Z2leVi*ibMUeq*l4t?x!5|{Z|i}P|bZS~|FGnO_3nQ^Nf#MZ)5zx|BK z(qOh09uj=+GgIDrTh#>SWX7dbH8!&E37N2u2{CTm(tckBoMtBS`VQ$m?^@G@CSh!Z zNt^i-WvkDN9X8vTxJE&Td#K5I~PXlr34_}q6;dLmIUEHVb8fxi|a z5dZ_55L}+kM*Ep_)3amHdhaMH9?U|SK05Pm@`pn|`;O;b^97YC)@Zi$Ek%4b!z={1f5xssH1-|F~Ye`WH&6SYqhZm z%s{hP89{TPkqva5LX*?@U~m&IHc|JWu)rcxsyR)Bcq(P++Wj5I>f`j5M)aq6f^C@; zsW0b-;Z9Z8q}<3p={Z$*<32Z5g}vBEYBD|QOUs4QxgnsR8XjJnyT|BM7Y>m^$lX@H zEztvW-YYzxF8t%AS(>C76PiY-^3nd2JnSwz=&6(FL!+TnQ%u)xflh6KTaV>Wip;&m zkg1qE$&#sysgm;aH&}uiw~=c$-(n25=biMFd9J-CmZ4H_LZxP&?o+6#^i4vZAyL_p z?5J^f_!Kot4zC^nsCPF@-7Mm#+RZGYO4gL@xnY8{%sMXNN|{W&V~N$)7jZroK&FH} z)`FR6&U1I=UCgA{Mw&V0mWN*5tklFau2{Goi_RI#(H@z_t<&F?OCxR7nS+BrXS}EM% zbAPg3Ut-z}Xw#R7dH=(w6=j6FJA%@Ni5shr-{)h?68y8^a}a z=?k!m!($vijl$fp_GZ7Nmh5RGW|cdi@pUgJs%2l{p|f{Mm$$vYuU?H*!w2;1uw~*6 zW4Zm0a8@)MoBED~Ypz;IcZheHJJCJJLLuyV*8)nIqWla5beori*@zjvQ$M}U5%zx4 zOzbGF6k$%T3{QIpjqrjzQ#ah$6xr_$Xw*Zdf7kOJ`-FmX;vl$aUiGo@Vbx>eL#w%A zG~o>$6GS7_ptT`auR5{#9 z{fPu7se2_oDrI^urv}-;8_4)OsW5$)>jH=s<#Yz-q?XY4S|29Oq2oJ1gtQh{M$?gS)tZKM{17(% z3#8VRwWu~!jv9A*B6n=XV4RqB28K#5_VnjO*B{-vTK zN)(b5Of<%6+cC~x#}!qz$18Y7wR>=l^Ve8WO%-?C{iB%o8^Ws^sy?3a^8lxrzI!); z)hNJ63sq#n)-yKPx&3(6Yytaxd8k_ zkX8o;r9f1#hu&YdjWW@>Z#JbuFAK1HG+Hw7qo|zo6SY3~p{hi=?MEYS*Aswa5PiImwCE#3m(9Akv!aAhMcX0{FzVA~JknQPHoUR2Y0g36lNu{x z>4^u))ywNxs2Xpd#=o=VAGGvypOu+zZn^lH9jlb)q>iSaghQcHC;2cP@#pFsQXbbo z-3R$8SfGU-*FR_<%%s$~MYt7BA2KHmDer^NJK(#+O|yGLjURGD0u9;!P%PnvQ)_SA zqI1{D4Jmd_zDAP*|hlemI%2U0g@}UCno3?t_&robKaPOR7%H5XJDwGNUO3yw}b~M_j zvS?~Hzjv24@e2^l?%FVeolc;>1y#GwAWcrDN;zcoq!O{I&&9&8bRUzocLSl%-F4Sb zescJ%!+F-8d(7#H<1pr{h~UjPy1gb6E^6E)n?{%hC-u>%oO?{fna{lY2yyYnKx2d+ zkmxNUtqBDdfbtjG@%I{jd5z%J!dEX#V+0w*PdF z{!j7Nk>+=LygIFaym1sUuL2Hdy*l%zlE&)ZNUEPz8|`uZ;~hz2efpHD>*0F`P?vz` zrv~=4S6F^LfDAON`((f5Z(veL?%&yDwxsf&Z4uu>RQ@OwC%qF>%P$3x41>IXV8nDw;Rn<*YTu<$LOE<874M8M68tkcN&G9*5}#k zBt%HqV}lb2=JSozk)ildfB2R3fKC3me$C_L%LfDN=28|p?$f~eb6S5%C2j{vOGzRe z!nWu41kvj^FD|>EP<r&jzo|2B&0$6SBdHeo*%^V%g-o zvcbEv!MGn3Q$Ccien;|4*(EujN^H_)N@BrH8Yi&Tw=8NF7l*zThy{Qe_a1W%U|(+ywmVG`dt39G1p0LhiELEPdW&? za6WtT4}=lbE(Cx}z)_>^9u7csIbf@*moipr5qt_NJv}{2va%`Jo0N?UjJ;ao%h{D7 zZy+Idarckxo)0$R6FuKt!6D{yrlNR|m!!|Up0Hdgpa9cQ@diz9L_ z1X7yqYb)>?K*UL23Y~K&6m*7aFFa=gpe5#s(gw~pVR1S7lylBFU3M6%JGvr5x1#R2 zBC;h(xT@A2HX14mTb-j7i5ErvcbiEP}PhioVx{_ z);%n*?3yBcX-Ho@R-3ttKDqaoePp|)N!4G>eOjC3WrEryo6YZw(U#icx|Ul=vTj3Z zq?s=y<5&Q~9Glvc;DW8;+E_L|Ays#e_U-E#(GrrHs`Ej!?-Ig&@OkO#(J}Y++VVGR zoCmmcL~7mC^<6zvfHUA>I_suQiB(l8oIAAE~ofvM{qez{`Nkdzf6vEu+tTdm1cEr^vo9L}I(tBc+1sMSf(cA`kkJlCD)hG#EqMgx(6e zwe5~3kLaVqrG&M06dp!c`#rHHoZ^^#TygwRHdaLFi$8*;1ex3%d~4ckBDtwD6yJ|5 z!m!-EV0P?4gBvn-(Ai{er3o*_MreCht-CcSi{Av3sf2#SFtZ-XuQP8msd@llHZ!Ug zeCwY2mTRz2;n^h~jPe$eC(ECbQAK08;Zs#J=WuzNXNDKp3YVS7CG`t?W$OA={5t%4 zV8nk&Z)4+?b?Ivk0Xiako@#$4Ig3dv~x!1dG~n z5LMnRaM#Ngt0B~Ukl)7|_igzPgfT@D-c3)Z*9(%n56g}DGbTDP_tCO|MKCaSY>kC6 zb-%X+8m55@^(aAqJehlB6pg~sS4FGFmGTk-X?}e=ss~J8Kj(C&Z3m@+cS`$ovixQ5 z0BBmGZ7_ReLde?)aY23|62Vx+L4rO@#2<#!G zKdyg7V88SM4D(xJ-FRnNU07TubSfL#pDRnt6-C=uVlNg$1m#;PS$GTYl<4+xMJ4gV z?HzgXV|5AaH|Tp_+UEi_Ax6lpC8V=OjO(lYM$7Z)mlE;w0UCF#Qr1)WM2R@iS{!^|>oz z3LI2@<_g&d&l+5Ps{FBinCLjQd|d^1OVi&ume&!6&pKMTP6~>8_g@^{qbr%+_1JYF z4FVj8&wcY#ikq|Vcu_@L6MhXBqf{~eCFm#sHie%qCe%s3O{ku7(13|$(<-*t>5jJN zXOTCNSG6?pewMf4!THZ}+@e`!f^Q zlpUL%bWhW+fitI9PjTkIPS2{Za1tj{LG`81e5o6&dBPQVO6US~vW@2o$-{Qiq|$Ke zM{El3L?+kFD|(PO{a8TxjfLf2p`w(mfv z*TzVJcxEhTysYM88aC6>wRE~2dmBAUymuvIFLdTVMuf2!XU87S9eeeUcUT&{sSfRwyM9yz!xcV%5b1Ku`Dlr!N2hc zR_~14(!JUw<7BsQ@&naBiT|?tXYqTw|6g=Sh2`1fplb`bxr zjZaft@CtU)OnR4O6R?IMVO%z0kV!a$1T#H$^RC7CwP}{w-lrv=E{VEV6nS?d$jZD@ zFzWmjrNzMqTvf%3RO5=Br8I=gXWONIm18l3 zrRb6OERjHe+2FRcHTKBEWmc4 zuzgF>pj~ofTJ@4s&r#Tfut||ev+z1x+{f{|HV2*L)YaV2k5w_@JY_-uH20ImsSb}- z%^o_FD^#xC9^Sc>(|2QYh-xQ?+`|Y4RJA{(2Y(E?n5Ct=j0M8|dwh zH~eu&dE@g;9E&mh@=o`rPlB=EV#eN+9eey&byMHa@->;!zqv=A*wFd3mFUE1LD`ce z!!TF!qhF9B<_xmbzuz$5vGj6r>9N8PdxrO#!_K|QvJc4{%dZEl0FNb#Fs8}U+iM+T z=|>GCV*I)(4%Cg*Ow5*2W`Sko;im;p37$NyDXUha{FaeBS5Zs@gx=MiCkS<6@TZZbeS=%r5-mSN$CmD-?^uZT`q!$-=@9)SzC{+~0cE`V7 zHMH@=XiKc1Dpr8QxmDq4)z;hogkU&~n^p3P^wue4W^0rQDNTum83#0KTCkl22E*zx zIG)0Z5~RMe1yS==?{%=SX{UbbhxPe!flGZ^85db#Wsa_!y0YZI)A;ao8 zH9R25=0r(!$Y~2jiVE@|x5*ze3_zn`Ks2#?B0TvTr&U`a(Y1edku(22f)qGwo}pb( z_}gRQj@~W22ip=Uf;_j1hXJsM0nw${!a1#LA-x)}ysuU!a8~Sc*6G$3F?2-XVtOzv z>NfPqFKcoeqtGG%I2ec$$(|=iAJ&RvA~|>WYkYR*FEu?Wd^sh91@0UA4};Qm`>>+* zp&+PU9c?;mR{ZT6btx+Kc7*_bN0UDIYtku9!P!R*uu#VT!?6xvu$Fnua;aE@8(IWBAI_j}% zfb{@GNo<609XRwZ3e=#WGT`bKlyyy&ma%7>ll%)3p`M@C7tFtO@}mj>=ERmy6WDn! z?x^gD4>w@zwBAl`E+Xg0MqHL1wkAeHkGhwBq|xcAssFUIwnKY&Hl|KKzC-L!a0B0I zKDnHQTVOzb1fE-ffW0S?eTI!w^{n_mk$__(=9EPeT{l*TjWCDrLXM(N0zu-UU=YXP z^tPtzQ)j{D$1`HOJWQ7UsSAiPucab5;rgP404j=2nZ{?+hBsK;9oFTV^X*Z9(05u2$!+i+`m{=?0u0IC;{Gvc*}(2l`rsE zbL6xlC)LJ?bI{MSpd!nVn2L@7_h>1-ceT(|F;XOKf;0asM}TovrLF2)eXF|q^Q!s< zRry;mQULkVl4I+0B9oHX3Gcmy>r8|O(pBzNa^I!8S2^Z)*mQDS3o!!ltKn&nZ$_en z1~-!h#=M~DxPrr=1R;{go>_p;zca}jK*jhxpxFTS<|0gw2d%+Qb-}SGo7ElWqFxOP z89S}_Z`YI-eAbk1X6*w)#sf*Hxw4&{P7E5Su6>_F12OvQTHRFKh!vC^SHMN9AyfHq zX2AhGrta6rjmB*)gUjitb_#HAC_WoTgLRU4zs{2Tk5~`R ziQyv(Qf;>$?{61z5c8=oeSTg*tE28li}TL=$RFw^`o&PI6MNXq_d;Xl?pY#0PX3T^ z#fHQl_H(m>Yk~HIcr>GGy_2j0$mx+chjtBG&uQ@xS~PX1&&g?)m!-zy`E?u`(@bmM zM(q}~_BFz$tqTcMY_C9DzVjeSHC1@o@1cFO(Kpt)9o|41g_BtYf{F)26=QPuhYa;1 z_JhR?K2C_b7uunUlsYM|lnw;A>(>CGkGp;*(ka~a0|Js`gVDC*XP>>N(Y68t6>D>b zdJ-*u=1{NK9%Jnjz1Ti&!&3)R?#$x3y(!IZ>J1W%*LpM3LxPchqt8f>qQQNv>7UV3 ze(sw7^tfP_Y5MC&)ASxSy~j2^o&>|inn51oFX^fNlKzI}V|HKZKf7nC(f@6B-xlIG zvrEHoXe>QLX6`q}w)-4$v%9nHGP&RP+tsV3W@>BGvsg@NGyxzpyV(^rP$Vfx=+Q|H z0(My^aP9Kb0&M&xAS{dMPPggg_`QS}i;aJL`#!Pp43aH2K6kj8zhN*}SJXST78}<( zwFvGRf_5q$H0*e%C9OFd)cY22QQI=TfFq{NW)y_(f|X5Ql(Q=g)yhC9>N=Lj4(MHw z2qDPJJ=!H1@)BnlHpf6w1UsPBbF(sNG+09HK52MH5@WChrsj zo{VvIIEScQLKiixTDP$vcSt{A`E! z`Tnvwo)PC{*X%$u%)MBG_ihV@IbEfEZhL$lgZ&0c-ANyLlLBaQQuiAQjy6IAao50Z41`squ_u`_zukuk_8USQx}(o%$+Ykx zYge&72Q@FGfCbPR^)Da^J{dY1tG(3rhb36W9dSRlJ8QXRw7FHLO-2Di}d_x1zyc36i89>M2W_bk(BpSr|YxL_oKWglKcPIi6?_jbb32k1Mw9x ztF=iU#{`R5z1c7Qb&&zm*ZS$O$kt+pmGz7KflnMWQJLYNV>gV{ArEX;S2#90I`jtg zY0;rR`?bI@j9in$^t~Y5)>Ytkpl#-HCNWTr`)7dPJOxs*jw$5iq`h(t1eW8zoJo3H z`d=|+`{L(^(IZo%lS+V1vb8?T0`>!up9d9X@NpjrV?B$Zz7KDSoV@)>q!1HXpY~MwU9MceRHMpPC#8Vv4m)D2a`RH$}^6qM9JX#dSFI(&S}c193$u4mkSo30nxJw-65?@ya( zPT%K`I>8?{bMl)|QwV8m6f9}(aDMu(>_>Cps|`3(+}9E&m-_MHK4bqD%iA)cQi|%S zT)$|KDY*0bHw~hC!=dfx zB<2wTd|}p7zhg#WfgTEr$EY4cCa8@BAFjNh|DyIVE-WpWNgKCgldvAW0^mN9PR_fM zUR4AnMr=6loP2Z?&%pV(zNhRNgojj#T0nl{wVEDq;q94u$^^Zvk&vW!~t zSK3^CMW=}F$bPoy6wlT?mPOW@$(8->o2V(51$|5u>T?ccFVRT;Ojpk}iM(OD!uVJ6rx%C86 zh8SZoXE*=|a~@&C91za0o=MDbrODIjr>p=JOE0tr#8U3*<6$ZF-~1$=u_& zWqMw|Qc62-4-1Qb#3pg#b9XN$hpaf25g&L|DGSMwSsS+dje%4R$0i?<#l7DcNJ;g$ zS<#nAh=#ha)wEp6n_>XzaGA;7rB8M#D{!yaeXKbrKs6}^#|Ud<QdiSSM!Wk3wL{kzli&HJC}s968SN zBpDHTIwEovJi3n|zbvW+FPPW~hCBZ5dV}E7@xwFQM2vea47QhUM zCuQJI2INycC+2|V$nGJ~WA5p+;m;GoH+n)*<5rG4OB%i9Oj)n@Q!dw`*Xz>7;1;|; zVAXYDp*^f)!?I#ls*r*$7I=+S*L_fbl1$RQFCwFk6xS)v7Fc7_Mfc0M5q;T@PPWm% z`_Yj$x|yhkEo?L1V4F3R>G4x_^g6zf)5Cv~pbio2B1rFhWil25>FG~1rE;I}&7Y4* zM19$&%o}ob?Emjg6ky5k+9mSd0uDej)A9BIljk#~4e9a6HXfE`A)hJIC$e3~c?vxm zRL{e1BXCcY@V?muywCq9%4264_j!g4pMgj^b<`hY;eYqO8I0?{#G*M{@I!8x@`{LQ zEWm?6z1@nP@+FSW$}43M_`f)c!!cZS9EG}1CxJjiYb}GysqQ|i%h4+I+0jmFgNUN# zcT!9btB$IV-Ry#zrQTyVUriQv^Pjbw_rn8mu%kt(xq0I5VMAM$a}`bLFt35#G^t4Z zwdpq}k!*1kZr;@ZpD@r=e(Ciwu&#c>7bzY=L@4VNCG_Jv!souR*-ghjpF=PM0xM0Nr)&I54|?Pg5@^ zyE_@#HTIN=+ZsM*=ES@t*atDU8Wg>w>%-U7qBZ_Z^vFOw1}lH88na3vr*#_oCUXe$ zuq;?OwcL}wIlugs8h5qc0h_u8qlK2mi%aRw*b$2t=vR_rKI4pLbV*xYXFA?tm|WG& zL5zm0?8n9P~MLMyNBj;nstw zw>GW=^AQNfhDj-0v=M6sjJ(`(^9z-45rVimrtv|Op zn|hGBAP$!P1oqx$HLRcjo?9nX39?A)hitiiyXL!_sNl1untP}x+xFow zPT96EAf_3;sZXAXW`hO&`@Uos@?6{}&!>Izd{J79RpDB9N1gkscQQG3j^l&#-n@9g zeNzOE+nfTQ36CcG5Ke)48R=vbLsrEiMz5;3&U=+^yR{k25X1aM78vGyHvIQ%4}$8l0^)zJN8Z*BZC! zBqg)Pe6Rzcx?`D<1eNH1^uY}{^}JC@$_Kl1#*#cZDNHp zDiCw{;LQ6ogw31Zro)3|0504f-ecyr+MJ^FeKyaS_>dZ(~2>+l^qWi~(tXGu)-57X}j za{OX9z;NZDyVF0f*ffeU^~^=3nTyH&;xXcWT{`G_dn4I9!l|~*^0^1rrO)H6@B|vA zqNujUQ{Dj-3mBkRQMu<-@vD7SaUq93Cjyw!rmCyKJ~}4YpfwRklRd`yHf8OyG-L>i zh~_U@VZRBflp>$iMCuV_KhsOYqFgP&aF*4HJl>cWL-+g|rlMfmBU)BM8SbB(``W=`w+l-7Ih?!O0BzM5NQ--)RI z538I-m17pt8t=IZ-ay`xa4s&yZ-~{j#JCwTYJe>1K2OiW-VQ9Kj8PPEYbnK?XUwEt zrX38Y_h}~ep!tRcQuXsJy3C|nUx1#VUlMu5OiC70$|UTjim;WEPdwR5MP=KU{9>@r zo!0Rb#T`X{A5%XcH5fZT7v7#r;->+Lm~lUd0A`S?Q3J>41^s+&K#ukmNB}o~D+)n$n ztCRdzulmg?2b*?G<@m4={#Qt|dY--jF`6FicwJr_Hsl&r!L}DU&5rz@r82 zI%8RODeJ-hc4_TL?Bp6r2vc zu;ELM8gw1@4}6sX`M=w0?ya{z%db<<1LiLI-}=QLCoVK9v&fNB(53O)-#Uqwcf1^6 zQfp#ds|We4g0A)xZ(hH8X4<%St^EZ_WY@o6*7N(t^*~r|7e^@GgSD%CGihFqAc5NA zf?=k=O~3pB36)IObScMvqpapKL+T!aIyhQVN*0Xn$ys%M0dEnQbRGUpIC)10sYQ*4 zHoe`X8mw<7)8-U%aXKGg{t*ZODLr+8DF(-C4zNt_+ee!;=^yCB$Q8;O8$Eugb8d%M z$|r+2a!2&l^|=s#kg$a4b*C5U^Wja)LhHkce8{cguzvA@Hl91pAF*Z>F`G{c4ZG!E zx2c)<--wIYTao&Ef3v!r#;h&}^kvkreh=^ISH87h{MLT)Yl-(mZ0@e|4zC7;7xeB` zFGemS5s2N+;l8_;-P4EjPX6}8zWD!HYWYn3&(!D8iaS0pZ>L#7fMI*&WOPg?A)(Ma z??ICFyOdvv5K%6Hq~?5rM)e$OGwTYDdh==-??-0pbOaop@1Od3`=NWy=|IWnbzq#| z0dvYedBy}wH+3vs&^THgcS#&3U;5vvk>Rm?|7?HqtP|C}LD}9*L*}D-?*mp-pWo3h z*CIhJ^L2J4pv62mJ`~zCJ*-%`jf4LuX~jw3Ob+OVA^^#Bez>ZThXvuOa4b+AQ5o#y zg{&dezD_tjn_Eb$yCxrt64Td$aRTw7^2CobT4nWpvbNzOl|x-@6x~KO90iG+nLm{i zc(f&E=D$Rrl{`{l;ahc{TjI>u>n+>Qm9gUok{Mdg9c2ui-y)K@4I9tYCPKW1QaxH0 zB&lbWo)tV8Q5@!u3&X61yuYVE(Nc?`ir1X9C>+DRw%;1frm+aATb6?%w zlTT6pv$YgG&j>o37-@g)TMGsEC33E&L{5jiWyFQt#p8RwAp%?X3EDZ>x<-!JbU9&a z1Uub}vC~}>D}TzcRk);Pc5O9Q=)I1T{xbHNFOPMxHmh$CYWd12q1G3)STfX2Jw*uj ziT-3gs`R~eIxMDl_z zmj6W9$2@C8G~kf2%(fKDyMy|J_Jl-p%%HxocHi@S1w|MOSUK1z-uWaUesnT*jm2!V ztSO!(Q)?`5sPJ=ZEOxGyeK$lyJY-heK9PkA`2+61Ykr6zrd@-k8^TAVYQaWF~-JX<5_ERKvui%vjk=tp+}t4x-ohL-AN4x zn9W{`C1%GEk2Z7qW{{-Qy0w#5R}RP(`A|KG-}FYZB{Taq=#Y1Sc7Zs96_oT&>+W;^ zr>W{1yC%M%zg|;mjO6E&8_qkU{$ivVP=8$O)>QS~Oi`nu%oMFRMfa^!PpIhJ-JAAa zN3_zaA+Q!1NF_Qk`RsM9q$;7!;oHXvp?}-*#9{=FwvDW%5hr;DWGW!8;{!Ffxf*Z} z>>k*2m;?`4M(kf!qcDJQWlvds5GsFJV`mEJk2O?z1Te#U^S4R!9w5w^%nh;R3YKbL z&CR*GPgBGH^QIu@8|yxk zj`D?gy7=un`_2IIC@K+MpM^1$o$D8td)ll05bX!|DMeF#yf>_%58itf;?uty7VlYA zfVv?v-?e;k&<#cVYYI4_wp7e>S@GQYyOFrRr;mJ67Ag~SEL5x}(Hv)9ifY>~jh(I~ zocrbA=iYtvbF(_aboIg0C7FH-ZL6R9tm#sAC%Me_(^sf(0%WdQM1TGG)5LRoFOUMv zqxt+(S74+*Fv9no%MV6 zu>Y{*e}m&P3g%AM`+XO66cRxHMb+r{nyi2PAXwCWPgb|(;BzU|Z&*Y-Um2qHBb(&4 z^6M}4NQRKZj2nL0J%VxugMW*R8h7qYe}y!&54T58ZHnK*C!x5}Ce^TheRzhEbj5r14c~~t zuwA)T-ys|`0S2?QH7#F-MdvQ^1r)FoWLboXCWqe*!%X&@g{9H}i3s|vhCd5N>C_XB z@6Wu9iB#Um_-{2iC6kxq(_O}-$r1lj;b4%LlOed^;8pGXjEP!{!ZtfmrnHm%NV#Ek zyYCU0Av5LBi91+F4c6t?S@xA`G@DqhFJaf^=DM1%{is&q6C!dt`00D2BBBa4yF>qN z$L`A+<*Nf#WOC0o+vXw4svdnUx2@hbgS-5*hK$A4xZSzqCt}WU8qc&v`v7c)2tGtr z!Jy(_&28kTeCao!QICVZo)2)I*i%-!4|@tJ4yxu?m!L!5SE$JJ#7WJ<_~7$;bAsC3 z2bhjA0)_z+1EvC!O3sN$wi6kU`T&dpndyK`p)&Nr58g@^1&EpMUGo^MK?}^XPvt z&)!Z}V_%bXyCETaP1e|6sBAfh&&5 ztbxwCYd)j$&8G6bI=wci{BBcuPUHRxFSWJr#UuTlrOM!f$3J4G`ij=ydE`Hs;=Mq5 zo?s@!Qp~n7Z@T^6s}GY&4-_Q4)B3*AXHM6i5CFvs{PR%d@h{a?AlDlIxC6k5b%@Q#2b4dIkr}Z#mN^Rqp85>!(##uOo zFy~qFaFwUzNw`pzv(R|$++7pSxv+LQ)7QHK^4sgwVoG_pVWo3CY2QsDJke;7Ii6@T z`h=ESiX+=Q*(6iQ$8%=K%Oe~Enh-xni&45mkD(%p9*(S5gK4SMQmw^A7`%GD;^Ik@ zCe@^4dt?gQzVnzJ@6?n(6|Gw5Ec};Y8zrHLTH*1~v(*rVX{K96N3GnXI&KX|d zM}JQ1(PVMgkR&k!NDVbFD0__`y*a}n5+MWD_ae?n**ePYiMGFgpk8N4ydB2+0@xrQ zlmUInLCBr}R*94RJ0WIwD6vv^wUdlf92*b81RPvQ3&285F$=Mby+c4CF`e{~+fJ#7 zlk6@ubsRDGUrnUaNGm^1a-FJP)<#Xu#B*yPi;k(8@EC3=V^Q~`<3n8fai6UrI+2OH zQr8w#3#)aPDkG{AL=EOm`|gLx8i^6nlxU+@2Kq+~xOBPyVCIQCgLUp}aZa?YYYv{; ztE<{LYeldRQs=Y~(aPFz<1(wC2T2O@Chm7`5zrLEnB8Rp;9sWbpy)kXj8?wuB(GwV zHB@b#aY*;^rd*`5D}E#|b%#leABZS8u%>czqnE`8yc{B>Wwn-p`ln%i9Y11wq#!ST zuxQ=1nENu1QCFQi+?oGBw961Q_kyrNDq_CI#>fYtvv3Dr0%dxAxJNAbY$x$1sT!na zKT`RqnRX{RmnG)eu$hy1R7>_jRg2BK81GI_@;>sCqNQwZkY*AG#00 zo{UHA<=M3A-|=|WbMfghcU`RNW$eY-3Xq&#Y?DDEvo%CY8QyiHgd22B4fI z$4bnMg+f5kxxIl*X5B%3SfuHtJ+MNw>Fgo#GeD2t84THnCyp5n(cRj0SHdi4>MqTP zUz=BLa+)Q=Q4%JLjZX+3V%yIhQq=emOCX?5Um}ic=3q#g<|(i7XSAEweP@>bQk?;L z;O0Sf*2rdcIQp4?DRU@5x3JFz>N*k(|8_QA&TavWHx{?a168>u{R{ebOhh+Bgm{3C zcT_FSEH%H6mNn@&U3_L8SIg$f#9Z6qI4?;u@S<6oFMta6#1%o=%(U`OxV=#<*B#*w zZEXw{aN1_~Dc(FHm1j0Sfj}KU)?C^U>x)L3?{?Ex4{ZEJpieh*#(HP=Epyq6ZMZhC zHjz1nd&11MI?hOfb?NPDy4~ja3Ip$6X7$FZZ#rH&o#a>mk)b(>Dgtcm!&FooAhBg& z4F6<_&By4ThV!d+Hw^a_HAljoZ~TsP874c-?BVW6GZAM;Y5*YX-j<9@2&xC*FE{bncr2Py}Kn72-N z3=C{hFHo$th@4sJB#&kVdDIW^o!xzig}+LJZh1&Ti))eXyIw0bEZ?kdUi~p4gnnGB zD)diQ?Epx0|4)b;(Xd;0L_=DnXfcYAbFo%?BYVy*iOjw$E9y9SD)wGBbgG>}sD zoxv$IVMpC;P0xUI1m&J_5h4%s2^c=EbSoh?qP0Tcq7QNx*nH+!*a0x?)%-@Q*3`Id&b=LQ>qQ;S6U&Zt zQZXuvW?A+b`()X{_tXo^ZiNnREL_R3c>IRczASqU>Bd-t$(y_LaP8sLIfSEgdu-%O zM3yfCD7%;Xd`h&X5e6T>7f6Fn@}f!V&*eo=h~Bv`w|DIa1Qx?X7KfPt(u!DHdA11A zcH^KL_h0QGlz)Y5#sBip-eo}sYON508d!ga;Si@R7JLTAPdyBTnkHoOWw|5{WkYlJ4)NW!+QM{n8WnAfw)gfw(AId6lu^pa*+&56I4e>SNe?3@V zRhRv$khyqvW*sy2s=B*bNmJLhzf)Kr-YGIY(lmt6{iJykL9b7hP;oKIDzTufl2H3Q zM=>wYP*#5ghmxp2`4HCZ`B8-z`C%$4B1k19Hu;I|?;K7MJ{6FF!}Ioc2HJQJb(?sR zjeiov2iv&ZlAG_tZ2VwV{Xwns!1L|z6x*ayl49vaLM5@n2$2T-k1{MhA5!CPZV0c3 z$CSvkxU7q$hOjq=IK0XN^AL)Y{5b<6DHM($0lzrdN-D=f#&)b!L3~NT-Z7YA)U7}F zRjQr4B}W$Opm-^JEKbIm-yjkpa%Lc~*zFINc9b>se-{h(73yB#+z^i>Lgyg($jjXTKYU)mB*&T0wotEaSATcKKq_a>l7YOqdJk?>Z`Ylq97# zFD`q9Un>^9OeobGF9wtdIjKi3VvAX+*j=~de$zS7mipM2|z>!lAMp8jr*HhSIB2YvYGXl17Zyb9dy&2UWTZGy+;HgQQiOQ+!&YKU4h4WY@&i zRp3>Nwv?|x=R^G96dkuie5#w;P6Ly0Iy@?6vZia!2+0Mc+!mCtkEJK!xnOjjOa*7~UzHi@kY3%i@J#+BIGYO9}*cxkKE)=MoSq9%Y` zt#a{#LKX3rA)tU7FbMg*&&>1eB?0UAj~_41KF>TeXJ*cvIp@roGiPLU^_1aP{(+c) zq!E1+xDWBv0?2aoWPl6Eqh@~^A{C%x3CjXGr2wU{HeH#*kC3gpwzaL}umG%dn&4UF zII9}06+`X#ja-ha%|cT}+6bk}1#b}+H-Ul#jU~iAh_e<@c>p%Y@of|d zIYC_p@JGoakk-nt3@X12|4<2~pAWs=AZn`cmq6_6YTw&859zqv=<%}NoFX`3y=gn^ zO`&CHy(ukA*_YAl&F6}Rh|5dsQrDY8;j-L(KB;GpWT4AfZ;EZ3_2zNpK;sIC6#WE* zii$2cF4aS{8opWW`+UYZXqen+JF&Q`bZu}17gg fgj35`SE>;qy*5a`Y`-S=Yh* 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 z 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

@RZUZmQ`VzU>RjZH-H_5TygFfRau~Z_XVG1U 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�O3TTbU=T*T6sl{93E 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

)nqY@v}$akLP{+GvXYMl!^&u1RnkS^bd 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

y~_ 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

_l<2R~?G}1xA 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�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≫>x?Z_|RxTCR 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ℑhda~9fpqpIfn*g2f3#8bxb2|vnFK!-rIgF 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 WF`Ss+Fq!eF@}BOY>y>z+|NSpx%^j%# literal 0 HcmV?d00001 diff --git a/docs/_template/last-modified/plugins/lib/win32/x64/git2-6777db8.dll b/docs/_template/last-modified/plugins/lib/win32/x64/git2-6777db8.dll new file mode 100644 index 0000000000000000000000000000000000000000..af7d32a6d45d117802aa97299411857e337018c7 GIT binary patch literal 1241088 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

ECgCq+?Yf4yq)s!?< z%rRPoXN9bOXWlzh%q)!9KS{xkn`leY1;p#3s#kIU62Kx=A>l2ju@4Y5Jt`*dzlR}A zzuX5CO27QXZb?2Z(N6c{bt~;S%zLW(sU=ptZWW`iZV~$*PsdgS@t-3vDS&X#Ikv8G z|1YWjLtXtN1cm+3lGSEv3nx5h *ID-Z@NK+8!P2cw*i4zJ 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 ?oWtXo? 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%0D{`vt#;`2CUJ-%^n$ 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

k%5(DZMh1-bi#MV^Piu%k{HXWh{4)mNb@ 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 ZVD4QuI=CsyZRXxK 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

k2)|U`?42E^Y`cP#u11r$7Sn>)(w*! zaDP*A76(3=)$u7j*5vFT&pYMNGmiZ5;&l3~ZcGEklC1ES_}Q~(gALB^{kctl ztj0h80c^iKyOHyI!|Q`BcHCne8Dq#;QPDKnZNq`*3(Ada?m-3haP4yW!=a)2^or0l zXTgxC$KmXuK~Gi`4D{AcSs3VNj4Z~eaRzpIpI?wZehd64w@ z`?+W#9ND4RCplEK5armT{jrf&2KUiII(A8KaN1-%+l!6*!&76%x52zVH5Od%x39_$ z`(h;({m|`kGyZQ)hb`TOS>otmJ+u*$!7PU7MR!rnJA|lS*=zIngU=JZf8iPQ$>_QJ z;Psq`*J0uva8bO3_&mHXqB1RdhmhXN91^>AnnkR)53#{_ay}2^L+4?1661px#pwJz zjDyd^m`043Ule27=V6RsyvpKQ)l#`B&A(2y7(cg`2=RG%zmtMjNfUbEGAa^C&y}Y4 z^DquO52K41hh7w;>+>-Fjq_2ahAJBE#JKBji}7=5w0|DP#VHt-G^?TBMEXbq>ABJ* z#6|E<=!ExaLj*F__2d||SsX@Jd@b9^+(sNT1*|&Cn}uUL*+4D`OvSf=x1J9?C>3+C zEyn_V?{h(&7HEG|%Q+;RgEh?pz4?65zN}HPEa0;9fzQF~wLpWP3+l2!|Ma<_b_?{t z`JjENWyM**CsTlVvf!6cJE)@DVyM9QkRM^6d2GF(U1n^Bf!AYd3;q)0FL;_2%D@Q| zV!;Eh;MumNkIX24lG%`9r11(`cI8#Z)v#<8JP^+qgN|5|XU(cT>38aTqYmwrB6WVz zMs8=%6C$pwbk81}K58}Wd1je$4{*!^wm(Mu8MmXvP_}WCTyTc->}Xb*aWeso;ds|< zbE6RSFX~v7;Di<8}GlsbNsah9{&OS_AKy3aeZTVZVR|;i3c0J(W9R2*xD6`JRQ+q8Ry0Ex;P+m zJ@C)aTTuWH%rg7SA?y1G8|>ru_-Czo#b2sk2BHI6%P~;)p0{j3tKJ`DfM-{sljzp= zz(YM1JP{AZ;u`ixM~_+a4$ft*30!k6FaCqP*aNPb_d#xTU>A;}*XkR?cjD-J{m$NT zjsDx$;0*0?@Au_7u_^(zJQ1CJj-+J!*`xhmtJ0^i^>jT zGfAAg;5I688X~@b*vS#Ff@6#C$H&&v5oU#bILX*P!7yGX?4Edy18eXd}nR5qB#E{6Se(HQM2ufz*{%Bx5;+~ow0$% z9hLU@LT9Dp9-NNVi-QrjFn%ZP#uFv9j(O0hA!B@9o;5#YcdY2^cm(&s9(!OgN%U;> z^ne|JDx!F7QC`J%@jA5)2Su zflD0t5HX5(Hav3`4f=;#NU-1yn9UgR1BJw|5|QmBPD+9inco;17HoF1%-_5$#v#M8 zpEjXE9~x|O{!whf(KWC6Z(MWIe-($J;x<1IKx8+)D>N*c&GAkc$zjofxWjAQIkA9= zShafM#cAUq@WnC$C&7fLR;t9LS`0xRΞS{4Jc5ibEBlX87XB9l~-QHx|p_age?; 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 z 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 V-Qz3E_j3K;cYXdF{~!MEzW@M+zj^=w literal 0 HcmV?d00001 diff --git a/docs/_template/light-dark-theme/partials/head.tmpl.partial b/docs/_template/light-dark-theme/partials/head.tmpl.partial index c214e7548..8a01b48cf 100644 --- a/docs/_template/light-dark-theme/partials/head.tmpl.partial +++ b/docs/_template/light-dark-theme/partials/head.tmpl.partial @@ -10,7 +10,7 @@ - + diff --git a/docs/docfx.json b/docs/docfx.json index 759dc174f..f691d3a8f 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -1,19 +1,22 @@ { - "metadata": [{ - "src": [{ - "src": "../src", - "files": [ - "**.csproj" - ] - }], - "dest": "api", - "filter": "filterConfig.yml", - "properties": { - "TargetFramework": "netstandard2.0" + "metadata": [ + { + "src": [ + { + "src": "../src", + "files": ["**.csproj"] + } + ], + "dest": "api", + "filter": "filterConfig.yml", + "properties": { + "TargetFramework": "net5.0" + } } - }], + ], "build": { - "content": [{ + "content": [ + { "files": ["api/**.yml", "api/index.md"] }, { @@ -27,19 +30,21 @@ }, { "src": "../", - "files": [ "CHANGELOG.md" ] + "files": ["CHANGELOG.md"] + } + ], + "resource": [ + { + "files": [ + "**/images/**", + "**/samples/**", + "langwordMapping.yml", + "marketing/logo/**.svg", + "marketing/logo/**.png", + "favicon.ico" + ] } ], - "resource": [{ - "files": [ - "**/images/**", - "**/samples/**", - "langwordMapping.yml", - "marketing/logo/**.svg", - "marketing/logo/**.png", - "favicon.ico" - ] - }], "dest": "_site", "template": [ "default", @@ -47,17 +52,19 @@ "_template/last-modified", "_template/description-generator" ], - "postProcessors": ["ExtractSearchIndex", "LastModifiedPostProcessor", "DescriptionPostProcessor"], + "postProcessors": [ + "ExtractSearchIndex", + "LastModifiedPostProcessor", + "DescriptionPostProcessor" + ], "overwrite": "_overwrites/**/**.md", "globalMetadata": { "_appTitle": "Discord.Net Documentation", - "_appFooter": "Discord.Net (c) 2015-2020 2.2.0", + "_appFooter": "Discord.Net (c) 2015-2021 3.0.0", "_enableSearch": true, "_appLogoPath": "marketing/logo/SVG/Logomark Purple.svg", - "_appFaviconPath": "favicon.ico" + "_appFaviconPath": "favicon.ico" }, - "xrefService": [ - "https://xref.docs.microsoft.com/query?uid={uid}" - ] + "xrefService": ["https://xref.docs.microsoft.com/query?uid={uid}"] } } diff --git a/docs/faq/basics/basic-operations.md b/docs/faq/basics/basic-operations.md index 35c71709f..ee2edef94 100644 --- a/docs/faq/basics/basic-operations.md +++ b/docs/faq/basics/basic-operations.md @@ -13,7 +13,7 @@ language-specific tips when using this library. > [!WARNING] > Direct casting (e.g., `(Type)type`) is **the least recommended** -> way of casting, as it *can* throw an [InvalidCastException] +> way of casting, as it _can_ throw an [InvalidCastException] > when the object isn't the desired type. > > Please refer to [this post] for more details. @@ -26,7 +26,7 @@ A good and safe casting example: [!code-csharp[Casting](samples/cast.cs)] -[InvalidCastException]: https://docs.microsoft.com/en-us/dotnet/api/system.invalidcastexception +[invalidcastexception]: https://docs.microsoft.com/en-us/dotnet/api/system.invalidcastexception [this post]: https://docs.microsoft.com/en-us/dotnet/csharp/how-to/safely-cast-using-pattern-matching-is-and-as-operators ## How do I send a message? @@ -45,15 +45,15 @@ means casting is your friend. You should attempt to cast the channel as an [IMessageChannel] or any other entity that implements it to be able to message. -[SendMessageAsync]: xref:Discord.IMessageChannel.SendMessageAsync* -[GetChannel]: xref:Discord.WebSocket.DiscordSocketClient.GetChannel* +[sendmessageasync]: xref:Discord.IMessageChannel.SendMessageAsync* +[getchannel]: xref:Discord.WebSocket.DiscordSocketClient.GetChannel* ## How can I tell if a message is from X, Y, Z channel? You may check the message channel type. Visit [Glossary] to see the various types of channels. -[Glossary]: xref:FAQ.Glossary#message-channels +[glossary]: xref:FAQ.Glossary#message-channels ## How can I get the guild from a message? @@ -86,9 +86,9 @@ implement [IEmote] and are valid options. [!code-csharp[Emoji](samples/emoji-self.cs)] -*** +--- -[AddReactionAsync]: xref:Discord.IMessage.AddReactionAsync* +[addreactionasync]: xref:Discord.IMessage.AddReactionAsync* ## What is a "preemptive rate limit?" @@ -107,17 +107,17 @@ reactions. ## Can I opt-out of preemptive rate limits? -Unfortunately, not at the moment. See [#401](https://github.com/RogueException/Discord.Net/issues/401). - -[IChannel]: xref:Discord.IChannel -[ICategoryChannel]: xref:Discord.ICategoryChannel -[IGuildChannel]: xref:Discord.IGuildChannel -[ITextChannel]: xref:Discord.ITextChannel -[IGuild]: xref:Discord.IGuild -[IVoiceChannel]: xref:Discord.IVoiceChannel -[IGuildUser]: xref:Discord.IGuildUser -[IMessageChannel]: xref:Discord.IMessageChannel -[IUserMessage]: xref:Discord.IUserMessage -[IEmote]: xref:Discord.IEmote -[Emote]: xref:Discord.Emote -[Emoji]: xref:Discord.Emoji \ No newline at end of file +Unfortunately, not at the moment. See [#401](https://github.com/discord-net/Discord.Net/issues/401). + +[ichannel]: xref:Discord.IChannel +[icategorychannel]: xref:Discord.ICategoryChannel +[iguildchannel]: xref:Discord.IGuildChannel +[itextchannel]: xref:Discord.ITextChannel +[iguild]: xref:Discord.IGuild +[ivoicechannel]: xref:Discord.IVoiceChannel +[iguilduser]: xref:Discord.IGuildUser +[imessagechannel]: xref:Discord.IMessageChannel +[iusermessage]: xref:Discord.IUserMessage +[iemote]: xref:Discord.IEmote +[emote]: xref:Discord.Emote +[emoji]: xref:Discord.Emoji diff --git a/docs/faq/basics/client-basics.md b/docs/faq/basics/client-basics.md index 1176ee3fd..72ad472f2 100644 --- a/docs/faq/basics/client-basics.md +++ b/docs/faq/basics/client-basics.md @@ -28,8 +28,8 @@ There are few possible reasons why this may occur. mind that a token is **different** from a *client secret*. [TokenType]: xref:Discord.TokenType -[827]: https://github.com/RogueException/Discord.Net/issues/827 -[958]: https://github.com/RogueException/Discord.Net/issues/958 +[827]: https://github.com/discord-net/Discord.Net/issues/827 +[958]: https://github.com/discord-net/Discord.Net/issues/958 [Discord API Terms of Service]: https://discord.com/developers/docs/legal ## How do I do X, Y, Z when my bot connects/logs on? Why do I get a `NullReferenceException` upon calling any client methods after connect? @@ -73,7 +73,9 @@ instances, with each one serving a different amount of guilds. There are very few differences from the [DiscordSocketClient] class, and it is very straightforward to modify your existing code to use a [DiscordShardedClient] when necessary. -1. You need to specify the total amount of shards, or shard ids, via [DiscordShardedClient]'s constructors. +1. You can specify the total amount of shards, or shard ids, via [DiscordShardedClient]'s constructors. +If the total shards are not specified then the library will get the recommended shard count via the +[Get Gateway Bot](https://discord.com/developers/docs/topics/gateway#get-gateway-bot) route. 2. The [Connected], [Disconnected], [Ready], and [LatencyUpdated] events are replaced with [ShardConnected], [ShardDisconnected], [ShardReady], and [ShardLatencyUpdated]. 3. Every event handler you apply/remove to the [DiscordShardedClient] is applied/removed to each shard. diff --git a/docs/faq/basics/getting-started.md b/docs/faq/basics/getting-started.md index e254226d0..dc4b11548 100644 --- a/docs/faq/basics/getting-started.md +++ b/docs/faq/basics/getting-started.md @@ -79,4 +79,4 @@ Several common ways to do this: ![Roles](images/role-copy.png) 2. Make the role mentionable and mention the role, and escape it using the `\` character in front. -3. Inspect the roles collection within the guild via your debugger. \ No newline at end of file +3. Inspect the roles collection within the guild via your debugger. diff --git a/docs/faq/basics/images/scope.png b/docs/faq/basics/images/scope.png new file mode 100644 index 0000000000000000000000000000000000000000..04d60bce27fe87d511676d857afbe20bf799b0e1 GIT binary patch literal 15921 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 xFc!Egb^dUS`1iM%|1mZBe_eWxao [!WARNING] +> If you have not acknowledged the command FollowupAsync will not work! the interaction has not been resonded to, so you cannot follow it up! + +[RespondAsync]: xref:Discord.IDiscordInteraction +[DeferAsync]: xref:Discord.IDiscordInteraction +[FollowUpAsync]: xref:Discord.IDiscordInteraction + +## Bad form Exception when I try to create my commands, why do I get this? + +Bad form exceptions are thrown if the slash, user or message command builder has invalid values. +The following options could resolve your error. + +#### Is your command name lowercase? + +If your command name is not lowercase, it is not seen as a valid command entry. +`Avatar` is invalid; `avatar` is valid. + +#### Are your values below or above the required amount? (This also applies to message components) + +Discord expects all values to be below maximum allowed. +Going over this maximum amount of characters causes an exception. + +> [!NOTE] +> All maximum and minimum value requirements can be found in the [Discord Developer Docs]. +> For components, structure documentation is found [here]. + +[Discord Developer Docs]: https://discord.com/developers/docs/interactions/application-commands#application-commands +[here]: https://discord.com/developers/docs/interactions/message-components#message-components + +#### Is your subcommand branching correct? + +Branching structure is covered properly here: xref:Guides.SlashCommands.SubCommand + +## My interaction commands are not showing up? + +If you registered your commands globally, it can take up to 1 hour for them to register. +Did you register a guild command (should be instant), or waited more than an hour and still don't have them show up? + +- Try to check for any errors in the console, there is a good chance something might have been thrown. + +- Register your commands after the Ready event in the client. The client is not configured to register commands before this moment. + +- Check if no bad form exception is thrown; If so, refer to the above question. + +- Do you have the application commands scope checked when adding your bot to guilds? + +![Scope check](images/scope.png) + +## There are many options for creating commands, which do I use? + +[!code-csharp[Register examples](samples/registerint.cs)] + +> [!NOTE] +> You can use bulkoverwrite even if there are no commands in guild, nor globally. +> The bulkoverwrite method disposes the old set of commands and replaces it with the new. + +## Do I need to create commands on startup? + +If you are registering your commands for the first time, it is required to create them once. +After this, commands will exist indefinitely until you overwrite them. +Overwriting is only required if you make changes to existing commands, or add new ones. + +## I can't see all of my user/message commands, why? + +Message and user commands have a limit of 5 per guild, and another 5 globally. +If you have more than 5 guild-only message commands being registered, no more than 5 will actually show up. +You can get up to 10 entries to show if you register 5 per guild, and another 5 globally. diff --git a/docs/faq/basics/samples/registerint.cs b/docs/faq/basics/samples/registerint.cs new file mode 100644 index 000000000..68fd2e608 --- /dev/null +++ b/docs/faq/basics/samples/registerint.cs @@ -0,0 +1,21 @@ +private async Task ReadyAsync() +{ + // pull your commands from some array, everyone has a different approach for this. + var commands = _builders.ToArray(); + + // write your list of commands globally in one go. + await _client.Rest.BulkOverwriteGlobalCommands(commands); + + // write your array of commands to one guild in one go. + // You can do a foreach (... in _client.Guilds) approach to write to all guilds. + await _client.Rest.BulkOverwriteGuildCommands(commands, /* some guild ID */); + + foreach (var c in commands) + { + // Create a global command, repeating usage for multiple commands. + await _client.Rest.CreateGlobalCommand(c); + + // Create a guild command, repeating usage for multiple commands. + await _client.Rest.CreateGuildCommand(c, guildId); + } +} diff --git a/docs/faq/commands/dependency-injection.md b/docs/faq/commands/dependency-injection.md index 0a5de3e32..d6b7f8b58 100644 --- a/docs/faq/commands/dependency-injection.md +++ b/docs/faq/commands/dependency-injection.md @@ -23,7 +23,7 @@ throughout execution. Think of it like a chest that holds whatever you throw at it that won't be affected by anything unless you want it to. Note that you should also learn Microsoft's implementation of [Dependency Injection] \([video]) before proceeding, -as well as how it works in [Discord.Net](xref:Guides.Commands.DI#usage-in-modules). +as well as how it works in [Discord.Net](xref:Guides.TextCommands.DI#usage-in-modules). A brief example of service and dependency injection can be seen below. diff --git a/docs/faq/commands/general.md b/docs/faq/commands/general.md index de6d48dc1..cff078746 100644 --- a/docs/faq/commands/general.md +++ b/docs/faq/commands/general.md @@ -1,9 +1,9 @@ --- uid: FAQ.Commands.General -title: General Questions about Commands +title: General Questions about chat Commands --- -# Command-related Questions +# Chat Command-related Questions In the following section, you will find commonly asked questions and answered regarding general command usage when using @Discord.Commands. @@ -144,4 +144,4 @@ For #4, exceptions are caught in [CommandService.Log] event under [LogMessage.Exception]: xref:Discord.LogMessage.Exception* [ExecuteResult.Exception]: xref:Discord.Commands.ExecuteResult.Exception* [CommandException]: xref:Discord.Commands.CommandException -[IResult]: xref:Discord.Commands.IResult \ No newline at end of file +[IResult]: xref:Discord.Commands.IResult diff --git a/docs/faq/commands/interaction.md b/docs/faq/commands/interaction.md new file mode 100644 index 000000000..db61bc3f5 --- /dev/null +++ b/docs/faq/commands/interaction.md @@ -0,0 +1,52 @@ +--- +uid: FAQ.Commands.Interactions +title: Interaction service +--- + +# Interaction commands in services + +A chapter talking about the interaction service framework. +For questions about interactions in general, refer to the [Interactions FAQ] + +## Module dependencies aren't getting populated by Property Injection? + +Make sure the properties are publicly accessible and publicly settable. + +## How do I use this * interaction specific method/property? + +If your interaction context holds a down-casted version of the interaction object, you need to up-cast it. +Ideally, use pattern matching to make sure its the type of interaction you are expecting it to be. + +## `InteractionService.ExecuteAsync()` always returns a successful result, how do i access the failed command execution results? + +If you are using `RunMode.Async` you need to setup your post-execution pipeline around `CommandExecuted` events. + +## How do I check if the executing user has * permission? + +Refer to the [documentation about preconditions] + +## How do I send the HTTP Response from inside the command modules. + +Set the `RestResponseCallback` property of [InteractionServiceConfig] with a delegate for handling HTTP Responses and use +`RestInteractionModuleBase` to create your command modules. `RespondAsync()` and `DeferAsync()` methods of this module base will use the +`RestResponseCallback` to create interaction responses. + +## Is there a cleaner way of creating parameter choices other than using `[Choice]`? + +The default `enum` [TypeConverter] of the Interaction Service will +automatically register `enum`s as multiple choice options. + +## How do I add an optional `enum` parameter but make the default value not visible to the user? + +The default `enum` [TypeConverter] of the Interaction Service comes with `[Hide]` attribute that +can be used to prevent certain enum values from getting registered. + +## How does the InteractionService determine the generic TypeConverter to use for a parameter type? + +It compares the _target base type_ key of the +[TypeConverter] and chooses the one that sits highest on the inheritance hierarchy. + +[TypeConverter]: xref:Discord.Interactions.TypeConverter +[Interactions FAQ]: xref: FAQ.Basics.Interactions +[InteractionServiceConfig]: xref:Discord.Interactions.InteractionServiceConfig +[documentation about preconditions]: xref: Guides.ChatCommands.Preconditions diff --git a/docs/faq/misc/glossary.md b/docs/faq/misc/glossary.md index 4b661f65c..232690917 100644 --- a/docs/faq/misc/glossary.md +++ b/docs/faq/misc/glossary.md @@ -26,11 +26,11 @@ channels, and are often referred to as "servers". ## Channel Types ### Message Channels -* A **Text Channel** ([ITextChannel]) is a message channel from a -Guild. +* A **Text Channel** ([ITextChannel]) is a message channel from a Guild. +* A **Thread Channel** ([IThreadChannel]) is a thread channel from a Guild. +* A **News Channel** ([INewsChannel]) (also goes as announcement channel) is a news channel from a Guild. * A **DM Channel** ([IDMChannel]) is a message channel from a DM. -* A **Group Channel** ([IGroupChannel]) is a message channel from a -Group. +* A **Group Channel** ([IGroupChannel]) is a message channel from a Group. - This is rarely used due to the bot's inability to join groups. * A **Private Channel** ([IPrivateChannel]) is a DM or a Group. * A **Message Channel** ([IMessageChannel]) can be any of the above. @@ -39,11 +39,15 @@ Group. * A **Guild Channel** ([IGuildChannel]) is a guild channel in a guild. - This can be any channels that may exist in a guild. * A **Voice Channel** ([IVoiceChannel]) is a voice channel in a guild. +* A **Stage Channel** ([IStageChannel]) is a stage channel in a guild. * A **Category Channel** ([ICategoryChannel]) (2.0+) is a category that holds one or more sub-channels. * A **Nested Channel** ([INestedChannel]) (2.0+) is a channel that can exist under a category. +> [!NOTE] +> A Channel ([IChannel]) can be all types of channels. + [INestedChannel]: xref:Discord.INestedChannel [IGuildChannel]: xref:Discord.IGuildChannel [IMessageChannel]: xref:Discord.IMessageChannel @@ -53,6 +57,33 @@ exist under a category. [IPrivateChannel]: xref:Discord.IPrivateChannel [IVoiceChannel]: xref:Discord.IVoiceChannel [ICategoryChannel]: xref:Discord.ICategoryChannel +[IChannel]: xref:Discord.IChannel +[IThreadChannel]: xref:Discord.IThreadChannel +[IStageChannel]: xref:Discord.IStageChannel +[INewsChannel]: xref:Discord.INewsChannel + +## Message Types + +* An **User Message** ([IUserMessage]) is a message sent by a user. +* A **System Message** ([ISystemMessage]) is a message sent by Discord itself. +* A **Message** ([IMessage]) can be any of the above. + +[IUserMessage]: xref:Discord.IUserMessage +[ISystemMessage]: xref:Discord.ISystemMessage +[IMessage]: xref:Discord.IMessage + +## User Types + +* A **Guild User** ([IGuildUser]) is a user available inside a guild. +* A **Group User** ([IGroupUser]) is a user available inside a group. + - This is rarely used due to the bot's inability to join groups. +* A **Self User** ([ISelfUser]) is the bot user the client is currently logged in as. +* An **User** ([IUser]) can be any of the above. + +[IGuildUser]: xref:Discord.IGuildUser +[IGroupUser]: xref:Discord.IGroupUser +[ISelfUser]: xref:Discord.ISelfUser +[IUser]: xref:Discord.IUser ## Emoji Types @@ -64,6 +95,15 @@ exist under a category. [Emote]: xref:Discord.Emote [Emoji]: xref:Discord.Emoji + +## Sticker Types + +* A **Sticker** ([ISticker]) is a standard Discord sticker. +* A **Custom Sticker ([ICustomSticker]) is a Guild-unique sticker. + +[ISticker]: xref:Discord.ISticker +[ICustomSticker]: xref:Discord.ICustomSticker + ## Activity Types * A **Game** ([Game]) refers to a user's game activity. diff --git a/docs/faq/misc/legacy.md b/docs/faq/misc/legacy.md index 5931579d3..ddb2d03c6 100644 --- a/docs/faq/misc/legacy.md +++ b/docs/faq/misc/legacy.md @@ -18,7 +18,7 @@ their breaking nature. Visit the repo's [release tag] to see the latest public pre-release. -[release tag]: https://github.com/RogueException/Discord.Net/releases +[release tag]: https://github.com/discord-net/Discord.Net/releases ## I came from an earlier version of Discord.Net 1.0, and DependencyMap doesn't seem to exist anymore in the later revision? What happened to it? @@ -26,4 +26,4 @@ The `DependencyMap` has been replaced with Microsoft's [DependencyInjection] Abstractions. An example usage can be seen [here](https://github.com/foxbot/DiscordBotBase/blob/csharp/src/DiscordBot/Program.cs#L36). -[DependencyInjection]: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection \ No newline at end of file +[DependencyInjection]: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection diff --git a/docs/faq/toc.yml b/docs/faq/toc.yml index 393e948f6..5a7e7e7f2 100644 --- a/docs/faq/toc.yml +++ b/docs/faq/toc.yml @@ -6,10 +6,14 @@ topicUid: FAQ.Basics.BasicOp - name: Client Basics topicUid: FAQ.Basics.ClientBasics + - name: Interactions + topicUid: FAQ.Basics.InteractionBasics - name: Commands items: - - name: General + - name: String commands topicUid: FAQ.Commands.General + - name: Interaction commands + topicUid: FAQ.Commands.Interactions - name: Dependency Injection topicUid: FAQ.Commands.DI - name: Glossary diff --git a/docs/guides/concepts/entities.md b/docs/guides/concepts/entities.md index 5ad5b01f2..e3ca7db32 100644 --- a/docs/guides/concepts/entities.md +++ b/docs/guides/concepts/entities.md @@ -31,8 +31,7 @@ But that doesn't mean a message _can't_ come from a retrieve information about a guild from a message entity, you will need to cast its channel object to a `SocketTextChannel`. -You can find out various types of entities in the @FAQ.Misc.Glossary -page. +You can find out various types of entities in the [Glossary page.](xref:FAQ.Glossary) ## Navigation @@ -63,4 +62,4 @@ a variant of the type that you need. ## Sample -[!code-csharp[Entity Sample](samples/entities.cs)] \ No newline at end of file +[!code-csharp[Entity Sample](samples/entities.cs)] diff --git a/docs/guides/getting_started/images/nightlies-vs-note.png b/docs/guides/getting_started/images/nightlies-vs-note.png deleted file mode 100644 index 0dcf2dea30fcb966758ea0b782eeae80a8772cf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10162 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 Is$JCo0Sye=Q2+n{ diff --git a/docs/guides/getting_started/images/nightlies-vs-step1.png b/docs/guides/getting_started/images/nightlies-vs-step1.png deleted file mode 100644 index a399ca66c2c67d23b05d1e81d06b87cbaf294ad2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13372 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 notice. It is known to have issues with the library's WebSockets > implementation and may crash the application upon startup. -[Mono]: https://www.mono-project.com/ -[.NET Standard]: https://docs.microsoft.com/en-us/dotnet/articles/standard/library -[.NET Core]: https://docs.microsoft.com/en-us/dotnet/articles/core/ -[.NET Framework]: https://docs.microsoft.com/en-us/dotnet/framework/get-started/ +[mono]: https://www.mono-project.com/ +[.net 6.0]: https://docs.microsoft.com/en-us/dotnet/core/whats-new/dotnet-6 +[.net 5.0]: https://docs.microsoft.com/en-us/dotnet/core/whats-new/dotnet-5 +[.net standard]: https://docs.microsoft.com/en-us/dotnet/articles/standard/library +[.net core]: https://docs.microsoft.com/en-us/dotnet/articles/core/ +[.net framework]: https://docs.microsoft.com/en-us/dotnet/framework/get-started/ [additional steps]: #installing-on-net-standard-11 ## Installing with NuGet @@ -37,37 +39,37 @@ Development builds of Discord.Net, as well as add-ons, will be published to our [MyGet feed]. See @Guides.GettingStarted.Installation.Nightlies to learn more. -[official NuGet feed]: https://nuget.org -[MyGet feed]: https://www.myget.org/feed/Packages/discord-net +[official nuget feed]: https://nuget.org +[myget feed]: https://www.myget.org/feed/Packages/discord-net ### [Using Visual Studio](#tab/vs-install) 1. Create a new solution for your bot 2. In the Solution Explorer, find the "Dependencies" element under your - bot's project + bot's project 3. Right click on "Dependencies", and select "Manage NuGet packages" - ![Step 3](images/install-vs-deps.png) + ![Step 3](images/install-vs-deps.png) 4. In the "Browse" tab, search for `Discord.Net` 5. Install the `Discord.Net` package - ![Step 5](images/install-vs-nuget.png) + ![Step 5](images/install-vs-nuget.png) ### [Using JetBrains Rider](#tab/rider-install) 1. Create a new solution for your bot 2. Open the NuGet window (Tools > NuGet > Manage NuGet packages for Solution) - ![Step 2](images/install-rider-nuget-manager.png) + ![Step 2](images/install-rider-nuget-manager.png) 3. In the "Packages" tab, search for `Discord.Net` - ![Step 3](images/install-rider-search.png) + ![Step 3](images/install-rider-search.png) 4. Install by adding the package to your project - ![Step 4](images/install-rider-add.png) + ![Step 4](images/install-rider-add.png) ### [Using Visual Studio Code](#tab/vs-code) @@ -82,7 +84,7 @@ published to our [MyGet feed]. See 2. Navigate to where your `*.csproj` is located 3. Enter `dotnet add package Discord.Net` -*** +--- ## Compiling from Source @@ -90,15 +92,15 @@ In order to compile Discord.Net, you will need the following: ### Using Visual Studio -* [Visual Studio 2019](https://visualstudio.microsoft.com/) -* [.NET Core SDK] +- [Visual Studio 2019](https://visualstudio.microsoft.com/) or later. +- [.NET 5 SDK] -The .NET Core and Docker workload is required during Visual Studio +The .NET 5 workload is required during Visual Studio installation. ### Using Command Line -* [.NET Core SDK] +- [.NET 5 SDK] ## Additional Information @@ -117,28 +119,28 @@ by installing one or more custom packages as listed below. 1. Download the latest [.NET Core SDK]. 2. Create or move your existing project to use .NET Core. 3. Modify your `` tag to at least `netcoreapp2.1`, or - by adding the `--framework netcoreapp2.1` switch when building. + by adding the `--framework netcoreapp2.1` switch when building. #### [Custom Packages](#tab/custom-pkg) -1. Install or compile the following packages: +1. Install or compile the following packages: - * `Discord.Net.Providers.WS4Net` - * `Discord.Net.Providers.UDPClient` (Optional) - * This is _only_ required if your bot will be utilizing voice chat. + - `Discord.Net.Providers.WS4Net` + - `Discord.Net.Providers.UDPClient` (Optional) + - This is _only_ required if your bot will be utilizing voice chat. -2. Configure your [DiscordSocketClient] to use these custom providers -over the default ones. +2. Configure your [DiscordSocketClient] to use these custom providers + over the default ones. - * To do this, set the `WebSocketProvider` and the optional - `UdpSocketProvider` properties on the [DiscordSocketConfig] that you - are passing into your client. + * To do this, set the `WebSocketProvider` and the optional + `UdpSocketProvider` properties on the [DiscordSocketConfig] that you + are passing into your client. [!code-csharp[Example](samples/netstd11.cs)] -[DiscordSocketClient]: xref:Discord.WebSocket.DiscordSocketClient -[DiscordSocketConfig]: xref:Discord.WebSocket.DiscordSocketConfig +[discordsocketclient]: xref:Discord.WebSocket.DiscordSocketClient +[discordsocketconfig]: xref:Discord.WebSocket.DiscordSocketConfig -*** +--- -[.NET Core SDK]: https://dotnet.microsoft.com/download \ No newline at end of file +[.net 5 sdk]: https://dotnet.microsoft.com/download diff --git a/docs/guides/getting_started/labs.md b/docs/guides/getting_started/labs.md new file mode 100644 index 000000000..e52014312 --- /dev/null +++ b/docs/guides/getting_started/labs.md @@ -0,0 +1,30 @@ +--- +uid: Guides.GettingStarted.Installation.Labs +title: Installing Labs builds +--- + +# Installing Discord.NET Labs + +Discord.NET Labs is the experimental repository that introduces new features & chips away at all bugs until ready for merging into Discord.NET. +Are you looking to test or play with new features? + +> [!IMPORTANT] +> It is very ill advised to use Discord.NET Labs in a production environment normally, +> considering it can include bugs that have not been discovered yet, as features are freshly added. +> However if approached correctly, will work as a pre-release to Discord.NET. +> Make sure to report any bugs at the Labs [repository] or on [Discord] + +[Discord]: https://discord.gg/dnet +[repository]: https://github.com/Discord-Net-Labs/Discord.Net-Labs + +## Installation: + +[NuGet] - This only includes releases, on which features are ready to test. + +> [!NOTE] +> Installing NuGet packages is covered fully at [Installing Discord NET](xref:Guides.GettingStarted.Installation) + +[MyGet] - Available for current builds and unreleased features. + +[NuGet]: https://www.nuget.org/packages/Discord.Net.Labs/ +[MyGet]: https://www.myget.org/feed/Packages/discord-net-labs diff --git a/docs/guides/getting_started/nightlies.md b/docs/guides/getting_started/nightlies.md deleted file mode 100644 index 2b9fde87b..000000000 --- a/docs/guides/getting_started/nightlies.md +++ /dev/null @@ -1,97 +0,0 @@ ---- -uid: Guides.GettingStarted.Installation.Nightlies -title: Installing Nightly Build ---- - -# Installing Discord.Net Nightly Build - -Before Discord.Net pushes a new set of features into the stable -version, we use nightly builds to test the features with the -community for an extensive period of time. Each nightly build is -compiled by AppVeyor whenever a new commit is made and will be pushed -to our MyGet feed. - -> [!IMPORTANT] -> Although nightlies are generally stable and have more features -> and bug fixes than the current stable build on NuGet, there -> will be breaking changes during the development or -> breaking bugs; these bugs are usually fixed as soon as they -> are discovered, but you should still be aware of that. - -## Installing with MyGet (Recommended) - -MyGet is typically used by many development teams to publish their -latest pre-release packages before the features are finalized and -pushed to NuGet. - -The following is the feed link of Discord.Net, - -* `https://www.myget.org/F/discord-net/api/v3/index.json` - -Depending on which IDE you use, there are many different ways of -adding the feed to your package source. - -### [Using Visual Studio](#tab/vs) - -1. Go to `Tools` > `NuGet Package Manager` > `Package Manager Settings` - - ![VS](images/nightlies-vs-step1.png) - -2. Go to `Package Sources` - - ![Package Sources](images/nightlies-vs-step2.png) - -3. Click on the add icon -4. Fill in the desired name and source as shown below and hit `Update` - - ![Add Source](images/nightlies-vs-step4.png) - -> [!NOTE] -> Remember to tick the `Include pre-release` checkbox to see the -> nightly builds! -> ![Checkbox](images/nightlies-vs-note.png) - -### [Using dotnet CLI](#tab/cli) - -1. Launch a terminal of your choice -2. Navigate to where your `*.csproj` is located -3. Type `dotnet add package Discord.Net --source https://www.myget.org/F/discord-net/api/v3/index.json` - -### [Using Local NuGet.Config](#tab/local-nuget-config) - -If you plan on deploying your bot or developing outside of Visual -Studio, you will need to create a local NuGet configuration file for -your project. - -To do this, create a file named `NuGet.Config` alongside the root of -your application, where the project is located. - -Paste the following snippets into this configuration file, adding any -additional feeds if necessary. - -[!code[NuGet Configuration](samples/nuget.config)] - -After which, you may install the packages by directly modifying the -project file and specifying a version, or by using -the [Package Manager Console](https://docs.microsoft.com/en-us/nuget/tools/powershell-reference) -(`Install-Package Discord.Net -IncludePrerelease`). - -*** - -## Installing from AppVeyor Artifacts - -As mentioned in the first paragraph, we utilize AppVeyor to perform -automated tests and publish the new build. During the publishing -process, we also upload the NuGet packages onto -AppVeyor's Artifact collection. - -The latest build status can be found within our [AppVeyor project]. - -[AppVeyor project]: https://ci.appveyor.com/project/rogueexception/discord-net - -1. In the project, you may find our latest build including the - aforementioned artifacts. - ![Artifacts](images/appveyor-artifacts.png) -2. In the artifacts collection, you should see the latest packages - packed in `*.nupkg` form which you could download from and use. - ![NuPkgs](images/appveyor-nupkg.png) diff --git a/docs/guides/interactions/application-commands/context-menu-commands/creating-context-menu-commands.md b/docs/guides/int_basics/application-commands/context-menu-commands/creating-context-menu-commands.md similarity index 89% rename from docs/guides/interactions/application-commands/context-menu-commands/creating-context-menu-commands.md rename to docs/guides/int_basics/application-commands/context-menu-commands/creating-context-menu-commands.md index 02a9cde14..4e6210ba8 100644 --- a/docs/guides/interactions/application-commands/context-menu-commands/creating-context-menu-commands.md +++ b/docs/guides/int_basics/application-commands/context-menu-commands/creating-context-menu-commands.md @@ -16,9 +16,9 @@ Guild commands are specific to the guild you specify when making them. Guild com - Your app can have a global and guild command with the same name - Multiple apps can have commands with the same names -**Note**: Apps can have a maximum of 5 global context menu commands, and an additional 5 guild-specific context menu commands per guild. - -If you don't have the code for a bot ready yet please follow [this guide](https://docs.stillu.cc/guides/getting_started/first-bot.html). +[!IMPORTANT] +> Apps can have a maximum of 5 global context menu commands, +> and an additional 5 guild-specific context menu commands per guild. ## UserCommandBuilder @@ -40,7 +40,9 @@ The context menu message command builder will help you create message commands. | WithName | Function | Sets the field name. | | Build | Function | Builds the builder into the appropriate `MessageCommandProperties` class used to make Menu commands | -**Note**: Context Menu command names can be upper and lowercase, and use spaces. +> [!NOTE] +> Context Menu command names can be upper and lowercase, and use spaces. +> They cannot be registered pre-ready. Let's use the user command builder to make a global and guild command. @@ -102,4 +104,7 @@ public async Task Client_Ready() ``` > [!NOTE] -> Application commands only need to be created once. They do _not_ have to be 'created' on every startup or connection. The example simple shows creating them in the ready event as it's simpler than creating normal bot commands to register application commands. +> Application commands only need to be created once. They do _not_ have to be +> 'created' on every startup or connection. +> The example simple shows creating them in the ready event +> as it's simpler than creating normal bot commands to register application commands. diff --git a/docs/guides/interactions/application-commands/context-menu-commands/receiving-context-menu-command-events.md b/docs/guides/int_basics/application-commands/context-menu-commands/receiving-context-menu-command-events.md similarity index 100% rename from docs/guides/interactions/application-commands/context-menu-commands/receiving-context-menu-command-events.md rename to docs/guides/int_basics/application-commands/context-menu-commands/receiving-context-menu-command-events.md diff --git a/docs/guides/int_basics/application-commands/intro.md b/docs/guides/int_basics/application-commands/intro.md new file mode 100644 index 000000000..f55d0a2fc --- /dev/null +++ b/docs/guides/int_basics/application-commands/intro.md @@ -0,0 +1,51 @@ +--- +uid: Guides.SlashCommands.Intro +title: Introduction to slash commands +--- + + +# Getting started with application commands. + +This guide will show you how to use application commands. +If you have extra questions that aren't covered here you can come to our +[Discord](https://discord.com/invite/dvSfUTet3K) server and ask around there. + +## What is an application command? + +Application commands consist of three different types. Slash commands, context menu User commands and context menu Message commands. +Slash commands are made up of a name, description, and a block of options, which you can think of like arguments to a function. +The name and description help users find your command among many others, and the options validate user input as they fill out your command. +Message and User commands are only a name, to the user. So try to make the name descriptive. +They're accessed by right clicking (or long press, on mobile) a user or a message, respectively. + +> [!IMPORTANT] +> Context menu commands are currently not supported on mobile. + +All three varieties of application commands have both Global and Guild variants. +Your global commands are available in every guild that adds your application. +You can also make commands for a specific guild; they're only available in that guild. +The User and Message commands are more limited in quantity than the slash commands. +For specifics, check out their respective guide pages. + +An Interaction is the message that your application receives when a user uses a command. +It includes the values that the user submitted, as well as some metadata about this particular instance of the command being used: +the guild_id, +channel_id, +member and other fields. +You can find all the values in our data models. + +## Authorizing your bot for application commands + +There is a new special OAuth2 scope for applications called `applications.commands`. +In order to make Application Commands work within a guild, the guild must authorize your application +with the `applications.commands` scope. The bot scope is not enough. + +Head over to your discord applications OAuth2 screen and make sure to select the `application.commands` scope. + +![OAuth2 scoping](slash-commands/images/oauth.png) + +From there you can then use the link to add your bot to a server. + +> [!NOTE] +> In order for users in your guild to use your slash commands, they need to have +> the "Use Application Commands" permission on the guild. diff --git a/docs/guides/interactions/application-commands/slash-commands/08-bulk-overwrite-of-global-slash-commands.md b/docs/guides/int_basics/application-commands/slash-commands/bulk-overwrite-of-global-slash-commands.md similarity index 100% rename from docs/guides/interactions/application-commands/slash-commands/08-bulk-overwrite-of-global-slash-commands.md rename to docs/guides/int_basics/application-commands/slash-commands/bulk-overwrite-of-global-slash-commands.md diff --git a/docs/guides/interactions/application-commands/slash-commands/07-choice-slash-command.md b/docs/guides/int_basics/application-commands/slash-commands/choice-slash-command.md similarity index 100% rename from docs/guides/interactions/application-commands/slash-commands/07-choice-slash-command.md rename to docs/guides/int_basics/application-commands/slash-commands/choice-slash-command.md diff --git a/docs/guides/interactions/application-commands/slash-commands/02-creating-slash-commands.md b/docs/guides/int_basics/application-commands/slash-commands/creating-slash-commands.md similarity index 100% rename from docs/guides/interactions/application-commands/slash-commands/02-creating-slash-commands.md rename to docs/guides/int_basics/application-commands/slash-commands/creating-slash-commands.md diff --git a/docs/guides/interactions/application-commands/slash-commands/images/ephemeral1.png b/docs/guides/int_basics/application-commands/slash-commands/images/ephemeral1.png similarity index 100% rename from docs/guides/interactions/application-commands/slash-commands/images/ephemeral1.png rename to docs/guides/int_basics/application-commands/slash-commands/images/ephemeral1.png diff --git a/docs/guides/interactions/application-commands/slash-commands/images/feedback1.png b/docs/guides/int_basics/application-commands/slash-commands/images/feedback1.png similarity index 100% rename from docs/guides/interactions/application-commands/slash-commands/images/feedback1.png rename to docs/guides/int_basics/application-commands/slash-commands/images/feedback1.png diff --git a/docs/guides/interactions/application-commands/slash-commands/images/feedback2.png b/docs/guides/int_basics/application-commands/slash-commands/images/feedback2.png similarity index 100% rename from docs/guides/interactions/application-commands/slash-commands/images/feedback2.png rename to docs/guides/int_basics/application-commands/slash-commands/images/feedback2.png diff --git a/docs/guides/interactions/application-commands/slash-commands/images/listroles1.png b/docs/guides/int_basics/application-commands/slash-commands/images/listroles1.png similarity index 100% rename from docs/guides/interactions/application-commands/slash-commands/images/listroles1.png rename to docs/guides/int_basics/application-commands/slash-commands/images/listroles1.png diff --git a/docs/guides/interactions/application-commands/slash-commands/images/listroles2.png b/docs/guides/int_basics/application-commands/slash-commands/images/listroles2.png similarity index 100% rename from docs/guides/interactions/application-commands/slash-commands/images/listroles2.png rename to docs/guides/int_basics/application-commands/slash-commands/images/listroles2.png diff --git a/docs/guides/interactions/application-commands/slash-commands/images/oauth.png b/docs/guides/int_basics/application-commands/slash-commands/images/oauth.png similarity index 100% rename from docs/guides/interactions/application-commands/slash-commands/images/oauth.png rename to docs/guides/int_basics/application-commands/slash-commands/images/oauth.png diff --git a/docs/guides/interactions/application-commands/slash-commands/images/settings1.png b/docs/guides/int_basics/application-commands/slash-commands/images/settings1.png similarity index 100% rename from docs/guides/interactions/application-commands/slash-commands/images/settings1.png rename to docs/guides/int_basics/application-commands/slash-commands/images/settings1.png diff --git a/docs/guides/interactions/application-commands/slash-commands/images/settings2.png b/docs/guides/int_basics/application-commands/slash-commands/images/settings2.png similarity index 100% rename from docs/guides/interactions/application-commands/slash-commands/images/settings2.png rename to docs/guides/int_basics/application-commands/slash-commands/images/settings2.png diff --git a/docs/guides/interactions/application-commands/slash-commands/images/settings3.png b/docs/guides/int_basics/application-commands/slash-commands/images/settings3.png similarity index 100% rename from docs/guides/interactions/application-commands/slash-commands/images/settings3.png rename to docs/guides/int_basics/application-commands/slash-commands/images/settings3.png diff --git a/docs/guides/interactions/application-commands/slash-commands/images/slashcommand1.png b/docs/guides/int_basics/application-commands/slash-commands/images/slashcommand1.png similarity index 100% rename from docs/guides/interactions/application-commands/slash-commands/images/slashcommand1.png rename to docs/guides/int_basics/application-commands/slash-commands/images/slashcommand1.png diff --git a/docs/guides/interactions/application-commands/slash-commands/images/slashcommand2.png b/docs/guides/int_basics/application-commands/slash-commands/images/slashcommand2.png similarity index 100% rename from docs/guides/interactions/application-commands/slash-commands/images/slashcommand2.png rename to docs/guides/int_basics/application-commands/slash-commands/images/slashcommand2.png diff --git a/docs/guides/interactions/application-commands/slash-commands/04-parameters.md b/docs/guides/int_basics/application-commands/slash-commands/parameters.md similarity index 100% rename from docs/guides/interactions/application-commands/slash-commands/04-parameters.md rename to docs/guides/int_basics/application-commands/slash-commands/parameters.md diff --git a/docs/guides/interactions/application-commands/slash-commands/05-responding-ephemerally.md b/docs/guides/int_basics/application-commands/slash-commands/responding-ephemerally.md similarity index 100% rename from docs/guides/interactions/application-commands/slash-commands/05-responding-ephemerally.md rename to docs/guides/int_basics/application-commands/slash-commands/responding-ephemerally.md diff --git a/docs/guides/interactions/application-commands/slash-commands/03-responding-to-slash-commands.md b/docs/guides/int_basics/application-commands/slash-commands/responding-to-slash-commands.md similarity index 100% rename from docs/guides/interactions/application-commands/slash-commands/03-responding-to-slash-commands.md rename to docs/guides/int_basics/application-commands/slash-commands/responding-to-slash-commands.md diff --git a/docs/guides/interactions/application-commands/slash-commands/06-subcommands.md b/docs/guides/int_basics/application-commands/slash-commands/subcommands.md similarity index 100% rename from docs/guides/interactions/application-commands/slash-commands/06-subcommands.md rename to docs/guides/int_basics/application-commands/slash-commands/subcommands.md diff --git a/docs/guides/interactions/intro.md b/docs/guides/int_basics/intro.md similarity index 100% rename from docs/guides/interactions/intro.md rename to docs/guides/int_basics/intro.md diff --git a/docs/guides/interactions/message-components/05-advanced.md b/docs/guides/int_basics/message-components/advanced.md similarity index 100% rename from docs/guides/interactions/message-components/05-advanced.md rename to docs/guides/int_basics/message-components/advanced.md diff --git a/docs/guides/interactions/message-components/03-buttons-in-depth.md b/docs/guides/int_basics/message-components/buttons-in-depth.md similarity index 100% rename from docs/guides/interactions/message-components/03-buttons-in-depth.md rename to docs/guides/int_basics/message-components/buttons-in-depth.md diff --git a/docs/guides/interactions/message-components/images/image1.png b/docs/guides/int_basics/message-components/images/image1.png similarity index 100% rename from docs/guides/interactions/message-components/images/image1.png rename to docs/guides/int_basics/message-components/images/image1.png diff --git a/docs/guides/interactions/message-components/images/image2.png b/docs/guides/int_basics/message-components/images/image2.png similarity index 100% rename from docs/guides/interactions/message-components/images/image2.png rename to docs/guides/int_basics/message-components/images/image2.png diff --git a/docs/guides/interactions/message-components/images/image3.png b/docs/guides/int_basics/message-components/images/image3.png similarity index 100% rename from docs/guides/interactions/message-components/images/image3.png rename to docs/guides/int_basics/message-components/images/image3.png diff --git a/docs/guides/interactions/message-components/images/image4.png b/docs/guides/int_basics/message-components/images/image4.png similarity index 100% rename from docs/guides/interactions/message-components/images/image4.png rename to docs/guides/int_basics/message-components/images/image4.png diff --git a/docs/guides/interactions/message-components/images/image5.png b/docs/guides/int_basics/message-components/images/image5.png similarity index 100% rename from docs/guides/interactions/message-components/images/image5.png rename to docs/guides/int_basics/message-components/images/image5.png diff --git a/docs/guides/interactions/message-components/images/image6.png b/docs/guides/int_basics/message-components/images/image6.png similarity index 100% rename from docs/guides/interactions/message-components/images/image6.png rename to docs/guides/int_basics/message-components/images/image6.png diff --git a/docs/guides/interactions/message-components/01-getting-started.md b/docs/guides/int_basics/message-components/intro.md similarity index 98% rename from docs/guides/interactions/message-components/01-getting-started.md rename to docs/guides/int_basics/message-components/intro.md index cd5eadd0a..cc22d54c5 100644 --- a/docs/guides/interactions/message-components/01-getting-started.md +++ b/docs/guides/int_basics/message-components/intro.md @@ -1,5 +1,5 @@ --- -uid: Guides.MessageComponents.GettingStarted +uid: Guides.MessageComponents.Intro title: Getting Started with Components --- diff --git a/docs/guides/interactions/message-components/02-responding-to-buttons.md b/docs/guides/int_basics/message-components/responding-to-buttons.md similarity index 100% rename from docs/guides/interactions/message-components/02-responding-to-buttons.md rename to docs/guides/int_basics/message-components/responding-to-buttons.md diff --git a/docs/guides/interactions/message-components/04-select-menus.md b/docs/guides/int_basics/message-components/select-menus.md similarity index 100% rename from docs/guides/interactions/message-components/04-select-menus.md rename to docs/guides/int_basics/message-components/select-menus.md diff --git a/docs/guides/int_framework/autocompletion.md b/docs/guides/int_framework/autocompletion.md new file mode 100644 index 000000000..834db2b4f --- /dev/null +++ b/docs/guides/int_framework/autocompletion.md @@ -0,0 +1,47 @@ +--- +uid: Guides.IntFw.AutoCompletion +title: Command Autocompletion +--- + +# AutocompleteHandlers + +[Autocompleters] provide a similar pattern to TypeConverters. +[Autocompleters] are cached, singleton services and they are used by the +Interaction Service to handle Autocomplete Interations targeted to a specific Slash Command parameter. + +To start using AutocompleteHandlers, use the `[AutocompleteAttribute(Type type)]` overload of the [AutocompleteAttribute]. +This will dynamically link the parameter to the [AutocompleteHandler] type. + +AutocompleteHandlers raise the `AutocompleteHandlerExecuted` event on execution. This event can be also used to create a post-execution logic, just like the `*CommandExecuted` events. + +## Creating AutocompleteHandlers + +A valid AutocompleteHandlers must inherit [AutocompleteHandler] base type and implement all of its abstract methods. + +### GenerateSuggestionsAsync() + +The Interactions Service uses this method to generate a response of an Autocomplete Interaction. +This method should return `AutocompletionResult.FromSuccess(IEnumerable)` to +display parameter suggestions to the user. If there are no suggestions to be presented to the user, you have two results: + +1. Returning the parameterless `AutocompletionResult.FromSuccess()` will display a "No options match your search." message to the user. +2. Returning `AutocompleteResult.FromError()` will make the Interaction Service **not** respond to the interaction, +consequently displaying the user a "Loading options failed." message. `AutocompletionResult.FromError()` is solely used for error handling purposes. Discord currently doesn't allow +you to display custom error messages. This result type will be directly returned to the `AutocompleteHandlerExecuted` method. + +## Resolving AutocompleteHandler Dependencies + +AutocompleteHandler dependencies are resolved using the same dependency injection +pattern as the Interaction Modules. +Property injection and constructor injection are both valid ways to get service dependencies. + +Because [AutocompleterHandlers] are constructed at service startup, +class dependencies are resolved only once. + +> [!NOTE] +> If you need to access per-request dependencies you can use the +> IServiceProvider parameter of the `GenerateSuggestionsAsync()` method. + +[AutoCompleteHandlers]: xref:Discord.Interactions.AutocompleteHandler +[AutoCompleteHandler]: xref:Discord.Interactions.AutocompleteHandler +[AutoCompleteAttribute]: diff --git a/docs/guides/int_framework/dependency-injection.md b/docs/guides/int_framework/dependency-injection.md new file mode 100644 index 000000000..31d001f4b --- /dev/null +++ b/docs/guides/int_framework/dependency-injection.md @@ -0,0 +1,13 @@ +--- +uid: Guides.IntFw.DI +title: Dependency Injection +--- + +# Dependency Injection + +Dependency injection in the Interaction Service is mostly based on that of the Text-based command service, +for which further information is found [here](xref:Guides.TextCommands.DI). + +> [!NOTE] +> The 2 are nearly identical, except for one detail: +> [Resolving Module Dependencies](xref:Guides.IntFw.Intro#resolving-module-dependencies) diff --git a/docs/guides/int_framework/intro.md b/docs/guides/int_framework/intro.md new file mode 100644 index 000000000..7dfd7ac6e --- /dev/null +++ b/docs/guides/int_framework/intro.md @@ -0,0 +1,353 @@ +--- +uid: Guides.IntFw.Intro +title: Introduction to the Interaction Service +--- + +# Getting Started + +The Interaction Service provides an attribute based framework for creating Discord Interaction handlers. + +To start using the Interaction Service, you need to create a service instance. +Optionally you can provide the [InteractionService] constructor with a +[InteractionServiceConfig] to change the services behaviour to suit your needs. + +```csharp +... +// _client here is DiscordSocketClient. +// A different approach to passing in a restclient is also possible. +var _interactionService = new InteractionService(_client.Rest); + +... +``` + +## Modules + +Attribute based Interaction handlers must be defined within a command module class. +Command modules are responsible for executing the Interaction handlers and providing them with the necessary execution info and helper functions. + +Command modules are transient objects. +A new module instance is created before a command execution starts then it will be disposed right after the method returns. + +Every module class must: + +- be public +- inherit [InteractionModuleBase] + +Optionally you can override the included : + +- OnModuleBuilding (executed after the module is built) +- BeforeExecute (executed before a command execution starts) +- AfterExecute (executed after a command execution concludes) + +methods to configure the modules behaviour. + +Every command module exposes a set of helper methods, namely: + +- `RespondAsync()` => Respond to the interaction +- `FollowupAsync()` => Create a followup message for an interaction +- `ReplyAsync()` => Send a message to the origin channel of the interaction +- `DeleteOriginalResponseAsync()` => Delete the original interaction response + +## Commands + +Valid **Interaction Commands** must comply with the following requirements: + +| | return type | max parameter count | allowed parameter types | attribute | +|-------------------------------|------------------------------|---------------------|-------------------------------|--------------------------| +|[Slash Command](#slash-commands)| `Task`/`Task` | 25 | any* | `[SlashCommand]` | +|[User Command](#user-commands) | `Task`/`Task` | 1 | Implementations of `IUser` | `[UserCommand]` | +|[Message Command](#message-commands)| `Task`/`Task` | 1 | Implementations of `IMessage` | `[MessageCommand]` | +|[Component Interaction Command](#component-interaction-commands)| `Task`/`Task` | inf | `string` or `string[]` | `[ComponentInteraction]` | +|[Autocomplete Command](#autocomplete-commands)| `Task`/`Task` | - | - | `[AutocompleteCommand]`| + +> [!NOTE] +> a `TypeConverter` that is capable of parsing type in question must be registered to the [InteractionService] instance. +> You should avoid using long running code in your command module. +> Depending on your setup, long running code may block the Gateway thread of your bot, interrupting its connection to Discord. + +## Slash Commands + +Slash Commands are created using the [SlashCommandAttribute]. +Every Slash Command must declare a name and a description. +You can check Discords **Application Command Naming Guidelines** +[here](https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-naming). + +[!code-csharp[Slash Command](samples/intro/slashcommand.cs)] + +### Parameters + +Slash Commands can have up to 25 method parameters. You must name your parameters in accordance with +[Discords Naming Guidelines](https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-naming). +[InteractionService] also features a pascal casing seperator for formatting parameter names with +pascal casing into Discord compliant parameter names('parameterName' => 'parameter-name'). +By default, your methods can feature the following parameter types: + +- Implementations of [IUser] +- Implementations of [IChannel] +- Implementations of [IRole] +- Implementations of [IMentionable] +- `string` +- `float`, `double`, `decimal` +- `bool` +- `char` +- `sbyte`, `byte` +- `int16`, `int32`, `int64` +- `uint16`, `uint32`, `uint64` +- `enum` (Values are registered as multiple choice options and are enforced by Discord. Use `[HideAttribute]` on enum values to prevent them from getting registered.) +- `DateTime` +- `TimeSpan` + +--- + +**You can use more specialized implementations of [IChannel] to restrict the allowed channel types for a channel type option.* +| interface | Channel Type | +|---------------------|-------------------------------| +| `IStageChannel` | Stage Channels | +| `IVoiceChannel` | Voice Channels | +| `IDMChannel` | DM Channels | +| `IGroupChannel` | Group Channels | +| `ICategory Channel` | Category Channels | +| `INewsChannel` | News Channels | +| `IThreadChannel` | Public, Private, News Threads | +| `ITextChannel` | Text Channels | + +--- + +#### Optional Parameters + +Parameters with default values (ie. `int count = 0`) will be displayed as optional parameters on Discord Client. + +#### Parameter Summary + +By using the [SummaryAttribute] you can customize the displayed name and description of a parameter + +[!code-csharp[Summary Attribute](samples/intro/summaryattribute.cs)] + +#### Parameter Choices + +[ChoiceAttribute] can be used to add choices to a parameter. + +[!code-csharp[Choice Attribute](samples/intro/groupattribute.cs)] + +This Slash Command will be displayed exactly the same as the previous example. + +#### Channel Types + +Channel types for an [IChannel] parameter can also be restricted using the [ChannelTypesAttribute]. + +[!code-csharp[Channel Attribute](samples/intro/channelattribute.cs)] + +In this case, user can only input Stage Channels and Text Channels to this parameter. + +#### Min/Max Value + +You can specify the permitted max/min value for a number type parameter using the [MaxValueAttribute] and [MinValueAttribute]. + +## User Commands + +A valid User Command must have the following structure: + +[!code-csharp[User Command](samples/intro/usercommand.cs)] + +> [!WARNING] +> User commands can only have one parameter and its type must be an implementation of [IUser]. + +## Message Commands + +A valid Message Command must have the following structure: + +[!code-csharp[Message Command](samples/intro/messagecommand.cs)] + +> [!WARNING] +> Message commands can only have one parameter and its type must be an implementation of [IMessage]. + +## Component Interaction Commands + +Component Interaction Commands are used to handle interactions that originate from **Discord Message Component**s. +This pattern is particularly useful if you will be reusing a set a **Custom ID**s. + +Component Interaction Commands support wild card matching, +by default `*` character can be used to create a wild card pattern. +Interaction Service will use lazy matching to capture the words corresponding to the wild card character. +And the captured words will be passed on to the command method in the same order they were captured. + +[!code-csharp[Button](samples/intro/button.cs)] + +You may use as many wild card characters as you want. + +> [!NOTE] +> If Interaction Service recieves a component interaction with **player:play,rickroll** custom id, +> `op` will be *play* and `name` will be *rickroll* + +## Select Menus + +Unlike button interactions, select menu interactions also contain the values of the selected menu items. +In this case, you should structure your method to accept a string array. + +[!code-csharp[Dropdown](samples/intro/dropdown.cs)] + +> [!NOTE] +> Wildcards may also be used to match a select menu ID, +> though keep in mind that the array containing the select menu values should be the last parameter. + +## Autocomplete Commands + +Autocomplete commands must be parameterless methods. A valid Autocomplete command must have the following structure: + +[!code-csharp[Autocomplete Command](samples/intro/autocomplete.cs)] + +Alternatively, you can use the [AutocompleteHandlers] to simplify this workflow. + +## Interaction Context + +Every command module provides its commands with an execution context. +This context property includes general information about the underlying interaction that triggered the command execution. +The base command context. + +You can design your modules to work with different implementation types of [IInteractionContext]. +To achieve this, make sure your module classes inherit from the generic variant of the [InteractionModuleBase]. + +> [!NOTE] +> Context type must be consistent throughout the project, or you will run into issues during runtime. + +The [InteractionService] ships with 4 different kinds of [InteractionContext]: + +1. [InteractionContext]]: A bare-bones execution context consisting of only implementation neutral interfaces +2. [SocketInteractionContext]: An execution context for use with [DiscordSocketClient]. Socket entities are exposed in this context without the need of casting them. +3. [ShardedInteractionContext]: [DiscordShardedClient] variant of the [SocketInteractionContext] +4. [RestInteractionContext]: An execution context designed to be used with a [DiscordRestClient] and webhook based interactions pattern + +You can create custom Interaction Contexts by implementing the [IInteractionContext] interface. + +One problem with using the concrete type InteractionContexts is that you cannot access the information that is specific to different interaction types without casting. Concrete type interaction contexts are great for creating shared interaction modules but you can also use the generic variants of the built-in interaction contexts to create interaction specific interaction modules. + +> [!INFO] +> Message component interactions have access to a special method called `UpdateAsync()` to update the body of the method the interaction originated from. +> Normally this wouldn't be accessable without casting the `Context.Interaction`. + +[!code-csharp[Context Example](samples/intro/context.cs)] + +## Loading Modules + +[InteractionService] can automatically discover and load modules that inherit [InteractionModuleBase] from an `Assembly`. +Call `InteractionService.AddModulesAsync()` to use this functionality. + +> [!NOTE] +> You can also manually add Interaction modules using the `InteractionService.AddModuleAsync()` +> method by providing the module type you want to load. + +## Resolving Module Dependencies + +Module dependencies are resolved using the Constructor Injection and Property Injection patterns. +Meaning, the constructor parameters and public settable properties of a module will be assigned using the `IServiceProvider`. +For more information on dependency injection, read the [DependencyInjection] guides. + +> [!NOTE] +> On every command execution, module dependencies are resolved using a new service scope which allows you to utilize scoped service instances, just like in Asp.Net. +> Including the precondition checks, every module method is executed using the same service scope and service scopes are disposed right after the `AfterExecute` method returns. + +## Module Groups + +Module groups allow you to create sub-commands and sub-commands groups. +By nesting commands inside a module that is tagged with [GroupAttribute] you can create prefixed commands. + +> [!WARNING] +> Although creating nested module stuctures are allowed, +> you are not permitted to use more than 2 [GroupAttribute]'s in module hierarchy. + +## Executing Commands + +Any of the following socket events can be used to execute commands: + +- [InteractionCreated] +- [ButtonExecuted] +- [SelectMenuExecuted] +- [AutocompleteExecuted] +- [UserCommandExecuted] +- [MessageCommandExecuted] + +Commands can be either executed on the gateway thread or on a seperate thread from the thread pool. This behaviour can be configured by changing the *RunMode* property of `InteractionServiceConfig` or by setting the *runMode* parameter of a command attribute. + +You can also configure the way [InteractionService] executes the commands. +By default, commands are executed using `ConstructorInfo.Invoke()` to create module instances and +`MethodInfo.Invoke()` method for executing the method bodies. +By setting, `InteractionServiceConfig.UseCompiledLambda` to `true`, you can make [InteractionService] create module instances and execute commands using +*Compiled Lambda* expressions. This cuts down on command execution time but it might add some memory overhead. + +Time it takes to create a module instance and execute a `Task.Delay(0)` method using the Reflection methods compared to Compiled Lambda expressions: + +| Method | Mean | Error | StdDev | +|----------------- |----------:|---------:|---------:| +| ReflectionInvoke | 225.93 ns | 4.522 ns | 7.040 ns | +| CompiledLambda | 48.79 ns | 0.981 ns | 1.276 ns | + +## Registering Commands to Discord + +Application commands loaded to the Interaction Service can be registered to Discord using a number of different methods. +In most cases `RegisterCommandsGloballyAsync()` and `RegisterCommandsToGuildAsync()` are the methods to use. +Command registration methods can only be used after the gateway client is ready or the rest client is logged in. + +[!code-csharp[Registering Commands Example](samples/intro/registering.cs)] + +Methods like `AddModulesToGuildAsync()`, `AddCommandsToGuildAsync()`, `AddModulesGloballyAsync()` and `AddCommandsGloballyAsync()` +can be used to register cherry picked modules or commands to global/guild scopes. + +> [!NOTE] +> In debug environment, since Global commands can take up to 1 hour to register/update, +> it is adviced to register your commands to a test guild for your changes to take effect immediately. +> You can use preprocessor directives to create a simple logic for registering commands as seen above + +## Interaction Utility + +Interaction Service ships with a static `InteractionUtiliy` +class which contains some helper methods to asynchronously waiting for Discord Interactions. +For instance, `WaitForInteractionAsync()` method allows you to wait for an Interaction for a given amount of time. +This method returns the first encountered Interaction that satisfies the provided predicate. + +> [!WARNING] +> If you are running the Interaction Service on `RunMode.Sync` you should avoid using this method in your commands, +> as it will block the gateway thread and interrupt your bots connection. + +## Webhook Based Interactions + +Instead of using the gateway to recieve Discord Interactions, Discord allows you to recieve Interaction events over Webhooks. +Interaction Service also supports this Interaction type but to be able to +respond to the Interactions within your command modules you need to perform the following: + +- Make your modules inherit `RestInteractionModuleBase` +- Set the `ResponseCallback` property of `InteractionServiceConfig` so that the `ResponseCallback` +delegate can be used to create HTTP responses from a deserialized json object string. +- Use the interaction endpoints of the module base instead of the interaction object (ie. `RespondAsync()`, `FollowupAsync()`...). + +[AutocompleteHandlers]: xref:Guides.IntFw.AutoCompletion +[DependencyInjection]: xref:Guides.TextCommands.DI + +[GroupAttribute]: xref:Discord.Interactions.GroupAttribute +[InteractionService]: xref:Discord.Interactions.InteractionService +[InteractionServiceConfig]: xref:Discord.Interactions.InteractionServiceConfig +[InteractionModuleBase]: xref:Discord.Interactions.InteractionModuleBase +[SlashCommandAttribute]: xref:Discord.Interactions.SlashCommandAttribute +[InteractionCreated]: xref:Discord.WebSocket.BaseSocketClient +[ButtonExecuted]: xref:Discord.WebSocket.BaseSocketClient +[SelectMenuExecuted]: xref:Discord.WebSocket.BaseSocketClient +[AutocompleteExecuted]: xref:Discord.WebSocket.BaseSocketClient +[UserCommandExecuted]: xref:Discord.WebSocket.BaseSocketClient +[MessageCommandExecuted]: xref:Discord.WebSocket.BaseSocketClient +[DiscordSocketClient]: xref:Discord.WebSocket.DiscordSocketClient +[DiscordRestClient]: xref:Discord.Rest.DiscordRestClient +[SocketInteractionContext]: xref:Discord.Interactions.SocketInteractionContext +[ShardedInteractionContext]: xref:Discord.Interactions.ShardedInteractionContext +[InteractionContext]: xref:Discord.Interactions.InteractionContext +[IInteractionContect]: xref:Discord.Interactions.IInteractionContext +[RestInteractionContext]: xref:Discord.Rest.RestInteractionContext +[SummaryAttribute]: xref:Discord.Interactions.SummaryAttribute +[ChoiceAttribute]: xref:Discord.Interactions.ChoiceAttribute +[ChannelTypesAttribute]: xref:Discord.Interactions.ChannelTypesAttribute +[MaxValueAttribute]: xref:Discord.Interactions.MaxValueAttribute +[MinValueAttribute]: xref:Discord.Interactions.MinValueAttribute + +[IChannel]: xref:Discord.IChannel +[IRole]: xref:Discord.IRole +[IUser]: xref:Discord.IUser +[IMessage]: xref:Discord.IMessage +[IMentionable]: xref:Discord.IMentionable diff --git a/docs/guides/int_framework/post-execution.md b/docs/guides/int_framework/post-execution.md new file mode 100644 index 000000000..c68d14fa5 --- /dev/null +++ b/docs/guides/int_framework/post-execution.md @@ -0,0 +1,69 @@ +--- +uid: Guides.IntFw.PostExecution +title: Post-Command execution +--- + +# Post-Execution Logic + +Interaction Service uses [IResult] to provide information about the state of command execution. +These can be used to log internal exceptions or provide some insight to the command user. + +If you are running your commands using `RunMode.Sync` these command results can be retrieved from +the return value of [InteractionService.ExecuteCommandAsync] method or by +registering delegates to Interaction Service events. + +If you are using the `RunMode.Async` to run your commands, +you must use the Interaction Service events to get the execution results. When using `RunMode.Async`, +[InteractionService.ExecuteCommandAsync] will always return a successful result. + +[InteractionService.ExecuteCommandAsync]: xref:Discord.Interactions.InteractionService.ExecuteCommandAsync* + +## Results + +Interaction Result come in a handful of different flavours: + +1. [AutocompletionResult]: returned by Autocompleters +2. [ExecuteResult]: contains the result of method body execution process +3. [PreconditionGroupResult]: returned by Precondition groups +4. [PreconditionResult]: returned by preconditions +5. [RuntimeResult]: a user implementable result for returning user defined results +6. [SearchResult]: returned by command lookup map +7. [TypeConverterResult]: returned by TypeConverters + +> [!NOTE] +> You can either use the [IResult.Error] property of an Interaction result or create type check for the +> afformentioned result types to branch out your post-execution logic to handle different situations. + + +[AutocompletionResult]: xref:Discord.AutocompleteResult +[ExecuteResult]: xref:Discord.Interactions.ExecuteResult +[PreconditionGroupResult]: xref:Discord.Interactions.PreconditionGroupResult +[PreconditionResult]: xref:Discord.Interactions.PreconditionResult +[SearchResult]: xref:Discord.Interactions.SearchResult`1 +[TypeConverterResult]: xref:Discord.Interactions.TypeConverterResult +[IResult.Error]: xref:Discord.Interactions.IResult.Error* + +## CommandExecuted Events + +Every time a command gets executed, Interaction Service raises a `CommandExecuted` event. +These events can be used to create a post-execution pipeline. + +[!code-csharp[Error Review](samples/postexecution/error_review.cs) + +## Log Event + +InteractionService regularly outputs information about the occuring events to keep the developer informed. + +## Runtime Result + +Interaction commands allow you to return `Task` to pass on additional information about the command execution +process back to your post-execution logic. + +Custom [RuntimeResult] classes can be created by inheriting the base [RuntimeResult] class. + +If command execution process reaches the method body of the command and no exceptions are thrown during +the execution of the method body, [RuntimeResult] returned by your command will be accessible by casting/type-checking the +[IResult] parameter of the `CommandExecuted` event delegate. + +[RuntimeResult]: xref:Discord.Interactions.RuntimeResult +[IResult]: xref:Discord.Interactions.IResult diff --git a/docs/guides/int_framework/preconditions.md b/docs/guides/int_framework/preconditions.md new file mode 100644 index 000000000..75e572798 --- /dev/null +++ b/docs/guides/int_framework/preconditions.md @@ -0,0 +1,77 @@ +--- +uid: Guides.IntFw.Preconditions +title: Preconditions +--- + +# Preconditions + +Precondition logic is the same as it is for Text-based commands. +A list of attributes and usage is still given for people who are new to both. + +There are two types of Preconditions you can use: + +* [PreconditionAttribute] can be applied to Modules, Groups, or Commands. +* [ParameterPreconditionAttribute] can be applied to Parameters. + +You may visit their respective API documentation to find out more. + +[PreconditionAttribute]: xref:Discord.Interactions.PreconditionAttribute +[ParameterPreconditionAttribute]: xref:Discord.Interactions.ParameterPreconditionAttribute + +## Bundled Preconditions + +@Discord.Interactions ships with several bundled Preconditions for you +to use. + +* @Discord.Interactions.RequireContextAttribute +* @Discord.Interactions.RequireOwnerAttribute +* @Discord.Interactions.RequireBotPermissionAttribute +* @Discord.Interactions.RequireUserPermissionAttribute +* @Discord.Interactions.RequireNsfwAttribute +* @Discord.Interactions.RequireRoleAttribute + +## Using Preconditions + +To use a precondition, simply apply any valid precondition candidate to +a command method signature as an attribute. + +[!code-csharp[Precondition usage](samples/preconditions/precondition_usage.cs)] + +## ORing Preconditions + +When writing commands, you may want to allow some of them to be +executed when only some of the precondition checks are passed. + +This is where the [Group] property of a precondition attribute comes in +handy. By assigning two or more preconditions to a group, the command +system will allow the command to be executed when one of the +precondition passes. + +### Example - ORing Preconditions + +[!code-csharp[OR Precondition](samples/preconditions/group_precondition.cs)] + +[Group]: xref:Discord.Commands.PreconditionAttribute.Group + +## Custom Preconditions + +To write your own Precondition, create a new class that inherits from +either [PreconditionAttribute] or [ParameterPreconditionAttribute] +depending on your use. + +In order for your Precondition to function, you will need to override +the [CheckPermissionsAsync] method. + +If the context meets the required parameters, return +[PreconditionResult.FromSuccess], otherwise return +[PreconditionResult.FromError] and include an error message if +necessary. + +> [!NOTE] +> Visual Studio can help you implement missing members +> from the abstract class by using the "Implement Abstract Class" +> IntelliSense hint. + +[CheckPermissionsAsync]: xref:Discord.Commands.PreconditionAttribute.CheckPermissionsAsync* +[PreconditionResult.FromSuccess]: xref:Discord.Commands.PreconditionResult.FromSuccess* +[PreconditionResult.FromError]: xref:Discord.Commands.PreconditionResult.FromError* diff --git a/docs/guides/int_framework/samples/intro/autocomplete.cs b/docs/guides/int_framework/samples/intro/autocomplete.cs new file mode 100644 index 000000000..f93c56eaa --- /dev/null +++ b/docs/guides/int_framework/samples/intro/autocomplete.cs @@ -0,0 +1,9 @@ +[AutocompleteCommand("parameter_name", "command_name")] +public async Task Autocomplete() +{ + IEnumerable results; + + ... + + await (Context.Interaction as SocketAutocompleteInteraction).RespondAsync(results); +} diff --git a/docs/guides/int_framework/samples/intro/button.cs b/docs/guides/int_framework/samples/intro/button.cs new file mode 100644 index 000000000..2b04d081b --- /dev/null +++ b/docs/guides/int_framework/samples/intro/button.cs @@ -0,0 +1,5 @@ +[ComponentInteraction("player:*,*")] +public async Task Play(string op, string name) +{ + ... +} diff --git a/docs/guides/int_framework/samples/intro/channelattribute.cs b/docs/guides/int_framework/samples/intro/channelattribute.cs new file mode 100644 index 000000000..09eb0275f --- /dev/null +++ b/docs/guides/int_framework/samples/intro/channelattribute.cs @@ -0,0 +1,5 @@ +[SlashCommand("name", "Description")] +public async Task Command([ChannelTypes(ChannelType.Stage, ChannelType.Text)] IChannel channel) +{ + ... +} diff --git a/docs/guides/int_framework/samples/intro/context.cs b/docs/guides/int_framework/samples/intro/context.cs new file mode 100644 index 000000000..5976ffc5c --- /dev/null +++ b/docs/guides/int_framework/samples/intro/context.cs @@ -0,0 +1,14 @@ +discordClient.ButtonExecuted += async (interaction) => +{ + var ctx = new SocketInteractionContext(discordClient, interaction); + await _interactionService.ExecuteAsync(ctx, serviceProvider); +}; + +public class MessageComponentModule : InteractionModuleBase> +{ + [ComponentInteraction("custom_id")] + public async Command() + { + Context.Interaction.UpdateAsync(...); + } +} diff --git a/docs/guides/int_framework/samples/intro/dropdown.cs b/docs/guides/int_framework/samples/intro/dropdown.cs new file mode 100644 index 000000000..2b0af477f --- /dev/null +++ b/docs/guides/int_framework/samples/intro/dropdown.cs @@ -0,0 +1,11 @@ +[ComponentInteraction("role_selection")] +public async Task RoleSelection(string[] selectedRoles) +{ + ... +} + +[ComponentInteraction("role_selection_*")] +public async Task RoleSelection(string id, string[] selectedRoles) +{ + ... +} diff --git a/docs/guides/int_framework/samples/intro/groupattribute.cs b/docs/guides/int_framework/samples/intro/groupattribute.cs new file mode 100644 index 000000000..86a492c31 --- /dev/null +++ b/docs/guides/int_framework/samples/intro/groupattribute.cs @@ -0,0 +1,21 @@ +[SlashCommand("blep", "Send a random adorable animal photo")] +public async Task Blep([Choice("Dog", "dog"), Choice("Cat", "cat"), Choice("Penguin", "penguin")] string animal) +{ + ... +} + +// In most cases, you can use an enum to replace the seperate choice attributes in a command. + +public enum Animal +{ + Cat, + Dog, + Penguin +} + +[SlashCommand("blep", "Send a random adorable animal photo")] +public async Task Blep(Animal animal) +{ + ... +} +``` diff --git a/docs/guides/int_framework/samples/intro/messagecommand.cs b/docs/guides/int_framework/samples/intro/messagecommand.cs new file mode 100644 index 000000000..5cb0c4b60 --- /dev/null +++ b/docs/guides/int_framework/samples/intro/messagecommand.cs @@ -0,0 +1,5 @@ +[MessageCommand("Bookmark")] +public async Task Bookmark(IMessage msg) +{ + ... +} diff --git a/docs/guides/int_framework/samples/intro/registering.cs b/docs/guides/int_framework/samples/intro/registering.cs new file mode 100644 index 000000000..f603df7bf --- /dev/null +++ b/docs/guides/int_framework/samples/intro/registering.cs @@ -0,0 +1,5 @@ +#if DEBUG + await interactionService.RegisterCommandsToGuildAsync(); +#else + await interactionService.RegisterCommandsGloballyAsync(); +#endif diff --git a/docs/guides/int_framework/samples/intro/slashcommand.cs b/docs/guides/int_framework/samples/intro/slashcommand.cs new file mode 100644 index 000000000..5f4f7fb0f --- /dev/null +++ b/docs/guides/int_framework/samples/intro/slashcommand.cs @@ -0,0 +1,5 @@ +[SlashCommand("echo", "Echo an input")] +public async Task Echo(string input) +{ + await RespondAsync(input); +} diff --git a/docs/guides/int_framework/samples/intro/summaryattribute.cs b/docs/guides/int_framework/samples/intro/summaryattribute.cs new file mode 100644 index 000000000..8a9b7d3e1 --- /dev/null +++ b/docs/guides/int_framework/samples/intro/summaryattribute.cs @@ -0,0 +1 @@ +[Summary(description: "this is a parameter description")] string input diff --git a/docs/guides/int_framework/samples/intro/usercommand.cs b/docs/guides/int_framework/samples/intro/usercommand.cs new file mode 100644 index 000000000..02c4a1e63 --- /dev/null +++ b/docs/guides/int_framework/samples/intro/usercommand.cs @@ -0,0 +1,5 @@ +[UserCommand("Say Hello")] +public async Task SayHello(IUser user) +{ + ... +} diff --git a/docs/guides/int_framework/samples/postexecution/error_review.cs b/docs/guides/int_framework/samples/postexecution/error_review.cs new file mode 100644 index 000000000..dd397b2c9 --- /dev/null +++ b/docs/guides/int_framework/samples/postexecution/error_review.cs @@ -0,0 +1,28 @@ +interactionService.SlashCommandExecuted += SlashCommandExecuted; + +async Task SlashCommandExecuted(SlashCommandInfo arg1, Discord.IInteractionContext arg2, IResult arg3) +{ + if (!arg3.IsSuccess) + { + switch (arg3.Error) + { + case InteractionCommandError.UnmetPrecondition: + await arg2.Interaction.RespondAsync($"Unmet Precondition: {arg3.ErrorReason}"); + break; + case InteractionCommandError.UnknownCommand: + await arg2.Interaction.RespondAsync("Unknown command"); + break; + case InteractionCommandError.BadArgs: + await arg2.Interaction.RespondAsync("Invalid number or arguments"); + break; + case InteractionCommandError.Exception: + await arg2.Interaction.RespondAsync("Command exception:{arg3.ErrorReason}"); + break; + case InteractionCommandError.Unsuccessful: + await arg2.Interaction.RespondAsync("Command could not be executed"); + break; + default: + break; + } + } +} diff --git a/docs/guides/commands/samples/preconditions/group_precondition.cs b/docs/guides/int_framework/samples/preconditions/group_precondition.cs similarity index 100% rename from docs/guides/commands/samples/preconditions/group_precondition.cs rename to docs/guides/int_framework/samples/preconditions/group_precondition.cs diff --git a/docs/guides/int_framework/samples/preconditions/precondition_usage.cs b/docs/guides/int_framework/samples/preconditions/precondition_usage.cs new file mode 100644 index 000000000..bea2918dc --- /dev/null +++ b/docs/guides/int_framework/samples/preconditions/precondition_usage.cs @@ -0,0 +1,3 @@ +[RequireOwner] +[SlashCommand("hi")] +public Task SayHiAsync() => RespondAsync("hello owner!"); diff --git a/docs/guides/int_framework/samples/typeconverters/enum_converter.cs b/docs/guides/int_framework/samples/typeconverters/enum_converter.cs new file mode 100644 index 000000000..6e1b9ded6 --- /dev/null +++ b/docs/guides/int_framework/samples/typeconverters/enum_converter.cs @@ -0,0 +1,30 @@ +internal sealed class EnumConverter : TypeConverter where T : struct, Enum +{ + public override ApplicationCommandOptionType GetDiscordType() => ApplicationCommandOptionType.String; + + public override Task ReadAsync(IInteractionCommandContext context, SocketSlashCommandDataOption option, IServiceProvider services) + { + if (Enum.TryParse((string)option.Value, out var result)) + return Task.FromResult(TypeConverterResult.FromSuccess(result)); + else + return Task.FromResult(TypeConverterResult.FromError(InteractionCommandError.ConvertFailed, $"Value {option.Value} cannot be converted to {nameof(T)}")); + } + + public override void Write(ApplicationCommandOptionProperties properties, IParameterInfo parameterInfo) + { + var names = Enum.GetNames(typeof(T)); + if (names.Length <= 25) + { + var choices = new List(); + + foreach (var name in names) + choices.Add(new ApplicationCommandOptionChoiceProperties + { + Name = name, + Value = name + }); + + properties.Choices = choices; + } + } +} diff --git a/docs/guides/int_framework/typeconverters.md b/docs/guides/int_framework/typeconverters.md new file mode 100644 index 000000000..96bdcb906 --- /dev/null +++ b/docs/guides/int_framework/typeconverters.md @@ -0,0 +1,118 @@ +--- +uid: Guides.IntFw.TypeConverters +title: Parameter Type Converters +--- + +# TypeConverters + +[TypeConverters] are responsible for registering command parameters to Discord and parsing the user inputs into method parameters. + +By default, TypeConverters for the following types are provided with @Discord.Interactions library. + +- Implementations of [IUser] +- Implementations of [IChannel] +- Implementations of [IRole] +- Implementations of [IMentionable] +- `string` +- `float`, `double`, `decimal` +- `bool` +- `char` +- `sbyte`, `byte` +- `int16`, `int32`, `int64` +- `uint16`, `uint32`, `uint64` +- `enum` +- `DateTime` +- `TimeSpan` + +## Creating TypeConverters + +Depending on your needs, there are two types of TypeConverters you can create: + +- Concrete type +- Generic type + +A valid converter must inherit [TypeConverter] base type. And override the abstract base methods. + +### CanConvertTo() Method + +This method is used by Interaction Service to search for alternative Type Converters. + +Interaction Services determines the most suitable [TypeConverter] for a parameter type in the following order: + +1. It searches for a [TypeConverter] that is registered to specifically target that parameter type +2. It searches for a [TypeConverter] that returns `true` when its `CanConvertTo()` method is invoked for thaty parameter type. +3. It searches for a generic `TypeConverter` with a matching type constraint. If there are more multiple matches, +the one whose type constraint is the most specialized will be chosen. + +> [!NOTE} +> Alternatively, you can use the generic variant (`TypeConverter`) of the +> [TypeConverter] base class which implements the following method body for `CanConvertTo()` method + +```csharp +public sealed override bool CanConvertTo (Type type) => + typeof(T).IsAssignableFrom(type); +``` + +### GetDiscordType() Method + +This method is used by [InteractionService] to determine the +[Discord Application Command Option type](https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-option-type) +of a parameter type. + +### ReadAsync() Method + +This method is used by [InteractionService] to parse the user input. +This method should return @Discord.Interactions.TypeConverterResult.FromSuccess* if the parsing operation is successful, +otherwise it should return @Discord.Interactions.TypeConverterResult.FromError* . +The inner logic of this method is totally up to you, +however you should avoid using long running code. + +### Write() Method + +This method is used to configure the **Discord Application Command Option** before it gets registered to Discord. +Command Option is configured by modifying the `ApplicationCommandOptionProperties` instance. + +> [!WARNING] +> The default parameter building pipeline is isolated and will not be disturbed by the [TypeConverter] workflow. +> But changes made in this method will override the values generated by the +> [InteractionService] for a **Discord Application Command Option**. + +## Example Enum TypeConverter + +[!code-csharp[Enum Converter](samples/typeconverters/enum_converter.cs)] + +> [!IMPORTANT] +> TypeConverters must be registered prior to module discovery. +> If Interaction Service encounters a parameter type that doesn't belong to any of the +> registered [TypeConverters] during this phase, it will throw an exception. + +## Concrete TypeConverters + +Registering Concrete TypeConverters are as simple as creating an instance of your custom converter and invoking `AddTypeConverter()` method. + +```csharp +interactionService.AddTypeConverter(new StringArrayConverter()); +``` + +## Generic TypeConverters + +To register a generic `TypeConverter`, you need to invoke the `AddGenericTypeConverter()` method of the Interaction Service class. +You need to pass the type of your `TypeConverter` and a target base type to this method. + +For instance, to register the previously mentioned enum converter the following can be used: + +```csharp +interactionService.AddGenericTypeConverter(typeof(EnumConverter<>)); +``` + +Interaction service checks if the target base type satisfies the type constraints of the Generic `TypeConverter` class. + +> [!NOTE] +> Dependencies of Generic TypeConverters are also resolved using the Dependency Injection pattern. + +[TypeConverter]: xref:Discord.Interactions.TypeConverter +[InteractionService]: xref:Discord.Interactions.InteractionService +[IChannel]: xref:Discord.IChannel +[IRole]: xref:Discord.IRole +[IUser]: xref:Discord.IUser +[IMentionable]: xref:Discord.IMentionable diff --git a/docs/guides/interactions/application-commands/01-getting-started.md b/docs/guides/interactions/application-commands/01-getting-started.md deleted file mode 100644 index fc8c8fe30..000000000 --- a/docs/guides/interactions/application-commands/01-getting-started.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -uid: Guides.SlashCommands.Intro -title: Introduction to slash commands ---- - - -# Getting started with application commands. - -Welcome! This guide will show you how to use application commands. - -## What is an application command? - -Application commands consist of three different types. Slash commands, context menu User commands and context menu Message commands. -Slash commands are made up of a name, description, and a block of options, which you can think of like arguments to a function. The name and description help users find your command among many others, and the options validate user input as they fill out your command. -Message and User commands are only a name, to the user. So try to make the name descriptive. They're accessed by right clicking (or long press, on mobile) a user or a message, respectively. - -All three varieties of application commands have both Global and Guild variants. Your global commands are available in every guild that adds your application. You can also make commands for a specific guild; they're only available in that guild. The User and Message commands are more limited in quantity than the slash commands. For specifics, check out their respective guide pages. - -An Interaction is the message that your application receives when a user uses a command. It includes the values that the user submitted, as well as some metadata about this particular instance of the command being used: the guild_id, channel_id, member and other fields. You can find all the values in our data models. - -## Authorizing your bot for application commands - -There is a new special OAuth2 scope for applications called `applications.commands`. In order to make Application Commands work within a guild, the guild must authorize your application with the `applications.commands` scope. The bot scope is not enough. - -Head over to your discord applications OAuth2 screen and make sure to select the `application.commands` scope. - -![OAuth2 scoping](slash-commands/images/oauth.png) - -From there you can then use the link to add your bot to a server. - -> [!NOTE] -> In order for users in your guild to use your slash commands, they need to have the "Use Slash Command" permission on the guild. diff --git a/docs/guides/interactions_framework/autocompleters.md b/docs/guides/interactions_framework/autocompleters.md deleted file mode 100644 index 9f84ace75..000000000 --- a/docs/guides/interactions_framework/autocompleters.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -uid: Guides.InteractionsFramework.Autocompleters -title: Autocompleters ---- - -# Autocompleters - -Autocompleters provide a similar pattern to TypeConverters. Autocompleters are cached, singleton services and they are used by the Interaction Service to handle Autocomplete Interations targeted to a specific Slash Command parameter. - -To start using Autocompleters, use the `[AutocompleteAttribute(Type autocompleterType)]` overload of the `[AutocompleteAttribute]`. This will dynamically link the parameter to the Autocompleter type. - -## Creating Autocompleters - -A valid Autocompleter must inherit `AutocompleteHandler` base type and implement all of its abstract methods. - -### GenerateSuggestionsAsync() - -Interactions Service uses this method to generate a response to a Autocomplete Interaction. This method should return `AutocompletionResult.FromSuccess(IEnumerable)` to display parameter sugesstions to the user. If there are no suggestions to be presented to the user, you have two options: - -1. Returning the parameterless `AutocompletionResult.FromSuccess()` will display "No options match your search." message to the user. -2. Returning `AutocompleteResult.FromError()` will make the Interaction Service not respond to the interation, consequently displaying the user "Loading options failed." message. - -## Resolving Autocompleter Dependencies - -Autocompleter dependencies are resolved using the same dependency injection pattern as the Interaction Modules. Property injection and constructor injection are both valid ways to get service dependencies. - -Because Autocompleters are constructed at service startup, class dependencies are resolved only once. If you need to access per-request dependencies you can use the IServiceProvider parameter of the `GenerateSuggestionsAsync()` method. diff --git a/docs/guides/interactions_framework/dependency-injection.md b/docs/guides/interactions_framework/dependency-injection.md deleted file mode 100644 index bed58e1c3..000000000 --- a/docs/guides/interactions_framework/dependency-injection.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -uid: Guides.InteractionsFramework.DependencyInjection -title: Dependency Injection ---- - -# Dependency Injection - -Interaction Service uses dependency injection to perform most of its operations. This way, you can access service dependencies throughout the framework. - -## Setup - -1. Create a `Microsoft.Extensions.DependencyInjection.ServiceCollection`. -2. Add the dependencies you wish to use in the modules. -3. Build a `IServiceProvider` using the `BuildServiceProvider()` method of the `ServiceCollection`. -4. Pass the `IServiceProvider` to `AddModulesAsync()`, `AddModuleAsync()` and `ExecuteAsync()` methods. - -## Accessing the Dependencies - -Services of a `IServiceProvider` can be accessed using *Contructor Injection* and *Property Injection*. - -Interaction Service will populate the constructor parameters using the provided `IServiceProvider`. Any public settable class Property will also be populated in the same manner. - -## Service Scopes - -Interaction Service has built-in support for scoped service types. Scoped lifetime services are instantiated once per command execution. Including the Preconditon checks, every module operation is executed within a single service scope (which is sepearate from the global service scope). - -> For more in-depth information about service lifetimes check out [Microsoft Docs](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-5.0#service-lifetimes-1). diff --git a/docs/guides/interactions_framework/intro.md b/docs/guides/interactions_framework/intro.md deleted file mode 100644 index f240eddd0..000000000 --- a/docs/guides/interactions_framework/intro.md +++ /dev/null @@ -1,360 +0,0 @@ ---- -uid: Guides.InteractionsFramework.Intro -title: Introduction to the Interaction Framework ---- - -# Getting Started - -Interaction Service provides an attribute based framework for creating Discord Interaction handlers. - -To start using the Interaction Service, you need to create a service instance. Optionally you can provide the `InterctionService` constructor with a `InteractionServiceConfig` to change the services behaviour to suit your needs. - -```csharp -... - -var commands = new InteractionService(discord); - -... -``` - -## Modules - -Attribute based Interaction handlers must be defined within a command module class. Command modules are responsible for executing the Interaction handlers and providing them with the necessary execution info and helper functions. - -Command modules are transient objects. A new module instance is created before a command execution starts then it will be disposed right after the method returns. - -Every module class must: - -- be public -- inherit `InteractionModuleBase` - -Optionally you can override the included : - -- OnModuleBuilding (executed after the module is built) -- BeforeExecute (executed before a command execution starts) -- AfterExecute (executed after a command execution concludes) - -methods to configure the modules behaviour. - -Every command module exposes a set of helper methods, namely: - -- `RespondAsync()` => Respond to the interaction -- `FollowupAsync()` => Create a followup message for an interaction -- `ReplyAsync()` => Send a message to the origin channel of the interaction -- `DeleteOriginalResponseAsync()` => Delete the original interaction response - -## Commands - -Valid **Interaction Commands** must comply with the following requirements: - -| | return type | max parameter count | allowed parameter types | attribute | -|-------------------------------|------------------------------|---------------------|-------------------------------|--------------------------| -|[Slash Command](#slash-commands)| `Task`/`Task` | 25 | any* | `[SlashCommand]` | -|[User Command](#user-commands) | `Task`/`Task` | 1 | Implementations of `IUser` | `[UserCommand]` | -|[Message Command](#message-commands)| `Task`/`Task` | 1 | Implementations of `IMessage` | `[MessageCommand]` | -|[Component Interaction Command](#component-interaction-commands)| `Task`/`Task` | inf | `string` or `string[]` | `[ComponentInteraction]` | -|[Autocomplete Command](#autocomplete-commands)| `Task`/`Task` | - | - | `[AutocompleteCommand]`| - -> [!NOTE] -> a `TypeConverter` that is capable of parsing type in question must be registered to the `InteractionService` instance. - -You should avoid using long running code in your command module. Depending on your setup, long running code may block the Gateway thread of your bot, interrupting its connection to Discord. - -### Slash Commands - -Slash Commands are created using the `[SlashCommandAttribute]`. Every Slash Command must declare a name and a description. You can check Discords **Application Command Naming Guidelines** [here](https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-naming). - -```csharp -[SlashCommand("echo", "Echo an input")] -public async Task Echo(string input) -{ - await RespondAsync(input); -} -``` - -#### Parameters - -Slash Commands can have up to 25 method parameters. You must name your parameters in accordance with [Discords Naming Guidelines](https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-naming). Interaction Service also features a pascal casing seperator for formatting parameter names with pascal casing into Discord compliant parameter names('parameterName' => 'parameter-name'). By default, your methods can feature the following parameter types: - -- Implementations of `IUser` -- Implementations of `IChannel`* -- Implementations of `IRole` -- Implementations of `IMentionable` -- `string` -- `float`, `double`, `decimal` -- `bool` -- `char` -- `sbyte`, `byte` -- `int16`, `int32`, `int64` -- `uint16`, `uint32`, `uint64` -- `enum` (Values are registered as multiple choice options and are enforced by Discord. Use `[HideAttribute]' on enum values to prevent them from getting registered.) -- `DateTime` -- `TimeSpan` - ---- - -**You can use more specialized implementations of `IChannel` to restrict the allowed channel types for a channel type option.* -| interface | Channel Type | -|---------------------|-------------------------------| -| `IStageChannel` | Stage Channels | -| `IVoiceChannel` | Voice Channels | -| `IDMChannel` | DM Channels | -| `IGroupChannel` | Group Channels | -| `ICategory Channel` | Category Channels | -| `INewsChannel` | News Channels | -| `IThreadChannel` | Public, Private, News Threads | -| `ITextChannel` | Text Channels | - ---- - -##### Optional Parameters - -Parameters with default values (ie. `int count = 0`) will be displayed as optional parameters on Discord Client. - -##### Parameter Summary - -By using the `[SummaryAttribute]` you can customize the displayed name and description of a parameter - -```csharp -[Summary(description: "this is a parameter description")] string input -``` - -##### Parameter Choices - -`[ChoiceAttribute]` can be used to add choices to a parameter. - -```csharp -[SlashCommand("blep", "Send a random adorable animal photo")] -public async Task Blep([Choice("Dog","dog"), Choice("Cat", "cat"), Choice("Penguin", "penguin")] string animal) -{ - ... -} -``` - -In most cases, instead of relying on this attribute, you should use an `Enum` to create multiple choice parameters. Ex. - -```csharp -public enum Animal -{ - Cat, - Dog, - Penguin -} - -[SlashCommand("blep", "Send a random adorable animal photo")] -public async Task Blep(Animal animal) -{ - ... -} -``` - -This Slash Command will be displayed exactly the same as the previous example. - -##### Channel Types - -Channel types for an `IChannel` parameter can also be restricted using the `[ChannelTypesAttribute]`. - -```csharp -[SlashCommand("name", "Description")] -public async Task Command([ChannelTypes(ChannelType.Stage, ChannelType.Text)]IChannel channel) -{ - ... -} -``` - -In this case, user can only input Stage Channels and Text Channels to this parameter. - -##### Autocomplete - -You can enable Autocomple Interactions for a Slash Command parameter using the `[AutocompleteAttribute]`. To handle the Autocomplete Interactions raised by this parameter you can either create [Autocomplete Commands](#autocomplete-commands) or you can opt to use the [Autocompleters Pattern](./autocompleters) - -##### Min/Max Value - -You can specify the permitted max/min value for a number type parameter using the `[MaxValueAttribute]` and `[MinValueAttribute]`. - -### User Commands - -A valid User Command must have the following structure: - -```csharp -[UserCommand("Say Hello")] -public async Task SayHello(IUser user) -{ - ... -} -``` - -User commands can only have one parameter and its type must be an implementation of `IUser`. - -### Message Commands - -A valid Message Command must have the following structure: - -```csharp -[MessageCommand("Bookmark")] -public async Task Bookmark(IMessage user) -{ - ... -} -``` - -Message commands can only have one parameter and its type must be an implementation of `IMessage`. - -### Component Interaction Commands - -Component Interaction Commands are used to handle interactions that originate from **Discord Message Component**s. This pattern is particularly useful if you will be reusing a set a **Custom ID**s. - -```csharp -[ComponentInteraction("custom_id")] -public async Task RoleSelection() -{ - ... -} -``` - -Component Interaction Commands support wild card matching, by default `*` character can be used to create a wild card pattern. Interaction Service will use lazy matching to capture the words corresponding to the wild card character. And the captured words will be passed on to the command method in the same order they were captured. - -*Ex.* - -If Interaction Service recieves a component interaction with **player:play,rickroll** custom id, `op` will be *play* and `name` will be *rickroll* - -```csharp -[ComponentInteraction("player:*,*")] -public async Task Play(string op, string name) -{ - ... -} -``` - -You may use as many wild card characters as you want. - -#### Select Menus - -Unlike button interactions, select menu interactions also contain the values of the selected menu items. In this case, you should structure your method to accept a string array. - -```csharp -[ComponentInteraction("role_selection")] -public async Task RoleSelection(string[] selectedRoles) -{ - ... -} -``` - - Wild card pattern can also be used to match select menu custom ids but remember that the array containing the select menu values should be the last parameter. - -```csharp -[ComponentInteraction("role_selection_*")] -public async Task RoleSelection(string id, string[] selectedRoles) -{ - ... -} -``` - -### Autocomplete Commands - -Autocomplete commands must be parameterless methods. A valid Autocomplete command must have the following structure: - -```csharp -[AutocompleteCommand("command_name", "parameter_name")] -public async Task Autocomplete() -{ - IEnumerable results; - - ... - - await (Context.Interaction as SocketAutocompleteInteraction).RespondAsync(results); -} -``` - -Alternatively, you can use the *Autocompleters* to simplify this workflow. - -## Interaction Context - -Every command module provides its commands with an execution context. This context property includes general information about the underlying interaction that triggered the command execution. The base command context. - -You can design your modules to work with different implementation types of `IInteractionContext`. To achieve this, make sure your module classes inherit from the generic variant of the `InteractionModuleBase`. - -> Context type must be consistent throughout the project, or you will run into issues during runtime. - -Interaction Service ships with 4 different kinds of `InteractionContext`s: - -1. InteractionContext: A bare-bones execution context consisting of only implementation netural interfaces -2. SocketInteractionContext: An execution context for use with `DiscordSocketClient`. Socket entities are exposed in this context without the need of casting them. -3. ShardedInteractionContext: `DiscordShardedClient` variant of the `SocketInteractionContext` -4. RestInteractionContext: An execution context designed to be used with a `DiscordRestClient` and webhook based interactions pattern - -You can create custom Interaction Contexts by implementing the `IInteracitonContext` interface. - -One problem with using the concrete type InteractionContexts is that you cannot access the information that is specific to different interaction types without casting. Concrete type interaction contexts are great for creating shared interaction modules but you can also use the generic variants of the built-in interaction contexts to create interaction specific interaction modules. - -Ex. -Message component interactions have access to a special method called `UpdateAsync()` to update the body of the method the interaction originated from. Normally this wouldn't be accessable without casting the `Context.Interaction`. - -```csharp -discordClient.ButtonExecuted += async (interaction) => -{ - var ctx = new SocketInteractionContext(discordClient, interaction); - await interactionService.ExecuteAsync(ctx, serviceProvider); -}; - -public class MessageComponentModule : InteractionModuleBase> -{ - [ComponentInteraction("custom_id")] - public async Command() - { - Context.Interaction.UpdateAsync(...); - } -} -``` - -## Loading Modules - -Interaction Service can automatically discover and load modules that inherit `InteractionModuleBase` from an `Assembly`. Call `InteractionService.AddModulesAsync()` to use this functionality. - -You can also manually add Interaction modules using the `InteractionService.AddModuleAsync()` method by providing the module type you want to load. - -## Resolving Module Dependencies - -Module dependencies are resolved using the Constructor Injection and Property Injection patterns. Meaning, the constructor parameters and public settable properties of a module will be assigned using the `IServiceProvider`. For more information on dependency injection, check out [Dependency Injection](./dependency-injection.md) - -## Module Groups - -Module groups allow you to create sub-commands and sub-commands groups. By nesting commands inside a module that is tagged with `[GroupAttribute]` you can create prefixed commands. - -Although creating nested module stuctures are allowed, you are not permitted to use more than 2 `[GroupAttribute]`s in module hierarchy. - -## Executing Commands - -Any of the following socket events can be used to execute commands: - -- InteractionCreated -- ButtonExecuted -- SelectMenuExecuted -- AutocompleteExecuted -- UserCommandExecuted -- MessageCommandExecuted - -Commands can be either executed on the gateway thread or on a seperate thread from the thread pool. This behaviour can be configured by changing the *RunMode* property of `InteractionServiceConfig` or by setting the *runMode* parameter of a command attribute. - -You can also configure the way `InteractionService` executes the commands. By default, commands are executed using `ConstructorInfo.Invoke()` to create module instances and `MethodInfo.Invoke()` method for executing the method bodies. By setting, `InteractionServiceConfig.UseCompiledLambda` to `true`, you can make `InteractionService` create module instances and execute commands using *Compiled Lambda* expressions. This cuts down on command execution time but it might add some memory overhead. - -Time it takes to create a module instance and execute a `Task.Delay(0)` method using the Reflection methods compared to Compiled Lambda expressions: - -| Method | Mean | Error | StdDev | -|----------------- |----------:|---------:|---------:| -| ReflectionInvoke | 225.93 ns | 4.522 ns | 7.040 ns | -| CompiledLambda | 48.79 ns | 0.981 ns | 1.276 ns | - -## Registering Commands to Discord - -Application commands loaded to the Interaction Service can be registered to Discord using a number of different methods. In most cases `RegisterCommandsGloballyAsync()` and `RegisterCommandsToGuildAsync()` are the methods to use. Command registration methods can only be used after the gateway client is ready or the rest client is logged in. - -In debug environment, since Global commands can take up to 1 hour to register/update, you should register your commands to a test guild for your changes to take effect immediately. You can use the preprocessor directives to create a simple logic for registering commands: - -```csharp -#if DEBUG - await interactionService.RegisterCommandsToGuildAsync(); -#else - await interactionService.RegisterCommandsGloballyAsync(); -#endif -``` diff --git a/docs/guides/interactions_framework/post_execution.md b/docs/guides/interactions_framework/post_execution.md deleted file mode 100644 index f34ba5cfe..000000000 --- a/docs/guides/interactions_framework/post_execution.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -uid: Guides.InteractionsFramework.PostEx -title: Post-Execution ---- - -# Post-Execution Logic - -Interaction Service uses `IResult`s to provide information about the state of command execution. These can be used to log internal exceptions or provide some insight to the command user. - -If you are running your commands using `RunMode.Sync` these command results can be retrieved from the return value of `InteractionService.ExecuteCommandAsync()` method or by registering delegates to Interaction Service events. - -If you are using the `RunMode.Async` to run your commands, you must use the Interaction Service events to get the execution results. When using `RunMode.Async`, `InteractionService.ExecuteCommandAsync()` will always return a successful result. - -## Results - -Interaction Result come in a handful of different flavours: - -1. `AutocompletionResult`: returned by Autocompleters -2. `ExecuteResult`: contains the result of method body execution process -3. `PreconditionGroupResult`: returned by Precondition groups -4. `PreconditionResult`: returned by preconditions -5. `RuntimeResult`: a user implementable result for returning user defined results -6. `SearchResult`: returned by command lookup map -7. `TypeConverterResult`: returned by TypeConverters - -You can either use the `IResult.Error` property of an Interaction result or create type check for the afformentioned result types to branch out your post-execution logic to handle different situations. - -## CommandExecuted Events - -Every time a command gets executed, Interaction Service raises a *CommandExecuted event. These events can be used to create a post-execution pipeline. - -```csharp -interactionService.SlashCommandExecuted += SlashCommandExecuted; - -async Task SlashCommandExecuted (SlashCommandInfo arg1, Discord.IInteractionContext arg2, IResult arg3) - { - if (!arg3.IsSuccess) - { - switch (arg3.Error) - { - case InteractionCommandError.UnmetPrecondition: - await arg2.Interaction.RespondAsync($"Unmet Precondition: {arg3.ErrorReason}"); - break; - case InteractionCommandError.UnknownCommand: - await arg2.Interaction.RespondAsync("Unknown command"); - break; - case InteractionCommandError.BadArgs: - await arg2.Interaction.RespondAsync("Invalid number or arguments"); - break; - case InteractionCommandError.Exception: - await arg2.Interaction.RespondAsync($"Command exception:{arg3.ErrorReason}"); - break; - case InteractionCommandError.Unsuccessful: - await arg2.Interaction.RespondAsync("Command could not be executed"); - break; - default: - break; - } - } - } -``` - -## Log Event - -InteractionService regularly outputs information about the occuring events to keep the developer informed. - -## Runtime Result - -Interaction commands allow you to return `Task` to pass on additional information about the command execution process back to your post-execution logic. - -Custom `RuntimeResult` classes can be created by inheriting the base `RuntimeResult` class. - -If command execution process reaches the method body of the command and no exceptions are thrown during the execution of the method body, `RuntimeResult` returned by your command will be accessible by casting/type-checking the `IResult` parameter of the *CommandExecuted event delegate. diff --git a/docs/guides/interactions_framework/preconditions.md b/docs/guides/interactions_framework/preconditions.md deleted file mode 100644 index e9b5d73b6..000000000 --- a/docs/guides/interactions_framework/preconditions.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -uid: Guides.InteractionsFramework.Preconditions -title: Preconditions ---- - -# Preconditions - -Preconditions in Interaction Service work exactly the same as they do in ***Discord.Net.Commands***. For more information, check out [Preconditions](../commands/preconditions.md) \ No newline at end of file diff --git a/docs/guides/interactions_framework/typeconverters.md b/docs/guides/interactions_framework/typeconverters.md deleted file mode 100644 index 12ca7dab5..000000000 --- a/docs/guides/interactions_framework/typeconverters.md +++ /dev/null @@ -1,130 +0,0 @@ ---- -uid: Guides.InteractionsFramework.TypeConverters -title: Type Converters ---- - -# TypeConverters - -TypeConverters are responsible for registering command parameters to Discord and parsing the user inputs into method parameters. - -By default, TypeConverters for the following types are provided with `Discord.Net.Interactions` library. - -- Implementations of `IUser` -- Implementations of `IChannel` -- Implementations of `IRole` -- Implementations of `IMentionable` -- `string` -- `float`, `double`, `decimal` -- `bool` -- `char` -- `sbyte`, `byte` -- `int16`, `int32`, `int64` -- `uint16`, `uint32`, `uint64` -- `enum` -- `DateTime` -- `TimeSpan` - -## Creating TypeConverters - -Depending on your needs, there are two types of `TypeConverter`s you can create: - -- Concrete type -- Generic type - -A valid converter must inherit `TypeConverter` base type. And override the abstract base methods. - -### CanConvertTo() Method - -This method is used by Interaction Service to search for alternative Type Converters. - -Interaction Services determines the most suitable `TypeConverter` for a parameter type in the following order: - -1. It searches for a `TypeConverter` that is registered to specifically target that parameter type -2. It searches for a generic `TypeConverter` with a matching type constraint. If there are more multiple matches, the one whose type constraint is the most specialized will be chosen. -3. It searches for a `TypeConverter` that returns `true` when its `CanConvertTo()` method is invoked for thaty parameter type. - -> Alternatively, you can use the generic variant (`TypeConverter`) of the `TypeConverter` base class which implements the following method body for `CanConvertTo()` method - -```csharp -public sealed override bool CanConvertTo (Type type) => - typeof(T).IsAssignableFrom(type); -``` - -### GetDiscordType() Method - -This method is used by Interaction Service to determine the [Discord Application Command Option type](https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-option-type) of a parameter type. - -### ReadAsync() Method - -This method is used by Interaction Service to parse the user input. This method should return `TypeConverterResult.FromSuccess` if the parsing operation is successful, otherwise it should return `TypeConverterResult.FromError`. The inner logic of this method is totally up to you, however you should avoid using long running code. - -### Write() Method - -This method is used to configure the **Discord Application Command Option** before it gets registered to Discord. Command Option is configured by modifying the `ApplicationCommandOptionProperties` instance. - -The default parameter building pipeline is isolated and will not be disturbed by the `TypeConverter` workflow. But changes made in this method will override the values generated by the Interaction Service for a **Discord Application Command Option**. - ---- - -### Example Enum TypeConverter - -```csharp -internal sealed class EnumConverter : TypeConverter where T : struct, Enum -{ - public override ApplicationCommandOptionType GetDiscordType ( ) => ApplicationCommandOptionType.String; - - public override Task ReadAsync (IInteractionCommandContext context, SocketSlashCommandDataOption option, IServiceProvider services) - { - if (Enum.TryParse((string)option.Value, out var result)) - return Task.FromResult(TypeConverterResult.FromSuccess(result)); - else - return Task.FromResult(TypeConverterResult.FromError(InteractionCommandError.ConvertFailed, $"Value {option.Value} cannot be converted to {nameof(T)}")); - } - - public override void Write (ApplicationCommandOptionProperties properties, IParameterInfo parameterInfo) - { - var names = Enum.GetNames(typeof(T)); - if (names.Length <= 25) - { - var choices = new List(); - - foreach (var name in names) - choices.Add(new ApplicationCommandOptionChoiceProperties - { - Name = name, - Value = name - }); - - properties.Choices = choices; - } - } -} -``` - ---- - -## Registering TypeConverters - -> TypeConverters must be registered prior to module discovery. If Interaction Service encounters a parameter type that doesn't belong to any of the registered `TypeConverter`s during this phase, it will throw an exception. - -### Concrete TypeConverters - -Registering Concrete TypeConverters are as simple as creating an instance of your custom converter and invoking `AddTypeConverter()` method. - -```csharp -interactionService.AddTypeConverter(new StringArrayConverter()); -``` - -### Generic TypeConverters - -To register a generic TypeConverter, you need to invoke the `AddGenericTypeConverter()` method of the Interaction Service class. You need to pass the type of your `TypeConverter` and a target base type to this method. - -For instance, to register the previously mentioned [Example Enum Converter](#example-enum-converter) the following can be used: - -```csharp -interactionService.AddGenericTypeConverter(typeof(EnumConverter<>)); -``` - -Interaction service checks if the target base type satisfies the type constraints of the Generic TypeConverter class. - -> Dependencies of Generic TypeConverters are also resolved using the Dependency Injection pattern. diff --git a/docs/guides/introduction/intro.md b/docs/guides/introduction/intro.md index 0a4ca26e9..0bc1b90f6 100644 --- a/docs/guides/introduction/intro.md +++ b/docs/guides/introduction/intro.md @@ -23,7 +23,7 @@ in [our GitHub repository]. > Please note that you should *not* try to blindly copy paste > the code. The examples are meant to be a template or a guide. -[our GitHub repository]: https://github.com/RogueException/Discord.Net/tree/dev/samples +[our GitHub repository]: https://github.com/discord-net/Discord.Net/ [Task-based Asynchronous Pattern]: https://docs.microsoft.com/en-us/dotnet/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap [polymorphism]: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/polymorphism [interface]: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/interfaces/ @@ -44,8 +44,5 @@ resources to get you started. ## Still have questions? -Please visit us at `#dotnet_discord-net` on the [Discord API] server. -Describe the problem in details to us, what you've done, and, -if any, the problematic code uploaded onto [Hastebin](https://hastebin.com). - -[Discord API]: https://discord.gg/jkrBmQR \ No newline at end of file +Please visit us at our [Discord](https://discord.gg/dnet) server. +Describe the problem in details to us, what you've tried and what you need help with. diff --git a/docs/guides/commands/dependency-injection.md b/docs/guides/text_commands/dependency-injection.md similarity index 85% rename from docs/guides/commands/dependency-injection.md rename to docs/guides/text_commands/dependency-injection.md index 5dc5b02d2..3253643ef 100644 --- a/docs/guides/commands/dependency-injection.md +++ b/docs/guides/text_commands/dependency-injection.md @@ -1,14 +1,18 @@ --- -uid: Guides.Commands.DI +uid: Guides.TextCommands.DI title: Dependency Injection --- # Dependency Injection -The Command Service is bundled with a very barebone Dependency +The Text Command Service is bundled with a very barebone Dependency Injection service for your convenience. It is recommended that you use DI when writing your modules. +> [!WARNING] +> If you were brought here from the Interaction Service guides, +> make sure to replace all namespaces that imply `Discord.Commands` with `Discord.Interactions` + ## Setup 1. Create a @Microsoft.Extensions.DependencyInjection.ServiceCollection. @@ -44,4 +48,4 @@ manner. [!code-csharp[Injection Modules](samples/dependency-injection/dependency_module.cs)] [!code-csharp[Disallow Dependency Injection](samples/dependency-injection/dependency_module_noinject.cs)] -[DontInjectAttribute]: xref:Discord.Commands.DontInjectAttribute \ No newline at end of file +[DontInjectAttribute]: xref:Discord.Commands.DontInjectAttribute diff --git a/docs/guides/commands/intro.md b/docs/guides/text_commands/intro.md similarity index 97% rename from docs/guides/commands/intro.md rename to docs/guides/text_commands/intro.md index 14341a32b..6632c127a 100644 --- a/docs/guides/commands/intro.md +++ b/docs/guides/text_commands/intro.md @@ -1,9 +1,9 @@ --- -uid: Guides.Commands.Intro -title: Introduction to Command Service +uid: Guides.TextCommands.Intro +title: Introduction to the Chat Command Service --- -# The Command Service +# The Text Command Service [Discord.Commands](xref:Discord.Commands) provides an attribute-based command parser. @@ -187,7 +187,7 @@ service provider. ### Module Constructors -Modules are constructed using @Guides.Commands.DI. Any parameters +Modules are constructed using [Dependency Injection](xref:Guides.TextCommands.DI). Any parameters that are placed in the Module's constructor must be injected into an @System.IServiceProvider first. diff --git a/docs/guides/commands/namedarguments.md b/docs/guides/text_commands/namedarguments.md similarity index 98% rename from docs/guides/commands/namedarguments.md rename to docs/guides/text_commands/namedarguments.md index 890a8463f..18281d664 100644 --- a/docs/guides/commands/namedarguments.md +++ b/docs/guides/text_commands/namedarguments.md @@ -1,5 +1,5 @@ --- -uid: Guides.Commands.NamedArguments +uid: Guides.TextCommands.NamedArguments title: Named Arguments --- diff --git a/docs/guides/commands/post-execution.md b/docs/guides/text_commands/post-execution.md similarity index 97% rename from docs/guides/commands/post-execution.md rename to docs/guides/text_commands/post-execution.md index 782d256b2..49fe2f5f9 100644 --- a/docs/guides/commands/post-execution.md +++ b/docs/guides/text_commands/post-execution.md @@ -1,9 +1,9 @@ --- -uid: Guides.Commands.PostExecution +uid: Guides.TextCommands.PostExecution title: Post-command Execution Handling --- -# Post-execution Handling for Commands +# Post-execution Handling for Text Commands When developing commands, you may want to consider building a post-execution handling system so you can have finer control @@ -117,4 +117,4 @@ of the command. [CommandExecuted]: xref:Discord.Commands.CommandService.CommandExecuted [ExecuteAsync]: xref:Discord.Commands.CommandService.ExecuteAsync* [ExecuteResult]: xref:Discord.Commands.ExecuteResult -[Command Guide]: xref:Guides.Commands.Intro \ No newline at end of file +[Command Guide]: xref:Guides.TextCommands.Intro diff --git a/docs/guides/commands/preconditions.md b/docs/guides/text_commands/preconditions.md similarity index 98% rename from docs/guides/commands/preconditions.md rename to docs/guides/text_commands/preconditions.md index 8e8298b86..4be7ca2bb 100644 --- a/docs/guides/commands/preconditions.md +++ b/docs/guides/text_commands/preconditions.md @@ -1,5 +1,5 @@ --- -uid: Guides.Commands.Preconditions +uid: Guides.TextCommands.Preconditions title: Preconditions --- diff --git a/docs/guides/commands/samples/dependency-injection/dependency_map_setup.cs b/docs/guides/text_commands/samples/dependency-injection/dependency_map_setup.cs similarity index 100% rename from docs/guides/commands/samples/dependency-injection/dependency_map_setup.cs rename to docs/guides/text_commands/samples/dependency-injection/dependency_map_setup.cs diff --git a/docs/guides/commands/samples/dependency-injection/dependency_module.cs b/docs/guides/text_commands/samples/dependency-injection/dependency_module.cs similarity index 100% rename from docs/guides/commands/samples/dependency-injection/dependency_module.cs rename to docs/guides/text_commands/samples/dependency-injection/dependency_module.cs diff --git a/docs/guides/commands/samples/dependency-injection/dependency_module_noinject.cs b/docs/guides/text_commands/samples/dependency-injection/dependency_module_noinject.cs similarity index 100% rename from docs/guides/commands/samples/dependency-injection/dependency_module_noinject.cs rename to docs/guides/text_commands/samples/dependency-injection/dependency_module_noinject.cs diff --git a/docs/guides/commands/samples/intro/command_handler.cs b/docs/guides/text_commands/samples/intro/command_handler.cs similarity index 100% rename from docs/guides/commands/samples/intro/command_handler.cs rename to docs/guides/text_commands/samples/intro/command_handler.cs diff --git a/docs/guides/commands/samples/intro/empty-module.cs b/docs/guides/text_commands/samples/intro/empty-module.cs similarity index 100% rename from docs/guides/commands/samples/intro/empty-module.cs rename to docs/guides/text_commands/samples/intro/empty-module.cs diff --git a/docs/guides/commands/samples/intro/groups.cs b/docs/guides/text_commands/samples/intro/groups.cs similarity index 100% rename from docs/guides/commands/samples/intro/groups.cs rename to docs/guides/text_commands/samples/intro/groups.cs diff --git a/docs/guides/commands/samples/intro/module.cs b/docs/guides/text_commands/samples/intro/module.cs similarity index 100% rename from docs/guides/commands/samples/intro/module.cs rename to docs/guides/text_commands/samples/intro/module.cs diff --git a/docs/guides/commands/samples/post-execution/command_exception_log.cs b/docs/guides/text_commands/samples/post-execution/command_exception_log.cs similarity index 100% rename from docs/guides/commands/samples/post-execution/command_exception_log.cs rename to docs/guides/text_commands/samples/post-execution/command_exception_log.cs diff --git a/docs/guides/commands/samples/post-execution/command_executed_adv_demo.cs b/docs/guides/text_commands/samples/post-execution/command_executed_adv_demo.cs similarity index 100% rename from docs/guides/commands/samples/post-execution/command_executed_adv_demo.cs rename to docs/guides/text_commands/samples/post-execution/command_executed_adv_demo.cs diff --git a/docs/guides/commands/samples/post-execution/command_executed_demo.cs b/docs/guides/text_commands/samples/post-execution/command_executed_demo.cs similarity index 100% rename from docs/guides/commands/samples/post-execution/command_executed_demo.cs rename to docs/guides/text_commands/samples/post-execution/command_executed_demo.cs diff --git a/docs/guides/commands/samples/post-execution/customresult_base.cs b/docs/guides/text_commands/samples/post-execution/customresult_base.cs similarity index 100% rename from docs/guides/commands/samples/post-execution/customresult_base.cs rename to docs/guides/text_commands/samples/post-execution/customresult_base.cs diff --git a/docs/guides/commands/samples/post-execution/customresult_extended.cs b/docs/guides/text_commands/samples/post-execution/customresult_extended.cs similarity index 100% rename from docs/guides/commands/samples/post-execution/customresult_extended.cs rename to docs/guides/text_commands/samples/post-execution/customresult_extended.cs diff --git a/docs/guides/commands/samples/post-execution/customresult_usage.cs b/docs/guides/text_commands/samples/post-execution/customresult_usage.cs similarity index 100% rename from docs/guides/commands/samples/post-execution/customresult_usage.cs rename to docs/guides/text_commands/samples/post-execution/customresult_usage.cs diff --git a/docs/guides/commands/samples/post-execution/post-execution_basic.cs b/docs/guides/text_commands/samples/post-execution/post-execution_basic.cs similarity index 100% rename from docs/guides/commands/samples/post-execution/post-execution_basic.cs rename to docs/guides/text_commands/samples/post-execution/post-execution_basic.cs diff --git a/docs/guides/text_commands/samples/preconditions/group_precondition.cs b/docs/guides/text_commands/samples/preconditions/group_precondition.cs new file mode 100644 index 000000000..bae102b9a --- /dev/null +++ b/docs/guides/text_commands/samples/preconditions/group_precondition.cs @@ -0,0 +1,9 @@ +// The following example only requires the user to either have the +// Administrator permission in this guild or own the bot application. +[RequireUserPermission(GuildPermission.Administrator, Group = "Permission")] +[RequireOwner(Group = "Permission")] +public class AdminModule : ModuleBase +{ + [Command("ban")] + public Task BanAsync(IUser user) => Context.Guild.AddBanAsync(user); +} \ No newline at end of file diff --git a/docs/guides/commands/samples/preconditions/precondition_usage.cs b/docs/guides/text_commands/samples/preconditions/precondition_usage.cs similarity index 100% rename from docs/guides/commands/samples/preconditions/precondition_usage.cs rename to docs/guides/text_commands/samples/preconditions/precondition_usage.cs diff --git a/docs/guides/commands/samples/preconditions/require_role.cs b/docs/guides/text_commands/samples/preconditions/require_role.cs similarity index 100% rename from docs/guides/commands/samples/preconditions/require_role.cs rename to docs/guides/text_commands/samples/preconditions/require_role.cs diff --git a/docs/guides/commands/samples/typereaders/typereader-register.cs b/docs/guides/text_commands/samples/typereaders/typereader-register.cs similarity index 100% rename from docs/guides/commands/samples/typereaders/typereader-register.cs rename to docs/guides/text_commands/samples/typereaders/typereader-register.cs diff --git a/docs/guides/commands/samples/typereaders/typereader.cs b/docs/guides/text_commands/samples/typereaders/typereader.cs similarity index 100% rename from docs/guides/commands/samples/typereaders/typereader.cs rename to docs/guides/text_commands/samples/typereaders/typereader.cs diff --git a/docs/guides/commands/typereaders.md b/docs/guides/text_commands/typereaders.md similarity index 97% rename from docs/guides/commands/typereaders.md rename to docs/guides/text_commands/typereaders.md index f942c9341..bf911dac7 100644 --- a/docs/guides/commands/typereaders.md +++ b/docs/guides/text_commands/typereaders.md @@ -1,5 +1,5 @@ --- -uid: Guides.Commands.TypeReaders +uid: Guides.TextCommands.TypeReaders title: Type Readers --- @@ -67,4 +67,4 @@ To register a TypeReader, invoke [CommandService.AddTypeReader]. ### Example - Adding a Type Reader -[!code-csharp[Adding TypeReaders](samples/typereaders/typereader-register.cs)] \ No newline at end of file +[!code-csharp[Adding TypeReaders](samples/typereaders/typereader-register.cs)] diff --git a/docs/guides/toc.yml b/docs/guides/toc.yml index fba188b78..cf4ea5516 100644 --- a/docs/guides/toc.yml +++ b/docs/guides/toc.yml @@ -1,30 +1,57 @@ - name: Introduction topicUid: Guides.Introduction -- name: "Working with Guild Events" +- name: V2 to V3 Guide + topicUid: Guides.V2V3Guide +- name: Getting Started items: - - name: Introduction - topicUid: Guides.GuildEvents.Intro - - name: Creating Events - topicUid: Guides.GuildEvents.Creating - - name: Getting Event Users - topicUid: Guides.GuildEvents.GettingUsers - - name: Modifying Events - topicUid: Guides.GuildEvents.Modifying -- name: Working with Commands + - name: Installation + topicUid: Guides.GettingStarted.Installation + items: + - name: Nightly builds + topicUid: Guides.GettingStarted.Installation.Labs + - name: Your First Bot + topicUid: Guides.GettingStarted.FirstBot + - name: Terminology + topicUid: Guides.GettingStarted.Terminology +- name: Basic Concepts + items: + - name: Logging Data + topicUid: Guides.Concepts.Logging + - name: Working with Events + topicUid: Guides.Concepts.Events + - name: Managing Connections + topicUid: Guides.Concepts.ManageConnections + - name: Entities + topicUid: Guides.Concepts.Entities +- name: Working with Text-based Commands items: - name: Introduction - topicUid: Guides.Commands.Intro + topicUid: Guides.TextCommands.Intro - name: TypeReaders - topicUid: Guides.Commands.TypeReaders + topicUid: Guides.TextCommands.TypeReaders - name: Named Arguments - topicUid: Guides.Commands.NamedArguments + topicUid: Guides.TextCommands.NamedArguments - name: Preconditions - topicUid: Guides.Commands.Preconditions + topicUid: Guides.TextCommands.Preconditions - name: Dependency Injection - topicUid: Guides.Commands.DI + topicUid: Guides.TextCommands.DI - name: Post-execution Handling - topicUid: Guides.Commands.PostExecution -- name: Working with Slash Commands + topicUid: Guides.TextCommands.PostExecution +- name: Working with the Interaction Framework + items: + - name: Introduction + topicUid: Guides.IntFw.Intro + - name: Auto-Completion + topicUid: Guides.IntFw.AutoCompletion + - name: TypeConverters + topicUid: Guides.IntFw.TypeConverters + - name: Preconditions + topicUid: Guides.IntFw.Preconditions + - name: Dependency Injection + topicUid: Guides.IntFw.DI + - name: Post-execution Handling + topicUid: Guides.IntFw.PostExecution +- name: Slash Command Basics items: - name: Introduction topicUid: Guides.SlashCommands.Intro @@ -42,16 +69,16 @@ topicUid: Guides.SlashCommands.Choices - name: Slash commands Bulk Overwrites topicUid: Guides.SlashCommands.BulkOverwrite -- name: Working with Context commands +- name: Context Command Basics items: - name: Creating Context Commands topicUid: Guides.ContextCommands.Creating - name: Receiving Context Commands topicUid: Guides.ContextCommands.Reveiving -- name: Working with Message Components +- name: Message Component Basics items: - - name: Getting started - topicUid: Guides.MessageComponents.GettingStarted + - name: Introduction + topicUid: Guides.MessageComponents.Intro - name: Responding to Components topicUid: Guides.MessageComponents.Responding - name: Buttons in depth @@ -60,14 +87,16 @@ topicUid: Guides.MessageComponents.SelectMenus - name: Advanced Concepts topicUid: Guides.MessageComponents.Advanced -- name: Interaction Framework +- name: Guild Events items: - - name: Getting started - topicUid: Guides.InteractionsFramework.Intro - - name: Dependency Injection - topicUid: Guides.Commands.DI - - name: Post-execution Handling - topicUid: Guides.Commands.PostExecution + - name: Introduction + topicUid: Guides.GuildEvents.Intro + - name: Creating Events + topicUid: Guides.GuildEvents.Creating + - name: Getting Event Users + topicUid: Guides.GuildEvents.GettingUsers + - name: Modifying Events + topicUid: Guides.GuildEvents.Modifying - name: Emoji topicUid: Guides.Emoji - name: Voice diff --git a/docs/guides/v2_v3_guide/v2_to_v3_guide.md b/docs/guides/v2_v3_guide/v2_to_v3_guide.md new file mode 100644 index 000000000..2bd914e17 --- /dev/null +++ b/docs/guides/v2_v3_guide/v2_to_v3_guide.md @@ -0,0 +1,30 @@ +--- +uid: Guides.V2V3Guide +title: V2 -> V3 Guide +--- + +# V2 to V3 Guide + +V3 is designed to be a more feature complete, more reliable, and more flexible library than any previous version. + +Below are the most notable breaking changes that you would need to update your code to work with V3. + +### GuildMemberUpdated Event + +The guild member updated event now passes a `Cacheable` for the first argument instead of a normal `SocketGuildUser`. This new cacheable type allows you to download a `RestGuildUser` if the user isn't cached. + +### ReactionAdded Event + +The reaction added event has been changed to have both parameters cacheable. This allows you to download the channel and message if they aren't cached instead of them being null. + +### UserIsTyping Event + +THe user is typing event has been changed to have both parameters cacheable. This allows you to download the user and channel if they aren't cached instead of them being null. + +### Presence + +There is a new event called `PresenceUpdated` that is called when a user's presence changes, instead of `GuildMemberUpdated` or `UserUpdated`. If your code relied on these events to get presence data then you need to update it to work with the new event. + +## Migrating your commands to slash command + +The new InteractionService was designed to act like the previous service for text-based commands. Your pre-existing code will continue to work, but you will need to migrate your modules and response functions to use the new InteractionService methods. Docs on this can be found [here](xref:Guides.IntFw.Intro) diff --git a/docs/index.md b/docs/index.md index 1d0f5aaf7..8a87963ea 100644 --- a/docs/index.md +++ b/docs/index.md @@ -3,17 +3,17 @@ uid: Root.Landing title: Home --- -# Discord.Net Documentation +# Discord.NET Documentation

-[![GitHub](https://img.shields.io/github/last-commit/discord-net/discord.net?style=plastic)](https://github.com/discord-net/Discord.Net) +[![GitHub](https://img.shields.io/github/last-commit/discord-net/Discord.Net?style=plastic)](https://github.com/discord-net/Discord.Net) [![NuGet](https://img.shields.io/nuget/vpre/Discord.Net.svg?maxAge=2592000?style=plastic)](https://www.nuget.org/packages/Discord.Net) [![MyGet](https://img.shields.io/myget/discord-net/vpre/Discord.Net.svg)](https://www.myget.org/feed/Packages/discord-net) [![Build Status](https://dev.azure.com/discord-net/Discord.Net/_apis/build/status/discord-net.Discord.Net?branchName=dev)](https://dev.azure.com/discord-net/Discord.Net/_build/latest?definitionId=1&branchName=dev) -[![Discord](https://discord.com/api/guilds/81384788765712384/widget.png)](https://discord.gg/jkrBmQR) +[![Discord](https://discord.com/api/guilds/81384788765712384/widget.png)](https://discord.gg/dnet) -## What is Discord.Net? +## What is Discord.NET? Discord.Net is an asynchronous, multi-platform .NET Library used to interface with the [Discord API](https://discord.com/). @@ -26,3 +26,57 @@ If this is your first time using Discord.Net, you should refer to the More experienced users might want to refer to the [API Documentation](xref:API.Docs) for a breakdown of the individual objects in the library. + +## Nightlies + +Nightlies are builds of Discord.NET that are still in an experimental phase, and have not been released. +These are not included in the main repository, and are instead taken over by [Discord.NET Labs]. + +Discord.NET Labs is an experimental fork of Discord.NET that implements the newest discord features +for testing and development to eventually get merged into Discord.NET. + +[Installing Discord.NET Labs](xref:Guides.GettingStarted.Installation.Labs) + +[discord.net labs]: https://github.com/Discord-Net-Labs/Discord.Net-Labs + +## Questions? + +Frequently asked questions are covered in the +FAQ. Read it thoroughly because most common questions are already answered there. + +If you still have unanswered questions after reading the [FAQ](xref:FAQ.Basics.GetStarted), further support is available on +[Discord](https://discord.gg/dnet). + +## Commonly used features + +#### Interaction Framework + +A counterpart to staple command service of Discord.NET, the Interaction Framework implements the same +feature-rich structure to register & handle interactions like Slash commands & buttons. + +- Read about the Interaction Framework + [here](xref:Guides.IntFw.Intro) + +#### Slash Commands + +Slash commands are purposed to take over the normal prefixed commands in Discord and comes with good functionality to serve as a replacement. +Being interactions, they are handled as SocketInteractions. Creating and receiving slashcommands is covered below. + +- Find out more about slash commands in the + [Slash Command Guides](xref:Guides.SlashCommands.Intro) + +#### Context Message & User Ccommands + +These commands can be pointed at messages and users, in custom application tabs. +Being interactions as well, they are able to be handled just like slash commands. They do not have options however. + +- Learn how to create and handle these commands in the + [Context Command Guides](xref:Guides.ContextCommands.Creating) + +#### Message Components + +Components of a message such as buttons and dropdowns, which can be interacted with and responded to. +Message components can be set in rows and multiple can exist on a single message! + +- Explanation on how to add & respond to message components can be found in the + [Message Component Guides](xref:Guides.MessageComponents.Intro) diff --git a/docs/toc.yml b/docs/toc.yml index bea010c5a..810995383 100644 --- a/docs/toc.yml +++ b/docs/toc.yml @@ -8,4 +8,4 @@ href: api/ topicUid: API.Docs - name: Changelog - topicHref: ../CHANGELOG.md \ No newline at end of file + topicHref: ../CHANGELOG.md diff --git a/src/Discord.Net.Commands/ModuleBase.cs b/src/Discord.Net.Commands/ModuleBase.cs index 3eddc11d2..5008cca35 100644 --- a/src/Discord.Net.Commands/ModuleBase.cs +++ b/src/Discord.Net.Commands/ModuleBase.cs @@ -38,12 +38,12 @@ namespace Discord.Commands /// /// The request options for this request. /// The message references to be included. Used to reply to specific messages. - /// The message components to be included with this message. Used for interactions. + /// The message components to be included with this message. Used for interactions. /// A collection of stickers to send with the file. /// A array of s to send with this response. Max 10. - protected virtual async Task ReplyAsync(string message = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) + protected virtual async Task ReplyAsync(string message = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) { - return await Context.Channel.SendMessageAsync(message, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + return await Context.Channel.SendMessageAsync(message, isTTS, embed, options, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); } /// /// The method to execute before executing the command. diff --git a/src/Discord.Net.Core/DiscordErrorCode.cs b/src/Discord.Net.Core/DiscordErrorCode.cs index 5a5223b93..61516a0ff 100644 --- a/src/Discord.Net.Core/DiscordErrorCode.cs +++ b/src/Discord.Net.Core/DiscordErrorCode.cs @@ -65,6 +65,7 @@ namespace Discord OnlyOwnerAction = 20018, AnnouncementEditRatelimit = 20022, ChannelWriteRatelimit = 20028, + WriteRatelimitReached = 20029, WordsNotAllowed = 20031, GuildPremiumTooLow = 20035, #endregion @@ -139,6 +140,7 @@ namespace Discord FileUploadTooBig = 50045, InvalidFileUpload = 50046, CannotSelfRedeemGift = 50054, + InvalidGuild = 50055, PaymentSourceRequiredForGift = 50070, CannotDeleteRequiredCommunityChannel = 50074, InvalidSticker = 50081, diff --git a/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs b/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs index 87dfb3460..00ec38746 100644 --- a/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs +++ b/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs @@ -28,14 +28,14 @@ namespace Discord /// If null, all mentioned roles and users will be notified. /// /// The message references to be included. Used to reply to specific messages. - /// The message components to be included with this message. Used for interactions. + /// The message components to be included with this message. Used for interactions. /// A collection of stickers to send with the message. /// A array of s to send with this response. Max 10. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null); + Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null); /// /// Sends a file to this message channel with an optional caption. /// @@ -68,14 +68,14 @@ namespace Discord /// If null, all mentioned roles and users will be notified. /// /// The message references to be included. Used to reply to specific messages. - /// The message components to be included with this message. Used for interactions. + /// The message components to be included with this message. Used for interactions. /// A collection of stickers to send with the file. /// A array of s to send with this response. Max 10. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null); + Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null); /// /// Sends a file to this message channel with an optional caption. /// @@ -105,14 +105,14 @@ namespace Discord /// If null, all mentioned roles and users will be notified. /// /// The message references to be included. Used to reply to specific messages. - /// The message components to be included with this message. Used for interactions. + /// The message components to be included with this message. Used for interactions. /// A collection of stickers to send with the file. /// A array of s to send with this response. Max 10. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null); + Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null); /// /// Sends a file to this message channel with an optional caption. /// @@ -134,14 +134,14 @@ namespace Discord /// If null, all mentioned roles and users will be notified. /// /// The message references to be included. Used to reply to specific messages. - /// The message components to be included with this message. Used for interactions. + /// The message components to be included with this message. Used for interactions. /// A collection of stickers to send with the file. /// A array of s to send with this response. Max 10. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - Task SendFileAsync(FileAttachment attachment, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null); + Task SendFileAsync(FileAttachment attachment, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null); /// /// Sends a collection of files to this message channel. /// @@ -163,14 +163,14 @@ namespace Discord /// If null, all mentioned roles and users will be notified. /// /// The message references to be included. Used to reply to specific messages. - /// The message components to be included with this message. Used for interactions. + /// The message components to be included with this message. Used for interactions. /// A collection of stickers to send with the file. /// A array of s to send with this response. Max 10. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - Task SendFilesAsync(IEnumerable attachments, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null); + Task SendFilesAsync(IEnumerable attachments, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null); /// /// Gets a message from this message channel. diff --git a/src/Discord.Net.Core/Entities/Emotes/Emoji.cs b/src/Discord.Net.Core/Entities/Emotes/Emoji.cs index 15c20148e..2bf17d645 100644 --- a/src/Discord.Net.Core/Entities/Emotes/Emoji.cs +++ b/src/Discord.Net.Core/Entities/Emotes/Emoji.cs @@ -675,6 +675,7 @@ namespace Discord [":coconut:"] = "\uD83E\uDD65", [":coffee:"] = "☕", [":coffin:"] = "⚰️", + [":coin:"] = "\uD83E\uDE99", [":cold_face:"] = "\uD83E\uDD76", [":cold_sweat:"] = "\uD83D\uDE30", [":comet:"] = "☄️", diff --git a/src/Discord.Net.Core/Entities/Interactions/IApplicationCommandOption.cs b/src/Discord.Net.Core/Entities/Interactions/IApplicationCommandOption.cs index 440c4bd6b..72554fc98 100644 --- a/src/Discord.Net.Core/Entities/Interactions/IApplicationCommandOption.cs +++ b/src/Discord.Net.Core/Entities/Interactions/IApplicationCommandOption.cs @@ -32,6 +32,11 @@ namespace Discord /// bool? IsRequired { get; } + /// + /// Gets whether or not the option has autocomplete enabled. + /// + bool? IsAutocomplete { get; } + /// /// Gets the smallest number value the user can input. /// diff --git a/src/Discord.Net.Core/Entities/Roles/RoleProperties.cs b/src/Discord.Net.Core/Entities/Roles/RoleProperties.cs index 93cda8d5b..b6399c054 100644 --- a/src/Discord.Net.Core/Entities/Roles/RoleProperties.cs +++ b/src/Discord.Net.Core/Entities/Roles/RoleProperties.cs @@ -1,3 +1,5 @@ +using System; + namespace Discord { /// @@ -50,11 +52,24 @@ namespace Discord /// This value may not be set if the role is an @everyone role. /// public Optional Hoist { get; set; } - /// /// Gets or sets the icon of the role. /// - public Optional Icon { get; set; } + /// + /// This value cannot be set at the same time as Emoji, as they are both exclusive. + /// + /// Setting an Icon will override a currently existing Emoji if present. + /// + public Optional Icon { get; set; } + /// + /// Gets or sets the unicode emoji of the role. + /// + /// + /// This value cannot be set at the same time as Icon, as they are both exclusive. + /// + /// Setting an Emoji will override a currently existing Icon if present. + /// + public Optional Emoji { get; set; } /// /// Gets or sets whether or not this role can be mentioned. /// diff --git a/src/Discord.Net.Core/Extensions/UserExtensions.cs b/src/Discord.Net.Core/Extensions/UserExtensions.cs index e268eae84..ce914170d 100644 --- a/src/Discord.Net.Core/Extensions/UserExtensions.cs +++ b/src/Discord.Net.Core/Extensions/UserExtensions.cs @@ -32,7 +32,7 @@ namespace Discord /// Specifies if notifications are sent for mentioned users and roles in the message . /// If null, all mentioned roles and users will be notified. /// - /// The message components to be included with this message. Used for interactions. + /// The message components to be included with this message. Used for interactions. /// A array of s to send with this response. Max 10. /// /// A task that represents the asynchronous send operation. The task result contains the sent message. @@ -43,10 +43,10 @@ namespace Discord Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, - MessageComponent component = null, + MessageComponent components = null, Embed[] embeds = null) { - return await (await user.CreateDMChannelAsync().ConfigureAwait(false)).SendMessageAsync(text, isTTS, embed, options, allowedMentions, component: component, embeds: embeds).ConfigureAwait(false); + return await (await user.CreateDMChannelAsync().ConfigureAwait(false)).SendMessageAsync(text, isTTS, embed, options, allowedMentions, components: components, embeds: embeds).ConfigureAwait(false); } /// @@ -85,7 +85,7 @@ namespace Discord /// Whether the message should be read aloud by Discord or not. /// The to be sent. /// The options to be used when sending the request. - /// The message component to be included with this message. Used for interactions. + /// The message component to be included with this message. Used for interactions. /// A array of s to send with this response. Max 10. /// /// A task that represents an asynchronous send operation for delivering the message. The task result @@ -98,10 +98,10 @@ namespace Discord bool isTTS = false, Embed embed = null, RequestOptions options = null, - MessageComponent component = null, + MessageComponent components = null, Embed[] embeds = null) { - return await (await user.CreateDMChannelAsync().ConfigureAwait(false)).SendFileAsync(stream, filename, text, isTTS, embed, options, component: component, embeds: embeds).ConfigureAwait(false); + return await (await user.CreateDMChannelAsync().ConfigureAwait(false)).SendFileAsync(stream, filename, text, isTTS, embed, options, components: components, embeds: embeds).ConfigureAwait(false); } /// @@ -145,7 +145,7 @@ namespace Discord /// Whether the message should be read aloud by Discord or not. /// The to be sent. /// The options to be used when sending the request. - /// The message component to be included with this message. Used for interactions. + /// The message component to be included with this message. Used for interactions. /// A array of s to send with this response. Max 10. /// /// A task that represents an asynchronous send operation for delivering the message. The task result @@ -157,10 +157,10 @@ namespace Discord bool isTTS = false, Embed embed = null, RequestOptions options = null, - MessageComponent component = null, + MessageComponent components = null, Embed[] embeds = null) { - return await (await user.CreateDMChannelAsync().ConfigureAwait(false)).SendFileAsync(filePath, text, isTTS, embed, options, component: component, embeds: embeds).ConfigureAwait(false); + return await (await user.CreateDMChannelAsync().ConfigureAwait(false)).SendFileAsync(filePath, text, isTTS, embed, options, components: components, embeds: embeds).ConfigureAwait(false); } /// diff --git a/src/Discord.Net.Interactions/Info/Commands/CommandInfo.cs b/src/Discord.Net.Interactions/Info/Commands/CommandInfo.cs index f9fdb6e38..36cc6cbd8 100644 --- a/src/Discord.Net.Interactions/Info/Commands/CommandInfo.cs +++ b/src/Discord.Net.Interactions/Info/Commands/CommandInfo.cs @@ -241,7 +241,7 @@ namespace Discord.Interactions } builder.AppendFormat(" {0}", Name); - return builder.ToString(); + return builder.ToString().Trim(); } } } diff --git a/src/Discord.Net.Interactions/InteractionModuleBase.cs b/src/Discord.Net.Interactions/InteractionModuleBase.cs index f0e50da8d..56ef11d05 100644 --- a/src/Discord.Net.Interactions/InteractionModuleBase.cs +++ b/src/Discord.Net.Interactions/InteractionModuleBase.cs @@ -35,18 +35,18 @@ namespace Discord.Interactions /// protected virtual async Task RespondAsync (string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, - AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) => - await Context.Interaction.RespondAsync(text, embeds, isTTS, ephemeral, allowedMentions, component, embed, options).ConfigureAwait(false); + AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent components = null, Embed embed = null) => + await Context.Interaction.RespondAsync(text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); /// protected virtual async Task FollowupAsync (string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, - AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) => - await Context.Interaction.FollowupAsync(text, embeds, isTTS, ephemeral, allowedMentions, component, embed, options).ConfigureAwait(false); + AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent components = null, Embed embed = null) => + await Context.Interaction.FollowupAsync(text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); /// protected virtual async Task ReplyAsync (string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, - AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null) => - await Context.Channel.SendMessageAsync(text, false, embed, options, allowedMentions, messageReference, component).ConfigureAwait(false); + AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null) => + await Context.Channel.SendMessageAsync(text, false, embed, options, allowedMentions, messageReference, components).ConfigureAwait(false); /// protected virtual async Task DeleteOriginalResponseAsync ( ) diff --git a/src/Discord.Net.Interactions/InteractionService.cs b/src/Discord.Net.Interactions/InteractionService.cs index 6c2a70f16..d7192129d 100644 --- a/src/Discord.Net.Interactions/InteractionService.cs +++ b/src/Discord.Net.Interactions/InteractionService.cs @@ -67,7 +67,7 @@ namespace Discord.Interactions internal readonly LogManager _logManager; internal readonly Func _getRestClient; - internal readonly bool _throwOnError, _deleteUnkownSlashCommandAck, _useCompiledLambda, _enableAutocompleteHandlers; + internal readonly bool _throwOnError, _useCompiledLambda, _enableAutocompleteHandlers; internal readonly string _wildCardExp; internal readonly RunMode _runMode; internal readonly RestResponseCallback _restResponseCallback; @@ -153,7 +153,6 @@ namespace Discord.Interactions throw new InvalidOperationException($"RunMode cannot be set to {RunMode.Default}"); _throwOnError = config.ThrowOnError; - _deleteUnkownSlashCommandAck = config.DeleteUnknownSlashCommandAck; _wildCardExp = config.WildCardExpression; _useCompiledLambda = config.UseCompiledLambda; _enableAutocompleteHandlers = config.EnableAutocompleteHandlers; @@ -620,12 +619,6 @@ namespace Discord.Interactions { await _cmdLogger.DebugAsync($"Unknown slash command, skipping execution ({string.Join(" ", keywords).ToUpper()})"); - if (_deleteUnkownSlashCommandAck) - { - var response = await context.Interaction.GetOriginalResponseAsync().ConfigureAwait(false); - await response.DeleteAsync().ConfigureAwait(false); - } - await _slashCommandExecutedEvent.InvokeAsync(null, context, result).ConfigureAwait(false); return result; } diff --git a/src/Discord.Net.Interactions/InteractionServiceConfig.cs b/src/Discord.Net.Interactions/InteractionServiceConfig.cs index 8e495a5ca..e5ca5b9ec 100644 --- a/src/Discord.Net.Interactions/InteractionServiceConfig.cs +++ b/src/Discord.Net.Interactions/InteractionServiceConfig.cs @@ -33,11 +33,6 @@ namespace Discord.Interactions /// public string WildCardExpression { get; set; } - /// - /// Gets or sets the option to delete Slash Command acknowledgements if no Slash Command handler is found in the . - /// - public bool DeleteUnknownSlashCommandAck { get; set; } = true; - /// /// Gets or sets the option to use compiled lambda expressions to create module instances and execute commands. This method improves performance at the cost of memory. /// diff --git a/src/Discord.Net.Interactions/RestInteractionModuleBase.cs b/src/Discord.Net.Interactions/RestInteractionModuleBase.cs index ee1ce229e..fe184fc9a 100644 --- a/src/Discord.Net.Interactions/RestInteractionModuleBase.cs +++ b/src/Discord.Net.Interactions/RestInteractionModuleBase.cs @@ -42,18 +42,18 @@ namespace Discord.Interactions /// if the response should be hidden to everyone besides the invoker of the command, otherwise . /// The allowed mentions for this response. /// The request options for this response. - /// A to be sent with this response. + /// A to be sent with this response. /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. /// /// A Task representing the operation of creating the interaction response. /// /// Thrown if the interaction isn't a type of . - protected override async Task RespondAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent component = null, Embed embed = null) + protected override async Task RespondAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, RequestOptions options = null, MessageComponent components = null, Embed embed = null) { if (Context.Interaction is not RestInteraction restInteraction) throw new InvalidOperationException($"Invalid interaction type. Interaction must be a type of {nameof(RestInteraction)} in order to execute this method"); - await InteractionService._restResponseCallback(Context, restInteraction.Respond(text, embeds, isTTS, ephemeral, allowedMentions, component, embed, options)).ConfigureAwait(false); + await InteractionService._restResponseCallback(Context, restInteraction.Respond(text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options)).ConfigureAwait(false); } } } diff --git a/src/Discord.Net.Interactions/Results/SearchResult.cs b/src/Discord.Net.Interactions/Results/SearchResult.cs index 874e57d45..8555e9e5d 100644 --- a/src/Discord.Net.Interactions/Results/SearchResult.cs +++ b/src/Discord.Net.Interactions/Results/SearchResult.cs @@ -2,15 +2,34 @@ using System; namespace Discord.Interactions { - internal struct SearchResult : IResult where T : class, ICommandInfo + /// + /// Contains information of a command search. + /// + /// Type of the target command type. + public struct SearchResult : IResult where T : class, ICommandInfo { + /// + /// Gets the input text of the command search. + /// public string Text { get; } + + /// + /// Gets the found command, if the search was successful. + /// public T Command { get; } + + /// + /// Gets the Regex groups captured by the wild card pattern. + /// public string[] RegexCaptureGroups { get; } + + /// public InteractionCommandError? Error { get; } + /// public string ErrorReason { get; } + /// public bool IsSuccess => !Error.HasValue; private SearchResult (string text, T commandInfo, string[] captureGroups, InteractionCommandError? error, string reason) @@ -22,16 +41,53 @@ namespace Discord.Interactions ErrorReason = reason; } + /// + /// Initializes a new with no error, indicating a successful execution. + /// + /// + /// A that does not contain any errors. + /// public static SearchResult FromSuccess (string text, T commandInfo, string[] wildCardMatch = null) => new SearchResult(text, commandInfo, wildCardMatch, null, null); + /// + /// Initializes a new with a specified and its + /// reason, indicating an unsuccessful execution. + /// + /// The type of error. + /// The reason behind the error. + /// + /// A that contains a and reason. + /// public static SearchResult FromError (string text, InteractionCommandError error, string reason) => new SearchResult(text, null, null, error, reason); + + /// + /// Initializes a new with a specified exception, indicating an unsuccessful + /// execution. + /// + /// The exception that caused the command execution to fail. + /// + /// A that contains the exception that caused the unsuccessful execution, along + /// with a of type Exception as well as the exception message as the + /// reason. + /// public static SearchResult FromError (Exception ex) => new SearchResult(null, null, null, InteractionCommandError.Exception, ex.Message); + + /// + /// Initializes a new with a specified result; this may or may not be an + /// successful depending on the and + /// specified. + /// + /// The result to inherit from. + /// + /// A that inherits the error type and reason. + /// public static SearchResult FromError (IResult result) => new SearchResult(null, null, null, result.Error, result.ErrorReason); + /// public override string ToString ( ) => IsSuccess ? "Success" : $"{Error}: {ErrorReason}"; } } diff --git a/src/Discord.Net.Interactions/Utilities/InteractionUtility.cs b/src/Discord.Net.Interactions/Utilities/InteractionUtility.cs index 00062ced6..9751b613d 100644 --- a/src/Discord.Net.Interactions/Utilities/InteractionUtility.cs +++ b/src/Discord.Net.Interactions/Utilities/InteractionUtility.cs @@ -98,7 +98,7 @@ namespace Discord.Interactions .WithButton("Cancel", declineId, ButtonStyle.Danger) .Build(); - var prompt = await channel.SendMessageAsync(message, component: component).ConfigureAwait(false); + var prompt = await channel.SendMessageAsync(message, components: component).ConfigureAwait(false); var response = await WaitForMessageComponentAsync(client, prompt, timeout, cancellationToken).ConfigureAwait(false) as SocketMessageComponent; diff --git a/src/Discord.Net.Rest/API/Common/ApplicationCommandOption.cs b/src/Discord.Net.Rest/API/Common/ApplicationCommandOption.cs index 1207df282..d703bd46b 100644 --- a/src/Discord.Net.Rest/API/Common/ApplicationCommandOption.cs +++ b/src/Discord.Net.Rest/API/Common/ApplicationCommandOption.cs @@ -56,6 +56,7 @@ namespace Discord.API Default = cmd.IsDefault ?? Optional.Unspecified; MinValue = cmd.MinValue ?? Optional.Unspecified; MaxValue = cmd.MaxValue ?? Optional.Unspecified; + Autocomplete = cmd.IsAutocomplete ?? Optional.Unspecified; Name = cmd.Name; Type = cmd.Type; diff --git a/src/Discord.Net.Rest/API/Rest/ModifyGuildRoleParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyGuildRoleParams.cs index fbb9c3e48..8aa92d40d 100644 --- a/src/Discord.Net.Rest/API/Rest/ModifyGuildRoleParams.cs +++ b/src/Discord.Net.Rest/API/Rest/ModifyGuildRoleParams.cs @@ -14,7 +14,9 @@ namespace Discord.API.Rest [JsonProperty("hoist")] public Optional Hoist { get; set; } [JsonProperty("icon")] - public Optional Icon { get; set; } + public Optional Icon { get; set; } + [JsonProperty("unicode_emoji")] + public Optional Emoji { get; set; } [JsonProperty("mentionable")] public Optional Mentionable { get; set; } } diff --git a/src/Discord.Net.Rest/DiscordRestApiClient.cs b/src/Discord.Net.Rest/DiscordRestApiClient.cs index 67e3107ed..d905eee05 100644 --- a/src/Discord.Net.Rest/DiscordRestApiClient.cs +++ b/src/Discord.Net.Rest/DiscordRestApiClient.cs @@ -1353,8 +1353,7 @@ namespace Discord.API if ((!args.Embeds.IsSpecified || args.Embeds.Value == null || args.Embeds.Value.Length == 0) && !args.Files.Any()) Preconditions.NotNullOrEmpty(args.Content, nameof(args.Content)); - - if (args.Content.IsSpecified && args.Content.Value.Length > DiscordConfig.MaxMessageSize) + if (args.Content.IsSpecified && args.Content.Value?.Length > DiscordConfig.MaxMessageSize) throw new ArgumentException(message: $"Message content is too long, length must be less or equal to {DiscordConfig.MaxMessageSize}.", paramName: nameof(args.Content)); options = RequestOptions.CreateOrClone(options); @@ -1368,9 +1367,8 @@ namespace Discord.API Preconditions.NotNull(args, nameof(args)); Preconditions.NotEqual(id, 0, nameof(id)); - if (args.Content.IsSpecified) - if (args.Content.Value.Length > DiscordConfig.MaxMessageSize) - throw new ArgumentException(message: $"Message content is too long, length must be less or equal to {DiscordConfig.MaxMessageSize}.", paramName: nameof(args.Content)); + if (args.Content.IsSpecified && args.Content.Value?.Length > DiscordConfig.MaxMessageSize) + throw new ArgumentException(message: $"Message content is too long, length must be less or equal to {DiscordConfig.MaxMessageSize}.", paramName: nameof(args.Content)); options = RequestOptions.CreateOrClone(options); diff --git a/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs b/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs index 2956d6443..40328cbd6 100644 --- a/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs +++ b/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs @@ -267,7 +267,7 @@ namespace Discord.Rest /// Message content is too long, length must be less or equal to . public static async Task SendMessageAsync(IMessageChannel channel, BaseDiscordClient client, - string text, bool isTTS, Embed embed, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, RequestOptions options, Embed[] embeds) + string text, bool isTTS, Embed embed, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, RequestOptions options, Embed[] embeds) { embeds ??= Array.Empty(); if (embed != null) @@ -304,7 +304,7 @@ namespace Discord.Rest Embeds = embeds.Any() ? embeds.Select(x => x.ToModel()).ToArray() : Optional.Unspecified, AllowedMentions = allowedMentions?.ToModel(), MessageReference = messageReference?.ToModel(), - Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified, + Components = components?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified, Stickers = stickers?.Any() ?? false ? stickers.Select(x => x.Id).ToArray() : Optional.Unspecified }; var model = await client.ApiClient.CreateMessageAsync(channel.Id, args, options).ConfigureAwait(false); @@ -336,27 +336,27 @@ namespace Discord.Rest /// An I/O error occurred while opening the file. /// Message content is too long, length must be less or equal to . public static async Task SendFileAsync(IMessageChannel channel, BaseDiscordClient client, - string filePath, string text, bool isTTS, Embed embed, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, RequestOptions options, bool isSpoiler, Embed[] embeds) + string filePath, string text, bool isTTS, Embed embed, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, RequestOptions options, bool isSpoiler, Embed[] embeds) { string filename = Path.GetFileName(filePath); using (var file = File.OpenRead(filePath)) - return await SendFileAsync(channel, client, file, filename, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, isSpoiler, embeds).ConfigureAwait(false); + return await SendFileAsync(channel, client, file, filename, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, isSpoiler, embeds).ConfigureAwait(false); } /// Message content is too long, length must be less or equal to . public static Task SendFileAsync(IMessageChannel channel, BaseDiscordClient client, - Stream stream, string filename, string text, bool isTTS, Embed embed, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, RequestOptions options, bool isSpoiler, Embed[] embeds) + Stream stream, string filename, string text, bool isTTS, Embed embed, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, RequestOptions options, bool isSpoiler, Embed[] embeds) { - return SendFileAsync(channel, client, new FileAttachment(stream, filename, isSpoiler: isSpoiler), text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); + return SendFileAsync(channel, client, new FileAttachment(stream, filename, isSpoiler: isSpoiler), text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, embeds); } /// Message content is too long, length must be less or equal to . public static Task SendFileAsync(IMessageChannel channel, BaseDiscordClient client, - FileAttachment attachment, string text, bool isTTS, Embed embed, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, RequestOptions options, Embed[] embeds) - => SendFilesAsync(channel, client, new[] { attachment }, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); + FileAttachment attachment, string text, bool isTTS, Embed embed, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, RequestOptions options, Embed[] embeds) + => SendFilesAsync(channel, client, new[] { attachment }, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, embeds); public static async Task SendFilesAsync(IMessageChannel channel, BaseDiscordClient client, - IEnumerable attachments, string text, bool isTTS, Embed embed, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, RequestOptions options, Embed[] embeds) + IEnumerable attachments, string text, bool isTTS, Embed embed, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, RequestOptions options, Embed[] embeds) { embeds ??= Array.Empty(); if (embed != null) @@ -392,7 +392,7 @@ namespace Discord.Rest Preconditions.AtMost(stickers.Length, 3, nameof(stickers), "A max of 3 stickers are allowed."); } - var args = new UploadFileParams(attachments.ToArray()) { Content = text, IsTTS = isTTS, Embeds = embeds.Any() ? embeds.Select(x => x.ToModel()).ToArray() : Optional.Unspecified, AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, MessageReference = messageReference?.ToModel() ?? Optional.Unspecified, MessageComponent = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified, Stickers = stickers?.Any() ?? false ? stickers.Select(x => x.Id).ToArray() : Optional.Unspecified }; + var args = new UploadFileParams(attachments.ToArray()) { Content = text, IsTTS = isTTS, Embeds = embeds.Any() ? embeds.Select(x => x.ToModel()).ToArray() : Optional.Unspecified, AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, MessageReference = messageReference?.ToModel() ?? Optional.Unspecified, MessageComponent = components?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified, Stickers = stickers?.Any() ?? false ? stickers.Select(x => x.Id).ToArray() : Optional.Unspecified }; var model = await client.ApiClient.UploadFileAsync(channel.Id, args, options).ConfigureAwait(false); return RestUserMessage.Create(client, channel, client.CurrentUser, model); } diff --git a/src/Discord.Net.Rest/Entities/Channels/IRestMessageChannel.cs b/src/Discord.Net.Rest/Entities/Channels/IRestMessageChannel.cs index 159735798..1af936a57 100644 --- a/src/Discord.Net.Rest/Entities/Channels/IRestMessageChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/IRestMessageChannel.cs @@ -25,14 +25,14 @@ namespace Discord.Rest /// If null, all mentioned roles and users will be notified. /// /// The message references to be included. Used to reply to specific messages. - /// The message components to be included with this message. Used for interactions. + /// The message components to be included with this message. Used for interactions. /// A collection of stickers to send with the message. /// A array of s to send with this response. Max 10. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - new Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null); + new Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null); /// /// Sends a file to this message channel with an optional caption. /// @@ -52,14 +52,14 @@ namespace Discord.Rest /// If null, all mentioned roles and users will be notified. /// /// The message references to be included. Used to reply to specific messages. - /// The message components to be included with this message. Used for interactions. + /// The message components to be included with this message. Used for interactions. /// A collection of stickers to send with the message. /// A array of s to send with this response. Max 10. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - new Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null); + new Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null); /// /// Sends a file to this message channel with an optional caption. /// @@ -79,14 +79,14 @@ namespace Discord.Rest /// If null, all mentioned roles and users will be notified. /// /// The message references to be included. Used to reply to specific messages. - /// The message components to be included with this message. Used for interactions. + /// The message components to be included with this message. Used for interactions. /// A collection of stickers to send with the message. /// A array of s to send with this response. Max 10. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - new Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null); + new Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null); /// /// Gets a message from this message channel. diff --git a/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs index 1b91c6e62..36b190e56 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs @@ -94,8 +94,8 @@ namespace Discord.Rest /// /// Message content is too long, length must be less or equal to . - public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); + public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, embeds); /// /// @@ -122,22 +122,22 @@ namespace Discord.Rest /// is in an invalid format. /// An I/O error occurred while opening the file. /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, isSpoiler, embeds); + public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, isSpoiler, embeds); /// /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, isSpoiler, embeds); + public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, isSpoiler, embeds); /// /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(FileAttachment attachment, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendFileAsync(this, Discord, attachment, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); + public Task SendFileAsync(FileAttachment attachment, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, attachment, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, embeds); /// /// Message content is too long, length must be less or equal to . - public Task SendFilesAsync(IEnumerable attachments, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendFilesAsync(this, Discord, attachments, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); + public Task SendFilesAsync(IEnumerable attachments, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFilesAsync(this, Discord, attachments, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, embeds); /// public Task DeleteMessageAsync(ulong messageId, RequestOptions options = null) @@ -219,20 +219,20 @@ namespace Discord.Rest async Task> IMessageChannel.GetPinnedMessagesAsync(RequestOptions options) => await GetPinnedMessagesAsync(options).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(FileAttachment attachment, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendFileAsync(attachment, text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(FileAttachment attachment, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(attachment, text, isTTS, embed, options, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); /// - async Task IMessageChannel.SendFilesAsync(IEnumerable attachments, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendFilesAsync(attachments, text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendFilesAsync(IEnumerable attachments, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendFilesAsync(attachments, text, isTTS, embed, options, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); /// - async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); #endregion #region IChannel diff --git a/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs index 83ff3f558..267b4dc52 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs @@ -100,8 +100,8 @@ namespace Discord.Rest /// /// Message content is too long, length must be less or equal to . - public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); + public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, embeds); /// /// @@ -128,20 +128,20 @@ namespace Discord.Rest /// is in an invalid format. /// An I/O error occurred while opening the file. /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, isSpoiler, embeds); + public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, isSpoiler, embeds); /// /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, isSpoiler, embeds); + public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, isSpoiler, embeds); /// /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(FileAttachment attachment, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendFileAsync(this, Discord, attachment, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); + public Task SendFileAsync(FileAttachment attachment, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, attachment, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, embeds); /// /// Message content is too long, length must be less or equal to . - public Task SendFilesAsync(IEnumerable attachments, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendFilesAsync(this, Discord, attachments, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); + public Task SendFilesAsync(IEnumerable attachments, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFilesAsync(this, Discord, attachments, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, embeds); /// public Task TriggerTypingAsync(RequestOptions options = null) => ChannelHelper.TriggerTypingAsync(this, Discord, options); @@ -193,17 +193,17 @@ namespace Discord.Rest async Task> IMessageChannel.GetPinnedMessagesAsync(RequestOptions options) => await GetPinnedMessagesAsync(options).ConfigureAwait(false); - async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); - - async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); - async Task IMessageChannel.SendFileAsync(FileAttachment attachment, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendFileAsync(attachment, text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); - async Task IMessageChannel.SendFilesAsync(IEnumerable attachments, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendFilesAsync(attachments, text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); - async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); + + async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(FileAttachment attachment, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(attachment, text, isTTS, embed, options, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendFilesAsync(IEnumerable attachments, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendFilesAsync(attachments, text, isTTS, embed, options, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); #endregion #region IAudioChannel diff --git a/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs index f97c536c8..f1bdee65c 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs @@ -103,8 +103,8 @@ namespace Discord.Rest /// /// Message content is too long, length must be less or equal to . - public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); + public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, embeds); /// /// @@ -131,23 +131,23 @@ namespace Discord.Rest /// is in an invalid format. /// An I/O error occurred while opening the file. /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, isSpoiler, embeds); + public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, isSpoiler, embeds); /// /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, isSpoiler, embeds); + public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, isSpoiler, embeds); /// /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(FileAttachment attachment, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendFileAsync(this, Discord, attachment, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); + public Task SendFileAsync(FileAttachment attachment, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, attachment, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, embeds); /// /// Message content is too long, length must be less or equal to . - public Task SendFilesAsync(IEnumerable attachments, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendFilesAsync(this, Discord, attachments, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); + public Task SendFilesAsync(IEnumerable attachments, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFilesAsync(this, Discord, attachments, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, embeds); /// public Task DeleteMessageAsync(ulong messageId, RequestOptions options = null) @@ -332,24 +332,24 @@ namespace Discord.Rest => await GetPinnedMessagesAsync(options).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(FileAttachment attachment, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendFileAsync(attachment, text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(FileAttachment attachment, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(attachment, text, isTTS, embed, options, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); /// - async Task IMessageChannel.SendFilesAsync(IEnumerable attachments, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendFilesAsync(attachments, text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendFilesAsync(IEnumerable attachments, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendFilesAsync(attachments, text, isTTS, embed, options, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); /// - async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); #endregion #region IGuildChannel diff --git a/src/Discord.Net.Rest/Entities/Interactions/CommandBase/RestCommandBase.cs b/src/Discord.Net.Rest/Entities/Interactions/CommandBase/RestCommandBase.cs index 338942a30..db4ff1e0f 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/CommandBase/RestCommandBase.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/CommandBase/RestCommandBase.cs @@ -63,7 +63,7 @@ namespace Discord.Rest /// if the response should be hidden to everyone besides the invoker of the command, otherwise . /// The allowed mentions for this response. /// The request options for this response. - /// A to be sent with this response. + /// A to be sent with this response. /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. /// Message content is too long, length must be less or equal to . /// The parameters provided were invalid or the token was invalid. @@ -76,7 +76,7 @@ namespace Discord.Rest bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, - MessageComponent component = null, + MessageComponent components = null, Embed embed = null, RequestOptions options = null) { @@ -119,7 +119,7 @@ namespace Discord.Rest AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, Embeds = embeds.Select(x => x.ToModel()).ToArray(), TTS = isTTS, - Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified, + Components = components?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified, Flags = ephemeral ? MessageFlags.Ephemeral : Optional.Unspecified } }; @@ -152,7 +152,7 @@ namespace Discord.Rest bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, - MessageComponent component = null, + MessageComponent components = null, Embed embed = null, RequestOptions options = null) { @@ -173,7 +173,7 @@ namespace Discord.Rest AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, IsTTS = isTTS, Embeds = embeds.Select(x => x.ToModel()).ToArray(), - Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified + Components = components?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified }; if (ephemeral) diff --git a/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs b/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs index 9660bf7b0..22d3f5b0b 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs @@ -13,7 +13,7 @@ namespace Discord.Rest /// /// Represents a REST-based message component. /// - internal class RestMessageComponent : RestInteraction, IComponentInteraction, IDiscordInteraction + public class RestMessageComponent : RestInteraction, IComponentInteraction, IDiscordInteraction { /// /// Gets the data received with this interaction, contains the button that was clicked. @@ -64,7 +64,7 @@ namespace Discord.Rest /// if the message should be read out by a text-to-speech reader, otherwise . /// if the response should be hidden to everyone besides the invoker of the command, otherwise . /// The allowed mentions for this response. - /// A to be sent with this response. + /// A to be sent with this response. /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. /// The request options for this response. /// @@ -76,7 +76,7 @@ namespace Discord.Rest bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, - MessageComponent component = null, + MessageComponent components = null, Embed embed = null, RequestOptions options = null) { @@ -119,7 +119,7 @@ namespace Discord.Rest AllowedMentions = allowedMentions?.ToModel(), Embeds = embeds.Select(x => x.ToModel()).ToArray(), TTS = isTTS, - Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified + Components = components?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified } }; @@ -244,7 +244,7 @@ namespace Discord.Rest bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, - MessageComponent component = null, + MessageComponent components = null, Embed embed = null, RequestOptions options = null) { @@ -265,7 +265,7 @@ namespace Discord.Rest AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, IsTTS = isTTS, Embeds = embeds.Select(x => x.ToModel()).ToArray(), - Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified + Components = components?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified }; if (ephemeral) diff --git a/src/Discord.Net.Rest/Entities/Interactions/RestApplicationCommandOption.cs b/src/Discord.Net.Rest/Entities/Interactions/RestApplicationCommandOption.cs index d5c261e0b..1273b9a1e 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/RestApplicationCommandOption.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/RestApplicationCommandOption.cs @@ -26,6 +26,9 @@ namespace Discord.Rest /// public bool? IsRequired { get; private set; } + /// + public bool? IsAutocomplete { get; private set; } + /// public double? MinValue { get; private set; } @@ -74,6 +77,9 @@ namespace Discord.Rest if (model.MaxValue.IsSpecified) MaxValue = model.MaxValue.Value; + if (model.Autocomplete.IsSpecified) + IsAutocomplete = model.Autocomplete.Value; + Options = model.Options.IsSpecified ? model.Options.Value.Select(Create).ToImmutableArray() : ImmutableArray.Create(); diff --git a/src/Discord.Net.Rest/Entities/Interactions/RestInteraction.cs b/src/Discord.Net.Rest/Entities/Interactions/RestInteraction.cs index 35b356997..5f551ba0c 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/RestInteraction.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/RestInteraction.cs @@ -162,7 +162,7 @@ namespace Discord.Rest return RestInteractionMessage.Create(Discord, model, Token, Channel); } /// - public abstract string Respond(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent component = null, Embed embed = null, RequestOptions options = null); + public abstract string Respond(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); /// /// Sends a followup message for this interaction. @@ -274,8 +274,8 @@ namespace Discord.Rest => Task.FromResult(Defer(ephemeral, options)); /// async Task IDiscordInteraction.FollowupAsync(string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, - MessageComponent component, Embed embed, RequestOptions options) - => await FollowupAsync(text, embeds, isTTS, ephemeral, allowedMentions, component, embed, options).ConfigureAwait(false); + MessageComponent components, Embed embed, RequestOptions options) + => await FollowupAsync(text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); /// async Task IDiscordInteraction.GetOriginalResponseAsync(RequestOptions options) => await GetOriginalResponseAsync(options).ConfigureAwait(false); diff --git a/src/Discord.Net.Rest/Entities/Interactions/RestPingInteraction.cs b/src/Discord.Net.Rest/Entities/Interactions/RestPingInteraction.cs index 5ed5e054a..5d27b491e 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/RestPingInteraction.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/RestPingInteraction.cs @@ -38,7 +38,7 @@ namespace Discord.Rest } public override string Defer(bool ephemeral = false, RequestOptions options = null) => throw new NotSupportedException(); - public override string Respond(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent component = null, Embed embed = null, RequestOptions options = null) => throw new NotSupportedException(); + public override string Respond(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) => throw new NotSupportedException(); public override Task FollowupAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) => throw new NotSupportedException(); public override Task FollowupWithFileAsync(Stream fileStream, string fileName, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) => throw new NotSupportedException(); public override Task FollowupWithFileAsync(string filePath, string fileName = null, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) => throw new NotSupportedException(); diff --git a/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestAutocompleteInteraction.cs b/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestAutocompleteInteraction.cs index 1abeb4b3f..12f07942f 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestAutocompleteInteraction.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestAutocompleteInteraction.cs @@ -104,7 +104,7 @@ namespace Discord.Rest => Respond(result, options); public override string Defer(bool ephemeral = false, RequestOptions options = null) => throw new NotSupportedException("Autocomplete interactions don't support this method!"); - public override string Respond(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent component = null, Embed embed = null, RequestOptions options = null) + public override string Respond(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) => throw new NotSupportedException("Autocomplete interactions don't support this method!"); public override Task FollowupAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) => throw new NotSupportedException("Autocomplete interactions don't support this method!"); diff --git a/src/Discord.Net.Rest/Entities/Roles/RoleHelper.cs b/src/Discord.Net.Rest/Entities/Roles/RoleHelper.cs index d8552f869..3b2946a0d 100644 --- a/src/Discord.Net.Rest/Entities/Roles/RoleHelper.cs +++ b/src/Discord.Net.Rest/Entities/Roles/RoleHelper.cs @@ -13,15 +13,20 @@ namespace Discord.Rest { await client.ApiClient.DeleteGuildRoleAsync(role.Guild.Id, role.Id, options).ConfigureAwait(false); } - public static async Task ModifyAsync(IRole role, BaseDiscordClient client, + public static async Task ModifyAsync(IRole role, BaseDiscordClient client, Action func, RequestOptions options) { var args = new RoleProperties(); func(args); - if (args.Icon.IsSpecified) + if (args.Icon.IsSpecified || args.Emoji.IsSpecified) { role.Guild.Features.EnsureFeature(GuildFeature.RoleIcons); + + if (args.Icon.IsSpecified && args.Emoji.IsSpecified) + { + throw new ArgumentException("Emoji and Icon properties cannot be present on a role at the same time."); + } } var apiArgs = new API.Rest.ModifyGuildRoleParams @@ -31,8 +36,20 @@ namespace Discord.Rest Mentionable = args.Mentionable, Name = args.Name, Permissions = args.Permissions.IsSpecified ? args.Permissions.Value.RawValue.ToString() : Optional.Create(), - Icon = args.Icon.IsSpecified ? args.Icon.Value.ToModel() : Optional.Unspecified + Icon = args.Icon.IsSpecified ? args.Icon.Value.Value.ToModel() : Optional.Unspecified, + Emoji = args.Emoji.GetValueOrDefault()?.Name ?? Optional.Unspecified }; + + if (args.Icon.IsSpecified && role.Emoji != null) + { + apiArgs.Emoji = null; + } + + if (args.Emoji.IsSpecified && !string.IsNullOrEmpty(role.Icon)) + { + apiArgs.Icon = null; + } + var model = await client.ApiClient.ModifyGuildRoleAsync(role.Guild.Id, role.Id, apiArgs, options).ConfigureAwait(false); if (args.Position.IsSpecified) diff --git a/src/Discord.Net.Rest/Extensions/EntityExtensions.cs b/src/Discord.Net.Rest/Extensions/EntityExtensions.cs index bca2e8715..4062cda3d 100644 --- a/src/Discord.Net.Rest/Extensions/EntityExtensions.cs +++ b/src/Discord.Net.Rest/Extensions/EntityExtensions.cs @@ -179,7 +179,7 @@ namespace Discord.Rest var messageModel = new API.Message { IsTextToSpeech = data.TTS, - Content = data.Content, + Content = (data.Content.IsSpecified && data.Content.Value == null) ? Optional.Unspecified : data.Content, Embeds = data.Embeds, AllowedMentions = data.AllowedMentions, Components = data.Components, diff --git a/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs b/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs index 91fb24021..0a42b403e 100644 --- a/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs +++ b/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs @@ -424,12 +424,12 @@ namespace Discord.WebSocket } internal readonly AsyncEvent> _userJoinedEvent = new AsyncEvent>(); /// Fired when a user leaves a guild. - public event Func UserLeft + public event Func UserLeft { add { _userLeftEvent.Add(value); } remove { _userLeftEvent.Remove(value); } } - internal readonly AsyncEvent> _userLeftEvent = new AsyncEvent>(); + internal readonly AsyncEvent> _userLeftEvent = new AsyncEvent>(); /// Fired when a user is banned from a guild. public event Func UserBanned { @@ -452,12 +452,12 @@ namespace Discord.WebSocket } internal readonly AsyncEvent> _userUpdatedEvent = new AsyncEvent>(); /// Fired when a guild member is updated, or a member presence is updated. - public event Func, SocketGuildUser, Task> GuildMemberUpdated + public event Func, SocketGuildUser, Task> GuildMemberUpdated { add { _guildMemberUpdatedEvent.Add(value); } remove { _guildMemberUpdatedEvent.Remove(value); } } - internal readonly AsyncEvent, SocketGuildUser, Task>> _guildMemberUpdatedEvent = new AsyncEvent, SocketGuildUser, Task>>(); + internal readonly AsyncEvent, SocketGuildUser, Task>> _guildMemberUpdatedEvent = new AsyncEvent, SocketGuildUser, Task>>(); /// Fired when a user joins, leaves, or moves voice channels. public event Func UserVoiceStateUpdated { diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index eb64b5173..7c37cb1fa 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -1275,13 +1275,13 @@ namespace Discord.WebSocket var before = user.Clone(); user.Update(State, data); - var cacheableBefore = new Cacheable(before, user.Id, true, () => Task.FromResult((SocketGuildUser)null)); + var cacheableBefore = new Cacheable(null, user.Id, false, () => Rest.GetGuildUserAsync(guild.Id, user.Id)); await TimedInvokeAsync(_guildMemberUpdatedEvent, nameof(GuildMemberUpdated), cacheableBefore, user).ConfigureAwait(false); } else { user = guild.AddOrUpdateUser(data); - var cacheableBefore = new Cacheable(null, user.Id, false, () => Task.FromResult((SocketGuildUser)null)); + var cacheableBefore = new Cacheable(null, user.Id, false, () => Rest.GetGuildUserAsync(guild.Id, user.Id)); await TimedInvokeAsync(_guildMemberUpdatedEvent, nameof(GuildMemberUpdated), cacheableBefore, user).ConfigureAwait(false); } } @@ -1300,7 +1300,7 @@ namespace Discord.WebSocket var guild = State.GetGuild(data.GuildId); if (guild != null) { - var user = guild.RemoveUser(data.User.Id); + SocketUser user = guild.RemoveUser(data.User.Id); guild.MemberCount--; if (!guild.IsSynced) @@ -1309,16 +1309,10 @@ namespace Discord.WebSocket return; } - if (user != null) - await TimedInvokeAsync(_userLeftEvent, nameof(UserLeft), user).ConfigureAwait(false); - else - { - if (!guild.HasAllMembers) - await IncompleteGuildUserAsync(type, data.User.Id, data.GuildId).ConfigureAwait(false); - else - await UnknownGuildUserAsync(type, data.User.Id, data.GuildId).ConfigureAwait(false); - return; - } + if(user == null) + user = SocketGlobalUser.Create(this, State, data.User); + + await TimedInvokeAsync(_userLeftEvent, nameof(UserLeft), user).ConfigureAwait(false); } else { diff --git a/src/Discord.Net.WebSocket/Entities/Channels/ISocketMessageChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/ISocketMessageChannel.cs index 1103f8feb..3e9b635de 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/ISocketMessageChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/ISocketMessageChannel.cs @@ -34,14 +34,14 @@ namespace Discord.WebSocket /// If null, all mentioned roles and users will be notified. /// /// The message references to be included. Used to reply to specific messages. - /// The message components to be included with this message. Used for interactions. + /// The message components to be included with this message. Used for interactions. /// A collection of stickers to send with the message. /// A array of s to send with this response. Max 10. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - new Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null); + new Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null); /// /// Sends a file to this message channel with an optional caption. /// @@ -60,14 +60,14 @@ namespace Discord.WebSocket /// If null, all mentioned roles and users will be notified. /// /// The message references to be included. Used to reply to specific messages. - /// The message components to be included with this message. Used for interactions. + /// The message components to be included with this message. Used for interactions. /// A collection of stickers to send with the file. /// A array of s to send with this response. Max 10. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - new Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null); + new Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null); /// /// Sends a file to this message channel with an optional caption. /// @@ -87,14 +87,14 @@ namespace Discord.WebSocket /// If null, all mentioned roles and users will be notified. /// /// The message references to be included. Used to reply to specific messages. - /// The message components to be included with this message. Used for interactions. + /// The message components to be included with this message. Used for interactions. /// A collection of stickers to send with the file. /// A array of s to send with this response. Max 10. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - new Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null); + new Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null); /// /// Gets a cached message from this channel. diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs index ea00c9e03..f4fe12755 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs @@ -139,24 +139,24 @@ namespace Discord.WebSocket /// /// Message content is too long, length must be less or equal to . - public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); + public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, embeds); /// - public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, isSpoiler, embeds); + public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, isSpoiler, embeds); /// /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, isSpoiler, embeds); + public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, isSpoiler, embeds); /// /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(FileAttachment attachment, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendFileAsync(this, Discord, attachment, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); + public Task SendFileAsync(FileAttachment attachment, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, attachment, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, embeds); /// /// Message content is too long, length must be less or equal to . - public Task SendFilesAsync(IEnumerable attachments, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendFilesAsync(this, Discord, attachments, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); + public Task SendFilesAsync(IEnumerable attachments, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFilesAsync(this, Discord, attachments, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, embeds); /// public Task DeleteMessageAsync(ulong messageId, RequestOptions options = null) @@ -255,20 +255,20 @@ namespace Discord.WebSocket async Task> IMessageChannel.GetPinnedMessagesAsync(RequestOptions options) => await GetPinnedMessagesAsync(options).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(FileAttachment attachment, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendFileAsync(attachment, text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(FileAttachment attachment, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(attachment, text, isTTS, embed, options, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); /// - async Task IMessageChannel.SendFilesAsync(IEnumerable attachments, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendFilesAsync(attachments, text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendFilesAsync(IEnumerable attachments, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendFilesAsync(attachments, text, isTTS, embed, options, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); /// - async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); #endregion #region IChannel diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs index 1bbfa6e97..f1debb864 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs @@ -173,24 +173,24 @@ namespace Discord.WebSocket /// /// Message content is too long, length must be less or equal to . - public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); + public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, embeds); /// - public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, isSpoiler, embeds); + public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, isSpoiler, embeds); /// /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, isSpoiler, embeds); + public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, isSpoiler, embeds); /// /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(FileAttachment attachment, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendFileAsync(this, Discord, attachment, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); + public Task SendFileAsync(FileAttachment attachment, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, attachment, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, embeds); /// /// Message content is too long, length must be less or equal to . - public Task SendFilesAsync(IEnumerable attachments, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendFilesAsync(this, Discord, attachments, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); + public Task SendFilesAsync(IEnumerable attachments, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFilesAsync(this, Discord, attachments, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, embeds); /// public Task DeleteMessageAsync(ulong messageId, RequestOptions options = null) @@ -322,21 +322,21 @@ namespace Discord.WebSocket => await GetPinnedMessagesAsync(options).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(FileAttachment attachment, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendFileAsync(attachment, text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(FileAttachment attachment, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(attachment, text, isTTS, embed, options, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); /// - async Task IMessageChannel.SendFilesAsync(IEnumerable attachments, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendFilesAsync(attachments, text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendFilesAsync(IEnumerable attachments, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendFilesAsync(attachments, text, isTTS, embed, options, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); /// - async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); #endregion #region IAudioChannel diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs index 8dc8e9844..55085899d 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs @@ -211,27 +211,27 @@ namespace Discord.WebSocket /// /// Message content is too long, length must be less or equal to . - public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); + public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, embeds); /// - public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, isSpoiler, embeds); + public Task SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, filePath, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, isSpoiler, embeds); /// /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, isSpoiler, embeds); + public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, isSpoiler, embeds); /// /// Message content is too long, length must be less or equal to . - public Task SendFileAsync(FileAttachment attachment, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendFileAsync(this, Discord, attachment, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); + public Task SendFileAsync(FileAttachment attachment, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFileAsync(this, Discord, attachment, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, embeds); /// /// Message content is too long, length must be less or equal to . - public Task SendFilesAsync(IEnumerable attachments, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent component = null, ISticker[] stickers = null, Embed[] embeds = null) - => ChannelHelper.SendFilesAsync(this, Discord, attachments, text, isTTS, embed, allowedMentions, messageReference, component, stickers, options, embeds); + public Task SendFilesAsync(IEnumerable attachments, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null, MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null) + => ChannelHelper.SendFilesAsync(this, Discord, attachments, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, embeds); /// public Task DeleteMessagesAsync(IEnumerable messages, RequestOptions options = null) @@ -384,20 +384,20 @@ namespace Discord.WebSocket => await GetPinnedMessagesAsync(options).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(filePath, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(stream, filename, text, isTTS, embed, options, isSpoiler, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); /// - async Task IMessageChannel.SendFileAsync(FileAttachment attachment, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendFileAsync(attachment, text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendFileAsync(FileAttachment attachment, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendFileAsync(attachment, text, isTTS, embed, options, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); /// - async Task IMessageChannel.SendFilesAsync(IEnumerable attachments, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendFilesAsync(attachments, text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendFilesAsync(IEnumerable attachments, string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendFilesAsync(attachments, text, isTTS, embed, options, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); /// - async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent component, ISticker[] stickers, Embed[] embeds) - => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference, component, stickers, embeds).ConfigureAwait(false); + async Task IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, Embed[] embeds) + => await SendMessageAsync(text, isTTS, embed, options, allowedMentions, messageReference, components, stickers, embeds).ConfigureAwait(false); #endregion #region INestedChannel diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponent.cs b/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponent.cs index d5d5f959d..17038b23d 100644 --- a/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponent.cs +++ b/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponent.cs @@ -78,7 +78,7 @@ namespace Discord.WebSocket bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, - MessageComponent component = null, + MessageComponent components = null, Embed embed = null, RequestOptions options = null) { @@ -121,7 +121,7 @@ namespace Discord.WebSocket AllowedMentions = allowedMentions?.ToModel(), Embeds = embeds.Select(x => x.ToModel()).ToArray(), TTS = isTTS, - Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified + Components = components?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified } }; @@ -155,7 +155,7 @@ namespace Discord.WebSocket /// A delegate containing the properties to modify the message with. /// The request options for this request. /// A task that represents the asynchronous operation of updating the message. - public async Task UpdateAsync(Action func, RequestOptions options = null) + public async Task UpdateAsync(Action func, RequestOptions options = null) { var args = new MessageProperties(); func(args); @@ -236,7 +236,7 @@ namespace Discord.WebSocket } } - await InteractionHelper.SendInteractionResponseAsync(Discord, response, this, Channel, options).ConfigureAwait(false); + return await InteractionHelper.SendInteractionResponseAsync(Discord, response, this, Channel, options).ConfigureAwait(false); lock (_lock) { @@ -251,7 +251,7 @@ namespace Discord.WebSocket bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, - MessageComponent component = null, + MessageComponent components = null, Embed embed = null, RequestOptions options = null) { @@ -272,7 +272,7 @@ namespace Discord.WebSocket AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, IsTTS = isTTS, Embeds = embeds.Select(x => x.ToModel()).ToArray(), - Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified + Components = components?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified }; if (ephemeral) diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketApplicationCommandOption.cs b/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketApplicationCommandOption.cs index a19068d48..bdb03c8b0 100644 --- a/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketApplicationCommandOption.cs +++ b/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketApplicationCommandOption.cs @@ -25,6 +25,8 @@ namespace Discord.WebSocket /// public bool? IsRequired { get; private set; } + public bool? IsAutocomplete { get; private set; } + /// public double? MinValue { get; private set; } @@ -68,6 +70,8 @@ namespace Discord.WebSocket MaxValue = model.MaxValue.ToNullable(); + IsAutocomplete = model.Autocomplete.ToNullable(); + Choices = model.Choices.IsSpecified ? model.Choices.Value.Select(SocketApplicationCommandChoice.Create).ToImmutableArray() : ImmutableArray.Create(); diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketCommandBase.cs b/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketCommandBase.cs index 7c90878be..0a97bcd48 100644 --- a/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketCommandBase.cs +++ b/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketCommandBase.cs @@ -75,7 +75,7 @@ namespace Discord.WebSocket bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, - MessageComponent component = null, + MessageComponent components = null, Embed embed = null, RequestOptions options = null) { @@ -118,7 +118,7 @@ namespace Discord.WebSocket AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, Embeds = embeds.Select(x => x.ToModel()).ToArray(), TTS = isTTS, - Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified, + Components = components?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified, Flags = ephemeral ? MessageFlags.Ephemeral : Optional.Unspecified } }; @@ -151,7 +151,7 @@ namespace Discord.WebSocket bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, - MessageComponent component = null, + MessageComponent components = null, Embed embed = null, RequestOptions options = null) { @@ -172,7 +172,7 @@ namespace Discord.WebSocket AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, IsTTS = isTTS, Embeds = embeds.Select(x => x.ToModel()).ToArray(), - Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified + Components = components?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified }; if (ephemeral) diff --git a/src/Discord.Net.Webhook/DiscordWebhookClient.cs b/src/Discord.Net.Webhook/DiscordWebhookClient.cs index f7ad7301c..cb24f9ea1 100644 --- a/src/Discord.Net.Webhook/DiscordWebhookClient.cs +++ b/src/Discord.Net.Webhook/DiscordWebhookClient.cs @@ -87,8 +87,8 @@ namespace Discord.Webhook /// Sends a message to the channel for this webhook. /// Returns the ID of the created message. public Task SendMessageAsync(string text = null, bool isTTS = false, IEnumerable embeds = null, - string username = null, string avatarUrl = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageComponent component = null) - => WebhookClientHelper.SendMessageAsync(this, text, isTTS, embeds, username, avatarUrl, allowedMentions, options, component); + string username = null, string avatarUrl = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageComponent components = null) + => WebhookClientHelper.SendMessageAsync(this, text, isTTS, embeds, username, avatarUrl, allowedMentions, options, components); /// /// Modifies a message posted using this webhook. diff --git a/src/Discord.Net.Webhook/WebhookClientHelper.cs b/src/Discord.Net.Webhook/WebhookClientHelper.cs index 8b4bb5d2a..a9d5a25da 100644 --- a/src/Discord.Net.Webhook/WebhookClientHelper.cs +++ b/src/Discord.Net.Webhook/WebhookClientHelper.cs @@ -21,7 +21,7 @@ namespace Discord.Webhook return RestInternalWebhook.Create(client, model); } public static async Task SendMessageAsync(DiscordWebhookClient client, - string text, bool isTTS, IEnumerable embeds, string username, string avatarUrl, AllowedMentions allowedMentions, RequestOptions options, MessageComponent component) + string text, bool isTTS, IEnumerable embeds, string username, string avatarUrl, AllowedMentions allowedMentions, RequestOptions options, MessageComponent components) { var args = new CreateWebhookMessageParams { @@ -37,8 +37,8 @@ namespace Discord.Webhook args.AvatarUrl = avatarUrl; if (allowedMentions != null) args.AllowedMentions = allowedMentions.ToModel(); - if (component != null) - args.Components = component?.Components.Select(x => new API.ActionRowComponent(x)).ToArray(); + if (components != null) + args.Components = components?.Components.Select(x => new API.ActionRowComponent(x)).ToArray(); var model = await client.ApiClient.CreateWebhookMessageAsync(client.Webhook.Id, args, options: options).ConfigureAwait(false); return model.Id; diff --git a/src/Discord.Net/Discord.Net.nuspec b/src/Discord.Net/Discord.Net.nuspec index cb773a379..a2efc880b 100644 --- a/src/Discord.Net/Discord.Net.nuspec +++ b/src/Discord.Net/Discord.Net.nuspec @@ -13,26 +13,45 @@ false https://github.com/RogueException/Discord.Net/raw/dev/docs/marketing/logo/PackageLogo.png + + + + + + + + + + + + + + + + - - - - - - + + + + + + + - - - - - + + + + + + - - - - - - + + + + + + + From 7eb852ddd800230909650202ddb05d3fcb7c118f Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Mon, 13 Dec 2021 05:05:52 -0400 Subject: [PATCH 170/212] Add discord.net official discord server to readme --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 69a24a157..f07afaffb 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![NuGet](https://img.shields.io/nuget/vpre/Discord.Net.svg?maxAge=2592000?style=plastic)](https://www.nuget.org/packages/Discord.Net) [![MyGet](https://img.shields.io/myget/discord-net/vpre/Discord.Net.svg)](https://www.myget.org/feed/Packages/discord-net) [![Build Status](https://dev.azure.com/discord-net/Discord.Net/_apis/build/status/discord-net.Discord.Net?branchName=dev)](https://dev.azure.com/discord-net/Discord.Net/_build/latest?definitionId=1&branchName=dev) -[![Discord](https://discord.com/api/guilds/81384788765712384/widget.png)](https://discord.gg/jkrBmQR) +[![Discord](https://discord.com/api/guilds/81384788765712384/widget.png)](https://discord.gg/dnet) An unofficial .NET API Wrapper for the Discord client (https://discord.com). @@ -68,4 +68,4 @@ Due to the nature of the Discord API, we will oftentimes need to add a property Furthermore, while we will never break the API (outside of interface changes) on minor builds, we will occasionally need to break the ABI, by introducing parameters to a method to match changes upstream with Discord. As such, a minor version increment may require you to recompile your code, and dependencies, such as addons, may also need to be recompiled and republished on the newer version. When a binary breaking change is made, the change will be noted in the release notes. -An increment of the MAJOR component indicates that breaking changes have been made to the library; consumers should check the release notes to determine what changes need to be made. \ No newline at end of file +An increment of the MAJOR component indicates that breaking changes have been made to the library; consumers should check the release notes to determine what changes need to be made. From d889af6654494746dbb8fe1801e0f1f1f85931f6 Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Mon, 13 Dec 2021 05:06:29 -0400 Subject: [PATCH 171/212] Update widget --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f07afaffb..194bfa869 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![NuGet](https://img.shields.io/nuget/vpre/Discord.Net.svg?maxAge=2592000?style=plastic)](https://www.nuget.org/packages/Discord.Net) [![MyGet](https://img.shields.io/myget/discord-net/vpre/Discord.Net.svg)](https://www.myget.org/feed/Packages/discord-net) [![Build Status](https://dev.azure.com/discord-net/Discord.Net/_apis/build/status/discord-net.Discord.Net?branchName=dev)](https://dev.azure.com/discord-net/Discord.Net/_build/latest?definitionId=1&branchName=dev) -[![Discord](https://discord.com/api/guilds/81384788765712384/widget.png)](https://discord.gg/dnet) +[![Discord](https://discord.com/api/guilds/848176216011046962/widget.png)](https://discord.gg/dnet) An unofficial .NET API Wrapper for the Discord client (https://discord.com). From 6cfaa8f3388c02907805cfb4b214e5875aa30a9d Mon Sep 17 00:00:00 2001 From: quin lynch Date: Mon, 13 Dec 2021 09:21:13 -0400 Subject: [PATCH 172/212] Update CHANGELOG.md --- CHANGELOG.md | 101 +++++++++++++++++++++++---------------------------- 1 file changed, 46 insertions(+), 55 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dd07045e1..9a0ff85a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,38 +4,48 @@ ### Added +- #1152 Add characters commonly use in links to Sanitize (b9274d1) +- #1518 Add default nullable enum typereader (f7a07ae) +- #1700 Added Implementation of ValidateAndGetBestMatch (3cd9f39) - #1767 Add method to clear guild user cache (19a66bf) - #1847 Bump API version to 9 (06a64b7) - #1848 Remove obsolete sync voice regions methods and properties (ed8e573) - #1851 Remove DM cache and fix references (7a201e9) - #1860 Remove /users/@me call for socket and rework sharded client a bit (384ad85) - #1863 Change GuildMemberUpdate before state to cacheable (c2e87f5) +- #1666 Added negative TimeSpan handling (6abdfcb) +- #1861 Add MaxBitrate to the interface (e0dbe7c) +- #1865 Add null check to AllowedMentions.ToModel() (3cb662f) - #1879 Add Name property to Teams (c5b4b64) +- #1890 Add default avatar to WithAuthor extension (c200861) - #1896 IVoiceChannel implements IMentionable (3395700) - #1943 Handle bidirectional usernames (10afd96) -- #1948 warn on invalid gateway intents (51e06e9) -- #1949 default application games (82276e3) -- #1923 Added Interaction Support (933ea42). -- #1923 Added Application commands (933ea42). -- #1923 Added Message Components (933ea42). -- #1923 Added Thread Channels (933ea42). -- #1923 Added Stage Channels (933ea42). -- #1923 Added Guild Events (933ea42). -- #1923 Revamped Stickers (933ea42). -- #1923 Added `TimestampTag` (933ea42). -- #1923 Added `Name` property to teams (933ea42). -- #1923 Added url validation to embeds (933ea42). -- #1923 Added `NsfwLevel` to Guilds (933ea42). -- #1923 Added helpers to `Emoji` for parsing (933ea42). -- #1923 Added banner and accent color to guild users (933ea42). -- #1923 Added `RatelimitCallback` to `RequestOptions` (933ea42). -- #1923 Added `Emoji` to roles (933ea42). -- #1923 Added `UseInteractionSnowflakeDate` to config (933ea42). -- #1923 Added checks for gateway intent in some methods. DownloadUsersAsync will throw an exception if you don't have the gateway intent enabled locally now, this will help with the vauge error that was given before (933ea42). -- #1923 Added SendFilesAsync to channels (933ea42). -- #1923 Added Attachments property to MessageProperties (933ea42). -- #1958 Added NET5.0 and NET6.0 builds (aa6bb5e). -- #1958 Added `Discord.Interactions` (aa6bb5e). +- #1948 Added warnings on invalid gateway intents (51e06e9) +- #1949 Add default application games (82276e3) +- #1923 Add Interaction Support (933ea42) +- #1923 Add Application commands (933ea42) +- #1923 Add Message Components (933ea42) +- #1923 Add Thread Channels (933ea42) +- #1923 Add Stage Channels (933ea42) +- #1923 Add Guild Events (933ea42) +- #1923 Revamped Stickers (933ea42) +- #1923 Add TimestampTag (933ea42) +- #1923 Add name property to teams (933ea42) +- #1923 Add url validation on embeds (933ea42) +- #1923 Add NsfwLevel to Guilds (933ea42) +- #1923 Add helpers to Emoji for parsing (933ea42) +- #1923 Add banner and accent color to guild users (933ea42) +- #1923 Add RatelimitCallback to RequestOptions (933ea42) +- #1923 Add Emoji to roles (933ea42) +- #1923 Add UseInteractionSnowflakeDate to config (933ea42) +- #1923 Add checks for gateway intent in some methods (933ea42) +- #1923 Add SendFilesAsync to channels (933ea42) +- #1923 Add Attachments property to MessageProperties (933ea42) +- #1942 Add multi-file upload to webhooks (bc440ab) +- #1944 Add Voice binaries (b5c150d) +- #1950 Add custom setter to Group property of ModuleBuilder to automatically invoke AddAliases (ba656e9) +- #1958 Add NET5.0 and NET6.0 builds (aa6bb5e) +- #1958 Add Discord.Interactions framework (aa6bb5e) ### Fixed @@ -45,49 +55,30 @@ - #1853 Fire GuildMemberUpdated without cached user (d176fef) - #1854 Gateway events for DMs (a7ff6ce) - #1858 MessageUpdated without author (8b29e0f) -- #1859 Add missing AddRef and related (de7f9b5) +- #1859 Fix missing AddRef and related (de7f9b5) - #1862 Message update without author (fabe034) - #1864 ApiClient.CurrentUser being null (08507c0) -- #1871 Add empty role list if not present (f47001a) +- #1871 Fix empty role list if not present (f47001a) - #1872 Connection deadlock when trying to Send and Disconnect (97d90b9) - #1873 Remove OperationCanceledException handling in connecting logic (7cf8499) - #1876 Message type (ac52a11) - #1877 Rest message type (22bb1b0) - #1886 Change embed description max length to 4096 (8349cd7) -- #1890 Add default avatar to WithAuthor extension (c200861) +- #1923 Fix ReactionAdded cached parameters (933ea42) +- #1923 Fixed GuildMemberUpdated cached parameters (933ea42) +- #1923 Fixed UserIsTypeing cached parameters (933ea42) +- #1941 Fix Emote.TryParse (900c1f4) +- #1946 NRE when adding parameters thru builders (143ca6d) +- #1947 ShardedClient's CurrentUser interface property being null (d5f5ae1) ### Misc -- #20 Update EmbedBuilder.Overwrites.md (76a878a) -- #21 Fix line about PriorityAttribute (75b74e1) -- #1152 Add characters commonly use in links to Sanitize (b9274d1) -- #1518 Add default nullable enum typereader (f7a07ae) -- #1666 Added negative TimeSpan handling (6abdfcb) - #1852 Internal change to GetOrCreateUser (dfaaa21) -- #1861 Add MaxBitrate to the interface (e0dbe7c) -- #1865 Add null check to AllowedMentions.ToModel() (3cb662f) -- #1923 Merge Labs 3.X into dev (933ea42) -- #1941 Fix emoto try parse (900c1f4) -- #1942 Implement multi-file upload to webhooks (bc440ab) -- #1944 Add Voice binaries (b5c150d) -- #1945 Update socket presence and add new presence event (9d6dc62) -- #1946 fix NRE when adding parameters thru builders (143ca6d) -- #1947 fix sharded client current user (d5f5ae1) -- #1950 Add custom setter to Group property of ModuleBuilder to automatically invoke AddAliases (ba656e9) -- #1958 Update from Discord .Net Labs 3.4.8 (aa6bb5e) -- #1959 Update isRequired (98b03be) -- Add `MatchResult` (d1b31c8) -- Add requested changes (a92ec56) -- Fix incorrect casing on `HandleCommandPipeline` (adf3a9c) -- Merge branch 'commands/validate-get-best-match' of https://github.com/siscodeorg/Discord.Net into siscodeorg-commands/validate-get-best-match (3cd9f39) -- Merge branch 'siscodeorg-commands/validate-get-best-match' into dev (4f1fe2b) -- Remove docs build from azure pipelines (2336b98) -- use async main (125f6c7) -- #1923 Made `Hierarchy` a `IGuildUser` property. -- #1923 Changed embed discription length to 4096 (933ea42). -- #1923 Fixed gateway serialization to include nulls for API v9 (933ea42). -- #1923 Removed error log for gateway reconnects (933ea42). -- #1966 Updated docs. +- #1923 Make Hierarchy a IGuildUser property (933ea42) +- #1923 Changed embed discription length to 4096 (933ea42) +- #1923 Fixed gateway serialization to include nulls for API v9 (933ea42) +- #1923 Removed error log for gateway reconnects (933ea42) +- #1945 Updated socket presence and add new presence event (9d6dc62) ## [2.4.0] - 2021-05-22 From d1da88d1705ba9ad3fbf9760aeda23319b5a235f Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Tue, 14 Dec 2021 00:44:19 -0400 Subject: [PATCH 173/212] Update changelog order --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a0ff85a7..08d49a913 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,9 +19,6 @@ - #1879 Add Name property to Teams (c5b4b64) - #1890 Add default avatar to WithAuthor extension (c200861) - #1896 IVoiceChannel implements IMentionable (3395700) -- #1943 Handle bidirectional usernames (10afd96) -- #1948 Added warnings on invalid gateway intents (51e06e9) -- #1949 Add default application games (82276e3) - #1923 Add Interaction Support (933ea42) - #1923 Add Application commands (933ea42) - #1923 Add Message Components (933ea42) @@ -42,7 +39,10 @@ - #1923 Add SendFilesAsync to channels (933ea42) - #1923 Add Attachments property to MessageProperties (933ea42) - #1942 Add multi-file upload to webhooks (bc440ab) +- #1943 Handle bidirectional usernames (10afd96) - #1944 Add Voice binaries (b5c150d) +- #1948 Added warnings on invalid gateway intents (51e06e9) +- #1949 Add default application games (82276e3) - #1950 Add custom setter to Group property of ModuleBuilder to automatically invoke AddAliases (ba656e9) - #1958 Add NET5.0 and NET6.0 builds (aa6bb5e) - #1958 Add Discord.Interactions framework (aa6bb5e) From bedfb96fe444e9da87fcfb1c11498721346065bd Mon Sep 17 00:00:00 2001 From: quin lynch Date: Tue, 14 Dec 2021 16:05:11 -0400 Subject: [PATCH 174/212] Update CHANGELOG.md --- CHANGELOG.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 08d49a913..51374d1a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,11 +40,10 @@ - #1923 Add Attachments property to MessageProperties (933ea42) - #1942 Add multi-file upload to webhooks (bc440ab) - #1943 Handle bidirectional usernames (10afd96) -- #1944 Add Voice binaries (b5c150d) +- #1945 Updated socket presence and add new presence event (9d6dc62) - #1948 Added warnings on invalid gateway intents (51e06e9) - #1949 Add default application games (82276e3) - #1950 Add custom setter to Group property of ModuleBuilder to automatically invoke AddAliases (ba656e9) -- #1958 Add NET5.0 and NET6.0 builds (aa6bb5e) - #1958 Add Discord.Interactions framework (aa6bb5e) ### Fixed @@ -61,24 +60,22 @@ - #1871 Fix empty role list if not present (f47001a) - #1872 Connection deadlock when trying to Send and Disconnect (97d90b9) - #1873 Remove OperationCanceledException handling in connecting logic (7cf8499) -- #1876 Message type (ac52a11) -- #1877 Rest message type (22bb1b0) +- #1876 Fix SocketMessage type always being default (ac52a11) +- #1877 Fix RestMessage type always being default (22bb1b0) - #1886 Change embed description max length to 4096 (8349cd7) - #1923 Fix ReactionAdded cached parameters (933ea42) - #1923 Fixed GuildMemberUpdated cached parameters (933ea42) - #1923 Fixed UserIsTypeing cached parameters (933ea42) - #1941 Fix Emote.TryParse (900c1f4) -- #1946 NRE when adding parameters thru builders (143ca6d) +- #1946 Fix NRE when adding parameters in ModuleBuilders (143ca6d) - #1947 ShardedClient's CurrentUser interface property being null (d5f5ae1) ### Misc - #1852 Internal change to GetOrCreateUser (dfaaa21) - #1923 Make Hierarchy a IGuildUser property (933ea42) -- #1923 Changed embed discription length to 4096 (933ea42) - #1923 Fixed gateway serialization to include nulls for API v9 (933ea42) - #1923 Removed error log for gateway reconnects (933ea42) -- #1945 Updated socket presence and add new presence event (9d6dc62) ## [2.4.0] - 2021-05-22 From c24b7a145af0a6292abd4d9f8c264191d48e1417 Mon Sep 17 00:00:00 2001 From: quin lynch Date: Wed, 15 Dec 2021 01:09:32 -0400 Subject: [PATCH 175/212] Fix Discord.Interactions csproj --- src/Discord.Net.Interactions/Discord.Net.Interactions.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Discord.Net.Interactions/Discord.Net.Interactions.csproj b/src/Discord.Net.Interactions/Discord.Net.Interactions.csproj index 7eeb819ca..e56459e44 100644 --- a/src/Discord.Net.Interactions/Discord.Net.Interactions.csproj +++ b/src/Discord.Net.Interactions/Discord.Net.Interactions.csproj @@ -6,7 +6,7 @@ net6.0;net5.0;netstandard2.0;netstandard2.1 Discord.Interactions Discord.Net.Interactions - Discord.Net.Labs.Interactions + Discord.Net.Interactions A Discord.Net extension adding support for Application Commands. From 52e201999007acb6a4a30256fd0ba76590eeaa40 Mon Sep 17 00:00:00 2001 From: Adam Gauthier Date: Sat, 18 Dec 2021 01:21:33 -0800 Subject: [PATCH 176/212] Fix NRE on http error handling (#1970) In some cases, the code is not able to deserialize API.DiscordError, but it attempts to use its message to throw an exception. This change uses null as the exception reason in that case. --- .../Net/Queue/RequestQueueBucket.cs | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs b/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs index d9f4ba57a..2921678f7 100644 --- a/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs +++ b/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs @@ -1,6 +1,4 @@ -using Discord.API; using Newtonsoft.Json; -using Newtonsoft.Json.Linq; using System; #if DEBUG_LIMITS using System.Diagnostics; @@ -106,17 +104,22 @@ namespace Discord.Net.Queue { try { - using (var reader = new StreamReader(response.Stream)) - using (var jsonReader = new JsonTextReader(reader)) - { - error = Discord.Rest.DiscordRestClient.Serializer.Deserialize(jsonReader); - } + using var reader = new StreamReader(response.Stream); + using var jsonReader = new JsonTextReader(reader); + + error = Discord.Rest.DiscordRestClient.Serializer.Deserialize(jsonReader); } catch { } } - throw new HttpException(response.StatusCode, request, error?.Code, error.Message, error.Errors.IsSpecified - ? error.Errors.Value.Select(x => new DiscordJsonError(x.Name.GetValueOrDefault("root"), x.Errors.Select(y => new DiscordError(y.Code, y.Message)).ToArray())).ToArray() - : null); + throw new HttpException( + response.StatusCode, + request, + error?.Code, + error?.Message, + error?.Errors.IsSpecified == true ? + error.Errors.Value.Select(x => new DiscordJsonError(x.Name.GetValueOrDefault("root"), x.Errors.Select(y => new DiscordError(y.Code, y.Message)).ToArray())).ToArray() : + null + ); } } else From 6c7502da685a95d5c855665b99af0f6de4d0eec1 Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Sun, 19 Dec 2021 03:41:58 -0400 Subject: [PATCH 177/212] Update to Labs 3.5.0 (#1971) * Merge https://github.com/Discord-Net-Labs/Discord.Net-Labs into patch/labs3.5.0 * Add missing periods --- docs/faq/basics/basic-operations.md | 24 +-- docs/guides/getting_started/installing.md | 4 +- docs/guides/v2_v3_guide/v2_to_v3_guide.md | 21 ++- docs/index.md | 8 +- src/Discord.Net.Commands/CommandService.cs | 4 +- .../Discord.Net.Commands.csproj | 5 +- src/Discord.Net.Core/Discord.Net.Core.csproj | 17 +- src/Discord.Net.Core/DiscordErrorCode.cs | 2 +- src/Discord.Net.Core/Entities/IApplication.cs | 13 +- .../Interactions/IDiscordInteraction.cs | 155 ++++++++++++++++-- .../Entities/Messages/FileAttachment.cs | 8 +- .../Interactions/IRestInteractionContext.cs | 19 +++ .../RequireBotPermissionAttribute.cs | 84 ++++++++++ .../Preconditions/RequireContextAttribute.cs | 72 ++++++++ .../Preconditions/RequireNsfwAttribute.cs | 42 +++++ .../Preconditions/RequireOwnerAttribute.cs | 36 ++++ .../Preconditions/RequireRoleAttribute.cs | 71 ++++++++ .../RequireUserPermissionAttribute.cs | 81 +++++++++ .../AutocompleteHandler.cs | 6 +- .../Discord.Net.Interactions.csproj | 1 - .../RestInteractionModuleBase.cs | 14 +- .../API/Common/Application.cs | 7 +- .../API/Rest/UploadInteractionFileParams.cs | 99 +++++++++++ src/Discord.Net.Rest/Discord.Net.Rest.csproj | 2 +- src/Discord.Net.Rest/DiscordRestApiClient.cs | 15 +- .../Entities/Channels/ChannelHelper.cs | 3 +- .../Interactions/InteractionHelper.cs | 12 +- .../Entities/Interactions/RestInteraction.cs | 21 ++- .../Messages/RestInteractionMessage.cs | 14 -- .../Entities/RestApplication.cs | 8 +- .../Interactions/RestInteractionContext.cs | 42 ++++- src/Discord.Net.Rest/Net/DefaultRestClient.cs | 3 +- .../Net/Queue/RequestQueueBucket.cs | 1 + .../BaseSocketClient.Events.cs | 8 +- .../DiscordShardedClient.cs | 2 +- .../DiscordSocketClient.cs | 12 +- .../SocketMessageComponent.cs | 155 ++++++++---------- .../SocketAutocompleteInteraction.cs | 10 +- .../SocketBaseCommand/SocketCommandBase.cs | 117 +++++++------ .../Entities/Interaction/SocketInteraction.cs | 129 +++++++++++++-- .../Discord.Net.Webhook.csproj | 2 +- 41 files changed, 1087 insertions(+), 262 deletions(-) create mode 100644 src/Discord.Net.Core/Interactions/IRestInteractionContext.cs create mode 100644 src/Discord.Net.Interactions/Attributes/Preconditions/RequireBotPermissionAttribute.cs create mode 100644 src/Discord.Net.Interactions/Attributes/Preconditions/RequireContextAttribute.cs create mode 100644 src/Discord.Net.Interactions/Attributes/Preconditions/RequireNsfwAttribute.cs create mode 100644 src/Discord.Net.Interactions/Attributes/Preconditions/RequireOwnerAttribute.cs create mode 100644 src/Discord.Net.Interactions/Attributes/Preconditions/RequireRoleAttribute.cs create mode 100644 src/Discord.Net.Interactions/Attributes/Preconditions/RequireUserPermissionAttribute.cs create mode 100644 src/Discord.Net.Rest/API/Rest/UploadInteractionFileParams.cs diff --git a/docs/faq/basics/basic-operations.md b/docs/faq/basics/basic-operations.md index ee2edef94..d6121dbb0 100644 --- a/docs/faq/basics/basic-operations.md +++ b/docs/faq/basics/basic-operations.md @@ -109,15 +109,15 @@ reactions. Unfortunately, not at the moment. See [#401](https://github.com/discord-net/Discord.Net/issues/401). -[ichannel]: xref:Discord.IChannel -[icategorychannel]: xref:Discord.ICategoryChannel -[iguildchannel]: xref:Discord.IGuildChannel -[itextchannel]: xref:Discord.ITextChannel -[iguild]: xref:Discord.IGuild -[ivoicechannel]: xref:Discord.IVoiceChannel -[iguilduser]: xref:Discord.IGuildUser -[imessagechannel]: xref:Discord.IMessageChannel -[iusermessage]: xref:Discord.IUserMessage -[iemote]: xref:Discord.IEmote -[emote]: xref:Discord.Emote -[emoji]: xref:Discord.Emoji +[IChannel]: xref:Discord.IChannel +[ICategoryChannel]: xref:Discord.ICategoryChannel +[IGuildChannel]: xref:Discord.IGuildChannel +[ITextChannel]: xref:Discord.ITextChannel +[IGuild]: xref:Discord.IGuild +[IVoiceChannel]: xref:Discord.IVoiceChannel +[IGuildUser]: xref:Discord.IGuildUser +[IMessageChannel]: xref:Discord.IMessageChannel +[IUserMessage]: xref:Discord.IUserMessage +[IEmote]: xref:Discord.IEmote +[Emote]: xref:Discord.Emote +[Emoji]: xref:Discord.Emoji diff --git a/docs/guides/getting_started/installing.md b/docs/guides/getting_started/installing.md index 09dc32837..0dde72380 100644 --- a/docs/guides/getting_started/installing.md +++ b/docs/guides/getting_started/installing.md @@ -100,7 +100,7 @@ installation. ### Using Command Line -- [.NET 5 SDK] +* [.NET 5 SDK] ## Additional Information @@ -143,4 +143,4 @@ by installing one or more custom packages as listed below. --- -[.net 5 sdk]: https://dotnet.microsoft.com/download +[.NET 5 SDK]: https://dotnet.microsoft.com/download diff --git a/docs/guides/v2_v3_guide/v2_to_v3_guide.md b/docs/guides/v2_v3_guide/v2_to_v3_guide.md index 2bd914e17..2a47b42bb 100644 --- a/docs/guides/v2_v3_guide/v2_to_v3_guide.md +++ b/docs/guides/v2_v3_guide/v2_to_v3_guide.md @@ -5,26 +5,29 @@ title: V2 -> V3 Guide # V2 to V3 Guide -V3 is designed to be a more feature complete, more reliable, and more flexible library than any previous version. +V3 is designed to be a more feature complete, more reliable, +and more flexible library than any previous version. Below are the most notable breaking changes that you would need to update your code to work with V3. -### GuildMemberUpdated Event - -The guild member updated event now passes a `Cacheable` for the first argument instead of a normal `SocketGuildUser`. This new cacheable type allows you to download a `RestGuildUser` if the user isn't cached. - ### ReactionAdded Event -The reaction added event has been changed to have both parameters cacheable. This allows you to download the channel and message if they aren't cached instead of them being null. +The reaction added event has been changed to have both parameters cacheable. +This allows you to download the channel and message if they aren't cached instead of them being null. ### UserIsTyping Event -THe user is typing event has been changed to have both parameters cacheable. This allows you to download the user and channel if they aren't cached instead of them being null. +The user is typing event has been changed to have both parameters cacheable. +This allows you to download the user and channel if they aren't cached instead of them being null. ### Presence -There is a new event called `PresenceUpdated` that is called when a user's presence changes, instead of `GuildMemberUpdated` or `UserUpdated`. If your code relied on these events to get presence data then you need to update it to work with the new event. +There is a new event called `PresenceUpdated` that is called when a user's presence changes, +instead of `GuildMemberUpdated` or `UserUpdated`. +If your code relied on these events to get presence data then you need to update it to work with the new event. ## Migrating your commands to slash command -The new InteractionService was designed to act like the previous service for text-based commands. Your pre-existing code will continue to work, but you will need to migrate your modules and response functions to use the new InteractionService methods. Docs on this can be found [here](xref:Guides.IntFw.Intro) +The new InteractionService was designed to act like the previous service for text-based commands. +Your pre-existing code will continue to work, but you will need to migrate your modules and response functions to use the new +InteractionService methods. Docs on this can be found in the Guides section. diff --git a/docs/index.md b/docs/index.md index 8a87963ea..32b0498ea 100644 --- a/docs/index.md +++ b/docs/index.md @@ -37,14 +37,14 @@ for testing and development to eventually get merged into Discord.NET. [Installing Discord.NET Labs](xref:Guides.GettingStarted.Installation.Labs) -[discord.net labs]: https://github.com/Discord-Net-Labs/Discord.Net-Labs +[Discord.NET Labs]: https://github.com/Discord-Net-Labs/Discord.Net-Labs ## Questions? -Frequently asked questions are covered in the -FAQ. Read it thoroughly because most common questions are already answered there. +Frequently asked questions are covered in the +FAQ. Read it thoroughly because most common questions are already answered there. -If you still have unanswered questions after reading the [FAQ](xref:FAQ.Basics.GetStarted), further support is available on +If you still have unanswered questions after reading the [FAQ](xref:FAQ.Basics.GetStarted), further support is available on [Discord](https://discord.gg/dnet). ## Commonly used features diff --git a/src/Discord.Net.Commands/CommandService.cs b/src/Discord.Net.Commands/CommandService.cs index f9552ef4b..e2bfeeb44 100644 --- a/src/Discord.Net.Commands/CommandService.cs +++ b/src/Discord.Net.Commands/CommandService.cs @@ -643,12 +643,12 @@ namespace Discord.Commands var bestMatch = parseResults .FirstOrDefault(x => !x.Value.IsSuccess); - return MatchResult.FromSuccess(bestMatch.Key,bestMatch.Value); + return MatchResult.FromSuccess(bestMatch.Key, bestMatch.Value); } var chosenOverload = successfulParses[0]; - return MatchResult.FromSuccess(chosenOverload.Key,chosenOverload.Value); + return MatchResult.FromSuccess(chosenOverload.Key, chosenOverload.Value); } #endregion diff --git a/src/Discord.Net.Commands/Discord.Net.Commands.csproj b/src/Discord.Net.Commands/Discord.Net.Commands.csproj index 811a0470e..fea719016 100644 --- a/src/Discord.Net.Commands/Discord.Net.Commands.csproj +++ b/src/Discord.Net.Commands/Discord.Net.Commands.csproj @@ -1,6 +1,6 @@ - + Discord.Net.Commands Discord.Commands @@ -11,5 +11,4 @@ - - \ No newline at end of file + diff --git a/src/Discord.Net.Core/Discord.Net.Core.csproj b/src/Discord.Net.Core/Discord.Net.Core.csproj index bfbff6f5c..783565e04 100644 --- a/src/Discord.Net.Core/Discord.Net.Core.csproj +++ b/src/Discord.Net.Core/Discord.Net.Core.csproj @@ -9,11 +9,20 @@ net6.0;net5.0;netstandard2.0;netstandard2.1 - - - - + + + all + + + + + + + + + + \ No newline at end of file diff --git a/src/Discord.Net.Core/DiscordErrorCode.cs b/src/Discord.Net.Core/DiscordErrorCode.cs index 61516a0ff..03f8b19e9 100644 --- a/src/Discord.Net.Core/DiscordErrorCode.cs +++ b/src/Discord.Net.Core/DiscordErrorCode.cs @@ -150,7 +150,7 @@ namespace Discord ServerLocaleUnavailable = 50095, ServerRequiresMonetization = 50097, ServerRequiresBoosts = 50101, - + RequestBodyContainsInvalidJSON = 50109, #endregion #region 2FA (60XXX) diff --git a/src/Discord.Net.Core/Entities/IApplication.cs b/src/Discord.Net.Core/Entities/IApplication.cs index 9f9881340..d25e82c4b 100644 --- a/src/Discord.Net.Core/Entities/IApplication.cs +++ b/src/Discord.Net.Core/Entities/IApplication.cs @@ -19,6 +19,9 @@ namespace Discord /// Gets the RPC origins of the application. /// IReadOnlyCollection RPCOrigins { get; } + /// + /// Gets the application's public flags. + /// ApplicationFlags Flags { get; } /// /// Gets a collection of install parameters for this application. @@ -44,10 +47,18 @@ namespace Discord /// Gets the team associated with this application if there is one. /// ITeam Team { get; } - /// /// Gets the partial user object containing info on the owner of the application. /// IUser Owner { get; } + /// + /// Gets the url of the app's terms of service. + /// + public string TermsOfService { get; } + /// + /// Gets the the url of the app's privacy policy. + /// + public string PrivacyPolicy { get; } + } } diff --git a/src/Discord.Net.Core/Entities/Interactions/IDiscordInteraction.cs b/src/Discord.Net.Core/Entities/Interactions/IDiscordInteraction.cs index 77971b9f3..9988e238c 100644 --- a/src/Discord.Net.Core/Entities/Interactions/IDiscordInteraction.cs +++ b/src/Discord.Net.Core/Entities/Interactions/IDiscordInteraction.cs @@ -48,17 +48,119 @@ namespace Discord /// if the message should be read out by a text-to-speech reader, otherwise . /// if the response should be hidden to everyone besides the invoker of the command, otherwise . /// The allowed mentions for this response. - /// The request options for this response. /// A to be sent with this response. /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// The request options for this response. /// /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - Task RespondAsync(string text = null, Embed[] embeds = null, bool isTTS = false, + Task RespondAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); /// + /// Responds to this interaction with a file attachment. + /// + /// The file to upload. + /// The file name of the attachment. + /// The text of the message to be sent. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// The request options for this response. + /// + /// A task that represents an asynchronous send operation for delivering the message. The task result + /// contains the sent message. + /// +#if NETCOREAPP3_0_OR_GREATER + async Task RespondWithFileAsync(Stream fileStream, string fileName, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) + { + using(var file = new FileAttachment(fileStream, fileName)) + { + await RespondWithFileAsync(file, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); + } + } +#else + Task RespondWithFileAsync(Stream fileStream, string fileName, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); +#endif + /// + /// Responds to this interaction with a file attachment. + /// + /// The file to upload. + /// The file name of the attachment. + /// The text of the message to be sent. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// The request options for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// + /// A task that represents an asynchronous send operation for delivering the message. The task result + /// contains the sent message. + /// +#if NETCOREAPP3_0_OR_GREATER + async Task RespondWithFileAsync(string filePath, string fileName = null, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) + { + using (var file = new FileAttachment(filePath, fileName)) + { + await RespondWithFileAsync(file, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); + } + } +#else + Task RespondWithFileAsync(string filePath, string fileName = null, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); +#endif + /// + /// Responds to this interaction with a file attachment. + /// + /// The attachment containing the file and description. + /// The text of the message to be sent. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// The request options for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// + /// A task that represents an asynchronous send operation for delivering the message. The task result + /// contains the sent message. + /// +#if NETCOREAPP3_0_OR_GREATER + Task RespondWithFileAsync(FileAttachment attachment, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) + => RespondWithFilesAsync(new FileAttachment[] { attachment }, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options); +#else + Task RespondWithFileAsync(FileAttachment attachment, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); +#endif + /// + /// Responds to this interaction with a collection of file attachments. + /// + /// A collection of attachments to upload. + /// The text of the message to be sent. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// The request options for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// + /// A task that represents an asynchronous send operation for delivering the message. The task result + /// contains the sent message. + /// + Task RespondWithFilesAsync(IEnumerable attachments, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); + /// /// Sends a followup message for this interaction. /// /// The text of the message to be sent. @@ -75,13 +177,12 @@ namespace Discord /// Task FollowupAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); - /// /// Sends a followup message for this interaction. /// - /// The text of the message to be sent. /// The file to upload. /// The file name of the attachment. + /// The text of the message to be sent. /// A array of embeds to send with this response. Max 10. /// if the message should be read out by a text-to-speech reader, otherwise . /// if the response should be hidden to everyone besides the invoker of the command, otherwise . @@ -93,15 +194,25 @@ namespace Discord /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - public Task FollowupWithFileAsync(Stream fileStream, string fileName, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, +#if NETCOREAPP3_0_OR_GREATER + async Task FollowupWithFileAsync(Stream fileStream, string fileName, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) + { + using(var file = new FileAttachment(fileStream, fileName)) + { + return await FollowupWithFileAsync(file, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); + } + } +#else + Task FollowupWithFileAsync(Stream fileStream, string fileName, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); - +#endif /// /// Sends a followup message for this interaction. /// - /// The text of the message to be sent. /// The file to upload. /// The file name of the attachment. + /// The text of the message to be sent. /// A array of embeds to send with this response. Max 10. /// if the message should be read out by a text-to-speech reader, otherwise . /// if the response should be hidden to everyone besides the invoker of the command, otherwise . @@ -113,8 +224,19 @@ namespace Discord /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - public Task FollowupWithFileAsync(string filePath, string fileName = null, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, +#if NETCOREAPP3_0_OR_GREATER + async Task FollowupWithFileAsync(string filePath, string fileName = null, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) + { + using (var file = new FileAttachment(filePath, fileName)) + { + return await FollowupWithFileAsync(file, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); + } + } +#else + Task FollowupWithFileAsync(string filePath, string fileName = null, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); +#endif /// /// Sends a followup message for this interaction. /// @@ -131,8 +253,14 @@ namespace Discord /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// +#if NETCOREAPP3_0_OR_GREATER + Task FollowupWithFileAsync(FileAttachment attachment, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) + => FollowupWithFilesAsync(new FileAttachment[] { attachment }, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options); +#else Task FollowupWithFileAsync(FileAttachment attachment, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); +#endif /// /// Sends a followup message for this interaction. /// @@ -151,14 +279,12 @@ namespace Discord /// Task FollowupWithFilesAsync(IEnumerable attachments, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); - /// /// Gets the original response for this interaction. /// /// The request options for this request. /// A that represents the initial response. Task GetOriginalResponseAsync(RequestOptions options = null); - /// /// Edits original response for this interaction. /// @@ -169,7 +295,14 @@ namespace Discord /// contains the updated message. /// Task ModifyOriginalResponseAsync(Action func, RequestOptions options = null); - + /// + /// Deletes the original response to this interaction. + /// + /// The request options for this request. + /// + /// A task that represents an asynchronous deletion operation. + /// + Task DeleteOriginalResponseAsync(RequestOptions options = null); /// /// Acknowledges this interaction. /// diff --git a/src/Discord.Net.Core/Entities/Messages/FileAttachment.cs b/src/Discord.Net.Core/Entities/Messages/FileAttachment.cs index dc5437861..582f5c2e7 100644 --- a/src/Discord.Net.Core/Entities/Messages/FileAttachment.cs +++ b/src/Discord.Net.Core/Entities/Messages/FileAttachment.cs @@ -25,6 +25,7 @@ namespace Discord /// The stream to create the attachment from. /// The name of the attachment. /// The description of the attachment. + /// Whether or not the attachment is a spoiler. public FileAttachment(Stream stream, string fileName, string description = null, bool isSpoiler = false) { _isDisposed = false; @@ -42,6 +43,9 @@ namespace Discord /// . /// /// The path to the file. + /// The name of the attachment. + /// The description of the attachment. + /// Whether or not the attachment is a spoiler. /// /// is a zero-length string, contains only white space, or contains one or more invalid /// characters as defined by . @@ -62,11 +66,11 @@ namespace Discord /// The file specified in was not found. /// /// An I/O error occurred while opening the file. - public FileAttachment(string path, string description = null, bool isSpoiler = false) + public FileAttachment(string path, string fileName = null, string description = null, bool isSpoiler = false) { _isDisposed = false; Stream = File.OpenRead(path); - FileName = Path.GetFileName(path); + FileName = fileName ?? Path.GetFileName(path); Description = description; IsSpoiler = isSpoiler; } diff --git a/src/Discord.Net.Core/Interactions/IRestInteractionContext.cs b/src/Discord.Net.Core/Interactions/IRestInteractionContext.cs new file mode 100644 index 000000000..2aa5156b4 --- /dev/null +++ b/src/Discord.Net.Core/Interactions/IRestInteractionContext.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord +{ + public interface IRestInteractionContext : IInteractionContext + { + /// + /// Gets or sets the callback to use when the service has outgoing json for the rest webhook. + /// + /// + /// If this property is the default callback will be used. + /// + Func InteractionResponseCallback { get; } + } +} diff --git a/src/Discord.Net.Interactions/Attributes/Preconditions/RequireBotPermissionAttribute.cs b/src/Discord.Net.Interactions/Attributes/Preconditions/RequireBotPermissionAttribute.cs new file mode 100644 index 000000000..1dd3092ff --- /dev/null +++ b/src/Discord.Net.Interactions/Attributes/Preconditions/RequireBotPermissionAttribute.cs @@ -0,0 +1,84 @@ +using System; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + /// + /// Requires the bot to have a specific permission in the channel a command is invoked in. + /// + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)] + public class RequireBotPermissionAttribute : PreconditionAttribute + { + /// + /// Gets the specified of the precondition. + /// + public GuildPermission? GuildPermission { get; } + /// + /// Gets the specified of the precondition. + /// + public ChannelPermission? ChannelPermission { get; } + /// + /// Gets or sets the error message if the precondition + /// fails due to being run outside of a Guild channel. + /// + public string NotAGuildErrorMessage { get; set; } + + /// + /// Requires the bot account to have a specific . + /// + /// + /// This precondition will always fail if the command is being invoked in a . + /// + /// + /// The that the bot must have. Multiple permissions can be specified + /// by ORing the permissions together. + /// + public RequireBotPermissionAttribute(GuildPermission permission) + { + GuildPermission = permission; + ChannelPermission = null; + } + /// + /// Requires that the bot account to have a specific . + /// + /// + /// The that the bot must have. Multiple permissions can be + /// specified by ORing the permissions together. + /// + public RequireBotPermissionAttribute(ChannelPermission permission) + { + ChannelPermission = permission; + GuildPermission = null; + } + + /// + public override async Task CheckRequirementsAsync(IInteractionContext context, ICommandInfo command, IServiceProvider services) + { + IGuildUser guildUser = null; + if (context.Guild != null) + guildUser = await context.Guild.GetCurrentUserAsync().ConfigureAwait(false); + + if (GuildPermission.HasValue) + { + if (guildUser == null) + return PreconditionResult.FromError(NotAGuildErrorMessage ?? "Command must be used in a guild channel."); + if (!guildUser.GuildPermissions.Has(GuildPermission.Value)) + return PreconditionResult.FromError(ErrorMessage ?? $"Bot requires guild permission {GuildPermission.Value}."); + } + + if (ChannelPermission.HasValue) + { + ChannelPermissions perms; + if (context.Channel is IGuildChannel guildChannel) + perms = guildUser.GetPermissions(guildChannel); + else + perms = ChannelPermissions.All(context.Channel); + + if (!perms.Has(ChannelPermission.Value)) + return PreconditionResult.FromError(ErrorMessage ?? $"Bot requires channel permission {ChannelPermission.Value}."); + } + + return PreconditionResult.FromSuccess(); + } + } +} diff --git a/src/Discord.Net.Interactions/Attributes/Preconditions/RequireContextAttribute.cs b/src/Discord.Net.Interactions/Attributes/Preconditions/RequireContextAttribute.cs new file mode 100644 index 000000000..2f1b1df0d --- /dev/null +++ b/src/Discord.Net.Interactions/Attributes/Preconditions/RequireContextAttribute.cs @@ -0,0 +1,72 @@ +using System; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + /// + /// Defines the type of command context (i.e. where the command is being executed). + /// + [Flags] + public enum ContextType + { + /// + /// Specifies the command to be executed within a guild. + /// + Guild = 0x01, + /// + /// Specifies the command to be executed within a DM. + /// + DM = 0x02, + /// + /// Specifies the command to be executed within a group. + /// + Group = 0x04 + } + + /// + /// Requires the command to be invoked in a specified context (e.g. in guild, DM). + /// + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)] + public class RequireContextAttribute : PreconditionAttribute + { + /// + /// Gets the context required to execute the command. + /// + public ContextType Contexts { get; } + + /// Requires the command to be invoked in the specified context. + /// The type of context the command can be invoked in. Multiple contexts can be specified by ORing the contexts together. + /// + /// + /// [Command("secret")] + /// [RequireContext(ContextType.DM | ContextType.Group)] + /// public Task PrivateOnlyAsync() + /// { + /// return ReplyAsync("shh, this command is a secret"); + /// } + /// + /// + public RequireContextAttribute(ContextType contexts) + { + Contexts = contexts; + } + + /// + public override Task CheckRequirementsAsync(IInteractionContext context, ICommandInfo command, IServiceProvider services) + { + bool isValid = false; + + if ((Contexts & ContextType.Guild) != 0) + isValid = context.Channel is IGuildChannel; + if ((Contexts & ContextType.DM) != 0) + isValid = isValid || context.Channel is IDMChannel; + if ((Contexts & ContextType.Group) != 0) + isValid = isValid || context.Channel is IGroupChannel; + + if (isValid) + return Task.FromResult(PreconditionResult.FromSuccess()); + else + return Task.FromResult(PreconditionResult.FromError(ErrorMessage ?? $"Invalid context for command; accepted contexts: {Contexts}.")); + } + } +} diff --git a/src/Discord.Net.Interactions/Attributes/Preconditions/RequireNsfwAttribute.cs b/src/Discord.Net.Interactions/Attributes/Preconditions/RequireNsfwAttribute.cs new file mode 100644 index 000000000..f943ae080 --- /dev/null +++ b/src/Discord.Net.Interactions/Attributes/Preconditions/RequireNsfwAttribute.cs @@ -0,0 +1,42 @@ +using System; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + /// + /// Requires the command to be invoked in a channel marked NSFW. + /// + /// + /// The precondition will restrict the access of the command or module to be accessed within a guild channel + /// that has been marked as mature or NSFW. If the channel is not of type or the + /// channel is not marked as NSFW, the precondition will fail with an erroneous . + /// + /// + /// The following example restricts the command too-cool to an NSFW-enabled channel only. + /// + /// public class DankModule : ModuleBase + /// { + /// [Command("cool")] + /// public Task CoolAsync() + /// => ReplyAsync("I'm cool for everyone."); + /// + /// [RequireNsfw] + /// [Command("too-cool")] + /// public Task TooCoolAsync() + /// => ReplyAsync("You can only see this if you're cool enough."); + /// } + /// + /// + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)] + public class RequireNsfwAttribute : PreconditionAttribute + { + /// + public override Task CheckRequirementsAsync(IInteractionContext context, ICommandInfo command, IServiceProvider services) + { + if (context.Channel is ITextChannel text && text.IsNsfw) + return Task.FromResult(PreconditionResult.FromSuccess()); + else + return Task.FromResult(PreconditionResult.FromError(ErrorMessage ?? "This command may only be invoked in an NSFW channel.")); + } + } +} diff --git a/src/Discord.Net.Interactions/Attributes/Preconditions/RequireOwnerAttribute.cs b/src/Discord.Net.Interactions/Attributes/Preconditions/RequireOwnerAttribute.cs new file mode 100644 index 000000000..827ede239 --- /dev/null +++ b/src/Discord.Net.Interactions/Attributes/Preconditions/RequireOwnerAttribute.cs @@ -0,0 +1,36 @@ +using System; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + /// + /// Requires the command to be invoked by the owner of the bot. + /// + /// + /// This precondition will restrict the access of the command or module to the owner of the Discord application. + /// If the precondition fails to be met, an erroneous will be returned with the + /// message "Command can only be run by the owner of the bot." + /// + /// This precondition will only work if the account has a of + /// ;otherwise, this precondition will always fail. + /// + /// + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)] + public class RequireOwnerAttribute : PreconditionAttribute + { + /// + public override async Task CheckRequirementsAsync(IInteractionContext context, ICommandInfo command, IServiceProvider services) + { + switch (context.Client.TokenType) + { + case TokenType.Bot: + var application = await context.Client.GetApplicationInfoAsync().ConfigureAwait(false); + if (context.User.Id != application.Owner.Id) + return PreconditionResult.FromError(ErrorMessage ?? "Command can only be run by the owner of the bot."); + return PreconditionResult.FromSuccess(); + default: + return PreconditionResult.FromError($"{nameof(RequireOwnerAttribute)} is not supported by this {nameof(TokenType)}."); + } + } + } +} diff --git a/src/Discord.Net.Interactions/Attributes/Preconditions/RequireRoleAttribute.cs b/src/Discord.Net.Interactions/Attributes/Preconditions/RequireRoleAttribute.cs new file mode 100644 index 000000000..69a49c7fa --- /dev/null +++ b/src/Discord.Net.Interactions/Attributes/Preconditions/RequireRoleAttribute.cs @@ -0,0 +1,71 @@ +using System; +using System.Linq; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + /// + /// Requires the user invoking the command to have a specified role. + /// + public class RequireRoleAttribute : PreconditionAttribute + { + /// + /// Gets the specified Role name of the precondition. + /// + public string RoleName { get; } + + /// + /// Gets the specified Role ID of the precondition. + /// + public ulong? RoleId { get; } + + /// + /// Gets or sets the error message if the precondition + /// fails due to being run outside of a Guild channel. + /// + public string NotAGuildErrorMessage { get; set; } + + /// + /// Requires that the user invoking the command to have a specific Role. + /// + /// Id of the role that the user must have. + public RequireRoleAttribute(ulong roleId) + { + RoleId = roleId; + } + + /// + /// Requires that the user invoking the command to have a specific Role. + /// + /// Name of the role that the user must have. + public RequireRoleAttribute(string roleName) + { + RoleName = roleName; + } + + /// + public override Task CheckRequirementsAsync(IInteractionContext context, ICommandInfo commandInfo, IServiceProvider services) + { + if (context.User is not IGuildUser guildUser) + return Task.FromResult(PreconditionResult.FromError(NotAGuildErrorMessage ?? "Command must be used in a guild channel.")); + + if (RoleId.HasValue) + { + if (guildUser.RoleIds.Contains(RoleId.Value)) + return Task.FromResult(PreconditionResult.FromSuccess()); + else + Task.FromResult(PreconditionResult.FromError(ErrorMessage ?? $"User requires guild role {context.Guild.GetRole(RoleId.Value).Name}.")); + } + + if (!string.IsNullOrEmpty(RoleName)) + { + if (guildUser.Guild.Roles.Any(x => x.Name == RoleName)) + return Task.FromResult(PreconditionResult.FromSuccess()); + else + Task.FromResult(PreconditionResult.FromError(ErrorMessage ?? $"User requires guild role {RoleName}.")); + } + + return Task.FromResult(PreconditionResult.FromSuccess()); + } + } +} diff --git a/src/Discord.Net.Interactions/Attributes/Preconditions/RequireUserPermissionAttribute.cs b/src/Discord.Net.Interactions/Attributes/Preconditions/RequireUserPermissionAttribute.cs new file mode 100644 index 000000000..77d6e8f25 --- /dev/null +++ b/src/Discord.Net.Interactions/Attributes/Preconditions/RequireUserPermissionAttribute.cs @@ -0,0 +1,81 @@ +using System; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + /// + /// Requires the user invoking the command to have a specified permission. + /// + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)] + public class RequireUserPermissionAttribute : PreconditionAttribute + { + /// + /// Gets the specified of the precondition. + /// + public GuildPermission? GuildPermission { get; } + /// + /// Gets the specified of the precondition. + /// + public ChannelPermission? ChannelPermission { get; } + /// + /// Gets or sets the error message if the precondition + /// fails due to being run outside of a Guild channel. + /// + public string NotAGuildErrorMessage { get; set; } + + /// + /// Requires that the user invoking the command to have a specific . + /// + /// + /// This precondition will always fail if the command is being invoked in a . + /// + /// + /// The that the user must have. Multiple permissions can be + /// specified by ORing the permissions together. + /// + public RequireUserPermissionAttribute(GuildPermission guildPermission) + { + GuildPermission = guildPermission; + } + + /// + /// Requires that the user invoking the command to have a specific . + /// + /// + /// The that the user must have. Multiple permissions can be + /// specified by ORing the permissions together. + /// + public RequireUserPermissionAttribute(ChannelPermission channelPermission) + { + ChannelPermission = channelPermission; + } + + /// + public override Task CheckRequirementsAsync(IInteractionContext context, ICommandInfo commandInfo, IServiceProvider services) + { + var guildUser = context.User as IGuildUser; + + if (GuildPermission.HasValue) + { + if (guildUser == null) + return Task.FromResult(PreconditionResult.FromError(NotAGuildErrorMessage ?? "Command must be used in a guild channel.")); + if (!guildUser.GuildPermissions.Has(GuildPermission.Value)) + return Task.FromResult(PreconditionResult.FromError(ErrorMessage ?? $"User requires guild permission {GuildPermission.Value}.")); + } + + if (ChannelPermission.HasValue) + { + ChannelPermissions perms; + if (context.Channel is IGuildChannel guildChannel) + perms = guildUser.GetPermissions(guildChannel); + else + perms = ChannelPermissions.All(context.Channel); + + if (!perms.Has(ChannelPermission.Value)) + return Task.FromResult(PreconditionResult.FromError(ErrorMessage ?? $"User requires channel permission {ChannelPermission.Value}.")); + } + + return Task.FromResult(PreconditionResult.FromSuccess()); + } + } +} diff --git a/src/Discord.Net.Interactions/AutocompleteHandlers/AutocompleteHandler.cs b/src/Discord.Net.Interactions/AutocompleteHandlers/AutocompleteHandler.cs index fd0bc83de..1dd3cf2bf 100644 --- a/src/Discord.Net.Interactions/AutocompleteHandlers/AutocompleteHandler.cs +++ b/src/Discord.Net.Interactions/AutocompleteHandlers/AutocompleteHandler.cs @@ -60,7 +60,11 @@ namespace Discord.Interactions { case RestAutocompleteInteraction restAutocomplete: var payload = restAutocomplete.Respond(result.Suggestions); - await InteractionService._restResponseCallback(context, payload).ConfigureAwait(false); + + if (context is IRestInteractionContext restContext && restContext.InteractionResponseCallback != null) + await restContext.InteractionResponseCallback.Invoke(payload).ConfigureAwait(false); + else + await InteractionService._restResponseCallback(context, payload).ConfigureAwait(false); break; case SocketAutocompleteInteraction socketAutocomplete: await socketAutocomplete.RespondAsync(result.Suggestions).ConfigureAwait(false); diff --git a/src/Discord.Net.Interactions/Discord.Net.Interactions.csproj b/src/Discord.Net.Interactions/Discord.Net.Interactions.csproj index e56459e44..c617eff61 100644 --- a/src/Discord.Net.Interactions/Discord.Net.Interactions.csproj +++ b/src/Discord.Net.Interactions/Discord.Net.Interactions.csproj @@ -6,7 +6,6 @@ net6.0;net5.0;netstandard2.0;netstandard2.1 Discord.Interactions Discord.Net.Interactions - Discord.Net.Interactions A Discord.Net extension adding support for Application Commands. diff --git a/src/Discord.Net.Interactions/RestInteractionModuleBase.cs b/src/Discord.Net.Interactions/RestInteractionModuleBase.cs index fe184fc9a..a07614f7f 100644 --- a/src/Discord.Net.Interactions/RestInteractionModuleBase.cs +++ b/src/Discord.Net.Interactions/RestInteractionModuleBase.cs @@ -30,7 +30,12 @@ namespace Discord.Interactions if (Context.Interaction is not RestInteraction restInteraction) throw new InvalidOperationException($"Invalid interaction type. Interaction must be a type of {nameof(RestInteraction)} in order to execute this method"); - await InteractionService._restResponseCallback(Context, restInteraction.Defer(ephemeral, options)).ConfigureAwait(false); + var payload = restInteraction.Defer(ephemeral, options); + + if (Context is IRestInteractionContext restContext && restContext.InteractionResponseCallback != null) + await restContext.InteractionResponseCallback.Invoke(payload).ConfigureAwait(false); + else + await InteractionService._restResponseCallback(Context, payload).ConfigureAwait(false); } /// @@ -53,7 +58,12 @@ namespace Discord.Interactions if (Context.Interaction is not RestInteraction restInteraction) throw new InvalidOperationException($"Invalid interaction type. Interaction must be a type of {nameof(RestInteraction)} in order to execute this method"); - await InteractionService._restResponseCallback(Context, restInteraction.Respond(text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options)).ConfigureAwait(false); + var payload = restInteraction.Respond(text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options); + + if (Context is IRestInteractionContext restContext && restContext.InteractionResponseCallback != null) + await restContext.InteractionResponseCallback.Invoke(payload).ConfigureAwait(false); + else + await InteractionService._restResponseCallback(Context, payload).ConfigureAwait(false); } } } diff --git a/src/Discord.Net.Rest/API/Common/Application.cs b/src/Discord.Net.Rest/API/Common/Application.cs index 4ef6940a2..62a1d9688 100644 --- a/src/Discord.Net.Rest/API/Common/Application.cs +++ b/src/Discord.Net.Rest/API/Common/Application.cs @@ -20,14 +20,17 @@ namespace Discord.API public bool BotRequiresCodeGrant { get; set; } [JsonProperty("install_params")] public Optional InstallParams { get; set; } - [JsonProperty("team")] public Team Team { get; set; } - [JsonProperty("flags"), Int53] public Optional Flags { get; set; } [JsonProperty("owner")] public Optional Owner { get; set; } + [JsonProperty("tags")] public Optional Tags { get; set; } + [JsonProperty("terms_of_service_url")] + public string TermsOfService { get; set; } + [JsonProperty("privacy_policy_url")] + public string PrivacyPolicy { get; set; } } } diff --git a/src/Discord.Net.Rest/API/Rest/UploadInteractionFileParams.cs b/src/Discord.Net.Rest/API/Rest/UploadInteractionFileParams.cs new file mode 100644 index 000000000..f004dec82 --- /dev/null +++ b/src/Discord.Net.Rest/API/Rest/UploadInteractionFileParams.cs @@ -0,0 +1,99 @@ +using Discord.Net.Converters; +using Discord.Net.Rest; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord.API.Rest +{ + internal class UploadInteractionFileParams + { + private static JsonSerializer _serializer = new JsonSerializer { ContractResolver = new DiscordContractResolver() }; + + public FileAttachment[] Files { get; } + + public InteractionResponseType Type { get; set; } + public Optional Content { get; set; } + public Optional IsTTS { get; set; } + public Optional Embeds { get; set; } + public Optional AllowedMentions { get; set; } + public Optional MessageComponents { get; set; } + public Optional Flags { get; set; } + + public bool HasData + => Content.IsSpecified || + IsTTS.IsSpecified || + Embeds.IsSpecified || + AllowedMentions.IsSpecified || + MessageComponents.IsSpecified || + Flags.IsSpecified || + Files.Any(); + + public UploadInteractionFileParams(params FileAttachment[] files) + { + Files = files; + } + + public IReadOnlyDictionary ToDictionary() + { + var d = new Dictionary(); + + + var payload = new Dictionary(); + payload["type"] = Type; + + var data = new Dictionary(); + if (Content.IsSpecified) + data["content"] = Content.Value; + if (IsTTS.IsSpecified) + data["tts"] = IsTTS.Value.ToString(); + if (MessageComponents.IsSpecified) + data["components"] = MessageComponents.Value; + if (Embeds.IsSpecified) + data["embeds"] = Embeds.Value; + if (AllowedMentions.IsSpecified) + data["allowed_mentions"] = AllowedMentions.Value; + if (Flags.IsSpecified) + data["flags"] = Flags.Value; + + List attachments = new(); + + for (int n = 0; n != Files.Length; n++) + { + var attachment = Files[n]; + + var filename = attachment.FileName ?? "unknown.dat"; + if (attachment.IsSpoiler && !filename.StartsWith(AttachmentExtensions.SpoilerPrefix)) + filename = filename.Insert(0, AttachmentExtensions.SpoilerPrefix); + d[$"files[{n}]"] = new MultipartFile(attachment.Stream, filename); + + attachments.Add(new + { + id = (ulong)n, + filename = filename, + description = attachment.Description ?? Optional.Unspecified + }); + } + + data["attachments"] = attachments; + + payload["data"] = data; + + + if (data.Any()) + { + var json = new StringBuilder(); + using (var text = new StringWriter(json)) + using (var writer = new JsonTextWriter(text)) + _serializer.Serialize(writer, payload); + d["payload_json"] = json.ToString(); + } + + return d; + } + } +} diff --git a/src/Discord.Net.Rest/Discord.Net.Rest.csproj b/src/Discord.Net.Rest/Discord.Net.Rest.csproj index a1c6892ca..98692998f 100644 --- a/src/Discord.Net.Rest/Discord.Net.Rest.csproj +++ b/src/Discord.Net.Rest/Discord.Net.Rest.csproj @@ -1,6 +1,6 @@ - + Discord.Net.Rest Discord.Rest diff --git a/src/Discord.Net.Rest/DiscordRestApiClient.cs b/src/Discord.Net.Rest/DiscordRestApiClient.cs index d905eee05..c2f2fbc99 100644 --- a/src/Discord.Net.Rest/DiscordRestApiClient.cs +++ b/src/Discord.Net.Rest/DiscordRestApiClient.cs @@ -1309,7 +1309,20 @@ namespace Discord.API options = RequestOptions.CreateOrClone(options); - await SendJsonAsync("POST", () => $"interactions/{interactionId}/{interactionToken}/callback", response, new BucketIds(), options: options); + await SendJsonAsync("POST", () => $"interactions/{interactionId}/{interactionToken}/callback", response, new BucketIds(), options: options); + } + public async Task CreateInteractionResponseAsync(UploadInteractionFileParams response, ulong interactionId, string interactionToken, RequestOptions options = null) + { + if ((!response.Embeds.IsSpecified || response.Embeds.Value == null || response.Embeds.Value.Length == 0) && !response.Files.Any()) + Preconditions.NotNullOrEmpty(response.Content, nameof(response.Content)); + + if (response.Content.IsSpecified && response.Content.Value.Length > DiscordConfig.MaxMessageSize) + throw new ArgumentException(message: $"Message content is too long, length must be less or equal to {DiscordConfig.MaxMessageSize}.", paramName: nameof(response.Content)); + + options = RequestOptions.CreateOrClone(options); + + var ids = new BucketIds(); + await SendMultipartAsync("POST", () => $"interactions/{interactionId}/{interactionToken}/callback", response.ToDictionary(), ids, clientBucket: ClientBucketType.SendEdit, options: options).ConfigureAwait(false); } public async Task GetInteractionResponseAsync(string interactionToken, RequestOptions options = null) { diff --git a/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs b/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs index 40328cbd6..45535746d 100644 --- a/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs +++ b/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs @@ -347,7 +347,8 @@ namespace Discord.Rest public static Task SendFileAsync(IMessageChannel channel, BaseDiscordClient client, Stream stream, string filename, string text, bool isTTS, Embed embed, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, RequestOptions options, bool isSpoiler, Embed[] embeds) { - return SendFileAsync(channel, client, new FileAttachment(stream, filename, isSpoiler: isSpoiler), text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, embeds); + using var file = new FileAttachment(stream, filename, isSpoiler: isSpoiler); + return SendFileAsync(channel, client, file, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, embeds); } /// Message content is too long, length must be less or equal to . diff --git a/src/Discord.Net.Rest/Entities/Interactions/InteractionHelper.cs b/src/Discord.Net.Rest/Entities/Interactions/InteractionHelper.cs index b20cfe2ed..0cac07577 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/InteractionHelper.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/InteractionHelper.cs @@ -34,11 +34,16 @@ namespace Discord.Rest return client.ApiClient.BulkOverwriteGlobalApplicationCommandsAsync(Array.Empty(), options); } - public static async Task SendInteractionResponseAsync(BaseDiscordClient client, InteractionResponse response, + public static async Task SendInteractionResponseAsync(BaseDiscordClient client, InteractionResponse response, + IDiscordInteraction interaction, IMessageChannel channel = null, RequestOptions options = null) + { + await client.ApiClient.CreateInteractionResponseAsync(response, interaction.Id, interaction.Token, options).ConfigureAwait(false); + } + + public static async Task SendInteractionResponseAsync(BaseDiscordClient client, UploadInteractionFileParams response, IDiscordInteraction interaction, IMessageChannel channel = null, RequestOptions options = null) { await client.ApiClient.CreateInteractionResponseAsync(response, interaction.Id, interaction.Token, options).ConfigureAwait(false); - return RestInteractionMessage.Create(client, response, interaction, channel); } public static async Task GetOriginalResponseAsync(BaseDiscordClient client, IMessageChannel channel, @@ -434,6 +439,9 @@ namespace Discord.Rest public static async Task DeleteInteractionResponseAsync(BaseDiscordClient client, RestInteractionMessage message, RequestOptions options = null) => await client.ApiClient.DeleteInteractionFollowupMessageAsync(message.Id, message.Token, options); + public static async Task DeleteInteractionResponseAsync(BaseDiscordClient client, IDiscordInteraction interaction, RequestOptions options = null) + => await client.ApiClient.DeleteInteractionFollowupMessageAsync(interaction.Id, interaction.Token, options); + public static Task SendAutocompleteResultAsync(BaseDiscordClient client, IEnumerable result, ulong interactionId, string interactionToken, RequestOptions options) { diff --git a/src/Discord.Net.Rest/Entities/Interactions/RestInteraction.cs b/src/Discord.Net.Rest/Entities/Interactions/RestInteraction.cs index 5f551ba0c..0011b9b62 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/RestInteraction.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/RestInteraction.cs @@ -260,15 +260,17 @@ namespace Discord.Rest public abstract Task FollowupWithFilesAsync(IEnumerable attachments, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); + /// + public Task DeleteOriginalResponseAsync(RequestOptions options = null) + => InteractionHelper.DeleteInteractionResponseAsync(Discord, this, options); + #region IDiscordInteraction /// IUser IDiscordInteraction.User => User; /// - Task IDiscordInteraction.RespondAsync(string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) - { - return Task.FromResult(null); - } + Task IDiscordInteraction.RespondAsync(string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) + => Task.FromResult(Respond(text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options)); /// Task IDiscordInteraction.DeferAsync(bool ephemeral, RequestOptions options) => Task.FromResult(Defer(ephemeral, options)); @@ -296,6 +298,17 @@ namespace Discord.Rest /// async Task IDiscordInteraction.FollowupWithFilesAsync(IEnumerable attachments, string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) => await FollowupWithFilesAsync(attachments, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); + /// + Task IDiscordInteraction.RespondWithFilesAsync(IEnumerable attachments, string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) => throw new NotSupportedException("REST-Based interactions don't support files."); + /// +#if NETCOREAPP3_0_OR_GREATER != true + /// + Task IDiscordInteraction.RespondWithFileAsync(Stream fileStream, string fileName, string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) => throw new NotSupportedException("REST-Based interactions don't support files."); + /// + Task IDiscordInteraction.RespondWithFileAsync(string filePath, string fileName, string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) => throw new NotSupportedException("REST-Based interactions don't support files."); + /// + Task IDiscordInteraction.RespondWithFileAsync(FileAttachment attachment, string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) => throw new NotSupportedException("REST-Based interactions don't support files."); +#endif #endregion } } diff --git a/src/Discord.Net.Rest/Entities/Messages/RestInteractionMessage.cs b/src/Discord.Net.Rest/Entities/Messages/RestInteractionMessage.cs index 815f1953f..a055a69b4 100644 --- a/src/Discord.Net.Rest/Entities/Messages/RestInteractionMessage.cs +++ b/src/Discord.Net.Rest/Entities/Messages/RestInteractionMessage.cs @@ -1,7 +1,6 @@ using System; using System.Threading.Tasks; using MessageModel = Discord.API.Message; -using Model = Discord.API.InteractionResponse; namespace Discord.Rest { @@ -26,24 +25,11 @@ namespace Discord.Rest return entity; } - internal static RestInteractionMessage Create(BaseDiscordClient discord, Model model, IDiscordInteraction interaction, IMessageChannel channel) - { - var entity = new RestInteractionMessage(discord, interaction.Id, discord.CurrentUser, interaction.Token, channel); - entity.Update(model, interaction); - return entity; - } - internal new void Update(MessageModel model) { base.Update(model); } - internal void Update(Model model, IDiscordInteraction interaction) - { - ResponseType = model.Type; - base.Update(model.ToMessage(interaction)); - } - /// /// Deletes this object and all of it's children. /// diff --git a/src/Discord.Net.Rest/Entities/RestApplication.cs b/src/Discord.Net.Rest/Entities/RestApplication.cs index beec52433..8347a70da 100644 --- a/src/Discord.Net.Rest/Entities/RestApplication.cs +++ b/src/Discord.Net.Rest/Entities/RestApplication.cs @@ -29,10 +29,12 @@ namespace Discord.Rest public bool BotRequiresCodeGrant { get; private set; } /// public ITeam Team { get; private set; } - /// public IUser Owner { get; private set; } - + /// + public string TermsOfService { get; private set; } + /// + public string PrivacyPolicy { get; private set; } /// public DateTimeOffset CreatedAt => SnowflakeUtils.FromSnowflake(Id); /// @@ -61,6 +63,8 @@ namespace Discord.Rest IsBotPublic = model.IsBotPublic; BotRequiresCodeGrant = model.BotRequiresCodeGrant; Tags = model.Tags.GetValueOrDefault(null)?.ToImmutableArray() ?? ImmutableArray.Empty; + PrivacyPolicy = model.PrivacyPolicy; + TermsOfService = model.TermsOfService; var installParams = model.InstallParams.GetValueOrDefault(null); InstallParams = new ApplicationInstallParams(installParams?.Scopes ?? new string[0], (GuildPermission?)installParams?.Permission ?? null); diff --git a/src/Discord.Net.Rest/Interactions/RestInteractionContext.cs b/src/Discord.Net.Rest/Interactions/RestInteractionContext.cs index 7e73caa4f..196c6133b 100644 --- a/src/Discord.Net.Rest/Interactions/RestInteractionContext.cs +++ b/src/Discord.Net.Rest/Interactions/RestInteractionContext.cs @@ -1,9 +1,12 @@ +using System; +using System.Threading.Tasks; + namespace Discord.Rest { /// /// Represents a Rest based context of an . /// - public class RestInteractionContext : IInteractionContext + public class RestInteractionContext : IRestInteractionContext where TInteraction : RestInteraction { /// @@ -34,6 +37,14 @@ namespace Discord.Rest /// public TInteraction Interaction { get; } + /// + /// Gets or sets the callback to use when the service has outgoing json for the rest webhook. + /// + /// + /// If this property is the default callback will be used. + /// + public Func InteractionResponseCallback { get; set; } + /// /// Initializes a new . /// @@ -48,6 +59,18 @@ namespace Discord.Rest Interaction = interaction; } + /// + /// Initializes a new . + /// + /// The underlying client. + /// The underlying interaction. + /// The callback for outgoing json. + public RestInteractionContext(DiscordRestClient client, TInteraction interaction, Func interactionResponseCallback) + : this(client, interaction) + { + InteractionResponseCallback = interactionResponseCallback; + } + // IInterationContext /// IDiscordClient IInteractionContext.Client => Client; @@ -66,15 +89,24 @@ namespace Discord.Rest } /// - /// Represents a Rest based context of an + /// Represents a Rest based context of an . /// public class RestInteractionContext : RestInteractionContext { /// - /// Initializes a new + /// Initializes a new . /// - /// The underlying client - /// The underlying interaction + /// The underlying client. + /// The underlying interaction. public RestInteractionContext(DiscordRestClient client, RestInteraction interaction) : base(client, interaction) { } + + /// + /// Initializes a new . + /// + /// The underlying client. + /// The underlying interaction. + /// The callback for outgoing json. + public RestInteractionContext(DiscordRestClient client, RestInteraction interaction, Func interactionResponseCallback) + : base(client, interaction, interactionResponseCallback) { } } } diff --git a/src/Discord.Net.Rest/Net/DefaultRestClient.cs b/src/Discord.Net.Rest/Net/DefaultRestClient.cs index 1db743609..ce32b085b 100644 --- a/src/Discord.Net.Rest/Net/DefaultRestClient.cs +++ b/src/Discord.Net.Rest/Net/DefaultRestClient.cs @@ -129,7 +129,8 @@ namespace Discord.Net.Rest continue; } - default: throw new InvalidOperationException($"Unsupported param type \"{p.Value.GetType().Name}\"."); + default: + throw new InvalidOperationException($"Unsupported param type \"{p.Value.GetType().Name}\"."); } } } diff --git a/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs b/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs index 2921678f7..408c8bbdb 100644 --- a/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs +++ b/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs @@ -1,3 +1,4 @@ +using Discord.API; using Newtonsoft.Json; using System; #if DEBUG_LIMITS diff --git a/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs b/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs index 0a42b403e..29e13a2a1 100644 --- a/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs +++ b/src/Discord.Net.WebSocket/BaseSocketClient.Events.cs @@ -424,12 +424,12 @@ namespace Discord.WebSocket } internal readonly AsyncEvent> _userJoinedEvent = new AsyncEvent>(); /// Fired when a user leaves a guild. - public event Func UserLeft + public event Func UserLeft { add { _userLeftEvent.Add(value); } remove { _userLeftEvent.Remove(value); } } - internal readonly AsyncEvent> _userLeftEvent = new AsyncEvent>(); + internal readonly AsyncEvent> _userLeftEvent = new AsyncEvent>(); /// Fired when a user is banned from a guild. public event Func UserBanned { @@ -452,12 +452,12 @@ namespace Discord.WebSocket } internal readonly AsyncEvent> _userUpdatedEvent = new AsyncEvent>(); /// Fired when a guild member is updated, or a member presence is updated. - public event Func, SocketGuildUser, Task> GuildMemberUpdated + public event Func, SocketGuildUser, Task> GuildMemberUpdated { add { _guildMemberUpdatedEvent.Add(value); } remove { _guildMemberUpdatedEvent.Remove(value); } } - internal readonly AsyncEvent, SocketGuildUser, Task>> _guildMemberUpdatedEvent = new AsyncEvent, SocketGuildUser, Task>>(); + internal readonly AsyncEvent, SocketGuildUser, Task>> _guildMemberUpdatedEvent = new AsyncEvent, SocketGuildUser, Task>>(); /// Fired when a user joins, leaves, or moves voice channels. public event Func UserVoiceStateUpdated { diff --git a/src/Discord.Net.WebSocket/DiscordShardedClient.cs b/src/Discord.Net.WebSocket/DiscordShardedClient.cs index 1e71ce853..9a13c8ff8 100644 --- a/src/Discord.Net.WebSocket/DiscordShardedClient.cs +++ b/src/Discord.Net.WebSocket/DiscordShardedClient.cs @@ -445,7 +445,7 @@ namespace Discord.WebSocket client.GuildUpdated += (oldGuild, newGuild) => _guildUpdatedEvent.InvokeAsync(oldGuild, newGuild); client.UserJoined += (user) => _userJoinedEvent.InvokeAsync(user); - client.UserLeft += (user) => _userLeftEvent.InvokeAsync(user); + client.UserLeft += (guild, user) => _userLeftEvent.InvokeAsync(guild, user); client.UserBanned += (user, guild) => _userBannedEvent.InvokeAsync(user, guild); client.UserUnbanned += (user, guild) => _userUnbannedEvent.InvokeAsync(user, guild); client.UserUpdated += (oldUser, newUser) => _userUpdatedEvent.InvokeAsync(oldUser, newUser); diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 7c37cb1fa..b107fbbea 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -1275,13 +1275,13 @@ namespace Discord.WebSocket var before = user.Clone(); user.Update(State, data); - var cacheableBefore = new Cacheable(null, user.Id, false, () => Rest.GetGuildUserAsync(guild.Id, user.Id)); + var cacheableBefore = new Cacheable(before, user.Id, true, () => null); await TimedInvokeAsync(_guildMemberUpdatedEvent, nameof(GuildMemberUpdated), cacheableBefore, user).ConfigureAwait(false); } else { user = guild.AddOrUpdateUser(data); - var cacheableBefore = new Cacheable(null, user.Id, false, () => Rest.GetGuildUserAsync(guild.Id, user.Id)); + var cacheableBefore = new Cacheable(user, user.Id, true, () => null); await TimedInvokeAsync(_guildMemberUpdatedEvent, nameof(GuildMemberUpdated), cacheableBefore, user).ConfigureAwait(false); } } @@ -1309,10 +1309,14 @@ namespace Discord.WebSocket return; } - if(user == null) + user = State.GetUser(data.User.Id); + + if (user != null) + user.Update(State, data.User); + else user = SocketGlobalUser.Create(this, State, data.User); - await TimedInvokeAsync(_userLeftEvent, nameof(UserLeft), user).ConfigureAwait(false); + await TimedInvokeAsync(_userLeftEvent, nameof(UserLeft), guild, user).ConfigureAwait(false); } else { diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponent.cs b/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponent.cs index 17038b23d..4fbab38b0 100644 --- a/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponent.cs +++ b/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponent.cs @@ -71,8 +71,72 @@ namespace Discord.WebSocket } } } + public override async Task RespondWithFilesAsync( + IEnumerable attachments, + string text = null, + Embed[] embeds = null, + bool isTTS = false, + bool ephemeral = false, + AllowedMentions allowedMentions = null, + MessageComponent components = null, + Embed embed = null, + RequestOptions options = null) + { + if (!IsValidToken) + throw new InvalidOperationException("Interaction token is no longer valid"); + + if (!InteractionHelper.CanSendResponse(this)) + throw new TimeoutException($"Cannot respond to an interaction after {InteractionHelper.ResponseTimeLimit} seconds!"); + + embeds ??= Array.Empty(); + if (embed != null) + embeds = new[] { embed }.Concat(embeds).ToArray(); + + 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, 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 + if (allowedMentions != null && allowedMentions.AllowedTypes.HasValue) + { + if (allowedMentions.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Users) && + allowedMentions.UserIds != null && allowedMentions.UserIds.Count > 0) + { + throw new ArgumentException("The Users flag is mutually exclusive with the list of User Ids.", nameof(allowedMentions)); + } + + if (allowedMentions.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Roles) && + allowedMentions.RoleIds != null && allowedMentions.RoleIds.Count > 0) + { + throw new ArgumentException("The Roles flag is mutually exclusive with the list of Role Ids.", nameof(allowedMentions)); + } + } + + var response = new API.Rest.UploadInteractionFileParams(attachments?.ToArray()) + { + Type = InteractionResponseType.ChannelMessageWithSource, + Content = text ?? Optional.Unspecified, + AllowedMentions = allowedMentions != null ? allowedMentions?.ToModel() : Optional.Unspecified, + Embeds = embeds.Any() ? embeds.Select(x => x.ToModel()).ToArray() : Optional.Unspecified, + IsTTS = isTTS, + MessageComponents = components?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified, + Flags = ephemeral ? MessageFlags.Ephemeral : Optional.Unspecified + }; + + lock (_lock) + { + if (HasResponded) + { + throw new InvalidOperationException("Cannot respond, update, or defer the same interaction twice"); + } + } + + await InteractionHelper.SendInteractionResponseAsync(Discord, response, this, Channel, options).ConfigureAwait(false); + HasResponded = true; + } + /// - public override async Task RespondAsync( + public override async Task RespondAsync( string text = null, Embed[] embeds = null, bool isTTS = false, @@ -121,13 +185,11 @@ namespace Discord.WebSocket AllowedMentions = allowedMentions?.ToModel(), Embeds = embeds.Select(x => x.ToModel()).ToArray(), TTS = isTTS, + Flags = ephemeral ? MessageFlags.Ephemeral : Optional.Unspecified, Components = components?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified } }; - if (ephemeral) - response.Data.Value.Flags = MessageFlags.Ephemeral; - lock (_lock) { if (HasResponded) @@ -136,17 +198,8 @@ namespace Discord.WebSocket } } - try - { - return await InteractionHelper.SendInteractionResponseAsync(Discord, response, this, Channel, options).ConfigureAwait(false); - } - finally - { - lock (_lock) - { - HasResponded = true; - } - } + await InteractionHelper.SendInteractionResponseAsync(Discord, response, this, Channel, options).ConfigureAwait(false); + HasResponded = true; } /// @@ -155,7 +208,7 @@ namespace Discord.WebSocket /// A delegate containing the properties to modify the message with. /// The request options for this request. /// A task that represents the asynchronous operation of updating the message. - public async Task UpdateAsync(Action func, RequestOptions options = null) + public async Task UpdateAsync(Action func, RequestOptions options = null) { var args = new MessageProperties(); func(args); @@ -236,12 +289,8 @@ namespace Discord.WebSocket } } - return await InteractionHelper.SendInteractionResponseAsync(Discord, response, this, Channel, options).ConfigureAwait(false); - - lock (_lock) - { - HasResponded = true; - } + await InteractionHelper.SendInteractionResponseAsync(Discord, response, this, Channel, options).ConfigureAwait(false); + HasResponded = true; } /// @@ -281,68 +330,6 @@ namespace Discord.WebSocket return await InteractionHelper.SendFollowupAsync(Discord.Rest, args, Token, Channel, options); } - /// - public override Task FollowupWithFileAsync( - Stream fileStream, - string fileName, - string text = null, - Embed[] embeds = null, - bool isTTS = false, - bool ephemeral = false, - AllowedMentions allowedMentions = null, - MessageComponent components = null, - Embed embed = null, - RequestOptions options = null) - { - if (!IsValidToken) - throw new InvalidOperationException("Interaction token is no longer valid"); - - embeds ??= Array.Empty(); - if (embed != null) - embeds = new[] { embed }.Concat(embeds).ToArray(); - - Preconditions.NotNull(fileStream, nameof(fileStream), "File Stream must have data"); - Preconditions.NotNullOrEmpty(fileName, nameof(fileName), "File Name must not be empty or null"); - - return FollowupWithFileAsync(new FileAttachment(fileStream, fileName), text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options); - } - - /// - public override Task FollowupWithFileAsync( - string filePath, - string fileName = null, - string text = null, - Embed[] embeds = null, - bool isTTS = false, - bool ephemeral = false, - AllowedMentions allowedMentions = null, - MessageComponent components = null, - Embed embed = null, - RequestOptions options = null) - { - Preconditions.NotNullOrEmpty(filePath, nameof(filePath), "Path must exist"); - - fileName ??= Path.GetFileName(filePath); - Preconditions.NotNullOrEmpty(fileName, nameof(fileName), "File Name must not be empty or null"); - - return FollowupWithFileAsync(new FileAttachment(File.OpenRead(filePath), fileName), text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options); - } - - /// - public override Task FollowupWithFileAsync( - FileAttachment attachment, - string text = null, - Embed[] embeds = null, - bool isTTS = false, - bool ephemeral = false, - AllowedMentions allowedMentions = null, - MessageComponent components = null, - Embed embed = null, - RequestOptions options = null) - { - return FollowupWithFilesAsync(new FileAttachment[] { attachment }, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options); - } - /// public override async Task FollowupWithFilesAsync( IEnumerable attachments, diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketAutocompleteInteraction.cs b/src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketAutocompleteInteraction.cs index 955d7d53f..6058bdafd 100644 --- a/src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketAutocompleteInteraction.cs +++ b/src/Discord.Net.WebSocket/Entities/Interaction/SlashCommands/SocketAutocompleteInteraction.cs @@ -89,20 +89,16 @@ namespace Discord.WebSocket /// public Task RespondAsync(RequestOptions options = null, params AutocompleteResult[] result) => RespondAsync(result, options); - public override Task RespondAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) + public override Task RespondAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) => throw new NotSupportedException("Autocomplete interactions don't support this method!"); public override Task FollowupAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) => throw new NotSupportedException("Autocomplete interactions don't support this method!"); - public override Task FollowupWithFileAsync(Stream fileStream, string fileName, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) - => throw new NotSupportedException("Autocomplete interactions don't support this method!"); - public override Task FollowupWithFileAsync(string filePath, string fileName = null, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) - => throw new NotSupportedException("Autocomplete interactions don't support this method!"); - public override Task FollowupWithFileAsync(FileAttachment attachment, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) - => throw new NotSupportedException("Autocomplete interactions don't support this method!"); public override Task FollowupWithFilesAsync(IEnumerable attachments, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) => throw new NotSupportedException("Autocomplete interactions don't support this method!"); public override Task DeferAsync(bool ephemeral = false, RequestOptions options = null) => throw new NotSupportedException("Autocomplete interactions don't support this method!"); + public override Task RespondWithFilesAsync(IEnumerable attachments, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) + => throw new NotSupportedException("Autocomplete interactions don't support this method!"); //IAutocompleteInteraction /// diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketCommandBase.cs b/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketCommandBase.cs index 0a97bcd48..439200d30 100644 --- a/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketCommandBase.cs +++ b/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketCommandBase.cs @@ -69,7 +69,7 @@ namespace Discord.WebSocket } /// - public override async Task RespondAsync( + public override async Task RespondAsync( string text = null, Embed[] embeds = null, bool isTTS = false, @@ -131,21 +131,12 @@ namespace Discord.WebSocket } } - try - { - return await InteractionHelper.SendInteractionResponseAsync(Discord, response, this, Channel, options).ConfigureAwait(false); - } - finally - { - lock (_lock) - { - HasResponded = true; - } - } + await InteractionHelper.SendInteractionResponseAsync(Discord, response, this, Channel, options).ConfigureAwait(false); + HasResponded = true; } - /// - public override async Task FollowupAsync( + public override async Task RespondWithFilesAsync( + IEnumerable attachments, string text = null, Embed[] embeds = null, bool isTTS = false, @@ -158,6 +149,9 @@ namespace Discord.WebSocket if (!IsValidToken) throw new InvalidOperationException("Interaction token is no longer valid"); + if (!InteractionHelper.CanSendResponse(this)) + throw new TimeoutException($"Cannot respond to an interaction after {InteractionHelper.ResponseTimeLimit} seconds!"); + embeds ??= Array.Empty(); if (embed != null) embeds = new[] { embed }.Concat(embeds).ToArray(); @@ -166,25 +160,47 @@ namespace Discord.WebSocket Preconditions.AtMost(allowedMentions?.UserIds?.Count ?? 0, 100, nameof(allowedMentions.UserIds), "A max of 100 user Ids are allowed."); Preconditions.AtMost(embeds.Length, 10, nameof(embeds), "A max of 10 embeds are allowed."); - var args = new API.Rest.CreateWebhookMessageParams + // 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.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Users) && + allowedMentions.UserIds != null && allowedMentions.UserIds.Count > 0) + { + throw new ArgumentException("The Users flag is mutually exclusive with the list of User Ids.", nameof(allowedMentions)); + } + + if (allowedMentions.AllowedTypes.Value.HasFlag(AllowedMentionTypes.Roles) && + allowedMentions.RoleIds != null && allowedMentions.RoleIds.Count > 0) + { + throw new ArgumentException("The Roles flag is mutually exclusive with the list of Role Ids.", nameof(allowedMentions)); + } + } + + var response = new API.Rest.UploadInteractionFileParams(attachments?.ToArray()) + { + Type = InteractionResponseType.ChannelMessageWithSource, Content = text ?? Optional.Unspecified, - AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, + AllowedMentions = allowedMentions != null ? allowedMentions?.ToModel() : Optional.Unspecified, + Embeds = embeds.Any() ? embeds.Select(x => x.ToModel()).ToArray() : Optional.Unspecified, IsTTS = isTTS, - Embeds = embeds.Select(x => x.ToModel()).ToArray(), - Components = components?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified + Flags = ephemeral ? MessageFlags.Ephemeral : Optional.Unspecified, + MessageComponents = components?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified }; - if (ephemeral) - args.Flags = MessageFlags.Ephemeral; + lock (_lock) + { + if (HasResponded) + { + throw new InvalidOperationException("Cannot respond, update, or defer the same interaction twice"); + } + } - return await InteractionHelper.SendFollowupAsync(Discord.Rest, args, Token, Channel, options); + await InteractionHelper.SendInteractionResponseAsync(Discord, response, this, Channel, options).ConfigureAwait(false); + HasResponded = true; } /// - public override Task FollowupWithFileAsync( - Stream fileStream, - string fileName, + public override async Task FollowupAsync( string text = null, Embed[] embeds = null, bool isTTS = false, @@ -201,48 +217,25 @@ namespace Discord.WebSocket if (embed != null) embeds = new[] { embed }.Concat(embeds).ToArray(); - Preconditions.NotNull(fileStream, nameof(fileStream), "File Stream must have data"); - Preconditions.NotNullOrEmpty(fileName, nameof(fileName), "File Name must not be empty or null"); - - return FollowupWithFileAsync(new FileAttachment(fileStream, fileName), text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options); - } - - /// - public override Task FollowupWithFileAsync( - string filePath, - string fileName = null, - string text = null, - Embed[] embeds = null, - bool isTTS = false, - bool ephemeral = false, - AllowedMentions allowedMentions = null, - MessageComponent components = null, - Embed embed = null, - RequestOptions options = null) - { - Preconditions.NotNullOrEmpty(filePath, nameof(filePath), "Path must exist"); + 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, 10, nameof(embeds), "A max of 10 embeds are allowed."); - fileName ??= Path.GetFileName(filePath); - Preconditions.NotNullOrEmpty(fileName, nameof(fileName), "File Name must not be empty or null"); + var args = new API.Rest.CreateWebhookMessageParams + { + Content = text ?? Optional.Unspecified, + AllowedMentions = allowedMentions?.ToModel() ?? Optional.Unspecified, + IsTTS = isTTS, + Embeds = embeds.Select(x => x.ToModel()).ToArray(), + Components = components?.Components.Select(x => new API.ActionRowComponent(x)).ToArray() ?? Optional.Unspecified + }; - return FollowupWithFileAsync(new FileAttachment(File.OpenRead(filePath), fileName), text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options); - } + if (ephemeral) + args.Flags = MessageFlags.Ephemeral; - /// - public override Task FollowupWithFileAsync( - FileAttachment attachment, - string text = null, - Embed[] embeds = null, - bool isTTS = false, - bool ephemeral = false, - AllowedMentions allowedMentions = null, - MessageComponent components = null, - Embed embed = null, - RequestOptions options = null) - { - return FollowupWithFilesAsync(new FileAttachment[] { attachment }, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options); + return await InteractionHelper.SendFollowupAsync(Discord.Rest, args, Token, Channel, options); } - + /// public override async Task FollowupWithFilesAsync( IEnumerable attachments, diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/SocketInteraction.cs b/src/Discord.Net.WebSocket/Entities/Interaction/SocketInteraction.cs index 1bfd77479..b11a78464 100644 --- a/src/Discord.Net.WebSocket/Entities/Interaction/SocketInteraction.cs +++ b/src/Discord.Net.WebSocket/Entities/Interaction/SocketInteraction.cs @@ -136,9 +136,97 @@ namespace Discord.WebSocket /// The request options for this response. /// Message content is too long, length must be less or equal to . /// The parameters provided were invalid or the token was invalid. - public abstract Task RespondAsync(string text = null, Embed[] embeds = null, bool isTTS = false, + public abstract Task RespondAsync(string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); + /// + /// Responds to this interaction with a file attachment. + /// + /// The file to upload. + /// The file name of the attachment. + /// The text of the message to be sent. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// The request options for this response. + /// + /// A task that represents an asynchronous send operation for delivering the message. The task result + /// contains the sent message. + /// + public async Task RespondWithFileAsync(Stream fileStream, string fileName, string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) + { + using (var file = new FileAttachment(fileStream, fileName)) + { + await RespondWithFileAsync(file, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); + } + } + + /// + /// Responds to this interaction with a file attachment. + /// + /// The file to upload. + /// The file name of the attachment. + /// The text of the message to be sent. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// The request options for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// + /// A task that represents an asynchronous send operation for delivering the message. The task result + /// contains the sent message. + /// + public async Task RespondWithFileAsync(string filePath, string fileName, string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) + { + using (var file = new FileAttachment(filePath, fileName)) + { + await RespondWithFileAsync(file, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); + } + } + + /// + /// Responds to this interaction with a file attachment. + /// + /// The attachment containing the file and description. + /// The text of the message to be sent. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// The request options for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// + /// A task that represents an asynchronous send operation for delivering the message. The task result + /// contains the sent message. + /// + public Task RespondWithFileAsync(FileAttachment attachment, string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) + => RespondWithFilesAsync(new FileAttachment[] { attachment }, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options); + + /// + /// Responds to this interaction with a collection of file attachments. + /// + /// A collection of attachments to upload. + /// The text of the message to be sent. + /// A array of embeds to send with this response. Max 10. + /// if the message should be read out by a text-to-speech reader, otherwise . + /// if the response should be hidden to everyone besides the invoker of the command, otherwise . + /// The allowed mentions for this response. + /// The request options for this response. + /// A to be sent with this response. + /// A single embed to send with this response. If this is passed alongside an array of embeds, the single embed will be ignored. + /// + /// A task that represents an asynchronous send operation for delivering the message. The task result + /// contains the sent message. + /// + public abstract Task RespondWithFilesAsync(IEnumerable attachments, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); + /// /// Sends a followup message for this interaction. /// @@ -172,8 +260,14 @@ namespace Discord.WebSocket /// /// The sent message. /// - public abstract Task FollowupWithFileAsync(Stream fileStream, string fileName, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, - AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); + public async Task FollowupWithFileAsync(Stream fileStream, string fileName, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) + { + using (var file = new FileAttachment(fileStream, fileName)) + { + return await FollowupWithFileAsync(file, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); + } + } /// /// Sends a followup message for this interaction. @@ -191,8 +285,14 @@ namespace Discord.WebSocket /// /// The sent message. /// - public abstract Task FollowupWithFileAsync(string filePath, string fileName = null, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, - AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); + public async Task FollowupWithFileAsync(string filePath, string fileName = null, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) + { + using (var file = new FileAttachment(filePath, fileName)) + { + return await FollowupWithFileAsync(file, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); + } + } /// /// Sends a followup message for this interaction. @@ -210,8 +310,9 @@ namespace Discord.WebSocket /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - public abstract Task FollowupWithFileAsync(FileAttachment attachment, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, - AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null); + public Task FollowupWithFileAsync(FileAttachment attachment, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) + => FollowupWithFilesAsync(new FileAttachment[] { attachment }, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options); /// /// Sends a followup message for this interaction. @@ -252,6 +353,10 @@ namespace Discord.WebSocket return RestInteractionMessage.Create(Discord, model, Token, Channel); } + /// + public Task DeleteOriginalResponseAsync(RequestOptions options = null) + => InteractionHelper.DeleteInteractionResponseAsync(Discord, this, options); + /// /// Acknowledges this interaction. /// @@ -275,12 +380,16 @@ namespace Discord.WebSocket async Task IDiscordInteraction.ModifyOriginalResponseAsync(Action func, RequestOptions options) => await ModifyOriginalResponseAsync(func, options).ConfigureAwait(false); /// - async Task IDiscordInteraction.RespondAsync(string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) + async Task IDiscordInteraction.RespondAsync(string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) => await RespondAsync(text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); /// async Task IDiscordInteraction.FollowupAsync(string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) => await FollowupAsync(text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); /// + async Task IDiscordInteraction.FollowupWithFilesAsync(IEnumerable attachments, string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) + => await FollowupWithFilesAsync(attachments, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); +#if NETCOREAPP3_0_OR_GREATER != true + /// async Task IDiscordInteraction.FollowupWithFileAsync(Stream fileStream, string fileName, string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) => await FollowupWithFileAsync(fileStream, fileName, text, embeds, isTTS, ephemeral, allowedMentions, components, embed).ConfigureAwait(false); /// @@ -289,9 +398,7 @@ namespace Discord.WebSocket /// async Task IDiscordInteraction.FollowupWithFileAsync(FileAttachment attachment, string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) => await FollowupWithFileAsync(attachment, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); - /// - async Task IDiscordInteraction.FollowupWithFilesAsync(IEnumerable attachments, string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) - => await FollowupWithFilesAsync(attachments, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); +#endif #endregion } } diff --git a/src/Discord.Net.Webhook/Discord.Net.Webhook.csproj b/src/Discord.Net.Webhook/Discord.Net.Webhook.csproj index 175b486d2..df920b7dc 100644 --- a/src/Discord.Net.Webhook/Discord.Net.Webhook.csproj +++ b/src/Discord.Net.Webhook/Discord.Net.Webhook.csproj @@ -1,6 +1,6 @@ - + Discord.Net.Webhook Discord.Webhook From a4b0c4f1e3d96efb1568f08a6f696c9cf147a90c Mon Sep 17 00:00:00 2001 From: ppaneksamsung Date: Sun, 19 Dec 2021 08:42:08 +0100 Subject: [PATCH 178/212] Allow clients to send 'Gateway Voice State Update' command (#1888) * Expose SendVoiceStateUpdateAsync API to clients Fixes #1882 * Revert "Expose SendVoiceStateUpdateAsync API to clients" This reverts commit 1a11cae7 * Add IAudioChannel.ModifyAsync API * fix NRE with request options Co-authored-by: Quin Lynch <49576606+quinchs@users.noreply.github.com> Co-authored-by: quin lynch --- .../Channels/AudioChannelProperties.cs | 18 ++++++++ .../Entities/Channels/IAudioChannel.cs | 12 +++++ .../Entities/Channels/RestGroupChannel.cs | 1 + .../Entities/Channels/RestVoiceChannel.cs | 1 + .../DiscordSocketApiClient.cs | 7 ++- .../Entities/Channels/SocketGroupChannel.cs | 1 + .../Entities/Channels/SocketVoiceChannel.cs | 6 +++ .../Entities/Guilds/SocketGuild.cs | 45 ++++++++++++++++++- .../MockedEntities/MockedGroupChannel.cs | 5 +++ .../MockedEntities/MockedVoiceChannel.cs | 5 +++ 10 files changed, 98 insertions(+), 3 deletions(-) create mode 100644 src/Discord.Net.Core/Entities/Channels/AudioChannelProperties.cs diff --git a/src/Discord.Net.Core/Entities/Channels/AudioChannelProperties.cs b/src/Discord.Net.Core/Entities/Channels/AudioChannelProperties.cs new file mode 100644 index 000000000..01d436f2a --- /dev/null +++ b/src/Discord.Net.Core/Entities/Channels/AudioChannelProperties.cs @@ -0,0 +1,18 @@ +namespace Discord +{ + /// + /// Provides properties that are used to modify an with the specified changes. + /// + public class AudioChannelProperties + { + /// + /// Sets whether the user should be muted. + /// + public Optional SelfMute { get; set; } + + /// + /// Sets whether the user should be deafened. + /// + public Optional SelfDeaf { get; set; } + } +} diff --git a/src/Discord.Net.Core/Entities/Channels/IAudioChannel.cs b/src/Discord.Net.Core/Entities/Channels/IAudioChannel.cs index 179f4b03e..dfab58f07 100644 --- a/src/Discord.Net.Core/Entities/Channels/IAudioChannel.cs +++ b/src/Discord.Net.Core/Entities/Channels/IAudioChannel.cs @@ -1,4 +1,5 @@ using Discord.Audio; +using System; using System.Threading.Tasks; namespace Discord @@ -27,5 +28,16 @@ namespace Discord /// A task representing the asynchronous operation for disconnecting from the audio channel. /// Task DisconnectAsync(); + + /// + /// Modifies this audio channel. + /// + /// The properties to modify the channel with. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous modification operation. + /// + /// + Task ModifyAsync(Action func, RequestOptions options = null); } } diff --git a/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs index 267b4dc52..1240f6d67 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs @@ -211,6 +211,7 @@ namespace Discord.Rest /// Connecting to a group channel is not supported. Task IAudioChannel.ConnectAsync(bool selfDeaf, bool selfMute, bool external) { throw new NotSupportedException(); } Task IAudioChannel.DisconnectAsync() { throw new NotSupportedException(); } + Task IAudioChannel.ModifyAsync(Action func, RequestOptions options) { throw new NotSupportedException(); } #endregion #region IChannel diff --git a/src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs index 239c00467..98ff6ac6e 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs @@ -95,6 +95,7 @@ namespace Discord.Rest /// Connecting to a REST-based channel is not supported. Task IAudioChannel.ConnectAsync(bool selfDeaf, bool selfMute, bool external) { throw new NotSupportedException(); } Task IAudioChannel.DisconnectAsync() { throw new NotSupportedException(); } + Task IAudioChannel.ModifyAsync(Action func, RequestOptions options) { throw new NotSupportedException(); } #endregion #region IGuildChannel diff --git a/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs b/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs index 3c0f3d4a8..150da9d89 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs @@ -311,7 +311,6 @@ namespace Discord.API } public async Task SendVoiceStateUpdateAsync(ulong guildId, ulong? channelId, bool selfDeaf, bool selfMute, RequestOptions options = null) { - options = RequestOptions.CreateOrClone(options); var payload = new VoiceStateUpdateParams { GuildId = guildId, @@ -319,6 +318,12 @@ namespace Discord.API SelfDeaf = selfDeaf, SelfMute = selfMute }; + options = RequestOptions.CreateOrClone(options); + await SendGatewayAsync(GatewayOpCode.VoiceStateUpdate, payload, options: options).ConfigureAwait(false); + } + public async Task SendVoiceStateUpdateAsync(VoiceStateUpdateParams payload, RequestOptions options = null) + { + options = RequestOptions.CreateOrClone(options); await SendGatewayAsync(GatewayOpCode.VoiceStateUpdate, payload, options: options).ConfigureAwait(false); } public async Task SendGuildSyncAsync(IEnumerable guildIds, RequestOptions options = null) diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs index f1debb864..0451f97ab 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs @@ -344,6 +344,7 @@ namespace Discord.WebSocket /// Connecting to a group channel is not supported. Task IAudioChannel.ConnectAsync(bool selfDeaf, bool selfMute, bool external) { throw new NotSupportedException(); } Task IAudioChannel.DisconnectAsync() { throw new NotSupportedException(); } + Task IAudioChannel.ModifyAsync(Action func, RequestOptions options) { throw new NotSupportedException(); } #endregion #region IChannel diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs index 08b976bfe..498862697 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs @@ -82,6 +82,12 @@ namespace Discord.WebSocket public async Task DisconnectAsync() => await Guild.DisconnectAudioAsync(); + /// + public async Task ModifyAsync(Action func, RequestOptions options = null) + { + await Guild.ModifyAudioAsync(Id, func, options).ConfigureAwait(false); + } + /// public override SocketGuildUser GetUser(ulong id) { diff --git a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs index 697d5fe82..084a42c55 100644 --- a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs +++ b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs @@ -1,3 +1,4 @@ +using Discord.API.Gateway; using Discord.Audio; using Discord.Rest; using System; @@ -45,6 +46,7 @@ namespace Discord.WebSocket private ImmutableArray _emotes; private AudioClient _audioClient; + private VoiceStateUpdateParams _voiceStateUpdateParams; #pragma warning restore IDISP002, IDISP006 /// @@ -1593,11 +1595,19 @@ namespace Discord.WebSocket promise = new TaskCompletionSource(); _audioConnectPromise = promise; + _voiceStateUpdateParams = new VoiceStateUpdateParams + { + GuildId = Id, + ChannelId = channelId, + SelfDeaf = selfDeaf, + SelfMute = selfMute + }; + if (external) { #pragma warning disable IDISP001 var _ = promise.TrySetResultAsync(null); - await Discord.ApiClient.SendVoiceStateUpdateAsync(Id, channelId, selfDeaf, selfMute).ConfigureAwait(false); + await Discord.ApiClient.SendVoiceStateUpdateAsync(_voiceStateUpdateParams).ConfigureAwait(false); return null; #pragma warning restore IDISP001 } @@ -1632,7 +1642,7 @@ namespace Discord.WebSocket #pragma warning restore IDISP003 } - await Discord.ApiClient.SendVoiceStateUpdateAsync(Id, channelId, selfDeaf, selfMute).ConfigureAwait(false); + await Discord.ApiClient.SendVoiceStateUpdateAsync(_voiceStateUpdateParams).ConfigureAwait(false); } catch { @@ -1679,7 +1689,38 @@ namespace Discord.WebSocket await Discord.ApiClient.SendVoiceStateUpdateAsync(Id, null, false, false).ConfigureAwait(false); _audioClient?.Dispose(); _audioClient = null; + _voiceStateUpdateParams = null; } + + internal async Task ModifyAudioAsync(ulong channelId, Action func, RequestOptions options) + { + await _audioLock.WaitAsync().ConfigureAwait(false); + try + { + await ModifyAudioInternalAsync(channelId, func, options).ConfigureAwait(false); + } + finally + { + _audioLock.Release(); + } + } + + private async Task ModifyAudioInternalAsync(ulong channelId, Action func, RequestOptions options) + { + if (_voiceStateUpdateParams == null || _voiceStateUpdateParams.ChannelId != channelId) + throw new InvalidOperationException("Cannot modify properties of not connected audio channel"); + + var props = new AudioChannelProperties(); + func(props); + + if (props.SelfDeaf.IsSpecified) + _voiceStateUpdateParams.SelfDeaf = props.SelfDeaf.Value; + if (props.SelfMute.IsSpecified) + _voiceStateUpdateParams.SelfMute = props.SelfMute.Value; + + await Discord.ApiClient.SendVoiceStateUpdateAsync(_voiceStateUpdateParams, options).ConfigureAwait(false); + } + internal async Task FinishConnectAudio(string url, string token) { //TODO: Mem Leak: Disconnected/Connected handlers aren't cleaned up diff --git a/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs b/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs index 6b134d92f..3330b7bce 100644 --- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs +++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs @@ -41,6 +41,11 @@ namespace Discord throw new NotImplementedException(); } + public Task ModifyAsync(Action func, RequestOptions options) + { + throw new NotImplementedException(); + } + public IDisposable EnterTypingState(RequestOptions options = null) { throw new NotImplementedException(); diff --git a/test/Discord.Net.Tests.Unit/MockedEntities/MockedVoiceChannel.cs b/test/Discord.Net.Tests.Unit/MockedEntities/MockedVoiceChannel.cs index 4514dfc97..e053636a9 100644 --- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedVoiceChannel.cs +++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedVoiceChannel.cs @@ -64,6 +64,11 @@ namespace Discord throw new NotImplementedException(); } + public Task ModifyAsync(Action func, RequestOptions options) + { + throw new NotImplementedException(); + } + public Task GetCategoryAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null) { throw new NotImplementedException(); From 34444b0ad941c50d43567215ff43f6bbc143e600 Mon Sep 17 00:00:00 2001 From: quin lynch Date: Sun, 19 Dec 2021 08:23:14 -0400 Subject: [PATCH 179/212] meta: 3.0.0 --- Discord.Net.targets | 1 - src/Discord.Net/Discord.Net.nuspec | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Discord.Net.targets b/Discord.Net.targets index febd921d1..d987ed68e 100644 --- a/Discord.Net.targets +++ b/Discord.Net.targets @@ -1,7 +1,6 @@ 3.0.0 - dev latest Discord.Net Contributors discord;discordapp diff --git a/src/Discord.Net/Discord.Net.nuspec b/src/Discord.Net/Discord.Net.nuspec index a2efc880b..30671fb08 100644 --- a/src/Discord.Net/Discord.Net.nuspec +++ b/src/Discord.Net/Discord.Net.nuspec @@ -2,7 +2,7 @@ Discord.Net - 3.0.0-dev$suffix$ + 3.0.0$suffix$ Discord.Net Discord.Net Contributors foxbot From 768a0a90b64e6c54938fc1503b86a79d93219ed2 Mon Sep 17 00:00:00 2001 From: quin lynch Date: Sun, 19 Dec 2021 11:12:21 -0400 Subject: [PATCH 180/212] Fix voice codes namespace --- src/Discord.Net.WebSocket/API/Voice/VoiceCloseCode.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Discord.Net.WebSocket/API/Voice/VoiceCloseCode.cs b/src/Discord.Net.WebSocket/API/Voice/VoiceCloseCode.cs index e35227050..498d595da 100644 --- a/src/Discord.Net.WebSocket/API/Voice/VoiceCloseCode.cs +++ b/src/Discord.Net.WebSocket/API/Voice/VoiceCloseCode.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Discord.API.Voice +namespace Discord.WebSocket { /// /// Represents generic op codes for voice disconnect. From 5d43fe65b49e32b2dafb091d548ddfcab221a3ec Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Mon, 20 Dec 2021 10:59:56 -0400 Subject: [PATCH 181/212] fix thread member nre (#1977) --- src/Discord.Net.Rest/API/Common/ThreadMember.cs | 6 ------ src/Discord.Net.WebSocket/DiscordSocketClient.cs | 12 +++++------- .../Entities/Users/SocketThreadUser.cs | 10 ---------- 3 files changed, 5 insertions(+), 23 deletions(-) diff --git a/src/Discord.Net.Rest/API/Common/ThreadMember.cs b/src/Discord.Net.Rest/API/Common/ThreadMember.cs index 3e30d2c95..30249ee44 100644 --- a/src/Discord.Net.Rest/API/Common/ThreadMember.cs +++ b/src/Discord.Net.Rest/API/Common/ThreadMember.cs @@ -14,12 +14,6 @@ namespace Discord.API [JsonProperty("join_timestamp")] public DateTimeOffset JoinTimestamp { get; set; } - [JsonProperty("presence")] - public Optional Presence { get; set; } - - [JsonProperty("member")] - public Optional Member { get; set; } - [JsonProperty("flags")] public int Flags { get; set; } // No enum type (yet?) } diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index b107fbbea..5d2938ef4 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -2529,16 +2529,14 @@ namespace Discord.WebSocket { SocketGuildUser guildMember; - if (threadMember.Member.IsSpecified) + guildMember = guild.GetUser(threadMember.UserId.Value); + + if(guildMember == null) { - guildMember = guild.AddOrUpdateUser(threadMember.Member.Value); + await UnknownGuildUserAsync("THREAD_MEMBERS_UPDATE", threadMember.UserId.Value, guild.Id); } else - { - guildMember = guild.GetUser(threadMember.UserId.Value); - } - - newThreadMembers.Add(thread.AddOrUpdateThreadMember(threadMember, guildMember)); + newThreadMembers.Add(thread.AddOrUpdateThreadMember(threadMember, guildMember)); } if (newThreadMembers.Any()) diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketThreadUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketThreadUser.cs index b2311dd7d..407fcb8b5 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketThreadUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketThreadUser.cs @@ -137,16 +137,6 @@ namespace Discord.WebSocket internal void Update(Model model) { ThreadJoinedAt = model.JoinTimestamp; - - if (model.Presence.IsSpecified) - { - GuildUser.Update(Discord.State, model.Presence.Value, true); - } - - if (model.Member.IsSpecified) - { - GuildUser.Update(Discord.State, model.Member.Value); - } } /// From a2f57f8cc61baa2a48e4f7a05602cb3d86484f35 Mon Sep 17 00:00:00 2001 From: Cenk Ergen <57065323+Cenngo@users.noreply.github.com> Date: Mon, 20 Dec 2021 19:41:55 +0300 Subject: [PATCH 182/212] fix requireRole attribute of interaction service (#1980) --- .../Attributes/Preconditions/RequireRoleAttribute.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Discord.Net.Interactions/Attributes/Preconditions/RequireRoleAttribute.cs b/src/Discord.Net.Interactions/Attributes/Preconditions/RequireRoleAttribute.cs index 69a49c7fa..7126d55b6 100644 --- a/src/Discord.Net.Interactions/Attributes/Preconditions/RequireRoleAttribute.cs +++ b/src/Discord.Net.Interactions/Attributes/Preconditions/RequireRoleAttribute.cs @@ -54,15 +54,17 @@ namespace Discord.Interactions if (guildUser.RoleIds.Contains(RoleId.Value)) return Task.FromResult(PreconditionResult.FromSuccess()); else - Task.FromResult(PreconditionResult.FromError(ErrorMessage ?? $"User requires guild role {context.Guild.GetRole(RoleId.Value).Name}.")); + return Task.FromResult(PreconditionResult.FromError(ErrorMessage ?? $"User requires guild role {context.Guild.GetRole(RoleId.Value).Name}.")); } if (!string.IsNullOrEmpty(RoleName)) { - if (guildUser.Guild.Roles.Any(x => x.Name == RoleName)) + var roleNames = guildUser.RoleIds.Select(x => guildUser.Guild.GetRole(x).Name); + + if (roleNames.Contains(RoleName)) return Task.FromResult(PreconditionResult.FromSuccess()); else - Task.FromResult(PreconditionResult.FromError(ErrorMessage ?? $"User requires guild role {RoleName}.")); + return Task.FromResult(PreconditionResult.FromError(ErrorMessage ?? $"User requires guild role {RoleName}.")); } return Task.FromResult(PreconditionResult.FromSuccess()); From 8daa0b6c911a36cbf6a9fb6cfbe8b030dd9b0ceb Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Mon, 20 Dec 2021 12:42:28 -0400 Subject: [PATCH 183/212] fix: guild scheduled events update (#1976) --- src/Discord.Net.WebSocket/DiscordSocketClient.cs | 2 +- src/Discord.Net.WebSocket/Entities/Guilds/SocketGuildEvent.cs | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 5d2938ef4..95b36f9b5 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -2640,7 +2640,7 @@ namespace Discord.WebSocket return; } - var before = guild.GetEvent(data.Id); + var before = guild.GetEvent(data.Id)?.Clone(); var beforeCacheable = new Cacheable(before, data.Id, before != null, () => Task.FromResult((SocketGuildEvent)null)); diff --git a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuildEvent.cs b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuildEvent.cs index 6974c0498..df619e4ca 100644 --- a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuildEvent.cs +++ b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuildEvent.cs @@ -196,6 +196,8 @@ namespace Discord.WebSocket public IAsyncEnumerable> GetUsersAsync(ulong fromUserId, Direction dir, int limit = DiscordConfig.MaxGuildEventUsersPerBatch, RequestOptions options = null) => GuildHelper.GetEventUsersAsync(Discord, this, fromUserId, dir, limit, options); + internal SocketGuildEvent Clone() => MemberwiseClone() as SocketGuildEvent; + #region IGuildScheduledEvent /// From 97f5190746f08b961ede4a5b3c1bd7939664d0e1 Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Tue, 21 Dec 2021 03:18:36 -0400 Subject: [PATCH 184/212] fix typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 194bfa869..da1a01d2e 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ Nightly builds are available through our MyGet feed (`https://www.myget.org/F/di ### Unstable (Labs) -Labs builds are avaiable on nuget (`https://www.nuget.org/packages/Discord.Net.Labs/`) and myget (`https://www.myget.org/F/discord-net-labs/api/v3/index.json`). +Labs builds are available on nuget (`https://www.nuget.org/packages/Discord.Net.Labs/`) and myget (`https://www.myget.org/F/discord-net-labs/api/v3/index.json`). ## Compiling From 2c567ea5466cd66c01ae8235d038932902b45ec9 Mon Sep 17 00:00:00 2001 From: quin lynch Date: Tue, 21 Dec 2021 09:19:35 -0400 Subject: [PATCH 185/212] Add section about timeouts in interactions --- docs/faq/basics/interactions.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/faq/basics/interactions.md b/docs/faq/basics/interactions.md index 5a4f41097..33b89ac2d 100644 --- a/docs/faq/basics/interactions.md +++ b/docs/faq/basics/interactions.md @@ -22,6 +22,10 @@ DeferAsync will not send out a response, RespondAsync will. [DeferAsync]: xref:Discord.IDiscordInteraction [FollowUpAsync]: xref:Discord.IDiscordInteraction +## Im getting System.TimeoutException: 'Cannot respond to an interaction after 3 seconds!' + +This happens because your computers clock is out of sync or your trying to respond after 3 seconds. If your clock is out of sync and you cant fix it, you can set the `UseInteractionSnowflakeDate` to false in the config. + ## Bad form Exception when I try to create my commands, why do I get this? Bad form exceptions are thrown if the slash, user or message command builder has invalid values. From 30fdfa49481d78a065a6c91d1dc1936e4d9a4c2a Mon Sep 17 00:00:00 2001 From: Armano den Boef <68127614+Rozen4334@users.noreply.github.com> Date: Wed, 22 Dec 2021 14:37:23 +0100 Subject: [PATCH 186/212] Update README.md (#1985) --- README.md | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index da1a01d2e..f5adc4771 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,29 @@ # Discord.Net - -[![NuGet](https://img.shields.io/nuget/vpre/Discord.Net.svg?maxAge=2592000?style=plastic)](https://www.nuget.org/packages/Discord.Net) -[![MyGet](https://img.shields.io/myget/discord-net/vpre/Discord.Net.svg)](https://www.myget.org/feed/Packages/discord-net) -[![Build Status](https://dev.azure.com/discord-net/Discord.Net/_apis/build/status/discord-net.Discord.Net?branchName=dev)](https://dev.azure.com/discord-net/Discord.Net/_build/latest?definitionId=1&branchName=dev) -[![Discord](https://discord.com/api/guilds/848176216011046962/widget.png)](https://discord.gg/dnet) - -An unofficial .NET API Wrapper for the Discord client (https://discord.com). +

+ + Logo + +
+
+ + NuGet + + + MyGet + + + Build Status + + + Discord + +

+ +Discord NET is an unofficial .NET API Wrapper for the Discord client (https://discord.com). ## Documentation -- [Nightly](https://docs.stillu.cc/) - - [Latest CI repo](https://github.com/discord-net/docs-static) +- [Nightly](https://discordnet.dev) ## Installation From 7fd991f7b5c34a1085dc6f262b45e346a53c821c Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Wed, 22 Dec 2021 09:39:20 -0400 Subject: [PATCH 187/212] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f5adc4771..64337ca9f 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ NuGet - MyGet + MyGet Build Status From 178446ab80f175cc15ed8b1bd94754fa3413c711 Mon Sep 17 00:00:00 2001 From: Armano den Boef <68127614+Rozen4334@users.noreply.github.com> Date: Wed, 22 Dec 2021 14:52:04 +0100 Subject: [PATCH 188/212] Update package banner link (#1986) * Missed single link update > Working on svg logo to be made available from main site instead of third party. * Add logo with border * Update img link --- README.md | 3 +-- .../logo/SVG/Combinationmark White Border.svg | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 docs/marketing/logo/SVG/Combinationmark White Border.svg diff --git a/README.md b/README.md index 64337ca9f..cf0293359 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Discord.Net

- Logo + Logo

@@ -18,7 +18,6 @@ Discord

- Discord NET is an unofficial .NET API Wrapper for the Discord client (https://discord.com). ## Documentation diff --git a/docs/marketing/logo/SVG/Combinationmark White Border.svg b/docs/marketing/logo/SVG/Combinationmark White Border.svg new file mode 100644 index 000000000..787803d4b --- /dev/null +++ b/docs/marketing/logo/SVG/Combinationmark White Border.svg @@ -0,0 +1,21 @@ + + + + + + Combinationmark White + + + + + + + + + + + + + + + \ No newline at end of file From e779e97fa53e0cde52a3a8ad2c319594d8cfd610 Mon Sep 17 00:00:00 2001 From: Armano den Boef <68127614+Rozen4334@users.noreply.github.com> Date: Wed, 22 Dec 2021 16:04:08 +0100 Subject: [PATCH 189/212] Update FAQ & Migration guide to include Intents (#1987) * Update client-basics.md * Update v2_to_v3_guide.md --- docs/faq/basics/client-basics.md | 52 +++++++++++++++++++++++ docs/guides/v2_v3_guide/v2_to_v3_guide.md | 52 +++++++++++++++++++++++ 2 files changed, 104 insertions(+) diff --git a/docs/faq/basics/client-basics.md b/docs/faq/basics/client-basics.md index 72ad472f2..ade33c35d 100644 --- a/docs/faq/basics/client-basics.md +++ b/docs/faq/basics/client-basics.md @@ -9,6 +9,58 @@ In the following section, you will find commonly asked questions and answers about common issues that you may face when utilizing the various clients offered by the library. +## I keep having trouble with intents! + +As Discord.NET has upgraded from Discord API v6 to API v9, +`GatewayIntents` must now be specified in the socket config, as well as on the [developer portal]. + +```cs + +// Where ever you declared your websocket client. +DiscordSocketClient _client; + +... + +var config = new DiscordSocketConfig() +{ + .. // Other config options can be presented here. + GatewayIntents = GatewayIntents.All +} + +_client = new DiscordSocketClient(config); + +``` +### Common intents: + +- AllUnprivileged: This is a group of most common intents, that do NOT require any [developer portal] intents to be enabled. +This includes intents that receive messages such as: `GatewayIntents.GuildMessages, GatewayIntents.DirectMessages` +- GuildMembers: An intent disabled by default, as you need to enable it in the [developer portal]. +- GuildPresences: Also disabled by default, this intent together with `GuildMembers` are the only intents not included in `AllUnprivileged`. +- All: All intents, it is ill adviced to use this without care, as it *can* cause a memory leak from presence. +The library will give responsive warnings if you specify unnecessary intents. + + +> [!NOTE] +> All gateway intents, their Discord API counterpart and their enum value are listed +> [HERE](xref:Discord.GatewayIntents) + +### Stacking intents: + +It is common that you require several intents together. +The example below shows how this can be done. + +```cs + +GatewayIntents = GatewayIntents.AllUnprivileged | GatewayIntents.GuildMembers | .. + +``` + +> [!NOTE] +> Further documentation on the ` | ` operator can be found +> [HERE](https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators) + +[developer portal]: https://discord.com/developers/ + ## My client keeps returning 401 upon logging in! > [!WARNING] diff --git a/docs/guides/v2_v3_guide/v2_to_v3_guide.md b/docs/guides/v2_v3_guide/v2_to_v3_guide.md index 2a47b42bb..915c4a57f 100644 --- a/docs/guides/v2_v3_guide/v2_to_v3_guide.md +++ b/docs/guides/v2_v3_guide/v2_to_v3_guide.md @@ -10,6 +10,58 @@ and more flexible library than any previous version. Below are the most notable breaking changes that you would need to update your code to work with V3. +### GatewayIntents + +As Discord.NET has upgraded from Discord API v6 to API v9, +`GatewayIntents` must now be specified in the socket config, as well as on the [developer portal]. + +```cs + +// Where ever you declared your websocket client. +DiscordSocketClient _client; + +... + +var config = new DiscordSocketConfig() +{ + .. // Other config options can be presented here. + GatewayIntents = GatewayIntents.All +} + +_client = new DiscordSocketClient(config); + +``` +#### Common intents: + +- AllUnprivileged: This is a group of most common intents, that do NOT require any [developer portal] intents to be enabled. +This includes intents that receive messages such as: `GatewayIntents.GuildMessages, GatewayIntents.DirectMessages` +- GuildMembers: An intent disabled by default, as you need to enable it in the [developer portal]. +- GuildPresences: Also disabled by default, this intent together with `GuildMembers` are the only intents not included in `AllUnprivileged`. +- All: All intents, it is ill adviced to use this without care, as it *can* cause a memory leak from presence. +The library will give responsive warnings if you specify unnecessary intents. + + +> [!NOTE] +> All gateway intents, their Discord API counterpart and their enum value are listed +> [HERE](xref:Discord.GatewayIntents) + +#### Stacking intents: + +It is common that you require several intents together. +The example below shows how this can be done. + +```cs + +GatewayIntents = GatewayIntents.AllUnprivileged | GatewayIntents.GuildMembers | .. + +``` + +> [!NOTE] +> Further documentation on the ` | ` operator can be found +> [HERE](https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators) + +[developer portal]: https://discord.com/developers/ + ### ReactionAdded Event The reaction added event has been changed to have both parameters cacheable. From a8b550660be4c7994d17d0fbb7c938ad05c83156 Mon Sep 17 00:00:00 2001 From: Steven Date: Thu, 23 Dec 2021 05:39:29 -0500 Subject: [PATCH 190/212] Fix images path for select menu section (#1990) --- docs/guides/int_basics/message-components/select-menus.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/guides/int_basics/message-components/select-menus.md b/docs/guides/int_basics/message-components/select-menus.md index 5181ddf34..6dfe151b1 100644 --- a/docs/guides/int_basics/message-components/select-menus.md +++ b/docs/guides/int_basics/message-components/select-menus.md @@ -47,11 +47,11 @@ public async Task Spawn() Running this produces this result: -![](Images/image4.png) +![](images/image4.png) And opening the menu we see: -![](Images/image5.png) +![](images/image5.png) Lets handle the selection of an option, We can hook the `SelectMenuExecuted` event to handle our select menu: @@ -73,4 +73,4 @@ public async Task MyMenuHandler(SocketMessageComponent arg) Running this produces this result: -![](Images/image6.png) +![](images/image6.png) From fb5252511af395959d77829da3c1b6a6b6991edf Mon Sep 17 00:00:00 2001 From: Steven Date: Thu, 23 Dec 2021 11:01:44 -0500 Subject: [PATCH 191/212] fix images; fix closing brace on cs ref (#1992) --- docs/guides/int_basics/message-components/buttons-in-depth.md | 2 +- .../int_basics/message-components/responding-to-buttons.md | 2 +- docs/guides/int_framework/post-execution.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/guides/int_basics/message-components/buttons-in-depth.md b/docs/guides/int_basics/message-components/buttons-in-depth.md index f9fd67515..5da48c69b 100644 --- a/docs/guides/int_basics/message-components/buttons-in-depth.md +++ b/docs/guides/int_basics/message-components/buttons-in-depth.md @@ -28,7 +28,7 @@ This is the property sent to you by discord when a button is clicked. It is not Styling your buttons are important for indicating different actions: -![](Images/image3.png) +![](images/image3.png) You can do this by using the `ButtonStyle` which has all the styles defined. diff --git a/docs/guides/int_basics/message-components/responding-to-buttons.md b/docs/guides/int_basics/message-components/responding-to-buttons.md index 00d651f6b..7546c6fe2 100644 --- a/docs/guides/int_basics/message-components/responding-to-buttons.md +++ b/docs/guides/int_basics/message-components/responding-to-buttons.md @@ -34,4 +34,4 @@ public async Task MyButtonHandler(SocketMessageComponent component) Running it and clicking the button: -![](Images/image2.png) \ No newline at end of file +![](images/image2.png) \ No newline at end of file diff --git a/docs/guides/int_framework/post-execution.md b/docs/guides/int_framework/post-execution.md index c68d14fa5..70da8ad1e 100644 --- a/docs/guides/int_framework/post-execution.md +++ b/docs/guides/int_framework/post-execution.md @@ -48,7 +48,7 @@ Interaction Result come in a handful of different flavours: Every time a command gets executed, Interaction Service raises a `CommandExecuted` event. These events can be used to create a post-execution pipeline. -[!code-csharp[Error Review](samples/postexecution/error_review.cs) +[!code-csharp[Error Review](samples/postexecution/error_review.cs)] ## Log Event From 5446bfe34343ac6e08757d566785ef2f4c4ded6b Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Fri, 24 Dec 2021 10:37:25 -0400 Subject: [PATCH 192/212] Fix SocketGuildUser being changed to SocketGlobalUser in UserLeft (#1999) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: ✨ <25006819+sabihoshi@users.noreply.github.com> --- src/Discord.Net.WebSocket/DiscordSocketClient.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 95b36f9b5..fa93239b5 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -1309,12 +1309,12 @@ namespace Discord.WebSocket return; } - user = State.GetUser(data.User.Id); + user ??= State.GetUser(data.User.Id); if (user != null) user.Update(State, data.User); else - user = SocketGlobalUser.Create(this, State, data.User); + user = State.GetOrAddUser(data.User.Id, (x) => SocketGlobalUser.Create(this, State, data.User)); await TimedInvokeAsync(_userLeftEvent, nameof(UserLeft), guild, user).ConfigureAwait(false); } From 9f124b25ab3cc2e64ffbac3aeb81247ebd4d6ca5 Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Fri, 24 Dec 2021 10:37:36 -0400 Subject: [PATCH 193/212] Add before and after execute async (#1998) --- .../Builders/ModuleClassBuilder.cs | 2 ++ .../IInteractionModuleBase.cs | 16 +++++++++++++++- .../InteractionModuleBase.cs | 6 ++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/Discord.Net.Interactions/Builders/ModuleClassBuilder.cs b/src/Discord.Net.Interactions/Builders/ModuleClassBuilder.cs index 58b00c5f8..071c68349 100644 --- a/src/Discord.Net.Interactions/Builders/ModuleClassBuilder.cs +++ b/src/Discord.Net.Interactions/Builders/ModuleClassBuilder.cs @@ -311,6 +311,7 @@ namespace Discord.Interactions.Builders try { + await instance.BeforeExecuteAsync(commandInfo).ConfigureAwait(false); instance.BeforeExecute(commandInfo); var task = commandInvoker(instance, args) ?? Task.Delay(0); @@ -332,6 +333,7 @@ namespace Discord.Interactions.Builders } finally { + await instance.AfterExecuteAsync(commandInfo).ConfigureAwait(false); instance.AfterExecute(commandInfo); ( instance as IDisposable )?.Dispose(); } diff --git a/src/Discord.Net.Interactions/IInteractionModuleBase.cs b/src/Discord.Net.Interactions/IInteractionModuleBase.cs index e840e6a0f..bf5530fe0 100644 --- a/src/Discord.Net.Interactions/IInteractionModuleBase.cs +++ b/src/Discord.Net.Interactions/IInteractionModuleBase.cs @@ -1,3 +1,5 @@ +using System.Threading.Tasks; + namespace Discord.Interactions { /// @@ -11,11 +13,23 @@ namespace Discord.Interactions /// void SetContext (IInteractionContext context); + /// + /// Method body to be executed asynchronously before executing an application command. + /// + /// Command information related to the Discord Application Command. + Task BeforeExecuteAsync(ICommandInfo command); + /// /// Method body to be executed before executing an application command. /// /// Command information related to the Discord Application Command. - void BeforeExecute (ICommandInfo command); + void BeforeExecute(ICommandInfo command); + + /// + /// Method body to be executed asynchronously after an application command execution. + /// + /// Command information related to the Discord Application Command. + Task AfterExecuteAsync(ICommandInfo command); /// /// Method body to be executed after an application command execution. diff --git a/src/Discord.Net.Interactions/InteractionModuleBase.cs b/src/Discord.Net.Interactions/InteractionModuleBase.cs index 56ef11d05..739f1da3a 100644 --- a/src/Discord.Net.Interactions/InteractionModuleBase.cs +++ b/src/Discord.Net.Interactions/InteractionModuleBase.cs @@ -20,6 +20,12 @@ namespace Discord.Interactions /// public virtual void BeforeExecute (ICommandInfo command) { } + /// + public virtual Task BeforeExecuteAsync(ICommandInfo command) => Task.CompletedTask; + + /// + public virtual Task AfterExecuteAsync(ICommandInfo command) => Task.CompletedTask; + /// public virtual void OnModuleBuilding (InteractionService commandService, ModuleInfo module) { } From cb1aad308b8dff1fe63ad14adfc6cc2fa4bf9c72 Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Fri, 24 Dec 2021 10:37:47 -0400 Subject: [PATCH 194/212] Make module service scopes optional (#1997) Co-Authored-By: Cenk Ergen <57065323+Cenngo@users.noreply.github.com> --- .../Info/Commands/CommandInfo.cs | 18 ++++++++++++++---- .../InteractionService.cs | 3 ++- .../InteractionServiceConfig.cs | 5 +++++ 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/Discord.Net.Interactions/Info/Commands/CommandInfo.cs b/src/Discord.Net.Interactions/Info/Commands/CommandInfo.cs index 36cc6cbd8..a72a28bbd 100644 --- a/src/Discord.Net.Interactions/Info/Commands/CommandInfo.cs +++ b/src/Discord.Net.Interactions/Info/Commands/CommandInfo.cs @@ -131,14 +131,24 @@ namespace Discord.Interactions { case RunMode.Sync: { - using var scope = services?.CreateScope(); - return await ExecuteInternalAsync(context, args, scope?.ServiceProvider ?? EmptyServiceProvider.Instance).ConfigureAwait(false); + if (CommandService._autoServiceScopes) + { + using var scope = services?.CreateScope(); + return await ExecuteInternalAsync(context, args, scope?.ServiceProvider ?? EmptyServiceProvider.Instance).ConfigureAwait(false); + } + else + return await ExecuteInternalAsync(context, args, services).ConfigureAwait(false); } case RunMode.Async: _ = Task.Run(async () => { - using var scope = services?.CreateScope(); - await ExecuteInternalAsync(context, args, scope?.ServiceProvider ?? EmptyServiceProvider.Instance).ConfigureAwait(false); + if (CommandService._autoServiceScopes) + { + using var scope = services?.CreateScope(); + await ExecuteInternalAsync(context, args, scope?.ServiceProvider ?? EmptyServiceProvider.Instance).ConfigureAwait(false); + } + else + await ExecuteInternalAsync(context, args, services).ConfigureAwait(false); }); break; default: diff --git a/src/Discord.Net.Interactions/InteractionService.cs b/src/Discord.Net.Interactions/InteractionService.cs index d7192129d..a9d8ec16c 100644 --- a/src/Discord.Net.Interactions/InteractionService.cs +++ b/src/Discord.Net.Interactions/InteractionService.cs @@ -67,7 +67,7 @@ namespace Discord.Interactions internal readonly LogManager _logManager; internal readonly Func _getRestClient; - internal readonly bool _throwOnError, _useCompiledLambda, _enableAutocompleteHandlers; + internal readonly bool _throwOnError, _useCompiledLambda, _enableAutocompleteHandlers, _autoServiceScopes; internal readonly string _wildCardExp; internal readonly RunMode _runMode; internal readonly RestResponseCallback _restResponseCallback; @@ -156,6 +156,7 @@ namespace Discord.Interactions _wildCardExp = config.WildCardExpression; _useCompiledLambda = config.UseCompiledLambda; _enableAutocompleteHandlers = config.EnableAutocompleteHandlers; + _autoServiceScopes = config.AutoServiceScopes; _restResponseCallback = config.RestResponseCallback; _genericTypeConverters = new ConcurrentDictionary diff --git a/src/Discord.Net.Interactions/InteractionServiceConfig.cs b/src/Discord.Net.Interactions/InteractionServiceConfig.cs index e5ca5b9ec..a1583a124 100644 --- a/src/Discord.Net.Interactions/InteractionServiceConfig.cs +++ b/src/Discord.Net.Interactions/InteractionServiceConfig.cs @@ -47,6 +47,11 @@ namespace Discord.Interactions /// public bool EnableAutocompleteHandlers { get; set; } = true; + /// + /// Gets or sets whether new service scopes should be automatically created when resolving module depedencies on every command execution. + /// + public bool AutoServiceScopes { get; set; } = true; + /// /// Gets or sets delegate to be used by the when responding to a Rest based interaction. /// From ccc365edfd7db75ffc1e3a60ed5c1d74136ace76 Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Fri, 24 Dec 2021 10:37:57 -0400 Subject: [PATCH 195/212] Add nullable type converter to Interaction service (#1996) * Add nullable type converter to Interaction service * update NullableConverter CanConvertTo body --- .../InteractionService.cs | 10 +++++-- .../TypeConverters/NullableConverter.cs | 29 +++++++++++++++++++ 2 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 src/Discord.Net.Interactions/TypeConverters/NullableConverter.cs diff --git a/src/Discord.Net.Interactions/InteractionService.cs b/src/Discord.Net.Interactions/InteractionService.cs index a9d8ec16c..ac96f08ec 100644 --- a/src/Discord.Net.Interactions/InteractionService.cs +++ b/src/Discord.Net.Interactions/InteractionService.cs @@ -166,7 +166,8 @@ namespace Discord.Interactions [typeof(IUser)] = typeof(DefaultUserConverter<>), [typeof(IMentionable)] = typeof(DefaultMentionableConverter<>), [typeof(IConvertible)] = typeof(DefaultValueConverter<>), - [typeof(Enum)] = typeof(EnumConverter<>) + [typeof(Enum)] = typeof(EnumConverter<>), + [typeof(Nullable<>)] = typeof(NullableConverter<>), }; _typeConverters = new ConcurrentDictionary @@ -693,8 +694,8 @@ namespace Discord.Interactions { if (_typeConverters.TryGetValue(type, out var specific)) return specific; - - else if (_genericTypeConverters.Any(x => x.Key.IsAssignableFrom(type))) + else if (_genericTypeConverters.Any(x => x.Key.IsAssignableFrom(type) + || (x.Key.IsGenericTypeDefinition && type.IsGenericType && x.Key.GetGenericTypeDefinition() == type.GetGenericTypeDefinition()))) { services ??= EmptyServiceProvider.Instance; @@ -927,6 +928,9 @@ namespace Discord.Interactions if (_genericTypeConverters.TryGetValue(type, out var matching)) return matching; + if (type.IsGenericType && _genericTypeConverters.TryGetValue(type.GetGenericTypeDefinition(), out var genericDefinition)) + return genericDefinition; + var typeInterfaces = type.GetInterfaces(); var candidates = _genericTypeConverters.Where(x => x.Key.IsAssignableFrom(type)) .OrderByDescending(x => typeInterfaces.Count(y => y.IsAssignableFrom(x.Key))); diff --git a/src/Discord.Net.Interactions/TypeConverters/NullableConverter.cs b/src/Discord.Net.Interactions/TypeConverters/NullableConverter.cs new file mode 100644 index 000000000..874171175 --- /dev/null +++ b/src/Discord.Net.Interactions/TypeConverters/NullableConverter.cs @@ -0,0 +1,29 @@ +using System; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + internal class NullableConverter : TypeConverter + { + private readonly TypeConverter _typeConverter; + + public NullableConverter(InteractionService interactionService, IServiceProvider services) + { + var type = Nullable.GetUnderlyingType(typeof(T)); + + if (type is null) + throw new ArgumentException($"No type {nameof(TypeConverter)} is defined for this {type.FullName}", "type"); + + _typeConverter = interactionService.GetTypeConverter(type, services); + } + + public override ApplicationCommandOptionType GetDiscordType() + => _typeConverter.GetDiscordType(); + + public override Task ReadAsync(IInteractionContext context, IApplicationCommandInteractionDataOption option, IServiceProvider services) + => _typeConverter.ReadAsync(context, option, services); + + public override void Write(ApplicationCommandOptionProperties properties, IParameterInfo parameter) + => _typeConverter.Write(properties, parameter); + } +} From ad20e03a98d363a9cb5a7d2398ba268997658edf Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Fri, 24 Dec 2021 10:38:11 -0400 Subject: [PATCH 196/212] Fixed file being disposed on upload (#1995) --- .../Entities/Channels/ChannelHelper.cs | 6 +++--- .../Interactions/CommandBase/RestCommandBase.cs | 14 ++++++-------- .../MessageComponents/RestMessageComponent.cs | 14 ++++++-------- 3 files changed, 15 insertions(+), 19 deletions(-) diff --git a/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs b/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs index 45535746d..52929ae0a 100644 --- a/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs +++ b/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs @@ -344,11 +344,11 @@ namespace Discord.Rest } /// Message content is too long, length must be less or equal to . - public static Task SendFileAsync(IMessageChannel channel, BaseDiscordClient client, + public static async Task SendFileAsync(IMessageChannel channel, BaseDiscordClient client, Stream stream, string filename, string text, bool isTTS, Embed embed, AllowedMentions allowedMentions, MessageReference messageReference, MessageComponent components, ISticker[] stickers, RequestOptions options, bool isSpoiler, Embed[] embeds) { - using var file = new FileAttachment(stream, filename, isSpoiler: isSpoiler); - return SendFileAsync(channel, client, file, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, embeds); + using (var file = new FileAttachment(stream, filename, isSpoiler: isSpoiler)) + return await SendFileAsync(channel, client, file, text, isTTS, embed, allowedMentions, messageReference, components, stickers, options, embeds).ConfigureAwait(false); } /// Message content is too long, length must be less or equal to . diff --git a/src/Discord.Net.Rest/Entities/Interactions/CommandBase/RestCommandBase.cs b/src/Discord.Net.Rest/Entities/Interactions/CommandBase/RestCommandBase.cs index db4ff1e0f..251a7cc28 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/CommandBase/RestCommandBase.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/CommandBase/RestCommandBase.cs @@ -183,7 +183,7 @@ namespace Discord.Rest } /// - public override Task FollowupWithFileAsync( + public override async Task FollowupWithFileAsync( Stream fileStream, string fileName, string text = null, @@ -198,18 +198,15 @@ namespace Discord.Rest if (!IsValidToken) throw new InvalidOperationException("Interaction token is no longer valid"); - embeds ??= Array.Empty(); - if (embed != null) - embeds = new[] { embed }.Concat(embeds).ToArray(); - Preconditions.NotNull(fileStream, nameof(fileStream), "File Stream must have data"); Preconditions.NotNullOrEmpty(fileName, nameof(fileName), "File Name must not be empty or null"); - return FollowupWithFileAsync(new FileAttachment(fileStream, fileName), text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options); + using(var file = new FileAttachment(fileStream, fileName)) + return await FollowupWithFileAsync(file, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); } /// - public override Task FollowupWithFileAsync( + public override async Task FollowupWithFileAsync( string filePath, string fileName = null, string text = null, @@ -226,7 +223,8 @@ namespace Discord.Rest fileName ??= Path.GetFileName(filePath); Preconditions.NotNullOrEmpty(fileName, nameof(fileName), "File Name must not be empty or null"); - return FollowupWithFileAsync(new FileAttachment(File.OpenRead(filePath), fileName), text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options); + using (var file = new FileAttachment(File.OpenRead(filePath), fileName)) + return await FollowupWithFileAsync(file, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); } /// diff --git a/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs b/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs index 22d3f5b0b..8d234169c 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs @@ -275,7 +275,7 @@ namespace Discord.Rest } /// - public override Task FollowupWithFileAsync( + public override async Task FollowupWithFileAsync( Stream fileStream, string fileName, string text = null, @@ -290,18 +290,15 @@ namespace Discord.Rest if (!IsValidToken) throw new InvalidOperationException("Interaction token is no longer valid"); - embeds ??= Array.Empty(); - if (embed != null) - embeds = new[] { embed }.Concat(embeds).ToArray(); - Preconditions.NotNull(fileStream, nameof(fileStream), "File Stream must have data"); Preconditions.NotNullOrEmpty(fileName, nameof(fileName), "File Name must not be empty or null"); - return FollowupWithFileAsync(new FileAttachment(fileStream, fileName), text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options); + using(var file = new FileAttachment(fileStream, fileName)) + return await FollowupWithFileAsync(file, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); } /// - public override Task FollowupWithFileAsync( + public override async Task FollowupWithFileAsync( string filePath, string fileName = null, string text = null, @@ -318,7 +315,8 @@ namespace Discord.Rest fileName ??= Path.GetFileName(filePath); Preconditions.NotNullOrEmpty(fileName, nameof(fileName), "File Name must not be empty or null"); - return FollowupWithFileAsync(new FileAttachment(File.OpenRead(filePath), fileName), text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options); + using(var file = new FileAttachment(File.OpenRead(filePath), fileName)) + return await FollowupWithFileAsync(file, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options).ConfigureAwait(false); } /// From 1fbcbb8a672f2ab27dcb8ec092581217e110e9fd Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Fri, 24 Dec 2021 10:38:22 -0400 Subject: [PATCH 197/212] Make HasResponded public and add it to IDiscordInteraction (#1994) --- .../Interactions/IDiscordInteraction.cs | 9 ++++++ .../CommandBase/RestCommandBase.cs | 26 ++++------------- .../MessageComponents/RestMessageComponent.cs | 29 +++++-------------- .../Entities/Interactions/RestInteraction.cs | 5 ++-- .../Interactions/RestPingInteraction.cs | 2 -- .../RestAutocompleteInteraction.cs | 8 ++--- .../SocketMessageComponent.cs | 12 ++------ .../SocketBaseCommand/SocketCommandBase.cs | 6 +--- 8 files changed, 31 insertions(+), 66 deletions(-) diff --git a/src/Discord.Net.Core/Entities/Interactions/IDiscordInteraction.cs b/src/Discord.Net.Core/Entities/Interactions/IDiscordInteraction.cs index 9988e238c..064d3c4da 100644 --- a/src/Discord.Net.Core/Entities/Interactions/IDiscordInteraction.cs +++ b/src/Discord.Net.Core/Entities/Interactions/IDiscordInteraction.cs @@ -35,6 +35,15 @@ namespace Discord /// int Version { get; } + /// + /// Gets whether or not this interaction has been responded to. + /// + /// + /// This property is locally set -- if you're running multiple bots + /// off the same token then this property won't be in sync with them. + /// + bool HasResponded { get; } + /// /// Gets the user who invoked the interaction. /// diff --git a/src/Discord.Net.Rest/Entities/Interactions/CommandBase/RestCommandBase.cs b/src/Discord.Net.Rest/Entities/Interactions/CommandBase/RestCommandBase.cs index 251a7cc28..2069b9913 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/CommandBase/RestCommandBase.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/CommandBase/RestCommandBase.cs @@ -32,9 +32,6 @@ namespace Discord.Rest /// internal new RestCommandBaseData Data { get; private set; } - - internal override bool _hasResponded { get; set; } - private object _lock = new object(); internal RestCommandBase(DiscordRestClient client, Model model) @@ -126,23 +123,15 @@ namespace Discord.Rest lock (_lock) { - if (_hasResponded) + if (HasResponded) { throw new InvalidOperationException("Cannot respond twice to the same interaction"); } - } - try - { - return SerializePayload(response); - } - finally - { - lock (_lock) - { - _hasResponded = true; - } + HasResponded = true; } + + return SerializePayload(response); } /// @@ -317,15 +306,12 @@ namespace Discord.Rest lock (_lock) { - if (_hasResponded) + if (HasResponded) { throw new InvalidOperationException("Cannot respond or defer twice to the same interaction"); } - } - lock (_lock) - { - _hasResponded = true; + HasResponded = true; } return SerializePayload(response); diff --git a/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs b/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs index 8d234169c..d9643079e 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs @@ -26,7 +26,6 @@ namespace Discord.Rest public RestUserMessage Message { get; private set; } private object _lock = new object(); - internal override bool _hasResponded { get; set; } = false; internal RestMessageComponent(BaseDiscordClient client, Model model) : base(client, model.Id) @@ -128,15 +127,12 @@ namespace Discord.Rest lock (_lock) { - if (_hasResponded) + if (HasResponded) { throw new InvalidOperationException("Cannot respond, update, or defer twice to the same interaction"); } - } - lock (_lock) - { - _hasResponded = true; + HasResponded = true; } return SerializePayload(response); @@ -223,15 +219,12 @@ namespace Discord.Rest lock (_lock) { - if (_hasResponded) + if (HasResponded) { throw new InvalidOperationException("Cannot respond, update, or defer twice to the same interaction"); } - } - lock (_lock) - { - _hasResponded = true; + HasResponded = true; } return SerializePayload(response); @@ -408,15 +401,12 @@ namespace Discord.Rest lock (_lock) { - if (_hasResponded) + if (HasResponded) { throw new InvalidOperationException("Cannot respond or defer twice to the same interaction"); } - } - lock (_lock) - { - _hasResponded = true; + HasResponded = true; } return SerializePayload(response); @@ -445,15 +435,12 @@ namespace Discord.Rest lock (_lock) { - if (_hasResponded) + if (HasResponded) { throw new InvalidOperationException("Cannot respond or defer twice to the same interaction"); } - } - lock (_lock) - { - _hasResponded = true; + HasResponded = true; } return SerializePayload(response); diff --git a/src/Discord.Net.Rest/Entities/Interactions/RestInteraction.cs b/src/Discord.Net.Rest/Entities/Interactions/RestInteraction.cs index 0011b9b62..de1fdb7c4 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/RestInteraction.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/RestInteraction.cs @@ -35,8 +35,6 @@ namespace Discord.Rest /// public DateTimeOffset CreatedAt { get; private set; } - internal abstract bool _hasResponded { get; set; } - /// /// if the token is valid for replying to, otherwise . /// @@ -53,6 +51,9 @@ namespace Discord.Rest ///
public RestGuild Guild { get; private set; } + /// + public bool HasResponded { get; protected set; } + internal RestInteraction(BaseDiscordClient discord, ulong id) : base(discord, id) { diff --git a/src/Discord.Net.Rest/Entities/Interactions/RestPingInteraction.cs b/src/Discord.Net.Rest/Entities/Interactions/RestPingInteraction.cs index 5d27b491e..71d5a588c 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/RestPingInteraction.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/RestPingInteraction.cs @@ -13,8 +13,6 @@ namespace Discord.Rest ///
public class RestPingInteraction : RestInteraction, IDiscordInteraction { - internal override bool _hasResponded { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } - internal RestPingInteraction(BaseDiscordClient client, ulong id) : base(client, id) { diff --git a/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestAutocompleteInteraction.cs b/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestAutocompleteInteraction.cs index 12f07942f..44d0dc6ff 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestAutocompleteInteraction.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/SlashCommands/RestAutocompleteInteraction.cs @@ -19,7 +19,6 @@ namespace Discord.Rest ///
public new RestAutocompleteInteractionData Data { get; } - internal override bool _hasResponded { get; set; } private object _lock = new object(); internal RestAutocompleteInteraction(DiscordRestClient client, Model model) @@ -61,15 +60,12 @@ namespace Discord.Rest lock (_lock) { - if (_hasResponded) + if (HasResponded) { throw new InvalidOperationException("Cannot respond twice to the same interaction"); } - } - lock (_lock) - { - _hasResponded = true; + HasResponded = true; } var model = new API.InteractionResponse diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponent.cs b/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponent.cs index 4fbab38b0..862c792a8 100644 --- a/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponent.cs +++ b/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponent.cs @@ -411,11 +411,7 @@ namespace Discord.WebSocket } await Discord.Rest.ApiClient.CreateInteractionResponseAsync(response, Id, Token, options).ConfigureAwait(false); - - lock (_lock) - { - HasResponded = true; - } + HasResponded = true; } /// @@ -439,11 +435,7 @@ namespace Discord.WebSocket } await Discord.Rest.ApiClient.CreateInteractionResponseAsync(response, Id, Token, options).ConfigureAwait(false); - - lock (_lock) - { - HasResponded = true; - } + HasResponded = true; } //IComponentInteraction diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketCommandBase.cs b/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketCommandBase.cs index 439200d30..330d6d7a4 100644 --- a/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketCommandBase.cs +++ b/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketCommandBase.cs @@ -318,11 +318,7 @@ namespace Discord.WebSocket } await Discord.Rest.ApiClient.CreateInteractionResponseAsync(response, Id, Token, options).ConfigureAwait(false); - - lock (_lock) - { - HasResponded = true; - } + HasResponded = true; } } } From 82bb3e403f4c1a00389c60fc268ba015de400592 Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Fri, 24 Dec 2021 10:38:33 -0400 Subject: [PATCH 198/212] Fix CommandExecuted not invoked on failed parse (#1993) Co-Authored-By: Adam Gauthier <16079556+louistio@users.noreply.github.com> --- src/Discord.Net.Commands/CommandService.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Discord.Net.Commands/CommandService.cs b/src/Discord.Net.Commands/CommandService.cs index e2bfeeb44..fce67b9b2 100644 --- a/src/Discord.Net.Commands/CommandService.cs +++ b/src/Discord.Net.Commands/CommandService.cs @@ -541,6 +541,12 @@ namespace Discord.Commands if (matchResult.Pipeline is ParseResult parseResult) { + if (!parseResult.IsSuccess) + { + await _commandExecutedEvent.InvokeAsync(matchResult.Match.Value.Command, context, parseResult); + return parseResult; + } + var executeResult = await matchResult.Match.Value.ExecuteAsync(context, parseResult, services); if (!executeResult.IsSuccess && !(executeResult is RuntimeResult || executeResult is ExecuteResult)) // succesful results raise the event in CommandInfo#ExecuteInternalAsync (have to raise it there b/c deffered execution) From 144741e7c4b64766e142e4c2190244db397cf690 Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Fri, 24 Dec 2021 15:57:41 -0400 Subject: [PATCH 199/212] Guilduser timeouts and MODERATE_MEMBERS permission (#2003) Co-Authored-By: Armano den Boef <68127614+Rozen4334@users.noreply.github.com> --- .../Entities/Permissions/GuildPermission.cs | 7 +++-- .../Entities/Permissions/GuildPermissions.cs | 18 ++++++++---- .../Entities/Users/GuildUserProperties.cs | 11 ++++++- .../Entities/Users/IGuildUser.cs | 28 ++++++++++++++++++ .../API/Common/GuildMember.cs | 2 ++ .../API/Rest/ModifyGuildMemberParams.cs | 3 ++ .../Entities/Users/RestGuildUser.cs | 21 ++++++++++++++ .../Entities/Users/RestWebhookUser.cs | 8 +++++ .../Entities/Users/UserHelper.cs | 29 ++++++++++++++++++- .../Entities/Users/SocketGuildUser.cs | 21 +++++++++++++- .../Entities/Users/SocketThreadUser.cs | 8 +++++ .../Entities/Users/SocketWebhookUser.cs | 10 +++++++ .../GuildPermissionsTests.cs | 2 ++ 13 files changed, 157 insertions(+), 11 deletions(-) diff --git a/src/Discord.Net.Core/Entities/Permissions/GuildPermission.cs b/src/Discord.Net.Core/Entities/Permissions/GuildPermission.cs index 5a5827c1d..299ff3bd8 100644 --- a/src/Discord.Net.Core/Entities/Permissions/GuildPermission.cs +++ b/src/Discord.Net.Core/Entities/Permissions/GuildPermission.cs @@ -214,7 +214,10 @@ namespace Discord /// /// Allows for launching activities (applications with the EMBEDDED flag) in a voice channel. /// - StartEmbeddedActivities = 0x80_00_00_00_00 - + StartEmbeddedActivities = 0x80_00_00_00_00, + /// + /// Allows for timing out users. + /// + ModerateMembers = 0x01_00_00_00_00_00 } } diff --git a/src/Discord.Net.Core/Entities/Permissions/GuildPermissions.cs b/src/Discord.Net.Core/Entities/Permissions/GuildPermissions.cs index 8a4ad2189..649944ede 100644 --- a/src/Discord.Net.Core/Entities/Permissions/GuildPermissions.cs +++ b/src/Discord.Net.Core/Entities/Permissions/GuildPermissions.cs @@ -102,7 +102,8 @@ namespace Discord public bool SendMessagesInThreads => Permissions.GetValue(RawValue, GuildPermission.SendMessagesInThreads); /// If true, a user launch application activities in voice channels in this guild. public bool StartEmbeddedActivities => Permissions.GetValue(RawValue, GuildPermission.StartEmbeddedActivities); - + /// If true, a user can timeout other users in this guild. + public bool ModerateMembers => Permissions.GetValue(RawValue, GuildPermission.ModerateMembers); /// Creates a new with the provided packed value. public GuildPermissions(ulong rawValue) { RawValue = rawValue; } @@ -149,7 +150,8 @@ namespace Discord bool? createPrivateThreads = null, bool? useExternalStickers = null, bool? sendMessagesInThreads = null, - bool? startEmbeddedActivities = null) + bool? startEmbeddedActivities = null, + bool? moderateMembers = null) { ulong value = initialValue; @@ -193,6 +195,7 @@ namespace Discord Permissions.SetValue(ref value, useExternalStickers, GuildPermission.UseExternalStickers); Permissions.SetValue(ref value, sendMessagesInThreads, GuildPermission.SendMessagesInThreads); Permissions.SetValue(ref value, startEmbeddedActivities, GuildPermission.StartEmbeddedActivities); + Permissions.SetValue(ref value, moderateMembers, GuildPermission.ModerateMembers); RawValue = value; } @@ -238,7 +241,8 @@ namespace Discord bool createPrivateThreads = false, bool useExternalStickers = false, bool sendMessagesInThreads = false, - bool startEmbeddedActivities = false) + bool startEmbeddedActivities = false, + bool moderateMembers = false) : this(0, createInstantInvite: createInstantInvite, manageRoles: manageRoles, @@ -279,7 +283,8 @@ namespace Discord createPrivateThreads: createPrivateThreads, useExternalStickers: useExternalStickers, sendMessagesInThreads: sendMessagesInThreads, - startEmbeddedActivities: startEmbeddedActivities) + startEmbeddedActivities: startEmbeddedActivities, + moderateMembers: moderateMembers) { } /// Creates a new from this one, changing the provided non-null permissions. @@ -323,13 +328,14 @@ namespace Discord bool? createPrivateThreads = null, bool? useExternalStickers = null, bool? sendMessagesInThreads = null, - bool? startEmbeddedActivities = null) + bool? startEmbeddedActivities = null, + bool? moderateMembers = null) => new GuildPermissions(RawValue, createInstantInvite, kickMembers, banMembers, administrator, manageChannels, manageGuild, addReactions, viewAuditLog, viewGuildInsights, viewChannel, sendMessages, sendTTSMessages, manageMessages, embedLinks, attachFiles, readMessageHistory, mentionEveryone, useExternalEmojis, connect, speak, muteMembers, deafenMembers, moveMembers, useVoiceActivation, prioritySpeaker, stream, changeNickname, manageNicknames, manageRoles, manageWebhooks, manageEmojisAndStickers, useApplicationCommands, requestToSpeak, manageEvents, manageThreads, createPublicThreads, createPrivateThreads, useExternalStickers, sendMessagesInThreads, - startEmbeddedActivities); + startEmbeddedActivities, moderateMembers); /// /// Returns a value that indicates if a specific is enabled diff --git a/src/Discord.Net.Core/Entities/Users/GuildUserProperties.cs b/src/Discord.Net.Core/Entities/Users/GuildUserProperties.cs index 8f2d2111e..935b956c3 100644 --- a/src/Discord.Net.Core/Entities/Users/GuildUserProperties.cs +++ b/src/Discord.Net.Core/Entities/Users/GuildUserProperties.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; namespace Discord @@ -72,6 +73,14 @@ namespace Discord /// /// This user MUST already be in a for this to work. /// - public Optional ChannelId { get; set; } // TODO: v3 breaking change, change ChannelId to ulong? to allow for kicking users from voice + public Optional ChannelId { get; set; } + + /// + /// Sets a timestamp how long a user should be timed out for. + /// + /// + /// or a time in the past to clear a currently existing timeout. + /// + public Optional TimedOutUntil { get; set; } } } diff --git a/src/Discord.Net.Core/Entities/Users/IGuildUser.cs b/src/Discord.Net.Core/Entities/Users/IGuildUser.cs index 947ff8521..95896eef0 100644 --- a/src/Discord.Net.Core/Entities/Users/IGuildUser.cs +++ b/src/Discord.Net.Core/Entities/Users/IGuildUser.cs @@ -85,6 +85,17 @@ namespace Discord /// int Hierarchy { get; } + /// + /// Gets the date and time that indicates if and for how long a user has been timed out. + /// + /// + /// or a timestamp in the past if the user is not timed out. + /// + /// + /// A indicating how long the user will be timed out for. + /// + DateTimeOffset? TimedOutUntil { get; } + /// /// Gets the level permissions granted to this user to a given channel. /// @@ -211,5 +222,22 @@ namespace Discord /// A task that represents the asynchronous role removal operation. /// Task RemoveRolesAsync(IEnumerable roles, RequestOptions options = null); + /// + /// Sets a timeout based on provided to this user in the guild. + /// + /// The indicating how long a user should be timed out for. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous timeout creation operation. + /// + Task SetTimeOutAsync(TimeSpan span, RequestOptions options = null); + /// + /// Removes the current timeout from the user in this guild if one exists. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous timeout removal operation. + /// + Task RemoveTimeOutAsync(RequestOptions options = null); } } diff --git a/src/Discord.Net.Rest/API/Common/GuildMember.cs b/src/Discord.Net.Rest/API/Common/GuildMember.cs index 9b888e86a..cd3101224 100644 --- a/src/Discord.Net.Rest/API/Common/GuildMember.cs +++ b/src/Discord.Net.Rest/API/Common/GuildMember.cs @@ -23,5 +23,7 @@ namespace Discord.API public Optional Pending { get; set; } [JsonProperty("premium_since")] public Optional PremiumSince { get; set; } + [JsonProperty("communication_disabled_until")] + public Optional TimedOutUntil { get; set; } } } diff --git a/src/Discord.Net.Rest/API/Rest/ModifyGuildMemberParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyGuildMemberParams.cs index 37625de09..eb7c944d1 100644 --- a/src/Discord.Net.Rest/API/Rest/ModifyGuildMemberParams.cs +++ b/src/Discord.Net.Rest/API/Rest/ModifyGuildMemberParams.cs @@ -1,4 +1,5 @@ using Newtonsoft.Json; +using System; namespace Discord.API.Rest { @@ -15,5 +16,7 @@ namespace Discord.API.Rest public Optional RoleIds { get; set; } [JsonProperty("channel_id")] public Optional ChannelId { get; set; } + [JsonProperty("communication_disabled_until")] + public Optional TimedOutUntil { get; set; } } } diff --git a/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs b/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs index 2e184d32e..09e7ec03a 100644 --- a/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs +++ b/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs @@ -16,6 +16,7 @@ namespace Discord.Rest { #region RestGuildUser private long? _premiumSinceTicks; + private long? _timedOutTicks; private long? _joinedAtTicks; private ImmutableArray _roleIds; @@ -47,6 +48,18 @@ namespace Discord.Rest } } + /// + public DateTimeOffset? TimedOutUntil + { + get + { + if (!_timedOutTicks.HasValue || _timedOutTicks.Value < 0) + return null; + else + return DateTimeUtils.FromTicks(_timedOutTicks); + } + } + /// /// Resolving permissions requires the parent guild to be downloaded. public GuildPermissions GuildPermissions @@ -92,6 +105,8 @@ namespace Discord.Rest UpdateRoles(model.Roles.Value); if (model.PremiumSince.IsSpecified) _premiumSinceTicks = model.PremiumSince.Value?.UtcTicks; + if (model.TimedOutUntil.IsSpecified) + _timedOutTicks = model.TimedOutUntil.Value?.UtcTicks; if (model.Pending.IsSpecified) IsPending = model.Pending.Value; } @@ -152,6 +167,12 @@ namespace Discord.Rest /// public Task RemoveRolesAsync(IEnumerable roles, RequestOptions options = null) => RemoveRolesAsync(roles.Select(x => x.Id)); + /// + public Task SetTimeOutAsync(TimeSpan span, RequestOptions options = null) + => UserHelper.SetTimeoutAsync(this, Discord, span, options); + /// + public Task RemoveTimeOutAsync(RequestOptions options = null) + => UserHelper.RemoveTimeOutAsync(this, Discord, options); /// /// Resolving permissions requires the parent guild to be downloaded. diff --git a/src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs b/src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs index 2cd19da41..4ef84c508 100644 --- a/src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs +++ b/src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs @@ -62,6 +62,8 @@ namespace Discord.Rest /// int IGuildUser.Hierarchy => 0; /// + DateTimeOffset? IGuildUser.TimedOutUntil => null; + /// GuildPermissions IGuildUser.GuildPermissions => GuildPermissions.Webhook; /// @@ -97,6 +99,12 @@ namespace Discord.Rest /// Task IGuildUser.RemoveRolesAsync(IEnumerable roles, RequestOptions options) => throw new NotSupportedException("Roles are not supported on webhook users."); + /// + Task IGuildUser.SetTimeOutAsync(TimeSpan span, RequestOptions options) => + throw new NotSupportedException("Timeouts are not supported on webhook users."); + /// + Task IGuildUser.RemoveTimeOutAsync(RequestOptions options) => + throw new NotSupportedException("Timeouts are not supported on webhook users."); #endregion #region IVoiceState diff --git a/src/Discord.Net.Rest/Entities/Users/UserHelper.cs b/src/Discord.Net.Rest/Entities/Users/UserHelper.cs index 3a19fcfc1..393effb2e 100644 --- a/src/Discord.Net.Rest/Entities/Users/UserHelper.cs +++ b/src/Discord.Net.Rest/Entities/Users/UserHelper.cs @@ -31,11 +31,16 @@ namespace Discord.Rest { var args = new GuildUserProperties(); func(args); + + if (args.TimedOutUntil.IsSpecified && args.TimedOutUntil.Value.Value.Offset > (new TimeSpan(28, 0, 0, 0))) + throw new ArgumentOutOfRangeException(nameof(args.TimedOutUntil), "Offset cannot be more than 28 days from the current date."); + var apiArgs = new API.Rest.ModifyGuildMemberParams { Deaf = args.Deaf, Mute = args.Mute, - Nickname = args.Nickname + Nickname = args.Nickname, + TimedOutUntil = args.TimedOutUntil }; if (args.Channel.IsSpecified) @@ -84,5 +89,27 @@ namespace Discord.Rest foreach (var roleId in roleIds) await client.ApiClient.RemoveRoleAsync(user.Guild.Id, user.Id, roleId, options).ConfigureAwait(false); } + + public static async Task SetTimeoutAsync(IGuildUser user, BaseDiscordClient client, TimeSpan span, RequestOptions options) + { + if (span.TotalDays > 28) // As its double, an exact value of 28 can be accepted. + throw new ArgumentOutOfRangeException(nameof(span), "Offset cannot be more than 28 days from the current date."); + if (span.Ticks <= 0) + throw new ArgumentOutOfRangeException(nameof(span), "Offset cannot hold no value or have a negative value."); + var apiArgs = new API.Rest.ModifyGuildMemberParams() + { + TimedOutUntil = DateTimeOffset.UtcNow.Add(span) + }; + await client.ApiClient.ModifyGuildMemberAsync(user.Guild.Id, user.Id, apiArgs, options).ConfigureAwait(false); + } + + public static async Task RemoveTimeOutAsync(IGuildUser user, BaseDiscordClient client, RequestOptions options) + { + var apiArgs = new API.Rest.ModifyGuildMemberParams() + { + TimedOutUntil = null + }; + await client.ApiClient.ModifyGuildMemberAsync(user.Guild.Id, user.Id, apiArgs, options).ConfigureAwait(false); + } } } diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs index d64597501..1e5a98aeb 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs @@ -20,6 +20,7 @@ namespace Discord.WebSocket { #region SocketGuildUser private long? _premiumSinceTicks; + private long? _timedOutTicks; private long? _joinedAtTicks; private ImmutableArray _roleIds; @@ -89,6 +90,17 @@ namespace Discord.WebSocket public AudioInStream AudioStream => Guild.GetAudioStream(Id); /// public DateTimeOffset? PremiumSince => DateTimeUtils.FromTicks(_premiumSinceTicks); + /// + public DateTimeOffset? TimedOutUntil + { + get + { + if (!_timedOutTicks.HasValue || _timedOutTicks.Value < 0) + return null; + else + return DateTimeUtils.FromTicks(_timedOutTicks); + } + } /// /// Returns the position of the user within the role hierarchy. @@ -157,6 +169,8 @@ namespace Discord.WebSocket UpdateRoles(model.Roles.Value); if (model.PremiumSince.IsSpecified) _premiumSinceTicks = model.PremiumSince.Value?.UtcTicks; + if (model.TimedOutUntil.IsSpecified) + _timedOutTicks = model.TimedOutUntil.Value?.UtcTicks; if (model.Pending.IsSpecified) IsPending = model.Pending.Value; } @@ -221,7 +235,12 @@ namespace Discord.WebSocket /// public Task RemoveRolesAsync(IEnumerable roles, RequestOptions options = null) => RemoveRolesAsync(roles.Select(x => x.Id)); - + /// + public Task SetTimeOutAsync(TimeSpan span, RequestOptions options = null) + => UserHelper.SetTimeoutAsync(this, Discord, span, options); + /// + public Task RemoveTimeOutAsync(RequestOptions options = null) + => UserHelper.RemoveTimeOutAsync(this, Discord, options); /// public ChannelPermissions GetPermissions(IGuildChannel channel) => new ChannelPermissions(Permissions.ResolveChannel(Guild, this, channel, GuildPermissions.RawValue)); diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketThreadUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketThreadUser.cs index 407fcb8b5..461cdded0 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketThreadUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketThreadUser.cs @@ -39,6 +39,10 @@ namespace Discord.WebSocket public DateTimeOffset? PremiumSince => GuildUser.PremiumSince; + /// + public DateTimeOffset? TimedOutUntil + => GuildUser.TimedOutUntil; + /// public bool? IsPending => GuildUser.IsPending; @@ -171,7 +175,11 @@ namespace Discord.WebSocket /// public Task RemoveRolesAsync(IEnumerable roles, RequestOptions options = null) => GuildUser.RemoveRolesAsync(roles, options); + /// + public Task SetTimeOutAsync(TimeSpan span, RequestOptions options = null) => GuildUser.SetTimeOutAsync(span, options); + /// + public Task RemoveTimeOutAsync(RequestOptions options = null) => GuildUser.RemoveTimeOutAsync(options); /// GuildPermissions IGuildUser.GuildPermissions => GuildUser.GuildPermissions; diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs index bccfe1a29..cf820b80e 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs @@ -72,6 +72,8 @@ namespace Discord.WebSocket /// DateTimeOffset? IGuildUser.PremiumSince => null; /// + DateTimeOffset? IGuildUser.TimedOutUntil => null; + /// bool? IGuildUser.IsPending => null; /// int IGuildUser.Hierarchy => 0; @@ -129,6 +131,14 @@ namespace Discord.WebSocket /// Roles are not supported on webhook users. Task IGuildUser.RemoveRolesAsync(IEnumerable roles, RequestOptions options) => throw new NotSupportedException("Roles are not supported on webhook users."); + /// + /// Timeouts are not supported on webhook users. + Task IGuildUser.SetTimeOutAsync(TimeSpan span, RequestOptions options) => + throw new NotSupportedException("Timeouts are not supported on webhook users."); + /// + /// Timeouts are not supported on webhook users. + Task IGuildUser.RemoveTimeOutAsync(RequestOptions options) => + throw new NotSupportedException("Timeouts are not supported on webhook users."); #endregion #region IVoiceState diff --git a/test/Discord.Net.Tests.Unit/GuildPermissionsTests.cs b/test/Discord.Net.Tests.Unit/GuildPermissionsTests.cs index f0b0b2db7..ce5d0eb84 100644 --- a/test/Discord.Net.Tests.Unit/GuildPermissionsTests.cs +++ b/test/Discord.Net.Tests.Unit/GuildPermissionsTests.cs @@ -99,6 +99,7 @@ namespace Discord AssertFlag(() => new GuildPermissions(createPublicThreads: true), GuildPermission.CreatePublicThreads); AssertFlag(() => new GuildPermissions(createPrivateThreads: true), GuildPermission.CreatePrivateThreads); AssertFlag(() => new GuildPermissions(useExternalStickers: true), GuildPermission.UseExternalStickers); + AssertFlag(() => new GuildPermissions(moderateMembers: true), GuildPermission.ModerateMembers); } /// @@ -176,6 +177,7 @@ namespace Discord AssertUtil(GuildPermission.CreatePublicThreads, x => x.CreatePublicThreads, (p, enable) => p.Modify(createPublicThreads: enable)); AssertUtil(GuildPermission.CreatePrivateThreads, x => x.CreatePrivateThreads, (p, enable) => p.Modify(createPrivateThreads: enable)); AssertUtil(GuildPermission.UseExternalStickers, x => x.UseExternalStickers, (p, enable) => p.Modify(useExternalStickers: enable)); + AssertUtil(GuildPermission.ModerateMembers, x => x.ModerateMembers, (p, enable) => p.Modify(moderateMembers: enable)); } } } From 2a416a355cc911131e7e2567976e48a74453abbd Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Fri, 24 Dec 2021 15:57:51 -0400 Subject: [PATCH 200/212] Add RTCRegion to voice channels (#2002) * Add RTCRegion to voice channels * Update MockedGroupChannel.cs --- src/Discord.Net.Core/Entities/Channels/IAudioChannel.cs | 8 ++++++++ src/Discord.Net.Rest/API/Common/Channel.cs | 2 ++ .../Entities/Channels/RestGroupChannel.cs | 4 ++++ .../Entities/Channels/RestVoiceChannel.cs | 4 ++++ .../Entities/Channels/SocketGroupChannel.cs | 5 +++++ .../Entities/Channels/SocketVoiceChannel.cs | 3 +++ .../MockedEntities/MockedGroupChannel.cs | 2 ++ .../MockedEntities/MockedVoiceChannel.cs | 2 ++ 8 files changed, 30 insertions(+) diff --git a/src/Discord.Net.Core/Entities/Channels/IAudioChannel.cs b/src/Discord.Net.Core/Entities/Channels/IAudioChannel.cs index dfab58f07..a52d41b3f 100644 --- a/src/Discord.Net.Core/Entities/Channels/IAudioChannel.cs +++ b/src/Discord.Net.Core/Entities/Channels/IAudioChannel.cs @@ -9,6 +9,14 @@ namespace Discord /// public interface IAudioChannel : IChannel { + /// + /// Gets the RTC region for this audio channel. + /// + /// + /// This property can be . + /// + string RTCRegion { get; } + /// /// Connects to this audio channel. /// diff --git a/src/Discord.Net.Rest/API/Common/Channel.cs b/src/Discord.Net.Rest/API/Common/Channel.cs index afd219b63..d565b269a 100644 --- a/src/Discord.Net.Rest/API/Common/Channel.cs +++ b/src/Discord.Net.Rest/API/Common/Channel.cs @@ -40,6 +40,8 @@ namespace Discord.API public Optional Bitrate { get; set; } [JsonProperty("user_limit")] public Optional UserLimit { get; set; } + [JsonProperty("rtc_region")] + public Optional RTCRegion { get; set; } //PrivateChannel [JsonProperty("recipients")] diff --git a/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs index 1240f6d67..03858fbbe 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs @@ -22,6 +22,8 @@ namespace Discord.Rest /// public string Name { get; private set; } + /// + public string RTCRegion { get; private set; } public IReadOnlyCollection Users => _users.ToReadOnlyCollection(); public IReadOnlyCollection Recipients @@ -46,6 +48,8 @@ namespace Discord.Rest if (model.Recipients.IsSpecified) UpdateUsers(model.Recipients.Value); + + RTCRegion = model.RTCRegion.GetValueOrDefault(null); } internal void UpdateUsers(API.User[] models) { diff --git a/src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs index 98ff6ac6e..bcf03a5bc 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs @@ -21,6 +21,8 @@ namespace Discord.Rest public int? UserLimit { get; private set; } /// public ulong? CategoryId { get; private set; } + /// + public string RTCRegion { get; private set; } /// public string Mention => MentionUtils.MentionChannel(Id); @@ -46,6 +48,8 @@ namespace Discord.Rest if(model.UserLimit.IsSpecified) UserLimit = model.UserLimit.Value != 0 ? model.UserLimit.Value : (int?)null; + + RTCRegion = model.RTCRegion.GetValueOrDefault(null); } /// diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs index 0451f97ab..c8137784f 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs @@ -30,6 +30,9 @@ namespace Discord.WebSocket /// public string Name { get; private set; } + /// + public string RTCRegion { get; private set; } + /// public IReadOnlyCollection CachedMessages => _messages?.Messages ?? ImmutableArray.Create(); @@ -67,6 +70,8 @@ namespace Discord.WebSocket if (model.Recipients.IsSpecified) UpdateUsers(state, model.Recipients.Value); + + RTCRegion = model.RTCRegion.GetValueOrDefault(null); } private void UpdateUsers(ClientState state, UserModel[] models) { diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs index 498862697..00003d4ed 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketVoiceChannel.cs @@ -21,6 +21,8 @@ namespace Discord.WebSocket public int Bitrate { get; private set; } /// public int? UserLimit { get; private set; } + /// + public string RTCRegion { get; private set; } /// public ulong? CategoryId { get; private set; } @@ -66,6 +68,7 @@ namespace Discord.WebSocket CategoryId = model.CategoryId; Bitrate = model.Bitrate.Value; UserLimit = model.UserLimit.Value != 0 ? model.UserLimit.Value : (int?)null; + RTCRegion = model.RTCRegion.GetValueOrDefault(null); } /// diff --git a/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs b/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs index 3330b7bce..9c94efffa 100644 --- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs +++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs @@ -16,6 +16,8 @@ namespace Discord public ulong Id => throw new NotImplementedException(); + public string RTCRegion => throw new NotImplementedException(); + public Task ConnectAsync(bool selfDeaf = false, bool selfMute = false, bool external = false) { throw new NotImplementedException(); diff --git a/test/Discord.Net.Tests.Unit/MockedEntities/MockedVoiceChannel.cs b/test/Discord.Net.Tests.Unit/MockedEntities/MockedVoiceChannel.cs index e053636a9..533b1b1b5 100644 --- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedVoiceChannel.cs +++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedVoiceChannel.cs @@ -29,6 +29,8 @@ namespace Discord public DateTimeOffset CreatedAt => throw new NotImplementedException(); public ulong Id => throw new NotImplementedException(); + public string RTCRegion => throw new NotImplementedException(); + public Task AddPermissionOverwriteAsync(IRole role, OverwritePermissions permissions, RequestOptions options = null) { throw new NotImplementedException(); From 7745558bdcb81f810dddb47b4f836dbd68ab555e Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Fri, 24 Dec 2021 15:58:01 -0400 Subject: [PATCH 201/212] Add MaxUploadLimit to guilds (#2001) --- src/Discord.Net.Core/Entities/Guilds/IGuild.cs | 5 +++++ .../Entities/Channels/ChannelHelper.cs | 10 ++++++++++ src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs | 9 +++++++++ src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs | 3 +++ .../Entities/Guilds/SocketGuild.cs | 3 +++ 5 files changed, 30 insertions(+) diff --git a/src/Discord.Net.Core/Entities/Guilds/IGuild.cs b/src/Discord.Net.Core/Entities/Guilds/IGuild.cs index c2db435cf..ae1b2d67d 100644 --- a/src/Discord.Net.Core/Entities/Guilds/IGuild.cs +++ b/src/Discord.Net.Core/Entities/Guilds/IGuild.cs @@ -354,6 +354,11 @@ namespace Discord /// bool IsBoostProgressBarEnabled { get; } + /// + /// Gets the upload limit in bytes for this guild. This number is dependent on the guild's boost status. + /// + ulong MaxUploadLimit { get; } + /// /// Modifies this guild. /// diff --git a/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs b/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs index 52929ae0a..d2cc95d27 100644 --- a/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs +++ b/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs @@ -372,6 +372,16 @@ namespace Discord.Rest Preconditions.NotNullOrEmpty(attachment.FileName, nameof(attachment.FileName), "File Name must not be empty or null"); } + if (channel is ITextChannel guildTextChannel) + { + var contentSize = (ulong)attachments.Sum(x => x.Stream.Length); + + if (contentSize > guildTextChannel.Guild.MaxUploadLimit) + { + throw new ArgumentOutOfRangeException(nameof(attachments), $"Collective file size exceeds the max file size of {guildTextChannel.Guild.MaxUploadLimit} bytes in that guild!"); + } + } + // check that user flag and user Id list are exclusive, same with role flag and role Id list if (allowedMentions != null && allowedMentions.AllowedTypes.HasValue) { diff --git a/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs b/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs index 2cdbbb7b5..ff16c31f1 100644 --- a/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs +++ b/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs @@ -124,6 +124,15 @@ namespace Discord.Rest { await client.ApiClient.DeleteGuildAsync(guild.Id, options).ConfigureAwait(false); } + public static ulong GetUploadLimit(IGuild guild) + { + return guild.PremiumTier switch + { + PremiumTier.Tier2 => 50ul * 1000000, + PremiumTier.Tier3 => 100ul * 1000000, + _ => 8ul * 1000000 + }; + } #endregion #region Bans diff --git a/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs b/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs index daecb1d8c..d90372636 100644 --- a/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs +++ b/src/Discord.Net.Rest/Entities/Guilds/RestGuild.cs @@ -99,6 +99,9 @@ namespace Discord.Rest }; } } + /// + public ulong MaxUploadLimit + => GuildHelper.GetUploadLimit(this); /// public NsfwLevel NsfwLevel { get; private set; } /// diff --git a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs index 084a42c55..48b4bb5bc 100644 --- a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs +++ b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs @@ -201,6 +201,9 @@ namespace Discord.WebSocket }; } } + /// + public ulong MaxUploadLimit + => GuildHelper.GetUploadLimit(this); /// /// Gets the widget channel (i.e. the channel set in the guild's widget settings) in this guild. /// From 0a3898ca72782aeb230b3feaf93abb49a9d2acc6 Mon Sep 17 00:00:00 2001 From: quin lynch Date: Fri, 24 Dec 2021 16:12:36 -0400 Subject: [PATCH 202/212] meta: bump version --- Discord.Net.targets | 2 +- docs/docfx.json | 2 +- src/Discord.Net/Discord.Net.nuspec | 62 +++++++++++++++--------------- 3 files changed, 33 insertions(+), 33 deletions(-) diff --git a/Discord.Net.targets b/Discord.Net.targets index d987ed68e..f69a858d3 100644 --- a/Discord.Net.targets +++ b/Discord.Net.targets @@ -1,6 +1,6 @@ - 3.0.0 + 3.1.0 latest Discord.Net Contributors discord;discordapp diff --git a/docs/docfx.json b/docs/docfx.json index f691d3a8f..3fac4ff0b 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -60,7 +60,7 @@ "overwrite": "_overwrites/**/**.md", "globalMetadata": { "_appTitle": "Discord.Net Documentation", - "_appFooter": "Discord.Net (c) 2015-2021 3.0.0", + "_appFooter": "Discord.Net (c) 2015-2021 3.1.0", "_enableSearch": true, "_appLogoPath": "marketing/logo/SVG/Logomark Purple.svg", "_appFaviconPath": "favicon.ico" diff --git a/src/Discord.Net/Discord.Net.nuspec b/src/Discord.Net/Discord.Net.nuspec index 30671fb08..b208ca6be 100644 --- a/src/Discord.Net/Discord.Net.nuspec +++ b/src/Discord.Net/Discord.Net.nuspec @@ -2,7 +2,7 @@ Discord.Net - 3.0.0$suffix$ + 3.1.0$suffix$ Discord.Net Discord.Net Contributors foxbot @@ -14,44 +14,44 @@ https://github.com/RogueException/Discord.Net/raw/dev/docs/marketing/logo/PackageLogo.png - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + From b8504bf00886bfbcdf8cdce63967e1fc2ad6d81c Mon Sep 17 00:00:00 2001 From: quin lynch Date: Fri, 24 Dec 2021 16:36:21 -0400 Subject: [PATCH 203/212] meta: changelog --- CHANGELOG.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 51374d1a8..7ca46be59 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,32 @@ # Changelog +## [3.1.0] - 2021-12-24 + +### Added + +- #1996 Add nullable type converter to Interaction service (ccc365e) +- #1998 Add before and after execute async (9f124b2) +- #2001 Add MaxUploadLimit to guilds (7745558) +- #2002 Add RTCRegion to voice channels (2a416a3) +- #2003 Add Guilduser timeouts and MODERATE_MEMBERS permission (144741e) + +### Fixed + +- #1976 fix guild scheduled events update (8daa0b6) +- #1977 fix thread member nre (5d43fe6) +- #1980 fix requireRole attribute of interaction service (a2f57f8) +- #1990 Fix images path for select menu section (a8b5506) +- #1992 fix images; fix closing brace on cs ref (fb52525) +- #1993 Fix CommandExecuted not invoked on failed parse (82bb3e4) +- #1995 Fixed file being disposed on upload (ad20e03) +- #1999 Fix SocketGuildUser being changed to SocketGlobalUser in UserLeft (5446bfe) +- Fix voice codes namespace (768a0a9) + +### Misc + +- #1994 Make HasResponded public and add it to IDiscordInteraction (1fbcbb8) +- #1997 Make module service scopes optional (cb1aad3) + ## [3.0.0] - 2021-12-13 ### Added From 9a6d07cb64ef7e1efe291c816ae9909cddf40919 Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Mon, 3 Jan 2022 12:31:38 -0400 Subject: [PATCH 204/212] Create FUNDING.yml --- .github/FUNDING.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 000000000..84ee6e5a1 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +open_collective: discordnet From 093e548cd4586bd2331c20396cf69f4d5285c324 Mon Sep 17 00:00:00 2001 From: Tom Upson <30987275+tomupson@users.noreply.github.com> Date: Wed, 5 Jan 2022 22:23:35 +0000 Subject: [PATCH 205/212] Match argument defaults with IDiscordInteraction on SocketInteraction (#2018) --- .../Entities/Interaction/SocketInteraction.cs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/SocketInteraction.cs b/src/Discord.Net.WebSocket/Entities/Interaction/SocketInteraction.cs index b11a78464..8250b6825 100644 --- a/src/Discord.Net.WebSocket/Entities/Interaction/SocketInteraction.cs +++ b/src/Discord.Net.WebSocket/Entities/Interaction/SocketInteraction.cs @@ -156,7 +156,8 @@ namespace Discord.WebSocket /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - public async Task RespondWithFileAsync(Stream fileStream, string fileName, string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) + public async Task RespondWithFileAsync(Stream fileStream, string fileName, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) { using (var file = new FileAttachment(fileStream, fileName)) { @@ -181,7 +182,8 @@ namespace Discord.WebSocket /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - public async Task RespondWithFileAsync(string filePath, string fileName, string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) + public async Task RespondWithFileAsync(string filePath, string fileName = null, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) { using (var file = new FileAttachment(filePath, fileName)) { @@ -205,7 +207,8 @@ namespace Discord.WebSocket /// A task that represents an asynchronous send operation for delivering the message. The task result /// contains the sent message. /// - public Task RespondWithFileAsync(FileAttachment attachment, string text, Embed[] embeds, bool isTTS, bool ephemeral, AllowedMentions allowedMentions, MessageComponent components, Embed embed, RequestOptions options) + public Task RespondWithFileAsync(FileAttachment attachment, string text = null, Embed[] embeds = null, bool isTTS = false, bool ephemeral = false, + AllowedMentions allowedMentions = null, MessageComponent components = null, Embed embed = null, RequestOptions options = null) => RespondWithFilesAsync(new FileAttachment[] { attachment }, text, embeds, isTTS, ephemeral, allowedMentions, components, embed, options); /// From 68e3bed4ff3edc044c4f5200ed9664ae7b061896 Mon Sep 17 00:00:00 2001 From: Cenk Ergen <57065323+Cenngo@users.noreply.github.com> Date: Thu, 6 Jan 2022 01:24:18 +0300 Subject: [PATCH 206/212] Add user-built AddCommand overloads to ModuleBuilder (#2015) * add user-built AddCommand overloads to ModuleBuilder * fix inline docs --- .../Builders/ModuleBuilder.cs | 82 +++++++++++++++++-- 1 file changed, 75 insertions(+), 7 deletions(-) diff --git a/src/Discord.Net.Interactions/Builders/ModuleBuilder.cs b/src/Discord.Net.Interactions/Builders/ModuleBuilder.cs index 73d5ed62f..c396ab5f4 100644 --- a/src/Discord.Net.Interactions/Builders/ModuleBuilder.cs +++ b/src/Discord.Net.Interactions/Builders/ModuleBuilder.cs @@ -159,7 +159,7 @@ namespace Discord.Interactions.Builders } /// - /// Adds attributes to + /// Adds attributes to . /// /// New attributes to be added to . /// @@ -172,7 +172,7 @@ namespace Discord.Interactions.Builders } /// - /// Adds preconditions to + /// Adds preconditions to . /// /// New preconditions to be added to . /// @@ -185,7 +185,7 @@ namespace Discord.Interactions.Builders } /// - /// Adds slash command builder to + /// Adds slash command builder to . /// /// factory. /// @@ -200,7 +200,24 @@ namespace Discord.Interactions.Builders } /// - /// Adds context command builder to + /// Adds slash command builder to . + /// + /// Name of the command. + /// Command callback to be executed. + /// factory. + /// + /// The builder instance. + /// + public ModuleBuilder AddSlashCommand(string name, ExecuteCallback callback, Action configure) + { + var command = new SlashCommandBuilder(this, name, callback); + configure(command); + _slashCommands.Add(command); + return this; + } + + /// + /// Adds context command builder to . /// /// factory. /// @@ -215,7 +232,24 @@ namespace Discord.Interactions.Builders } /// - /// Adds component command builder to + /// Adds context command builder to . + /// + /// Name of the command. + /// Command callback to be executed. + /// factory. + /// + /// The builder instance. + /// + public ModuleBuilder AddContextCommand(string name, ExecuteCallback callback, Action configure) + { + var command = new ContextCommandBuilder(this, name, callback); + configure(command); + _contextCommands.Add(command); + return this; + } + + /// + /// Adds component command builder to . /// /// factory. /// @@ -230,7 +264,24 @@ namespace Discord.Interactions.Builders } /// - /// Adds autocomplete command builder to + /// Adds component command builder to . + /// + /// Name of the command. + /// Command callback to be executed. + /// factory. + /// + /// The builder instance. + /// + public ModuleBuilder AddComponentCommand(string name, ExecuteCallback callback, Action configure) + { + var command = new ComponentCommandBuilder(this, name, callback); + configure(command); + _componentCommands.Add(command); + return this; + } + + /// + /// Adds autocomplete command builder to . /// /// factory. /// @@ -245,7 +296,24 @@ namespace Discord.Interactions.Builders } /// - /// Adds sub-module builder to + /// Adds autocomplete command builder to . + /// + /// Name of the command. + /// Command callback to be executed. + /// factory. + /// + /// The builder instance. + /// + public ModuleBuilder AddSlashCommand(string name, ExecuteCallback callback, Action configure) + { + var command = new AutocompleteCommandBuilder(this, name, callback); + configure(command); + _autocompleteCommands.Add(command); + return this; + } + + /// + /// Adds sub-module builder to . /// /// factory. /// From 944a0def9775bb9cb2412579c0cea53407b6c5a1 Mon Sep 17 00:00:00 2001 From: Cenk Ergen <57065323+Cenngo@users.noreply.github.com> Date: Thu, 6 Jan 2022 01:24:33 +0300 Subject: [PATCH 207/212] Fix InteractionContext.Guild (#2014) * fix InteractionContext.Guild * remove user parameter from InteractionContext ctor --- src/Discord.Net.Interactions/InteractionContext.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Discord.Net.Interactions/InteractionContext.cs b/src/Discord.Net.Interactions/InteractionContext.cs index 53cda5871..99a8d8736 100644 --- a/src/Discord.Net.Interactions/InteractionContext.cs +++ b/src/Discord.Net.Interactions/InteractionContext.cs @@ -21,13 +21,13 @@ namespace Discord.Interactions /// The underlying interaction. /// who executed the command. /// the command originated from. - public InteractionContext(IDiscordClient client, IDiscordInteraction interaction, IUser user, IMessageChannel channel = null) + public InteractionContext(IDiscordClient client, IDiscordInteraction interaction, IMessageChannel channel = null) { Client = client; Interaction = interaction; Channel = channel; - Guild = (interaction as IGuildUser)?.Guild; - User = user; + Guild = (interaction.User as IGuildUser)?.Guild; + User = interaction.User; Interaction = interaction; } } From e3eb0a95222520e4acba4a61ca3ead05e921fdb9 Mon Sep 17 00:00:00 2001 From: Brendan McShane Date: Fri, 7 Jan 2022 21:40:08 -0500 Subject: [PATCH 208/212] Fix ModifyAsync (#2023) * Fix issue with Argument cannot be blank when modifying flags * Make uniform with existing code --- src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs b/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs index 309500c96..cd2a34f11 100644 --- a/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs +++ b/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs @@ -42,8 +42,10 @@ namespace Discord.Rest bool hasEmbeds = embed.IsSpecified && embed.Value != null || embeds.IsSpecified && embeds.Value?.Length > 0; bool hasComponents = args.Components.IsSpecified && args.Components.Value != null; bool hasAttachments = args.Attachments.IsSpecified; + bool hasFlags = args.Flags.IsSpecified; - if (!hasComponents && !hasText && !hasEmbeds && !hasAttachments) + // No content needed if modifying flags + if ((!hasComponents && !hasText && !hasEmbeds && !hasAttachments) && !hasFlags) Preconditions.NotNullOrEmpty(args.Content.IsSpecified ? args.Content.Value : string.Empty, nameof(args.Content)); if (args.AllowedMentions.IsSpecified) From 9594ccc6d988ff19c44bbf73dbcb6694b1db11a4 Mon Sep 17 00:00:00 2001 From: Cenk Ergen <57065323+Cenngo@users.noreply.github.com> Date: Sat, 8 Jan 2022 11:13:27 +0300 Subject: [PATCH 209/212] Remove .ToLower from group name registration (#2024) --- .../Utilities/ApplicationCommandRestUtil.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Discord.Net.Interactions/Utilities/ApplicationCommandRestUtil.cs b/src/Discord.Net.Interactions/Utilities/ApplicationCommandRestUtil.cs index ad1f7d646..48b6e44e7 100644 --- a/src/Discord.Net.Interactions/Utilities/ApplicationCommandRestUtil.cs +++ b/src/Discord.Net.Interactions/Utilities/ApplicationCommandRestUtil.cs @@ -110,7 +110,7 @@ namespace Discord.Interactions var props = new SlashCommandBuilder { - Name = moduleInfo.SlashGroupName.ToLower(), + Name = moduleInfo.SlashGroupName, Description = moduleInfo.Description, IsDefaultPermission = moduleInfo.DefaultPermission, }.Build(); @@ -148,7 +148,7 @@ namespace Discord.Interactions else return new List() { new ApplicationCommandOptionProperties { - Name = moduleInfo.SlashGroupName.ToLower(), + Name = moduleInfo.SlashGroupName, Description = moduleInfo.Description, Type = ApplicationCommandOptionType.SubCommandGroup, Options = options From 4b7cda01a6a9ecb551e8734d9501a296e1d11570 Mon Sep 17 00:00:00 2001 From: Cenk Ergen <57065323+Cenngo@users.noreply.github.com> Date: Sat, 8 Jan 2022 11:34:02 +0300 Subject: [PATCH 210/212] Fix IsTopLevelCommand (#2025) * init * fix IsTopLevel for ModuleInfo and CommandInfo --- .../Info/Commands/CommandInfo.cs | 17 ++++++++++++++++- src/Discord.Net.Interactions/Info/ModuleInfo.cs | 4 ++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/Discord.Net.Interactions/Info/Commands/CommandInfo.cs b/src/Discord.Net.Interactions/Info/Commands/CommandInfo.cs index a72a28bbd..cfbcbacf2 100644 --- a/src/Discord.Net.Interactions/Info/Commands/CommandInfo.cs +++ b/src/Discord.Net.Interactions/Info/Commands/CommandInfo.cs @@ -50,7 +50,7 @@ namespace Discord.Interactions public abstract bool SupportsWildCards { get; } /// - public bool IsTopLevelCommand => IgnoreGroupNames || !Module.IsTopLevelGroup; + public bool IsTopLevelCommand { get; } /// public RunMode RunMode { get; } @@ -72,6 +72,7 @@ namespace Discord.Interactions Name = builder.Name; MethodName = builder.MethodName; IgnoreGroupNames = builder.IgnoreGroupNames; + IsTopLevelCommand = IgnoreGroupNames || CheckTopLevel(Module); RunMode = builder.RunMode != RunMode.Default ? builder.RunMode : commandService._runMode; Attributes = builder.Attributes.ToImmutableArray(); Preconditions = builder.Preconditions.ToImmutableArray(); @@ -230,6 +231,20 @@ namespace Discord.Interactions } } + private static bool CheckTopLevel(ModuleInfo parent) + { + var currentParent = parent; + + while (currentParent != null) + { + if (currentParent.IsSlashGroup) + return false; + + currentParent = currentParent.Parent; + } + return true; + } + // ICommandInfo /// diff --git a/src/Discord.Net.Interactions/Info/ModuleInfo.cs b/src/Discord.Net.Interactions/Info/ModuleInfo.cs index 8bf367df8..4388ea722 100644 --- a/src/Discord.Net.Interactions/Info/ModuleInfo.cs +++ b/src/Discord.Net.Interactions/Info/ModuleInfo.cs @@ -115,7 +115,7 @@ namespace Discord.Interactions SubModules = BuildSubModules(builder, commandService, services).ToImmutableArray(); Attributes = BuildAttributes(builder).ToImmutableArray(); Preconditions = BuildPreconditions(builder).ToImmutableArray(); - IsTopLevelGroup = CheckTopLevel(parent); + IsTopLevelGroup = IsSlashGroup && CheckTopLevel(parent); DontAutoRegister = builder.DontAutoRegister; GroupedPreconditions = Preconditions.ToLookup(x => x.Group, x => x, StringComparer.Ordinal); @@ -206,7 +206,7 @@ namespace Discord.Interactions while (currentParent != null) { - if (currentParent.IsTopLevelGroup) + if (currentParent.IsSlashGroup) return false; currentParent = currentParent.Parent; From 99d8ca4b6b29f4e57d1e45b79d52644362065ed8 Mon Sep 17 00:00:00 2001 From: quin lynch Date: Mon, 10 Jan 2022 20:11:43 -0400 Subject: [PATCH 211/212] Update bulk-overwrite-of-global-slash-commands.md Co-Authored-By: Cookiezzz <2996654+Cookiezzz@users.noreply.github.com> --- .../bulk-overwrite-of-global-slash-commands.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/guides/int_basics/application-commands/slash-commands/bulk-overwrite-of-global-slash-commands.md b/docs/guides/int_basics/application-commands/slash-commands/bulk-overwrite-of-global-slash-commands.md index 095eda14f..6a64b9c68 100644 --- a/docs/guides/int_basics/application-commands/slash-commands/bulk-overwrite-of-global-slash-commands.md +++ b/docs/guides/int_basics/application-commands/slash-commands/bulk-overwrite-of-global-slash-commands.md @@ -6,10 +6,10 @@ title: Slash Command Bulk Overwrites If you have too many global commands then you might want to consider using the bulk overwrite function. ```cs -public async Task Client_Ready() +public async Task Client_Ready() { List applicationCommandProperties = new(); - try + try { // Simple help slash command. SlashCommandBuilder globalCommandHelp = new SlashCommandBuilder(); @@ -27,11 +27,12 @@ public async Task Client_Ready() SlashCommandBuilder globalCommandAddFamily = new SlashCommandBuilder(); globalCommandAddFamily.WithName("add-family"); globalCommandAddFamily.WithDescription("Add a family"); + globalCommandAddFamily.AddOptions(slashCommandOptionBuilder); applicationCommandProperties.Add(globalCommandAddFamily.Build()); await _client.BulkOverwriteGlobalApplicationCommandsAsync(applicationCommandProperties.ToArray()); - } - catch (ApplicationCommandException exception) + } + catch (ApplicationCommandException exception) { var json = JsonConvert.SerializeObject(exception.Error, Formatting.Indented); Console.WriteLine(json); From 4ed4718e18d3f94fdd4ebc9fb4ae937e3f6c4099 Mon Sep 17 00:00:00 2001 From: Cenk Ergen <57065323+Cenngo@users.noreply.github.com> Date: Tue, 11 Jan 2022 09:52:46 +0300 Subject: [PATCH 212/212] Add Construct Method to InteractionModuleBase and Fix NRE on User-Built Module Creation (#2016) --- .../Builders/ModuleBuilder.cs | 27 +++++++++++-------- .../IInteractionModuleBase.cs | 9 ++++++- .../InteractionModuleBase.cs | 3 +++ 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/src/Discord.Net.Interactions/Builders/ModuleBuilder.cs b/src/Discord.Net.Interactions/Builders/ModuleBuilder.cs index c396ab5f4..036964778 100644 --- a/src/Discord.Net.Interactions/Builders/ModuleBuilder.cs +++ b/src/Discord.Net.Interactions/Builders/ModuleBuilder.cs @@ -329,19 +329,24 @@ namespace Discord.Interactions.Builders internal ModuleInfo Build (InteractionService interactionService, IServiceProvider services, ModuleInfo parent = null) { - var moduleInfo = new ModuleInfo(this, interactionService, services, parent); - - IInteractionModuleBase instance = ReflectionUtils.CreateObject(TypeInfo, interactionService, services); - try - { - instance.OnModuleBuilding(interactionService, moduleInfo); - } - finally + if (TypeInfo is not null && ModuleClassBuilder.IsValidModuleDefinition(TypeInfo)) { - ( instance as IDisposable )?.Dispose(); + var instance = ReflectionUtils.CreateObject(TypeInfo, interactionService, services); + + try + { + instance.Construct(this, interactionService); + var moduleInfo = new ModuleInfo(this, interactionService, services, parent); + instance.OnModuleBuilding(interactionService, moduleInfo); + return moduleInfo; + } + finally + { + (instance as IDisposable)?.Dispose(); + } } - - return moduleInfo; + else + return new(this, interactionService, services, parent); } } } diff --git a/src/Discord.Net.Interactions/IInteractionModuleBase.cs b/src/Discord.Net.Interactions/IInteractionModuleBase.cs index bf5530fe0..cc944a558 100644 --- a/src/Discord.Net.Interactions/IInteractionModuleBase.cs +++ b/src/Discord.Net.Interactions/IInteractionModuleBase.cs @@ -38,10 +38,17 @@ namespace Discord.Interactions void AfterExecute (ICommandInfo command); /// - /// Method body to be executed before the derived module is built. + /// Method body to be executed when is called. /// /// Command Service instance that built this module. /// Info class of this module. void OnModuleBuilding (InteractionService commandService, ModuleInfo module); + + /// + /// Method body to be executed after the automated module creation is completed and before is called. + /// + /// Builder class of this module. + /// Command Service instance that is building this method. + void Construct(Builders.ModuleBuilder builder, InteractionService commandService); } } diff --git a/src/Discord.Net.Interactions/InteractionModuleBase.cs b/src/Discord.Net.Interactions/InteractionModuleBase.cs index 739f1da3a..95e64916f 100644 --- a/src/Discord.Net.Interactions/InteractionModuleBase.cs +++ b/src/Discord.Net.Interactions/InteractionModuleBase.cs @@ -29,6 +29,9 @@ namespace Discord.Interactions /// public virtual void OnModuleBuilding (InteractionService commandService, ModuleInfo module) { } + /// + public virtual void Construct (Builders.ModuleBuilder builder, InteractionService commandService) { } + internal void SetContext (IInteractionContext context) { var newValue = context as T;

5t^*UsOY;W2JxXLxq!z*A-G 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 literal 0 HcmV?d00001 diff --git a/docs/_template/last-modified/plugins/lib/osx/libgit2-6777db8.dylib b/docs/_template/last-modified/plugins/lib/osx/libgit2-6777db8.dylib new file mode 100644 index 0000000000000000000000000000000000000000..cb1e7eb8c0e791800c3ea9f7175d1099130974f6 GIT binary patch literal 2102976 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 S0g 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

5$e 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