Running IRC Meetings with MeetBot

Running meetings is a black art at the best of times. Running them over IRC is a step more complex. Instead of audio, and people waiting turns, you’ve got a thousand monkeys typing a thousand thoughts. Async. On recommendation from @nslater’s involvement in another project, I gave MeetBot a try. It’s based on a venerable Python IRC bot called supybot, and while setup on debian is a piece of cake, it certainly wasn’t so obvious on my mac. Here’s how:

Installing SupyBot

Download supybot’s source and unpack it somewhere handy. Grab meetbot’s source too.

pushd /tmp
tar xvzf MeetBot-current.tar.gz
mv MeetBot-current/ircmeeting MeetBot-current/MeetBot/

Now we’re ready to install SupyBot along with required plugins.

mkdir ircbot && cd ircbot
virtualenv ircbot
source ircbot/bin/activate
which python pip
pushd /tmp/Supybot-
python install
mv /tmp/MeetBot-current/MeetBot ./ircbot/lib/python2.7/site-packages/supybot/plugins/MeetBot

Configuring SupyBot

There’s a wizard to do this, we have only a few answers to give but some items need to go in the config file afterwards.

Launch supybot-wizard and fill in the blanks!

The nickname you pick next will also be used for log and config files:

Setting up Plugins

From the last steps a bunch of plugin configuration has already been done. But we need a little bit more, including setting up:

Securing the Bot

Running the Bot

To start it, launch your python virtual env again as before, and just run supybot <your_bot_name.conf>. Then jump on IRC and PM your bot. You’ll need to authorise yourself user identify <admin> <passwd> before going further.

In the IRC channel you want to run a meeting, simply issue #startmeeting and follow on from there. Note how the bot changes topics, and make sure you use #info, #action and others liberally throughout the meeting. If you #link <some_url> this will be used as the base URL when the final logs and HTML output are generated.

Good luck!

Closing Thoughts

It was a real pain to install this the first time around. All the information is available but not in a single clean place. I almost completed a Node.js replacement in less time. More on that another time!