From 13ea5664e1c1dd9a28e5599bc2ec9e4fd029e3b0 Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Mon, 15 Apr 2024 15:24:00 -0300 Subject: [PATCH] Fix: RestDMChannel relies on recipient (#2910) * don't assume we have a DM user * also check nullable for Update/GetUser * Update src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs Co-authored-by: Mihail Gribkov <61027276+Misha-133@users.noreply.github.com> --------- Co-authored-by: Mihail Gribkov <61027276+Misha-133@users.noreply.github.com> --- .../Entities/Channels/RestDMChannel.cs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs index 71a6b100..8d9af24c 100644 --- a/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs +++ b/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs @@ -29,23 +29,26 @@ namespace Discord.Rest /// /// Gets a collection that is the current logged-in user and the recipient. /// - public IReadOnlyCollection Users => ImmutableArray.Create(CurrentUser, Recipient); + public IReadOnlyCollection Users => Recipient is null + ? ImmutableArray.Empty + : ImmutableArray.Create(CurrentUser, Recipient); - internal RestDMChannel(BaseDiscordClient discord, ulong id, ulong recipientId) + internal RestDMChannel(BaseDiscordClient discord, ulong id, ulong? recipientId) : base(discord, id) { - Recipient = new RestUser(Discord, recipientId); + Recipient = recipientId.HasValue ? new RestUser(Discord, recipientId.Value) : null; CurrentUser = new RestUser(Discord, discord.CurrentUser.Id); } internal new static RestDMChannel Create(BaseDiscordClient discord, Model model) { - var entity = new RestDMChannel(discord, model.Id, model.Recipients.Value[0].Id); + var entity = new RestDMChannel(discord, model.Id, model.Recipients.GetValueOrDefault(null)?[0].Id); entity.Update(model); return entity; } internal override void Update(Model model) { - Recipient.Update(model.Recipients.Value[0]); + if(model.Recipients.IsSpecified) + Recipient?.Update(model.Recipients.Value[0]); } /// @@ -68,7 +71,7 @@ namespace Discord.Rest /// public RestUser GetUser(ulong id) { - if (id == Recipient.Id) + if (id == Recipient?.Id) return Recipient; else if (id == Discord.CurrentUser.Id) return CurrentUser;