Open8
go で Slack のチャンネルでの発言を取得する
ピン留めされたアイテム
![Keiichi Nomura](https://res.cloudinary.com/zenn/image/fetch/s--nYvmd7XM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/b93796cbbf.jpeg)
ひとまずチャンネルの発言を拾うところまでざっと書いてみた
![Keiichi Nomura](https://res.cloudinary.com/zenn/image/fetch/s--nYvmd7XM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/b93796cbbf.jpeg)
まずは環境構築から。
go をあまりやったことが無いのでとりあえず VSCode で環境整える
![Keiichi Nomura](https://res.cloudinary.com/zenn/image/fetch/s--nYvmd7XM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/b93796cbbf.jpeg)
Slack のライブラリはコレで良さそう
![Keiichi Nomura](https://res.cloudinary.com/zenn/image/fetch/s--nYvmd7XM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/b93796cbbf.jpeg)
↑にある方法で VS Code を設定し、デバッグ動かしてみると以下のエラーが出た
go: go.mod file not found in current directory or any parent directory; see 'go help modules'
exit status 1
Process exiting with code: 1
とりあえずソースコードを $GOPATH/src
以下に適当にディレクトリ切って、そこで開発することにした
で、以下実行
go mod init
これで VS Code でデバッグできた。
![Keiichi Nomura](https://res.cloudinary.com/zenn/image/fetch/s--nYvmd7XM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/b93796cbbf.jpeg)
go modules のことは以下をとりあえず見てみた
Go言語の依存モジュール管理ツール Modules の使い方 - Qiita https://qiita.com/uchiko/items/64fb3020dd64cf211d4e#modules-を使うには
![Keiichi Nomura](https://res.cloudinary.com/zenn/image/fetch/s--nYvmd7XM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/b93796cbbf.jpeg)
ここでSlackアプリを作成
OAuth & Permissions で、User Token Scopes に channels:history
のスコープを追加。(とりあえず public チャンネルの履歴だけ取得)
Install to Workspace を実行。権限の許可を行う
User OAuth Token の内容を控えておく
![Keiichi Nomura](https://res.cloudinary.com/zenn/image/fetch/s--nYvmd7XM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/b93796cbbf.jpeg)
Go で日時取得するやり方
![Keiichi Nomura](https://res.cloudinary.com/zenn/image/fetch/s--nYvmd7XM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/b93796cbbf.jpeg)
Go で文字列の操作
Slack の conversation.history で oldest
, latest
に指定するタイムスタンプのフォーマットが、UNIXマイクロ秒タイムスタンプかつミリ秒以下のところでドット(.
)を入れる仕様だった。なので、とりあえず文字列を分割して無理やり .
を入れる形にしてみた。