✨
Slackボット① エコーボット
はじめに
エコーボットの作成
開発環境
- 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