From 82b772ac032dcc869fed1c1b263bce2f0001781a Mon Sep 17 00:00:00 2001 From: Misha133 <61027276+Misha-133@users.noreply.github.com> Date: Wed, 14 Dec 2022 09:57:06 +0300 Subject: [PATCH] [Feature] Add missing property & new stuff (#2521) * add active developer badge support * add `OwnerId` to threads * add default forum layout support * oops, forgot to update modifyasync * add missing application flags * Add `50155` error code --- src/Discord.Net.Core/DiscordErrorCode.cs | 1 + .../Entities/ApplicationFlags.cs | 41 ++++++++++++------- .../Channels/ForumChannelProperties.cs | 5 +++ .../Entities/Channels/ForumLayout.cs | 22 ++++++++++ .../Entities/Channels/IForumChannel.cs | 7 +++- .../Entities/Channels/IThreadChannel.cs | 5 +++ .../Entities/Users/UserProperties.cs | 5 +++ src/Discord.Net.Rest/API/Common/Channel.cs | 3 ++ .../API/Rest/ModifyForumChannelParams.cs | 3 ++ .../Entities/Channels/ForumHelper.cs | 3 +- .../Entities/Channels/RestForumChannel.cs | 4 ++ .../Entities/Channels/RestThreadChannel.cs | 5 +++ .../Entities/Channels/SocketForumChannel.cs | 5 +++ .../Entities/Channels/SocketThreadChannel.cs | 3 ++ 14 files changed, 95 insertions(+), 17 deletions(-) create mode 100644 src/Discord.Net.Core/Entities/Channels/ForumLayout.cs diff --git a/src/Discord.Net.Core/DiscordErrorCode.cs b/src/Discord.Net.Core/DiscordErrorCode.cs index ccd547e92..8301842d4 100644 --- a/src/Discord.Net.Core/DiscordErrorCode.cs +++ b/src/Discord.Net.Core/DiscordErrorCode.cs @@ -177,6 +177,7 @@ namespace Discord OwnershipCannotBeTransferredToABotUser = 50132, FailedToResizeAssetBelowTheMaximumSize = 50138, UploadedFileNotFound = 50146, + FeatureInProcessOfRollingOut = 50155, MissingPermissionToSendThisSticker = 50600, #endregion diff --git a/src/Discord.Net.Core/Entities/ApplicationFlags.cs b/src/Discord.Net.Core/Entities/ApplicationFlags.cs index 1ede4257d..0410f63b5 100644 --- a/src/Discord.Net.Core/Entities/ApplicationFlags.cs +++ b/src/Discord.Net.Core/Entities/ApplicationFlags.cs @@ -4,20 +4,31 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Discord +namespace Discord; + +/// +/// Represents public flags for an application. +/// +public enum ApplicationFlags { - /// - /// 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 - } + GatewayPresence = 1 << 12, + + GatewayPresenceLimited = 1 << 13, + + GatewayGuildMembers = 1 << 14, + + GatewayGuildMembersLimited = 1 << 15, + + VerificationPendingGuildLimit = 1 << 16, + + Embedded = 1 << 17, + + GatewayMessageContent = 1 << 18, + + GatewayMessageContentLimited = 1 << 19, + + ApplicationCommandBadge = 1 << 23, + + ActiveApplication = 1 << 24 } + diff --git a/src/Discord.Net.Core/Entities/Channels/ForumChannelProperties.cs b/src/Discord.Net.Core/Entities/Channels/ForumChannelProperties.cs index e1a123b37..26b985b81 100644 --- a/src/Discord.Net.Core/Entities/Channels/ForumChannelProperties.cs +++ b/src/Discord.Net.Core/Entities/Channels/ForumChannelProperties.cs @@ -57,4 +57,9 @@ public class ForumChannelProperties : TextChannelProperties /// Gets or sets the rule used to order posts in forum channels. /// public Optional DefaultSortOrder { get; set; } + + /// + /// Gets or sets the rule used to display posts in a forum channel. + /// + public Optional DefaultLayout { get; set; } } diff --git a/src/Discord.Net.Core/Entities/Channels/ForumLayout.cs b/src/Discord.Net.Core/Entities/Channels/ForumLayout.cs new file mode 100644 index 000000000..d20a10596 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Channels/ForumLayout.cs @@ -0,0 +1,22 @@ +namespace Discord; + +/// +/// Represents the layout type used to display posts in a forum channel. +/// +public enum ForumLayout +{ + /// + /// A preferred forum layout hasn't been set by a server admin + /// + Default = 0, + + /// + /// List View: display forum posts in a text-focused list + /// + List = 1, + + /// + /// Gallery View: display forum posts in a media-focused gallery + /// + Grid = 2 +} diff --git a/src/Discord.Net.Core/Entities/Channels/IForumChannel.cs b/src/Discord.Net.Core/Entities/Channels/IForumChannel.cs index 55521bade..09fb0fb7e 100644 --- a/src/Discord.Net.Core/Entities/Channels/IForumChannel.cs +++ b/src/Discord.Net.Core/Entities/Channels/IForumChannel.cs @@ -63,13 +63,18 @@ namespace Discord IEmote DefaultReactionEmoji { get; } /// - /// Gets or sets the rule used to order posts in forum channels. + /// Gets the rule used to order posts in forum channels. /// /// /// Defaults to null, which indicates a preferred sort order hasn't been set /// ForumSortOrder? DefaultSortOrder { get; } + /// + /// Gets the rule used to display posts in a forum channel. + /// + ForumLayout DefaultLayout { get; } + /// /// Modifies this forum channel. /// diff --git a/src/Discord.Net.Core/Entities/Channels/IThreadChannel.cs b/src/Discord.Net.Core/Entities/Channels/IThreadChannel.cs index 52df07dcc..be4967265 100644 --- a/src/Discord.Net.Core/Entities/Channels/IThreadChannel.cs +++ b/src/Discord.Net.Core/Entities/Channels/IThreadChannel.cs @@ -74,6 +74,11 @@ namespace Discord /// new DateTimeOffset CreatedAt { get; } + /// + /// Gets the id of the creator of the thread. + /// + ulong OwnerId { get; } + /// /// Joins the current thread. /// diff --git a/src/Discord.Net.Core/Entities/Users/UserProperties.cs b/src/Discord.Net.Core/Entities/Users/UserProperties.cs index 4cf4162a9..aeba6a234 100644 --- a/src/Discord.Net.Core/Entities/Users/UserProperties.cs +++ b/src/Discord.Net.Core/Entities/Users/UserProperties.cs @@ -69,5 +69,10 @@ namespace Discord /// Flag given to bots that use only outgoing webhooks, exclusively. /// BotHTTPInteractions = 1 << 19, + + /// + /// Flag given to users that are active developers. + /// + ActiveDeveloper = 1 << 22 } } diff --git a/src/Discord.Net.Rest/API/Common/Channel.cs b/src/Discord.Net.Rest/API/Common/Channel.cs index f9184cd1f..b8bfe1ea5 100644 --- a/src/Discord.Net.Rest/API/Common/Channel.cs +++ b/src/Discord.Net.Rest/API/Common/Channel.cs @@ -89,5 +89,8 @@ namespace Discord.API [JsonProperty("default_reaction_emoji")] public Optional DefaultReactionEmoji { get; set; } + [JsonProperty("default_forum_layout")] + public Optional DefaultForumLayout { get; set; } + } } diff --git a/src/Discord.Net.Rest/API/Rest/ModifyForumChannelParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyForumChannelParams.cs index d8733a2bd..ba5da8a3b 100644 --- a/src/Discord.Net.Rest/API/Rest/ModifyForumChannelParams.cs +++ b/src/Discord.Net.Rest/API/Rest/ModifyForumChannelParams.cs @@ -20,4 +20,7 @@ internal class ModifyForumChannelParams : ModifyTextChannelParams [JsonProperty("default_sort_order")] public Optional DefaultSortOrder { get; set; } + + [JsonProperty("default_forum_layout")] + public Optional DefaultLayout { get; set; } } diff --git a/src/Discord.Net.Rest/Entities/Channels/ForumHelper.cs b/src/Discord.Net.Rest/Entities/Channels/ForumHelper.cs index 3d087e77d..4ecafd87e 100644 --- a/src/Discord.Net.Rest/Entities/Channels/ForumHelper.cs +++ b/src/Discord.Net.Rest/Entities/Channels/ForumHelper.cs @@ -56,7 +56,8 @@ internal static class ForumHelper emoji.Name : Optional.Unspecified } : Optional.Unspecified, - DefaultSortOrder = args.DefaultSortOrder + DefaultSortOrder = args.DefaultSortOrder, + DefaultLayout = args.DefaultLayout, }; return await client.ApiClient.ModifyGuildChannelAsync(channel.Id, apiArgs, options).ConfigureAwait(false); } diff --git a/src/Discord.Net.Rest/Entities/Channels/RestForumChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestForumChannel.cs index a2eef3d2d..7d837cde5 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestForumChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestForumChannel.cs @@ -41,6 +41,9 @@ namespace Discord.Rest /// public ForumSortOrder? DefaultSortOrder { get; private set; } + /// + public ForumLayout DefaultLayout { get; private set; } + /// public string Mention => MentionUtils.MentionChannel(Id); @@ -87,6 +90,7 @@ namespace Discord.Rest } CategoryId = model.CategoryId.GetValueOrDefault(); + DefaultLayout= model.DefaultForumLayout.GetValueOrDefault(); } /// diff --git a/src/Discord.Net.Rest/Entities/Channels/RestThreadChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestThreadChannel.cs index 86e65d7b6..1555b2093 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestThreadChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestThreadChannel.cs @@ -40,6 +40,9 @@ namespace Discord.Rest /// public IReadOnlyCollection AppliedTags { get; private set; } + /// + public ulong OwnerId { get; private set; } + /// public override DateTimeOffset CreatedAt { get; } @@ -76,6 +79,8 @@ namespace Discord.Rest IsLocked = model.ThreadMetadata.Value.Locked.GetValueOrDefault(false); } + OwnerId = model.OwnerId.GetValueOrDefault(0); + MemberCount = model.MemberCount.GetValueOrDefault(0); MessageCount = model.MessageCount.GetValueOrDefault(0); Type = (ThreadType)model.Type; diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketForumChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketForumChannel.cs index 8929a46f9..ed36f5d4b 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketForumChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketForumChannel.cs @@ -45,6 +45,9 @@ namespace Discord.WebSocket /// public ForumSortOrder? DefaultSortOrder { get; private set; } + /// + public ForumLayout DefaultLayout { get; private set; } + /// /// Gets the parent (category) of this channel in the guild's channel list. /// @@ -93,6 +96,8 @@ namespace Discord.WebSocket } CategoryId = model.CategoryId.GetValueOrDefault(); + + DefaultLayout = model.DefaultForumLayout.GetValueOrDefault(); } /// diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketThreadChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketThreadChannel.cs index 423e5504f..5c739c857 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketThreadChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketThreadChannel.cs @@ -95,6 +95,9 @@ namespace Discord.WebSocket /// public override DateTimeOffset CreatedAt { get; } + /// + ulong IThreadChannel.OwnerId => _ownerId; + /// /// Gets a collection of cached users within this thread. ///