いつの間にslackbotモジュールやHubotは使えなくなったらしい(絶対できるBolt for Python入門)
- slackbotモジュール使えないってどういうこと?
- Bolt for Python入門〜Slack Appの作成〜
- Bolt for Python入門〜Boltのインストールと起動〜
- Bolt for Python入門〜SlackへApp追加と動作確認〜
slackbotモジュール使えないってどういうこと?
SlackのAPIにはいくつか種類があって、Python使いの皆さんにはおそらくお馴染みだった、slackbotモジュールは、RTM APIを使った仕組み
参考:必要な Slack API はどれ? – Slack アプリの作成のためのヒント
しかし、今後SlackではRTM APIをサポートしなくなるようで、すなわちslackbotモジュールが使えなくなるとのことです
(もうすでに新しく作成するアプリでは使えず、どうしても使いたければ、classic appを作成せよとのこと)
RTM APIのページには、今後はEvents APIを使えとアナウンスされています
Real Time Messaging API
ちなみに、HubotもRTM APIを使っているので、Hubotも使えなくなります
Github上でもIssueとしてあげられていますね
https://github.com/scrapinghub/slackbot/issues/217
https://github.com/slackapi/hubot-slack/issues/630
では今後どうすれば良いのかというと、Slack公式のフレームワークであるBoltを使うのがおすすめのようです(公式のフレームワークあったんかい)
Boltは3言語サポートしており、JavaScript、Python、Javaがあり、
slackbotモジュールはBolt for Python、HubotはBolt for Javascriptへ移行するのが良さそうです
ということで、今回は、Bolt for Pythonに入門してみます
Bolt for Python入門〜Slack Appの作成〜
こちらの手順に沿って進めていきます
Bolt for Python
※ 上部に出てくる「A new way to configure your app is coming. We’ve built an easier way to make all your changes from one place.Try it out now」はクリックしないでください
「OAuth&Permissions」タブをクリック
下にスクロールして「Add an OAuth Scope」をクリック
「chat:write」をスコープに指定する
上にスクロールして「Install to Workspace」をクリック
「Allow」をクリック
すると「xoxb-」から始まるBot Tokenが発行されるのでメモっておく
「Basic Information」タブをクリック
下にスクロールして「Generate Token and Scopes」をクリック
適当な名前をつけて「connections:write」のScopeを追加し「Generate」をクリック
app_level_tokenが発行されるのでこれもメモっておく
次に「Socket Mode」タブをクリックし、「Enable Socket Mode」から有効化しておく
次は「Event Subscriptions」タブをクリックし「Enable Events」をオンにする
下にスクロールして「Subscribe to events」のアコーディオンが閉じていれば広げて
「Add Bot User Event」をクリック
「message.channels」「message.groups」「message.im」「message.mpim」
の4つのイベントを追加したら「Save Changes」をクリック
すると、上部に黄色いバーが出てくるので「reinstall your app」をクリックする
「Allow」をクリック
Bolt for Python入門〜Boltのインストールと起動〜
Terminalを開き、任意のフォルダでslack_botをインストール
% pip install slack_bolt
先程メモしたBot TokenとApp Level Tokenを環境変数(SLACK_BOT_TOKENとSLACK_APP_TOKEN)に入れておく
% export SLACK_BOT_TOKEN=【xoxb-xxxxxx】 % export SLACK_APP_TOKEN=【xapp-xxxxxx】
app.pyを作成する
(手順のコードそのままです)
% vim app.py % cat app.py import os from slack_bolt import App from slack_bolt.adapter.socket_mode import SocketModeHandler # ボットトークンとソケットモードハンドラーを使ってアプリを初期化します app = App(token=os.environ.get("SLACK_BOT_TOKEN")) # 'hello' を含むメッセージをリッスンします # 指定可能なリスナーのメソッド引数の一覧は以下のモジュールドキュメントを参考にしてください: # https://slack.dev/bolt-python/api-docs/slack_bolt/kwargs_injection/args.html @app.message("hello") def message_hello(message, say): # イベントがトリガーされたチャンネルへ say() でメッセージを送信します say(f"Hey there <@{message['user']}>!") # アプリを起動します if __name__ == "__main__": SocketModeHandler(app, os.environ["SLACK_APP_TOKEN"]).start()
Boltを起動する
% python app.py ⚡️ Bolt app is running!
Bolt for Python入門〜SlackへApp追加と動作確認〜
Slackアプリを開き、任意のチェンネルへ
上部のチャンネル名の横の矢印をクリック
「Integrations」タブから「Add apps」をクリック
先程作成したアプリを名前で検索して「Add」をクリック
Slackチャンネルで「hello」と呟くと反応してくれる
まだしっかり触っていないけど、slackbotモジュールと同じような感じでカスタマイズできそう
以上。