]> gitweb.pimeys.fr Git - bots/basile.git/blobdiff - basile.py
boulet
[bots/basile.git] / basile.py
index 560382943319429f96bec6f2782b9555de83ef80..359c75f951b76a4fcc79800e0788c48dcfd5eeac 100755 (executable)
--- a/basile.py
+++ b/basile.py
@@ -71,11 +71,11 @@ def connect_NK():
     sock=socket.socket()
     try:
         # On établit la connexion sur port 4242
-        sock.connect(("127.0.0.1",4242))
+        sock.connect((config.nk_server, config.nk_port))
         # On passe en SSL
         sock=ssl.wrap_socket(sock,ca_certs='../keys/ca_.crt')
         # On fait un hello
-        sock.write('hello "Basile"')
+        sock.write('["hello", "Basile"]')
         # On récupère la réponse du hello
         out=sock.read()
         out=json.loads(out)
@@ -92,12 +92,12 @@ def connect_NK():
 def login_NK(username,password,typ="bdd"):
     sock=connect_NK()
     if typ=="special": # ça c'est pour Basile lui-même
-        masque='["note"]'
+        masque='[]'
     elif typ=="bdd":
-        masque='[["all"],["all"],false]'
+        masque='[[], [], true]'
     try:
         # Basile a un compte special user
-        commande='login [%s,%s,"%s",%s]'%(json.dumps(username),json.dumps(password),typ,masque)
+        commande='["login", [%s,%s,"%s",%s]]'%(json.dumps(username),json.dumps(password),typ,masque)
         sock.write(commande)
         out=sock.read()
     except Exception as exc:
@@ -169,7 +169,8 @@ class UnicodeBotError(Exception):
 
 class CrashError(Exception):
     """Pour pouvoir faire crasher Basile, parce que ça a l'air drôle"""
-    pass
+    def __init__(self, msg=u""):
+        Exception.__init__(self, msg)
 
 def bot_unicode(chain):
     try:
@@ -237,8 +238,6 @@ class Basile(ircbot.SingleServerIRCBot):
         log(self.serveur,"Connected")
         if self.debug:
             self.chanlist=["#bot"]
-        else:
-            serv.privmsg("ChanServ", "INVITE #note-dev")
         for c in self.chanlist:
             log(self.serveur,"JOIN %s"%(c))
             serv.join(c)
@@ -449,7 +448,7 @@ class Basile(ircbot.SingleServerIRCBot):
         elif cmd=="crash":
             if auteur in self.overops:
                 log(self.serveur,"priv",auteur," ".join(message)+"[successful]")
-                self.crash()
+                self.crash("priv", auteur)
             else:
                 notunderstood=True
         elif cmd=="reload":
@@ -538,7 +537,7 @@ class Basile(ircbot.SingleServerIRCBot):
             if len(message)==1:
                 if self.identities.has_key(auteur):
                     try:
-                        self.nk.write('search ["x",["pseudo"],%s]'%(json.dumps(self.identities[auteur])))
+                        self.nk.write('["search", ["x",["pseudo"],%s]]'%(json.dumps(self.identities[auteur])))
                         ret=json.loads(self.nk.read())
                         solde=ret["msg"][0]["solde"]
                         pseudo=ret["msg"][0]["pseudo"]
@@ -553,7 +552,7 @@ class Basile(ircbot.SingleServerIRCBot):
                     serv.privmsg(canal,"Je ne connais pas ton pseudo note.")
             elif auteur in self.ops:
                 try:
-                    self.nk.write('search ["x",["pseudo"],%s]'%(json.dumps(message[1])))
+                    self.nk.write('["search", ["x",["pseudo"],%s]]'%(json.dumps(message[1])))
                     ret=json.loads(self.nk.read())
                     solde=ret["msg"][0]["solde"]
                     pseudo=ret["msg"][0]["pseudo"]
@@ -607,7 +606,7 @@ class Basile(ircbot.SingleServerIRCBot):
                     self.reload(canal)
             elif cmd == "crash":
                 if auteur in self.overops:
-                    self.crash()
+                    self.crash(auteur, message)
             elif cmd in ["part","leave","dégage","va-t-en","tut'tiresailleurs,c'estmesgalets"]:
                 if auteur in self.ops and (not (canal in self.stay_channels)
                                            or auteur in self.overops):
@@ -654,7 +653,7 @@ class Basile(ircbot.SingleServerIRCBot):
                 if self.identities.has_key(auteur):
                     pseudo=self.identities[auteur]
                     try:
-                        self.nk.write('search ["x",["pseudo"],%s]'%(json.dumps(pseudo)))
+                        self.nk.write('["search", ["x",["pseudo"],%s]]'%(json.dumps(pseudo)))
                         ret=json.loads(self.nk.read())
                         solde=ret["msg"][0]["solde"]
                         pseudo=ret["msg"][0]["pseudo"]
@@ -864,8 +863,9 @@ class Basile(ircbot.SingleServerIRCBot):
         else:
             self.serv.privmsg(auteur,"Config reloaded")
     
-    def crash(self):
-        raise CrashError
+    def crash(self, chan="nowhere", who="nobody"):
+        where = u"en privé" if chan == "priv" else u"sur le chan %s" % chan
+        raise CrashError(u"Crash demandé par %s %s" % (who, where))
     
     def start_as_daemon(self, outfile):
         sys.stderr = Logger(outfile)