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))
def pourmoi(self, serv, message):
pseudo=serv.get_nickname()
size=len(pseudo)
- if message[:size]==pseudo and message[size]==":":
+ if message[:size]==pseudo and len(message)>size and message[size]==":":
return (True,message[size+1:].strip(" "))
else:
return (False,message)
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.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:
try:
test=bot_unicode(message)
except UnicodeBotError:
- serv.privmsg(canal,
- "%s: Euh, tu fais de la merde avec ton encodage là, j'ai failli crasher…"%(auteur))
- return
+ 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))
+ return
tryother=False
pour_moi,message=self.pourmoi(serv,message)
if pour_moi and message.split()!=[]:
tryother=True
if tryother:
if self.play_status.get(canal,[-1])[0] in [1,2]:
- answer=self.play_status[canal][4]
- if re.match(tolere(answer),unicode(message,"utf8").lower()):
+ answer_regexp=self.play_status[canal][3]
+ 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 scoreplus(self,pseudo):
+ if self.scores.has_key(pseudo):
+ self.scores[pseudo]+=1
+ else:
+ self.scores[pseudo]=1
if __name__=="__main__":
import sys