]> gitweb.pimeys.fr Git - bots/basile.git/blobdiff - basile.py
Correction de la réponse au kick
[bots/basile.git] / basile.py
index 6f306509a0d77cea48229c016d59be130ddec6af..3684c682d125e9a5d6fcc7db880d44e981eabc1e 100755 (executable)
--- a/basile.py
+++ b/basile.py
@@ -58,7 +58,7 @@ u"Si tu allais voir sur un autre chan si j'y suis ?",
 u"Permets-moi de te retourner le compliment.",
 u"Mais je ne te permets pas !"]
 
-config_gros=[u"gros"]
+config_gros=[u"gros",u"énorme",u"lourd"]
 
 config_buffer_fail_answers=["haha !","You type like you drive","encore un effort ;)"]
 
@@ -118,8 +118,8 @@ u"Mais j'ai rien demandé moi !"]
 config_bad_action_actions=[u"prend de la distance, par précaution…",u"part en courant",u"esquive"]
 
 config_good_action_triggers=[u"fait (des bisous|un calin) à",u"embrasse",u"caline",u"caresse"]
-config_good_ction_answers=[u"owi \o/",u"{}: c'est gentil ! ♡"]
-config_good_action_acions=[u"ronronne",u"est content"]
+config_good_action_answers=[u"owi \o/",u"c'est gentil ! ♡"]
+config_good_action_actions=[u"ronronne",u"est content"]
 
 config_bonjour_triggers=[u"(s|)(a|'|)lu(t|)",u"hello",u"pl(o|i)p",u"pr(ou|ü)t",u"bonjour",u"bonsoir",u"coucou"]
 config_bonjour_answers=[u"Salut {}",u"Hello {} :)",u"Bonjour {}",u"Hello {}",u"{}: hello",u"{}: bonjour"]
@@ -201,23 +201,22 @@ def login_NK(username,password,typ="bdd"):
     return json.loads(out),sock
 
 
-def is_something(chain,matches,avant=u".*(^| )",apres=u"($|\.| |,|;).*",case_sensitive=False,debug=False):
+def is_something(chain,matches,avant=u".*(?:^| )",apres=u"(?:$|\.| |,|;).*",case_sensitive=False,debug=False):
     if case_sensitive:
         chain=unicode(chain,"utf8")
     else:
         chain=unicode(chain,"utf8").lower()
     allmatches="("+"|".join(matches)+")"
     reg=(avant+allmatches+apres).lower()
-    if re.match(reg,chain):
-        return True
-    return False
+    o=re.match(reg,chain)
+    return o
 
 def is_insult(chain,debug=True):
-    return is_something(chain,config_insultes,avant=".*(^| |')")
+    return is_something(chain,config_insultes,avant=".*(?:^| |')")
 def is_not_insult(chain):
     chain=unicode(chain,"utf8")
     insult_regexp=u"("+u"|".join(config_insultes)+u")"
-    middle_regexp=u"(un(|e) ((putain|enfoiré) d(e |'))*|)(| super )( (gros|petit|grand|énorme) |)"
+    middle_regexp=u"(une? (?:(?:putain|enfoiré) d(?:e |'))*|)(?:| super )(?: (?:gros|petit|grand|énorme) |)"
     reg=".*pas %s%s.*"%(middle_regexp,insult_regexp)
     if re.match(reg,chain):
         return True
@@ -237,10 +236,10 @@ def is_tamere(chain):
     return is_something(chain,config_tamere_triggers)
 def is_bad_action_trigger(chain,pseudo):
     return is_something(chain,config_bad_action_triggers,avant=u"^",
-                            apres="( [a-z]*ment)? %s($|\.| |,|;).*"%(pseudo))
+                            apres="(?: [a-z]*ment)? %s($|\.| |,|;).*"%(pseudo))
 def is_good_action_trigger(chain,pseudo):
     return is_something(chain,config_good_action_triggers,avant=u"^",
-                            apres="( [a-z]*ment)? %s($|\.| |,|;).*"%(pseudo))
+                            apres="(?: [a-z]*ment)? %s($|\.| |,|;).*"%(pseudo))
 def is_pan(chain):
     return re.match(u"^(pan|bim|bang) .*$",unicode(chain,"utf8").lower().strip())
 
@@ -759,9 +758,10 @@ class Basile(ircbot.SingleServerIRCBot):
                     answer=random.choice(config_insultes_answers)
                     for ligne in answer.split("\n"):
                         serv.privmsg(canal,"%s: %s"%(auteur,ligne.encode("utf8")))
-            if is_gros(message) and not canal in self.quiet_channels:
+            gros_match=is_gros(message)
+            if gros_match and not canal in self.quiet_channels:
                 taille=get_filesize()
-                answer=u"Mais non, je ne suis pas gros, %sKo tout au plus…"%(taille)
+                answer=u"Mais non, je ne suis pas %s, %sKo tout au plus…"%(gros_match.groups()[0],taille)
                 serv.privmsg(canal,"%s: %s"%(auteur,answer.encode("utf8")))
             if is_tesla(message) and not canal in self.quiet_channels:
                 l1,l2=config_tesla_answers,config_tesla_actions
@@ -872,7 +872,15 @@ class Basile(ircbot.SingleServerIRCBot):
                 serv.action(channel,l2[i-n1].encode("utf8"))
             else:
                 serv.privmsg(channel,"%s: %s"%(auteur,l1[i].encode("utf8")))
-
+        if is_good_action_trigger(action,mypseudo) and not channel in self.quiet_channels:
+            l1,l2=config_good_action_answers,config_good_action_actions
+            n1,n2=len(l1),len(l2)
+            i=random.randrange(n1+n2)
+            if i>=n1:
+                serv.action(channel,l2[i-n1].encode("utf8"))
+            else:
+                serv.privmsg(channel,"%s: %s"%(auteur,l1[i].encode("utf8")))
+    
     def on_kick(self,serv,ev):
         auteur = irclib.nm_to_n(ev.source())
         channel = ev.target()
@@ -882,13 +890,13 @@ class Basile(ircbot.SingleServerIRCBot):
             log(self.serveur,"%s kické par %s (raison : %s)" %(victime,auteur,raison))
             time.sleep(2)
             serv.join(channel)
-            l1,l2=config_kick_actions,config_kick_answers
+            l1,l2=config_kick_answers,config_kick_actions
             n1,n2=len(l1),len(l2)
             i=random.randrange(n1+n2)
             if i>=n1:
-                serv.action(channel,l2[i-n1].encode("utf8"))
+                serv.action(channel,l2[i-n1].format(auteur).encode("utf8"))
             else:
-                serv.privmsg(channel,"%s: %s"%(auteur,l1[i].encode("utf8")))
+                serv.privmsg(channel,"%s: %s"%(auteur,l1[i].format(auteur).encode("utf8")))
 
     def _getnick(self):
         return self.serv.get_nickname()