]> gitweb.pimeys.fr Git - bots/basile.git/blobdiff - basile.py
Problèmes d'encodage sur la demande de KICK
[bots/basile.git] / basile.py
index 66dab704126a61c3198c55baa7b18b438d0df4f2..1e0c012902925047b29c89a3e686ced877555513 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."""
@@ -553,7 +554,7 @@ class Basile(ircbot.SingleServerIRCBot):
                 notunderstood = True
         elif cmd == u"kick":
             if auteur in self.overops and len(message) > 2:
-                serv.kick(message[1], message[2], " ".join(message[3:]))
+                serv.kick(message[1].encode("utf-8"), message[2].encode("utf-8"), " ".join(message[3:]).encode("utf-8"))
                 log(self.serveur, "priv", auteur, " ".join(message))
             elif len(message) <= 2:
                 serv.privmsg(auteur, "Syntaxe : KICK <channel> <pseudo> [<raison>]")