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.
///