# 2026-03-30: 서버 이벤트 일정 관리 Phase 2 구현 (Event Schedule Phase 2 Implementation) 서버 이벤트 일정 관리 기능의 Phase 2 범위를 구현했습니다. 이번 단계에서는 이벤트 공지 Embed 전송, 수동 공지 명령, 자동 리마인더, 시작 시 자동 완료 처리를 추가했습니다. ## 주요 변경 사항 ### 1. `EventService` 추가 - `src/services/EventService.ts`를 추가했습니다. - 이벤트 공지 Embed 생성, 리마인더 전송, 시작 시 완료 처리 로직을 서비스로 분리했습니다. - 이벤트 시작 1시간 전 / 10분 전에 자동 리마인더를 보낼 수 있도록 구현했습니다. ### 2. 봇 시작 시 이벤트 루프 자동 시작 - `ready` 이벤트에서 `EventService.startReminderLoop(client)`를 호출하도록 연결했습니다. - 봇이 로그인되면 1분 간격으로 예정 이벤트를 확인합니다. ### 3. 이벤트 공지 기능 추가 - 이벤트 생성 시 공지 채널이 설정되어 있으면 공지 Embed를 즉시 전송합니다. - `/event announce` 서브커맨드를 추가해 기존 이벤트를 수동으로 다시 공지할 수 있게 했습니다. - 공지 성공 시 `announcedAt` 시각을 업데이트합니다. ### 4. 자동 리마인더 및 상태 전환 - `GuildEvent.reminderEnabled`가 활성화된 이벤트를 주기적으로 검사합니다. - 시작 1시간 전에는 `remindedOneHour` - 시작 10분 전에는 `remindedTenMinutes` 플래그를 사용해 중복 전송을 방지합니다. - 이벤트 시작 시각이 지나면 상태를 `COMPLETED`로 자동 전환합니다. ### 5. i18n 및 명령 확장 - `commands.event` 번역 키에 `announce`, `statusCompleted`, 공지 성공/실패 문구를 추가했습니다. - `/event` 명령은 이제 다음 서브커맨드를 지원합니다. - `/event create` - `/event list` - `/event cancel` - `/event announce` ## 검증 결과 - `yarn build`: 성공 - `yarn test --runInBand`: 6개 테스트 스위트, 40개 테스트 통과 ## 다음 단계 메모 - 이후 단계에서 감사 로그에 이벤트 생성/취소/공지 성공까지 더 세밀하게 기록할 수 있습니다. - RSVP 버튼, 반복 일정, Discord Scheduled Event 연동은 후속 확장 과제로 남아 있습니다.