Browse Source

fix: Fire GuildMemberUpdated without cached user (#1853)

tags/3.0.0
Paulo GitHub 4 years ago
parent
commit
d176fef5de
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 3 additions and 5 deletions
  1. +1
    -0
      src/Discord.Net.WebSocket/BaseSocketClient.Events.cs
  2. +2
    -5
      src/Discord.Net.WebSocket/DiscordSocketClient.cs

+ 1
- 0
src/Discord.Net.WebSocket/BaseSocketClient.Events.cs View File

@@ -347,6 +347,7 @@ namespace Discord.WebSocket
}
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>
/// <remarks> The first user (state before) might be null if they weren't in the cache. </remarks>
public event Func<SocketGuildUser, SocketGuildUser, Task> GuildMemberUpdated {
add { _guildMemberUpdatedEvent.Add(value); }
remove { _guildMemberUpdatedEvent.Remove(value); }


+ 2
- 5
src/Discord.Net.WebSocket/DiscordSocketClient.cs View File

@@ -996,11 +996,8 @@ namespace Discord.WebSocket
}
else
{
if (!guild.HasAllMembers)
await IncompleteGuildUserAsync(type, data.User.Id, data.GuildId).ConfigureAwait(false);
else
await UnknownGuildUserAsync(type, data.User.Id, data.GuildId).ConfigureAwait(false);
return;
user = guild.AddOrUpdateUser(data);
await TimedInvokeAsync(_guildMemberUpdatedEvent, nameof(GuildMemberUpdated), null, user).ConfigureAwait(false);
}
}
else


Loading…
Cancel
Save