Discord BotとWebhook、どちらを選ぶべきか


Discord BotとWebhook、どちらを選ぶべきか

AIエージェントの結果をDiscordへ届ける方法には、BotとWebhookがあります。機能が多いBotを常に選ぶ必要はありません。必要な双方向性で決めます。

比較表

| 観点 | Webhook | Bot |
|—|—|—|
| 主な用途 | 一方向の投稿 | 会話、コマンド、イベント受信 |
| 認証情報 | Webhook URL | Bot token |
| Gateway接続 | 不要 | イベント受信では必要 |
| 受信 | 基本的にできない | メッセージや操作を受信できる |
| 権限 | 投稿先中心 | Intentとサーバー権限 |
| 実装量 | 少ない | 多い |
| 向く例 | 日次レポート、障害通知 | AIとの対話、承認、状態確認 |

Discord公式も、チャンネルへメッセージを押し込むだけならWebhookがBotより適する場合があると説明しています。

Webhookを選ぶ場合

日次レポートやビルド結果など、返信を受け取らない通知に向きます。URLを知る者が投稿できるため、Webhook URLは秘密情報です。Gitやブログへ載せず、漏れたら削除して作り直します。

投稿先チャンネルを限定し、本文の個人情報を絞ります。障害時の再試行で同じメッセージを連投しないIDも必要です。

Botを選ぶ場合

利用者の質問へ答える、承認ボタンを処理する、スラッシュコマンドを使う場合はBotです。受け取るイベントに応じてGateway Intentを設定します。

`MESSAGE_CONTENT`、`GUILD_MEMBERS`、`GUILD_PRESENCES`はPrivileged Intentです。必要なものだけをDeveloper Portalで有効にし、サーバーへ追加する権限も最小化します。

AIエージェントのBotでは、Discord側の権限に加えて、誰がエージェントへ話しかけられるかをallowlistで制限します。チャンネルへ入れることと、OS上のToolを実行できることは影響が違います。

両方を使い分ける

一方向の定型通知はWebhook、対話と承認はBotに分ける構成も有効です。BotやGatewayが停止しても、別経路のWebhookで障害を通知できる可能性があります。ただし秘密情報と監視対象が増えるため、目的のない二重化は避けます。

まとめ

「送るだけ」ならWebhook、「受けて判断する」ならBotが基本です。最小機能を選ぶほど、権限、認証、監視の範囲を小さくできます。

参考にした一次情報

  • [Discord Bots & Companion Apps](https://docs.discord.com/developers/platform/bots)
  • [Discord Webhooks](https://docs.discord.com/developers/resources/webhook)
  • [Discord Gateway Intents](https://docs.discord.com/developers/events/gateway#gateway-intents)

Back to top