diff --git a/ChatSharp/ClientSettings.cs b/ChatSharp/ClientSettings.cs index 5036b46..7716874 100644 --- a/ChatSharp/ClientSettings.cs +++ b/ChatSharp/ClientSettings.cs @@ -11,6 +11,7 @@ namespace ChatSharp { WhoIsOnConnect = true; ModeOnJoin = true; + GenerateRandomNickIfRefused = true; } /// @@ -24,5 +25,9 @@ namespace ChatSharp /// IrcChannel.Mode will be null until the mode is explicitly requested. /// public bool ModeOnJoin { get; set; } + /// + /// If true, the library will generate a random nick with alphanumerical characters if it + /// encounters a NICK error. + public bool GenerateRandomNickIfRefused { get; set; } } } diff --git a/ChatSharp/Handlers/MessageHandlers.cs b/ChatSharp/Handlers/MessageHandlers.cs index e6851c8..b245d06 100644 --- a/ChatSharp/Handlers/MessageHandlers.cs +++ b/ChatSharp/Handlers/MessageHandlers.cs @@ -83,7 +83,7 @@ namespace ChatSharp.Handlers if (message.Command == "433") // Nick in use client.OnNickInUse(eventArgs); // else ... TODO - if (!eventArgs.DoNotHandle) + if (!eventArgs.DoNotHandle && client.Settings.GenerateRandomNickIfRefused) client.Nick(eventArgs.NewNick); } diff --git a/ChatSharp/IrcUser.cs b/ChatSharp/IrcUser.cs index f5a110e..6001636 100644 --- a/ChatSharp/IrcUser.cs +++ b/ChatSharp/IrcUser.cs @@ -20,7 +20,14 @@ namespace ChatSharp string[] mask = host.Split('@', '!'); Nick = mask[0]; User = mask[1]; - Hostname = mask[2]; + if (mask.Length <= 2) + { + Hostname = ""; + } + else + { + Hostname = mask[2]; + } } }