From: Vincent Le Gallic Date: Sat, 12 Mar 2016 12:28:24 +0000 (+0100) Subject: On peut demander à afficher le contexte des quotes sur le channel X-Git-Url: http://gitweb.pimeys.fr/?p=bots%2Fparrot.git;a=commitdiff_plain;h=96f8fe13b9dbcab83f3123b37bc620c562a1e214 On peut demander à afficher le contexte des quotes sur le channel --- diff --git a/config.py b/config.py index b95cb2d..606507d 100644 --- a/config.py +++ b/config.py @@ -112,6 +112,7 @@ helpmsg_before = u"""Commandes accessibles sur un channel : !author-reg : afficher les auteurs qui matchent la regexp ^$ !from/!from-reg : fait la même recher puis sélectionne au hasard une quote d'un des auteurs trouvés !search/!search-reg : afficher une quote contenant /matchant ^$ +Toutes les !commandes peuvent être précédée de context- pour afficher le contexte des quotes trouvées. (!context-quote, …) Parrot: display -> affiche l'url où est disponible le dernier dump des quotes. Parrot: dump (cf HELP en query) """ diff --git a/parrot.py b/parrot.py index ae7adb9..8ce0673 100755 --- a/parrot.py +++ b/parrot.py @@ -439,10 +439,17 @@ class Parrot(ircbot.SingleServerIRCBot): self.quotedb.save() else: serv.privmsg(canal, (u"%s: Je le savais déjà." % (auteur,)).encode("utf-8")) + # Whou, attention, hack dégueu + # on enlève context- au début des !commands si il y est, + # et on passe à True le paramètre show_context pour s'en souvenir + show_context = False + if message.startswith(u"!context-"): + show_context = True + message = u"!" + message[9:] if message.startswith(u"!quote"): if message.strip() == u"!quote": q = self.quotedb.random() - serv.privmsg(canal, str(q)) + serv.privmsg(canal, q.display(show_context)) elif message.startswith("!quote "): author = message[7:].strip() try: @@ -450,7 +457,7 @@ class Parrot(ircbot.SingleServerIRCBot): except IndexError: serv.privmsg(canal, (u"Pas de quote de %s en mémoire." % author).encode("utf-8")) return - serv.privmsg(canal, str(q)) + serv.privmsg(canal, q.display(show_context)) elif message.startswith(u"!author") or message.startswith(u"!from"): words = message.split() cmd = words[0].lstrip("!") @@ -467,7 +474,7 @@ class Parrot(ircbot.SingleServerIRCBot): elif cmd.startswith("from"): quotes = sum([self.quotedb.quotesfrom(a) for a in authors], []) q = random.choice(quotes) - serv.privmsg(canal, str(q)) + serv.privmsg(canal, q.display(show_context)) elif message.startswith(u"!search"): words = message.split() cmd = words[0].lstrip("!") @@ -476,7 +483,7 @@ class Parrot(ircbot.SingleServerIRCBot): quotes = self.quotedb.search(inquote=search, regexp=regexp) if quotes: q = random.choice(quotes) - serv.privmsg(canal, str(q)) + serv.privmsg(canal, q.display(show_context)) else: serv.privmsg(canal, "%s: Pas de quotes correspondant à la recherche." % (auteur,)) diff --git a/quotes.py b/quotes.py index 85d290e..f68b343 100644 --- a/quotes.py +++ b/quotes.py @@ -63,6 +63,16 @@ class Quote(object): def __str__(self): return unicode(self).encode("utf-8") + def display(self, show_context=False): + """ + Retourne une chaîne contenant toujours la quote et l'auteur, + et le contexte ssi ``show_context = True``. + """ + s = config.quote_template % self.__dict__ + if show_context: + s = u"%s | %s" % (s, self.place) + return s.encode("utf-8") + def full_str(self): """ Retourne une chaîne représentant la totalité des infos de la quote, tout en étant parsable et human-readable. """