2.8 KiB
2.8 KiB
2026-03-30: 서버 이벤트 일정 관리 Phase 1 구현 (Event Schedule Phase 1 Implementation)
서버 이벤트 일정 관리 기능의 Phase 1 범위를 구현했습니다. 이번 단계에서는 이벤트 데이터를 저장할 수 있는 DB 모델을 추가하고, 기본 슬래시 명령인 생성, 목록 조회, 취소 기능을 제공하도록 구성했습니다.
주요 변경 사항
1. Prisma GuildEvent 모델 및 마이그레이션 추가
GuildEvent모델을 추가해 서버 단위 이벤트 데이터를 저장할 수 있도록 했습니다.EventStatusenum을 추가해SCHEDULED,CANCELLED,COMPLETED상태를 관리할 수 있게 했습니다.startsAt,announcementChannelId,createdByUserId, 리마인더 관련 플래그를 포함해 이후 Phase 확장에 대비했습니다.20260330073722_add_guild_events마이그레이션을 생성 및 적용했습니다.
2. /event 명령 기본 기능 구현
- 새 명령 파일
src/commands/event.ts를 추가했습니다. - 아래 3개 서브커맨드를 구현했습니다.
/event create/event list/event cancel
Manage Guild권한이 필요한 관리자용 명령으로 제한했습니다.
3. 이벤트 생성 로직 구현
title,date,time,description,channel,reminder옵션을 지원합니다.- 날짜는
YYYY-MM-DD, 시간은HH:mm형식으로 입력받습니다. - 현재 Phase 1 설계에 맞춰
Asia/Seoul기준으로 시각을 해석합니다. - 과거 시각 또는 잘못된 형식 입력 시 에러 메시지를 반환합니다.
4. 이벤트 목록 조회 로직 구현
- 아직 시작하지 않은
SCHEDULED이벤트를 시작 시각 순으로 최대 10개까지 표시합니다. - Discord timestamp 포맷을 사용해 절대 시각과 상대 시각을 함께 보여줍니다.
- 이벤트 ID, 상태, 리마인더 사용 여부, 공지 채널 여부를 함께 표시합니다.
5. 이벤트 취소 로직 구현
/event cancel id:<event-id>형태로 예약 이벤트를 취소할 수 있게 했습니다.- 실제 삭제 대신 상태를
CANCELLED로 변경하는 방식으로 처리했습니다. - 서버 ID와 이벤트 상태를 함께 검사해 다른 서버 이벤트 또는 이미 취소된 이벤트를 잘못 취소하지 않도록 했습니다.
6. i18n 문구 추가
en,ko번역 파일에 이벤트 명령 관련 문구를 추가했습니다.TranslationSchema에commands.event구조를 반영해 타입 안정성을 유지했습니다.
검증 결과
yarn build: 성공yarn test --runInBand: 6개 테스트 스위트, 40개 테스트 통과
다음 단계 메모
- Phase 2에서
/event announce와 공지 Embed 전송 기능을 추가할 수 있습니다. - 리마인더 주기 작업 및 감사 로그 연동은 이후 단계에서 확장 예정입니다.