private bool CheckAndTimeoutSpam(WinterBot bot, TwitchUser user, string text) { if (user.IsSubscriber) { return(false); } if (String.IsNullOrWhiteSpace(m_clearMsg)) { return(false); } if (text.ToLower().Contains(m_clearMsg)) { if (m_spamTimeout == null) { bot.Ban(user); } else { bot.Timeout(user, (int)m_spamTimeout); } return(true); } return(false); }
public void Purge(WinterBot sender, TwitchUser user, string c, string value) { var cmd = value.ParseArguments(sender); int time = cmd.GetIntFlag("time", 0); value = cmd.GetString(); if (string.IsNullOrWhiteSpace(value)) { return; } value = value.ToLower(); var users = from msg in m_lastMsgs where msg != null && msg.Item2 != null where msg.Item2.Contains(value) select msg.Item1; foreach (var usr in users.Distinct()) { sender.Timeout(usr, time > 0 ? time : 1); } }
private void ClearChat(WinterBot sender, TwitchUser user, string clearReason, int minTimeout=1) { bool shouldMessage = !string.IsNullOrEmpty(clearReason); var now = DateTime.Now; TimeoutCount timeout; if (!m_timeouts.TryGetValue(user, out timeout)) { timeout = m_timeouts[user] = new TimeoutCount(now); } else { shouldMessage &= (DateTime.Now > timeout.LastTimeout) && (DateTime.Now - timeout.LastTimeout).TotalMinutes > 60; timeout.Count = GetEffectiveCount(timeout) + 1; } timeout.LastTimeout = now; if (!m_chatOptions.ShouldTimeout(user)) timeout.Count = 1; if (minTimeout < 1) minTimeout = 1; int duration = 0; switch (timeout.Count) { case 1: case 2: duration = 1; break; case 3: shouldMessage = !string.IsNullOrEmpty(clearReason); duration = 5 * 60; break; case 4: shouldMessage = !string.IsNullOrEmpty(clearReason); duration = 10 * 60; break; case 5: shouldMessage = !string.IsNullOrEmpty(clearReason); duration = 8 * 60 * 60; break; } if (duration < minTimeout) duration = minTimeout; if (shouldMessage) { if (duration == 1) sender.Send(MessageType.Timeout, Importance.Med, "{0}: {1} (This is not a timeout.)", user.Name, clearReason); else if (duration < 60) sender.Send(MessageType.Timeout, Importance.High, "{0}: {1}", user.Name, clearReason); else if (duration < 3600) sender.Send(MessageType.Timeout, Importance.High, "{0}: {1} ({2} minute timeout.)", user.Name, clearReason, duration / 60); else sender.Send(MessageType.Timeout, Importance.High, "{0}: {1} ({2} hour timeout.)", user.Name, clearReason, duration / 3600); } sender.Timeout(user, duration); timeout.LastTimeout = now.AddSeconds(duration); }
private bool CheckAndTimeoutSpam(WinterBot bot, TwitchUser user, string text) { if (user.IsSubscriber) return false; if (String.IsNullOrWhiteSpace(m_clearMsg)) return false; if (text.ToLower().Contains(m_clearMsg)) { if (m_spamTimeout == null) bot.Ban(user); else bot.Timeout(user, (int)m_spamTimeout); return true; } return false; }
public void Purge(WinterBot sender, TwitchUser user, string c, string value) { var cmd = value.ParseArguments(sender); int time = cmd.GetIntFlag("time", 0); value = cmd.GetString(); if (string.IsNullOrWhiteSpace(value)) return; value = value.ToLower(); var users = from msg in m_lastMsgs where msg != null && msg.Item2 != null where msg.Item2.Contains(value) select msg.Item1; foreach (var usr in users.Distinct()) sender.Timeout(usr, time > 0 ? time : 1); }
private void ClearChat(WinterBot sender, TwitchUser user, string clearReason) { bool shouldMessage = !string.IsNullOrEmpty(clearReason); var now = DateTime.Now; TimeoutCount timeout; if (!m_timeouts.TryGetValue(user, out timeout)) { timeout = m_timeouts[user] = new TimeoutCount(now); } else { shouldMessage &= (DateTime.Now > timeout.LastTimeout) && (DateTime.Now - timeout.LastTimeout).TotalMinutes > 60; int curr = timeout.Count; int diff = (int)(now - timeout.LastTimeout).TotalMinutes / 15; if (diff > 0) curr -= diff; if (curr < 0) curr = 0; timeout.Count = curr + 1; } timeout.LastTimeout = now; if (!m_chatOptions.ShouldTimeout(user)) timeout.Count = 1; int duration = 0; switch (timeout.Count) { case 1: case 2: if (shouldMessage) sender.Send(MessageType.Timeout, "{0}: {1} (This is not a timeout.)", user.Name, clearReason); sender.ClearChat(user); break; case 3: duration = 5; sender.Send(MessageType.Timeout, "{0}: {1} ({2} minute timeout.)", user.Name, clearReason, duration); sender.Timeout(user, duration * 60); timeout.LastTimeout = now.AddMinutes(duration); break; case 4: duration = 10; sender.Send(MessageType.Timeout, "{0}: {1} ({2} minute timeout.)", user.Name, clearReason, duration); sender.Timeout(user, duration * 60); timeout.LastTimeout = now.AddMinutes(duration); break; default: Debug.Assert(timeout.Count > 0); sender.Send(MessageType.Timeout, "{0}: {1} (8 hour timeout.)", user.Name, clearReason); sender.Timeout(user, 8 * 60 * 60); timeout.LastTimeout = now.AddHours(8); break; } }
private void ClearChat(WinterBot sender, TwitchUser user, string clearReason, int minTimeout = 1) { bool shouldMessage = !string.IsNullOrEmpty(clearReason); var now = DateTime.Now; TimeoutCount timeout; if (!m_timeouts.TryGetValue(user, out timeout)) { timeout = m_timeouts[user] = new TimeoutCount(now); } else { shouldMessage &= (DateTime.Now > timeout.LastTimeout) && (DateTime.Now - timeout.LastTimeout).TotalMinutes > 60; timeout.Count = GetEffectiveCount(timeout) + 1; } timeout.LastTimeout = now; if (!m_chatOptions.ShouldTimeout(user)) { timeout.Count = 1; } if (minTimeout < 1) { minTimeout = 1; } int duration = 0; switch (timeout.Count) { case 1: case 2: duration = 1; break; case 3: shouldMessage = !string.IsNullOrEmpty(clearReason); duration = 5 * 60; break; case 4: shouldMessage = !string.IsNullOrEmpty(clearReason); duration = 10 * 60; break; case 5: shouldMessage = !string.IsNullOrEmpty(clearReason); duration = 8 * 60 * 60; break; } if (duration < minTimeout) { duration = minTimeout; } if (shouldMessage) { if (duration == 1) { sender.Send(MessageType.Timeout, Importance.Med, "{0}: {1} (This is not a timeout.)", user.Name, clearReason); } else if (duration < 60) { sender.Send(MessageType.Timeout, Importance.High, "{0}: {1}", user.Name, clearReason); } else if (duration < 3600) { sender.Send(MessageType.Timeout, Importance.High, "{0}: {1} ({2} minute timeout.)", user.Name, clearReason, duration / 60); } else { sender.Send(MessageType.Timeout, Importance.High, "{0}: {1} ({2} hour timeout.)", user.Name, clearReason, duration / 3600); } } sender.Timeout(user, duration); timeout.LastTimeout = now.AddSeconds(duration); }
public void Purge(WinterBot sender, TwitchUser user, string cmd, string value) { value = value.Trim().ToLower(); if (string.IsNullOrWhiteSpace(value)) return; var users = from msg in m_lastMsgs where msg != null && msg.Item2 != null where msg.Item2.Contains(value) select msg.Item1; foreach (var usr in users.Distinct()) sender.Timeout(usr, 1); }