fix: Fire GuildMemberUpdated without cached user (#1853)
This commit is contained in:
@@ -347,6 +347,7 @@ namespace Discord.WebSocket
|
|||||||
}
|
}
|
||||||
internal readonly AsyncEvent<Func<SocketUser, SocketUser, Task>> _userUpdatedEvent = new AsyncEvent<Func<SocketUser, SocketUser, Task>>();
|
internal readonly AsyncEvent<Func<SocketUser, SocketUser, Task>> _userUpdatedEvent = new AsyncEvent<Func<SocketUser, SocketUser, Task>>();
|
||||||
/// <summary> Fired when a guild member is updated, or a member presence is updated. </summary>
|
/// <summary> Fired when a guild member is updated, or a member presence is updated. </summary>
|
||||||
|
/// <remarks> The first user (state before) might be null if they weren't in the cache. </remarks>
|
||||||
public event Func<SocketGuildUser, SocketGuildUser, Task> GuildMemberUpdated {
|
public event Func<SocketGuildUser, SocketGuildUser, Task> GuildMemberUpdated {
|
||||||
add { _guildMemberUpdatedEvent.Add(value); }
|
add { _guildMemberUpdatedEvent.Add(value); }
|
||||||
remove { _guildMemberUpdatedEvent.Remove(value); }
|
remove { _guildMemberUpdatedEvent.Remove(value); }
|
||||||
|
|||||||
@@ -996,11 +996,8 @@ namespace Discord.WebSocket
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!guild.HasAllMembers)
|
user = guild.AddOrUpdateUser(data);
|
||||||
await IncompleteGuildUserAsync(type, data.User.Id, data.GuildId).ConfigureAwait(false);
|
await TimedInvokeAsync(_guildMemberUpdatedEvent, nameof(GuildMemberUpdated), null, user).ConfigureAwait(false);
|
||||||
else
|
|
||||||
await UnknownGuildUserAsync(type, data.User.Id, data.GuildId).ConfigureAwait(false);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user