/// <summary> /// Disconnects with specified reason. /// </summary> /// <param name="reason">The reason.</param> internal void Disconnect(string reason = "") { foreach (Channel c in Channels) { ChannelBuffer.Push(new ChannelData( ) { Channel = c.Name, Key = c.GetKey( ) }); } settings.Save(this); if (!string.IsNullOrEmpty(reason)) { Raw(IrcCommands.Quit(reason)); } else { Raw(IrcCommands.Quit(Global.DefaultQuit)); } }