MINARA
Minaraを使用するクライアントとインターフェースメッセージングプラットフォーム

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_messagechannel オーバーライドを使用してください。

セットアップ

1. ボットアプリケーションを作成する

  1. Discord Developer Portal を開き、New Application をクリックします。
  2. Bot に移動し、Reset Token をクリックしてトークンをコピーします(一度しか表示されません)。
  3. Privileged Gateway IntentsMessage Contentオフのままにします。Minara はメッセージを送信するだけで、読み取りは行いません。
  4. 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=1234567890123456789

4. テストする

minara auth messaging test discord

ストリーミングの動作

Discord のメッセージ編集エンドポイントは、チャンネルごとに 5 秒あたり 5 編集 というレート制限があります。DiscordGatewaystreamDefaultIntervalMs = 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 MessagesEmbed Links を実行できません。チャンネルの権限を編集し、ボットのロールに Send Messages を付与してください。

"Cannot send empty message (50006)"

  • コンテンツモデレーション中にメッセージ本文が削除されました。Discord はマークアップに見えるプレーンテキストのパターンをブロックすることがあります。句読点を少し変えて同じメッセージを試してみてください。

"Stream feels choppy"

  • デフォルトのスロットルは 1,000 ms です。Discord の 5 / 5 レート制限が上限であり、これ以上速くすると一時的な 429 エラーが発生するリスクがあります。このペースを受け入れるか、ライブストリーミングには Telegram を使用してください。

リファレンス

目次