5分でできるRubotyのインストールとプラグインチュートリアル

RubotyはhubotクローンでRubyで書けるbotです。
このチュートリアルではRubotyのインストールとプラグインの作成方法を紹介します。
冗長な説明をあえて除きRubotyを動かすために重要な部分のみ解説することでスピーディにRubotyを動作できるようにしています。

Rubotyをローカルで動かす

以下のコマンドでinstallします。

1
$ gem install ruboty

以下のコマンドでひな形を作成します。
ruboty/ ディレクトリとその配下にGemfileが作成されます。

1
$ ruboty --generate

Rubotyを起動してみます。

1
2
3
$ cd ruboty
$ bundle install
$ bundle exec ruboty

すると対話型のプロンプトが起動します。

1
2
3
$ bundle exec ruboty
Type `exit` or `quit` to end the session.
>

ruboty pingコマンドを実行します。

1
2
> ruboty ping
pong

ruby helpコマンドで一覧が見れます。

1
2
3
4
> ruboty help
ruboty /help( me)?(?: (?<filter>.+))?\z/i - Show this help message
ruboty /ping\z/i - Return PONG to PING
ruboty /who am i\?/i - Answer who you are

Rubotyプラグインを作成する

Ruboty はhubotと同様にプラグインで拡張できます。

Helloプラグインを作成してみましょう。
Helloプラグインはhelloと挨拶すると、helloと挨拶を返すだけのプラグインです。

hello.rb

1
2
3
4
5
6
7
8
9
10
11
module Ruboty
module Handlers
class Hello < Base
on(/hello/i, name: “hello”, description: "こんにちは")

def hello(message)
message.reply("Hello!!")
end
end
end
end

Ruby::handlersの名前空間の下にプラグインの名前でクラスを作成し、on メソッドを定義します。
on メソッドの第1引数はコマンドです。正規表現で定義できます。
第2引数は呼び出すメソッド名、コマンドの説明等のオプションを指定します。

実行してみましょう。
-l オプションで読み込むファイルを指定することができます。

1
2
3
4
⇒  bundle exec ruboty -l hello.rb
Type `exit` or `quit` to end the session.
> ruboty hello
Hello!!

また、bot名のprefixなしに実行することもできます。
allオプションを使って実装します。

サンプルとして、ぬるぽプラグインを実装します。
これはぬるぽという言葉に反応するプラグインです。

nullpo.rb

1
2
3
4
5
6
7
8
9
10
11
module Ruboty
module Handlers
class NullPoHandler < Base
on(/.*(ぬるぽ|ヌルポ).*/, name: 'nullpo', description:'ぬるぽに反応します', all: true)

def nullpo(message)
message.reply("ガッ!!!!")
end
end
end
end

実行してみましょう。
-l オプションで読み込むファイルを指定することができます。

1
2
3
4
$ bundle exec ruboty -l nullpo.rb
Type `exit` or `quit` to end the session.
> ほげ ぬるぽ ほげ
ガッ!!!!

bot名のprefixがなくても反応していることが確認できます。

次回はSlackと連携させる方法を紹介します。