Пример #1
0
        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);
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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);
        }
Пример #4
0
        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;
        }
Пример #5
0
        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);
        }
Пример #6
0
        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;
            }
        }
Пример #7
0
        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);
        }
Пример #8
0
        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);
        }