From 0de9145ebf6b4aa64ec77ed74af9f24d8d909c09 Mon Sep 17 00:00:00 2001 From: Ben Kurtovic Date: Wed, 24 Feb 2016 12:56:17 -0600 Subject: [PATCH] lta_monitor -> block_monitor; better recency detection --- commands/{lta_monitor.py => block_monitor.py} | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) rename commands/{lta_monitor.py => block_monitor.py} (90%) diff --git a/commands/lta_monitor.py b/commands/block_monitor.py similarity index 90% rename from commands/lta_monitor.py rename to commands/block_monitor.py index 16e800b..4155834 100644 --- a/commands/lta_monitor.py +++ b/commands/block_monitor.py @@ -21,13 +21,14 @@ # SOFTWARE. import re +from time import time from earwigbot.commands import Command from earwigbot.exceptions import APIError -class LTAMonitor(Command): - """Monitors for LTAs. No further information is available.""" - name = "lta_monitor" +class BlockMonitor(Command): + """Monitors for on-wiki blocked users joining a particular channel.""" + name = "block_monitor" hooks = ["join", "part"] def setup(self): @@ -38,8 +39,7 @@ class LTAMonitor(Command): except KeyError: self._monitor_chan = self._report_chan = None self.logger.warn("Cannot use without being properly configured") - self._recent = [] - self._recent_max = 10 + self._last = None def check(self, data): return (self._monitor_chan and self._report_chan and @@ -52,11 +52,12 @@ class LTAMonitor(Command): if not match: return ip = match.group(1) - if ip in self._recent: - return - self._recent.append(ip) - if len(self._recent) > self._recent_max: - self._recent.pop(0) + + if self._last and self._last[0] == ip: + if time() - self._last[1] < 60 * 5: + self._last = (ip, time()) + return + self._last = (ip, time()) block = self._get_block_for_ip(ip) if not block: