インタラクションとコマンドの概要
ステータス
Stable· 最終検証 2026-07-11 · APIv10· 出典 Interactions overview, Receiving & responding
インタラクションとは、ユーザーがアプリを呼び出すあらゆる瞬間です — コマンドの実行、
ボタンのクリック、セレクトメニューの選択、モーダルの送信。インタラクションは、アプリの UX を
構築するための最新かつ第一級の方法であり、メッセージ本文を読み取っていた旧来の「プレフィックス
コマンド」を置き換えました(プレフィックスコマンドは今や特権インテント MESSAGE_CONTENT も
必要とします。インテントを参照)。
[!NOTE] 翻訳状況 このセクションの詳細ページ(ライフサイクル、署名検証、スラッシュコマンド、コンポーネント、 応答とフォローアップ、セキュリティの落とし穴)は現在英語で提供されており、日本語版は 準備中です。リンク先は英語にフォールバックします。
このセクションの内容
Section titled “このセクションの内容”| ページ | 内容 |
|---|---|
| インタラクションのライフサイクル | 5 種類のインタラクション、3 秒以内の ACK、遅延応答、15 分間有効なトークン |
| 署名検証 | HTTP エンドポイント向けの Ed25519 フローと落とし穴 |
| スラッシュコマンド | コマンドの種類、オプション、オートコンプリート、ローカライズ、登録 |
| コンポーネント:ボタン・セレクト・モーダル | インタラクティブコンポーネントと Components V2 |
| 応答とフォローアップ | 応答タイプ、エフェメラル、編集、フォローアップメッセージ |
| セキュリティの落とし穴 | インタラクションアプリを壊す・危険にさらす間違い |
コマンドの種類
Section titled “コマンドの種類”| 種類 | 値 | ユーザーの起動方法 | 例 |
|---|---|---|---|
スラッシュコマンド (CHAT_INPUT) |
1 |
型付きオプションで /name を入力 |
/ban user:@x reason:"spam" |
ユーザーコマンド (USER) |
2 |
ユーザーを右クリック → アプリ | 「アバターを表示」 |
メッセージコマンド (MESSAGE) |
3 |
メッセージを右クリック → アプリ | 「通報」「翻訳」 |
コマンドはグローバル(すべてのインストール)またはギルド限定(1 つのサーバー、即時反映 — 開発に最適)にできます。詳細:スラッシュコマンド。
コンポーネント(インタラクティブ UI)
Section titled “コンポーネント(インタラクティブ UI)”コマンドに加えて、メッセージはインタラクティブコンポーネント — ボタン、セレクトメニュー
(文字列/ユーザー/ロール/メンション可能/チャンネル)、ポップアップモーダル — を持てます。
Discord の Components V2 システム(メッセージ単位で IS_COMPONENTS_V2 フラグ 1 << 15 により
オプトイン)では、content + embeds の代わりにメッセージ全体をコンポーネントで構成できます。
コンポーネントを参照。
インタラクションを受け取る 2 つの方法
Section titled “インタラクションを受け取る 2 つの方法”| HTTP インタラクションエンドポイント | ゲートウェイ | |
|---|---|---|
| 通信方式 | Discord があなたの URL に POST |
ゲートウェイイベントとして配信 |
| ホスティング | サーバーレス向き、ステートレス | 永続的なソケットが必要 |
| Ed25519 署名の検証 | 必須 | 不要(すでに認証済み) |
| 適する場合 | 常時稼働プロセスを避けたい | すでにイベント用のソケットを運用中 |
エンドポイント方式はソケット不要で Workers/Lambda/Vercel 上で動作しますが、すべてのリクエストの
署名を検証する必要があります(詳細)。実行可能:
interaction-endpoint(HTTP)と
bot-gateway-minimal(ゲートウェイ)。
まずインタラクションのライフサイクルから — そのタイミング規則が すべての基礎になります。