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 :°",
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 ?",
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():
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())
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")
(auteur,fille,verbe)).encode("utf8"))
def pourmoi(self, serv, message):
"""renvoie (False,lemessage) ou (True, le message amputé de "pseudo: ")"""
- pseudo=serv.get_nickname()
+ pseudo=self.nick
size=len(pseudo)
if message[:size]==pseudo and len(message)>size and message[size]==":":
return (True,message[size+1:].lstrip(" "))
or auteur in self.overops):
serv.part(canal,message="Éjecté par %s"%(auteur))
log(self.serveur,canal,auteur,message+"[successful]")
+ if canal in self.chanlist:
+ self.chanlist.remove(canal)
else:
serv.privmsg(canal,"%s: Non, je reste !"%(auteur))
log(self.serveur,canal,auteur,message+"[failed]")
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:
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:
serv.privmsg(canal,"%s: %s"%(auteur,answer))
if not canal in self.quiet_channels:
self.try_tamere(serv,canal,auteur,message)
- mypseudo=serv.get_nickname()
- if re.match((u"^("+u"|".join(config_bonjour)
+ mypseudo=self.nick
+ 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)
serv.privmsg(channel,
"%s : Euh, tu fais de la merde avec ton encodage là, j'ai failli crasher…"%(auteur))
return
- mypseudo=serv.get_nickname()
+ 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:
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()
+ victime = ev.arguments()[0]
+ raison = ev.arguments()[1]
+ if victime==self.nick:
+ 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 self.serv.get_nickname()
+ nick=property(_getnick)
+
+
if __name__=="__main__":
import sys
if len(sys.argv)==1: