diff options
Diffstat (limited to 'chat.py')
-rw-r--r-- | chat.py | 21 |
1 files changed, 18 insertions, 3 deletions
@@ -16,12 +16,16 @@ # MA 02110-1301, USA. import xmpp +import threading + from gi.repository import GObject class ChatClient(GObject.GObject): __gsignals__ = {'message-received': (GObject.SignalFlags.RUN_FIRST, None, + [str, str]), + 'presence-changed': (GObject.SignalFlags.RUN_FIRST, None, [str, str])} def __init__(self, user, password): @@ -32,16 +36,27 @@ class ChatClient(GObject.GObject): self._client.connect() self._client.auth(jid.getNode(), password) self._client.RegisterHandler('message', self._message_received_cb) + self._client.RegisterHandler('presence', self._presence_cb) self._client.sendInitPresence() - GObject.timeout_add(1000, lambda: self._client.Process(1)) + # Starts XMPP Client loop + threading.Thread(target=self.run).start() + + def run(self): + while self._client.Process(1): + pass def _message_received_cb(self, client, message_node): user = message_node.getFrom() body = message_node.getBody() self.emit('message-received', user, body) + def _presence_cb(self, client, presence_protocol): + user = presence_protocol.getNick() + status = presence_protocol.getStatus() + self.emit('presence-changed', user, status) + def send_message(self, user, text): message = xmpp.Message(user, text) self._client.send(message) @@ -63,8 +78,8 @@ if __name__ == '__main__': password = getpass.getpass() cc = ChatClient(user, password) - cc.send_message('yoa.bauza.92@facebook.com', 'Hola, yoa :)') + cc.send_message('aguzubiaga97@gmail.com', 'Hello from XMPPY :)') cc.connect('message-received', mr) loop = GObject.MainLoop() - loop.run()
\ No newline at end of file + loop.run() |