概要
conversations.history で oldest と latest を指定します
環境
- macOS 11.7.10
- Python 3.11.6
- slack-sdk 3.27.1
サンプルコード
oldest と latest はエポックタイム形式で指定します
最終的には文字列として API はコールします
もし指定した範囲内のメッセージが 100 件を超える場合は has_more=true が返ってくるのでページネイトする必要があります
from datetime import datetime, timedelta
from zoneinfo import ZoneInfo
from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError
client = WebClient(token="xoxb-xxxxxx")
channel_id = "C0123456789"
try:
# 会話情報の取得、oldestとlatestで範囲指定、前日分の最新100件を取得する
now = datetime.now(ZoneInfo("Asia/Tokyo")).replace(
hour=0, minute=0, second=0, microsecond=0
)
oldest = now - timedelta(days=1)
latest = now - timedelta(days=0)
# print(oldest)
# print(latest)
# メッセージの一覧の取得、oldest,latestのタイムスタンプ(float)は文字列(str)に変換
result = client.conversations_history(
channel=channel_id,
oldest=str(oldest.timestamp()),
latest=str(latest.timestamp()),
inclusive=True,
)
conversation_history = result["messages"]
# メッセージの表示
for msg in conversation_history:
print(msg["text"])
print(msg["ts"])
except SlackApiError as e:
print(e)
最後に
サンプルではページネイトに関しては考慮していないので注意してください
最新100件なので古いものが含まれないケースがあります
0 件のコメント:
コメントを投稿