Slackでbotを作ってみたいというところでBolt for Pythonを使って色々試みてます。
前回の続きで、今度はメンションされたらsay(応答)する仕組みにしたいと思います。
前回の記事はこちら ↓
Slack Bolt for Python で bot開発 チュートリアル編Bolt for Pythonとは
簡単にいうと、Slack アプリの開発を迅速かつ簡単にするフレームワークです。
Python以外にもJavaScript(TypeScript)やJavaもあります。
オープンソースで開発されており、Bolt for PythonのGithubはこちらです。
難易度
チュートリアルまで実行できていればすぐにできます!
日本語のチュートリアルがあるのでこちらを参照してください。
1. アプリの設定
サイドメニューのEvent Subscriptionsをクリックします。
Subscribe to bot eventsを開き、「Add Bot User Event」をクリック。
「app_mention」を追加しましょう。右下にある「Save Changes」をクリックします。
「reinstall your app」という表示が出た場合はクリックしてアプリを再インストールします。
1. 動かしてみよう
チュートリアルと同じディレクトリ内に新規ファイルでコードを追加します。今回は「mention.py」で保存。
Python
import os
from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler
# ボットトークンとソケットモードハンドラーを使ってアプリを初期化します
app = App(token=os.environ.get("SLACK_BOT_TOKEN"))
# メンションされたらsay
@app.event("app_mention")
def message_mention(say):
say("メンションしてくれてありがとう")
# アプリを起動します
if __name__ == "__main__":
SocketModeHandler(app, os.environ["SLACK_APP_TOKEN"]).start()
実行!
python3 mention.py
Slackでbotにメンションすると
ちゃんと応答しました!
しかし、mention.pyを動かしているとコンソールにsuggestのメッセージが!?
Unhandled request ({'type': 'event_callback', 'event': {'type': 'message'}})
---
[Suggestion] You can handle this type of event with the following listener function:
@app.event("message")
def handle_message_events(body, logger):
logger.info(body)
とりあえずこちらを追加してみます。
Python
import os
from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler
# ボットトークンとソケットモードハンドラーを使ってアプリを初期化します
app = App(token=os.environ.get("SLACK_BOT_TOKEN"))
# メンションされたらsay
@app.event("app_mention")
def message_mention(say):
say("メンションしてくれてありがとう")
@app.event("message")
def handle_message_events(body, logger):
logger.info(body)
# アプリを起動します
if __name__ == "__main__":
SocketModeHandler(app, os.environ["SLACK_APP_TOKEN"]).start()
実行すると先ほどのコンソールのメッセージが消えました!
他のイベント実行も試していきたいと思います!