コンテンツにスキップ

IRC

HUBOTを使ったirc-bot作成メモ

①HUBOTを動かすために必要な諸々のインストール

準備として以下をインストールする

  • node.js(サーバー)
  • npm(パッケージ管理コマンド)
  • Redis(KVS)

上記をインストールするためにHomebrewのインストールから始める

$ ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go/install)"

これでHomebrewが入るはず

次にHomebrewを使ってそれぞれインストールする

まずnode.jsとnpm

$ brew install node

このコマンド一発でnode.jsとnpmが入るはず

$ node -v
v0.10.26
$ npm -v
1.4.6

Redisもインストール

$ brew install redis

Redisを起動しておく

$ redis-server &

②HUBOTをインストールする

GitHubからリポジトリをクローンしてインストール

$ cd git/
$ git clone git://github.com/github/hubot.git
$ cd hubot/
$ npm install -g hubot coffee-script

動くか確認

$ hubot
Hubot> 

OK

③HUBOTをircと連携させる

自分用のHUBOTを作る

$ hubot --create myhubot

myhubotの部分は自由に変更可。この名前のディレクトリが作られる

自分用HUBOTにhubot-ircをインストール

$ cd myhubot/
$ npm install hubot-irc --save && npm install

irc連携のためのスクリプトを書く

$ vim runhubot

中身はこんな感じ

$ cat runhubot
#!/bin/bash

export HUBOT_IRC_NICK="bot_kun"
export HUBOT_IRC_ROOMS="#target_channel"
export HUBOT_IRC_SERVER="irc.hogehoge.local"
#export HUBOT_IRC_PASSWORD="hoge"

bin/hubot -a irc --name myhubot

スクリプトの実行権限追加

$ chmod u+x runhubot 

起動スクリプト実行!

$ ./runhubot &

irc上でbotがいるか確認する

bot_kunがいたのでOK

④botにさせたいことを設定する

HUBOTにさせたいことはscriptsディレクトリ以下にCoffeeScriptもしくはJavaScriptで記述する

最初からいくつかのスクリプトが存在するので、それを参考に書けばOK

$ vim scripts/tell_fuga.coffee
$ cat scripts/tell_fuga.coffee
module.exports = (robot) ->

    robot.hear /hoge/, (msg) ->
        msg.send "fuga"

スクリプトを書いたら、再起動すると読み込んでくれる

$ ./runhubot &

⑤cronが使えるようにする

node-cronをインストール

$ npm install cron

cronを使ったスクリプトを書く

$ vim scripts/mention_hoge.coffee

今回は2時間おきに発言するスクリプトを書いてみた

$ cat scripts/mention_hoge.coffee 
cron = require('cron').CronJob
module.exports = (robot) ->
  robot.enter ->
  new cron
    cronTime: "0 0 */2 * * *"
    start: true
    timeZone: "Asia/Tokyo"
    onTick: ->
      robot.send {room: "#target_channel"}, "hoge"

参考資料