1.0.10 • Published 11 years ago
chivebot v1.0.10
chivebot
A pluggable slack bot based on Outgoing WebHooks.



Creating a custom bot
First, declare your dependencies
$ mkdir fembot && cd fembot
$ npm init
# ...
$ npm install --save chivebot
# also any additional plugins, e.g.
# $ npm install --save chivebot-weather
# $ npm install --save chivebot-coolfaces
# create the config file
$ touch config.json
# configure server (see below)
$ npm startThen define a start script in your package.json
"scripts": {
"start": "hapi -c config.json"
}Then configure your server and plugins.
{
"servers": [
{
"host": "0.0.0.0",
"port": "8000"
}
],
"plugins": {
"chivebot-coolfaces": {},
"chivebot-weather": {},
"chivebot": {
"trigger_word": "my_bot",
"user_name": "my_bot",
"token": "{webhook_token}"
}
}
}Options
user_name(String) - The username set for the bot. This is important as it filters messages such that the bot doesn't respond to itself.token(String) - The outgoing webhook token as provided by slack.trigger_word(String, optional) - If you configured a trigger word in slack, set it here so the messge text can be parsed correctly.
Plugins
Unfortunately, there's currently a lot of boilerplate with plugins. The simplest example of a plugin module can be found
in chivebot-coolfaces. The important part is that chivebot exports a
registerCommand API in which you register the command you want to trigger this plugin, along with the handler:
// When someone types `chivebot lives!` replay with a cool ascii face ᕙ(⇀‸↼‶)ᕗ
plugin.plugins.chivebot.registerCommand('lives!', function (raw, args, cb) {
cb(null, cool());
});The handler arguments are:
raw- the raw POST body as sent by Slackargs- the message, argv parsed. Sochivebot activate -c="Hello, world" -b arg2becomes['chivebot', 'activate', '-c="Hello, world"', '-b', 'arg2']which can then be handed off to a parser likeminimist.cb- the callback for pass back the desired response with the signaturefunction (err, text) {}