!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, …)
+(!context-search recherche aussi dans les contextes)
+
+Commandes pour lesquelles il faut highlight le bot :
Parrot: display -> affiche l'url où est disponible le dernier dump des quotes.
Parrot: dump (cf HELP en query)
+
"""
#: Message d'aide par défaut
regexp = cmd in ["search" + suffix for suffix in config.regex_suffixes]
search = u" ".join(words[1:])
quotes = self.quotedb.search(inquote=search, regexp=regexp)
+ # On recherche également sur le contexte si on est en !context-search
+ if show_context:
+ quotes += self.quotedb.search(place=search, regexp=regexp)
+ # Pour pas biaiser le choix aléatoire, on enlève les doublons
+ quotes = list(set(quotes))
if quotes:
q = random.choice(quotes)
serv.privmsg(canal, q.display(show_context))
""" Sort une quote aléatoire de ``author`` """
return random.choice(self.quotesfrom(author))
- def search(self, inquote=None, author=None, regexp=False):
+ def search(self, inquote=None, author=None, place=None, regexp=False):
"""
Fait une recherche dans les quotes.
C'est une conjonction de cas : on garde la quote si
``inquote`` matche dans le contenu
*et* si ``author`` matche l'auteur
+ *et* si ``place`` matche la place
Si ``regexp=True``, utilise directement les termes comme des regexp.
"""
- params = [inquote, author]
+ params = [inquote, author, place]
if regexp:
regexps = []
for param in params: