Hubot メモ

導入

Mac

npm で hubot と coffee-script をインストールする.

sudo npm install -g hubot coffee-script

各種コマンド

プロジェクトを作成する

hubot -c #{プロジェクト名}

ローカルで立ち上げる

bin/hubot

モジュールのインストール

Node.js のモジュールがインストールできる. --save オプションを付ける.

npm install --save hubot-cron

Hubot Scripting

ディレクトリ構造

  • bin: 実行ファイル
  • node_modules: npm install --save コマンドでインストールされたモジュール
  • scripts: 自作 Script の保管場所
  • Procfile: 実行命令
  • external-scripts.json
  • hubot-scripts.json
  • package.json: 設定

基本

bin/hubot で対話環境に入る.

> hubot ping
PONG

この挙動は scripts/ping.coffee で定義されている.

module.exports = (robot) ->
  robot.respond /PING$/i, (msg) ->
    msg.send "PONG"

Hubot は Node.js で動いているため, module.exportsrobot を引数とする関数を登録する. この robot の関数として respond というのが提供されている. この関数は第一引数に正規表現を書き, それにマッチしたメッセージを受け取った時, 第二引数の関数を実行する処理である.

ここでは /PING$/i正規表現である. $ があるので, 後方マッチで, かつ, i が付いているため, 大文字と小文字を区別しない. ゆえに, hubot ping に反応する.

また, robot.respond は hubot 自身に呼びかける必要がある.

関数群

Hubot Scripting が詳しい.

Heroku で動かす

以下の情報が正しい

SlackのHubotを導入する際にはまったところ(Heroku経由) - Qiita

Heroku の設定をする

heroku に login する

heroku login

Heroku に ssh key を add する

heroku keys:add

hubot-slack を入れる

npm install --save hubot-slack

Procfile を編集する

web: bin/hubot --adapter slack

push する

git と heroku に最新の commit を push する.

git push origin master
git push heroku master

Heroku に必要な情報を設定する

heroku config:add HUBOT_SLACK_TOKEN=token
heroku config:add HUBOT_SLACK_TEAM=team
heroku config:add HUBOT_SLACK_BOTNAME=botname
heroku config:add HUBOT_SLACK_CHANNELS=channelname
heroku config:add HUBOT_SLACK_CHANNELMODE=whitelist
heroku config:add HEROKU_URL=Heroku で設定された URL

channelmode を whitelist にするのが地味に重要. Channels も.