private static void OnRawMessage(object o, Events.RawMessageEventArgs args) { var message = args.Message; if (message.Replace("\0", "").Replace("\n", "").Replace("\r", "").Trim().Length <= 0) { return; } // Console.WriteLine(message.Trim()); }
public void ParseRawMessage(object o, Events.RawMessageEventArgs args) { var message = args.Message; if (message[0] != ':') { var splitMessage = message.Split(new [] { ':' }, 2); // ReSharper disable once InvertIf if (splitMessage[0].Contains("PING")) { args.Connection.Send("PONG :" + splitMessage[1]); args.Connection.pinged = true; } if (splitMessage[0].StartsWith("AUTHENTICATE")) { if (splitMessage[0] == "AUTHENTICATE +") { _authInProgress = true; } } } else { var param = new List <string>(); message = message.Remove(0, 1); var meta = message.Split(new [] { ':' }, 2)[0]; var splitMeta = meta.Split(new [] { ' ' }, 4); param.AddRange(meta.Split(' ')); param.Add(message.Split(new [] { ':' }, 2)[1]); var actor = splitMeta[0]; var action = splitMeta[1]; var target = splitMeta[2]; var remainder = splitMeta.Length > 3 ? splitMeta[3] : ""; if (Regex.IsMatch(action, @"^\d+$")) { // is a numeric ParseNumeric(message, remainder, action, actor, target); } else { // Not a numeric ParseNonNumeric(message, remainder, action, actor, target); } } }