メンバーの誕生日にお祝いのメッセージを Slack に流す Hubot スクリプトです。リモートワークでなかなか会わないメンバーもいるので、賑やかにチーム感を出したいなと思って作りました。
Heroku 側
タイムゾーンを指定。Heroku の Config Variables に次の内容を設定。Heroku 管理画面 > Setting からでも、コマンドラインからでも設定可能。
TZ
…Asia/Tokyo
コマンドラインから $ heroku config:add TZ=Asia/Tokyo
でも可。
Hubot スクリプト
node-cron を使うので入れておく。
$ npm install cron --save
#
# Description:
# 誕生日を祝うよ
#
# Commands:
#
#
cronJob = require('cron').CronJob
module.exports = (robot) ->
bdSay = (slackname, name, month, day) ->
# 「秒」「分」「時」「日」「月」「曜日」
# 月は0~11
month2 = Number(month)-1
cronTime = "0 0 9 #{day} #{month2} *"
new cronJob(cronTime, () =>
envelope = room: "<メッセージ流したいチャンネル>"
say = """
```
#{month} 月 #{day} 日は #{name} の誕生日!
.。☆.゚。.。
。:☆・。゚◇*.゚。
・◎.★゚.@☆。:*・.
.゚★.。;。☆.:*◎.゚。
:*。_☆◎。_★*・_゚
\ξ \ ζ/
∧_∧\ ξ
(`・ω・)/
/ つ∀o オメデトウ!!
```
HAPPY BIRTHDAY! @#{slackname}
"""
robot.send envelope, say
, null, true
)
bdSay('a-san', 'Aさん', 6, 25)
bdSay('b-san', 'Bさん', 11, 18)
設定
<メッセージ流したいチャンネル> を自分の環境にあわせて変更。
bdSay('a-san', 'Aさん', 6, 25)
をメンバーの数だけ指定。
a-san となってるところは該当メンバーの Slack 名。
この例だと「Aさん」「Slack 名は a-san」「誕生日6/25」。
cron 部分 Timezone は、Heroku 側でタイムゾーンを指定しているため省略しています。
おわり
お祝いメッセージは AA にしてみました。AA 部分はヒアドキュメントで囲んでいるので、Slack 上で <pre>
で囲まれて表示されます。表示は次のような感じ。AA を入れて楽しい雰囲気になればいいなあと。