X-Git-Url: http://gitweb.pimeys.fr/?a=blobdiff_plain;f=basile.py;h=3684c682d125e9a5d6fcc7db880d44e981eabc1e;hb=0bfadbdf0bfb4aae2843ad40b336268ca02eb62a;hp=6f306509a0d77cea48229c016d59be130ddec6af;hpb=a5a869a395810d10ac3400f7b6fac1e6ef1b7275;p=bots%2Fbasile.git diff --git a/basile.py b/basile.py index 6f30650..3684c68 100755 --- a/basile.py +++ b/basile.py @@ -58,7 +58,7 @@ u"Si tu allais voir sur un autre chan si j'y suis ?", u"Permets-moi de te retourner le compliment.", u"Mais je ne te permets pas !"] -config_gros=[u"gros"] +config_gros=[u"gros",u"énorme",u"lourd"] config_buffer_fail_answers=["haha !","You type like you drive","encore un effort ;)"] @@ -118,8 +118,8 @@ u"Mais j'ai rien demandé moi !"] config_bad_action_actions=[u"prend de la distance, par précaution…",u"part en courant",u"esquive"] config_good_action_triggers=[u"fait (des bisous|un calin) à",u"embrasse",u"caline",u"caresse"] -config_good_ction_answers=[u"owi \o/",u"{}: c'est gentil ! ♡"] -config_good_action_acions=[u"ronronne",u"est content"] +config_good_action_answers=[u"owi \o/",u"c'est gentil ! ♡"] +config_good_action_actions=[u"ronronne",u"est content"] config_bonjour_triggers=[u"(s|)(a|'|)lu(t|)",u"hello",u"pl(o|i)p",u"pr(ou|ü)t",u"bonjour",u"bonsoir",u"coucou"] config_bonjour_answers=[u"Salut {}",u"Hello {} :)",u"Bonjour {}",u"Hello {}",u"{}: hello",u"{}: bonjour"] @@ -201,23 +201,22 @@ def login_NK(username,password,typ="bdd"): return json.loads(out),sock -def is_something(chain,matches,avant=u".*(^| )",apres=u"($|\.| |,|;).*",case_sensitive=False,debug=False): +def is_something(chain,matches,avant=u".*(?:^| )",apres=u"(?:$|\.| |,|;).*",case_sensitive=False,debug=False): if case_sensitive: chain=unicode(chain,"utf8") else: chain=unicode(chain,"utf8").lower() allmatches="("+"|".join(matches)+")" reg=(avant+allmatches+apres).lower() - if re.match(reg,chain): - return True - return False + o=re.match(reg,chain) + return o def is_insult(chain,debug=True): - return is_something(chain,config_insultes,avant=".*(^| |')") + return is_something(chain,config_insultes,avant=".*(?:^| |')") def is_not_insult(chain): chain=unicode(chain,"utf8") insult_regexp=u"("+u"|".join(config_insultes)+u")" - middle_regexp=u"(un(|e) ((putain|enfoiré) d(e |'))*|)(| super )( (gros|petit|grand|énorme) |)" + middle_regexp=u"(une? (?:(?:putain|enfoiré) d(?:e |'))*|)(?:| super )(?: (?:gros|petit|grand|énorme) |)" reg=".*pas %s%s.*"%(middle_regexp,insult_regexp) if re.match(reg,chain): return True @@ -237,10 +236,10 @@ def is_tamere(chain): return is_something(chain,config_tamere_triggers) def is_bad_action_trigger(chain,pseudo): return is_something(chain,config_bad_action_triggers,avant=u"^", - apres="( [a-z]*ment)? %s($|\.| |,|;).*"%(pseudo)) + apres="(?: [a-z]*ment)? %s($|\.| |,|;).*"%(pseudo)) def is_good_action_trigger(chain,pseudo): return is_something(chain,config_good_action_triggers,avant=u"^", - apres="( [a-z]*ment)? %s($|\.| |,|;).*"%(pseudo)) + apres="(?: [a-z]*ment)? %s($|\.| |,|;).*"%(pseudo)) def is_pan(chain): return re.match(u"^(pan|bim|bang) .*$",unicode(chain,"utf8").lower().strip()) @@ -759,9 +758,10 @@ class Basile(ircbot.SingleServerIRCBot): answer=random.choice(config_insultes_answers) for ligne in answer.split("\n"): serv.privmsg(canal,"%s: %s"%(auteur,ligne.encode("utf8"))) - if is_gros(message) and not canal in self.quiet_channels: + gros_match=is_gros(message) + if gros_match and not canal in self.quiet_channels: taille=get_filesize() - answer=u"Mais non, je ne suis pas gros, %sKo tout au plus…"%(taille) + answer=u"Mais non, je ne suis pas %s, %sKo tout au plus…"%(gros_match.groups()[0],taille) serv.privmsg(canal,"%s: %s"%(auteur,answer.encode("utf8"))) if is_tesla(message) and not canal in self.quiet_channels: l1,l2=config_tesla_answers,config_tesla_actions @@ -872,7 +872,15 @@ class Basile(ircbot.SingleServerIRCBot): serv.action(channel,l2[i-n1].encode("utf8")) else: serv.privmsg(channel,"%s: %s"%(auteur,l1[i].encode("utf8"))) - + if is_good_action_trigger(action,mypseudo) and not channel in self.quiet_channels: + l1,l2=config_good_action_answers,config_good_action_actions + n1,n2=len(l1),len(l2) + i=random.randrange(n1+n2) + if i>=n1: + serv.action(channel,l2[i-n1].encode("utf8")) + else: + serv.privmsg(channel,"%s: %s"%(auteur,l1[i].encode("utf8"))) + def on_kick(self,serv,ev): auteur = irclib.nm_to_n(ev.source()) channel = ev.target() @@ -882,13 +890,13 @@ class Basile(ircbot.SingleServerIRCBot): log(self.serveur,"%s kické par %s (raison : %s)" %(victime,auteur,raison)) time.sleep(2) serv.join(channel) - l1,l2=config_kick_actions,config_kick_answers + 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].encode("utf8")) + serv.action(channel,l2[i-n1].format(auteur).encode("utf8")) else: - serv.privmsg(channel,"%s: %s"%(auteur,l1[i].encode("utf8"))) + serv.privmsg(channel,"%s: %s"%(auteur,l1[i].format(auteur).encode("utf8"))) def _getnick(self): return self.serv.get_nickname()