// Process a given message and pass it down the correct channels private void OnChatMsg(TwitchIRC.TwitchMessage message) { var cmd = message.Message.Split(' '); var nickname = cmd[0].Split('!')[0].Substring(1); var mode = cmd[1]; var channel = cmd[2].Substring(1); var len = cmd[0].Length + cmd[1].Length + cmd[2].Length + 4; var chat = message.Message.Substring(len); switch (mode) { case "NOTICE": // Compatability with real Twitch System messages if (nickname == "tmi.twitch.tv") { nickname = "Twitch"; if (chat.StartsWith("Error")) { channel = "System-Red"; } else if (chat == "Login unsuccessful") { channel = "System-Red"; } } // Convert Notice to Name Color switch (channel) { case "System-Green": AddMsg(nickname, TwitchIRC.ColorToHex(new Color(0f, 1f, 0f)), chat); break; case "System-Red": AddMsg(nickname, TwitchIRC.ColorToHex(new Color(1f, 0f, 0f)), chat); break; case "System-Blue": AddMsg(nickname, TwitchIRC.ColorToHex(new Color(0f, 0.4f, 1f)), chat); break; case "System-Yellow": AddMsg(nickname, TwitchIRC.ColorToHex(new Color(1f, 1f, 0f)), chat); break; case "System-Purple": AddMsg(nickname, TwitchIRC.ColorToHex(new Color(1f, 0f, 1f)), chat); break; default: AddMsg(nickname, TwitchIRC.ColorToHex(new Color(1f, 1f, 1f)), chat); break; } break; case "PRIVMSG": AddMsg(FirstLetterToUpper(nickname), TwitchIRC.GetUserColor(nickname), chat, message.Emotes); PlayMessageSound(); break; } }