[Fix] NRE on thread member creation without a guild user in the payload (#3030)

lets hope for the best
This commit is contained in:
Mihail Gribkov
2024-11-23 20:31:10 +03:00
committed by GitHub
parent a1e50c4bbf
commit 96a832788c
2 changed files with 5 additions and 5 deletions

View File

@@ -178,14 +178,14 @@ namespace Discord.WebSocket
member.Update(model); member.Update(model);
else else
{ {
member = SocketThreadUser.Create(Guild, this, model, guildMember); member = SocketThreadUser.Create(Guild, this, model, guildMember ?? Guild.GetUser(model.UserId.GetValueOrDefault(0)));
member.GlobalUser.AddRef(); member.GlobalUser?.AddRef();
_members[member.Id] = member; _members[member.Id] = member;
} }
return member; return member;
} }
/// <inheritdoc /> /// <inheritdoc cref="SocketGuildChannel.GetUser"/>
public new SocketThreadUser GetUser(ulong id) public new SocketThreadUser GetUser(ulong id)
{ {
var user = Users.FirstOrDefault(x => x.Id == id); var user = Users.FirstOrDefault(x => x.Id == id);

View File

@@ -251,9 +251,9 @@ namespace Discord.WebSocket
public override string GetDisplayAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128) public override string GetDisplayAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128)
=> GuildUser.GetGuildAvatarUrl() ?? base.GetDisplayAvatarUrl(format, size); => GuildUser.GetGuildAvatarUrl() ?? base.GetDisplayAvatarUrl(format, size);
internal override SocketGlobalUser GlobalUser { get => GuildUser.GlobalUser; set => GuildUser.GlobalUser = value; } internal override SocketGlobalUser GlobalUser { get => GuildUser?.GlobalUser; set => GuildUser.GlobalUser = value; }
internal override SocketPresence Presence { get => GuildUser.Presence; set => GuildUser.Presence = value; } internal override SocketPresence Presence { get => GuildUser?.Presence; set => GuildUser.Presence = value; }
/// <summary> /// <summary>
/// Gets the guild user of this thread user. /// Gets the guild user of this thread user.