!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)
"""
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:
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("!")
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("!")
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,))
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. """