u"Tu veux qu'on parle de ta soœur ?",
u"Et la tienne ?",
u"Ce que fait ma mère c'est comme ce que tu fais avec ta bite, ça nous regarde pas…",
-u"♩ J'ai vu ta mère sur chat rouleeeeeeette ♫"
+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)",
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_bonjour=[u"(s|)(a|'|)lu(t|)",u"hello",u"plop",u"plip",u"pr(ou|ü)t",u"bonjour",u"bonsoir"]
+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_bonjour_answers=[u"Salut {}",u"Hello {} :)",u"Bonjour {}",u"Hello {}",u"{}: hello",u"{}: bonjour"]
return is_something(chain,config_tamere)
def is_action_trigger(chain,pseudo):
return is_something(chain,config_action_trigger,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())
+ 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(" "))
SOLDE <pseudo> Donner le solde de quelqu'un"""
helpmsg_overops="""
SAY Fait envoyer un message sur un chan ou à une personne
+ DO Fait faire une action sur un chan
STAY Ignorera les prochains LEAVE pour un chan
NOSTAY Opposé de STAY
DIE Mourir"""
serv.privmsg(auteur,"Syntaxe : SAY <channel> <message>")
else:
notunderstood=True
+ elif cmd=="do":
+ if auteur in self.overops and len(message)>2:
+ serv.action(message[1]," ".join(message[2:]))
+ log(self.serveur,"priv",auteur," ".join(message))
+ elif len(message)<=2:
+ serv.privmsg(auteur,"Syntaxe : DO <channel> <action>")
+ else:
+ notunderstood=True
+ elif cmd=="kick":
+ if auteur in self.overops and len(message)>2:
+ serv.kick(message[1],message[2]," ".join(message[3:]))
+ log(self.serveur,"priv",auteur," ".join(message))
+ elif len(message)<=2:
+ serv.privmsg(auteur,"Syntaxe : KICK <channel> <pseudo>")
+ else:
+ notunderstood=True
elif cmd=="lost":
if auteur in self.ops and len(message)>1:
serv.privmsg(message[1],"J'ai perdu !")
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]")
serv.nick(become)
log(self.serveur,canal,auteur,message+"[successful]")
- elif cmd in ["coucou"] and not canal in self.quiet_channels:
- serv.privmsg(canal,"%s: coucou"%(auteur))
+ if cmd in ["meur", "meurt","meurre","meurres"] and not canal in self.quiet_channels:
+ serv.privmsg(canal,'%s: Mourir, impératif, 2ème personne du singulier : "meurs" (de rien)'%(auteur))
elif cmd in ["ping"] and not canal in self.quiet_channels:
serv.privmsg(canal,"%s: pong"%(auteur))
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:
answer=random.choice(config_merci_answers)
for ligne in answer.split("\n"):
serv.privmsg(canal,"%s: %s"%(auteur,ligne.encode("utf8")))
- out=re.match(u"^([A-Z[]|\\|[0-9]+|(¹|²|³|⁴|⁵|⁶|⁷|⁸|⁹|⁰)+)(?:| \?| !)$",
+ out=re.match(ur"^([A-Z[]|\\|[0-9]+|(¹|²|³|⁴|⁵|⁶|⁷|⁸|⁹|⁰)+)(?:| \?| !)$",
unicode(message.upper(),"utf8"))
if out and not canal in self.quiet_channels:
out=out.groups()[0]
serv.privmsg(canal,"%s: pfff, j'ai l'air malin maintenant… [ ?"%(auteur))
elif out in "[\\":
serv.privmsg(canal,"%s: nan mais il faut qu'on arrête, ça va finir par poser des problèmes…"%(auteur))
- elif re.match(r"(¹|²|³|⁴|⁵|⁶|⁷|⁸|⁹|⁰)+",out):
+ elif re.match(ur"(¹|²|³|⁴|⁵|⁶|⁷|⁸|⁹|⁰)+",out):
def translate(mess):
return "".join([{u"⁰¹²³⁴⁵⁶⁷⁸⁹0123456789"[i]:u"0123456789⁰¹²³⁴⁵⁶⁷⁸⁹"[i]
for i in range(20)}[j]
and re.match((u"^("+"|".join(config_bonjour)+").*").lower(),message.lower()) ):
answer=random.choice(config_bonjour_answers)
serv.privmsg(canal,answer.format(auteur).encode("utf8"))
- if is_pan(message):
+ if is_pan(message) and not canal in self.quiet_channels:
serv.privmsg(canal,"%s: c'est pas sur moi qu'il faut tirer !"%(auteur))
else:
if message in ["!pain au chocolat","!chocolatine"] 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()
+ mypseudo=self.nick
if re.match((u"^("+u"|".join(config_bonjour)
+u")( {}| all| tout le monde|(|à) tous)(\.|( |)!|)$"
).format(mypseudo).lower(), message.strip().lower()):
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
else:
serv.privmsg(channel,"%s: %s"%(auteur,l1[i].encode("utf8")))
+ def on_kick(self,serv,ev):
+ auteur = irclib.nm_to_n(ev.source())
+ canal = 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))
+ def _getnick(self):
+ return self.serv.get_nickname()
+ nick=property(_getnick)
+
+
if __name__=="__main__":
import sys
if len(sys.argv)==1: