From 4e90109e54ab90b5163aeaeb53de23751ae282ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B9=20=D0=92=D0=BB=D0=B0?= =?UTF-8?q?=D0=B4=D0=B8=D0=BC=D0=B8=D1=80=D0=BE=D0=B2=D0=B8=D1=87?= Date: Sat, 20 Feb 2016 00:21:25 +0300 Subject: [PATCH] upd tox --- src/tox.py | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 72 insertions(+), 4 deletions(-) diff --git a/src/tox.py b/src/tox.py index 6f05276..0233a05 100644 --- a/src/tox.py +++ b/src/tox.py @@ -202,7 +202,7 @@ class Tox(object): Return the time in milliseconds before tox_iterate() should be called again for optimal performance. :return: time in milliseconds """ - return int(self.libtoxcore.tox_iteration_interval(self._tox_pointer)) + return int(self.libtoxcore.tox_iteration_interval(self._tox_pointer).value) def iterate(self): """ @@ -808,12 +808,20 @@ class Tox(object): c_callback = tox_friend_typing_cb(callback) self.libtoxcore.tox_callback_friend_typing(self._tox_pointer, c_callback, c_void_p(user_data)) - # TODO create docs # ----------------------------------------------------------------------------------------------------------------- # Sending private messages # ----------------------------------------------------------------------------------------------------------------- def self_set_typing(self, friend_number, typing): + """ + Set the client's typing status for a friend. + + The client is responsible for turning it on or off. + + :param friend_number: The friend to which the client is typing a message. + :param typing: The typing status. True means the client is typing. + :return: True on success. + """ tox_err_set_typing = c_int() result = self.libtoxcore.tox_friend_delete(self._tox_pointer, c_uint32(friend_number), c_bool(typing), addressof(tox_err_set_typing)) @@ -822,10 +830,29 @@ class Tox(object): elif tox_err_set_typing == TOX_ERR_SET_TYPING['TOX_ERR_SET_TYPING_FRIEND_NOT_FOUND']: raise ArgumentError('The friend number did not designate a valid friend.') - def friend_send_message(self, friend_number, message_type, message, length): + def friend_send_message(self, friend_number, message_type, message): + """ + Send a text chat message to an online friend. + + This function creates a chat message packet and pushes it into the send queue. + + The message length may not exceed TOX_MAX_MESSAGE_LENGTH. Larger messages must be split by the client and sent + as separate messages. Other clients can then reassemble the fragments. Messages may not be empty. + + The return value of this function is the message ID. If a read receipt is received, the triggered + `friend_read_receipt` event will be passed this message ID. + + Message IDs are unique per friend. The first message ID is 0. Message IDs are incremented by 1 each time a + message is sent. If UINT32_MAX messages were sent, the next message ID is 0. + + :param friend_number: The friend number of the friend to send the message to. + :param message_type: Message type (TOX_MESSAGE_TYPE). + :param message: A non-None message text. + :return: message ID + """ tox_err_friend_send_message = c_int() result = self.libtoxcore.tox_friend_send_message(self._tox_pointer, c_uint32(friend_number), - c_int(message_type), c_char_p(message), c_size_t(length), + c_int(message_type), c_char_p(message), c_size_t(len(message)), addressof(tox_err_friend_send_message)) if tox_err_friend_send_message == TOX_ERR_FRIEND_SEND_MESSAGE['TOX_ERR_FRIEND_SEND_MESSAGE_OK']: return int(result.value) @@ -843,16 +870,57 @@ class Tox(object): raise ArgumentError('Attempted to send a zero-length message.') def callback_friend_read_receipt(self, callback, user_data): + """ + Set the callback for the `friend_read_receipt` event. Pass None to unset. + + This event is triggered when the friend receives the message sent with tox_friend_send_message with the + corresponding message ID. + + :param callback: Python function. Should take pointer (c_void_p) to Tox object, + The friend number (c_uint32) of the friend who received the message, + The message ID (c_uint32) as returned from tox_friend_send_message corresponding to the message sent, + pointer (c_void_p) to user_data + :param user_data: pointer (c_void_p) to user data + """ tox_friend_read_receipt_cb = CFUNCTYPE(None, c_void_p, c_uint32, c_uint32, c_void_p) c_callback = tox_friend_read_receipt_cb(callback) self.libtoxcore.tox_callback_friend_read_receipt(self._tox_pointer, c_callback, c_void_p(user_data)) + # ----------------------------------------------------------------------------------------------------------------- + # Receiving private messages and friend requests + # ----------------------------------------------------------------------------------------------------------------- + def callback_friend_request(self, callback, user_data): + """ + Set the callback for the `friend_request` event. Pass None to unset. + + This event is triggered when a friend request is received. + + :param callback: Python function. Should take pointer (c_void_p) to Tox object, + The Public Key (c_char_p) of the user who sent the friend request, + The message (c_char_p) they sent along with the request, + The size (c_size_t) of the message byte array, + pointer (c_void_p) to user_data + :param user_data: pointer (c_void_p) to user data + """ tox_friend_request_cb = CFUNCTYPE(None, c_void_p, c_char_p, c_char_p, c_size_t, c_void_p) c_callback = tox_friend_request_cb(callback) self.libtoxcore.tox_callback_friend_request(self._tox_pointer, c_callback, c_void_p(user_data)) def callback_friend_message(self, callback, user_data): + """ + Set the callback for the `friend_message` event. Pass None to unset. + + This event is triggered when a message from a friend is received. + + :param callback: Python function. Should take pointer (c_void_p) to Tox object, + The friend number (c_uint32) of the friend who sent the message, + Message type (TOX_MESSAGE_TYPE), + The message data (c_char_p) they sent, + The size (c_size_t) of the message byte array. + pointer (c_void_p) to user_data + :param user_data: pointer (c_void_p) to user data + """ tox_friend_message_cb = CFUNCTYPE(None, c_void_p, c_uint32, c_int, c_char_p, c_size_t, c_void_p) c_callback = tox_friend_message_cb(callback) self.libtoxcore.tox_callback_friend_message(self._tox_pointer, c_callback, c_void_p(user_data))