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):
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):
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,
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
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])
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":
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
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):
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"))
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