Kōenji

とうきょうとすぎなみく

Hubot の Ruby 版 Rubo 作った

Github 社製の Bot フレームワーク Hubot の Ruby 版 Rubo 作った

どうでも良い話

Hubot のメッセージを受け取って正規表現でマッチングしてメッセージを返したり返信したり音楽を再生したりという構造が自作ツイッターのツイートとかイベントとか保存したり通知したりする便利ライブラリと似ている箇所があり自作ツイッター(中略)ライブラリをさらなる高みを目指して開発するための参考になるからだとかブラウザ以外のプラットフォームで極力 JavaScript 書きたくないからだとかどうせ外に出てもチョコレート貰えないしだとか雪降って外に出られなくて暇だしとかそんな理由で書いた

インストール

下記コマンドでインストール出来る

$ gem install rubo

使い方

こんな感じで使える

$ rubo --adapter=shell
Rubo> rubo help
Rubo die - End rubo process
Rubo echo <text> - Reply back with <text>
Rubo fake event <event> - Triggers the <event> event for debugging reasons
Rubo help - Displays all of the help commands that Rubo knows about.
Rubo help <query> - Displays all help commands that match <query>.
Rubo ping - Reply with pong
Rubo show storage - Display the contents that are persisted in the brain
Rubo show users - Display all users that rubo knows about
Rubo the rules - Make sure rubo still knows the rules.
Rubo time - Reply with current time
Rubo> rubo ping
PONG
Rubo> rubo echo にゃーん
にゃーん
Rubo> rubo show users
1 Shell

Rubo> rubo the rules
第一条 ロボットは人間に危害を加えてはならない。また、その危険を看過することによって、人間に危害を及ぼしてはならない。
第二条 ロボットは人間にあたえられた命令に服従しなければならない。ただし、あたえられた命令が、第一条に反する場合は、この限りでない。
第三条 ロボットは、前掲第一条および第二条に反するおそれのないかぎり、自己をまもらなければならない

よく分かんないんだけど具体的に何が出来るの

Rubo Adapter(Rubo が動ける場所)

  • シェル

Rubo Plugin(Rubo が出来ること)

  • ヘルプの表示
  • ロボット三原則
  • ピング
  • 偽装イベントの発火

まだ最低限の部分しか書いてないのでシェルでしか動かない
クエリを投げたらラーメン画像検索してきてくれたりもしない

もっと色々させたいんだけど

  • rubo- から始まる名前の Gem がインストールされてる場合は全て自動的に読み込まれる

  • 下記コマンドオプションで指定ディレクトリ内の .rb ファイルを全て読み込んで起動することが出来る

$ rubo --require "/path/to/my_beautiful_plugins"

Plugin の書き方はピングのソースを読めばなんとなく雰囲気を掴めると思う

これからやりたいこと

Rubo Adapter

  • Twitter
  • Idobata
  • ChatWork

Rubo Plugin

  • 便利そうなやつを片っ端から

を書いていきたい