]> gitweb.pimeys.fr Git - bots/basile.git/commitdiff
On peut consommer des cocas \o/
authorVincent Le Gallic <legallic@crans.org>
Fri, 14 Jun 2013 01:12:42 +0000 (03:12 +0200)
committerVincent Le Gallic <legallic@crans.org>
Fri, 14 Jun 2013 01:12:42 +0000 (03:12 +0200)
basile.py
nk.py

index cd03e928289d24c5893adefcd263b5fdaf990091..b467ac85b33c72387723d45b1f3daa2fb813017b 100755 (executable)
--- a/basile.py
+++ b/basile.py
@@ -651,13 +651,16 @@ class Basile(ircbot.SingleServerIRCBot):
             elif cmd in [u"ping"] and not canal in self.quiet_channels:
                 serv.privmsg(canal, "%s: pong" % (auteur))
 
-            elif cmd in [u"solde", u"!solde"]:
+            elif cmd in [u"solde", u"!solde", u"!coca"]:
                 if self.identities.has_key(auteur):
                     idbde = self.identities[auteur]["idbde"]
-                    success, solde, pseudo = nk.get_solde(self.nk, self.identities[auteur]["idbde"], serv, canal)
-                    if success:
-                        serv.privmsg(canal, "%s: %s (%s)" % (auteur, float(solde)/100, pseudo.encode("utf8")))
-                    log(self.serveur, canal, auteur, message + "[successful]" if success else "[failed]")
+                    if cmd in [u"solde", u"!solde"]:
+                        success, solde, pseudo = nk.get_solde(self.nk, self.identities[auteur]["idbde"], serv, canal)
+                        if success:
+                            serv.privmsg(canal, "%s: %s (%s)" % (auteur, float(solde)/100, pseudo.encode("utf8")))
+                    elif cmd in [u"!coca"]:
+                        success = nk.consomme(self.nk, self.identities[auteur]["idbde"], u"Coca", serv, canal)
+                    log(self.serveur, canal, auteur, message + ("[successful]" if success else "[failed]"))
                 else:
                     serv.privmsg(canal, "%s: Je ne connais pas votre pseudo note." % (auteur))
                     log(self.serveur, canal, auteur, message + "[unknown]")
diff --git a/nk.py b/nk.py
index 0ecf6f7c78ff9e3431bfaeef223306ae61304c88..6de4691497ac52b34fa01a47940d567b82e74fa9 100644 (file)
--- a/nk.py
+++ b/nk.py
@@ -107,3 +107,37 @@ def get_solde(sock, idbde, serv, canal):
         #log(self.serveur, "priv", auteur, " ".join(message) + "[failed]")
         return (False, None, None)
 
+def consomme(sock, idbde, conso, serv, canal):
+    """Fais consommer une conso à l'utilisateur NK n°``idbde``"""
+    try:
+        sock.write(json.dumps(["get_boutons", ["", ""]]))
+        ret = full_read(sock)
+        retcode = ret["retcode"]
+        if retcode == 0:
+            boutons = ret["msg"]
+            ibouton = [b["label"].lower() for b in boutons].index(conso.lower())
+            bouton = boutons[ibouton]
+            sock.write(json.dumps(["consos", [[bouton["id"], idbde, 1]]]))
+            ret = full_read(sock)
+            if ret["retcode"] == 0:
+                [[retcode, [idbouton, idbde], errmsg]] = ret["msg"]
+                if retcode != 0:
+                    serv.privmsg(canal, errmsg)
+                else:
+                    success, solde, pseudo = get_solde(sock, idbde, serv, canal)
+                    if success:
+                        serv.privmsg(canal, (u"%s consomme 1 %s (nouveau solde : %s)" % (pseudo, bouton["label"], solde)).encode("utf-8"))
+                    else:
+                        serv.privmsg(canal, (u"%s consommé mais impossible de récupérer le solde après transaction." % (bouton["label"])).encode("utf-8"))
+                    return True # on a réussi à consommer la conso
+            else:
+                serv.privmsg(canal, ret["errmsg"].encode("utf-8"))
+                return False
+        else:
+            serv.privmsg(canal, ret["errmsg"])
+    except Exception as exc:
+        trace = traceback.format_exc()
+        msg = "failed\n%s" % trace
+        for l in msg.split("\n"):
+            serv.privmsg(canal, l)
+