Slackボット① エコーボット

2024/01/18に公開

はじめに

エコーボットの作成

環境構築

開発環境

  • WSL2(Ubuntu)
  • Python 3.10.12

トークンの設定

AppトークンとBotトークンは,ボットの設定をしている時にメモしたものを使用する.

APP_TOKEN = "xapp-x-xxxxxxxxxx-xxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
BOT_TOKEN = "xoxb-xxxxxxxxxxxxxxx-xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxx"

イベントが発生したときに受け取る情報

イベントが発生したときにサーバーから送られてくる情報は,bodyに入っている.
bodyからチャンネルのIDとメッセージの内容を取得するには.以下のようにする.

@app.event("message")
def handle_message_events(body, say):
    message = body["event"]["text"] # メッセージの内容を取得
    channel_id = body["event"]["channel"] # チャンネルIDを取得

ソースコード

main.py
from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler
from slack_sdk import WebClient


APP_TOKEN = "xapp-x-xxxxxxxxxx-xxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
BOT_TOKEN = "xoxb-xxxxxxxxxxxxxxx-xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxx"


app = App(token=BOT_TOKEN)
client = WebClient(token=BOT_TOKEN)


# 指定されたチャンネルにメッセージを送信
def send_message(message, channel_id):
    response = client.chat_postMessage(channel=channel_id, text=message)


# メッセージを受け取ったときに発生するイベント
@app.event("message")
def handle_message_events(body, say):
    message = body["event"]["text"] # メッセージの内容を取得
    channel_id = body["event"]["channel"] # チャンネルIDを取得

    send_message(message, channel_id)


if __name__ == "__main__":
    handler = SocketModeHandler(app, APP_TOKEN)
    handler.start()

実行結果

ボットに対してDMでメッセージを送ると同じメッセージが返ってくる.

おわり

前回
次回

Discussion