]>
gitweb.pimeys.fr Git - bots/basile.git/blob - nk.py
78b6594c1bd37d66d79ae0a1d185bea10db72ddb
6 """ Module de Basile pour dialoguer avec la NoteKfet2015 """
16 class NKError(Exception):
17 def __init__(self
,msg
):
18 Exception.__init
__(self
)
22 def __unicode__(self
):
23 return unicode(self
.msg
)
25 class NKRefused(NKError
):
28 class NKHelloFailed(NKError
):
31 class NKUnknownError(NKError
):
35 sock
= socket
.socket()
37 # On établit la connexion sur port 4242
38 sock
.connect((config
.nk_server
, config
.nk_port
))
40 sock
= ssl
.wrap_socket(sock
, ca_certs
='../keys/ca_.crt')
42 sock
.write(json
.dumps(["hello", "Basile"]))
43 # On récupère la réponse du hello
46 except Exception as exc
:
47 # Si on a foiré quelque part, c'est que le serveur est down
48 raise NKRefused(str(exc
))
49 if out
["retcode"] == 0:
51 elif out
["retcode"] == 11:
52 raise NKHelloFailed(out
["errmsg"])
54 raise NKUnknownError(out
["errmsg"])
57 def login(username
, password
, typ
="bdd"):
59 if typ
== "special": # ça c'est pour Basile lui-même
62 masque
= [[], [], True]
64 # Basile a un compte special user
65 commande
= ["login", [username
, password
, typ
, masque
]]
66 sock
.write(json
.dumps(commande
))
68 except Exception as exc
:
69 # Si on a foiré quelque part, c'est que le serveur est down
70 raise NKRefused(str(exc
))
71 return json
.loads(out
), sock
73 def get_solde(sock
, idbde
, serv
, canal
):
74 """Récupère le (solde, pseudo, success) de l'utilisateur NK n°``idbde``"""
76 sock
.write(json
.dumps(["compte", idbde
]))
77 ret
= json
.loads(sock
.read())
78 retcode
= ret
["retcode"]
80 solde
= ret
["msg"]["solde"]
81 pseudo
= ret
["msg"]["pseudo"]
82 return (True, solde
, pseudo
)
84 serv
.privmsg(canal
, ret
["errmsg"])
85 return (False, None, None)
86 except Exception as exc
:
87 trace
= traceback
.format_exc()
88 msg
= "failed\n%s" % trace
89 for l
in msg
.split("\n"):
90 serv
.privmsg(canal
, l
)
91 #log(self.serveur, "priv", auteur, " ".join(message) + "[failed]")
92 return (False, None, None)