Skip to content

Discord

TriggerfishエージェントをDiscordに接続して、サーバーチャンネルとダイレクトメッセージで 応答できるようにします。アダプターはDiscord Gatewayに接続するために discord.jsを使用します。

デフォルト分類

DiscordはデフォルトでPUBLIC分類です。Discordサーバーには信頼できるメンバーとパブリック 訪問者が混在することが多いため、PUBLICが安全なデフォルトです。サーバーがプライベートで 信頼できる場合はこれを上げることができます。

セットアップ

ステップ1:Discordアプリケーションを作成する

  1. Discord Developer Portalにアクセス
  2. New Applicationをクリック
  3. アプリケーションに名前をつける(例:「Triggerfish」)
  4. Createをクリック

ステップ2:ボットユーザーを作成する

  1. アプリケーションで、サイドバーのBotに移動
  2. (まだ作成されていない場合)Add Botをクリック
  3. ボットのユーザー名の下でReset Tokenをクリックして新しいトークンを生成
  4. ボットトークンをコピー

トークンを秘密に保つ ボットトークンはボットの完全な制御を付与します。

ソースコントロールにコミットしたり公開したりしないでください。 :::

ステップ3:特権インテントを設定する

まだBotページで、以下の特権ゲートウェイインテントを有効にします:

  • Message Content Intent — メッセージコンテンツを読むのに必要
  • Server Members Intent — オプション、メンバー検索用

ステップ4:DiscordユーザーIDを取得する

  1. Discordを開く
  2. Settings > Advancedに移動してDeveloper Modeを有効にする
  3. Discordのどこかでユーザー名をクリック
  4. Copy User IDをクリック

これはTriggerfishがオーナーアイデンティティを確認するために使用するスノーフレークIDです。

ステップ5:招待リンクを生成する

  1. Developer PortalでOAuth2 > URL Generatorに移動
  2. Scopesbotを選択
  3. Bot Permissionsで以下を選択:
    • Send Messages
    • Read Message History
    • View Channels
  4. 生成されたURLをコピーしてブラウザで開く
  5. ボットを追加したいサーバーを選択してAuthorizeをクリック

ステップ6:Triggerfishを設定する

Discordチャンネルをtriggerfish.yamlに追加します:

yaml
channels:
  discord:
    # botTokenはOSキーチェーンに保存
    ownerId: "123456789012345678"
オプションタイプ必須説明
botTokenstringはいDiscordボットトークン
ownerIdstring推奨オーナー確認のためのDiscordユーザーID(スノーフレーク)
classificationstringいいえ分類レベル(デフォルト:PUBLIC

ステップ7:Triggerfishを起動する

bash
triggerfish stop && triggerfish start

ボットが存在するチャンネルでメッセージを送信するか、直接DMして接続を確認します。

オーナーアイデンティティ

Triggerfishは送信者のDiscordユーザーIDを設定されたownerIdと比較することでオーナー ステータスを決定します。このチェックはLLMがメッセージを見る前にコードで行われます:

  • 一致 — メッセージはオーナーコマンドです
  • 不一致 — メッセージはPUBLIC taintの外部入力です

ownerIdが設定されていない場合、すべてのメッセージはオーナーからのものとして扱われます。

常にオーナーIDを設定する ボットが他のメンバーがいるサーバーにいる場合は、

常にownerIdを設定してください。設定しないと、サーバーのすべてのメンバーがエージェントに コマンドを発行できます。 :::

メッセージの分割

Discordには2,000文字のメッセージ制限があります。エージェントがこれより長いレスポンスを 生成すると、Triggerfishは自動的に複数のメッセージに分割します。チャンカーは読みやすさを 維持するために改行またはスペースで分割します。

ボットの動作

Discordアダプターは:

  • 自身のメッセージを無視 — ボットは送信したメッセージには応答しません
  • アクセス可能なすべてのチャンネルでリッスン — ギルドチャンネル、グループDM、 ダイレクトメッセージ
  • Message Content Intentが必要 — これがないと、ボットは空のメッセージイベントを受け取ります

タイピングインジケーター

Triggerfishはエージェントがリクエストを処理しているときにDiscordにタイピングインジケーターを 送信します。Discordはユーザーからボットへのタイピングイベントを信頼できる形で公開していないため、 これは送信のみです。

グループチャット

ボットはサーバーチャンネルに参加できます。グループ動作を設定します:

yaml
groups:
  default_behavior: "mentioned-only"
  overrides:
    - channel: discord
      behavior: "always"
動作説明
mentioned-onlyボットが@メンションされた時のみ応答
alwaysチャンネルのすべてのメッセージに応答

分類の変更

yaml
channels:
  discord:
    # botTokenはOSキーチェーンに保存
    ownerId: "123456789012345678"
    classification: INTERNAL

有効なレベル:PUBLICINTERNALCONFIDENTIALRESTRICTED