]> gitweb.pimeys.fr Git - bots/historien.git/blobdiff - historien.py
Parce que 20-100 est nul en histoire
[bots/historien.git] / historien.py
index 350668bdc18ba57ff0dd0773a0ac6bf7d87c9be1..7282f375d9a428fd9711e22958e00f8666fc7a17 100755 (executable)
@@ -76,24 +76,32 @@ def log(serveur,channel,auteur=None,message=None):
     f.close()
 
 
+config_score_annee=1
+config_score_mois=3
+config_score_jour=4
+
+config_noscore=["[20-100]","[20-100]_"] # parce que 20-100 est nul en histoire
+
 def reussi(message,answer,auteur):
-    print message, "#?#", answer
     if auteur in config_level3:
         return answer in message
     if auteur in config_level2:
         return answer in message
     else:
         try:
-            date=cast_as_date(message.lower())
-            print tuple(date)
+            date=cast_as_date(message.lower().strip())
         except ThisIsNotADate:
             return False
-        as_string="%02d/%02d/%d"%(date[2],date[1],date[0])
-        print as_string
-        if as_string==answer:
-            return True
-        else:
-            return False
+        realdate=map(lambda x:int(x), answer.split('/'))
+        realdate.reverse()
+        score=0
+        if date[0]==realdate[0]:
+            score=config_score_annee
+            if date[1]==realdate[1]:
+                score+=config_score_mois
+                if date[2]==realdate[2]:
+                    score+=config_score_jour
+        return score
 
 def is_something(chain,matches,avant=u".*(?:^| )",apres=u"(?:$|\.| |,|;).*",case_sensitive=False,debug=False):
     if case_sensitive:
@@ -111,7 +119,7 @@ def is_tag(chain):
 class RefuseError(Exception):
     pass
 
-class Deconnaisseur(ircbot.SingleServerIRCBot):
+class Historien(ircbot.SingleServerIRCBot):
     def __init__(self,serveur,debug=False):
         temporary_pseudo=config_pseudo+str(random.randrange(10000,100000))
         ircbot.SingleServerIRCBot.__init__(self, [(serveur, 6667)],
@@ -549,10 +557,18 @@ class Deconnaisseur(ircbot.SingleServerIRCBot):
         if tryother:
             if self.play_status.get(canal,[-1])[0] in [1,2]:
                 answer=self.play_status[canal][1]
-                if reussi(message.decode("utf8"),answer,auteur):
-                    serv.privmsg(canal,(u"%s: bravo ! (C'était le %s)"%(auteur,answer)).encode("utf8"))
+                score_obtenu=reussi(message.decode("utf8"),answer,auteur)
+                if score_obtenu:
+                    if self.play_status[canal][0]==1:
+                        bonusmsg=u" [+bonus_mois"*(score_obtenu>config_score_annee)+u"+bonus_jour"*(score_obtenu>config_score_annee+config_score_mois)+u"]"
+                    else:
+                        bonusmsg=""
+                        score_obtenu=1
+                    serv.privmsg(canal,(u"%s: bravo ! (C'était le %s)%s"%(auteur,answer,bonusmsg)).encode("utf8"))
                     log(self.serveur,canal,auteur+"$win",message)
-                    self.add_score(auteur,1)
+                    if auteur in config_noscore:
+                        score_obtenu=0
+                    self.add_score(auteur,score_obtenu)
                     token=time.time()
                     self.play_status[canal]=[0,token]
                     serv.execute_delayed(random.randrange(Ttrig*5,Ttrig*10),self.start_enigme,(serv,canal,token))
@@ -618,7 +634,7 @@ class Deconnaisseur(ircbot.SingleServerIRCBot):
 if __name__=="__main__":
     import sys
     if len(sys.argv)==1:
-        print "Usage : deconnaisseur.py <serveur> [--debug]"
+        print "Usage : historien.py <serveur> [--debug]"
         exit(1)
     serveur=sys.argv[1]
     if "debug" in sys.argv or "--debug" in sys.argv:
@@ -632,5 +648,5 @@ if __name__=="__main__":
     except KeyError:
         print "Server Unknown : %s"%(serveur)
         exit(404)
-    deco=Deconnaisseur(serveur,debug)
-    deco.start()
+    historien=Historien(serveur,debug)
+    historien.start()