X-Git-Url: http://gitweb.pimeys.fr/?a=blobdiff_plain;f=themis.py;h=99c73431f47d416bfe104b9da75439396a268ab8;hb=c70c2c7412775d9e42a7b516490f54196bc89ef8;hp=4a5f7601140a788c41d4f168ebe6e9b8ad1fd037;hpb=0453a3d4961e713d24b9fb26f2cd9d6cc7d687c1;p=bots%2Fthemis.git diff --git a/themis.py b/themis.py index 4a5f760..99c7343 100755 --- a/themis.py +++ b/themis.py @@ -1,6 +1,5 @@ #!/usr/bin/python # -*- coding:utf8 -*- - # Codé par 20-100 (commencé le 21/06/12) # Un bot IRC pour kicker à tour de bras de #déprime @@ -34,8 +33,8 @@ config_ops=[] config_report_bugs_to=["[20-100]"] # config UTF8-fail -config_utf8_fail = [u"Si je n'avais pas été créé avec la plus grande attention, votre encodage aurait eu raison de moi…"] -config_utf8_trigger = False +config_utf8_fail = [u"Ton encodage me déprime…"] +config_utf8_trigger = True # config "tu m'traites ?" config_insultes=[u"conna(rd|sse)",u"pute",u"con(|ne)",u"enf(oiré|lure)", u"sal(op(|e(|rie)|ard)|aud)",u"p(e|')tite bite",u"imbécile",u"idiot",u"stupid(|e)",u"débile",u"crétin", @@ -98,11 +97,8 @@ u"Je ne ressens pas de besoin irrésistible de me taire, navré."] config_tesla_triggers=[u"t('|u )es là \?",u"\?",u"plop \?",u"plouf \?"] config_tesla_answers=[ u"Oui, je suis là.", -u"J'écoute.", -u"En quoi puis-je me rendre utile ?", -u"On a besoin de moi ?" ] -config_tesla_actions=[u"est là",u"attend des instructions",u"est toujours disponible"] +config_tesla_actions=[u"déprime",u"est prêt à kicker les gens heureux"] # config en cas de non-insulte config_compliment_triggers=[u"gentil",u"cool",u"sympa",u"efficace"] @@ -162,11 +158,19 @@ 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 + +# 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|\(|\[)(:|=)', u'mdr'] +config_anglicismes = [u"wtf", u"ftfy", u"it works?", u"fyi", u"kill[^ ]*", u"kick[^ ]*", u"chan(nel)?", u"join", +u"btw", u"lmgtfy", u"rtfm", u"asap", u"afaik", u"shit", u"damn", u"fuck", u"bitch", u"updat(e|ed|ing)", u"lol", u"buffer[^ ]*", u"rofl"] + def log(serveur,channel,auteur=None,message=None): f=open(get_config_logfile(serveur),"a") if auteur==message==None: @@ -179,6 +183,26 @@ def log(serveur,channel,auteur=None,message=None): print chain f.close() +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: @@ -254,6 +278,7 @@ class Themis(ircbot.SingleServerIRCBot): self.ops=self.overops+config_ops self.report_bugs_to=config_report_bugs_to self.chanlist=config_chanlist + self.kick_channels=config_kick_channels self.stay_channels=config_stay_channels self.quiet_channels=config_quiet_channels self.last_perdu=0 @@ -264,7 +289,10 @@ class Themis(ircbot.SingleServerIRCBot): serv.privmsg("NickServ","RELEASE %s %s"%(config_irc_pseudo,config_irc_password)) time.sleep(0.3) serv.nick(config_irc_pseudo) - + + def give_me_my_op_status(self,serv,chan): + serv.privmsg("ChanServ","OP %s"%(chan)) + def on_welcome(self, serv, ev): self.serv=serv # ça serv ira self.give_me_my_pseudo(serv) @@ -272,9 +300,12 @@ class Themis(ircbot.SingleServerIRCBot): log(self.serveur,"Connected") if self.debug: self.chanlist=["#bot"] + self.kick_channels=["#bot"] for c in self.chanlist: log(self.serveur,"JOIN %s"%(c)) serv.join(c) + self.give_me_my_op_status(serv,c) + def lost(self,serv,channel,forced=False): if self.last_perdu+config_time_between_perdu=n1: - serv.action(channel,l2[i-n1].format(auteur).encode("utf8")) - else: - serv.privmsg(channel,l1[i].format(auteur).encode("utf8")) + def kicker(self, chan, pseudo, raison=None): + if raison==None: + raison = config_kick_default_reason + self.serv.kick(chan,pseudo,raison) + def quitter(self,chan,leave_message=None): if leave_message==None: leave_message=random.choice(config_leave_messages)