block_given?

ジャングル ブロック ナイ アルノハ jump ダケ。CC-BY-SA 3.0

Rubotyすしゆきプラグインruboty-yasyを公開した

すしゆきを表示してくれる。 naoyaさんのhubot-sushiyukiをRubotyに移植した。

TL; DR

Rubotyプラグインをつくるのを楽にして、みんなに面白いスクリプトいっぱい公開してほしい。

ハマったところ

gemの名前被り

ruboty-sushiyukiが存在するのに気づかずに作り始めてしまい、別の名前にリネームしたりで手間どった。

部屋全体に流れているメッセージの受け取り方がわからなかった

Rubotyのハンドラーでonを使うと、デフォルトだと@rubotyで自分宛にきたメッセージにしか反応しない。 全体の発言に反応するためにはallオプションをtrueに設定する。

module Ruboty
  module Handlers
    class Yasy < Base
      on /寿司||スシ|:sushi:|?/, name: 'gossip', description: ':sushi: | 壁 | :ear:', all: true
    end
  end
end

元々がhubotのプロジェクトなのでgemを公開するのに必要なファイル群がない

bundle gemなどでgemのプロジェクトを作成するとrubygemsに公開するために必要なものが一通りそろっていて便利。

Rubotyで何かしらハンドラーとアクションを作る場合、lib/ruboty/handlers/your_handler.rblib/ruboty/your_gem/actions/your_action.rbが必要になる。

それらのファイルを作成するための補助的なコマンドが欲しい。 例えば、以下のようなイメージです。

  • ruboty gem your_gem
  • ruboty generate handler your_handler
  • ruboty generate action your_action

元々がhubotのプロジェクトなのでrubyじゃない

Hubotのスクリプトを移植するだけだがそれなりに手間がかかる。 HubotのスクリプトをRubotyのhandlerとして実行できるようなプラグインが求められている。 sstephenson/execjsなどを使って実現できないだろうか。

まとめ

Rubotyプラグインをつくるのを楽にして、みんなに面白いスクリプトいっぱい公開してほしい。

自分のプラグイン作成の体験から以下のようなことをやるともっと楽にプラグインつくれるんじゃないかなと考えます。

rubotyプラグインの作成の障壁を下げたい

毎日rubotyのプラグインを公開し続けて4日目になった。 私が一からrubotyのプラグインを作るお作法は以下の通りだった。 3の部分が以外と手間がかかる感触で、そこが無ければプラグイン作成の障壁が下がると思う。 上の方であげたruboty gemコマンドがあれば1や3を自動で作れるのではないだろうか。

  1. 既存のプラグインがないかrubygems.orgで確認する
  2. bundle gem ruboty-yoでgemを作る
  3. 会話に反応してリアクションをとるにはlib/ruboty/handlers/yolib/ruboty/your_plugin/actions/yo.rbのファイルが必要
  4. rake releaseで公開

HubotスクリプトをRubotyで動かす

今回はHubotスクリプトを人間が読んで解釈してRubotyにわかるように翻訳した。 Hubotのプラグインインターフェイスはある程度決まっている。 RubotyとHubotスクリプトの間をつなぐようなハンドラーがあれば、HubotスクリプトをそのままRubotyのスクリプトとして動かすことも出来るのではないかと考えている。