config_time_incompressible=60 #on peut pas retrigger en dessous de ce temps (60)
config_time_incompressible_clue=60 #on peut pas forcer la demande d'indice en dessous
+config_score_file="scores.pickle"
class UnicodeBotError(Exception):
pass
self.stay_channels=config_stay_channels
self.play_channels=config_play_channels
self.play_status={i:[0] for i in self.play_channels}
+ self.scores={}
def give_me_my_pseudo(self,serv):
serv.privmsg("NickServ","RECOVER %s %s"%(config_pseudo,config_password))
notunderstood=False
if cmd=="help":
helpmsg_default="""Liste des commandes :
- HELP Affiche ce message d'aide"""
+ HELP Affiche ce message d'aide
+ SCORES Affiche les scores"""
helpmsg_ops="""
JOIN Faire rejoindre un channel (sans paramètres, donne la liste des chans actuels)
LEAVE Faire quitter un channel
elif cmd=="die":
if auteur in self.overops:
self.die()
+ elif cmd=="score":
+ serv.privmsg(auteur,"Votre score : %s"%(self.scores.get(auteur,0)) )
+ elif cmd=="scores":
+ scores=self.get_scores().items()
+ # trie par score
+ scores.sort(lambda x,y:cmp(x[1].lower(),y[1].lower()))
+ scores.reverse()
+ serv.privmsg(auteur,"Scores by score : "+" ; ".join(["%s %s"%(i[0],i[1]) for i in scores]))
+ # trie par pseudo
+ scores.sort(lambda x,y:cmp(x[0],y[0]))
+ scores.reverse()
+ serv.privmsg(auteur,"Scores by pseudo : "+" ; ".join(["%s %s"%(i[0],i[1]) for i in scores]))
else:
notunderstood=True
if notunderstood:
if re.match(tolere(answer_regexp),unicode(message,"utf8").lower()):
answer=self.play_status[canal][4]
serv.privmsg(canal,"%s: bravo ! (C'était %s)"%(auteur,answer))
+ self.scoreplus(auteur)
token=time.time()
self.play_status[canal]=[0,token]
serv.execute_delayed(random.randrange(Ttrig*5,Ttrig*10),self.start_enigme,(serv,canal,token))
+ def get_scores(self):
+ f=open(config_score_file)
+ scores=pickle.load(f)
+ f.close()
+ return scores
+
+ def scoreplus(self,pseudo):
+ scores=self.get_scores()
+ if scores.has_key(pseudo):
+ scores[pseudo]+=1
+ else:
+ scores[pseudo]=1
+ self.save_scores(scores)
+ def save_scores(self,scores):
+ f=open(config_score_file,"w")
+ pickle.dump(scores,f)
+ f.close()
if __name__=="__main__":
import sys