X-Git-Url: http://gitweb.pimeys.fr/?a=blobdiff_plain;ds=sidebyside;f=basile.py;h=00a1c39fc40eb9c87d95454f172662f6d5998c02;hb=b8550821c2bb1e7e7524fc62c5a6989479f8015a;hp=68c2bb35f3b47824de9806b570f8b813afc148f2;hpb=3f529d31ca1b5a73f9aee2603e41f74b48d3c0b3;p=bots%2Fbasile.git diff --git a/basile.py b/basile.py index 68c2bb3..00a1c39 100755 --- a/basile.py +++ b/basile.py @@ -27,6 +27,8 @@ 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 @@ -69,24 +71,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): @@ -197,10 +188,10 @@ class Basile(ircbot.SingleServerIRCBot): else: return True, u"Config reloaded" - def crash(self, chan="nowhere", who="nobody"): + 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 +234,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 @@ -373,7 +364,7 @@ class Basile(ircbot.SingleServerIRCBot): elif cmd == u"crash": if auteur in self.overops: log(self.serveur, "priv", auteur, " ".join(message) + "[successful]") - self.crash("priv", auteur) + self.crash(auteur, "priv") else: notunderstood = True elif cmd == u"reload": @@ -490,7 +481,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 @@ -513,7 +504,7 @@ class Basile(ircbot.SingleServerIRCBot): self.execute_something("reload", {"auteur" : auteur}, place=canal, auteur=auteur) elif cmd == u"crash": if auteur in self.overops: - self.crash(auteur, message) + self.crash(auteur, canal) elif cmd in [u"part", u"leave", u"dégage", u"va-t-en", u"tut'tiresailleurs,c'estmesgalets"]: if auteur in self.ops and (not (canal in self.stay_channels) or auteur in self.overops): @@ -705,7 +696,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