Discord
ボットトークンを使った単一チャンネル設定。ストリーミング対応ゲートウェイで、2,000 文字制限あり。コミュニティサーバーに適しています。
🟢 実行可能 このゲートウェイはメッセージ編集エンドポイントを通じたストリーミング編集をサポートしています(本番のコード呼び出し側はまだ未実装です。詳細は後述)。ボットモード専用です。Discord のウェブフックはライブストリーミングに必要な編集 API を公開していません。
主な機能
- ストリーミング編集
PATCH /channels/{channel}/messages/{id}を使用します。チャンネルごとの 5 編集 / 5 秒というレート制限に収まるよう、1 秒間隔でスロットリングされます。createStreamSinkによって駆動され、send_message自体はワンショット送信です。 - 添付ファイル 画像、ファイル、音声を
POST /channels/{cid}/messagesのマルチパートエンドポイント(payload_json+files[n])でまとめて送信できます。音声添付ファイルはプレーヤー付き音声ファイルとして表示されます(波形表示付きのネイティブ音声メッセージ UI は今後対応予定)。 - 1 メッセージあたり 2,000 文字制限
send_messageはツールの境界でそれ以上の長さのテキストを拒否します。ストリームシンクはストリームの途中で… (truncated)マーカーを付けて切り捨てます。 - ゲートウェイごとに単一チャンネル 複数のチャンネルに投稿するには、
send_messageのchannelオーバーライドを使用してください。
セットアップ
1. ボットアプリケーションを作成する
- Discord Developer Portal を開き、New Application をクリックします。
- Bot に移動し、Reset Token をクリックしてトークンをコピーします(一度しか表示されません)。
- Privileged Gateway Intents の Message Content はオフのままにします。Minara はメッセージを送信するだけで、読み取りは行いません。
- OAuth2 → URL Generator からボットのインストール URL をコピーします。スコープで
bot、ボット権限でSend Messagesにチェックを入れ、URL をブラウザに貼り付けてサーバーにボットを追加します。
2. 対象チャンネルの ID を確認する
Discord クライアントで ユーザー設定 → 詳細設定 → 開発者モード = ON にし、チャンネルを右クリックして チャンネル ID をコピー します。1234567890123456789 のような数値スノーフレーク形式です。
3. Minara を設定する
簡単な方法:
"set up Discord notifications in channel 1234567890"
手動での設定:
minara auth messaging add discordまたはプロジェクトルートの .env ファイルに直接記述します:
DISCORD_BOT_TOKEN=<bot token>
DISCORD_CHANNEL_ID=12345678901234567894. テストする
minara auth messaging test discordストリーミングの動作
Discord のメッセージ編集エンドポイントは、チャンネルごとに 5 秒あたり 5 編集 というレート制限があります。DiscordGateway は streamDefaultIntervalMs = 1000 を宣言しているため、createStreamSink は最初の 5 秒間に最大 5 回程度の編集を行い、その後は 1 Hz で継続します。スロットルは createStreamSink(gw, msg, { intervalMs: 1500 }) で呼び出し側から調整できます。これは呼び出し側のオプションであり、send_message ツールの引数ではありません。ストリーミング自体は配線済みですが、本番のコードパスからはまだ呼び出されていません。
2,000 文字を超えるレスポンスは分割せず切り捨てられます。Discord は各 chat.postMessage をアトミックに処理するため、ストリームの途中で分割すると編集チェーンが読みにくくなるためです。
チャンネルのオーバーライド
send_message({
provider: "discord",
channel: "9876543210987654321",
text: "Critical: position liquidation imminent",
})トラブルシューティング
"Missing Access (50001)"
- ボットがサーバーのメンバーでないか、チャンネルを表示する権限がありません。OAuth インストール URL とチャンネルのロール権限を再確認してください。
"Missing Permissions (50013)"
- ボットはサーバーに参加していますが、このチャンネルで
Send MessagesやEmbed Linksを実行できません。チャンネルの権限を編集し、ボットのロールにSend Messagesを付与してください。
"Cannot send empty message (50006)"
- コンテンツモデレーション中にメッセージ本文が削除されました。Discord はマークアップに見えるプレーンテキストのパターンをブロックすることがあります。句読点を少し変えて同じメッセージを試してみてください。
"Stream feels choppy"
- デフォルトのスロットルは 1,000 ms です。Discord の 5 / 5 レート制限が上限であり、これ以上速くすると一時的な 429 エラーが発生するリスクがあります。このペースを受け入れるか、ライブストリーミングには Telegram を使用してください。
リファレンス
- 環境変数:
DISCORD_BOT_TOKEN,DISCORD_CHANNEL_ID - ソース:
apps/agent/src/messaging/discord.ts - REST API ドキュメント: discord.com/developers/docs/resources/channel