Fixed GUILD_MEMBERS_CHUNK and channel desync

This commit is contained in:
RogueException
2015-12-26 03:12:35 -04:00
parent 4f313ecfa6
commit 75174e67bd
2 changed files with 9 additions and 6 deletions

View File

@@ -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;
}

View File

@@ -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<ReadyEvent>(_serializer);
SessionId = data.SessionId;
@@ -639,10 +639,10 @@ namespace Discord
case "GUILD_MEMBERS_CHUNK":
{
var data = e.Payload.ToObject<GuildMembersChunkEvent>(_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);