Kord/Docs/Features/temp_voice_channels.md

28 lines
2.3 KiB
Markdown

# Kord - 임시 음성 채널 제어 (Temp Voice Channels)
## 체인지로그 (Changelog)
- **2026-03-27**: 임시 채널 자동 생성/삭제 로직, 티어 연동, 방장 관리 UI(Rename, Limit, Lock, Kick, Ban) 추가
## 본문 (Body)
### 개요
`Kord` 봇은 지정된 '생성용 채널(Generator Channel)'에 유저가 입장할 경우, 해당 유저만을 위한 '임시 음성 채널(Temporary Voice Channel)'을 동적으로 생성하고 관리합니다. 유저가 생성용 채널에 접속하면 봇은 데이터베이스의 티어와 기존 방 설정 내역을 검사하여 새로운 음성 채널을 만들고 권한을 연동해 줍니다. 반대로 누군가 방에서 퇴장할 때마다 조건에 맞춰 자동으로 삭제하여 서버 깔끔함을 유지합니다.
### 주요 기능 사양
1. **임시 채널 생성 원리**:
- 트리거 이벤트: `voiceStateUpdate` (유저가 `VoiceGenerator`에 지정된 채널 ID에 접속 시 확인)
- 중복 검증: 이미 본인의 임시 채널이 있는 유저는 새 채널을 생성하지 않고 기존 방으로 위치를 이동시킵니다.
- 이름 설정: `UserVoiceProfile` 정보를 불러와 `<유저 지정 이름>`으로, 없다면 `<유저명>'s Room` 기본 형식으로 생성합니다.
2. **삭제 조건 (`DeleteCondition`)**:
- `EMPTY` (기본값): 채널 안에 남아있는 유저 인원수(`members.size`)가 `0`이 되는 순간 방 폭파.
- `OWNER_LEAVE`: 방장(소유자)이 방을 나가는 즉시 남은 인원수와 상관없이 삭제.
3. **인터랙션(UI) 제어**:
채널 생성 시 텍스트 채팅창을 통하여 방장만 조작할 수 있는 **버튼 컨트롤 패널**이 송신됩니다.
- 버튼 클릭 (InteractionCreate): 커스텀 ID(예: `vc_rename_<OwnerId>`)와 상호작용.
- 조작 가능한 기능: 채널 이름 변경, 인원수 제한 변경, 외부 접속 여부 토글(Lock/Unlock), 유저 강퇴(Kick), 유저 차단 및 은신 (Ban/Hide).
### 기술적 특이사항 (의사결정)
- 차단(Ban) 기능 모델링: 단순히 접속 거부가 아니라 "방 자체를 안 보이게" 조치할 수 있도록 특정 유저의 채널 오버라이드(PermissionOverwrite)에서 `ViewChannel``Connect` 권한을 동시에 `false`로 주입합니다.