Grenade Sandwich Explosive thoughts on code, technology and life by Steven Merrill

Dude, Where's My Bot?

Posted on 05 Oct 2011. Filed under .

Say what you will about node.js, but it is certainly an easy way to build IRC bots with the Jerk library.

The PHP-based bot that runs in the Treehouse Agency IRC channels knows to respond to "Sweet!" with "Dude!" and vice versa. Brian McMurray said that he'd like to someday write a quick-and-dirty bot that would put our other bot into an infinite loop.

I accepted that challenge, and 10 minutes later, the bot was done.

The code is an example of how to build a bot that accepts environmental variables for configuration and otherwise does a pretty silly task.

All in all, node makes this really simple.

var jerk = require('jerk'),
    channel = ('SWEETDUDEBOT_CHANNEL' in process.env)? process.env.SWEETDUDEBOT_CHANNEL : '#yourchannel',
    options = {
      server: ('SWEETDUDEBOT_SERVER' in process.env)? process.env.SWEETDUDEBOT_SERVER : 'chat.freenode.net',
      nick: ('SWEETDUDEBOT_NICK' in process.env)? process.env.SWEETDUDEBOT_NICK : 'sweetdudebot',
      port: ('SWEETDUDEBOT_PORT' in process.env)? process.env.SWEETDUDEBOT_PORT : '6667',
      flood_protection: true,
      channels: [channel]
    };

var sweet_dude_bot = jerk(function(j) {
  j.watch_for( /^(Sweet|Dude)!$/, function(message) {
    var result = message.match_data[1];
    if (!result)
      return;

    switch (result) {
      case "Sweet":
        message.say("Dude!");
        break;
      case "Dude":
        message.say("Sweet!");
        break;
    }
  })
}).connect(options)

You can fork node-sweetdudebot or its predecessor, node-sedbot on GitHub. Enjoy!