]> gitweb.pimeys.fr Git - bots/basile.git/blobdiff - basile.py
on place la buffer_fail_regexp dans la config
[bots/basile.git] / basile.py
index 38f806b83ba257a75964f882a282128eb9cd76c9..123a94c35f7eeb06885cae6f1414340929f9aa4e 100755 (executable)
--- a/basile.py
+++ b/basile.py
@@ -27,10 +27,11 @@ import config
 import nk
 #: Module de réponse aux questions de base
 import isit
+#: Module définissant les erreurs
+import errors
 
 # la partie qui réfère au fichier lui-même est mieux ici
 # sinon on réfère la config et pas le fichier lui-même
-import os
 config.thisfile = os.path.realpath(__file__)
 
 def get_config_logfile(serveur):
@@ -69,24 +70,13 @@ def ignore_event(serv, ev):
                 return True
 
 
-
-      
-class UnicodeBotError(Exception):
-    """Erreur levée si quelqu'un fait du caca avec son encodage."""
-    pass
-
-class CrashError(Exception):
-    """Pour pouvoir faire crasher Basile, parce que ça a l'air drôle."""
-    def __init__(self, msg=""):
-        Exception.__init__(self, msg)
-
 def bot_unicode(chain):
     """Essaye de décoder ``chain`` en UTF-8.
-       Lève une py:class:`UnicodeBotError` en cas d'échec."""
+       Lève une py:class:`errors.UnicodeBotError` en cas d'échec."""
     try:
         return chain.decode("utf8")
     except UnicodeDecodeError as exc:
-        raise UnicodeBotError
+        raise errors.UnicodeBotError
 
 
 class Basile(ircbot.SingleServerIRCBot):
@@ -200,7 +190,7 @@ class Basile(ircbot.SingleServerIRCBot):
     def crash(self, who="nobody", chan="nowhere"):
         """Fait crasher le bot."""
         where = "en privé" if chan == "priv" else "sur le chan %s" % chan
-        raise CrashError((u"Crash demandé par %s %s" % (who, where)).encode("utf-8"))
+        raise errors.CrashError((u"Crash demandé par %s %s" % (who, where)).encode("utf-8"))
     
     ACTIONS = {
         "reload" : execute_reload,
@@ -243,7 +233,7 @@ class Basile(ircbot.SingleServerIRCBot):
         auteur = irclib.nm_to_n(ev.source())
         try:
             message = bot_unicode(message)
-        except UnicodeBotError:
+        except errors.UnicodeBotError:
             if config.utf8_trigger:
                 serv.privmsg(auteur, random.choice(config.utf8_fail_answers).encode("utf8"))
             return
@@ -314,7 +304,7 @@ class Basile(ircbot.SingleServerIRCBot):
             if auteur in self.ops:
                 if len(message) > 1:
                     if message[1] in self.chanlist:
-                        serv.privmsg(auteur, "Je suis déjà sur %s" % (message[1]))
+                        serv.privmsg(auteur, (u"Je suis déjà sur %s" % (message[1])).encode("utf-8"))
                     else:
                         serv.join(message[1])
                         self.chanlist.append(message[1])
@@ -490,7 +480,7 @@ class Basile(ircbot.SingleServerIRCBot):
         message = ev.arguments()[0]
         try:
             message = bot_unicode(message)
-        except UnicodeBotError:
+        except errors.UnicodeBotError:
             if config.utf8_trigger and not canal in self.quiet_channels:
                 serv.privmsg(canal, (u"%s: %s"% ( auteur, random.choice(config.utf8_fail_answers))).encode("utf8"))
             return
@@ -675,7 +665,7 @@ class Basile(ircbot.SingleServerIRCBot):
                     serv.action(canal, "sert un grand verre de jus de pomme à %s : tout le monde sait qu'il ne boit pas." % (auteur))
                 else:
                     serv.action(canal, "sert un verre de manzana à %s" % (auteur))
-            if re.match(u'^ *(.|§|!|/|/|:|)(w|b) [0-9]+$', message) and not canal in self.quiet_channels:
+            if re.match(config.buffer_fail_regexp, message, flags=re.UNICODE) and not canal in self.quiet_channels:
                 failanswers = config.buffer_fail_answers
                 answer = random.choice(failanswers)
                 serv.privmsg(canal, ("%s: %s"%(auteur,answer)).encode("utf8"))
@@ -705,7 +695,7 @@ class Basile(ircbot.SingleServerIRCBot):
         channel = ev.target()
         try:
             action = bot_unicode(action)
-        except UnicodeBotError:
+        except errors.UnicodeBotError:
             if config.utf8_trigger and not channel in self.quiet_channels:
                 serv.privmsg(channel, (u"%s: %s"%(auteur,random.choice(config.utf8_fail_answers))).encode("utf8"))
             return