From d3236d834115c80ddd68ed6355099dbd4a8a4588 Mon Sep 17 00:00:00 2001 From: David Valachovic Date: Wed, 8 Jun 2016 19:18:21 -0500 Subject: [PATCH 1/7] changed guild member nickname new method (doesn't quite work yet, not sure if code or permissions issue) --- DiscordSharp/Objects/DiscordServer.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/DiscordSharp/Objects/DiscordServer.cs b/DiscordSharp/Objects/DiscordServer.cs index fcc1301..087a4fb 100644 --- a/DiscordSharp/Objects/DiscordServer.cs +++ b/DiscordSharp/Objects/DiscordServer.cs @@ -354,5 +354,14 @@ public DiscordServer ShallowCopy() { return (DiscordServer)this.MemberwiseClone(); } + + public void ChangeMemberNickname(DiscordMember member, string newNickname) { + if (Unavailable) + throw new Exception("Server is currently unavailable!"); + + string url = Endpoints.BaseAPI + Endpoints.Guilds + $"/{this.ID}" + Endpoints.Members + $"/{member.ID}"; + string message = JsonConvert.SerializeObject(new { nick = newNickname }); + Console.WriteLine(WebWrapper.Patch(url, DiscordClient.token, message)); + } } } From c75cd89e1913afab323a19d4c28f25529d678575 Mon Sep 17 00:00:00 2001 From: David Valachovic Date: Thu, 23 Jun 2016 00:06:55 -0500 Subject: [PATCH 2/7] some stuff for when a user joins a voice channel --- DiscordSharp/DiscordClient.cs | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/DiscordSharp/DiscordClient.cs b/DiscordSharp/DiscordClient.cs index 4590016..0c925e2 100644 --- a/DiscordSharp/DiscordClient.cs +++ b/DiscordSharp/DiscordClient.cs @@ -253,6 +253,7 @@ public class DiscordClient /// For use when connected to voice only. /// public event EventHandler UserLeftVoiceChannel; + public event EventHandler UserJoinedVoiceChannel; /// /// Occurs when the voice client is fully connected to voice. /// @@ -3090,10 +3091,12 @@ private void MessageDeletedEvents(JObject message) MessageDeleted(this, e); } - private void VoiceStateUpdateEvents(JObject message) - { + private void VoiceStateUpdateEvents(JObject message) { + DiscordVoiceStateUpdateEventArgs e = new DiscordVoiceStateUpdateEventArgs(); + e.Guild = ServersList.Find(x => x.ID == message["d"]["guild_id"].ToString()); + DiscordMember memberToUpdate = e.Guild.GetMemberByKey(message["d"]["user_id"].ToString()); var f = message["d"]["channel_id"]; - if (f.ToString() == null) + if (String.IsNullOrEmpty(f.ToString())) { DiscordLeftVoiceChannelEventArgs le = new DiscordLeftVoiceChannelEventArgs(); DiscordServer inServer = ServersList.Find(x => x.ID == message["d"]["guild_id"].ToString()); @@ -3105,15 +3108,13 @@ private void VoiceStateUpdateEvents(JObject message) VoiceClient.MemberRemoved(le.User); if (UserLeftVoiceChannel != null) UserLeftVoiceChannel(this, le); + memberToUpdate.CurrentVoiceChannel = e.Channel; return; } - DiscordVoiceStateUpdateEventArgs e = new DiscordVoiceStateUpdateEventArgs(); - e.Guild = ServersList.Find(x => x.ID == message["d"]["guild_id"].ToString()); - DiscordMember memberToUpdate = e.Guild.GetMemberByKey(message["d"]["user_id"].ToString()); if (memberToUpdate != null) { e.Channel = e.Guild.Channels.Find(x => x.ID == message["d"]["channel_id"].ToString()); - memberToUpdate.CurrentVoiceChannel = e.Channel; + if (!message["d"]["self_deaf"].IsNullOrEmpty()) e.SelfDeaf = message["d"]["self_deaf"].ToObject(); e.Deaf = message["d"]["deaf"].ToObject(); @@ -3127,6 +3128,14 @@ private void VoiceStateUpdateEvents(JObject message) e.User = memberToUpdate; + if (memberToUpdate.CurrentVoiceChannel != e.Channel) { + if (memberToUpdate.ID != Me.ID) { + UserJoinedVoiceChannel?.Invoke(this, e); + } + } + + memberToUpdate.CurrentVoiceChannel = e.Channel; + if (VoiceClient != null && VoiceClient.Connected) VoiceClient.MemberAdded(e.User); From 87fa4f85c4f418ecd8afc47ded0bbd51343f2c89 Mon Sep 17 00:00:00 2001 From: David Valachovic Date: Thu, 23 Jun 2016 20:06:06 -0500 Subject: [PATCH 3/7] cleanup and formatting --- DiscordSharp/DiscordClient.cs | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/DiscordSharp/DiscordClient.cs b/DiscordSharp/DiscordClient.cs index 0c925e2..865baac 100644 --- a/DiscordSharp/DiscordClient.cs +++ b/DiscordSharp/DiscordClient.cs @@ -1829,11 +1829,9 @@ public void DeleteInvite(string id) /// /// Runs the websocket connection for the client hooking up the appropriate events. /// - public void Connect() - { + public void Connect() { CurrentGatewayURL = GetGatewayUrl(); - if (string.IsNullOrEmpty(CurrentGatewayURL)) - { + if (string.IsNullOrEmpty(CurrentGatewayURL)) { DebugLogger.Log("Gateway URL was null or empty?!", MessageLevel.Critical); return; } @@ -1841,13 +1839,7 @@ public void Connect() ws = new WebSocketSharpSocket(CurrentGatewayURL); DebugLogger.Log("Using WebSocketSharp websocket.."); - //catch (PlatformNotSupportedException) //Win7 doesn't support this. - //{ - // ws = new NetWebSocket(CurrentGatewayURL); - // DebugLogger.Log("Using .Net's built in WebSocket.."); - //} - ws.MessageReceived += (sender, e) => - { + ws.MessageReceived += (sender, e) => { var message = JObject.Parse(e.Message); if (EnableVerboseLogging) @@ -1863,13 +1855,11 @@ public void Connect() Sequence = message["s"].ToObject(); }; - ws.SocketOpened += (sender, e) => - { + ws.SocketOpened += (sender, e) => { SendIdentifyPacket(); SocketOpened?.Invoke(this, null); }; - ws.SocketClosed += (sender, e) => - { + ws.SocketClosed += (sender, e) => { DiscordSocketClosedEventArgs scev = new DiscordSocketClosedEventArgs(); scev.Code = e.Code; scev.Reason = e.Reason; From 9d03ab10ce364246751142932b51f94a358c62b8 Mon Sep 17 00:00:00 2001 From: David Valachovic Date: Thu, 23 Jun 2016 23:04:16 -0500 Subject: [PATCH 4/7] idk what this is --- DiscordSharp/DiscordSharp.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/DiscordSharp/DiscordSharp.csproj b/DiscordSharp/DiscordSharp.csproj index 03d32f6..9f0302c 100644 --- a/DiscordSharp/DiscordSharp.csproj +++ b/DiscordSharp/DiscordSharp.csproj @@ -29,6 +29,7 @@ 6 true false + true pdbonly From df25c23ab8cb209e00b2e15b634727c23284ca7a Mon Sep 17 00:00:00 2001 From: David Valachovic Date: Sun, 26 Jun 2016 02:53:20 -0500 Subject: [PATCH 5/7] version change? --- DiscordSharp/DiscordSharp.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DiscordSharp/DiscordSharp.csproj b/DiscordSharp/DiscordSharp.csproj index 9f0302c..092cb74 100644 --- a/DiscordSharp/DiscordSharp.csproj +++ b/DiscordSharp/DiscordSharp.csproj @@ -1,5 +1,5 @@  - + Debug From be1911a0dc13049d2f914f5cb0f0cc8ee520d28d Mon Sep 17 00:00:00 2001 From: David Valachovic Date: Sun, 26 Jun 2016 10:31:02 -0500 Subject: [PATCH 6/7] added support for afk channel --- DiscordSharp/DiscordClient.cs | 4 ++++ DiscordSharp/Objects/DiscordChannel.cs | 2 ++ DiscordSharp/Objects/DiscordServer.cs | 10 ++++++++++ 3 files changed, 16 insertions(+) diff --git a/DiscordSharp/DiscordClient.cs b/DiscordSharp/DiscordClient.cs index 865baac..106449c 100644 --- a/DiscordSharp/DiscordClient.cs +++ b/DiscordSharp/DiscordClient.cs @@ -2900,6 +2900,10 @@ private void GuildCreateEvents(JObject message) } server.Channels.Add(tempChannel); } + + // Must set this after setting the Channels + server.AFKChannelID = message["d"]["afk_channel_id"].ToString(); + foreach (var mbr in message["d"]["members"]) { DiscordMember member = JsonConvert.DeserializeObject(mbr["user"].ToString()); diff --git a/DiscordSharp/Objects/DiscordChannel.cs b/DiscordSharp/Objects/DiscordChannel.cs index e633f48..33bcb27 100644 --- a/DiscordSharp/Objects/DiscordChannel.cs +++ b/DiscordSharp/Objects/DiscordChannel.cs @@ -46,6 +46,8 @@ public class DiscordChannel : DiscordChannelBase { [JsonProperty("type")] public ChannelType Type { get; set; } + + public bool IsAFKChannel { get { return Parent.AFKChannelID == ID; } } [JsonProperty("name")] public string Name { get; set; } diff --git a/DiscordSharp/Objects/DiscordServer.cs b/DiscordSharp/Objects/DiscordServer.cs index 087a4fb..85e7b57 100644 --- a/DiscordSharp/Objects/DiscordServer.cs +++ b/DiscordSharp/Objects/DiscordServer.cs @@ -54,7 +54,17 @@ internal set [JsonProperty("channels")] public List Channels { get; internal set; } + + [JsonProperty("afk_channel_id")] + internal ID AFKChannelID { + get { return AFKChannel?.ID; } + set { + AFKChannel = Channels.Find(x => x.ID == value); + } + } + public DiscordChannel AFKChannel { get; private set; } + [JsonProperty("members")] private List membersAsList { From 889a31bfd3f472f90b64c753805b60538da0ca04 Mon Sep 17 00:00:00 2001 From: David Valachovic Date: Sun, 26 Jun 2016 10:37:15 -0500 Subject: [PATCH 7/7] Cleaning up for pull request --- DiscordSharp/DiscordClient.cs | 20 +++++++++++++------- DiscordSharp/DiscordSharp.csproj | 3 +-- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/DiscordSharp/DiscordClient.cs b/DiscordSharp/DiscordClient.cs index 106449c..4c80c1c 100644 --- a/DiscordSharp/DiscordClient.cs +++ b/DiscordSharp/DiscordClient.cs @@ -1829,9 +1829,11 @@ public void DeleteInvite(string id) /// /// Runs the websocket connection for the client hooking up the appropriate events. /// - public void Connect() { + public void Connect() + { CurrentGatewayURL = GetGatewayUrl(); - if (string.IsNullOrEmpty(CurrentGatewayURL)) { + if (string.IsNullOrEmpty(CurrentGatewayURL)) + { DebugLogger.Log("Gateway URL was null or empty?!", MessageLevel.Critical); return; } @@ -1839,7 +1841,8 @@ public void Connect() { ws = new WebSocketSharpSocket(CurrentGatewayURL); DebugLogger.Log("Using WebSocketSharp websocket.."); - ws.MessageReceived += (sender, e) => { + ws.MessageReceived += (sender, e) => + { var message = JObject.Parse(e.Message); if (EnableVerboseLogging) @@ -1855,11 +1858,13 @@ public void Connect() { Sequence = message["s"].ToObject(); }; - ws.SocketOpened += (sender, e) => { + ws.SocketOpened += (sender, e) => + { SendIdentifyPacket(); SocketOpened?.Invoke(this, null); }; - ws.SocketClosed += (sender, e) => { + ws.SocketClosed += (sender, e) => + { DiscordSocketClosedEventArgs scev = new DiscordSocketClosedEventArgs(); scev.Code = e.Code; scev.Reason = e.Reason; @@ -3085,12 +3090,13 @@ private void MessageDeletedEvents(JObject message) MessageDeleted(this, e); } - private void VoiceStateUpdateEvents(JObject message) { + private void VoiceStateUpdateEvents(JObject message) + { DiscordVoiceStateUpdateEventArgs e = new DiscordVoiceStateUpdateEventArgs(); e.Guild = ServersList.Find(x => x.ID == message["d"]["guild_id"].ToString()); DiscordMember memberToUpdate = e.Guild.GetMemberByKey(message["d"]["user_id"].ToString()); var f = message["d"]["channel_id"]; - if (String.IsNullOrEmpty(f.ToString())) + if (f.ToString().IsNullOrEmpty()) { DiscordLeftVoiceChannelEventArgs le = new DiscordLeftVoiceChannelEventArgs(); DiscordServer inServer = ServersList.Find(x => x.ID == message["d"]["guild_id"].ToString()); diff --git a/DiscordSharp/DiscordSharp.csproj b/DiscordSharp/DiscordSharp.csproj index 092cb74..03d32f6 100644 --- a/DiscordSharp/DiscordSharp.csproj +++ b/DiscordSharp/DiscordSharp.csproj @@ -1,5 +1,5 @@  - + Debug @@ -29,7 +29,6 @@ 6 true false - true pdbonly