Herokuでhubotを使ったIRC botを動かす
最近、会社でIRCブームが来てるので、僕もhubotを使ってなにかbotを作ってみることにした。hubotはGithubが作ったbotフレームワークで、TwitterのbotとかIRCのbotを簡単に作ることができる。
で、できたのがこれ。
https://github.com/naoty/diobot
ディオ(DIO)様の名言をランダムに返してくれる、最高に「ハイ!」なbotが出来上がりました。
Herokuでhubotをデプロイするときにhubotのwiki*1を参考にしてみたんだけど、Herokuにpushすると、下のようなエラーが出てぜんぜんうまくいかなかった。
Starting process with command `bin/hubot -a irc -n Hubot` Stopping all processes with SIGTERM bin/hubot: 3: npm: not found Process exited with status 0
結局、このwikiは参考にせずに自力でなんとかしたので、その記録をちゃんとメモに残しておこうと思う。
package.json
$ mkdir diobot $ cd diobot $ vi package.json { "name": "diobot", "version": "0.0.1", "author": "naoty", "description": "DIO sama at irc", "license": "MIT", "dependencies": { "hubot": "*", "hubot-scripts": "*", "optparse": "*", "hubot-irc": "*", "coffee-script": "*", "underscore": "*" }, "engines": { "node": "0.8.x", "npm": "1.1.x" } } $ npm install
dependencies
にあるパッケージは、先述のwikiに従ってたときに使ってたpackage.jsonに書いてあったのでそのまま使った。- あと、
coffee-script
はデプロイ時にエラーになったので追加した。 underscore
は便利なので、とりあえず追加した。
Procfile
$ vi Procfile bot: hubot -a irc -n DIO
- Herokuによると*2、Heroku側で
bin:node_modules/.bin:/usr/local/bin:/usr/bin:/bin
にPATHを通してくれるので、Procfileではhubot
とすればいい。 -a <Adapter名> -n <IRCのニックネーム>
をオプションにつける。
Herokuにデプロイ
$ git push heroku master ... $ heroku ps:scale bot=1 $ git config:add HUBOT_IRC_SERVER='irc.example.com' HUBOT_IRC_ROOMS='#hoge' HUBOT_IRC_NICK='DIO' HUBOT_IRC_PORT='6667' HUBOT_IRC_PASSWORD='hogehoge'
スクリプトを追加
$ mkdir scripts $ vi scripts/ping.coffee module.exports = (robot) -> robot.respond /PING$/i, (msg) -> msg.send 'PONG'
scripts/
以下にあるスクリプトは自動で読み込まれて有効になる。- これをデプロイして
dio ping
って送ったらPONG
とDIOが返したら成功。 - あとは、工夫して面白いbotを作るだけ。
Enjoy!