最近、プログラミングのハードルが高くて悶々としているぺろこです
デザイナーだって、プログラム書けるようになりたい。 書けないの悔しい。 書ける方がかっこいい。
エンジニアさんには「何かひとつ作ってみたらわかるよ」って言っているし、
エンジニアもすなるHubot-scriptといふものを、デザイナーもしてみむとてするなり。
こんな古文もあったような気がするし、 せっかくだから作ってみよう!
ということで、思い立ってHubot-scriptを作ってみました。
今回のお題
開発ブログの執筆がついつい滞りがちになるので、 弊社のhubot、otobotくんにリマインドしてもらいたい。
このお題を選んだ経緯
※ ksatoは元ネタを書いた人と働いていた
やりたいこと
- 毎日17:00に
- team-dev-blogチャンネルで
- ランダムにメッセージを送信する
- ただし、チャンネルメンバーのうち誰か一人にメンション(@+name)すること
作ったもの
# Description:
# A hubot script remind that writing a blog.
#
# Requirement:
#
# Dependencies:
# cron.js
#
# Commands:
#
# Author:
# @peroko
CronJob = require('cron').CronJob
module.exports = (robot) ->
# 投稿する時間のデフォルトを定義
sendTime = process.env.WRITE_BLOG_TIME_PATTERN || "00 17 * * 1-5"
# 投稿する部屋のデフォルトを定義
room = process.env.WRITE_BLOG_SEND_ROOM || "team-dev-blog"
messages = [
'ブログ書いた?・ω・',
'ブログ、書いてほしいな〜(◍´◡`◍)',
'ブログの下書きできた?(☼◡☼)',
'ま〜だかな ま〜だかな〜〜〜♪( ・ิω・ิ)',
'ԅ( ˘ω˘ԅ) 肩揉みますか?',
'いつ書くの?ʕ•ᴥ•ʔ 今日?明日?',
'(∩`ω´)⊃)) しゅっしゅっ (更新ボタンを押す準備は万端です)',
'どう?いい調子?ヽ(`◕ ω ◕)ノ',
'最近どう?(◍´◡`◍)',
'いつになったら...ブログ書いてくれるの(´・ε・̥ˋ๑)',
'更新は今日かな? 明日かな? ٩(๑❛ᴗ❛)人(❛ᴗ❛ ๑)۶',
'ブログ書いてくれたら・・・Ʊ”-ʓ(っ´ω`)っ :beers: ⊂(´ω`⊂ )Ʊ”-ʓ',
'٩(•౪• ٩)そういえばブログどんなかんじ?',
'ブログの進捗いかがですかっ( ✧Д✧) カッ!!'
]
messageFunc = () ->
users = robot.brain.data.users
roomMembers = []
for key, member of users when member.room is room
roomMembers.push member.name if member.name isnt robot.name
# メンバーをランダム選択
selectedMember = roomMembers[Math.floor(Math.random() * roomMembers.length)]
# メッセージをランダム選択
message = messages[Math.floor(Math.random() * messages.length)]
# 選ばれたメンバーがasmzさんだった場合はメッセージの前にビールの絵文字を追加
if selectedMember == 'asmz'
message = " :beer: #{ message }"
message = "@#{ selectedMember } #{ message }"
robot.send {room: "#" + room}, message
# デバッグのためにコマンドきっかけでも反応するようにする
robot.respond /blog-remind$/i, messageFunc
new CronJob sendTime, messageFunc, null, true, 'Asia/Tokyo'
結果
とりあえず動くようになった、が、、、、
robot.brain.data.usersのusersに紐づくroomは'その人が最後に発言したチャンネル'が入るらしく、ここが常時team-dev-blogになってるユーザーはほとんどいない・・・。ユーザー名の取得を考え直す必要があるということがわかりました;;
ここに最後につぶやいて退社された先輩だけが、常にこの条件に当てはまっているので、 otobotくんが毎日17時に、退社なさった先輩プログラマーにむけて投稿し続けていて、本当に悲しい・・・・。
お礼
Thanks for @asmz, @bito, @ksato ここまで来るまでに、にアドバイスをたくさんもらって修正してきたのですが、その過程を書くには記憶が薄れてしまいました〜〜〜〜ごめんなさい〜〜〜〜笑 エンジニアさんがみんな親切なので、みんなオトバンクに入るといいと思います
次、何を作ろうかな〜
参考にした記事
元ネタは@sotarokさんのこれです qiita.com
どんなメソッドがあるかわからない!と思ったらここに書いてありました。 github.com
cron.jsのパッケージ導入はこれを参考にさせていただきました。 qiita.com
cron記法はここを参照しました。
