まるちゃんbotにこんな機能つけてみた

ギークハウス高円寺の妖精まるちゃん(@geekmaru)に機能をいくつか追加しました。
住人向けのアナウンスも兼ねてブログに書いておきます。

こんな機能です

毎日4時にまるちゃんが「今日、ご飯いる?」と聞きます

それに対してこんな返信をしてあげると・・・

まるちゃんがその人数をカウントして五時半にまとめてお知らせしてくれます

==以下住人向けアナウンス==

使い方と注意点

4時のツイートについて
  1. 「今日、ご飯いる?」というつぶやきをtwittbot.netに登録しないでください。今度からは僕の書いたスクリプトで動きます(他のツイートは大丈夫)。
  2. ツイートするメンバーはぎーまるちゃんのリストから選出されます(https://twitter.com/#!/geekmaru/geekmaru-member
    1. このリストのメンバーを追加したり削除したりすると、その人も「ご飯いる?」の対象になってしまうので気をつけて。
5時半のツイートについて
  1. その日ご飯がほしかったら「ほしい」または「いる」という言葉を含めてまるちゃんにリプライして下さい
  2. その日ご飯を作ってくれる場合は「つくる」または「作る」という言葉を含めてまるちゃんにリプライして下さい。

こんなツイートでもまるちゃんは拾ってくれます。

  • 以下すべて「ご飯食べたい人リスト」に入ります
    • @geekmaru ほしいー
    • いるー @geekmaru
    • @geekmaru abcdefほしいです012345
  • 以下すべて「ご飯つくるひとリスト」に入ります
    • @geekmaru 作る
    • @geekmaru ああああつくる
  • リストが同じなら同一人物を二回はカウントしない。
    • @geekmaru いるほしいつくる作る(「ご飯食べたい人リスト」「つくる人リスト」は各一回ずつだけ入ります。)

補足

  1. ご飯をつくる人や食べたい人がいなかった場合、その部分はツイートされません。(両方いなかった場合五時半に何もツイートしません)
  2. ちなみこの技術はtwitterアカウントとリストがあればどこでも応用可能ですので使いたかったらどうぞ。

==住人向けアナウンスここまで==

技術的なお話

  • 「どうやったら昨日の『ほしい』というリプライを拾わないのか」というのを考えるのが多少面倒だけど毎日strtotimeでとった時間を保存すれば簡単でした。思ったより拡張性もありそう。
  • strtotimeで取得した時間は無駄にmongoDBを使って保存しています
  • mongoDBの特性は悲しいくらい活かしていません
  • twitterAPIにアクセスするクラスとmongoDBを使ってアクセスするクラスはsingletonパターンで作ったら非常に相性がよくてやりやすかったです

コードはgithubで公開しています:https://github.com/gong023/public-product/tree/master/marubot