> ## 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명의 스트리머**. 모든 플랫폼이 공유하는 규칙은 [알림 작동 방식](/ko/notifications/overview)을 참고하세요.
</Info>

## 스트리머 추가

이름으로 채널을 검색하세요 — Vetox가 Twitch에서 조회하여 존재를 확인한 뒤 추가합니다. 해석되지 않는 사용자 이름은 **Twitch user not found**로 거절됩니다.

사용자 이름은 1\~25자로, 문자, 숫자, 밑줄만 가능합니다.

## 설정

| 설정                            | 기본값       | 설명                                     |
| ----------------------------- | --------- | -------------------------------------- |
| **Discord Channel**           | —         | 필수. 스트리머별로 설정하므로 다른 스트리머가 다른 채널에 게시 가능 |
| **Notify when online**        | **켬**     | 라이브 알림                                 |
| **Notify when offline**       | **끔**     | 방송 종료 시 두 번째 알림                        |
| **Mention Role**              | 없음        | 알림과 함께 핑됨                              |
| **Custom Notification Embed** | Twitch 기본 | 보라색, 방송 제목/게임/시청자 수 포함                 |

## 변수

| 변수                   | 해석                        |
| -------------------- | ------------------------- |
| `{streamer.name}`    | 스트리머 표시 이름                |
| `{streamer.url}`     | Twitch 채널 URL             |
| `{streamer.avatar}`  | 프로필 사진                    |
| `{stream.title}`     | 방송 제목 — **라이브 알림 전용**     |
| `{stream.game}`      | 방송 중인 카테고리 — **라이브 전용**   |
| `{stream.viewers}`   | 알림 시점의 시청자 수 — **라이브 전용** |
| `{stream.thumbnail}` | 방송 미리보기 이미지 — **라이브 전용**  |

<Warning>
  네 가지 `{stream.*}` 변수는 **오프라인** 알림에서 값이 없습니다. 이들로 구성된 임베드 필드는 그 메시지에서 사라집니다. 오프라인 임베드는 `{streamer.*}` 변수만 사용하세요.
</Warning>

## 라이브 전환 감지 방식

Vetox는 **60초마다** 확인하며 채널의 라이브 여부를 추적합니다.

<Steps>
  <Step title="오프라인 → 라이브">
    스트리머당 **10분 쿨다운**을 조건으로 알림이 발동됩니다.
  </Step>

  <Step title="계속 라이브">
    아무것도 없습니다. 상태만 갱신됩니다 — 긴 방송은 정확히 하나의 알림을 만듭니다.
  </Step>

  <Step title="라이브 → 오프라인">
    활성화한 경우 오프라인 알림이 발동됩니다.
  </Step>
</Steps>

<Warning>
  **이미 라이브 중인 스트리머를 추가하면 아무 알림도 발생하지 않습니다.** 트래커는 현재 상태가 아니라 전환에서 발동됩니다. 첫 알림은 그 사람의 다음 방송입니다.
</Warning>

<Note>
  쿨다운 창 안에서 잠깐 끊겼다가 재연결된 방송은 두 개가 아니라 하나의 알림을 만듭니다 — 의도된 동작이며, 쿨다운이 1분이 아니라 10분인 이유입니다.
</Note>

## 실제 설정 예

<Steps>
  <Step title="서버 설정에서 Twitch 켜기">
    기본은 꺼짐입니다. 이것이 켜지기 전까지 아무것도 동작하지 않습니다.
  </Step>

  <Step title="스트리머 추가">
    이름을 검색하고 결과에서 선택하세요.
  </Step>

  <Step title="채널과 역할 선택">
    전용 `#going-live` 채널과 [셀프 역할](/ko/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="두 서버가 같은 스트리머를 팔로우하는데 한 곳만 핑이 왔어요">
    양쪽 모두 발동되어야 합니다. 한 채널의 권한이 실패했다면 재시도 없이 그 항목이 손실됩니다 — 실패한 쪽의 Embed Links를 확인하세요.
  </Accordion>
</AccordionGroup>

<Card title="Kick" icon="tower-broadcast" horizontal href="/ko/notifications/kick">
  Kick에서 동일한 라이브/오프라인 모델.
</Card>
