]> gitweb.pimeys.fr Git - bots/parrot.git/commitdiff
On peut demander à afficher le contexte des quotes sur le channel
authorVincent Le Gallic <legallic@crans.org>
Sat, 12 Mar 2016 12:28:24 +0000 (13:28 +0100)
committerVincent Le Gallic <legallic@crans.org>
Sat, 12 Mar 2016 12:28:24 +0000 (13:28 +0100)
config.py
parrot.py
quotes.py

index b95cb2d9b9ad0f7a53fae9ef5c3c50c803ae89e9..606507d6e29f1167cc64f728c014aa3db0c81864 100644 (file)
--- a/config.py
+++ b/config.py
@@ -112,6 +112,7 @@ helpmsg_before = u"""Commandes accessibles sur un channel :
 !author-reg <chose> : afficher les auteurs qui matchent la regexp ^<chose>$
 !from/!from-reg <chose> : fait la même recher puis sélectionne au hasard une quote d'un des auteurs trouvés
 !search/!search-reg <chose> : afficher une quote contenant <chose>/matchant ^<chose>$
+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)
 """
index ae7adb91b6ac2a1051d477e32c5478715d787cbe..8ce0673d5d315ae5a62b476be3b6b7cd714346e1 100755 (executable)
--- 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,))
 
index 85d290e5559e35cc1e533bc70ee9d2dd717ee747..f68b34387596c77692f31648c31853c89d8c9b7a 100644 (file)
--- 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. """