멤버의 생일 축하 메시지를 Hubot에서 Slack으로 흘리기

4972 단어 슬랙Hubot
회원의 생일 축하 메시지를 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를 넣어 즐거운 분위기가 되면 좋구나.



참고



  • node-cron
  • 좋은 웹페이지 즐겨찾기