From 1c3064ae51849a028ac4d0b4c05af0c7df5ea4d9 Mon Sep 17 00:00:00 2001 From: Vincent Le Gallic Date: Sat, 12 Mar 2016 14:41:51 +0100 Subject: [PATCH] !context-search recherche aussi dans les contextes --- config.py | 5 +++++ parrot.py | 5 +++++ quotes.py | 5 +++-- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/config.py b/config.py index 606507d..23aa3f5 100644 --- a/config.py +++ b/config.py @@ -112,9 +112,14 @@ helpmsg_before = u"""Commandes accessibles sur un channel : !author-reg : afficher les auteurs qui matchent la regexp ^$ !from/!from-reg : fait la même recher puis sélectionne au hasard une quote d'un des auteurs trouvés !search/!search-reg : afficher une quote contenant /matchant ^$ + 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 diff --git a/parrot.py b/parrot.py index e9f4637..955f3f7 100755 --- 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)) diff --git a/quotes.py b/quotes.py index 0dcdabb..7391cf8 100644 --- 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: -- 2.39.2