From 6894e8923b652638d94e55ffbbafe8a77badf612 Mon Sep 17 00:00:00 2001 From: Alexandre Oliveira Date: Wed, 20 Dec 2017 13:24:54 -0200 Subject: [PATCH] Add support for chghost cap --- ChatSharp/Handlers/MessageHandlers.cs | 1 + ChatSharp/Handlers/UserHandlers.cs | 17 +++++++++++++++++ ChatSharp/IrcClient.cs | 2 +- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/ChatSharp/Handlers/MessageHandlers.cs b/ChatSharp/Handlers/MessageHandlers.cs index 26c6a6b..8025944 100644 --- a/ChatSharp/Handlers/MessageHandlers.cs +++ b/ChatSharp/Handlers/MessageHandlers.cs @@ -48,6 +48,7 @@ namespace ChatSharp.Handlers client.SetHandler("330", UserHandlers.HandleWhoIsLoggedInAs); client.SetHandler("354", UserHandlers.HandleWhox); client.SetHandler("ACCOUNT", UserHandlers.HandleAccount); + client.SetHandler("CHGHOST", UserHandlers.HandleChangeHost); // Listing handlers client.SetHandler("367", ListingHandlers.HandleBanListPart); diff --git a/ChatSharp/Handlers/UserHandlers.cs b/ChatSharp/Handlers/UserHandlers.cs index c8be1b0..f56505d 100644 --- a/ChatSharp/Handlers/UserHandlers.cs +++ b/ChatSharp/Handlers/UserHandlers.cs @@ -204,5 +204,22 @@ namespace ChatSharp.Handlers var user = client.Users.GetOrAdd(message.Prefix); user.Account = message.Parameters[0]; } + + public static void HandleChangeHost(IrcClient client, IrcMessage message) + { + var user = client.Users.Get(message.Prefix); + + // Only handle CHGHOST for users we know + if (user != null) + { + var newIdent = message.Parameters[0]; + var newHostname = message.Parameters[1]; + + if (user.User != newIdent) + user.User = newIdent; + if (user.Hostname != newHostname) + user.Hostname = newHostname; + } + } } } diff --git a/ChatSharp/IrcClient.cs b/ChatSharp/IrcClient.cs index de17a8e..b222d47 100644 --- a/ChatSharp/IrcClient.cs +++ b/ChatSharp/IrcClient.cs @@ -169,7 +169,7 @@ namespace ChatSharp // List of supported capabilities Capabilities.AddRange(new string[] { "server-time", "multi-prefix", "cap-notify", "znc.in/server-time", "znc.in/server-time-iso", - "account-notify" + "account-notify", "chghost" }); IsNegotiatingCapabilities = false;