f.write((chain + u"\n").encode("utf-8"))
f.close()
if config.debug_stdout:
- print chain
+ print chain.encode("utf-8")
+
+def ignore_event(serv, ev):
+ """Retourne ``True`` si il faut ignorer cet évènement."""
+ for (blackmask, exceptlist) in config.blacklisted_masks:
+ usermask = ev.source()
+ blackit = bool(irclib.mask_matches(usermask, blackmask))
+ exceptit = any([bool(irclib.mask_matches(usermask, exceptmask)) for exceptmask in exceptlist])
+ if exceptit: # Il est exempté
+ return False
+ else:
+ if blackit: # Il n'est pas exempté et matche la blacklist
+ return True
def regex_join(liste, avant=u".*(?:^| )", apres=u"(?:$|\.| |,|;).*"):
"""Fabrique une regexp à partir d'une liste d'éléments à matcher."""
def on_privmsg(self, serv, ev):
"""À la réception d'un message en privé."""
+ if ignore_event(serv, ev):
+ return
message = ev.arguments()[0]
auteur = irclib.nm_to_n(ev.source())
try:
if auteur in self.ops and len(message) > 1:
if message[1] in self.chanlist:
if not (message[1] in self.stay_channels) or auteur in self.overops:
- self.quitter(message[1], " ".join(message[2:]))
+ self.quitter(message[1].encode("utf-8"), " ".join(message[2:]))
self.chanlist.remove(message[1])
log(self.serveur, "priv", auteur, " ".join(message) + "[successful]")
else:
def on_pubmsg(self, serv, ev):
"""À la réception d'un message sur un channel."""
+ if ignore_event(serv, ev):
+ return
auteur = irclib.nm_to_n(ev.source())
canal = ev.target()
message = ev.arguments()[0]
def on_action(self, serv, ev):
"""À la réception d'une action."""
+ if ignore_event(serv, ev):
+ return
action = ev.arguments()[0]
auteur = irclib.nm_to_n(ev.source())
channel = ev.target()