/var/www/yatta47.log

/var/www/yatta47.log

やったのログ置場です。スクラップみたいな短編が多いかと。

slackcatを使ってPrivateChannelに送ろうとした時にハマったこと

slackは結構前から情報収集の場、そしてコミュニケーションの場としてかなり使っています。

1日の最後にGoogleAnalyticsの今日のアクセス数一覧を投稿しておいて前日の話題を想像したり、今日のTodoを自動投稿しておいて朝からげんなりしたり、必ず見るTwitterユーザの投稿をまとめて投稿しておいたり。

WEBで使うことが多いけど、投稿するときはCLIで投稿することもあります。Analyticsのやつは違うけど、サーバの中のファイルが更新されたらそれを流すとか。そんな時に使っているのがslackcatです。

slackcatとは

CLIでslackの投稿が出来たり、ファイルアップロードが出来たりするrubyのGemです。

github.com

前回のtwもしかり、自分、黒い画面本当好きだな〜。

投稿の方も簡単。

echo "あああああああ" | slackcat -g 999_memo -p 

こんな感じで投げることが出来ます。echo 〜〜〜 のところを ls -ltr とかにすると、ファイルリストをslackに投稿できたりします。

で、インストールなどはページを参考にしてもらうとして、ハマった本題。

パブリックチャンネルに投げるかプライベートチャンネルに投げるか

今回ハマったのはプライベートチャンネルに投げる時どうすればイイのかということ。

ヘルプを見てみると、Channelに投げるには -c をつけるらしい。

$ slackcat -h
Options:
  -k, --token=<s>              Slack API token (default: )
  -c, --channels=<s>           Channels to share (default: )
  -g, --groups=<s>             Groups to share (default: )
  -u, --users=<s>              Users (DMs) to share (default: )
  -t, --filetype=<s>           File type identifier
  -T, --title=<s>              Title of file
  -n, --filename=<s>           Filename of file
  -i, --initial-comment=<s>    Initial comment to add
  -p, --post                   Post instead of upload
  -m, --multipart              Multipart upload each file
  -d, --download=<s>           Download a linked file
  -s, --save-as=<s>            Save downloaded file as
  -h, --help                   Show this message

結果的にはパラメータを-gにすることで行けました。

echo "あああああああ" | slackcat -g 999_memo

プライベートとはいえども、チャンネルだから、-cをつけるんだとずっと思い込んでいました。ってかRubyのslackAPIを使っているときはパブリックは#generalとかでシャープを先頭につけて、プライベートはシャープなしで投稿していたから、それと混在してますね。完全に。

ずっと勘違いしていた時に出てきたエラーがこれ。

$ echo "aaa" | slackcat -c 999_memo
/var/lib/gems/1.9.1/gems/slackcat-0.2.5/bin/slackcat:118:in `block in <top (required)>': undefined method `fetch' for nil:NilClass (NoMethodError)
    from /var/lib/gems/1.9.1/gems/slackcat-0.2.5/bin/slackcat:117:in `map'
    from /var/lib/gems/1.9.1/gems/slackcat-0.2.5/bin/slackcat:117:in `<top (required)>'
    from /usr/local/bin/slackcat:23:in `load'
    from /usr/local/bin/slackcat:23:in `<main>'

このエラーでググっても全然結果が出てこなくて困った。

まとめ

パブリックチャンネルに投稿する場合

echo "あああああああ" | slackcat -c general

プライベートチャンネルに投稿する場合

echo "あああああああ" | slackcat -g 999_memo

投稿する文字はパイプで渡したらスニペットとして投稿されちゃうので-pをつけるとテキストで投稿できます。

echo "あああああああ" | slackcat -g 999_memo -p

存在しないグループとか、パブリックグループとかプライベートグループとかを間違えた場合は

`block in <top (required)>': undefined method `fetch' for nil:NilClass (NoMethodError)

が出るようなので、それもおぼえておこう。

Slack

Slack

  • Slack Technologies, Inc.
  • ビジネス
  • 無料