]> gitweb.pimeys.fr Git - bots/basile.git/blobdiff - basile.py
'fallait pas supprimer cette ligne...
[bots/basile.git] / basile.py
index 6314b9c0459f4b5dc6d3aee9b1cecb0b6ec44ae2..ec74b340372df5c70939cad6f28c4fe50a4e0c7f 100755 (executable)
--- a/basile.py
+++ b/basile.py
@@ -106,7 +106,7 @@ config_tamere_answers=[u"Laisse ma mère en dehors de ça !",
 u"Tu veux qu'on parle de ta soœur ?",
 u"Et la tienne ?",
 u"Ce que fait ma mère c'est comme ce que tu fais avec ta bite, ça nous regarde pas…",
-u"♩ J'ai vu ta mère sur chat rouleeeeeeette ♫"
+u"♩ J'ai vu ta mère sur chat rouleeeeeeette ♫",
 u"On avait dit \"pas les mamans\""]
 
 config_action_trigger=[u"(frappe|cogne|tape)(| sur)",u"(démolit|dégomme|fouette|agresse)",
@@ -117,7 +117,7 @@ u"Mais euh…",
 u"Mais j'ai rien demandé moi !"]
 config_action_actions=[u"prend de la distance, par précaution…",u"part en courant",u"esquive"]
 
-config_bonjour=[u"(s|)(a|'|)lu(t|)",u"hello",u"plop",u"plip",u"pr(ou|ü)t",u"bonjour",u"bonsoir"]
+config_bonjour=[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"]
 
 
@@ -233,7 +233,7 @@ def is_action_trigger(chain,pseudo):
     return is_something(chain,config_action_trigger,avant=u"^",
                             apres="( [a-z]*ment)? %s($|\.| |,|;).*"%(pseudo))
 def is_pan(chain):
-    return re.match(u"^(pan|bim|bang)$",unicode(chain,"utf8").lower().strip())
+    return re.match(u"^(pan|bim|bang) .*$",unicode(chain,"utf8").lower().strip())
 
 
       
@@ -299,6 +299,7 @@ class Basile(ircbot.SingleServerIRCBot):
         serv.nick(config_irc_pseudo)
     
     def on_welcome(self, serv, ev):
+        self.serv=serv # ça serv ira :)
         self.give_me_my_pseudo(serv)
         serv.privmsg("NickServ","identify %s"%(config_irc_password))
         log(self.serveur,"Connected")
@@ -383,7 +384,7 @@ class Basile(ircbot.SingleServerIRCBot):
                                                (auteur,fille,verbe)).encode("utf8"))
     def pourmoi(self, serv, message):
         """renvoie (False,lemessage) ou (True, le message amputé de "pseudo: ")"""
-        pseudo=serv.get_nickname()
+        pseudo=self.nick
         size=len(pseudo)
         if message[:size]==pseudo and len(message)>size and message[size]==":":
             return (True,message[size+1:].lstrip(" "))
@@ -678,6 +679,8 @@ class Basile(ircbot.SingleServerIRCBot):
                                            or auteur in self.overops):
                     serv.part(canal,message="Éjecté par %s"%(auteur))
                     log(self.serveur,canal,auteur,message+"[successful]")
+                    if canal in self.chanlist:
+                        self.chanlist.remove(canal)
                 else:
                     serv.privmsg(canal,"%s: Non, je reste !"%(auteur))
                     log(self.serveur,canal,auteur,message+"[failed]")
@@ -708,8 +711,8 @@ class Basile(ircbot.SingleServerIRCBot):
                     serv.nick(become)
                     log(self.serveur,canal,auteur,message+"[successful]")
     
-            elif cmd in ["coucou"] and not canal in self.quiet_channels:
-                serv.privmsg(canal,"%s: coucou"%(auteur))
+            if cmd in ["meur", "meurt","meurre","meurres"] and not canal in self.quiet_channels:
+                serv.privmsg(canal,'%s: Mourir, impératif, 2ème personne du singulier : "meurs" (de rien)'%(auteur))
             elif cmd in ["ping"] and not canal in self.quiet_channels:
                 serv.privmsg(canal,"%s: pong"%(auteur))
 
@@ -756,7 +759,7 @@ class Basile(ircbot.SingleServerIRCBot):
                 n1,n2=len(l1),len(l2)
                 i=random.randrange(n1+n2)
                 if i>=n1:
-                    serv.action(canal,l2[i-n1])
+                    serv.action(canal,l2[i-n1].encode("utf8"))
                 else:
                     serv.privmsg(canal,"%s: %s"%(auteur,l1[i].encode("utf8")))
             if is_tamere(message) and not canal in self.quiet_channels:
@@ -808,7 +811,7 @@ class Basile(ircbot.SingleServerIRCBot):
                 and re.match((u"^("+"|".join(config_bonjour)+").*").lower(),message.lower()) ):
                 answer=random.choice(config_bonjour_answers)
                 serv.privmsg(canal,answer.format(auteur).encode("utf8"))
-            if is_pan(message):
+            if is_pan(message) and not canal in self.quiet_channels:
                 serv.privmsg(canal,"%s: c'est pas sur moi qu'il faut tirer !"%(auteur))
         else:
             if message in ["!pain au chocolat","!chocolatine"] and not canal in self.quiet_channels:
@@ -824,7 +827,7 @@ class Basile(ircbot.SingleServerIRCBot):
                 serv.privmsg(canal,"%s: %s"%(auteur,answer))
             if not canal in self.quiet_channels:
                 self.try_tamere(serv,canal,auteur,message)
-                mypseudo=serv.get_nickname()
+                mypseudo=self.nick
                 if re.match((u"^("+u"|".join(config_bonjour)
                                   +u")( {}| all| tout le monde|(|à) tous)(\.|( |)!|)$"
                              ).format(mypseudo).lower(), message.strip().lower()):
@@ -850,7 +853,7 @@ class Basile(ircbot.SingleServerIRCBot):
             serv.privmsg(channel,
               "%s : Euh, tu fais de la merde avec ton encodage là, j'ai failli crasher…"%(auteur))
             return
-        mypseudo=serv.get_nickname()
+        mypseudo=self.nick
         
         if is_action_trigger(action,mypseudo) and not channel in self.quiet_channels:
             l1,l2=config_action_answers,config_action_actions
@@ -861,6 +864,20 @@ class Basile(ircbot.SingleServerIRCBot):
             else:
                 serv.privmsg(channel,"%s: %s"%(auteur,l1[i].encode("utf8")))
 
+    def on_kick(self,serv,ev):
+        auteur = irclib.nm_to_n(ev.source())
+        canal = ev.target()
+        victime = ev.arguments()[0]
+        raison = ev.arguments()[1]
+        if victime==self.nick:
+            time.sleep(1)
+            serv.join(canal)
+            print("%s kické par %s pour %s" %(victime,auteur,raison))
+    def _getnick(self):
+        return self.serv.get_nickname()
+    nick=property(_getnick)
+
+
 if __name__=="__main__":
     import sys
     if len(sys.argv)==1: