0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

pythonを使ってリアクティブなWebアプリを作りたい【開発編6】Slack bolt アンインストール時対応

Last updated at Posted at 2021-09-13

こちらの続きです
pythonを使ってリアクティブなWebアプリを作りたい【開発編5】Slack boltの組み込み

今日は小ネタです。
前回から、Slack Botの組み込み方について書いてきましたが、今回はSlack Botがインストールされたり、TokenがRevokeされたりしたときの対応をどう組み込むかについてです。
検索しても出てこないので、あれやこれや悩んでしまいましたが、最終的に必要だったのは1行のコードの追加だけでした。Bolt for Python凄い便利!

詳しくはここを見る

書いてあるとおりなのですが大事なのはここです

bolt.py
app = App(
  # Enabling installation_store required
)
app.enable_token_revocation_listeners()

該当箇所は
backend/bolt.py

backend/bolt.py
bolt_app = App(
    logger=logger,
    signing_secret=os.environ.get("SIGNING_SECRET"),
    installation_store=installation_store,
    raise_error_for_unhandled_request=True,
    oauth_settings=OAuthSettings(
        client_id=client_id,
        client_secret=client_secret,
        state_store=oauth_state_store,
        scopes=os.environ.get("SLACK_SCOPES"),
        user_scopes=os.environ.get("SLACK_USER_SCOPES"),
    ),
)
bolt_app.enable_token_revocation_listeners()

ということで、最後の行を追加してあります。
これをするだけで、アンインストール時には該当する
slack_bots
slack_installations
の当該組織のデータを削除してくれます。めちゃめちゃ便利ですね。
アンインストール時の挙動については以上でOKです。

エラーハンドリング

ついでに先程のリリースノートに書いてあるエラーハンドリングをしておきます。

app = App(
    token=os.environ["SLACK_BOT_TOKEN"],
    signing_secret=os.environ["SLACK_SIGNING_SECRET"],
    # enable @app.error handler to catch the patterns
    raise_error_for_unhandled_request=True,
)

@app.error
def handle_errors(error):
    if isinstance(error, BoltUnhandledRequestError):
        # You may want to have debug/info logging here
        return BoltResponse(status=200, body="")
    else:
        # other error patterns
        return BoltResponse(status=500, body="Something wrong")

この部分。raise_error_for_unhandled_request=True,にすれば良い感じですね。

↑の方のコードブロックに既に書いてしまってあるのですが、こちらに追加してあります

実際にエラーハンドリングするブロックはここです

以上です。

関連リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?