Platform independent Python wrapper for the Skype Desktop API
.. contents:: :local:
Skype4Pyis a Python library which allows you to control Skype client application.
It works on Windows, OSX and Linux platforms with Python 2.x versions.
Support and issues on Github. Skype4Py is not a Skype™, not associated with Microsoft or Skype. For questions you can also use
stackoveflow.com with skype4py tag. Do not go for
Everything that you should ever need is available as aliases in the
Skype4Pypackage. Import it using the standard form of the
Importing the whole package into your script's namespace using
from Skype4Py import *is generally discouraged. You should also not access the modules in the package directly as they are considered an implementation detail and may change in future versions without notice.
The package provides the following:
Skype4Py.Skype, an alias for
Skype4Py.CallChannelManager, an alias for
Everything from the
'darwin'depending on the current platform (Windows, Linux, Mac OS X).
Skype4Py.SkypeError, an alias for
Skype4Py.SkypeAPIError, an alias for
The two classes exposed by the
Skype4Pypackage are the only ones that are to be instantiated directly. They in turn provide means of instantiating the remaining ones. They are also the only classes that provide event handlers (for more information about events and how to use them, see the
Every Skype4Py script instantiates at least the
Skype4Py.Skypeclass which gives access to the Skype client running currently in the system. Follow the
Skype4Py.skype.Skypereference to see what you can do with it.
Warning! While reading this documentation, it is important to keep in mind that everything needed is in the top package level because the documentation refers to all objects in the places they actually live.
This short example connects to Skype client and prints the user's full name and the names of all the contacts from the contacts list:
# Create an instance of the Skype class. skype = Skype4Py.Skype()
# Connect the Skype object to the Skype client. skype.Attach()
# Obtain some information from the client and print it out. print 'Your full name:', skype.CurrentUser.FullName print 'Your contacts:' for user in skype.Friends: print ' ', user.FullName
This short example shows how to send a message to a user. Credit goes to @amazpyel
python import Skype4Py import sys
skype = Skype4Py.Skype() skype.Attach() user = sys.argv message = ' '.join(sys.argv[2:]) skype.SendMessage(user, message)
Skype4Py uses two different naming conventions. The first one applies to interfaces derived from
Skype4COM_, a COM library which was an inspiration for Skype4Py. This convention uses the
CapCasescheme for class names, properties, methods and their arguments. The constants use the
The second naming convention is more "Pythonic" and is used by all other parts of the package including internal objects. It uses mostly the same
CapCasescheme for class names (including exception names) with a small difference in abbreviations. Where the first convention would use a
SkypeApiErrorname, the second one uses
SkypeAPIError. Other names including properties, methods, arguments, variables and module names use lowercase letters with underscores.
Below are projcts using Skype4Py library
Sevabot - A Skype bot supporting integration with external services written in Python_
Hubot-Skype - A Skype adapter for Hubot (CoffeeScript)_
If you get segfault on OSX make sure you are using
Debugging segmentation faults with Python_.
Related gdb dump::
Program received signal EXC_BAD_ACCESS, Could not access memory. Reason: KERN_INVALID_ADDRESS at address: 0x0000000001243b68 0x00007fff8c12d878 in CFRetain () (gdb) bt #0 0x00007fff8c12d878 in CFRetain () #1 0x00000001007e07ec in ffi_call_unix64 () #2 0x00007fff5fbfbb50 in ?? () (gdb) c Continuing.
Program received signal EXC_BAD_ACCESS, Could not access memory. Reason: KERN_INVALID_ADDRESS at address: 0x0000000001243b68 0x00007fff8c12d878 in CFRetain ()
Currently Skype4Py must be installed and run using
archcommand to force compatibility with 32-bit Skype client application.
arch -i386 pip install Skype4Py
Also when you run your application using Skype4Py prefix the run command with::
Segfault when starting up the bot::
File "build/bdist.linux-i686/egg/Skype4Py/skype.py", line 250, in __init__ File "build/bdist.linux-i686/egg/Skype4Py/api/posix.py", line 40, in SkypeAPI File "build/bdist.linux-i686/egg/Skype4Py/api/posix_x11.py", line 254, in __in it__ Skype4Py.errors.SkypeAPIError: Could not open XDisplay Segmentation fault (core dumped)
This usually means that your DISPLAY environment variable is wrong.
depending on your configuration before running Sevabot.
The default chats/groups created by current Skype versions can't be interacted with by Skype4Py. You'll get something like::
SkypeError: [Errno 105] Invalid chat name
You can check group type with /get name in the chat.
new cloud-type gives e.g.::
old p2p-type gives e.g.::
The workaround is to use /createmoderatedchat in any skype window to create a p2p-type chat which will work fine. More info at https://github.com/awahlig/skype4py/issues/34; thanks to @adampiskorski and @Reiner030 for the key info.
MS might have removed support for Skype4Py on the windows version. Install an older, or use linux.
If you want to create a bot you can use: https://www.skype.com/en/developer/ Skype bot preview developer program.
Here is an example::
virtualenv-2.7 venv # Create venv source venv/bin/activate python setup.py develop # Install Skype4Py in development mode cd unittests python skype4pytest.py # Execute tests
virtualenv-2.7 venv # Create venv source venv/bin/activate # Bump version in setup.py python setup.py develop # Install Skype4Py in development mode pip install collective.checkdocs python setup.py checkdocs # Check .rst syntax easy_install zest.releaser fullrelease
Skype™, associated trademarks and logos and the “S” logo are trademarks of Skype.
Skype4PyPython project is not affiliate of Skype or Microsoft corporation.