pseudo = ret["msg"]["pseudo"]
return (True, solde, pseudo)
else:
- serv.privmsg(canal, ret["errmsg"])
+ serv.privmsg(canal, ret["errmsg"].encode("utf-8"))
return (False, None, None)
except Exception as exc:
trace = traceback.format_exc()
#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"]
+ boutons = [b for b in boutons if b["label"].lower() == conso.lower()]
+ if len(boutons) == 0:
+ serv.privmsg(canal, (u"Impossible de trouver la conso %s" % (conso)).encode("utf-8"))
+ return False
+ bouton = boutons[0]
+ 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.encode("utf-8"))
+ else:
+ success, solde, pseudo = get_solde(sock, idbde, serv, canal)
+ if success:
+ serv.privmsg(canal, (u"%s consomme 1 %s (nouveau solde : %.2f)" % (pseudo, bouton["label"], solde/100.0)).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)
+