👌

【Slack/Go】Slackチャンネルのメッセージを集計するCLIツールを作ってみた

2021/12/07に公開

はじめに

「特定のSlackチャンネルに投稿されているメッセージ数を集計しないといけない」
そんな時に役に立つCLIツールをGoで作ってみました。

https://github.com/s-beats/sutil

いずれはSlackのAPIを使った様々な便利コマンドを追加していきたいという思いから、sutilと名付けました。
SlackのUtilなのでsutilです。

また今回の開発には、urfave/cliを用いました。
複数コマンドの管理やオプション引数の設定をお助けしてくれる便利パッケージです。
https://github.com/urfave/cli

使い方

簡単な使い方を紹介します。
実装もほんの少しだけ紹介します。(気になる方はGitHubへ。PRいただけると喜びます。)

[必要なもの]

環境変数にトークンをセットします。

$ export SLACK_OAUTH_TOKEN=xxx...

こちらは内部でos.Getenvで取得しています。
https://pkg.go.dev/os#Getenv

集計するコマンドはaggregate-messagesです。
オプションとして--chanidfromtoがあります。

オプション名 説明
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を使っています。
https://pkg.go.dev/text/tabwriter

2列じゃ寂しいので他の情報も取得できるようにしたいと思っています。

さいごに

これから自分が欲しいと思った機能を追加していく予定です。
CLIツールの開発は初めてでしたが、やりたかったことが無事実現できてよかったです。

GitHubで編集を提案

Discussion