2024年4月14日日曜日

Slack の Python SDK でメッセージに対してリアクションする方法

Slack の Python SDK でメッセージに対してリアクションする方法

概要

reaction_add という API を使います
ポイントはリアクションするメッセージを特定する方法が ID などではなくタイムスタンプだという点です

環境

  • macOS 11.7.10
  • Python 3.11.6
  • slack-sdk 3.27.1

サンプルコード

先に会話の情報を取得してリアクションするメッセージを決めます
今回は最新のメッセージに対してリアクションしていますが本来はメッセージの内容やメッセージの投稿者によって特定する必要があります

from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError

client = WebClient(token="xoxb-xxxxxx")
channel_id = "C0123456789"

try:
    # 会話情報の取得、最新100件
    result = client.conversations_history(channel=channel_id)
    conversation_history = result["messages"]
    # とりあえず最新のメッセージにリアクションしてみる
    ts = result["messages"][0]["ts"]
    print(ts)
    # 取得したtimestamp情報を元にthumbsupのリアクションする
    response = client.reactions_add(channel=channel_id, name="thumbsup", timestamp=ts)
except SlackApiError as e:
    print(e)

動作確認

以下のようにリアクションが追加になれば OK です

また同じメッセージに対して同じリアクションをしようとすると

The request to the Slack API failed. (url: https://www.slack.com/api/reactions.add)
The server responded with: {'ok': False, 'error': 'already_reacted'}

というエラーになるので注意しましょう

最後に

Slack Python SDK でリアクションする方法を紹介しました
絵文字に対するリアクションでボタンに対するアクションではないので注意しましょう

参考サイト

0 件のコメント:

コメントを投稿