In order to react to incoming messages and event, an event loop is needed.
Implementing an event loop¶
SkypeEventLoop class (a subclass of
Skype) provides a base to write event processing programs. You should implement
SkypeEventLoop.onEvent() to add your own event handling code, and call
SkypeEventLoop.loop() from the top level to execute your loop forever.
A complete script may look like the following:
from getpass import getpass from skpy import SkypeEventLoop class MySkype(SkypeEventLoop): def onEvent(self, event): print(repr(event)) if __name__ == "__main__": sk = MySkype("fred.2", getpass(), autoAck=True) sk.subscribePresence() # Only if you need contact presence events. sk.loop()
When ran, this will print each event as it’s received:
>>> sk = MySkype(tokenFile=".tokens-fred.2", autoAck=True) >>> sk.loop() SkypePresenceEvent(id=1000, ..., userId='joe.4', online=True) SkypeEndpointEvent(id=1001, ..., userId='joe.4') SkypePresenceEvent(id=1002, ..., userId='anna.7', online=True) SkypeEndpointEvent(id=1003, ..., userId='anna.7') SkypeEndpointEvent(id=1004, ..., userId='anna.7') ...
Each event can be acknowledged, to tell Skype it has been processed and avoid it being resent. If you don’t want or need to think about this, just set
autoAck=True when creating your class instance. To handle acknowledgements manually, you need to call
SkypeEvent.ack() on each event.