最近、プログラミングのハードルが高くて悶々としているぺろこです
デザイナーだって、プログラム書けるようになりたい。 書けないの悔しい。 書ける方がかっこいい。
エンジニアさんには「何かひとつ作ってみたらわかるよ」って言っているし、
エンジニアもすなる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記法はここを参照しました。