From 5dc10fbec825b8bd297a6cf6f3065242963968f0 Mon Sep 17 00:00:00 2001 From: Vincent Le Gallic Date: Sat, 1 Feb 2014 23:13:31 +0100 Subject: [PATCH] On rammasse les quotes et on le ressort sur demande --- parrot.py | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/parrot.py b/parrot.py index 6da8e7a..4ee3b23 100755 --- a/parrot.py +++ b/parrot.py @@ -23,7 +23,10 @@ from commands import getstatusoutput as ex import config #: Module définissant les erreurs import errors +#: Module de gestion des quotes +import quotes +quote_pattern = re.compile(config.quote_regexp) def get_config_logfile(serveur): """Renvoie le nom du fichier de log en fonction du ``serveur`` et de la config.""" @@ -80,6 +83,9 @@ class Parrot(ircbot.SingleServerIRCBot): self.stay_channels = config.stay_channels self.quiet_channels = config.quiet_channels self.last_perdu = 0 + + self.quotedb = quotes.QuoteDB() + self.quotedb.load() ### Utilitaires def _getnick(self): @@ -150,6 +156,9 @@ class Parrot(ircbot.SingleServerIRCBot): log(self.serveur, place, auteur, something + "%r" % params + ("[successful]" if success else "[failed]")) ### Gestion des quotes + def enregistrer(self, author, content, timestamp): + + quotes.save(self.quotelist, config.quote_file) ### Surcharge des events du Bot @@ -387,7 +396,26 @@ class Parrot(ircbot.SingleServerIRCBot): serv.privmsg(canal, "%s: pong" % (auteur)) else: # Vu que ce bot est prévu pour parser des quotes il va falloir bosser ici - pass + match = quote_pattern.match(message) + if match: + d = match.groupdict() + if self.quotedb.store(d["author"], d["content"]): + serv.privmsg(canal, (u"%s: Ce sera retenu, répété, amplifié" % (auteur,)).encode("utf-8")) + self.quotedb.save() + else: + serv.privmsg(canal, (u"%s: Je le savais déjà." % (auteur,)).encode("utf-8")) + if message.startswith(u"!quote"): + if message.strip() == u"!quote": + q = self.quotedb.random() + serv.privmsg(canal, str(q)) + elif message.startswith("!quote "): + author = message[7:].strip() + try: + q = self.quotedb.randomfrom(author) + except IndexError: + serv.privmsg(canal, (u"Pas de quote de %s en mémoire." % author).encode("utf-8")) + return + serv.privmsg(canal, str(q)) def on_action(self, serv, ev): """À la réception d'une action.""" -- 2.39.2