]> gitweb.pimeys.fr Git - bots/basile.git/blobdiff - basile.py
Meilleure gestion de la blacklist
[bots/basile.git] / basile.py
index 66dab704126a61c3198c55baa7b18b438d0df4f2..c71ec0e033f1a0f5c9d432470c7b7703f7ba9889 100755 (executable)
--- a/basile.py
+++ b/basile.py
@@ -56,14 +56,15 @@ def log(serveur, channel, auteur=None, message=None):
 
 def ignore_event(serv, ev):
     """Retourne ``True`` si il faut ignorer cet évènement."""
-    for (blackmask, exceptmask) in config.blacklisted_masks:
+    for (blackmask, exceptlist) in config.blacklisted_masks:
         usermask = ev.source()
-        if exceptmask is None:
-            exceptit = False
-        else:
-            exceptit = bool(irclib.mask_matches(usermask, exceptmask))
         blackit = bool(irclib.mask_matches(usermask, blackmask))
-        return blackit and not exceptit
+        exceptit = any([bool(irclib.mask_matches(usermask, exceptmask)) for exceptmask in exceptlist])
+        if exceptit: # Il est exempté
+            return False
+        else:
+            if blackit: # Il n'est pas exempté et matche la blacklist
+                return True
 
 def regex_join(liste, avant=u".*(?:^| )", apres=u"(?:$|\.| |,|;).*"):
     """Fabrique une regexp à partir d'une liste d'éléments à matcher."""