]> gitweb.pimeys.fr Git - bots/parrot.git/commitdiff
!context-search recherche aussi dans les contextes
authorVincent Le Gallic <legallic@crans.org>
Sat, 12 Mar 2016 13:41:51 +0000 (14:41 +0100)
committerVincent Le Gallic <legallic@crans.org>
Sat, 12 Mar 2016 13:41:51 +0000 (14:41 +0100)
config.py
parrot.py
quotes.py

index 606507d6e29f1167cc64f728c014aa3db0c81864..23aa3f56a74dcb9a8a503046d2c70248848944d0 100644 (file)
--- a/config.py
+++ b/config.py
@@ -112,9 +112,14 @@ 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, …)
+(!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
index e9f4637b626d1d20a99fa6618f6afa095ba948c0..955f3f7307399c725b33a397c75b4c097bbd517e 100755 (executable)
--- a/parrot.py
+++ b/parrot.py
@@ -481,6 +481,11 @@ class Parrot(ircbot.SingleServerIRCBot):
                 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))
index 0dcdabbe4411f08cf2f7ace767805b55fa6faede..7391cf81849b804be125f3cdcbfa6ae11161b3a2 100644 (file)
--- a/quotes.py
+++ b/quotes.py
@@ -184,16 +184,17 @@ class QuoteDB(object):
         """ 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: