+ serv.execute_delayed(random.randrange(config.Ttrig*5,config.Ttrig*10),self.start_enigme,(serv,canal,token))
+
+ def on_kick(self,serv,ev):
+ auteur = irclib.nm_to_n(ev.source())
+ channel = ev.target()
+ victime = ev.arguments()[0]
+ raison = ev.arguments()[1]
+ if victime==self.nick:
+ 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,"")
+ # on ne dit rien au rejoin
+ #l1,l2=config.kick_answers,config.kick_actions
+ #n1,n2=len(l1),len(l2)
+ #i=random.randrange(n1+n2)
+ #if i>=n1:
+ # serv.action(channel,l2[i-n1].format(auteur).encode("utf8"))
+ #else:
+ # serv.privmsg(channel,l1[i].format(auteur).encode("utf8"))
+
+ def quitter(self,chan,leave_message=None):
+ if leave_message==None:
+ leave_message=random.choice(config.leave_messages)
+ self.serv.part(chan,message=leave_message.encode("utf8"))
+
+ def mourir(self,quit_message=None):
+ if quit_message==None:
+ quit_message=random.choice(config.quit_messages)
+ self.die(msg=quit_message.encode("utf8"))
+
+ def get_scores(self):
+ f=open(config.score_file)
+ scores=pickle.load(f)
+ f.close()
+ return scores
+
+ def add_score(self,pseudo,value):
+ scores=self.get_scores()
+ if scores.has_key(pseudo):
+ scores[pseudo]+=value
+ else:
+ scores[pseudo]=value
+ self.save_scores(scores)
+
+ def save_scores(self,scores):
+ f=open(config.score_file,"w")
+ pickle.dump(scores,f)
+ f.close()
+
+ def _getnick(self):
+ return self.serv.get_nickname()
+ nick = property(_getnick)
+
+ def update_activity(self,canal,pseudo):
+ if not pseudo in config.idle_bots:
+ self.last_activity[canal]=time.time()
+ def is_active(self,canal):
+ return time.time()-self.last_activity[canal]<config.idle_time
+
+ def reload(self, auteur=None):
+ reload(config)
+ if auteur in [None, "SIGHUP"]:
+ towrite = "Config reloaded" + " (SIGHUP received)"*(auteur == "SIGHUP")
+ for to in config.report_bugs_to:
+ self.serv.privmsg(to, towrite)
+ log(self.serveur, towrite)
+ else:
+ self.serv.privmsg(auteur,"Config reloaded")
+
+ def start_as_daemon(self, outfile):
+ sys.stderr = Logger(outfile)
+ self.start()
+
+
+class Logger(object):
+ """Pour écrire ailleurs que sur stdout"""
+ def __init__(self, filename="deconnaisseur.full.log"):
+ self.filename = filename
+
+ def write(self, message):
+ f = open(self.filename, "a")
+ f.write(message)
+ f.close()