X-Git-Url: http://gitweb.pimeys.fr/?a=blobdiff_plain;f=basile.py;h=e456eb34ca01f6697f36b708c9aa033572097778;hb=5c0de884696330bf237fdec5dcd1fdf370f53dce;hp=88afebc0acd6c14b565d130c42fbd18505f091e3;hpb=903f399fa7c2a4352e73277a84cc935201eab092;p=bots%2Fbasile.git diff --git a/basile.py b/basile.py index 88afebc..e456eb3 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 ;)"] @@ -82,7 +82,7 @@ config_time_between_perdu_trigger=3600*3 #temps moyen pour perdre en l'absence d config_time_between_perdu_trigger_delta = 30*60 #marge autorisée autour de ^^^ config_time_between_perdu=30*60 #temps pendant lequel on ne peut pas perdre -config_tag=[u"t(|a)g",u"ta gueule",u"la ferme",u"ferme( |-)la",u"tais-toi",u"chut"] +config_tag_triggers=[u"t(|a)g",u"ta gueule",u"la ferme",u"ferme( |-)la",u"tais-toi",u"chut"] config_tag_actions=[u"se tait",u"ferme sa gueule",u"se la ferme",u"la ferme"] config_tag_answers=[u"J'me tais si j'veux !", u"Je t'entends pas :°", @@ -90,18 +90,18 @@ u"Héhé, try again", u"Non, j'ai pas envie", u"Peut-être quand toi tu la fermeras, et encore…"] -config_tesla=[u"t('|u )es là \?",u"\?",u"plop \?",u"plouf \?"] +config_tesla_triggers=[u"t('|u )es là \?",u"\?",u"plop \?",u"plouf \?"] config_tesla_answers=[u"Oui, je suis là",u"Oui ?",u"En quoi puis-je me rendre utile ?"] config_tesla_actions=[u"est là",u"attend des instructions",u"is alive"] -config_compliment=[u"gentil",u"cool",u"sympa"] +config_compliment_triggers=[u"gentil",u"cool",u"sympa"] config_compliment_answers=[u"Merci, c'est gentil :)",u"Je te retourne le compliment",u"C'est gentil ça."] -config_merci=[u"merci",u"remercie",u"thx",u"thank(|s)"] +config_merci_triggers=[u"merci",u"remercie",u"thx",u"thank(|s)"] config_merci_answers=[u"Mais de rien.",u"À ton service ;)",u"Quand tu veux ^^", u"Tout le plaisir est pour moi."] -config_tamere=[u"ta mère"] +config_tamere_triggers=[u"ta mère"] config_tamere_answers=[u"Laisse ma mère en dehors de ça !", u"Tu veux qu'on parle de ta soœur ?", u"Et la tienne ?", @@ -109,17 +109,23 @@ u"Ce que fait ma mère c'est comme ce que tu fais avec ta bite, ça nous regarde u"♩ J'ai vu ta mère sur chat rouleeeeeeette ♫", u"On avait dit \"pas les mamans\""] -config_action_trigger=[u"(frappe|cogne|tape)(| sur)",u"(démolit|dégomme|fouette|agresse)", +config_bad_action_triggers=[u"(frappe|cogne|tape)(| sur)",u"(démolit|dégomme|fouette|agresse)", u"vomit sur",u"slap(|s)"] -config_action_answers=[u"Hey ! Mais qu'est-ce que j'ai fait ?", +config_bad_action_answers=[u"Hey ! Mais qu'est-ce que j'ai fait ?", u"Pourquoi moi ?", u"Mais euh…", u"Mais j'ai rien demandé moi !"] -config_action_actions=[u"prend de la distance, par précaution…",u"part en courant",u"esquive"] +config_bad_action_actions=[u"prend de la distance, par précaution…",u"part en courant",u"esquive"] -config_bonjour=[u"(s|)(a|'|)lu(t|)",u"hello",u"pl(o|i)p",u"pr(ou|ü)t",u"bonjour",u"bonsoir",u"coucou"] +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_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"] +config_kick_answers=[u"Ben qu'est-ce que j'ai fait ? :(",u"Mais euh, j'ai rien fait de mal…","{} a le /kick facile :)"] +config_kick_actions=[u"se tiendra à carreaux",u"essaiera de ne plus provoquer les foudres de {}"] config_thisfile= os.path.realpath( __file__ ) def get_filesize(): @@ -195,16 +201,15 @@ 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=".*(^| |')") @@ -220,17 +225,20 @@ def is_not_insult(chain): def is_perdu(chain): return is_something(chain,config_perdu) def is_tag(chain): - return is_something(chain,config_tag) + return is_something(chain,config_tag_triggers) def is_gros(chain): return is_something(chain,config_gros) def is_tesla(chain): - return is_something(chain,config_tesla,avant=u"^",apres=u"$",debug=True) + return is_something(chain,config_tesla_triggers,avant=u"^",apres=u"$",debug=True) def is_merci(chain): - return is_something(chain,config_merci) + return is_something(chain,config_merci_triggers) def is_tamere(chain): - return is_something(chain,config_tamere) -def is_action_trigger(chain,pseudo): - return is_something(chain,config_action_trigger,avant=u"^", + 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)) +def is_good_action_trigger(chain,pseudo): + return is_something(chain,config_good_action_triggers,avant=u"^", apres="( [a-z]*ment)? %s($|\.| |,|;).*"%(pseudo)) def is_pan(chain): return re.match(u"^(pan|bim|bang) .*$",unicode(chain,"utf8").lower().strip()) @@ -299,6 +307,7 @@ class Basile(ircbot.SingleServerIRCBot): serv.nick(config_irc_pseudo) def on_welcome(self, serv, ev): + self.serv=serv # ça serv ira :) self.give_me_my_pseudo(serv) serv.privmsg("NickServ","identify %s"%(config_irc_password)) log(self.serveur,"Connected") @@ -383,7 +392,8 @@ class Basile(ircbot.SingleServerIRCBot): (auteur,fille,verbe)).encode("utf8")) def pourmoi(self, serv, message): """renvoie (False,lemessage) ou (True, le message amputé de "pseudo: ")""" - size=len(self.nick) + pseudo=self.nick + size=len(pseudo) if message[:size]==pseudo and len(message)>size and message[size]==":": return (True,message[size+1:].lstrip(" ")) else: @@ -748,16 +758,17 @@ 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 n1,n2=len(l1),len(l2) i=random.randrange(n1+n2) if i>=n1: - serv.action(canal,l2[i-n1]) + serv.action(canal,l2[i-n1].encode("utf8")) else: serv.privmsg(canal,"%s: %s"%(auteur,l1[i].encode("utf8"))) if is_tamere(message) and not canal in self.quiet_channels: @@ -806,7 +817,7 @@ class Basile(ircbot.SingleServerIRCBot): out=int(translate(out)) serv.privmsg(canal,"%s: %s !"%(auteur,translate(str(out+1)).encode("utf8"))) if (not canal in self.quiet_channels - and re.match((u"^("+"|".join(config_bonjour)+").*").lower(),message.lower()) ): + and re.match((u"^("+"|".join(config_bonjour_triggers)+").*").lower(),message.lower()) ): answer=random.choice(config_bonjour_answers) serv.privmsg(canal,answer.format(auteur).encode("utf8")) if is_pan(message) and not canal in self.quiet_channels: @@ -826,7 +837,7 @@ class Basile(ircbot.SingleServerIRCBot): if not canal in self.quiet_channels: self.try_tamere(serv,canal,auteur,message) mypseudo=self.nick - if re.match((u"^("+u"|".join(config_bonjour) + if re.match((u"^("+u"|".join(config_bonjour_triggers) +u")( {}| all| tout le monde|(|à) tous)(\.|( |)!|)$" ).format(mypseudo).lower(), message.strip().lower()): answer=random.choice(config_bonjour_answers) @@ -853,8 +864,8 @@ class Basile(ircbot.SingleServerIRCBot): return mypseudo=self.nick - if is_action_trigger(action,mypseudo) and not channel in self.quiet_channels: - l1,l2=config_action_answers,config_action_actions + if is_bad_action_trigger(action,mypseudo) and not channel in self.quiet_channels: + l1,l2=config_bad_action_answers,config_bad_action_actions n1,n2=len(l1),len(l2) i=random.randrange(n1+n2) if i>=n1: @@ -864,15 +875,23 @@ class Basile(ircbot.SingleServerIRCBot): def on_kick(self,serv,ev): auteur = irclib.nm_to_n(ev.source()) - canal = ev.target() + channel = ev.target() victime = ev.arguments()[0] raison = ev.arguments()[1] if victime==self.nick: - time.sleep(1) - serv.join(canal) - print("%s kické par %s pour %s" %(victime,auteur,raison)) + 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 + 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 _getnick(self): - return serv.get_nickname() + return self.serv.get_nickname() nick=property(_getnick)