]> gitweb.pimeys.fr Git - bots/parrot.git/blobdiff - parrot.py
On peut demander à afficher le contexte des quotes sur le channel
[bots/parrot.git] / parrot.py
index 1072896cb8f98b687d94283d0b8cf66864f670b6..8ce0673d5d315ae5a62b476be3b6b7cd714346e1 100755 (executable)
--- a/parrot.py
+++ b/parrot.py
@@ -425,22 +425,31 @@ class Parrot(ircbot.SingleServerIRCBot):
                 self.dump(asked_by=auteur, asked_where=canal)
             elif cmd in [u"restore"] and auteur in self.overops:
                 self.restore(asked_by=auteur, asked_where=canal)
-            elif cmd in [u"display"]:
+            elif cmd in [u"display", u"link", u"url"]:
                 self.serv.privmsg(canal, "%s: %s" % (auteur, config.quote_display_url.encode("utf-8")))
         else:
             # Vu que ce bot est prévu pour parser des quotes il va falloir bosser ici
             match = self.quote_pattern.match(message)
             if match:
                 d = match.groupdict()
-                if self.quotedb.store(d["author"], d["content"]):
+                # On n'autorise pas les gens à déclarer le quoter
+                d["quoter"] = auteur.decode("utf-8")
+                if self.quotedb.store(**d):
                     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"))
+            # 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:
@@ -448,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("!")
@@ -465,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("!")
@@ -474,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,))
 
@@ -500,7 +509,7 @@ class Parrot(ircbot.SingleServerIRCBot):
         victime = ev.arguments()[0]
         raison = ev.arguments()[1]
         if victime == self.nick:
-            log(self.serveur, "%s kické de %s par %s (raison : %s)" % (victime, channel, auteur, raison))
+            log(self.serveur, ("%s kické de %s par %s (raison : %s)" % (victime, channel, auteur, raison)).decode("utf-8"))
             time.sleep(2)
             serv.join(channel)