18
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

メンバーの誕生日にお祝いメッセージをHubotからSlackに流す

Posted at

メンバーの誕生日にお祝いのメッセージを Slack に流す Hubot スクリプトです。リモートワークでなかなか会わないメンバーもいるので、賑やかにチーム感を出したいなと思って作りました。

Heroku 側

タイムゾーンを指定。Heroku の Config Variables に次の内容を設定。Heroku 管理画面 > Setting からでも、コマンドラインからでも設定可能。

TZ
…Asia/Tokyo

コマンドラインから $ heroku config:add TZ=Asia/Tokyo でも可。

Hubot スクリプト

node-cron を使うので入れておく。
$ npm install cron --save

birthday.coffee
# 
# 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 を入れて楽しい雰囲気になればいいなあと。

slack-bd.png

参考

18
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?