Another IRC bot, you say? Just what the world needed!
Cardinal is a modular, Twisted-based IRC bot written in Python. Batteries included!
Cardinal's goal is to make plugin development easy and powerful, and to fill in the gaps where other Python IRC bots fall short.
You can join us at #cardinal on the DarkScience IRC network (irc.darkscience.net/+6697 — SSL required)
What can Cardinal do?
Anything, as long as you're creative enough! But Cardinal does come with some plugins to get you started...
- Fetching URL information (custom parsers for Github, YouTube, and Wikipedia)
- On-the-fly Googling
- Weather lookup
- Last.fm integration
- Calculator & unit conversion
- Notes (use Cardinal as an info bot)
- Urban Dictionary definitions
- Admin control (hot load plugins, inspect running code, etc.)
- ... and more!
Plus, Cardinal is still in active development! Features are being added as quickly as they can be thought up and coded. But Cardinal's killer feature is the ease of writing new plugins.
It is recommended that you install and use Cardinal inside of a Python virtualenv. You can do so by running the following command inside of your cloned repository.
virtualenv -p /usr/bin/python2.7 . && source bin/activate
Make sure you have Python 2.7 installed, and run
pip install -r requirements.txt to install all Python dependencies.
Note: Make sure you have
libffi-dev installed on Debian (or the equivelant package for your distro) or installation of some dependencies may not work correctly.
config.json.example file to
config.json and modify it to suit your needs, or view Cardinal's command line options with
You should also add your nick and vhost to the
plugins/admin/config.json file in the format
nick@vhost in order to take advantage of admin-only commands.
Running Cardinal is as simple as typing
Cardinal plugins are designed to be simple to write while still providing tons of power. Here's a sample to show what a very simple plugin might look like:
from cardinal.decorators import command, help class HelloWorldPlugin(object): @command(['hello', 'hi']) @help("Responds to the user with a greeting.") @help("Syntax: .hello") def hello(self, cardinal, user, channel, msg): nick, ident, vhost = user.group(1), user.group(2), user.group(3) cardinal.sendMsg(channel, "Hello %s!" % nick) def setup(): return HelloWorldPlugin()
While it's not difficult to write plugins for Cardinal, lots of optional functionality is provided, and thus this section is too large to include in the README. Please visit the wiki to learn about writing plugins.
If you have found a bug, feel free to submit a patch or simply open an issue on this repository.
If you're submitting a pull request, you may add your name to the CONTRIBUTORS file with a separate commit in the same branch as your modification.
Cardinal is a public, open-source project, licensed under the MIT License. Anyone may contribute.