Posted at

Slackでreactionしてくれた人の情報を集める方法

More than 1 year has passed since last update.


はじめに


  • Slackでreactionしてくれた人の情報を集めたかった

  • マウスオーバーでも誰がリアクションしたかは確認できるけどユーザIDを正確に集めたかったので目ではやりたくない

  • プログラマたるもの楽をするために苦労をしたい

Screenshot from 2018-11-11 01-36-41.png


SlackのAPIを使う


  • reactions.getがあるのでこれを使えばよさそう

    https://api.slack.com/methods/reactions.get/test

    Screenshot from 2018-11-11 01-55-43.png


  • Required Argumentがtokenのみなので、このまま叩けばなんらか情報が取れるかと思ったけど以下レスポンスが返ってきた


{

"ok": false,
"error": "no_item_specified"
}


  • アイテムを特定できないとダメそうですね


    • アイテムはこいつらを指しているらしい (file, file comment, channel message, group message, or direct message)



  • 今回はchannel messageを特定できれば良いのでtimestampを調べることにした

  • messageのURLをコピーするとチャンネルIDとタイムスタンプがついている



  • chanMel とtimestampを設定してAPIを叩いてみたら欲しい情報が得られた


    • どうやらchannel messageの場合はchannelとtimestampは必須らしい(APIドキュメントのErrorsに書いてある)



            {

"name": "woman-gesturing-ok::skin-tone-4",
"users": [
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890"
],
"count": 19
}

※ ユーザIDはマスク済み


まとめ


  • reaction情報を集めたいメッセージのURLをコピーする

  • タイムスタンプのフォーマットをAPIに合わせる p1541732787005700->1541732787.005700`

  • channelとtimestampを使ってreactions.get apiをコールする