Kord/Docs/WorkDone/2026-03-30_Event_Schedule_P...

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