Added more guild sync checks
This commit is contained in:
@@ -708,7 +708,15 @@ namespace Discord
|
|||||||
{
|
{
|
||||||
var guild = DataStore.GetGuild(data.GuildId.Value);
|
var guild = DataStore.GetGuild(data.GuildId.Value);
|
||||||
if (guild != null)
|
if (guild != null)
|
||||||
|
{
|
||||||
guild.AddChannel(data, DataStore);
|
guild.AddChannel(data, DataStore);
|
||||||
|
|
||||||
|
if (!guild.IsSynced)
|
||||||
|
{
|
||||||
|
await _gatewayLogger.DebugAsync("Ignored CHANNEL_CREATE, guild is not synced yet.").ConfigureAwait(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
await _gatewayLogger.WarningAsync("CHANNEL_CREATE referenced an unknown guild.").ConfigureAwait(false);
|
await _gatewayLogger.WarningAsync("CHANNEL_CREATE referenced an unknown guild.").ConfigureAwait(false);
|
||||||
@@ -732,6 +740,13 @@ namespace Discord
|
|||||||
{
|
{
|
||||||
var before = channel.Clone();
|
var before = channel.Clone();
|
||||||
channel.Update(data, UpdateSource.WebSocket);
|
channel.Update(data, UpdateSource.WebSocket);
|
||||||
|
|
||||||
|
if (!((channel as ICachedGuildChannel)?.Guild.IsSynced ?? true))
|
||||||
|
{
|
||||||
|
await _gatewayLogger.DebugAsync("Ignored CHANNEL_UPDATE, guild is not synced yet.").ConfigureAwait(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
await _channelUpdatedEvent.InvokeAsync(before, channel).ConfigureAwait(false);
|
await _channelUpdatedEvent.InvokeAsync(before, channel).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -751,7 +766,15 @@ namespace Discord
|
|||||||
{
|
{
|
||||||
var guild = DataStore.GetGuild(data.GuildId.Value);
|
var guild = DataStore.GetGuild(data.GuildId.Value);
|
||||||
if (guild != null)
|
if (guild != null)
|
||||||
|
{
|
||||||
channel = guild.RemoveChannel(data.Id);
|
channel = guild.RemoveChannel(data.Id);
|
||||||
|
|
||||||
|
if (!guild.IsSynced)
|
||||||
|
{
|
||||||
|
await _gatewayLogger.DebugAsync("Ignored CHANNEL_DELETE, guild is not synced yet.").ConfigureAwait(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
await _gatewayLogger.WarningAsync("CHANNEL_DELETE referenced an unknown guild.").ConfigureAwait(false);
|
await _gatewayLogger.WarningAsync("CHANNEL_DELETE referenced an unknown guild.").ConfigureAwait(false);
|
||||||
@@ -781,6 +804,13 @@ namespace Discord
|
|||||||
if (guild != null)
|
if (guild != null)
|
||||||
{
|
{
|
||||||
var user = guild.AddUser(data, DataStore);
|
var user = guild.AddUser(data, DataStore);
|
||||||
|
|
||||||
|
if (!guild.IsSynced)
|
||||||
|
{
|
||||||
|
await _gatewayLogger.DebugAsync("Ignored GUILD_MEMBER_ADD, guild is not synced yet.").ConfigureAwait(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
await _userJoinedEvent.InvokeAsync(user).ConfigureAwait(false);
|
await _userJoinedEvent.InvokeAsync(user).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -799,6 +829,13 @@ namespace Discord
|
|||||||
if (guild != null)
|
if (guild != null)
|
||||||
{
|
{
|
||||||
var user = guild.GetUser(data.User.Id);
|
var user = guild.GetUser(data.User.Id);
|
||||||
|
|
||||||
|
if (!guild.IsSynced)
|
||||||
|
{
|
||||||
|
await _gatewayLogger.DebugAsync("Ignored GUILD_MEMBER_UPDATE, guild is not synced yet.").ConfigureAwait(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (user != null)
|
if (user != null)
|
||||||
{
|
{
|
||||||
var before = user.Clone();
|
var before = user.Clone();
|
||||||
@@ -827,6 +864,13 @@ namespace Discord
|
|||||||
if (guild != null)
|
if (guild != null)
|
||||||
{
|
{
|
||||||
var user = guild.RemoveUser(data.User.Id);
|
var user = guild.RemoveUser(data.User.Id);
|
||||||
|
|
||||||
|
if (!guild.IsSynced)
|
||||||
|
{
|
||||||
|
await _gatewayLogger.DebugAsync("Ignored GUILD_MEMBER_REMOVE, guild is not synced yet.").ConfigureAwait(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (user != null)
|
if (user != null)
|
||||||
{
|
{
|
||||||
user.User.RemoveRef(this);
|
user.User.RemoveRef(this);
|
||||||
@@ -880,6 +924,12 @@ namespace Discord
|
|||||||
if (guild != null)
|
if (guild != null)
|
||||||
{
|
{
|
||||||
var role = guild.AddRole(data.Role);
|
var role = guild.AddRole(data.Role);
|
||||||
|
|
||||||
|
if (!guild.IsSynced)
|
||||||
|
{
|
||||||
|
await _gatewayLogger.DebugAsync("Ignored GUILD_ROLE_CREATE, guild is not synced yet.").ConfigureAwait(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
await _roleCreatedEvent.InvokeAsync(role).ConfigureAwait(false);
|
await _roleCreatedEvent.InvokeAsync(role).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -902,6 +952,13 @@ namespace Discord
|
|||||||
{
|
{
|
||||||
var before = role.Clone();
|
var before = role.Clone();
|
||||||
role.Update(data.Role, UpdateSource.WebSocket);
|
role.Update(data.Role, UpdateSource.WebSocket);
|
||||||
|
|
||||||
|
if (!guild.IsSynced)
|
||||||
|
{
|
||||||
|
await _gatewayLogger.DebugAsync("Ignored GUILD_ROLE_UPDATE, guild is not synced yet.").ConfigureAwait(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
await _roleUpdatedEvent.InvokeAsync(before, role).ConfigureAwait(false);
|
await _roleUpdatedEvent.InvokeAsync(before, role).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -927,7 +984,15 @@ namespace Discord
|
|||||||
{
|
{
|
||||||
var role = guild.RemoveRole(data.RoleId);
|
var role = guild.RemoveRole(data.RoleId);
|
||||||
if (role != null)
|
if (role != null)
|
||||||
|
{
|
||||||
|
if (!guild.IsSynced)
|
||||||
|
{
|
||||||
|
await _gatewayLogger.DebugAsync("Ignored GUILD_ROLE_DELETE, guild is not synced yet.").ConfigureAwait(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
await _roleDeletedEvent.InvokeAsync(role).ConfigureAwait(false);
|
await _roleDeletedEvent.InvokeAsync(role).ConfigureAwait(false);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
await _gatewayLogger.WarningAsync("GUILD_ROLE_DELETE referenced an unknown role.").ConfigureAwait(false);
|
await _gatewayLogger.WarningAsync("GUILD_ROLE_DELETE referenced an unknown role.").ConfigureAwait(false);
|
||||||
@@ -950,7 +1015,15 @@ namespace Discord
|
|||||||
var data = (payload as JToken).ToObject<GuildBanEvent>(_serializer);
|
var data = (payload as JToken).ToObject<GuildBanEvent>(_serializer);
|
||||||
var guild = DataStore.GetGuild(data.GuildId);
|
var guild = DataStore.GetGuild(data.GuildId);
|
||||||
if (guild != null)
|
if (guild != null)
|
||||||
|
{
|
||||||
|
if (!guild.IsSynced)
|
||||||
|
{
|
||||||
|
await _gatewayLogger.DebugAsync("Ignored GUILD_BAN_ADD, guild is not synced yet.").ConfigureAwait(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
await _userBannedEvent.InvokeAsync(new User(data.User), guild).ConfigureAwait(false);
|
await _userBannedEvent.InvokeAsync(new User(data.User), guild).ConfigureAwait(false);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
await _gatewayLogger.WarningAsync("GUILD_BAN_ADD referenced an unknown guild.").ConfigureAwait(false);
|
await _gatewayLogger.WarningAsync("GUILD_BAN_ADD referenced an unknown guild.").ConfigureAwait(false);
|
||||||
@@ -965,7 +1038,15 @@ namespace Discord
|
|||||||
var data = (payload as JToken).ToObject<GuildBanEvent>(_serializer);
|
var data = (payload as JToken).ToObject<GuildBanEvent>(_serializer);
|
||||||
var guild = DataStore.GetGuild(data.GuildId);
|
var guild = DataStore.GetGuild(data.GuildId);
|
||||||
if (guild != null)
|
if (guild != null)
|
||||||
|
{
|
||||||
|
if (!guild.IsSynced)
|
||||||
|
{
|
||||||
|
await _gatewayLogger.DebugAsync("Ignored GUILD_BAN_REMOVE, guild is not synced yet.").ConfigureAwait(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
await _userUnbannedEvent.InvokeAsync(new User(data.User), guild).ConfigureAwait(false);
|
await _userUnbannedEvent.InvokeAsync(new User(data.User), guild).ConfigureAwait(false);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
await _gatewayLogger.WarningAsync("GUILD_BAN_REMOVE referenced an unknown guild.").ConfigureAwait(false);
|
await _gatewayLogger.WarningAsync("GUILD_BAN_REMOVE referenced an unknown guild.").ConfigureAwait(false);
|
||||||
|
|||||||
Reference in New Issue
Block a user