def log(serveur,channel,auteur=None,message=None):
f=open(get_config_logfile(serveur),"a")
- if auteur==message==None:
+ if auteur == message == None:
# alors c'est que c'est pas un channel mais juste une ligne de log
chain="%s %s"%(time.strftime("%F %T"),channel)
else:
print chain
f.close()
+def ignore_event(serv, ev):
+ """Retourne ``True`` si il faut ignorer cet évènement."""
+ for (blackmask, exceptmask) in config.blacklisted_masks:
+ usermask = ev.source()
+ if exceptmask is None:
+ exceptit = False
+ else:
+ exceptit = bool(irclib.mask_matches(usermask, exceptmask))
+ blackit = bool(irclib.mask_matches(usermask, blackmask))
+ if blackit and not exceptit:
+ return True
class UnicodeBotError(Exception):
pass
real_word = "".join([lettre[0] for lettre in liste])
real_word = real_word.decode("utf8").lower()
mot=remplace_accents(mot.decode("utf8"))
- return mot==real_word
+ return mot.startswith(real_word)
class Hung(ircbot.SingleServerIRCBot):
def __init__(self,serveur,debug=False):
return (False,message)
def on_privmsg(self, serv, ev):
+ if ignore_event(serv, ev):
+ return
message=ev.arguments()[0]
auteur = irclib.nm_to_n(ev.source())
try:
self.affiche_mot(serv, canal, begin="Devinez")
def on_pubmsg(self, serv, ev):
+ if ignore_event(serv, ev):
+ return
auteur = irclib.nm_to_n(ev.source())
canal = ev.target()
message = ev.arguments()[0]
# On perd une chance
self.lives[canal] -= 1
if self.lives[canal] > 0:
- serv.privmsg(canal, "Pas de %s. Plus que %s chances…" % (giv_let, self.lives[canal]))
+ serv.privmsg(canal, "Pas de %s. Plus que %s chance%s…" % (giv_let, self.lives[canal], "s" * (self.lives[canal] > 1)))
if self.lives[canal] == 0:
serv.privmsg(canal, "Pas de %s." % (giv_let))
self.perd(serv, canal)
def on_action(self, serv, ev):
+ if ignore_event(serv, ev):
+ return
action = ev.arguments()[0]
auteur = irclib.nm_to_n(ev.source())
channel = ev.target()
def gagne(self, serv, canal, bonus=None, bonusvalue=2):
serv.privmsg(canal,"Bravo !")
realword = self.reveal_word(serv, canal)
- nlettre=float(len(realword.replace("'","").replace("-","")))
+ nlettre=float(len([l for l in realword if not l in config.non_guess_chars]))
contribs=["%s:%s%%%s"%(pseudo,str(int(100*contrib/nlettre)),("+bonus(%s)"%(bonusvalue))*(bonus==pseudo)) for pseudo,contrib in self.play_status[canal][2].items()]
contribs_score={pseudo:int(10*contrib/nlettre) for pseudo,contrib in self.play_status[canal][2].items()}
self.add_score(contribs_score)