Skip to content
Find file
Fetching contributors…
Cannot retrieve contributors at this time
114 lines (76 sloc) 2.26 KB


A simple IRC bot that responds to commands. Inspired by Hubot. Implemented in Python.


Why not just use Hubot instead of writing a bot from scratch? It's because Hubot is implemented in CoffeeScript and runs on node.js. The IRC adapter for hubot is utterly broken and as we know, node.js is cancer.


$ virtualenv env --no-site-packages
$ source env/bin/activate
$ pip install -r requirements.txt
$ export SIFTER=yourapikey
$ export SNIPT_API_USER=sniptusername
$ export SNIPT_API_KEY=sniptapikey


To have Nigel join the #room:

$ python room


$ export ROOM=room
$ python

You can ignore all messages from a certain user by adding this environment variable:

$ export IGNORED="user1,user2"

This is useful if you don't care about what your build server says in the channel.

Available matchers


People often say things like all: brb, back in 20min and then when they come back they're like all: back. This matcher will track how long the user has been gone and tell them if they overshot their estimate.

arthur's g+

You can ask Nigel if Arthur's ISP is blocking Google+ today. It will respond to "is g+ blocked at arthur's house today?".


It will scan the room for mentions of Sifter issue numbers and reply with the issues's title and URL. Prefix numbers with #.


It will respond to "make me a sandwich" and "sudo make me a sandwich".


When someone greets the room with "all: hello" and the like, nigel will respond.


It will scan for .gif, .png, and .jpg images and add them to It will also respond to "<botname>: show me the gif" with random links to saved images.

Deploying to Heroku

$ git clone git://
$ cd nigel
$ heroku create --stack cedar
$ heroku config:add ROOM=room SIFTER=yourapikey SNIPT_API_USER=sniptuser SNIPT_API_KEY=sniptapikey
$ git push heroku master
$ heroku scale nigel=1


Mr. cz is responsible for the awesome name of this bot.


BSD, short and sweet

Something went wrong with that request. Please try again.