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;