]> gitweb.pimeys.fr Git - bots/basile.git/commitdiff
Des messages HELP bien mieux organisés et tous présents.
authorVincent Le Gallic <legallic@crans.org>
Sat, 2 Jun 2012 20:52:20 +0000 (22:52 +0200)
committerVincent Le Gallic <legallic@crans.org>
Sat, 2 Jun 2012 20:52:20 +0000 (22:52 +0200)
 + Ajout des commandes OPS et OVEROPS

basile.py

index dac143977c668683d3b2774ea2f1c98f590ea710..2bc9533808fd0e10a78087bd0ef725b6d8c14b51 100755 (executable)
--- a/basile.py
+++ b/basile.py
@@ -327,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
@@ -415,70 +414,77 @@ class Basile(ircbot.SingleServerIRCBot):
         message=message.split()
         cmd=message[0].lower()
         notunderstood=False
-        if cmd=="connect":
-            if not len(message) in [2,3]:
-                serv.privmsg(auteur,"Syntaxe : CONNECT [<username>] <password>")
-                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 [<username>] <password>
- Ouvre une connexion au serveur NoteKfet.
- Si <username> n'est pas précisé, j'utiliserais l'identité sous laquelle je te connais, ou, à défaut, ton pseudo.""", 
-"identify": """IDENTIFY <username> <password>
- 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 <password>
- 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 <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"""
+        if cmd=="help":
+            helpdico={"help":["""HELP <commande>
+ Affiche de l'aide sur la commande""",None,None],
+"identify": ["""IDENTIFY <username> <password>
+ 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 <password>
+ 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 <pseudo>
+ Affiche le solde de la personne désignée (par son pseudo note).""",None],
+ "join": [None, """JOIN <channel>
+ Me fait rejoindre le channel""",None],
+ "leave": [None,"""LEAVE <channel>
+ Me fait quitter le channel (sauf s'il est dans ma stay_list).""",None],
+ "quiet": [None,"""QUIET <channel>
+ Me rend silencieux sur le channel.""",None],
+ "noquiet": [None,"""NOQUIET <channel>
+ Me rend la parole sur le channel.""",None],
+ "lost": [None,"""LOST <channel>
+ Me fait perdre sur le channel.""",None],
+ "say": [None,None,"""SAY <channel> <message>
+ Me fait parler sur le channel."""],
+ "do": [None,None,"""DO <channel> <action>
+ Me fait faitre une action (/me) sur le channel."""],
+ "stay": [None,None,"""STAY <channel>
+ Ajoute le channel à ma stay_list."""],
+ "nostay": [None,None,"""NOSTAY <channel>
+ 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 <channel> <pseudo> [<raison>]
+ Kicke <pseudo> 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)
@@ -617,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 <channel> <pseudo>")
+                serv.privmsg(auteur,"Syntaxe : KICK <channel> <pseudo> [<raison>]")
             else:
                 notunderstood=True
         elif cmd=="lost":
@@ -642,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:
@@ -655,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: