From 8c05d499a1be031cea2947a2a2198ffa72532ffe Mon Sep 17 00:00:00 2001 From: Misha133 Date: Wed, 21 Sep 2022 20:44:33 +0300 Subject: [PATCH] Add `Flags` property to channels --- .../Entities/Channels/IGuildChannel.cs | 11 +++++++++++ src/Discord.Net.Rest/API/Common/Channel.cs | 3 +++ .../Entities/Channels/RestGuildChannel.cs | 5 +++++ .../Entities/Channels/SocketGuildChannel.cs | 5 +++++ .../MockedEntities/MockedCategoryChannel.cs | 2 ++ .../MockedEntities/MockedTextChannel.cs | 2 ++ .../MockedEntities/MockedVoiceChannel.cs | 2 ++ 7 files changed, 30 insertions(+) diff --git a/src/Discord.Net.Core/Entities/Channels/IGuildChannel.cs b/src/Discord.Net.Core/Entities/Channels/IGuildChannel.cs index 992bd71fc..12874f2c2 100644 --- a/src/Discord.Net.Core/Entities/Channels/IGuildChannel.cs +++ b/src/Discord.Net.Core/Entities/Channels/IGuildChannel.cs @@ -21,6 +21,17 @@ namespace Discord /// int Position { get; } + /// + /// Gets the flags related to this channel. + /// + /// + /// This value is determined by bitwise OR-ing values together. + /// + /// + /// A channel's flags, if any is associated. + /// + ChannelFlags Flags { get; } + /// /// Gets the guild associated with this channel. /// diff --git a/src/Discord.Net.Rest/API/Common/Channel.cs b/src/Discord.Net.Rest/API/Common/Channel.cs index 00a325b1b..2cd3b13a9 100644 --- a/src/Discord.Net.Rest/API/Common/Channel.cs +++ b/src/Discord.Net.Rest/API/Common/Channel.cs @@ -79,5 +79,8 @@ namespace Discord.API [JsonProperty("default_thread_rate_limit_per_user")] public Optional ThreadRateLimitPerUser { get; set; } + + [JsonProperty("flags")] + public Optional Flags { get; set; } } } diff --git a/src/Discord.Net.Rest/Entities/Channels/RestGuildChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestGuildChannel.cs index 4f9af0335..a6c9c3674 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestGuildChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestGuildChannel.cs @@ -26,6 +26,9 @@ namespace Discord.Rest /// public ulong GuildId => Guild.Id; + /// + public ChannelFlags Flags { get; private set; } + internal RestGuildChannel(BaseDiscordClient discord, IGuild guild, ulong id) : base(discord, id) { @@ -62,6 +65,8 @@ namespace Discord.Rest newOverwrites.Add(overwrites[i].ToEntity()); _overwrites = newOverwrites.ToImmutable(); } + + Flags = model.Flags.GetValueOrDefault(ChannelFlags.None); } /// diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketGuildChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketGuildChannel.cs index 808982785..0811f2238 100644 --- a/src/Discord.Net.WebSocket/Entities/Channels/SocketGuildChannel.cs +++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketGuildChannel.cs @@ -30,6 +30,9 @@ namespace Discord.WebSocket /// public int Position { get; private set; } + /// + public ChannelFlags Flags { get; private set; } + /// public virtual IReadOnlyCollection PermissionOverwrites => _overwrites; /// @@ -74,6 +77,8 @@ namespace Discord.WebSocket for (int i = 0; i < overwrites.Length; i++) newOverwrites.Add(overwrites[i].ToEntity()); _overwrites = newOverwrites.ToImmutable(); + + Flags = model.Flags.GetValueOrDefault(ChannelFlags.None); } /// diff --git a/test/Discord.Net.Tests.Unit/MockedEntities/MockedCategoryChannel.cs b/test/Discord.Net.Tests.Unit/MockedEntities/MockedCategoryChannel.cs index 712570467..08d3c740a 100644 --- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedCategoryChannel.cs +++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedCategoryChannel.cs @@ -20,6 +20,8 @@ namespace Discord public DateTimeOffset CreatedAt => throw new NotImplementedException(); public ulong Id => throw new NotImplementedException(); + + public ChannelFlags Flags => throw new NotImplementedException(); public Task AddPermissionOverwriteAsync(IRole role, OverwritePermissions permissions, RequestOptions options = null) { diff --git a/test/Discord.Net.Tests.Unit/MockedEntities/MockedTextChannel.cs b/test/Discord.Net.Tests.Unit/MockedEntities/MockedTextChannel.cs index ab1d3e534..8913c127d 100644 --- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedTextChannel.cs +++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedTextChannel.cs @@ -34,6 +34,8 @@ namespace Discord public ulong Id => throw new NotImplementedException(); + public ChannelFlags Flags => throw new NotImplementedException(); + public Task AddPermissionOverwriteAsync(IRole role, OverwritePermissions permissions, 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 2ffc75a24..3f167ba5f 100644 --- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedVoiceChannel.cs +++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedVoiceChannel.cs @@ -36,6 +36,8 @@ namespace Discord public string Mention => throw new NotImplementedException(); + public ChannelFlags Flags => throw new NotImplementedException(); + public Task AddPermissionOverwriteAsync(IRole role, OverwritePermissions permissions, RequestOptions options = null) => throw new NotImplementedException(); public Task AddPermissionOverwriteAsync(IUser user, OverwritePermissions permissions, RequestOptions options = null) => throw new NotImplementedException(); public Task ConnectAsync(bool selfDeaf = false, bool selfMute = false, bool external = false) => throw new NotImplementedException();