public Main() { InitializeComponent(); Logger = new Logger(); CommandDispatcher = new CommandDispatcher(Logger); MessageHandler = new MessageHandler(Logger); Logger.MessageLogged += delegate(string message) { if (this.Log.TextLength > 0) { this.Log.AppendText("\n"); } this.Log.AppendText(message); this.Log.ScrollToCaret(); }; Application.ThreadException += delegate(object sender, ThreadExceptionEventArgs e) { this.Logger.Log("Unhandled Exception: " + e.Exception); }; NotifyIcon.Icon = Icon; // Command and Message Handlers foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) { foreach (var type in assembly.GetTypes()) { if (!type.IsClass) { continue; } if (type.IsAbstract) { continue; } // Command Handlers if (typeof(ICommandHandler).IsAssignableFrom(type)) { var constructorInfo = type.GetConstructor(new Type[0] { }); if (constructorInfo == null) { continue; } var commandHandler = constructorInfo.Invoke(null); CommandDispatcher.AddCommandHandler((ICommandHandler)commandHandler); } // Message Handlers if (typeof(IMessageSpanHandler).IsAssignableFrom(type)) { var constructorInfo = type.GetConstructor(new Type[0] { }); if (constructorInfo == null) { continue; } var messageSpanHandler = constructorInfo.Invoke(null); MessageHandler.AddSpanHandler((IMessageSpanHandler)messageSpanHandler); } } } // Skype Skype = new Skype(); if (!Skype.Client.IsRunning) { Skype.Client.Start(); } // this.MessageHandler.HandleMessage(x => Debug.Print(x), "http://redd.it/1dko1n"); // this.MessageHandler.HandleMessage(x => Debug.Print(x), "https://www.youtube.com/watch?v=psuRGfAaju4"); // this.MessageHandler.HandleMessage(x => Debug.Print(x), "http://youtu.be/1uV63nApaYA"); // this.MessageHandler.HandleMessage(x => Debug.Print(x), "http://pastebin.com/8jNskG2r"); // this.MessageHandler.HandleMessage(x => Debug.Print(x), "http://pastebin.com/8jNskG2rasdsad"); // this.MessageHandler.HandleMessage(x => Debug.Print(x), "http://goo.gl/jmzTY"); // this.MessageHandler.HandleMessage(x => Debug.Print(x), "http://vimeo.com/61930364#"); // this.MessageHandler.HandleMessage(x => Debug.Print(x), "https://twitter.com/garrynewman/status/360042767461789698"); // this.MessageHandler.HandleMessage(x => Debug.Print(x), "https://twitter.com/thronecast/status/548132192988442624/photo/1"); // this.MessageHandler.HandleMessage(x => Debug.Print(x), "3000€"); // this.MessageHandler.HandleMessage(x => Debug.Print(x), "£20"); // this.CommandDispatcher.HandleMessage(x => Debug.Print(x), "!w asdfasdf"); ConnectToSkype(); }