The repository is no longer being developed
Python module for receiving and sending message using XMPP protocol.
Requires python >=3.8, <3.10
Attention: Module DO NOT provide any layers of encryption. You use it at your own risk.
# using poetry
user@host:~$ poetry install
# using pip
user@host:~$ pip install .
user@host:~$ pip install xmppy
user@host:~$ makepkg xmppy
(using classmethod)
import xmppy.Messenger as xb
import subprocess as sp
def monitor():
return "Example message"
def reply(msg):
return sp.check_output(msg, shell=True).decode()
#send monitor() every 60 seconds and keep receiving reply()
Client = xb.Client.initialize("[email protected]", "password",
"[email protected]", monitor, reply, freq=60)
(only sending messages)
#send one message (for looping add freq param)
Client = xb.Client.sendMessage("[email protected]", "password",
"[email protected]", monitor)
(only receiving messages)
Client = xb.Client.receiveMessage("[email protected]", "password", reply)
Instead od entering data as parameters xmppy.Client("jid","pass","recipient"...)
you can use .ini file:
#example.ini
[configfile]
jid = [email protected]
password = qwerty123
# recipient input is optional.
# In order to use entry below you should mark recipient as None in Client constructor
# i.e. xmppy.Client("file", "example.ini", None, ...) Otherwise, this input will be ignored.
recipient = [email protected]
and change function call from .Client("[email protected]", "password", "[email protected]", ...)
to .Client("file", "<.ini file>", <None or [email protected]>, ...)
. Feature works with all calls from examples (1,2,3).
user@host:~$ xmppy -j <Jabber ID> -p <password> -t <recipient> -m <message>
(in progress...)
Client = xb.Client.initialize("[email protected]", "password",
"[email protected]", monitor, reply, freq=60, wait=True)
#temporarily doesn't support signing and receiving encrypted messages TODO!
Client.enableGPG("UID", "gnupghome_dir")
Client.run(wait=False)
TODO!