//eh private void GetChannelsList(JObject m) { if (ServersList == null) ServersList = new List<DiscordServer>(); foreach(var j in m["d"]["guilds"]) { DiscordServer temp = new DiscordServer(); temp.id = j["id"].ToString(); temp.name = j["name"].ToString(); //temp.owner_id = j["owner_id"].ToString(); List<DiscordChannel> tempSubs = new List<DiscordChannel>(); List<DiscordRole> tempRoles = new List<DiscordRole>(); foreach(var u in j["roles"]) { DiscordRole t = new DiscordRole { color = new DiscordSharp.Color(u["color"].ToObject<int>().ToString("x")), name = u["name"].ToString(), permissions = new DiscordPermission(u["permissions"].ToObject<uint>()), position = u["position"].ToObject<int>(), managed = u["managed"].ToObject<bool>(), id = u["id"].ToString(), hoist = u["hoist"].ToObject<bool>() }; tempRoles.Add(t); } temp.roles = tempRoles; foreach(var u in j["channels"]) { DiscordChannel tempSub = new DiscordChannel(); tempSub.id = u["id"].ToString(); tempSub.name = u["name"].ToString(); tempSub.type = u["type"].ToString(); tempSub.topic = u["topic"].ToString(); tempSub.parent = temp; List<DiscordPermissionOverride> permissionoverrides = new List<DiscordPermissionOverride>(); foreach(var o in u["permission_overwrites"]) { DiscordPermissionOverride dpo = new DiscordPermissionOverride(o["allow"].ToObject<uint>(), o["deny"].ToObject<uint>()); dpo.id = o["id"].ToString(); if (o["type"].ToString() == "member") dpo.type = DiscordPermissionOverride.OverrideType.member; else dpo.type = DiscordPermissionOverride.OverrideType.role; permissionoverrides.Add(dpo); } tempSub.PermissionOverrides = permissionoverrides; tempSubs.Add(tempSub); } temp.channels = tempSubs; foreach(var mm in j["members"]) { DiscordMember member = JsonConvert.DeserializeObject<DiscordMember>(mm["user"].ToString()); //member.ID = mm["user"]["id"].ToString(); //member.Username = mm["user"]["username"].ToString(); //member.Avatar = mm["user"]["avatar"].ToString(); //member.Discriminator = mm["user"]["discriminator"].ToString(); member.Roles = new List<DiscordRole>(); JArray rawRoles = JArray.Parse(mm["roles"].ToString()); if(rawRoles.Count > 0) { foreach(var role in rawRoles.Children()) { member.Roles.Add(temp.roles.Find(x => x.id == role.Value<string>())); } } else { member.Roles.Add(temp.roles.Find(x => x.name == "@everyone")); } member.Parent = temp; temp.members.Add(member); } temp.owner = temp.members.Find(x => x.ID == j["owner_id"].ToString()); ServersList.Add(temp); } }
private void ChannelUpdateEvents(JObject message) { DiscordChannelUpdateEventArgs e = new DiscordChannelUpdateEventArgs(); e.RawJson = message; DiscordChannel oldChannel = ServersList.Find(x => x.channels.Find(y => y.id == message["d"]["id"].ToString()) != null).channels.Find(x=>x.id == message["d"]["id"].ToString()); e.OldChannel = oldChannel; DiscordChannel newChannel = oldChannel; newChannel.name = message["d"]["name"].ToString(); newChannel.topic = message["d"]["topic"].ToString(); newChannel.is_private = message["d"]["is_private"].ToObject<bool>(); List<DiscordPermissionOverride> permissionoverrides = new List<DiscordPermissionOverride>(); foreach (var o in message["d"]["permission_overwrites"]) { DiscordPermissionOverride dpo = new DiscordPermissionOverride(o["allow"].ToObject<uint>(), o["deny"].ToObject<uint>()); dpo.type = o["type"].ToObject<DiscordPermissionOverride.OverrideType>(); dpo.id = o["id"].ToString(); permissionoverrides.Add(dpo); } newChannel.PermissionOverrides = permissionoverrides; e.NewChannel = newChannel; DiscordServer serverToRemoveFrom = ServersList.Find(x => x.channels.Find(y => y.id == newChannel.id) != null); newChannel.parent = serverToRemoveFrom; int indexOfServer = ServersList.IndexOf(serverToRemoveFrom); serverToRemoveFrom.channels.Remove(oldChannel); serverToRemoveFrom.channels.Add(newChannel); ServersList.RemoveAt(indexOfServer); ServersList.Insert(indexOfServer, serverToRemoveFrom); if (ChannelUpdated != null) ChannelUpdated(this, e); }
private void GuildCreateEvents(JObject message) { DiscordGuildCreateEventArgs e = new DiscordGuildCreateEventArgs(); e.RawJson = message; DiscordServer server = new DiscordServer(); server.id = message["d"]["id"].ToString(); server.name = message["d"]["name"].ToString(); server.members = new List<DiscordMember>(); server.channels = new List<DiscordChannel>(); server.roles = new List<DiscordRole>(); foreach (var roll in message["d"]["roles"]) { DiscordRole t = new DiscordRole { color = new DiscordSharp.Color(roll["color"].ToObject<int>().ToString("x")), name = roll["name"].ToString(), permissions = new DiscordPermission(roll["permissions"].ToObject<uint>()), position = roll["position"].ToObject<int>(), managed = roll["managed"].ToObject<bool>(), id = roll["id"].ToString(), hoist = roll["hoist"].ToObject<bool>() }; server.roles.Add(t); } foreach (var chn in message["d"]["channels"]) { DiscordChannel tempChannel = new DiscordChannel(); tempChannel.id = chn["id"].ToString(); tempChannel.type = chn["type"].ToString(); tempChannel.topic = chn["topic"].ToString(); tempChannel.name = chn["name"].ToString(); tempChannel.is_private = false; tempChannel.PermissionOverrides = new List<DiscordPermissionOverride>(); foreach (var o in chn["permission_overwrites"]) { if (tempChannel.type == "voice") continue; DiscordPermissionOverride dpo = new DiscordPermissionOverride(o["allow"].ToObject<uint>(), o["deny"].ToObject<uint>()); dpo.id = o["id"].ToString(); if (o["type"].ToString() == "member") dpo.type = DiscordPermissionOverride.OverrideType.member; else dpo.type = DiscordPermissionOverride.OverrideType.role; tempChannel.PermissionOverrides.Add(dpo); } server.channels.Add(tempChannel); } foreach(var mbr in message["d"]["members"]) { DiscordMember member = JsonConvert.DeserializeObject<DiscordMember>(mbr["user"].ToString()); member.parentclient = this; member.Parent = server; foreach(var rollid in mbr["roles"]) { member.Roles.Add(server.roles.Find(x => x.id == rollid.ToString())); } if (member.Roles.Count == 0) member.Roles.Add(server.roles.Find(x => x.name == "@everyone")); server.members.Add(member); } server.owner = server.members.Find(x => x.ID == message["d"]["owner_id"].ToString()); ServersList.Add(server); e.server = server; if (GuildCreated != null) GuildCreated(this, e); }
private void GuildUpdateEvents(JObject message) { DiscordServer oldServer = ServersList.Find(x => x.id == message["d"]["id"].ToString()); DiscordServer newServer = new DiscordServer { name = message["d"]["name"].ToString(), id = message["d"]["name"].ToString() }; newServer.roles = new List<DiscordRole>(); if (!message["d"]["roles"].IsNullOrEmpty()) { foreach (var roll in message["d"]["roles"]) { DiscordRole t = new DiscordRole { color = new DiscordSharp.Color(roll["color"].ToObject<int>().ToString("x")), name = roll["name"].ToString(), permissions = new DiscordPermission(roll["permissions"].ToObject<uint>()), position = roll["position"].ToObject<int>(), managed = roll["managed"].ToObject<bool>(), id = roll["id"].ToString(), hoist = roll["hoist"].ToObject<bool>() }; newServer.roles.Add(t); } } newServer.channels = new List<DiscordChannel>(); if (!message["d"]["channels"].IsNullOrEmpty()) { foreach (var u in message["d"]["channels"]) { DiscordChannel tempSub = new DiscordChannel(); tempSub.id = u["id"].ToString(); tempSub.name = u["name"].ToString(); tempSub.type = u["type"].ToString(); tempSub.topic = u["topic"].ToString(); tempSub.parent = newServer; List<DiscordPermissionOverride> permissionoverrides = new List<DiscordPermissionOverride>(); foreach (var o in u["permission_overwrites"]) { DiscordPermissionOverride dpo = new DiscordPermissionOverride(o["allow"].ToObject<uint>(), o["deny"].ToObject<uint>()); dpo.type = o["type"].ToObject<DiscordPermissionOverride.OverrideType>(); dpo.id = o["id"].ToString(); permissionoverrides.Add(dpo); } tempSub.PermissionOverrides = permissionoverrides; newServer.channels.Add(tempSub); } } if (!message["d"]["members"].IsNullOrEmpty()) { foreach (var mm in message["d"]["members"]) { DiscordMember member = JsonConvert.DeserializeObject<DiscordMember>(mm["user"].ToString()); member.parentclient = this; member.Parent = newServer; JArray rawRoles = JArray.Parse(mm["roles"].ToString()); if (rawRoles.Count > 0) { foreach (var role in rawRoles.Children()) { member.Roles.Add(newServer.roles.Find(x => x.id == role.Value<string>())); } } else { member.Roles.Add(newServer.roles.Find(x => x.name == "@everyone")); } newServer.members.Add(member); } } if (!message["d"]["owner_id"].IsNullOrEmpty()) { newServer.owner = newServer.members.Find(x => x.ID == message["d"]["owner_id"].ToString()); DebugLogger.Log($"Transferred ownership from user '{oldServer.owner.Username}' to {newServer.owner.Username}."); } ServersList.Remove(oldServer); ServersList.Add(newServer); DiscordServerUpdateEventArgs dsuea = new DiscordServerUpdateEventArgs { NewServer = newServer, OldServer = oldServer }; if (GuildUpdated != null) GuildUpdated(this, dsuea); }