#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)
+