今日の午前中を使って、hubot-queueというhubot scriptを作ってみました。
TAKAyukiatkwsk/hubot-queue
hubot-queue
文字列を格納できるQueueを提供します。ただそれだけ。
使い方はREADMEを見ていただけるとお分かりいただけると思います。
enqueue
とdequeue
というコマンドしか用意していません。(今のところ)
以下に使用例を挙げておきます。storageのqueue.Shell
に配列で文字列が格納されています。
デフォルトではコマンドを叩いたユーザーの名前がqueueのkeyになります。
Hubot> hubot enqueue hello world Hubot> hubot enqueue hello hubot Hubot> hubot show storage Hubot> { users: { '1': { id: '1', name: 'Shell', room: 'Shell' } }, _private: {}, queue: { Shell: [ 'hello world', 'hello hubot' ] } } Hubot> hubot dequeue Hubot> hello world Hubot> hubot dequeue Hubot> hello hubot
なんで作ろうと思ったのか
朝シャワーを浴びているときにパッと思いついて作りました。 「あとで読む」みたいな記事とかサイトをとりあえずここに突っ込んでおいて、 暇なときに取り出して続きを読む、みたいなのを気軽にやりたいなと思って作った次第です。
参考にした記事
- hubot-scriptを公開する方法(npm編) - Make 鮫 noise
- 自作 hubot script の npm への公開方法が参考になりました!
- Hubotでいない人に伝言を残すスクリプト - MANA-DOT
- robot.brain の使い方が参考になりました
- Node.js - node-inspector で hubot をデバッグする - Qiita
- hubot script のデバッグ方法です
- hubot/docs/scripting.md at master · github/hubot
- hubot script の書き方
ハマったところ
- パッケージ化してexternal-scriptsとして読み込もうとしたのですが、
Error loading scripts from npm package
と怒られてしまった- グローバルでインストールしたHubotを実行していたのが原因
- カレントディレクトリで
bin/hubot
で実行すれば問題なくパッケージ読み込めた - ここに書いてある https://github.com/github/hubot/tree/master/docs
- Queueに入れるデータをJSON化して保存しようと思ったが断念した
- データ型によって文字列だったらクオーテーションを文字列として追加するとか、数値型はそのままでいいとか、厄介だった
あとがき
チャットで使うときにhubot dequeue
の結果がコマンドとして実行されるようになるとおもしろそう。(できるのか??)
あとちゃちゃっと作ったのでQueueのサイズを全然気にしていません。Redisに格納できるサイズってどんなもんなんだろうか...。
そういえば、これが初めてのnpm publishとなりました。