A Jabber Bot for my XMPP service. Written in Python.
- Python 3.4
- optional Vagrant
- if you use Vagrant: rsync
- if you use Vagrant und Windows: cygwin
The environment is based on Vagrant. But this is optional. You still can test und run everything without it but with Vagrant you don't have to care about anything. Just type a simple
$ vagrant upand everything will be set up for you. After that you can ssh into the VM
$ vagrant sshAfter that you can run all Python related commands within the VM. All dependencies and environment variables are already set for you. Now you can modify and add any file on the host just like in any development environment. If you are done you can synchronize your changes to the guest manually
$ vagrant rsyncIf you want to synchronize automatically every change you can do
$ vagrant rsync-autoin a separate terminal window.
All commands are defined in the jabberbot.commands package. If you want
to add a command to the bot you add a Python module with the name the command
should be. For example if you add the module foo.py to the
jabberbot.commands package the command will be available as !foo.
In foo.py you can make everything you want and everything you can do with
Python. The only thing that must exist is a function with the signature
def run_command(msg, *args):
return 'groupchat', 'hello world'This function will be called if a user wrote the command to the chat room. The
first argument msg is the raw XMPP message. The second argument
*args is a tuple with optional arguments. For example the user can call
a command without arguments like !help or with arguments like
!help foo bar.
run_command must return a tuple with two items. The first item defines
where the response should be sent. Either to the groupchat or as private
chat. The second item is the message as a string.
All unit tests run without any plugins. Everything is shipped with the Python standard library. Just run it with a simple
$ python -m unittestIf you want to test your command in a real world environment, a chat room, and not only in unit tests you can use the provided chatroom_test.py script. Just fill all predefined variables and run your script
$ python chatroom_test.py