From 883904e0088f47fd9fd1729de0c2dbc3826032c2 Mon Sep 17 00:00:00 2001 From: Vincent Le Gallic Date: Fri, 6 Jul 2012 17:32:46 +0200 Subject: [PATCH] Passage des motifs de kick sous forme de liste pour en ajouter facilement. + Ajout des anglicismes. --- themis.py | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/themis.py b/themis.py index 33b2697..76fea81 100755 --- a/themis.py +++ b/themis.py @@ -158,7 +158,7 @@ config_kick_answers=[u"Suis-je de trop ici ?",u"{}: je m'excuse pour ce bruit in config_kick_actions=[u"sera désormais exemplaire",u"prépare une lettre d'excuses à {}",u"essaiera de ne plus s'attirer les foudres de {}",u"croyait avoir tout bien fait… cruelle déception."] # config on m'a demandé de mourir/partir -config_quit_messages=[u"Bye."] +config_quit_messages=[u"J'ai enfin trouvé une corde et un tabouret"] config_leave_messages=config_quit_messages config_quit_fail_messages=[u"Tu rêves là."] config_leave_fail_messages=config_quit_fail_messages @@ -166,7 +166,9 @@ config_leave_fail_messages=config_quit_fail_messages # config de kick config_kick_channels=config_chanlist -config_smileys=[ur':(-|o)?\)', u'\^(_|\.)?\^', u':-?(p|P)', u'=(\)|D|p|P)', ur'\\o/', ur':-?D', ur'x(\)|D)', u'krkr', ur':-?(\]|>)', ur'(<|d|q|\(|\[)(:|=)'] + +config_smileys = [ur':(-|o)?\)', u'\^(_|\.)?\^', u':-?(p|P)', u'=(\)|D|p|P)', ur'\\o/', ur':-?D', ur'x(\)|D)', u'krkr', ur':-?(\]|>)', ur'(<|d|q|\(|\[)(:|=)'] +config_anglicismes = [u"wtf", u"ftfy", u"it works?", u"fyi"] def log(serveur,channel,auteur=None,message=None): f=open(get_config_logfile(serveur),"a") @@ -180,11 +182,27 @@ def log(serveur,channel,auteur=None,message=None): print chain f.close() -reg_is_smiley=re.compile(u".*("+u"|".join(config_smileys)+u")") +reg_is_smiley = re.compile(u".*("+u"|".join(config_smileys)+u")") def is_smiley(chain): chain=unicode(chain,"utf8") o=re.match(reg_is_smiley,chain) return o + +reg_is_anglicisme = re.compile(u".*(?:^| )(" + u"|".join(config_anglicismes) + u")(?:$|\.| |,|;)") +def is_anglicisme(chain): + chain = unicode(chain, "utf8").lower() + o = re.match(reg_is_anglicisme, chain) + return o + +# Cette liste contient la liste des raisons pour lesquelles on peut se faire kicker +# chaque élément contient : +# - la fonction de détection du kick (qui matchera une regexp et renverra l'objet de match) +# - la raison donnée au moment du kick ({0} étant remplacé par ce qui a matché) +config_kicking_list = [ +[is_smiley, u'"{0}" ? Ici on déprime.'], +[is_anglicisme, u'"{0}" ? Get out, you and your fucking anglicism !'] +] + def is_something(chain,matches,avant=u".*(?:^| )",apres=u"(?:$|\.| |,|;).*",case_sensitive=False,debug=False): if case_sensitive: chain=unicode(chain,"utf8") @@ -508,18 +526,19 @@ class Themis(ircbot.SingleServerIRCBot): serv.privmsg(canal, "%s: %s"%(auteur,config_utf8_fail)) return pour_moi,message=self.pourmoi(serv,message) - smy=is_smiley(message) - if smy: - if canal in self.kick_channels: - serv.kick(canal,auteur,(u'"%s" ? Ici on déprime.'%(smy.groups()[0])).encode("utf8")) - return + for (detect, reason) in config_kicking_list: + matching = detect(message) + if matching: + if canal in self.kick_channels: + serv.kick(canal,auteur,(reason.format(matching.groups()[0])).encode("utf8")) + return if pour_moi and message.split()!=[]: cmd=message.split()[0].lower() try: args=" ".join(message.split()[1:]) except: args="" - if cmd in ["meurs","die","crève"]: + if cmd in ["meurs","die","crève","pends-toi"]: if auteur in self.overops: log(self.serveur,canal,auteur,message+"[successful]") self.mourir() -- 2.39.2