Browse Source

Ensure User Left Event (#349)

pull/1966/head
Quin Lynch GitHub 3 years ago
parent
commit
cb1f489960
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 13 deletions
  1. +2
    -2
      src/Discord.Net.WebSocket/BaseSocketClient.Events.cs
  2. +5
    -11
      src/Discord.Net.WebSocket/DiscordSocketClient.cs

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

@@ -424,12 +424,12 @@ namespace Discord.WebSocket
} }
internal readonly AsyncEvent<Func<SocketGuildUser, Task>> _userJoinedEvent = new AsyncEvent<Func<SocketGuildUser, Task>>(); internal readonly AsyncEvent<Func<SocketGuildUser, Task>> _userJoinedEvent = new AsyncEvent<Func<SocketGuildUser, Task>>();
/// <summary> Fired when a user leaves a guild. </summary> /// <summary> Fired when a user leaves a guild. </summary>
public event Func<SocketGuildUser, Task> UserLeft
public event Func<SocketUser, Task> UserLeft
{ {
add { _userLeftEvent.Add(value); } add { _userLeftEvent.Add(value); }
remove { _userLeftEvent.Remove(value); } remove { _userLeftEvent.Remove(value); }
} }
internal readonly AsyncEvent<Func<SocketGuildUser, Task>> _userLeftEvent = new AsyncEvent<Func<SocketGuildUser, Task>>();
internal readonly AsyncEvent<Func<SocketUser, Task>> _userLeftEvent = new AsyncEvent<Func<SocketUser, Task>>();
/// <summary> Fired when a user is banned from a guild. </summary> /// <summary> Fired when a user is banned from a guild. </summary>
public event Func<SocketUser, SocketGuild, Task> UserBanned public event Func<SocketUser, SocketGuild, Task> UserBanned
{ {


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

@@ -1300,7 +1300,7 @@ namespace Discord.WebSocket
var guild = State.GetGuild(data.GuildId); var guild = State.GetGuild(data.GuildId);
if (guild != null) if (guild != null)
{ {
var user = guild.RemoveUser(data.User.Id);
SocketUser user = guild.RemoveUser(data.User.Id);
guild.MemberCount--; guild.MemberCount--;


if (!guild.IsSynced) if (!guild.IsSynced)
@@ -1309,16 +1309,10 @@ namespace Discord.WebSocket
return; return;
} }


if (user != null)
await TimedInvokeAsync(_userLeftEvent, nameof(UserLeft), user).ConfigureAwait(false);
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;
}
if(user == null)
user = SocketGlobalUser.Create(this, State, data.User);

await TimedInvokeAsync(_userLeftEvent, nameof(UserLeft), user).ConfigureAwait(false);
} }
else else
{ {


Loading…
Cancel
Save