> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vetox.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Twitch 通知

> Twitch ストリーマーが配信開始・終了したときに Discord で告知します。埋め込みは完全にカスタマイズ可能。

<Info>
  **Basic** が必要。サーバーごとに最大 **10 ストリーマー**。全プラットフォーム共通のルールは [通知の仕組み](/ja/notifications/overview) を参照。
</Info>

## ストリーマーの追加

名前でチャンネルを検索します — Vetox が Twitch で照会し、存在を確認してから追加します。解決できないユーザー名は **Twitch user not found** で拒否されます。

ユーザー名は 1〜25 文字、英数字とアンダースコアのみ。

## 設定

| 設定                            | 既定        | 備考                             |
| ----------------------------- | --------- | ------------------------------ |
| **Discord Channel**           | —         | 必須。ストリーマーごとに設定でき、異なるチャンネルへ投稿可能 |
| **Notify when online**        | **オン**    | ライブ告知                          |
| **Notify when offline**       | **オフ**    | 配信終了時の 2 つ目の告知                 |
| **Mention Role**              | なし        | 告知と共に ping されるロール              |
| **Custom Notification Embed** | Twitch 既定 | 紫、配信タイトル・ゲーム・視聴者数付き            |

## 変数

| 変数                   | 解決先                    |
| -------------------- | ---------------------- |
| `{streamer.name}`    | ストリーマーの表示名             |
| `{streamer.url}`     | Twitch チャンネル URL       |
| `{streamer.avatar}`  | プロフィール画像               |
| `{stream.title}`     | 配信タイトル — **ライブ告知のみ**   |
| `{stream.game}`      | 配信中のカテゴリ — **ライブ時のみ**  |
| `{stream.viewers}`   | 告知時点の視聴者数 — **ライブ時のみ** |
| `{stream.thumbnail}` | プレビュー画像 — **ライブ時のみ**   |

<Warning>
  4 つの `{stream.*}` 変数は **オフライン** 告知では値がありません。これらから作った埋め込みフィールドはメッセージから消えます。オフライン埋め込みは `{streamer.*}` 変数のみに留めてください。
</Warning>

## ライブ検出

Vetox は **60 秒ごと** に確認し、チャンネルの配信状態を追跡します。

<Steps>
  <Step title="オフライン → ライブ">
    告知が発火します（ストリーマーごとに **10 分のクールダウン**）。
  </Step>

  <Step title="ライブ継続中">
    何も起きません。状態がリフレッシュされるだけ — 長時間の配信でも告知はちょうど 1 回です。
  </Step>

  <Step title="ライブ → オフライン">
    有効化していればオフライン告知が発火します。
  </Step>
</Steps>

<Warning>
  **既に配信中のストリーマーを追加しても何も告知されません。** トラッカーは現在の状態ではなく遷移で発火します。最初の告知は次回の配信になります。
</Warning>

<Note>
  短時間切断してクールダウン内に再接続した配信は 1 回だけ告知されます — 意図的で、これがクールダウンが 1 分ではなく 10 分になっている理由です。
</Note>

## 実運用のセットアップ

<Steps>
  <Step title="サーバーセットアップで Twitch をオン">
    既定オフ。これがオンになるまで何も動きません。
  </Step>

  <Step title="ストリーマーを追加">
    名前で検索し結果から選択。
  </Step>

  <Step title="チャンネルとロールを設定">
    専用の `#going-live` チャンネルと、[セルフロール](/ja/engagement/self-roles) でオプトインする `@Stream Ping` ロールが多くのサーバーのパターンです。
  </Step>

  <Step title="そのチャンネルでのボット権限を確認">
    View Channel、Send Messages、**Embed Links**。
  </Step>

  <Step title="次の配信を待つ">
    配信中に追加した結果で判断しないでください。
  </Step>
</Steps>

## トラブルシューティング

<AccordionGroup>
  <Accordion title="配信開始したのに何も投稿されない">
    サーバーセットアップの Twitch トグル、プレミアムが有効、対象チャンネルの Embed Links を確認。配信中に追加した場合は仕様で、次回配信を待ってください。
  </Accordion>

  <Accordion title="ゲームや視聴者数が表示されない">
    オフライン告知を見ています。これらの変数はライブ時のみ存在します。
  </Accordion>

  <Accordion title="チャンネル変更が反映されない">
    チャンネルフィールドをクリアすると送信されず、旧値が黙って保持されます。クリアではなく別のチャンネルを選択してください。
  </Accordion>

  <Accordion title="2 サーバーが同じストリーマーをフォローしているのに片方だけ ping された">
    どちらも発火するはずです。片方のチャンネル権限が失敗した場合、そのアイテムは失われリトライされません — 失敗側の Embed Links を確認してください。
  </Accordion>
</AccordionGroup>

<Card title="Kick" icon="tower-broadcast" horizontal href="/ja/notifications/kick">
  Kick での同じライブ／オフラインモデル。
</Card>
