From: Vincent Le Gallic Date: Fri, 31 Jan 2014 00:47:28 +0000 (+0100) Subject: Modularité : module pour les erreurs X-Git-Url: http://gitweb.pimeys.fr/?a=commitdiff_plain;h=b8550821c2bb1e7e7524fc62c5a6989479f8015a;p=bots%2Fbasile.git Modularité : module pour les erreurs --- diff --git a/basile.py b/basile.py index 38f806b..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): @@ -200,7 +191,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 +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 @@ -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 @@ -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 diff --git a/errors.py b/errors.py new file mode 100644 index 0000000..97fdd6c --- /dev/null +++ b/errors.py @@ -0,0 +1,13 @@ +#!/usr/bin/python +# -*- coding:utf8 -*- + +""" Erreurs utilisables dans le code du bot """ + +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)