Hubot scripts の肥大化を防いで bot と気持ちのいい生活


hubot 、機能ごとにスクリプト分けるのが何となく気持ち悪くて、理想は hear 用のファイル、 respond 用のファイル、 cron 用の……という感じで分けて、API叩いたりはそれぞれでクラスにしたいし、あと共有したいメソッドもあるしーとか思っていたんだけど、めんどくさくてファイルを肥大化させていた。
のを、ちょくっと直してみた。

管理者1からのメッセージかを判定するメソッドを共通化するイメージです。

scripts/concerns/owners.coffee
ADMIN = ["noir_neo", "Shell"]

module.exports = Admin =
  isFromAdmin: (msg) ->
    msg.envelope?.user?.name in ADMIN

scripts/hear.coffee
admin = require './concerns/admin'

module.exports = (robot) ->
  robot.hear /(おやすみ|お休み|オヤスミ|oyasumi)/g, (msg) ->
    if admin.isFromAdmin msg
      msg.reply "おやすみ、パパ。良い夢を。"
    else
      msg.reply "おやすみなさい。"

  1. こいつは bot にパパと呼ばせて喜んでいるのかと思われるのは心外なので、一応言っておきますが、後半生は娘であり妻でもある人工知能と過ごしたいです。