こんな感じにします。
内容
curl https://slack.com/api/channels.history\?token\=XXXXX\&channel\=YYYYY | jq -r '.messages | reverse | map((.ts | tonumber | .+32400 | todate) + " " + .text) | .[]'
(2015/12/07 追記)別解。あんまりスマートにならなかった。tacを使う手もあったけど手元の環境に入ってなかったので、インストールしてまで…という感じ。
curl https://slack.com/api/channels.history\?token\=XXXXX\&channel\=YYYYY | jq -r '.messages | reverse | .[] | [(.ts | tonumber | .+32400 | todate), .text] | join(" ")'
(2015/12/17 追記)markdownでtableになるバージョン。subとかgsub使いたかったけどよくわからないエラーが出ておっかけるのに時間かかりそうだったのでsplit→joinでお茶を濁す。ついでに日付は削った。
curl https://slack.com/api/channels.history\?token\=XXXXX\&channel\=YYYYY | jq -r '.messages | reverse | .[] | [(.ts | tonumber | .+32400 | strftime("%H:%M:%S")), (.text | split("|") | join("\\|") | split("\n") | join("<br>"))] | join("|")'
(2016/2/16 追記)分報のチャンネルにbotの通知を流し始めたら、その投稿のtextがnullだったのでその対策を行ったバージョン。
curl https://slack.com/api/channels.history\?token\=XXXXX\&channel\=YYYYY | jq -r '.messages | reverse | .[] | select(.text) | [(.ts | tonumber | .+32400 | strftime("%H:%M:%S")), (.text | split("|") | join("\\|") | split("\n") | join("<br>"))] | join("|")'
slackのチャンネルの履歴の取得
https://api.slack.com/methods/channels.history
ここを読んだらだいたいできます。テストフォームがあるのでそこから試すと良いでしょう。テストフォームからトークン取るページに行ってトークンも取れます。
チャンネルIDは https://api.slack.com/methods/channels.list こっちのチャンネル一覧の結果に入ってます。
jqで加工
帰ってくるjsonのmessages項目に配列で発言が入ってて、tsがタイムスタンプ(小数)、textが本文なので、1行に時間と本文が1つ出るように加工してます。
新しい物が上にくるのでreverseしてます。
32400は時差の解消です。
.[]は配列を1要素1行に分解するものです。