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