slack-afk を動かすまで
![Hiroyuki Kuromiya](https://res.cloudinary.com/zenn/image/fetch/s--7jM_LnN1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/38ec9d5007.jpeg)
pyama さんの作った slack-aftk をローカルで動かしたい
![Hiroyuki Kuromiya](https://res.cloudinary.com/zenn/image/fetch/s--7jM_LnN1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/38ec9d5007.jpeg)
Slack App の作成
公式の README の記述はかなり簡素なので slack-gpt の元になっている slack-ruby-client をみてみる
![Hiroyuki Kuromiya](https://res.cloudinary.com/zenn/image/fetch/s--7jM_LnN1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/38ec9d5007.jpeg)
こちらの記事に飛ばされた
![Hiroyuki Kuromiya](https://res.cloudinary.com/zenn/image/fetch/s--7jM_LnN1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/38ec9d5007.jpeg)
リンク先からBotのスコープを持ったAppを自動的に作ってくれる
![Hiroyuki Kuromiya](https://res.cloudinary.com/zenn/image/fetch/s--7jM_LnN1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/38ec9d5007.jpeg)
デフォルトでは Socket mode が有効になっているので無効にしておく
![Hiroyuki Kuromiya](https://res.cloudinary.com/zenn/image/fetch/s--7jM_LnN1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/38ec9d5007.jpeg)
まずは Basic Information のタブで Slack Signing Secret が取得できるので控えておく
![Hiroyuki Kuromiya](https://res.cloudinary.com/zenn/image/fetch/s--7jM_LnN1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/38ec9d5007.jpeg)
次に Slack コマンドを登録していく
登録先のURL は ngrok
で外部からアクセス可能なURLを使う必要がある
![Hiroyuki Kuromiya](https://res.cloudinary.com/zenn/image/fetch/s--7jM_LnN1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/38ec9d5007.jpeg)
OAuth & Permissions からアプリをWorkspace にインストールする
![Hiroyuki Kuromiya](https://res.cloudinary.com/zenn/image/fetch/s--7jM_LnN1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/38ec9d5007.jpeg)
Bot User Token が出るので控えておく
![Hiroyuki Kuromiya](https://res.cloudinary.com/zenn/image/fetch/s--7jM_LnN1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/38ec9d5007.jpeg)
secret を作成
kubectl create secret generic away-from-keyboard-secret --from-literal=slack-api-token=$SLACK_API_TOKEN --from-literal=slack-signing-secret=$SLACK_SIGNING_SECRET
![Hiroyuki Kuromiya](https://res.cloudinary.com/zenn/image/fetch/s--7jM_LnN1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/38ec9d5007.jpeg)
pod をデプロイ
kubectl apply -f manifests/deployment.yml
![Hiroyuki Kuromiya](https://res.cloudinary.com/zenn/image/fetch/s--7jM_LnN1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/38ec9d5007.jpeg)
エラーになった
2024-01-21 21:02:16 /opt/away-from-keyboard/vendor/bundle/ruby/3.1.0/gems/slack-ruby-client-2.2.0/lib/slack/web/faraday/response/raise_error.rb:19:in `on_complete': not_allowed_token_type (Slack::Web::Api::Errors::NotAllowedTokenType)
![Hiroyuki Kuromiya](https://res.cloudinary.com/zenn/image/fetch/s--7jM_LnN1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/38ec9d5007.jpeg)
slack-ruby-bot は legacy app にしか対応してないっぽい
![Hiroyuki Kuromiya](https://res.cloudinary.com/zenn/image/fetch/s--7jM_LnN1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/38ec9d5007.jpeg)
slack-ruby-bot 自体がもう legacy になってしまっているが大丈夫か?
![Hiroyuki Kuromiya](https://res.cloudinary.com/zenn/image/fetch/s--7jM_LnN1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/38ec9d5007.jpeg)
よくみると api token はもう発行できないと書いてある
![Hiroyuki Kuromiya](https://res.cloudinary.com/zenn/image/fetch/s--7jM_LnN1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/38ec9d5007.jpeg)
代わりに OAuth による認証を使う必要がある
![Hiroyuki Kuromiya](https://res.cloudinary.com/zenn/image/fetch/s--7jM_LnN1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/38ec9d5007.jpeg)
これはもろもろ gem をアップデートするところから始めないといけないかもしれない
![Hiroyuki Kuromiya](https://res.cloudinary.com/zenn/image/fetch/s--7jM_LnN1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/38ec9d5007.jpeg)
使っているのはこの二種類
gem 'slack-ruby-bot'
gem 'slack-ruby-client'
![Hiroyuki Kuromiya](https://res.cloudinary.com/zenn/image/fetch/s--7jM_LnN1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/38ec9d5007.jpeg)
slack-ruby-bot は slack-ruby-bot-server として新しくなってる
![Hiroyuki Kuromiya](https://res.cloudinary.com/zenn/image/fetch/s--7jM_LnN1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/38ec9d5007.jpeg)
slack-ruby-client はそのまま使えそう
![Hiroyuki Kuromiya](https://res.cloudinary.com/zenn/image/fetch/s--7jM_LnN1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/38ec9d5007.jpeg)
ローカルで作った image を kubernetes で使うにはこの記事が参考になる
![Hiroyuki Kuromiya](https://res.cloudinary.com/zenn/image/fetch/s--7jM_LnN1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/38ec9d5007.jpeg)
このサンプルがよくまとまってる
![Hiroyuki Kuromiya](https://res.cloudinary.com/zenn/image/fetch/s--7jM_LnN1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/38ec9d5007.jpeg)
slack-ruby-bot-server は mongodb がいるのか
![Hiroyuki Kuromiya](https://res.cloudinary.com/zenn/image/fetch/s--7jM_LnN1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/38ec9d5007.jpeg)
変更箇所が多すぎるので sample を元に一から作り直した方が早いかもしれない
![Hiroyuki Kuromiya](https://res.cloudinary.com/zenn/image/fetch/s--7jM_LnN1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/38ec9d5007.jpeg)
なんだかよくわからなくなってきた
slack-ruby-bot-server の extension として slack-ruby-bot-server-rtm というのがあるのだが、これを使えば既存のコードを大きく変えずに動かせそう?