Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/chat.py
diff options
context:
space:
mode:
Diffstat (limited to 'chat.py')
-rw-r--r--chat.py21
1 files changed, 18 insertions, 3 deletions
diff --git a/chat.py b/chat.py
index dfaf6aa..42a1b7c 100644
--- a/chat.py
+++ b/chat.py
@@ -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()