4.5 KiB
4.5 KiB
봇 설정 도우미 (Setup Wizard) 기획서
1. 개요
봇 설정 도우미는 관리자가 Kord 봇을 처음 서버에 추가했거나, 재설정이 필요할 때 직관적인 UI(마법사 형태)를 통해 필수 기능들을 순차적으로 설정할 수 있도록 돕는 기능입니다.
2. 진입점 (Trigger)
- 명령어:
/setup - 실행 권한:
Administrator또는Manage Guild권한 (명령어 자체의defaultMemberPermissions로 제한) - 실행 위치: 모든 텍스트 채널 (단, 과정 중 타인의 방해나 혼선을 줄이기 위해 ephemeral(개인만 보기) 형태로 진행)
3. 설정 흐름 (Setup Flow)
설정은 스텝(Step) 단위로 진행되며, 각 스텝은 Embed 메시지와 하단 컴포넌트(버튼, Select Menu 등)로 구성됩니다. 사용자는 [다음], [이번 스텝 건너뛰기], [설정 종료] 버튼 등으로 흐름을 제어합니다.
Step 0: 환영 및 소개 (Welcome)
- 내용: Kord 봇 설정 마법사 시작을 알리고, 설정될 4가지 주요 항목들을 간략히 소개합니다. (1) 언어 설정, (2) 권한 점검, (3) 감사 채널 지정, (4) 임시 음성 채널 설정
- 액션:
[시작하기]버튼 클릭 시 Step 1로 이동.
Step 1: 언어 설정 (Language)
- 내용: 서버의 기본 언어를 설정합니다. (i18n 기능 연동)
- 현재 설정 표시: 기존에 설정된 언어 표시.
- 컴포넌트: 지원하는 언어(Korean, English)를 선택할 수 있는
StringSelectMenu. - 액션:
- 선택 시 즉각적으로 DB 업데이트 및 언어 변경 적용. (이후 UI는 변경된 언어로 릴로드 됨)
[다음]/[건너뛰기]버튼.
Step 2: 권한 점검 (Permission Check)
- 내용: 봇이 원활하게 동작하기 위해 필요한 필수 권한(서버 수준)이 부여되어 있는지 점검합니다.
- 컴포넌트: 점검 통과 상태 (✅ 모두 정상 / ⚠️ 일부 부족). 부족한 경우 권한 부여를 안내합니다. (권한 검사 모듈
/audit-permissions의 축소판) - 액션:
[다시 검사]/[다음]버튼.
Step 3: 감사 채널 설정 (Audit Channel)
- 내용: 봇의 주요 이벤트와 에러 로그를 남길 시스템 통보 채널을 지정합니다.
- 컴포넌트:
- 텍스트 채널을 선택하는
ChannelSelectMenu(ChannelType.GuildText 채널만). [사용 안함(비활성화)]버튼.
- 텍스트 채널을 선택하는
- 액션: 채널 선택 시 DB 갱신 후,
[다음]버튼을 눌러 이동 (혹은 선택 즉시 자동 다음 이동 고려).
Step 4: 임시 음성 채널 설정 (Voice Generator)
- 내용: 임시 음성 채널 생성 시스템의 진입점이 될 '생성기 채널'을 지정하거나 새로 생성합니다.
- 컴포넌트:
- 기존 생성할 채널을 고르는
ChannelSelectMenu(ChannelType.GuildVoice). [자동 생성]버튼: 봇이 새 음성 카테고리와 "➕ 음성 채널 생성" 채널을 자동으로 만들어 줌.[건너뛰기]버튼.
- 기존 생성할 채널을 고르는
- 액션: 설정 시 즉각 시스템 구동. 이후
[다음(완료)]클릭.
Step 5: 설정 요약 (Summary)
- 내용: 지금까지 설정된 모든 항목의 최종 상태를 요약하여 보여줍니다.
- 컴포넌트: 설정 결과 요약 Embed.
- 액션:
[설정 마치기]버튼 (누르면 "설정이 완료되었습니다"로 메시지 변경 후 버튼 비활성화).
4. 아키텍처 (Architecture)
- State Management (상태 관리):
- 마법사는 ephemeral 메시지로 띄워지며, 세션 식별은
customId릴레이 방식을 권장합니다. - 예시:
setup_action_next_2(현재 Step 2, 다음으로 이동) 등 Stateless하게 관리하거나, - 사용자/서버별 임시 Map/Redis에
SetupSession(진행 단계 등) 보관. (구현 편의상customIdpayload에 스텝 인덱스를 담는 Stateless 방식 채택)
- 마법사는 ephemeral 메시지로 띄워지며, 세션 식별은
- i18n 통합:
- 버튼 레이블 및 Embed 내용은 모두
t()함수를 거쳐야 합니다. - Step 1에서 언어가 변경되면, 즉시 그 언어 기준의
t()를 이용해 현재 뷰(View)를 갱신합니다.
- 버튼 레이블 및 Embed 내용은 모두
5. 예외 처리 (Error Handling)
- 설정 진행 중 타임아웃(Discord 기본 15분 경과) 시: Error Guidance 시스템을 통해 "인터랙션이 만료되었습니다,
/setup을 다시 실행해주세요" 출력. - 권한 부족: 생성기
[자동 생성]등 채널 생성 로직에서 권한 부족 에러 발생 시 Error Guidance로 팝업 형태(ephemeral) 오류 출력.