# Kord - YouTube 음악 재생 Phase 2 구현

## 변경 개요

YouTube 음악 재생 기능의 Phase 2를 구현했다.

이번 단계에서는 재생 목록 관리 기능을 확장하고, 재생 중 메시지에 진행 바 UI를 추가해 현재 재생 상태를 더 직관적으로 볼 수 있도록 개선했다.

---

## 구현 범위

- `/music remove index:<번호>`
  - 대기열에서 원하는 곡 삭제
- `/music stop`
  - 현재 재생 중지 + 대기열 비우기
- YouTube 재생목록 URL 추가
  - `list=` 파라미터가 있는 링크를 재생목록으로 인식
  - 최대 100곡까지 대기열에 추가
- 재생 메시지 UI 개선
  - 현재 재생 시간
  - 전체 길이
  - 진행 바 텍스트 UI
  - 10초 간격 자동 갱신

---

## 기술 구현

### 1. MusicService 확장

`src/services/MusicService.ts`

- 길드 세션에 현재 곡 시작 시각(`nowPlayingStartedAt`)과 진행 바 갱신 인터벌(`progressInterval`) 추가
- `yt-dlp --dump-single-json --flat-playlist`를 사용해 재생목록 URL 파싱
- `remove()` 메서드 추가
- 현재 곡 진행률 계산 및 텍스트 진행 바 생성
- 재생 메시지를 10초 간격으로 업데이트

### 2. Slash Command 확장

`src/commands/music.ts`

- `/music remove`
- `/music stop`
- 재생목록 URL 응답 메시지 분기 추가

### 3. i18n 반영

- `src/i18n/types.ts`
- `src/i18n/locales/en.ts`
- `src/i18n/locales/ko.ts`

추가된 번역 키:
- remove / stop 명령 설명
- 인덱스 삭제 성공 / 범위 오류 안내
- 재생목록 추가 성공 메시지
- 진행 바 / 알 수 없는 길이 표기

### 4. 테스트 보강

`tests/services/MusicService.test.ts`

- YouTube 재생목록 URL 감지 테스트 추가

---

## 검증

- `yarn build`
- `yarn test --runInBand`

두 명령 모두 정상 통과했다.

---

## 참고 사항

- 진행 바는 길이를 알 수 있는 곡에만 10초 간격으로 갱신된다.
- 재생목록 URL은 최대 100곡까지 가져오도록 제한했다.
- 현재 재생 중인 곡은 `/music remove` 대상이 아니며, 대기열 곡만 삭제된다.
