Discord Webhooks は、Bot を立てずに Discord チャンネルへメッセージを投稿できる軽量な仕組みだ。チャンネル設定で Webhook URL を発行し、そこへ POST するだけ。Bot のトークン管理やゲートウェイ接続の常駐プロセスが不要なため、サーバーレス関数や cron からの通知に向く。

Embeds で情報を構造化する

テキストのほかに Embeds を使えば、タイトル・説明・色付きの縦線・フィールド・サムネイルを持つカード状のメッセージを作れる。デプロイ完了、ゲームのスコア更新、外部サービスのイベントなどを見やすく届けられるので、コミュニティ向けの自動通知と相性がよい。投稿者名やアイコンをリクエストごとに差し替えられるのも小回りが利く点だ。

レート制限と一括投稿

Discord の Webhook にはレート制限があり、短時間に大量のメッセージを投げると 429 が返って弾かれる。ログを 1 行ごとに送るような実装はすぐ上限に当たるため、複数の出来事はまとめて 1 メッセージにする、間隔を空ける、429 のときはレスポンスのリトライ指示に従って待つ、といった制御を入れておきたい。1 メッセージに載せられる Embeds 数や文字数にも上限があるので、長文は分割の設計が要る。

対話には使えない

Webhook は 1 URL がひとつのチャンネルに紐づく一方向の投稿手段で、スラッシュコマンドへの応答やボタン操作の受け取りはできない。ユーザーの入力に反応するインタラクティブな機能が必要なら、Gateway 接続と Interactions に対応した本来の Bot を実装する必要がある。

URL は実質的なシークレット

Webhook URL を知っていれば誰でもそのチャンネルへ投稿できる。公開リポジトリやクライアント側コードに埋め込むと荒らしの標的になるため、サーバー側の環境変数で管理し、漏洩時は再発行する。「外部の出来事をチャンネルに流し込む」用途に限れば Webhooks はこのうえなく手軽で、要件が「ユーザーと会話する」側に寄った時点が Bot へ切り替えるサインだ。