Kord/Docs/WorkDone/2026-03-31_Fishing_MiniGame...

1.8 KiB

2026-03-31 낚시 미니게임 Phase 1 구현

개요

낚시 미니게임의 1차 구현을 추가했습니다. 이번 단계에서는 전용 스레드 기반 세션, 실시간 버튼 조작, 거리/끊어짐 게이지, 성공 시 골드 지급, 종료 시 스레드 정리까지 MVP 범위를 구현했습니다.

구현 내용

  • fishing 미니게임을 공용 미니게임 레지스트리에 등록
  • /fishing cast 명령 추가
  • /fishing end 명령 추가
  • 낚시 시작 시 UserName's Fishing Spot 형식의 전용 스레드 생성
  • 사용자당 1개 세션만 허용하는 메모리 기반 세션 관리 추가
  • ⬅️, ⏺️, ➡️, 🛌 버튼 조작 추가
  • 1초 주기 상태 갱신 루프 추가
  • 거리 게이지와 끊어짐 게이지 렌더링 추가
  • 중앙 라인에 물고기 이모지 위치 표시 추가
  • 방향 일치 시 거리 감소 및 끊어짐 게이지 증가 로직 구현
  • 휴식 선택 시 끊어짐 게이지 회복 로직 구현
  • 성공 시 RefinementProfile.gold 기준 골드 지급 연동
  • 성공/실패/강제 종료 시 버튼 비활성화 및 스레드 자동 정리 추가

주요 파일

  • src/commands/fishing.ts
  • src/services/FishingService.ts
  • src/events/interactionCreate.ts
  • src/services/MiniGameRegistry.ts
  • src/services/RefinementService.ts
  • src/i18n/types.ts
  • src/i18n/locales/en.ts
  • src/i18n/locales/ko.ts
  • tests/services/FishingService.test.ts

검증

  • tsc
  • jest tests/services/FishingService.test.ts --runInBand

비고

  • Prisma Client는 최신 스키마 기준으로 다시 생성해 타입을 맞췄습니다.
  • ko.ts에 존재하던 일부 깨진 문자열은 빌드를 막는 구간 위주로 우선 복구했습니다.
  • 세션은 메모리 기반이므로 봇 재시작 시 진행 중 낚시 세션은 유지되지 않습니다.