]> gitweb.pimeys.fr Git - bots/deconnaisseur.git/blobdiff - deconnaisseur.py
Tolérance sur les galets
[bots/deconnaisseur.git] / deconnaisseur.py
index 8007c9e9d363ae7095ebf764998801a773e58260..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)
-            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]
@@ -200,7 +200,7 @@ class Deconnaisseur(ircbot.SingleServerIRCBot):
             test=bot_unicode(message)
         except UnicodeBotError:
             if config.utf8_trigger:
-                serv.privmsg(auteur, config.utf8_fail_answers)
+                serv.privmsg(auteur, random.choice(config.utf8_fail_answers).encode("utf8"))
             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
- 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
@@ -240,7 +240,7 @@ class Deconnaisseur(ircbot.SingleServerIRCBot):
                     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:
@@ -444,12 +444,12 @@ class Deconnaisseur(ircbot.SingleServerIRCBot):
         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:
-            if not canal in self.quiet_channels and config.utf8_trigger:
-                serv.privmsg(canal, "%s: %s"%(auteur,config.utf8_fail_answers))
+            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)
@@ -491,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))
-            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:
@@ -551,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)
-            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)
@@ -594,8 +594,8 @@ class Deconnaisseur(ircbot.SingleServerIRCBot):
         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
@@ -679,4 +679,4 @@ if __name__=="__main__":
             f.write("%s\n" % child_pid)
             f.close()
     else:
-        deconnaisseur.start()
\ No newline at end of file
+        deconnaisseur.start()