X-Git-Url: http://gitweb.pimeys.fr/?a=blobdiff_plain;f=basile.py;h=2bc9533808fd0e10a78087bd0ef725b6d8c14b51;hb=a906af8008dcba0c0847070dca6218b1ba19bc12;hp=35733e924e9186d0ea31ecfd935874fde8113546;hpb=6343503c3a2fa9e5e2e4d093765533e71ff4a95f;p=bots%2Fbasile.git diff --git a/basile.py b/basile.py index 35733e9..2bc9533 100755 --- a/basile.py +++ b/basile.py @@ -38,6 +38,8 @@ config_report_bugs_to=["[20-100]"] # config "ce bot a été codé par 20-100, tu te rappelles ?" config_manzana = ["[20-100]", "Petite-Peste"] +# config "mais PEB aussi est passé par là" +config_manzana_bis = ["PEB"] # config "tu m'traites ?" config_insultes=[u"conna(rd|sse)",u"pute",u"con(|ne)",u"enf(oiré|lure)", @@ -325,7 +327,6 @@ class Basile(ircbot.SingleServerIRCBot): self.ops=self.overops+config_ops self.report_bugs_to=config_report_bugs_to self.chanlist=config_chanlist - self.sockets={} self.identities=pickle.load(open("identities.pickle","r")) self.stay_channels=config_stay_channels self.quiet_channels=config_quiet_channels @@ -408,75 +409,82 @@ class Basile(ircbot.SingleServerIRCBot): test=bot_unicode(message) except UnicodeBotError: serv.privmsg(auteur, - "Si je n'avais pas été créé avec la plus grande attention, votre encodage m'aurait déjà tué…") + "Si je n'avais pas été créé avec la plus grande attention, votre encodage aurait eu raison de moi…") return message=message.split() cmd=message[0].lower() notunderstood=False - if cmd=="connect": - if not len(message) in [2,3]: - serv.privmsg(auteur,"Syntaxe : CONNECT [] ") - return - username=auteur - if len(message)>2: - username=(message[1]) - password=" ".join(message[2:]) - else: - password=" ".join(message[1:]) - success,sock=self.new_connection_NK(serv,username,password) - if success: - self.sockets[username]=sock - serv.privmsg(auteur,"Connection successful") - log(self.serveur,"priv",auteur," ".join(message)+"[successful]") - else: - serv.privmsg(auteur,"Connection failed") - log(self.serveur,"priv",auteur," ".join(message)+"[failed]") - - elif cmd=="help": - helpdico={"connect": """CONNECT [] - Ouvre une connexion au serveur NoteKfet. - Si n'est pas précisé, j'utiliserais l'identité sous laquelle je te connais, ou, à défaut, ton pseudo.""", -"identify": """IDENTIFY - Vérifie le mot de passe et me permet de savoir à l'avenir quel est ton pseudo note kfet. - Sans paramètre, je réponds sous quel pseudo je te connais.""", -"drop":"""DROP - Vérifie le mot de passe et me fait d'oublier ton pseudo note kfet."""} - helpmsg_default="""Liste des commandes : - HELP Affiche de l'aide sur une commande. - CONNECT Ouvre une connection au serveur Note Kfet. - IDENTIFY Me permet de savoir qui tu es sur la note kfet. - DROP Me fait oublier ton identité. - SOLDE Obtenir ton solde""" - helpmsg_ops=""" - JOIN Faire rejoindre un chan - LEAVE Faire quitter un chan - QUIET Se taire sur un chan - NOQUIET Opposé de QUIET - LOST Perdre sur un chan - SOLDE 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""" + if cmd=="help": + helpdico={"help":["""HELP + Affiche de l'aide sur la commande""",None,None], +"identify": ["""IDENTIFY + Vérifie le mot de passe et me permet de savoir à l'avenir quel est votre pseudo note kfet. + Sans paramètre, je vous précise sous quel pseudo je vous connais.""",None,None], +"drop":["""DROP + Vérifie le mot de passe et me fait d'oublier votre pseudo note kfet.""",None,None], +"solde": ["""SOLDE + Affiche votre solde, si je connais votre pseudo note kfet.""", + """SOLDE + Affiche le solde de la personne désignée (par son pseudo note).""",None], + "join": [None, """JOIN + Me fait rejoindre le channel""",None], + "leave": [None,"""LEAVE + Me fait quitter le channel (sauf s'il est dans ma stay_list).""",None], + "quiet": [None,"""QUIET + Me rend silencieux sur le channel.""",None], + "noquiet": [None,"""NOQUIET + Me rend la parole sur le channel.""",None], + "lost": [None,"""LOST + Me fait perdre sur le channel.""",None], + "say": [None,None,"""SAY + Me fait parler sur le channel."""], + "do": [None,None,"""DO + Me fait faitre une action (/me) sur le channel."""], + "stay": [None,None,"""STAY + Ajoute le channel à ma stay_list."""], + "nostay": [None,None,"""NOSTAY + Retire le channel de ma stay_list."""], + "ops": [None,None,"""OPS + Affiche la liste des ops."""], + "overops": [None,None,"""OVEROPS + Affiche la liste des overops."""], + "kick": [None,None,"""KICK [] + Kicke du channel (Il faut bien entendu que j'y sois op)."""], + "die": [None,None,"""DIE + Me déconnecte du serveur IRC."""] + } + helpmsg_default="Liste des commandes disponibles :\nHELP IDENTIFY DROP SOLDE" + helpmsg_ops=" JOIN LEAVE QUIET NOQUIET LOST" + helpmsg_overops=" SAY DO STAY NOSTAY OPS OVEROPS KICK DIE" + op,overop=auteur in self.ops, auteur in self.overops if len(message)==1: helpmsg=helpmsg_default - if auteur in self.ops: + if op: helpmsg+=helpmsg_ops - if auteur in self.overops: + if overop: helpmsg+=helpmsg_overops else: - helpmsg=helpdico.get(message[1].lower(),"Commande inconnue.") + helpmsgs=helpdico.get(message[1].lower(),["Commande inconnue.",None,None]) + helpmsg=helpmsgs[0] + if op and helpmsgs[1]: + if helpmsg: + helpmsg+="\n"+helpmsgs[1] + else: + helpmsg=helpmsgs[1] + if overop and helpmsgs[2]: + if helpmsg: + helpmsg+="\n"+helpmsgs[2] + else: + helpmsg=helpmsgs[2] for ligne in helpmsg.split("\n"): serv.privmsg(auteur,ligne) elif cmd=="identify": if len(message)==1: if self.identities.has_key(auteur): - serv.privmsg(auteur,"Je te connais sous le pseudo note %s."%( + serv.privmsg(auteur,"Je vous connais sous le pseudo note %s."%( self.identities[auteur].encode("utf8"))) else: - serv.privmsg(auteur,"Je ne connais pas ton pseudo note.") + serv.privmsg(auteur,"Je ne connais pas votre pseudo note.") elif len(message)>=3: username,password=message[1],unicode(" ".join(message[2:]),"utf8") success,_=self.new_connection_NK(serv,username,password) @@ -615,7 +623,7 @@ class Basile(ircbot.SingleServerIRCBot): 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 ") + serv.privmsg(auteur,"Syntaxe : KICK []") else: notunderstood=True elif cmd=="lost": @@ -640,6 +648,7 @@ class Basile(ircbot.SingleServerIRCBot): log(self.serveur,"priv",auteur," ".join(message)+"[failed]") return serv.privmsg(auteur,"%s (%s)"%(float(solde)/100,pseudo.encode("utf8"))) + log(self.serveur,"priv",auteur," ".join(message)+"[successful]") else: serv.privmsg(canal,"Je ne connais pas ton pseudo note.") elif auteur in self.ops: @@ -653,6 +662,16 @@ class Basile(ircbot.SingleServerIRCBot): log(self.serveur,"priv",auteur," ".join(message)+"[failed]") return serv.privmsg(auteur,"%s (%s)"%(float(solde)/100,pseudo.encode("utf8"))) + elif cmd=="ops": + if auteur in self.overops: + serv.privmsg(auteur," ".join(self.ops)) + else: + notunderstood=True + elif cmd=="overops": + if auteur in self.overops: + serv.privmsg(auteur," ".join(self.overops)) + else: + notunderstood=True else: notunderstood=True if notunderstood: @@ -667,7 +686,7 @@ class Basile(ircbot.SingleServerIRCBot): except UnicodeBotError: if not canal in self.quiet_channels: serv.privmsg(canal, - "%s: Si je n'avais pas été créé avec la plus grande attention, votre encodage m'aurait déjà tué…"%(auteur)) + "%s: Si je n'avais pas été créé avec la plus grande attention, votre encodage aurait eu raison de moi…"%(auteur)) return pour_moi,message=self.pourmoi(serv,message) if pour_moi and message.split()!=[]: @@ -749,6 +768,8 @@ class Basile(ircbot.SingleServerIRCBot): elif re.match("!?manzana",message.lower()) and not canal in self.quiet_channels: if auteur in config_manzana: serv.action(canal,"sert une bouteille de manzana à %s"%(auteur)) + elif auteur in config_manzana_bis: + serv.action(canal,"sert un grand verre de jus de pomme à %s : tout le monde sait qu'il ne boit pas."%(auteur)) else: serv.action(canal,"sert un verre de manzana à %s"%(auteur)) if is_insult(message) and not canal in self.quiet_channels: @@ -844,9 +865,11 @@ class Basile(ircbot.SingleServerIRCBot): if message in ["!manzana"] and not canal in self.quiet_channels: if auteur in config_manzana: serv.action(canal,"sert une bouteille de manzana à %s"%(auteur)) + elif auteur in config_manzana_bis: + serv.action(canal,"sert un grand verre de jus de pomme à %s : tout le monde sait qu'il ne boit pas."%(auteur)) else: serv.action(canal,"sert un verre de manzana à %s"%(auteur)) - if re.match('^(.|§|:|)(w|b) [0-9]+$',message) and not canal in self.quiet_channels: + if re.match(u'^ *(.|§|!|/|/|:|)(w|b) [0-9]+$',message.decode("utf8")) and not canal in self.quiet_channels: failanswers=config_buffer_fail_answers answer=random.choice(failanswers) serv.privmsg(canal,("%s: %s"%(auteur,answer)).encode("utf8")) @@ -920,7 +943,7 @@ class Basile(ircbot.SingleServerIRCBot): def mourir(self): quit_message=random.choice(config_quit_messages) - self.die(msg=quit_message) + self.die(msg=quit_message.encode("utf8")) def _getnick(self): return self.serv.get_nickname()