👌
【Slack/Go】Slackチャンネルのメッセージを集計するCLIツールを作ってみた
はじめに
「特定のSlackチャンネルに投稿されているメッセージ数を集計しないといけない」
そんな時に役に立つCLIツールをGoで作ってみました。
いずれはSlackのAPIを使った様々な便利コマンドを追加していきたいという思いから、sutil
と名付けました。
SlackのUtilなのでsutil
です。
また今回の開発には、urfave/cli
を用いました。
複数コマンドの管理やオプション引数の設定をお助けしてくれる便利パッケージです。
使い方
簡単な使い方を紹介します。
実装もほんの少しだけ紹介します。(気になる方はGitHubへ。PRいただけると喜びます。)
[必要なもの]
- conversations.connect:read の権限を持った Slack app のトークン
環境変数にトークンをセットします。
$ export SLACK_OAUTH_TOKEN=xxx...
こちらは内部でos.Getenv
で取得しています。
集計するコマンドはaggregate-messages
です。
オプションとして--chanid
、from
、to
があります。
オプション名 | 説明 |
---|---|
chanid(必須) | チャンネルID |
from | 集計する期間の下限(タイムスタンプ) |
to | 集計する期間の上限(タイムスタンプ) |
$ sutil aggregate-messages --chanid xxx... --from 1638284400 --to 1638802800
USER NAME MESSAGES COUNT
A 10
B 5
C 21
ユーザー名とメッセージ数を、整列して出力するようにしました。(Dockerの出力を参考にしました)
tabwriter
を使っています。
2列じゃ寂しいので他の情報も取得できるようにしたいと思っています。
さいごに
これから自分が欲しいと思った機能を追加していく予定です。
CLIツールの開発は初めてでしたが、やりたかったことが無事実現できてよかったです。
Discussion