2.2 KiB
2.2 KiB
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 연동은 후속 확장 과제로 남아 있습니다.