]> gitweb.pimeys.fr Git - bots/deconnaisseur.git/blobdiff - deconnaisseur.py
Tolérance sur les galets
[bots/deconnaisseur.git] / deconnaisseur.py
index 3cc3f4774d215a7c9ee6b06bdfd89e14469fd16a..6d971dfdfe125d61bf42d1516d5c88ba83f605a8 100755 (executable)
@@ -110,7 +110,7 @@ class Deconnaisseur(ircbot.SingleServerIRCBot):
         for c in self.chanlist:
             log(self.serveur,"JOIN %s"%(c))
             serv.join(c)
         for c in self.chanlist:
             log(self.serveur,"JOIN %s"%(c))
             serv.join(c)
-            self.update_activity(c,"") # la chaîne vide ne sera jamais un nom de bot et donc marchera toujours
+            self.update_activity(c,force=True)
         for c in self.play_channels:
             token=time.time()-3600
             self.play_status[c]=[0,token]
         for c in self.play_channels:
             token=time.time()-3600
             self.play_status[c]=[0,token]
@@ -199,8 +199,8 @@ class Deconnaisseur(ircbot.SingleServerIRCBot):
         try:
             test=bot_unicode(message)
         except UnicodeBotError:
         try:
             test=bot_unicode(message)
         except UnicodeBotError:
-            serv.privmsg(auteur,
-              "Euh, tu fais de la merde avec ton encodage là, j'ai failli crasher…")
+            if config.utf8_trigger:
+                serv.privmsg(auteur, random.choice(config.utf8_fail_answers).encode("utf8"))
             return
         message=message.split()
         cmd=message[0].lower()
             return
         message=message.split()
         cmd=message[0].lower()
@@ -217,7 +217,7 @@ class Deconnaisseur(ircbot.SingleServerIRCBot):
  NOPLAY     Passe un channel en mode "ne pas jouer"
  QUIET      Se taire sur un channel
  NOQUIET    Opposé de QUIET
  NOPLAY     Passe un channel en mode "ne pas jouer"
  QUIET      Se taire sur un channel
  NOQUIET    Opposé de QUIET
- RELOAD     Recharge lac config"""
+ RELOAD     Recharge la config"""
             helpmsg_overops="""
  SCORES {DEL|ADD|SUB}   Tu veux un dessin ?
  SAY        Fais envoyer un message sur un chan ou à une personne
             helpmsg_overops="""
  SCORES {DEL|ADD|SUB}   Tu veux un dessin ?
  SAY        Fais envoyer un message sur un chan ou à une personne
@@ -240,7 +240,7 @@ class Deconnaisseur(ircbot.SingleServerIRCBot):
                     else:
                         serv.join(message[1])
                         self.chanlist.append(message[1])
                     else:
                         serv.join(message[1])
                         self.chanlist.append(message[1])
-                        self.update_activity(message[1],"")
+                        self.update_activity(message[1],force=True)
                         serv.privmsg(auteur,"Channels : "+" ".join(self.chanlist))
                         log(self.serveur,"priv",auteur," ".join(message))
                 else:
                         serv.privmsg(auteur,"Channels : "+" ".join(self.chanlist))
                         log(self.serveur,"priv",auteur," ".join(message))
                 else:
@@ -444,13 +444,12 @@ class Deconnaisseur(ircbot.SingleServerIRCBot):
         auteur = irclib.nm_to_n(ev.source())
         canal = ev.target()
         message = ev.arguments()[0]
         auteur = irclib.nm_to_n(ev.source())
         canal = ev.target()
         message = ev.arguments()[0]
-        self.update_activity(canal,auteur)
+        self.update_activity(canal,auteur,message)
         try:
             test=bot_unicode(message)
         except UnicodeBotError:
         try:
             test=bot_unicode(message)
         except UnicodeBotError:
-            if not canal in self.quiet_channels:
-                serv.privmsg(canal,
-                   "%s: Euh, tu fais de la merde avec ton encodage là, j'ai failli crasher…"%(auteur))
+            if config.utf8_trigger and not canal in self.quiet_channels:
+                serv.privmsg(canal, (u"%s: %s"%(auteur,random.choice(config.utf8_fail_answers))).encode("utf8"))
             return
         tryother=False
         pour_moi,message=self.pourmoi(serv,message)
             return
         tryother=False
         pour_moi,message=self.pourmoi(serv,message)
@@ -492,7 +491,7 @@ class Deconnaisseur(ircbot.SingleServerIRCBot):
                 serv.privmsg(canal,"%s: coucou"%(auteur))
             elif cmd in ["ping"] and not canal in self.quiet_channels:
                 serv.privmsg(canal,"%s: pong"%(auteur))
                 serv.privmsg(canal,"%s: coucou"%(auteur))
             elif cmd in ["ping"] and not canal in self.quiet_channels:
                 serv.privmsg(canal,"%s: pong"%(auteur))
-            elif cmd in ["déconnaissance","deconnaissance","énigme","enigme","encore"]:
+            elif cmd in ["déconnaissance","deconnaissance","énigme","enigme","encore","aco","moo","moo !","moo !"]:
                 if canal in self.play_channels:
                     if self.play_status.get(canal,[-1])[0]==0:
                         try:
                 if canal in self.play_channels:
                     if self.play_status.get(canal,[-1])[0]==0:
                         try:
@@ -552,7 +551,7 @@ class Deconnaisseur(ircbot.SingleServerIRCBot):
             log(self.serveur,"%s kické de %s par %s (raison : %s)" %(victime,channel,auteur,raison))
             time.sleep(5)
             serv.join(channel)
             log(self.serveur,"%s kické de %s par %s (raison : %s)" %(victime,channel,auteur,raison))
             time.sleep(5)
             serv.join(channel)
-            self.update_activity(channel,"")
+            self.update_activity(channel,force=True)
             # on ne dit rien au rejoin
             #l1,l2=config.kick_answers,config.kick_actions
             #n1,n2=len(l1),len(l2)
             # on ne dit rien au rejoin
             #l1,l2=config.kick_answers,config.kick_actions
             #n1,n2=len(l1),len(l2)
@@ -595,8 +594,8 @@ class Deconnaisseur(ircbot.SingleServerIRCBot):
         return self.serv.get_nickname()
     nick = property(_getnick)
     
         return self.serv.get_nickname()
     nick = property(_getnick)
     
-    def update_activity(self,canal,pseudo):
-        if not pseudo in config.idle_bots:
+    def update_activity(self,canal="",pseudo="",message="",force=False):
+        if force or (not pseudo in config.idle_bots and all([not re.match(ignore, message) for ignore in config.idle_messages])):
             self.last_activity[canal]=time.time()
     def is_active(self,canal):
         return time.time()-self.last_activity[canal]<config.idle_time
             self.last_activity[canal]=time.time()
     def is_active(self,canal):
         return time.time()-self.last_activity[canal]<config.idle_time
@@ -680,4 +679,4 @@ if __name__=="__main__":
             f.write("%s\n" % child_pid)
             f.close()
     else:
             f.write("%s\n" % child_pid)
             f.close()
     else:
-        deconnaisseur.start()
\ No newline at end of file
+        deconnaisseur.start()