From 397a88771974ae1bc58f142109bed582c3aad186 Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Mon, 15 Apr 2024 15:22:06 -0300 Subject: [PATCH] Fix: Don't rely on Guild for id (#2911) --- .../Entities/Channels/RestCategoryChannel.cs | 6 +++--- .../Entities/Channels/RestForumChannel.cs | 6 +++--- .../Entities/Channels/RestGuildChannel.cs | 8 +++++--- .../Entities/Channels/RestMediaChannel.cs | 6 +++--- src/Discord.Net.Rest/Entities/Channels/RestNewsChannel.cs | 6 +++--- .../Entities/Channels/RestStageChannel.cs | 8 ++++---- src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs | 6 +++--- .../Entities/Channels/RestThreadChannel.cs | 6 +++--- .../Entities/Channels/RestVoiceChannel.cs | 6 +++--- 9 files changed, 30 insertions(+), 28 deletions(-) diff --git a/src/Discord.Net.Rest/Entities/Channels/RestCategoryChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestCategoryChannel.cs index 9f944501..8077eb97 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestCategoryChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestCategoryChannel.cs @@ -13,13 +13,13 @@ namespace Discord.Rest public class RestCategoryChannel : RestGuildChannel, ICategoryChannel { #region RestCategoryChannel - internal RestCategoryChannel(BaseDiscordClient discord, IGuild guild, ulong id) - : base(discord, guild, id) + internal RestCategoryChannel(BaseDiscordClient discord, IGuild guild, ulong id, ulong guildId) + : base(discord, guild, id, guildId) { } internal new static RestCategoryChannel Create(BaseDiscordClient discord, IGuild guild, Model model) { - var entity = new RestCategoryChannel(discord, guild, model.Id); + var entity = new RestCategoryChannel(discord, guild, model.Id, guild?.Id ?? model.GuildId.Value); entity.Update(model); return entity; } diff --git a/src/Discord.Net.Rest/Entities/Channels/RestForumChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestForumChannel.cs index 0b2c2562..1ea32c07 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestForumChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestForumChannel.cs @@ -47,15 +47,15 @@ namespace Discord.Rest /// public string Mention => MentionUtils.MentionChannel(Id); - internal RestForumChannel(BaseDiscordClient client, IGuild guild, ulong id) - : base(client, guild, id) + internal RestForumChannel(BaseDiscordClient client, IGuild guild, ulong id, ulong guildId) + : base(client, guild, id, guildId) { } internal new static RestForumChannel Create(BaseDiscordClient discord, IGuild guild, Model model) { - var entity = new RestForumChannel(discord, guild, model.Id); + var entity = new RestForumChannel(discord, guild, model.Id, guild?.Id ?? model.GuildId.Value); entity.Update(model); return entity; } diff --git a/src/Discord.Net.Rest/Entities/Channels/RestGuildChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestGuildChannel.cs index 611298a3..250cc32b 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestGuildChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestGuildChannel.cs @@ -23,16 +23,18 @@ namespace Discord.Rest public string Name { get; private set; } /// public int Position { get; private set; } + /// - public ulong GuildId => Guild.Id; + public ulong GuildId { get; } /// public ChannelFlags Flags { get; private set; } - internal RestGuildChannel(BaseDiscordClient discord, IGuild guild, ulong id) + internal RestGuildChannel(BaseDiscordClient discord, IGuild guild, ulong id, ulong guildId) : base(discord, id) { Guild = guild; + GuildId = guildId; } internal static RestGuildChannel Create(BaseDiscordClient discord, IGuild guild, Model model) { @@ -46,7 +48,7 @@ namespace Discord.Rest ChannelType.Forum => RestForumChannel.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), + _ => new RestGuildChannel(discord, guild, model.Id, guild?.Id ?? model.GuildId.Value), }; } internal override void Update(Model model) diff --git a/src/Discord.Net.Rest/Entities/Channels/RestMediaChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestMediaChannel.cs index 61263294..4e078784 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestMediaChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestMediaChannel.cs @@ -4,15 +4,15 @@ namespace Discord.Rest; public class RestMediaChannel : RestForumChannel, IMediaChannel { - internal RestMediaChannel(BaseDiscordClient client, IGuild guild, ulong id) - : base(client, guild, id) + internal RestMediaChannel(BaseDiscordClient client, IGuild guild, ulong id, ulong guildId) + : base(client, guild, id, guildId) { } internal new static RestMediaChannel Create(BaseDiscordClient discord, IGuild guild, Model model) { - var entity = new RestMediaChannel(discord, guild, model.Id); + var entity = new RestMediaChannel(discord, guild, model.Id, guild?.Id ?? model.GuildId.Value); entity.Update(model); return entity; } diff --git a/src/Discord.Net.Rest/Entities/Channels/RestNewsChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestNewsChannel.cs index 3c73a4c1..5d33ca5d 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestNewsChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestNewsChannel.cs @@ -15,13 +15,13 @@ namespace Discord.Rest [DebuggerDisplay(@"{DebuggerDisplay,nq}")] public class RestNewsChannel : RestTextChannel, INewsChannel { - internal RestNewsChannel(BaseDiscordClient discord, IGuild guild, ulong id) - : base(discord, guild, id) + internal RestNewsChannel(BaseDiscordClient discord, IGuild guild, ulong id, ulong guildId) + : base(discord, guild, id, guildId) { } internal new static RestNewsChannel Create(BaseDiscordClient discord, IGuild guild, Model model) { - var entity = new RestNewsChannel(discord, guild, model.Id); + var entity = new RestNewsChannel(discord, guild, model.Id, guild?.Id ?? model.GuildId.Value); entity.Update(model); return entity; } diff --git a/src/Discord.Net.Rest/Entities/Channels/RestStageChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestStageChannel.cs index fe46cd80..235c0d1c 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestStageChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestStageChannel.cs @@ -15,7 +15,7 @@ namespace Discord.Rest /// /// This field is always true for stage channels. /// - /// + /// [Obsolete("This property is no longer used because Discord enabled text-in-voice and text-in-stage for all channels.")] public override bool IsTextInVoice => true; @@ -28,12 +28,12 @@ namespace Discord.Rest /// public bool IsLive { get; private set; } - internal RestStageChannel(BaseDiscordClient discord, IGuild guild, ulong id) - : base(discord, guild, id) { } + internal RestStageChannel(BaseDiscordClient discord, IGuild guild, ulong id, ulong guildId) + : base(discord, guild, id, guildId) { } internal new static RestStageChannel Create(BaseDiscordClient discord, IGuild guild, Model model) { - var entity = new RestStageChannel(discord, guild, model.Id); + var entity = new RestStageChannel(discord, guild, model.Id, guild?.Id ?? model.GuildId.Value); entity.Update(model); return entity; } diff --git a/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs index bca7cbea..6a39423c 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs @@ -30,13 +30,13 @@ namespace Discord.Rest /// public int DefaultSlowModeInterval { get; private set; } - internal RestTextChannel(BaseDiscordClient discord, IGuild guild, ulong id) - : base(discord, guild, id) + internal RestTextChannel(BaseDiscordClient discord, IGuild guild, ulong id, ulong guildId) + : base(discord, guild, id, guildId) { } internal new static RestTextChannel Create(BaseDiscordClient discord, IGuild guild, Model model) { - var entity = new RestTextChannel(discord, guild, model.Id); + var entity = new RestTextChannel(discord, guild, model.Id, guild?.Id ?? model.GuildId.Value); entity.Update(model); return entity; } diff --git a/src/Discord.Net.Rest/Entities/Channels/RestThreadChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestThreadChannel.cs index 7889c8b4..053b5fdf 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestThreadChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestThreadChannel.cs @@ -51,15 +51,15 @@ namespace Discord.Rest /// public ulong ParentChannelId { get; private set; } - internal RestThreadChannel(BaseDiscordClient discord, IGuild guild, ulong id, DateTimeOffset? createdAt) - : base(discord, guild, id) + internal RestThreadChannel(BaseDiscordClient discord, IGuild guild, ulong id, ulong guildId, DateTimeOffset? createdAt) + : base(discord, guild, id, guildId) { CreatedAt = createdAt ?? new DateTimeOffset(2022, 1, 9, 0, 0, 0, TimeSpan.Zero); } internal new static RestThreadChannel Create(BaseDiscordClient discord, IGuild guild, Model model) { - var entity = new RestThreadChannel(discord, guild, model.Id, model.ThreadMetadata.GetValueOrDefault()?.CreatedAt.GetValueOrDefault()); + var entity = new RestThreadChannel(discord, guild, model.Id, guild?.Id ?? model.GuildId.Value, model.ThreadMetadata.GetValueOrDefault()?.CreatedAt.GetValueOrDefault()); entity.Update(model); return entity; } diff --git a/src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs index 98ce3d5c..73dacf5b 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestVoiceChannel.cs @@ -31,13 +31,13 @@ namespace Discord.Rest /// public VideoQualityMode VideoQualityMode { get; private set; } - internal RestVoiceChannel(BaseDiscordClient discord, IGuild guild, ulong id) - : base(discord, guild, id) + internal RestVoiceChannel(BaseDiscordClient discord, IGuild guild, ulong id, ulong guildId) + : base(discord, guild, id, guildId) { } internal new static RestVoiceChannel Create(BaseDiscordClient discord, IGuild guild, Model model) { - var entity = new RestVoiceChannel(discord, guild, model.Id); + var entity = new RestVoiceChannel(discord, guild, model.Id, guild?.Id ?? model.GuildId.Value); entity.Update(model); return entity; }