// Fires when a chat message is received from chat client public static void chatOnMessage(object sender, TwitchLib.TwitchChatClient.OnMessageReceivedArgs e) { if (e.ChatMessage.Message[0] != '!') { if (showRawIRC) { Console.ForegroundColor = ConsoleColor.Cyan; Common.message(string.Format("MESSAGE {0}", e.ChatMessage.RawIrcMessage)); } else { Common.message(string.Format("MESSAGE {0}: {1}", e.ChatMessage.DisplayName, e.ChatMessage.Message)); } } if (Common.Raffle != null && Common.Raffle.raffleIsActive()) { Common.Raffle.addEntry(e.ChatMessage.Username, e.ChatMessage.Message); } ChatFiltering.violatesProtections(e.ChatMessage.Username, Common.isSub(e), Common.isMod(e), e.ChatMessage.Message); if (Common.AhoyRewarder.isActive()) { Common.AhoyRewarder.processMessage(e); } processPotentialSub(e); Common.ChatMessageTracker.addMessage(e.ChatMessage); }
// Internal function to process a received sub and redirect stack to ChatSubs object utilizing chat message as identity private static void processPotentialSub(TwitchLib.TwitchChatClient.OnMessageReceivedArgs e) { if (e.ChatMessage.Subscriber && !Common.ChatSubs.Contains(e.ChatMessage.Username.ToLower())) { Common.ChatSubs.Add(e.ChatMessage.Username.ToLower()); } }
// Fires when a message is received from the raid instance chat client public static void raidOnMessage(object sender, TwitchLib.TwitchChatClient.OnMessageReceivedArgs e) { Common.other(string.Format("[RAID]MESSAGE {0}: {1}", e.ChatMessage.DisplayName, e.ChatMessage.Message)); if (Common.RaidInstance != null) { Common.RaidInstance.handleMessage(e); } }
// Determine if sender of message is moderator public static bool isMod(TwitchLib.TwitchChatClient.OnMessageReceivedArgs e) { TwitchLib.ChatMessage.UType UType = e.ChatMessage.UserType; if (Moderators.Contains(e.ChatMessage.Username.ToLower())) { return(true); } else { return(false); } }
// Determine if sender of chat message is a sub public static bool isSub(TwitchLib.TwitchChatClient.OnMessageReceivedArgs e) { TwitchLib.ChatMessage.UType UType = e.ChatMessage.UserType; if (UType == TwitchLib.ChatMessage.UType.Admin || UType == TwitchLib.ChatMessage.UType.GlobalModerator || UType == TwitchLib.ChatMessage.UType.Moderator || UType == TwitchLib.ChatMessage.UType.Staff || e.ChatMessage.Subscriber || Moderators.Contains(e.ChatMessage.Username.ToLower()) || e.ChatMessage.Username.ToLower() == "swiftyspiffy") { return(true); } else { return(false); } }
// Process message from event public void processMessage(TwitchLib.TwitchChatClient.OnMessageReceivedArgs e) { if (connectedMsgReceived) { if (e.ChatMessage.Message.ToLower().Contains("ahoy")) { if (!isFraud(e.ChatMessage.Username)) { if (first == null) { first = new ahoyReward(e.ChatMessage.Username, firstReward); WebCalls.addDoubloons(first.Username, first.Reward); Common.ChatClient.SendMessage(string.Format("/me rewarded {0} some doubloons ({1}) for the first Ahoy message! [auto] ", first.Username, first.Reward)); Common.relay(String.Format("[ahoy] First ahoy reward ({0} doubloons) awarded to: {1}", first.Reward, first.Username)); } else if (second == null) { second = new ahoyReward(e.ChatMessage.Username, secondReward); WebCalls.addDoubloons(second.Username, second.Reward); Common.ChatClient.SendMessage(string.Format("/me rewarded {0} some doubloons ({1}) for the second Ahoy message! [auto] ", second.Username, second.Reward)); Common.relay(String.Format("[ahoy] Second ahoy reward ({0} doubloons) awarded to: {1}", second.Reward, second.Username)); } else { third = new ahoyReward(e.ChatMessage.Username, thirdReward); WebCalls.addDoubloons(third.Username, third.Reward); Common.ChatClient.SendMessage(string.Format("/me rewarded {0} some doubloons ({1}) for the third Ahoy message! [auto] ", third.Username, third.Reward)); connectedMsgReceived = false; Common.relay(String.Format("[ahoy] Third ahoy reward ({0} doubloons) awarded to: {1}", third.Reward, third.Username)); } } } } else { if (e.ChatMessage.Username.ToLower() == "burke_listener" && e.ChatMessage.Message.ToLower().Contains("connected!") && !e.ChatMessage.Message.ToLower().Contains("disconnect")) { connectedMsgReceived = true; } } }
// Handles raid chat event public void handleMessage(TwitchLib.TwitchChatClient.OnMessageReceivedArgs message) { if (raidTimer.Enabled) { foreach (string word in message.ChatMessage.Message.ToLower().Split(' ')) { foreach (string gunnerWord in gunnerIdentifiers) { if (word == gunnerWord && !gunners.Contains(message.ChatMessage.Username.ToLower()) && message.ChatMessage.Username.ToLower() != "the_kraken_bot") { gunners.Add(message.ChatMessage.Username.ToLower()); } if (word == gunnerWord && !participants.Contains(message.ChatMessage.Username.ToLower()) && message.ChatMessage.Username.ToLower() != "the_kraken_bot") { participants.Add(message.ChatMessage.Username.ToLower()); } } foreach (string boarderWord in boarderIdentifiers) { if (word == boarderWord && !boarders.Contains(message.ChatMessage.Username.ToLower()) && message.ChatMessage.Username.ToLower() != "the_kraken_bot") { boarders.Add(message.ChatMessage.Username.ToLower()); } if (word == boarderWord && !participants.Contains(message.ChatMessage.Username.ToLower()) && message.ChatMessage.Username.ToLower() != "the_kraken_bot") { participants.Add(message.ChatMessage.Username.ToLower()); } } } } else { if (message.ChatMessage.Username.ToLower() == "burkeblack") { raidTimer.Start(); Common.RaidClient.SendMessage("burkeFlag burkeFlag The Black Crew, ATTACK!!!! burkeFlag burkeFlag", Common.DryRun); Common.ChatClient.SendMessage(string.Format("burkeFlag burkeFlag The attack has begun on {0}, get in there! http://twitch.tv/{0}", message.ChatMessage.Channel), Common.DryRun); } } }