//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 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); }
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); }
public DiscordRole EditRole(DiscordServer guild, DiscordRole newRole) { string url = Endpoints.BaseAPI + Endpoints.Guilds + $"/{guild.id}" + Endpoints.Roles + $"/{newRole.id}"; string request = JsonConvert.SerializeObject( new { color = decimal.Parse(newRole.color.ToDecimal().ToString()), hoist = newRole.hoist, name = newRole.name, permissions = newRole.permissions.GetRawPermissions() } ); try { var result = JObject.Parse(WebWrapper.Patch(url, token, request)); if (result != null) { DiscordRole d = new DiscordRole { color = new Color(result["color"].ToObject<int>().ToString("x")), hoist = result["hoist"].ToObject<bool>(), id = result["id"].ToString(), managed = result["managed"].ToObject<bool>(), name = result["name"].ToString(), permissions = new DiscordPermission(result["permissions"].ToObject<uint>()), position = result["position"].ToObject<int>() }; ServersList.Find(x => x.id == guild.id).roles.Remove(d); ServersList.Find(x => x.id == guild.id).roles.Add(d); return d; } } catch(Exception ex) { DebugLogger.Log($"Error ocurred while editing role ({newRole.name}): {ex.Message}", MessageLevel.Error); } return null; }
public void DeleteRole(DiscordServer guild, DiscordRole role) { string url = Endpoints.BaseAPI + Endpoints.Guilds + $"/{guild.id}" + Endpoints.Roles + $"/{role.id}"; try { WebWrapper.Delete(url, token); } catch(Exception ex) { DebugLogger.Log($"Error ocurred while deleting role ({role.name}): {ex.Message}", MessageLevel.Error); } }
private void GuildRoleUpdateEvents(JObject message) { DiscordServer inServer = ServersList.Find(x => x.id == message["d"]["guild_id"].ToString()); DiscordRole roleUpdated = new DiscordRole { name = message["d"]["role"]["name"].ToString(), position = message["d"]["role"]["position"].ToObject<int>(), permissions = new DiscordPermission(message["d"]["role"]["permissions"].ToObject<uint>()), managed = message["d"]["role"]["managed"].ToObject<bool>(), hoist = message["d"]["role"]["hoist"].ToObject<bool>(), color = new Color(message["d"]["role"]["color"].ToObject<int>().ToString("x")), id = message["d"]["role"]["id"].ToString(), }; ServersList.Find(x => x.id == inServer.id).roles.Remove(ServersList.Find(x => x.id == inServer.id).roles.Find(y => y.id == roleUpdated.id)); ServersList.Find(x => x.id == inServer.id).roles.Add(roleUpdated); if (RoleUpdated != null) RoleUpdated(this, new DiscordGuildRoleUpdateEventArgs { RawJson = message, RoleUpdated = roleUpdated, InServer = inServer }); }
public DiscordRole CreateRole(DiscordServer guild) { string url = Endpoints.BaseAPI + Endpoints.Guilds + $"/{guild.id}" + Endpoints.Roles; try { var result = JObject.Parse(WebWrapper.Post(url, token, "")); if (result != null) { DiscordRole d = new DiscordRole { color = new Color(result["color"].ToObject<int>().ToString("x")), hoist = result["hoist"].ToObject<bool>(), id = result["id"].ToString(), managed = result["managed"].ToObject<bool>(), name = result["name"].ToString(), permissions = new DiscordPermission(result["permissions"].ToObject<uint>()), position = result["position"].ToObject<int>() }; ServersList.Find(x => x.id == guild.id).roles.Add(d); return d; } } catch(Exception ex) { DebugLogger.Log($"Error ocurred while creating role in guild {guild.name}: {ex.Message}", MessageLevel.Error); } return null; }
public void AssignRoleToMember(DiscordServer guild, DiscordRole role, DiscordMember member) { string url = Endpoints.BaseAPI + Endpoints.Guilds + $"/{guild.id}" + Endpoints.Members + $"/{member.ID}"; string message = JsonConvert.SerializeObject(new { roles = new string[] { role.id } }); try { Console.WriteLine(WebWrapper.Patch(url, token, message)); } catch(Exception ex) { DebugLogger.Log($"Exception ocurred while assigning role ({role.name}) to member ({member.Username}): " + ex.Message, MessageLevel.Error); } }
public void DeleteRole(DiscordRole role) { string url = Endpoints.BaseAPI + Endpoints.Guilds + $"/{this.id}" + Endpoints.Roles + $"/{role.id}"; WebWrapper.Delete(url, DiscordClient.token); }
public DiscordRole EditRole(DiscordRole role) { string url = Endpoints.BaseAPI + Endpoints.Guilds + $"/{this.id}" + Endpoints.Roles + $"/{role.id}"; string request = JsonConvert.SerializeObject( new { color = decimal.Parse(role.color.ToDecimal().ToString()), hoist = role.hoist, name = role.name, permissions = role.permissions.GetRawPermissions() } ); var result = JObject.Parse(WebWrapper.Patch(url, DiscordClient.token, request)); if (result != null) { DiscordRole d = new DiscordRole { color = new Color(result["color"].ToObject<int>().ToString("x")), hoist = result["hoist"].ToObject<bool>(), id = result["id"].ToString(), managed = result["managed"].ToObject<bool>(), name = result["name"].ToString(), permissions = new DiscordPermission(result["permissions"].ToObject<uint>()), position = result["position"].ToObject<int>() }; this.roles.Remove(d); this.roles.Add(d); return d; } return null; }
public DiscordRole CreateRole() { string url = Endpoints.BaseAPI + Endpoints.Guilds + $"/{this.id}" + Endpoints.Roles; var result = JObject.Parse(WebWrapper.Post(url, DiscordClient.token, "")); if (result != null) { DiscordRole d = new DiscordRole { color = new Color(result["color"].ToObject<int>().ToString("x")), hoist = result["hoist"].ToObject<bool>(), id = result["id"].ToString(), managed = result["managed"].ToObject<bool>(), name = result["name"].ToString(), permissions = new DiscordPermission(result["permissions"].ToObject<uint>()), position = result["position"].ToObject<int>() }; this.roles.Add(d); return d; } return null; }
public void AssignRoleToMember(DiscordRole role, DiscordMember member) { string url = Endpoints.BaseAPI + Endpoints.Guilds + $"/{this.id}" + Endpoints.Members + $"/{member.ID}"; string message = JsonConvert.SerializeObject(new { roles = new string[] { role.id } }); Console.WriteLine(WebWrapper.Patch(url, DiscordClient.token, message)); }