Programming your own Jabber bot can be fun and helpful. This is
python-jabberbot
, a Jabber bot framework for Python that enables you to easily write simple Jabber bots. You can use your Jabber bots to provide information about your running systems, to make your website interact with your visitors or notify you about updates or changes you monitor with your Python scripts.
This Jabber bot is partly inspired by the xmpppy example bot.py, but designed to be re-usable and to make it easy to write small Jabber bots that do one thing and do it well.
License: GNU General Public License, Version 3 or later (GPLv3)
Dependencies
Documentation
- xmpppy API documentation (dependency)
- XMPP Standards Foundation (protocol documentation)
Debian Package
Thanks to Carl Chenet, python-jabberbot is now available as a Debian package for easy installation on Debian and derived systems:
- python-jabberbot in Debian
Download
- Current version: jabberbot-0.14.tar.gz (Released: 2011-07-31)
Development repository (Git)
You can get the latest and greatest code via Git:
git clone git://repo.or.cz/jabberbot.git
Usage
- Import the class:
from jabberbot import JabberBot, botcmd
- Subclass the
JabberBot
class - Add methods and decorate them with “@botcmd”. The signature of the methods should look like this:
def somecommand(self, mess, args)
– the methods should return the message sent back to the user as string (orNone
if the command gives no reply) - Create an instance of your bot, supplying username and password
- Call the
serve_forever()
method of your instance - You can call the
send()
method on your bot to send messages to specific users
Example code
from jabberbot import JabberBot, botcmd import datetime class SystemInfoJabberBot(JabberBot): @botcmd def serverinfo( self, mess, args): """Displays information about the server""" version = open('/proc/version').read().strip() loadavg = open('/proc/loadavg').read().strip() return '%snn%s' % ( version, loadavg, ) @botcmd def time( self, mess, args): """Displays current server time""" return str(datetime.datetime.now()) @botcmd def rot13( self, mess, args): """Returns passed arguments rot13'ed""" return args.encode('rot13') @botcmd def whoami(self, mess, args): """Tells you your username""" return mess.getFrom().getStripped() username = '[email protected]' password = 'my-password' bot = SystemInfoJabberBot(username,password) bot.serve_forever()
For ChangeLog, Further information, Links and Examples please go to the original site here