すべての DM イベントを取得
認証済みユーザーのすべての DM イベントを取得します。cURL
curl "https://api.x.com/2/dm_events?\
dm_event.fields=created_at,sender_id,text&\
max_results=100" \
-H "Authorization: Bearer $USER_ACCESS_TOKEN"
from xdk import Client
client = Client(bearer_token="YOUR_USER_ACCESS_TOKEN")
# ページネーションを使用してすべての DM イベントを取得
for page in client.dm_events.list(
dm_event_fields=["created_at", "sender_id", "text"],
max_results=100
):
for event in page.data:
print(f"{event.event_type}: {event.text}")
import { Client } from "@xdevplatform/xdk";
const client = new Client({ accessToken: "YOUR_USER_ACCESS_TOKEN" });
// ページネーションを使用してすべての DM イベントを取得
const paginator = client.dmEvents.list({
dmEventFields: ["created_at", "sender_id", "text"],
maxResults: 100,
});
for await (const page of paginator) {
page.data?.forEach((event) => {
console.log(`${event.event_type}: ${event.text}`);
});
}
レスポンス
{
"data": [
{
"id": "1234567890",
"event_type": "MessageCreate",
"text": "Hello! How are you?",
"sender_id": "9876543210",
"created_at": "2024-01-15T10:30:00.000Z"
}
],
"meta": {
"result_count": 1,
"next_token": "abc123"
}
}
1 対 1 の会話を取得
特定の 1 対 1 の会話から DM イベントを取得します。cURL
curl "https://api.x.com/2/dm_conversations/with/9876543210/dm_events?\
dm_event.fields=created_at,sender_id,text" \
-H "Authorization: Bearer $USER_ACCESS_TOKEN"
from xdk import Client
client = Client(bearer_token="YOUR_USER_ACCESS_TOKEN")
# 1 対 1 の会話から DM イベントを取得
for page in client.dm_events.get_by_participant(
participant_id="9876543210",
dm_event_fields=["created_at", "sender_id", "text"]
):
for event in page.data:
print(f"{event.created_at}: {event.text}")
import { Client } from "@xdevplatform/xdk";
const client = new Client({ accessToken: "YOUR_USER_ACCESS_TOKEN" });
// 1 対 1 の会話から DM イベントを取得
const paginator = client.dmEvents.getByParticipant("9876543210", {
dmEventFields: ["created_at", "sender_id", "text"],
});
for await (const page of paginator) {
page.data?.forEach((event) => {
console.log(`${event.created_at}: ${event.text}`);
});
}
9876543210 を、もう一方の参加者のユーザー ID に置き換えてください。
ID で会話を取得
特定の会話 ID から DM イベントを取得します。cURL
curl "https://api.x.com/2/dm_conversations/1234567890-9876543210/dm_events?\
dm_event.fields=created_at,sender_id,text" \
-H "Authorization: Bearer $USER_ACCESS_TOKEN"
from xdk import Client
client = Client(bearer_token="YOUR_USER_ACCESS_TOKEN")
# 会話 ID から DM イベントを取得
for page in client.dm_events.get_by_conversation(
dm_conversation_id="1234567890-9876543210",
dm_event_fields=["created_at", "sender_id", "text"]
):
for event in page.data:
print(f"{event.created_at}: {event.text}")
import { Client } from "@xdevplatform/xdk";
const client = new Client({ accessToken: "YOUR_USER_ACCESS_TOKEN" });
// 会話 ID から DM イベントを取得
const paginator = client.dmEvents.getByConversation("1234567890-9876543210", {
dmEventFields: ["created_at", "sender_id", "text"],
});
for await (const page of paginator) {
page.data?.forEach((event) => {
console.log(`${event.created_at}: ${event.text}`);
});
}
イベントタイプでフィルタ
特定のイベントタイプのみを取得します。cURL
curl "https://api.x.com/2/dm_events?\
event_types=MessageCreate&\
dm_event.fields=created_at,sender_id,text" \
-H "Authorization: Bearer $USER_ACCESS_TOKEN"
from xdk import Client
client = Client(bearer_token="YOUR_USER_ACCESS_TOKEN")
# MessageCreate イベントのみを取得
for page in client.dm_events.list(
event_types=["MessageCreate"],
dm_event_fields=["created_at", "sender_id", "text"]
):
for event in page.data:
print(f"{event.text}")
import { Client } from "@xdevplatform/xdk";
const client = new Client({ accessToken: "YOUR_USER_ACCESS_TOKEN" });
// MessageCreate イベントのみを取得
const paginator = client.dmEvents.list({
eventTypes: ["MessageCreate"],
dmEventFields: ["created_at", "sender_id", "text"],
});
for await (const page of paginator) {
page.data?.forEach((event) => {
console.log(event.text);
});
}
イベントタイプ
| Type | Description |
|---|---|
MessageCreate | メッセージが送信された |
ParticipantsJoin | ユーザーが会話に参加した |
ParticipantsLeave | ユーザーが会話から退出した |
ユーザーデータを含める
送信者情報を展開します。cURL
curl "https://api.x.com/2/dm_events?\
dm_event.fields=created_at,sender_id,text&\
expansions=sender_id&\
user.fields=username,profile_image_url" \
-H "Authorization: Bearer $USER_ACCESS_TOKEN"
from xdk import Client
client = Client(bearer_token="YOUR_USER_ACCESS_TOKEN")
# 送信者情報を含む DM イベントを取得
for page in client.dm_events.list(
dm_event_fields=["created_at", "sender_id", "text"],
expansions=["sender_id"],
user_fields=["username", "profile_image_url"]
):
for event in page.data:
# includes から送信者を照合
print(f"{event.sender_id}: {event.text}")
import { Client } from "@xdevplatform/xdk";
const client = new Client({ accessToken: "YOUR_USER_ACCESS_TOKEN" });
// 送信者情報を含む DM イベントを取得
const paginator = client.dmEvents.list({
dmEventFields: ["created_at", "sender_id", "text"],
expansions: ["sender_id"],
userFields: ["username", "profile_image_url"],
});
for await (const page of paginator) {
page.data?.forEach((event) => {
console.log(`${event.sender_id}: ${event.text}`);
});
// 送信者のユーザーオブジェクトは page.includes.users にあります
}
expansion を伴うレスポンス
{
"data": [
{
"id": "1234567890",
"event_type": "MessageCreate",
"text": "Hello!",
"sender_id": "9876543210"
}
],
"includes": {
"users": [
{
"id": "9876543210",
"username": "example_user",
"profile_image_url": "https://..."
}
]
}
}
よく使うパラメータ
| Parameter | Description |
|---|---|
max_results | 1 ページあたりのイベント数(1-100、デフォルト 100) |
pagination_token | 次ページのトークン |
dm_event.fields | 返すイベントフィールド |
event_types | イベントタイプでフィルタ |
expansions | 含める関連オブジェクト |
次のステップ
DM を送信
ダイレクトメッセージを送信
統合ガイド
主要な概念とベストプラクティス
API リファレンス
エンドポイントの完全なドキュメント