Slackの各チャンネルにある発言をひとつのチャンネルに集約する

KMCのSlackには#everythingという「全public channelの人間による発言を表示する」というパワフルなチャンネルがあります。

会社のSlackにもこれが欲しいなぁと思ったので、Event APIをSocket modeで拾うbotをGoでシュッと作ってみた*1

github.com

問題は会社のSlackが4000チャンネルぐらいあるのでアクティブ時間帯にはchat.postMessageのrate Limit(1秒ごと)を即座に突き抜けそう*2なこと。全部見るとか無理っぽいです。どうしよ*3

今後のアイディア

分報だけ集約するのが良さそうな気がする、どうやって判別しようか。

  • 「#times_」のようなprefixで判別
    • naming rulesとかだるくない?
  • botをinviteすることで判別
    • inviteそれはそれで面倒な気も。

いっそ自分がjoinしてるchannelだけ拾うという案もある。

*1:オリジナルの実装はRTM APIだった。

*2:Event APIって30000events/60minsのrate limitがあるけどsocket modeはどうなんだろう。

*3:作る前にチャンネル数見とけば良かったな。