Webhook
ウェブフックは、秘密のURLを介して、1つのチャネルにメッセージを投稿します。ボットコード、ゲートウェイループ、Authorizationヘッダーは必要ありません。HTTPリクエストを作成できる場合は、Disbandに投稿できます。
Webhooksはボットとは別です。CI、監視、ゲームサーバー、フォーム、またはURLを呼び出すことができるその他のものからの一方通行の通知にはウェブフックを使用します。イベントを読み取るかメッセージに反応する必要がある場合はボットを使用します。
ウェブフックを作成する
スペースには管理Webhooksの権限が必要です。
- スペース設定→統合→Webhooksを開きます。
- チャネルを選択し、「新しいウェブフック」を選択します。
- 名前をつけて、気に入ったらアバターも付けてください。
- Webhook URLをコピーします。
URLは次のようになります。
https://disband.dev/webhook/12345678/01234567890123456789012345
| パート | 意味 |
|---|---|
| スペースキー | スペースを識別する8桁の数字。秘密ではありません。 |
| トークン | 26桁。これが秘密です。パスワードのように扱ってください。 |
同じエンドポイントはhttps://disband.dev/api/webhooks/<space key>/<token>でも提供されています。
その画面から、ウェブフックの名前を変更したり、トークンをリセットしたり、削除したりできます。トークンをリセットすると、古いURLはすぐに無効になります。ウェブフックを削除すると、投稿が停止しますが、チャンネルにすでに送信したメッセージが残ります。
ウェブフックを実行する
POSTをURLのウェブフックに送信し、JSONのボディを添付します。
curl -X POST 'https://disband.dev/webhook/12345678/01234567890123456789012345' \
-H 'Content-Type: application/json' \
-d '{
"content": "Deploy finished — **v2.4.1** is live.",
"username": "Deploy bot",
"avatar_url": "https://example.com/deploy.png"
}'
成功したリクエストは204 No Contentを返します。代わりに?wait=trueを追加して、作成されたメッセージオブジェクトを受信してください。
curl -X POST 'https://disband.dev/webhook/12345678/01234567890123456789012345?wait=true' \
-H 'Content-Type: application/json' \
-d '{ "content": "Hello from the other side." }'
ボディフィールド
| フィールド | タイプ | メモ |
|---|---|---|
content |
文字列 | 最大2,000文字。少なくとも1つの埋め込みがある場合は省略できます。 |
username |
文字列 | このメッセージのウェブフック名をオーバーライドします。最大80文字。 |
avatar_url |
文字列 | このメッセージのアバターをオーバーライドします。絶対的なhttpまたはhttps URL。 |
embeds |
配列 | 最大10個埋め込み。 |
embed |
オブジェクト | 継承単数形。embeds: [embed]として処理されます。 |
allowed_mentions |
オブジェクト | ピンを制御します。以下を参照してください。 |
tts |
boolean | 互換性のために受け入れられていますが、現在無視されています。 |
flags |
番号 | 互換性のために受け入れられていますが、現在無視されています。 |
usernameには、disbandまたはclydeが含まれてはいけません。これは、プラットフォームスタッフを装ったウェブフックを防止します。
ファイル添付物はまだサポートされていません。マルチパートリクエストは解析できますが、ファイルは保存されません。ファイルをアップロードする必要がある場合は、ボットを使用してください。
制御を言及する
デフォルトでは、ウェブフックはユーザーの言及と@everyone / @here(Discordと同じ)の両方を解析します。
誰もにpingしないために:
{ "content": "Build 184 finished.", "allowed_mentions": { "parse": [] } }
ユーザーの言及を許可しますが、すべての人を許可しない場合:
{
"content": "Thanks @polar.",
"allowed_mentions": { "parse": ["users"] }
}
データベースは、抑制されているときにまだ@everyoneを保存しますが、通知は送信されません。フィールドが完全に欠落している場合、すべてが解析されます。
メッセージオブジェクト
?wait=trueを使用すると、応答はDiscordの形をしたメッセージになります。Disbandはidでその数値メッセージIDを使用します。
{
"id": "4821",
"type": 0,
"content": "Deploy finished.",
"channel_id": "…",
"guild_id": "…",
"author": {
"id": "…",
"username": "Deploy bot",
"avatar": "https://example.com/deploy.png",
"discriminator": "0000",
"bot": true
},
"attachments": [],
"embeds": [],
"mentions": [],
"mention_roles": [],
"mention_everyone": false,
"pinned": false,
"tts": false,
"timestamp": "2026-10-19T20:15:00.000Z",
"edited_timestamp": null,
"flags": 0,
"components": [],
"webhook_id": "…"
}
メッセージを管理する
ウェブフックは、投稿したメッセージを取得、編集、削除できます。実行応答から数値メッセージIDを使用してください。
| 方法 | エンドポイント | 結果 |
|---|---|---|
GET |
/webhook/<key>/<token>/messages/<id> |
メッセージを取得します。 |
PATCH |
/webhook/<key>/<token>/messages/<id> |
contentと/またはembedsを編集します。 |
DELETE |
/webhook/<key>/<token>/messages/<id> |
メッセージを削除します。204が返されます。 |
例の編集:
curl -X PATCH 'https://disband.dev/webhook/12345678/01234567890123456789012345/messages/4821' \
-H 'Content-Type: application/json' \
-d '{ "content": "Deploy finished — rolled back." }'
そのウェブハックによって作成されたメッセージのみを変更できます。別のウェブハックは404 Unknown Messageを受け取ります。
ウェブフック自体を管理する
| 方法 | エンドポイント | 結果 |
|---|---|---|
GET |
/webhook/<key>/<token> |
Webhook オブジェクト (名前、アバター、チャンネル、URL)。 |
PATCH |
/webhook/<key>/<token> |
{ "name": "New name" }で名前を変更してください。 |
DELETE |
/webhook/<key>/<token> |
削除します。204が返されます。 |
URL を通じて削除すると、統合画面で削除するのと同じ方法で永久的に削除されます。
レート制限
各ウェブフックは2秒間に5件のリクエストまで制限されています。制限はトークンによって決まりますので、騒々しいウェブフックが他のウェブフックを遅らせたりすることはありません。
制限付きのリクエストは429を返します。
{
"message": "You are being rate limited.",
"retry_after": 1.34,
"global": false
}
応答にはRetry-After(整数秒)と通常のX-RateLimit-*ヘッダーも含まれています。遅延を待ち、その後再試行してください。
エラー
エラーはDiscordの形状を使用します。
{ "message": "Unknown Webhook", "code": 10015 }
| ステータス | コード | 意味 |
|---|---|---|
400 |
50006 |
メッセージが空です:内容も埋め込みもありません。 |
400 |
50035 |
ボディが無効、エンベッドが不適切、またはコンテンツが2,000文字を超えている。 |
404 |
10015 |
不明なウェブフック:スペースキーが間違っている、トークンが間違っている、または削除されている。 |
404 |
10008 |
不明なメッセージ。 |
429 |
— | レート制限あり。Retry-Afterを尊重してください。 |
500 |
— | サーバーエラー。バックオフして再試行してください。 |
404 Unknown Webhookは、スペースキーかトークンが間違っているかどうかをわざと言いません。
セキュリティ
- URLを持っている人は誰でも投稿できます。公開リポジトリにコミットしたり、置いたりしないでください。 クライアント側のコードに含まれています。
- URLをAPIキーに使用するのと同じ秘密ストアに保存します。
- トークンが漏れる場合はすぐにリセットしてください。古いURLはすぐに機能しなくなります。
- Webhookは、構成されたチャネルにのみ書き込みます。メッセージを読み込むことはできません。 メンバーをリストアップするか、スペース設定を変更します。
Disband