private static void ProcessPrivateMessage(string from, string to, string content) { Task.Factory.StartNew(() => { try { if (from.Equals(BotName, StringComparison.OrdinalIgnoreCase)) { return; } var privateMessage = new PrivateMessage(from, WebUtility.HtmlDecode(content)); var handled = false; foreach (var sprocket in Container.Sprockets) { if (sprocket.CanHandle(privateMessage)) { Logger.Info(string.Format("Message received from: '{0}' > '{1}'", from, content)); IncrementSprocketUsage(sprocket.Name); sprocket.Handle(privateMessage, JabbRClient); handled = true; break; } } if (!handled) { JabbRClient.PrivateReply(privateMessage.From, "I don't understand that command."); } } catch (Exception ex) { var exception = ex.GetBaseException(); Logger.ErrorException("An error occured while processing a private message.", ex); } }); }