public void CustomUpdate() { coroutineManager.Interval(); if (!initialized) { return; } if (!twitchClient.Connected) { Connect(); } else if (twitchClient.Available > 0) { string rawLine = reader.ReadLine(); if (rawLine == "PING :tmi.twitch.tv") { SendRawMessage("PONG :tmi.twitch.tv"); } else if (rawLine.Contains("PRIVMSG")) { TwitchMessage user = TwitchMessage.GetTwitchMessage(rawLine); string username = user.display_name; //GetUsername(rawLine); string extractedMessage = user.message; //GetExtractedMessage(rawLine); bool isAction = false; if (extractedMessage.StartsWith("\u0001")) { extractedMessage = extractedMessage.Replace("\u0001", ""); extractedMessage = extractedMessage.ReplaceFirst("ACTION ", ""); isAction = true; } user.message = extractedMessage; messagesToBeAdded.Enqueue(user); } else if (rawLine.Contains("CLEARCHAT")) { int start = rawLine.IndexOf(":", rawLine.IndexOf("CLEARCHAT")) + 1; int stop = rawLine.IndexOf(" ", start); string user = rawLine.Substring(start, rawLine.Length - start); Font f = font; f = new Font(f, FontStyle.Strikeout); foreach (TwitchUserMessage m in currentChatMessages) { if (m.twitchMessage.display_name.ToLower() == user.ToLower()) { m.Font = f; } } } } if (messagesToBeAdded.Count > 0) { ProcessMessage(messagesToBeAdded.Dequeue()); } }
public void CustomUpdate() { coroutineManager.Interval(); if (!initialized) { return; } if (!twitchClient.Connected) { Connect(); } else if (twitchClient.Available > 0) { string rawLine = reader.ReadLine(); if (rawLine == "PING :tmi.twitch.tv") { SendRawMessage("PONG :tmi.twitch.tv"); } else if (rawLine.Contains("PRIVMSG")) { TwitchMessage user = TwitchMessage.GetTwitchMessage(rawLine); string username = user.display_name; //GetUsername(rawLine); string extractedMessage = user.message; //GetExtractedMessage(rawLine); bool isAction = false; if (extractedMessage.StartsWith("\u0001")) { extractedMessage = extractedMessage.Replace("\u0001", ""); extractedMessage = extractedMessage.ReplaceFirst("ACTION ", ""); isAction = true; } user.message = extractedMessage; user.isAction = isAction; messagesToBeAdded.Enqueue(user); } else if (rawLine.Contains("CLEARCHAT")) { int start = rawLine.IndexOf(":", rawLine.IndexOf("CLEARCHAT")) + 1; int stop = rawLine.IndexOf(" ", start); string user = rawLine.Substring(start, rawLine.Length - start); Font f = font; f = new Font(f, FontStyle.Strikeout); foreach (MessageControl m in currentChatMessages) { if (m is TwitchUserMessage u) { if (u.twitchMessage.display_name.ToLower() == user.ToLower()) { u.Font = f; u.ForeColor = Color.Gray; u.DrawContent(u.CreateGraphics()); } } } } else if (rawLine.Contains("USERNOTICE")) { //To be added: notifications int start = rawLine.IndexOf("system-msg=") + "system-msg=".Length; int stop = rawLine.IndexOf(";tmi") - 1; string theString = rawLine.Substring(start, stop - start); theString.Replace("\\s", " "); MessageControl m = new HighlightedNotification(theString, panelBorder, border, Width - 2 * border); currentChatMessages.Add(m); m.Font = font; m.ForeColor = textColor; m.BackColor = backColor; Controls.Add(m); Application.DoEvents(); m.Location = new Point(-m.Width, Height - m.Size.Height - 50 - (richTextBox1.Visible ? richTextBox1.Size.Height : 0)); coroutineManager.StartLateCoroutine(moveLabels(m)); } } if (messagesToBeAdded.Count > 0) { ProcessMessage(messagesToBeAdded.Dequeue()); } }