Comeplete tgl.Peer methods.
This commit is contained in:
parent
ce4d9aff00
commit
ce34da49f4
233
python-types.c
233
python-types.c
@ -25,6 +25,8 @@ extern PyObject *TglError;
|
|||||||
extern PyObject *PeerError;
|
extern PyObject *PeerError;
|
||||||
extern PyObject *MsgError;
|
extern PyObject *MsgError;
|
||||||
|
|
||||||
|
// Forward type declarations
|
||||||
|
PyTypeObject tgl_PeerType;
|
||||||
|
|
||||||
// Utility functions
|
// Utility functions
|
||||||
PyObject* get_datetime(long datetime)
|
PyObject* get_datetime(long datetime)
|
||||||
@ -432,7 +434,7 @@ tgl_Peer_send_typing_abort (tgl_Peer *self, PyObject *args, PyObject *kwargs)
|
|||||||
|
|
||||||
PyObject *callback = NULL;
|
PyObject *callback = NULL;
|
||||||
|
|
||||||
if(PyArg_ParseTupleAndKeywords(args, kwargs, "O!|O", kwlist, &callback)) {
|
if(PyArg_ParseTupleAndKeywords(args, kwargs, "|O", kwlist, &callback)) {
|
||||||
PyObject *api_call;
|
PyObject *api_call;
|
||||||
|
|
||||||
if(callback)
|
if(callback)
|
||||||
@ -455,7 +457,7 @@ tgl_Peer_send_typing_abort (tgl_Peer *self, PyObject *args, PyObject *kwargs)
|
|||||||
static PyObject *
|
static PyObject *
|
||||||
tgl_Peer_rename_chat (tgl_Peer *self, PyObject *args, PyObject *kwargs)
|
tgl_Peer_rename_chat (tgl_Peer *self, PyObject *args, PyObject *kwargs)
|
||||||
{
|
{
|
||||||
static char *kwlist[] = {"peer", "title", "callback", NULL};
|
static char *kwlist[] = {"title", "callback", NULL};
|
||||||
|
|
||||||
char * title;
|
char * title;
|
||||||
PyObject *callback = NULL;
|
PyObject *callback = NULL;
|
||||||
@ -657,7 +659,7 @@ tgl_Peer_send_text (tgl_Peer *self, PyObject *args, PyObject *kwargs)
|
|||||||
static PyObject *
|
static PyObject *
|
||||||
tgl_Peer_chat_set_photo (tgl_Peer *self, PyObject *args, PyObject *kwargs)
|
tgl_Peer_chat_set_photo (tgl_Peer *self, PyObject *args, PyObject *kwargs)
|
||||||
{
|
{
|
||||||
static char *kwlist[] = {"peer", "filename", "callback", NULL};
|
static char *kwlist[] = {"filename", "callback", NULL};
|
||||||
|
|
||||||
char * filename;
|
char * filename;
|
||||||
PyObject *callback = NULL;
|
PyObject *callback = NULL;
|
||||||
@ -688,6 +690,222 @@ tgl_Peer_chat_set_photo (tgl_Peer *self, PyObject *args, PyObject *kwargs)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static PyObject *
|
||||||
|
tgl_Peer_chat_add_user (tgl_Peer *self, PyObject *args, PyObject *kwargs)
|
||||||
|
{
|
||||||
|
static char *kwlist[] = {"peer", "callback", NULL};
|
||||||
|
|
||||||
|
PyObject *peer;
|
||||||
|
PyObject *callback = NULL;
|
||||||
|
|
||||||
|
if(self->peer->id.type != TGL_PEER_CHAT) {
|
||||||
|
PyErr_SetString(PeerError, "Only a chat peer can have a user added.");
|
||||||
|
Py_XINCREF(Py_False);
|
||||||
|
return Py_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(PyArg_ParseTupleAndKeywords(args, kwargs, "O!|O", kwlist, &tgl_PeerType, &peer, &callback)) {
|
||||||
|
PyObject *api_call;
|
||||||
|
|
||||||
|
if(callback)
|
||||||
|
api_call = Py_BuildValue("OOO", (PyObject*) self, peer, callback);
|
||||||
|
else
|
||||||
|
api_call = Py_BuildValue("OO", (PyObject*) self, peer);
|
||||||
|
|
||||||
|
Py_INCREF(Py_None);
|
||||||
|
Py_XINCREF(api_call);
|
||||||
|
|
||||||
|
return py_chat_add_user(Py_None, api_call);
|
||||||
|
} else {
|
||||||
|
PyErr_Print();
|
||||||
|
Py_XINCREF(Py_False);
|
||||||
|
return Py_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static PyObject *
|
||||||
|
tgl_Peer_chat_del_user (tgl_Peer *self, PyObject *args, PyObject *kwargs)
|
||||||
|
{
|
||||||
|
static char *kwlist[] = {"peer", "callback", NULL};
|
||||||
|
|
||||||
|
PyObject *peer;
|
||||||
|
PyObject *callback = NULL;
|
||||||
|
|
||||||
|
if(self->peer->id.type != TGL_PEER_CHAT) {
|
||||||
|
PyErr_SetString(PeerError, "Only a chat peer can have a user deleted.");
|
||||||
|
Py_XINCREF(Py_False);
|
||||||
|
return Py_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(PyArg_ParseTupleAndKeywords(args, kwargs, "O!|O", kwlist, &tgl_PeerType, &peer, &callback)) {
|
||||||
|
PyObject *api_call;
|
||||||
|
|
||||||
|
if(callback)
|
||||||
|
api_call = Py_BuildValue("OOO", (PyObject*) self, peer, callback);
|
||||||
|
else
|
||||||
|
api_call = Py_BuildValue("OO", (PyObject*) self, peer);
|
||||||
|
|
||||||
|
Py_INCREF(Py_None);
|
||||||
|
Py_XINCREF(api_call);
|
||||||
|
|
||||||
|
return py_chat_del_user(Py_None, api_call);
|
||||||
|
} else {
|
||||||
|
PyErr_Print();
|
||||||
|
Py_XINCREF(Py_False);
|
||||||
|
return Py_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static PyObject *
|
||||||
|
tgl_Peer_history (tgl_Peer *self, PyObject *args, PyObject *kwargs)
|
||||||
|
{
|
||||||
|
static char *kwlist[] = {"offset", "limit", "callback", NULL};
|
||||||
|
|
||||||
|
int offset, limit;
|
||||||
|
PyObject *callback = NULL;
|
||||||
|
|
||||||
|
if(PyArg_ParseTupleAndKeywords(args, kwargs, "ii|O", kwlist, &offset, &limit, &callback)) {
|
||||||
|
PyObject *api_call;
|
||||||
|
|
||||||
|
if(callback)
|
||||||
|
api_call = Py_BuildValue("OiiO", (PyObject*) self, offset, limit, callback);
|
||||||
|
else
|
||||||
|
api_call = Py_BuildValue("Oii", (PyObject*) self, offset, limit);
|
||||||
|
|
||||||
|
Py_INCREF(Py_None);
|
||||||
|
Py_XINCREF(api_call);
|
||||||
|
|
||||||
|
return py_history(Py_None, api_call);
|
||||||
|
} else {
|
||||||
|
PyErr_Print();
|
||||||
|
Py_XINCREF(Py_False);
|
||||||
|
return Py_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static PyObject *
|
||||||
|
tgl_Peer_info (tgl_Peer *self, PyObject *args, PyObject *kwargs)
|
||||||
|
{
|
||||||
|
static char *kwlist[] = {"callback", NULL};
|
||||||
|
|
||||||
|
PyObject *callback = NULL;
|
||||||
|
|
||||||
|
if(self->peer->id.type == TGL_PEER_ENCR_CHAT) {
|
||||||
|
PyErr_SetString(PeerError, "Secret chats currently have no info.");
|
||||||
|
Py_XINCREF(Py_False);
|
||||||
|
return Py_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(PyArg_ParseTupleAndKeywords(args, kwargs, "O", kwlist, &callback)) {
|
||||||
|
PyObject *api_call;
|
||||||
|
|
||||||
|
if(callback)
|
||||||
|
api_call = Py_BuildValue("OO", (PyObject*) self, callback);
|
||||||
|
else
|
||||||
|
api_call = Py_None;
|
||||||
|
|
||||||
|
Py_INCREF(Py_None);
|
||||||
|
Py_XINCREF(api_call);
|
||||||
|
if(self->peer->id.type == TGL_PEER_USER)
|
||||||
|
return py_user_info(Py_None, api_call);
|
||||||
|
else
|
||||||
|
return py_chat_info(Py_None, api_call);
|
||||||
|
} else {
|
||||||
|
PyErr_Print();
|
||||||
|
Py_XINCREF(Py_False);
|
||||||
|
return Py_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static PyObject *
|
||||||
|
tgl_Peer_send_contact (tgl_Peer *self, PyObject *args, PyObject *kwargs)
|
||||||
|
{
|
||||||
|
static char *kwlist[] = {"phone", "first_name", "last_name", "callback", NULL};
|
||||||
|
|
||||||
|
char *phone, *first_name, *last_name;
|
||||||
|
PyObject *callback = NULL;
|
||||||
|
|
||||||
|
if(PyArg_ParseTupleAndKeywords(args, kwargs, "sss|O", kwlist, &phone, &first_name, &last_name, &callback)) {
|
||||||
|
PyObject *api_call;
|
||||||
|
|
||||||
|
if(callback)
|
||||||
|
api_call = Py_BuildValue("Osss", (PyObject*) self, phone, first_name, last_name, callback);
|
||||||
|
else
|
||||||
|
api_call = Py_BuildValue("Os", (PyObject*) self, phone, first_name, last_name);
|
||||||
|
|
||||||
|
Py_INCREF(Py_None);
|
||||||
|
Py_XINCREF(api_call);
|
||||||
|
|
||||||
|
return py_send_contact(Py_None, api_call);
|
||||||
|
} else {
|
||||||
|
PyErr_Print();
|
||||||
|
Py_XINCREF(Py_False);
|
||||||
|
return Py_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static PyObject *
|
||||||
|
tgl_Peer_send_location (tgl_Peer *self, PyObject *args, PyObject *kwargs)
|
||||||
|
{
|
||||||
|
static char *kwlist[] = {"latitude", "longitude", "callback", NULL};
|
||||||
|
|
||||||
|
PyObject *latitude, *longitude;
|
||||||
|
PyObject *callback = NULL;
|
||||||
|
|
||||||
|
if(PyArg_ParseTupleAndKeywords(args, kwargs, "O!O!|O", kwlist, &PyFloat_Type,
|
||||||
|
&latitude, &PyFloat_Type, &longitude, &callback)) {
|
||||||
|
PyObject *api_call;
|
||||||
|
|
||||||
|
if(callback)
|
||||||
|
api_call = Py_BuildValue("OOOO", (PyObject*) self, latitude, longitude, callback);
|
||||||
|
else
|
||||||
|
api_call = Py_BuildValue("OOO", (PyObject*) self, latitude, longitude);
|
||||||
|
|
||||||
|
Py_INCREF(Py_None);
|
||||||
|
Py_XINCREF(api_call);
|
||||||
|
|
||||||
|
return py_send_location(Py_None, api_call);
|
||||||
|
} else {
|
||||||
|
PyErr_Print();
|
||||||
|
Py_XINCREF(Py_False);
|
||||||
|
return Py_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static PyObject *
|
||||||
|
tgl_Peer_mark_read (tgl_Peer *self, PyObject *args, PyObject *kwargs)
|
||||||
|
{
|
||||||
|
static char *kwlist[] = {"callback", NULL};
|
||||||
|
|
||||||
|
PyObject *callback = NULL;
|
||||||
|
|
||||||
|
if(PyArg_ParseTupleAndKeywords(args, kwargs, "|O", kwlist, &callback)) {
|
||||||
|
PyObject *api_call;
|
||||||
|
|
||||||
|
if(callback)
|
||||||
|
api_call = Py_BuildValue("OO", (PyObject*) self, callback);
|
||||||
|
else
|
||||||
|
api_call = Py_BuildValue("O", (PyObject*) self);
|
||||||
|
|
||||||
|
Py_INCREF(Py_None);
|
||||||
|
Py_XINCREF(api_call);
|
||||||
|
|
||||||
|
return py_mark_read(Py_None, api_call);
|
||||||
|
} else {
|
||||||
|
PyErr_Print();
|
||||||
|
Py_XINCREF(Py_False);
|
||||||
|
return Py_False;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
static PyMethodDef tgl_Peer_methods[] = {
|
static PyMethodDef tgl_Peer_methods[] = {
|
||||||
{"send_msg", (PyCFunction)tgl_Peer_send_msg, METH_VARARGS | METH_KEYWORDS,
|
{"send_msg", (PyCFunction)tgl_Peer_send_msg, METH_VARARGS | METH_KEYWORDS,
|
||||||
"Send a message to peer object"},
|
"Send a message to peer object"},
|
||||||
@ -701,6 +919,13 @@ static PyMethodDef tgl_Peer_methods[] = {
|
|||||||
{"send_document", (PyCFunction)tgl_Peer_send_document, METH_VARARGS | METH_KEYWORDS, ""},
|
{"send_document", (PyCFunction)tgl_Peer_send_document, METH_VARARGS | METH_KEYWORDS, ""},
|
||||||
{"send_text", (PyCFunction)tgl_Peer_send_text, METH_VARARGS | METH_KEYWORDS, ""},
|
{"send_text", (PyCFunction)tgl_Peer_send_text, METH_VARARGS | METH_KEYWORDS, ""},
|
||||||
{"chat_set_photo", (PyCFunction)tgl_Peer_chat_set_photo, METH_VARARGS | METH_KEYWORDS, ""},
|
{"chat_set_photo", (PyCFunction)tgl_Peer_chat_set_photo, METH_VARARGS | METH_KEYWORDS, ""},
|
||||||
|
{"info", (PyCFunction)tgl_Peer_info, METH_VARARGS | METH_KEYWORDS, ""},
|
||||||
|
{"history", (PyCFunction)tgl_Peer_history, METH_VARARGS | METH_KEYWORDS, ""},
|
||||||
|
{"chat_add_user", (PyCFunction)tgl_Peer_chat_add_user, METH_VARARGS | METH_KEYWORDS, ""},
|
||||||
|
{"chat_del_user", (PyCFunction)tgl_Peer_chat_del_user, METH_VARARGS | METH_KEYWORDS, ""},
|
||||||
|
{"send_contact", (PyCFunction)tgl_Peer_send_contact, METH_VARARGS | METH_KEYWORDS, ""},
|
||||||
|
{"send_location", (PyCFunction)tgl_Peer_send_location, METH_VARARGS | METH_KEYWORDS, ""},
|
||||||
|
{"mark_read", (PyCFunction)tgl_Peer_mark_read, METH_VARARGS | METH_KEYWORDS, ""},
|
||||||
{NULL} /* Sentinel */
|
{NULL} /* Sentinel */
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1137,6 +1362,8 @@ static PyMemberDef tgl_Msg_members[] = {
|
|||||||
{NULL} /* Sentinel */
|
{NULL} /* Sentinel */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static PyMethodDef tgl_Msg_methods[] = {
|
static PyMethodDef tgl_Msg_methods[] = {
|
||||||
{NULL} /* Sentinel */
|
{NULL} /* Sentinel */
|
||||||
};
|
};
|
||||||
|
@ -32,6 +32,8 @@ def history_cb(msg_list, peer, success, msgs):
|
|||||||
tgl.get_history(peer, len(msg_list), HISTORY_QUERY_SIZE, partial(history_cb, msg_list, peer));
|
tgl.get_history(peer, len(msg_list), HISTORY_QUERY_SIZE, partial(history_cb, msg_list, peer));
|
||||||
|
|
||||||
|
|
||||||
|
def cb(success):
|
||||||
|
print(success)
|
||||||
|
|
||||||
def on_msg_receive(msg):
|
def on_msg_receive(msg):
|
||||||
if msg.out and not binlog_done:
|
if msg.out and not binlog_done:
|
||||||
@ -45,11 +47,8 @@ def on_msg_receive(msg):
|
|||||||
pp.pprint(msg)
|
pp.pprint(msg)
|
||||||
if msg.text.startswith("!ping"):
|
if msg.text.startswith("!ping"):
|
||||||
print("SENDING PONG")
|
print("SENDING PONG")
|
||||||
tgl.send_msg(peer, "PONG!", msg_cb)
|
peer.send_msg("PONG!", msg_cb)
|
||||||
|
peer.send_contact(msg.src.phone, msg.src.first_name, msg.src.last_name , cb)
|
||||||
if msg.text.startswith("!loadhistory"):
|
|
||||||
msg_list = []
|
|
||||||
tgl.get_history(peer, 0, HISTORY_QUERY_SIZE, partial(history_cb, msg_list, peer));
|
|
||||||
|
|
||||||
|
|
||||||
def on_secret_chat_update(peer, types):
|
def on_secret_chat_update(peer, types):
|
||||||
|
Loading…
Reference in New Issue
Block a user