From 75174e67bd1adc2bb085d846bb34a5b7bcb2fb83 Mon Sep 17 00:00:00 2001 From: RogueException Date: Sat, 26 Dec 2015 03:12:35 -0400 Subject: [PATCH] Fixed GUILD_MEMBERS_CHUNK and channel desync --- .../Client/GatewaySocket/Events/GuildMembersChunk.cs | 5 ++++- src/Discord.Net/DiscordClient.cs | 10 +++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/Discord.Net/API/Client/GatewaySocket/Events/GuildMembersChunk.cs b/src/Discord.Net/API/Client/GatewaySocket/Events/GuildMembersChunk.cs index 8c2564ed0..6f790825a 100644 --- a/src/Discord.Net/API/Client/GatewaySocket/Events/GuildMembersChunk.cs +++ b/src/Discord.Net/API/Client/GatewaySocket/Events/GuildMembersChunk.cs @@ -1,9 +1,12 @@ -using Newtonsoft.Json; +using Discord.API.Converters; +using Newtonsoft.Json; namespace Discord.API.Client.GatewaySocket { public sealed class GuildMembersChunkEvent { + [JsonProperty("guild_id"), JsonConverter(typeof(LongStringConverter))] + public ulong GuildId { get; set; } [JsonProperty("members")] public Member[] Members; } diff --git a/src/Discord.Net/DiscordClient.cs b/src/Discord.Net/DiscordClient.cs index 15ae3b287..dac7bcfa9 100644 --- a/src/Discord.Net/DiscordClient.cs +++ b/src/Discord.Net/DiscordClient.cs @@ -322,7 +322,7 @@ namespace Discord #region Channels internal void AddChannel(Channel channel) { - _channels[channel.Id] = channel; + _channels.GetOrAdd(channel.Id, channel); } private Channel RemoveChannel(ulong id) { @@ -457,7 +457,7 @@ namespace Discord switch (e.Type) { //Global - case "READY": //Resync + case "READY": { var data = e.Payload.ToObject(_serializer); SessionId = data.SessionId; @@ -639,10 +639,10 @@ namespace Discord case "GUILD_MEMBERS_CHUNK": { var data = e.Payload.ToObject(_serializer); - foreach (var memberData in data.Members) + var server = GetServer(data.GuildId); + if (server != null) { - var server = GetServer(memberData.GuildId.Value); - if (server != null) + foreach (var memberData in data.Members) { var user = server.AddUser(memberData.User.Id); user.Update(memberData);