Kord/Docs/Plans/Temp_Voice_Channel_Plan.md

3.4 KiB

Kord - 임시 음성 채널 기능 기획 (Temporary Voice Channels)

체인지로그 (Changelog)

  • 2026-03-27: 최초 기획서 작성 및 확정

본문 (Body)

1. 개요

사용자가 '생성용 음성채널'에 입장하면 봇이 즉시 개인별 '전용' 임시 음성 채널을 생성해 주고 이동시켜 주는 자동화 시스템 기획서입니다.

  • 제한: 유저당 활성화된 본인 소유의 임시 채널은 1개로 제한.
  • 카테고리: 기본적으로 생성용 채널과 같은 카테고리에 생성되며 권한도 동기화. (서버 관리자가 별도 전용 카테고리를 지정할 수도 있음)
  • 삭제 조건: 서버 설정에 따라 '방장 퇴장 시' 또는 '채널 내 전원 퇴장 시(0명)' 임시 채널이 자동 삭제됨.

2. 티어(Tier) 기반 한도 제어

봇을 초대한 사용자의 구독 티어에 따라, 서버에서 만들 수 있는 '생성용 채널'의 개수가 제한됩니다. (자세한 티어 정책은 Docs/Decisions/subscription_tiers.md 참고)

3. 임시 채널 관리 인터랙션 (UI)

임시 채널이 생성되면, 해당 음성 채널의 '텍스트 채팅(Voice Text Channel)' 영역에 방장 전용 관리 인터랙션(버튼, Select Menu) 이 전송됩니다.

기본 기능 (Essential)

  1. 채널 명 변경: 임시 채널의 이름 변경. (DB에 저장되어 추후 재생성 시에도 해당 이름으로 복구)
  2. Kick (내보내기): 특정 사용자를 선택하여 강제 퇴장.
  3. Ban (차단):
    • 두 가지 수준으로 지원 가능한지 기술팀 검토 완료. (디스코드 권한 오버라이드 지원)
    • 입장 금지 모드: 대상의 Connect 권한을 false로 설정 (채널은 보이지만 들어올 수 없음).
    • 투명 방 모드(Hide): 대상의 ViewChannel 권한까지 false로 설정 (채널 자체가 안 보임).

추가 검토 및 커뮤니티 인기 기능 (Optional Research)

디스코드 봇 사용자 커뮤니티에서 자주 요구되는 아래 기능들도 도입이 함께 기획되었습니다.

  1. 인원수 제한 (User Limit): 슬라이더나 모달을 통해 채널 최대 인원 설정 (1~99명).
  2. 잠금/해제 (Lock/Unlock): 외부인의 접속을 완전히 차단하고, 방장이 초대한 사람만 들어올 수 있게 전환.
  3. 주인 위임 (Transfer Ownership): 방장이 나가더라도 채널이 유지되는 조건(deleteWhen: EMPTY)일 경우, 잔류 유저에게 방장 권한 인계.
    • 수동 위임 (Manual): 방장이 컨트롤 패널 버튼을 통해 직접 타겟 유저를 지정하여 위임.
    • 자동 위임 (Auto): 방장 퇴장 시 빈 방이 아니라면 봇이 남아있는 유저 중 서버 가입일이 가장 오래된(혹은 무작위) 유저에게 랜덤으로 위임.
    • 상태 전이 정책: 방 이름만 "새 방장의 이름 설정"으로 덮어씌우고, 기존 방장이 걸었던 '잠금(Lock)', '인원수 제한(Limit)', '차단(Ban)' 등의 보안 및 인원 설정은 변경하지 않고 그대로 현상 유지함(새 방장이 임의 조작 가능).

4. 개발 방향 (Proposed Actions)

  • Prisma를 통해 VoiceGeneratorTempVoiceChannel, 티어 검증 로직 반영.
  • voiceStateUpdate 이벤트 훅 기반의 동적 음성 채널 제어 아키텍처 수립.
  • interactionCreate에서 Modal 및 SelectMenu를 처리하여 권한 조작.