Command Palette

Search for a command to run...

iFrames

埋め込みフレーム内にあるアクティビティデータを扱います。

iFrameプレゼンススクリプトはオプトイン機能として利用できます。metadata.jsonでiframeをtrueに設定し、iFrameRegExpを指定してください。

iFrameプレゼンスの設定

ネストされたフレームのURLパターンをmetadata.jsonに追加します。

{
  "iframe": true,
  "iFrameRegExp": "player\\.example\\.com/embed/"
}

presence.tsの隣にiframe.tsを作成します。該当するネストされたフレーム内で実行されます。

const iframe = new iFrame()

iframe.on("UpdateData", () => {
  const video = document.querySelector("video")
  if (!video) return

  iframe.send({
    video: {
      paused: video.paused,
      currentTime: video.currentTime,
      duration: video.duration,
      title: document.querySelector(".video-title")?.textContent,
    },
  })
})

presence.tsでデータを受け取ります。

presence.on("iFrameData", (data) => {
  iFrameData = data
})

iFrameDataはメッセージごとに1回発行されます。複数のフレームがある場合は、メインのプレゼンスでデータを識別または統合してください。iFrameRegExpはネストされたフレームのURLに対して評価されます。

推奨されるアプローチ

iframe処理は、メインページが必要な状態にアクセスできない場合にのみ使用してください。

iframeのロジックを追加する前に、安定したDOMセレクタ、メディア要素、公開されているページの状態を優先してください。

安全性

フレームから個人情報や機密データを収集することは避けてください。プレゼンスは、Discord Rich Presenceにとって有用なアクティビティ情報のみを送信する必要があります。