Kord/Docs/WorkDone/2026-03-27_Voice_Channels_I...

1.6 KiB

2026-03-27: 임시 음성 채널 고도화 (서버별 설정 및 닉네임 폴백)

임시 채널 생성 시 서버마다 다른 설정을 유지할 수 있도록 하고, 채널 이름에 보다 적절한 닉네임을 사용하도록 시스템을 개선했습니다.

주요 개선 사항

1. 서버별 독립 프로필 지원

  • DB 스키마 변경: UserVoiceProfile 모델을 유저ID와 서버ID의 복합 키([userId, guildId]) 구조로 리팩토링했습니다.
  • 이를 통해 한 유저가 서버 A에서 설정한 채널 이름 템플릿이나 인원 제한이 서버 B의 활동에 영향을 주지 않도록 독립성을 확보했습니다.

2. 정교한 이름 확인 로직 (getEffectiveName)

채널 이름 생성 시 사용자의 이름을 다음 우선순위에 따라 결정합니다:

  1. 서버 닉네임 (Server Nickname)
  2. 글로벌 디스플레이 이름 (Global Name)
  3. 사용자명 (Username)
  4. 사용자 ID (ID - 최후의 수단 탈출구)

3. 서버 전역 음성 설정 명령어 추가 (/voice-config)

  • set-name: 서버 내 모든 임시 채널에 적용될 기본 이름 템플릿 설정 (예: {{username}}의 방).
  • set-limit: 서버 기본 인원 제한 설정.
  • status: 현재 서버에 적용된 음성 관리 정책 확인.

검증 결과

  • 유닛 테스트: VoiceService.test.ts를 통해 닉네임 결정 로직이 의도한 우선순위대로 작동함을 확인했습니다.
  • 수동 테스트: 서로 다른 서버에서 한 유저에게 다른 프로필이 각각 독립적으로 저장되고 적용됨을 확인했습니다.