private static void WriteConnection_MessageReceived(object sender, MessageEventArgs e) { var msg = e.Message; if (msg.Command == "NOTICE") { TwitchChannel.GetChannel((msg.Middle ?? "").TrimStart('#')).Process(c => { string tmp; if (msg.Tags.TryGetValue("msg-id", out tmp) && tmp == "timeout_success") { return; } if (AppSettings.Rainbow && tmp == "color_changed") { return; } var message = new Message(msg.Params, null, true) { HighlightTab = false }; c.AddMessage(message); }); } else if (msg.Command == "USERSTATE") { string value; if (msg.Tags.TryGetValue("mod", out value)) { TwitchChannel.GetChannel((msg.Middle ?? "").TrimStart('#')) .Process(c => { c.IsMod = value == "1"; }); } if (msg.Tags.TryGetValue("badges", out value)) { if (value.Contains("vip")) { TwitchChannel.GetChannel((msg.Middle ?? "").TrimStart('#')) .Process(c => { c.IsVip = true; }); } } } }
private static void ReadConnection_MessageReceived(object sender, MessageEventArgs e) { var msg = e.Message; if (msg.Command == "PRIVMSG") { TwitchChannel.GetChannel(msg.Middle.TrimStart('#')).Process(c => { if (msg.PrefixUser == "twitchnotify") { c.AddMessage(new Message(msg.Params ?? "", HSLColor.Gray, true) { HighlightType = HighlightType.Resub }); } else { // check if ignore keyword is triggered if (AppSettings.IgnoredKeywordsRegex == null || !AppSettings.IgnoredKeywordsRegex.IsMatch(e.Message.Params)) { var message = new Message(msg, c); // check if user is on the ignore list if (AppSettings.EnableTwitchUserIgnores && IsIgnoredUser(message.Username)) { switch (AppSettings.ChatShowIgnoredUsersMessages) { case 1: if (!c.IsModOrBroadcaster) { return; } break; case 2: if (!c.IsBroadcaster) { return; } break; default: return; } } { c.Users[message.Username.ToUpper()] = message.DisplayName; if (message.HasAnyHighlightType(HighlightType.Highlighted)) { var mentionMessage = new Message(msg, c, enablePingSound: false, includeChannel: true) { HighlightType = HighlightType.None }; TwitchChannel.MentionsChannel.AddMessage(mentionMessage); } c.AddMessage(message); } } } }); } else if (msg.Command == "CLEARCHAT") { var channel = msg.Middle; var user = msg.Params; string reason; msg.Tags.TryGetValue("ban-reason", out reason); string _duration; var duration = 0; if (msg.Tags.TryGetValue("ban-duration", out _duration)) { int.TryParse(_duration, out duration); } TwitchChannel.GetChannel((msg.Middle ?? "").TrimStart('#')).Process(c => c.ClearChat(user, reason, duration)); //} } else if (msg.Command == "ROOMSTATE") { TwitchChannel.GetChannel((msg.Middle ?? "").TrimStart('#')).Process(c => { var state = c.RoomState; string value; if (msg.Tags.TryGetValue("emote-only", out value)) { if (value == "1") { state |= RoomState.EmoteOnly; } else { state &= ~RoomState.EmoteOnly; } } if (msg.Tags.TryGetValue("subs-only", out value)) { if (value == "1") { state |= RoomState.SubOnly; } else { state &= ~RoomState.SubOnly; } } if (msg.Tags.TryGetValue("slow", out value)) { if (value == "0") { state &= ~RoomState.SlowMode; } else { int time; if (!int.TryParse(value, out time)) { time = -1; } c.SlowModeTime = time; state |= RoomState.SlowMode; } } if (msg.Tags.TryGetValue("r9k", out value)) { if (value == "1") { state |= RoomState.R9k; } else { state &= ~RoomState.R9k; } } //if (e.Data.Tags.TryGetValue("broadcaster-lang", out value)) c.RoomState = state; }); } else if (msg.Command == "USERSTATE") { string value; if (msg.Tags.TryGetValue("mod", out value)) { TwitchChannel.GetChannel((msg.Middle ?? "").TrimStart('#')).Process(c => c.IsMod = value == "1"); } } else if (msg.Command == "WHISPER") { TwitchChannel.WhisperChannel.AddMessage(new Message(msg, TwitchChannel.WhisperChannel, true, false, isReceivedWhisper: true)); LastReceivedWhisperUser = msg.PrefixUser; if (AppSettings.ChatEnableInlineWhispers) { var inlineMessage = new Message(msg, TwitchChannel.WhisperChannel, true, false, true) { HighlightTab = false, HighlightType = HighlightType.Whisper }; foreach (var channel in TwitchChannel.Channels) { channel.AddMessage(inlineMessage); } } } else if (msg.Command == "USERNOTICE") { string sysMsg; msg.Tags.TryGetValue("system-msg", out sysMsg); TwitchChannel.GetChannel((msg.Middle ?? "").TrimStart('#')).Process(c => { try { var sysMessage = new Message(sysMsg, HSLColor.Gray, true) { HighlightType = HighlightType.Resub }; c.AddMessage(sysMessage); if (!string.IsNullOrEmpty(msg.Params)) { var message = new Message(msg, c) { HighlightType = HighlightType.Resub }; c.AddMessage(message); } } catch { } }); } }