Skip to content

[Feature] 디스코드 챗봇(웬디) 명령어 및 스케줄러 구현 #22

@hayeon7898

Description

@hayeon7898

✨ 기능 개요

디스코드 챗봇 "웬디"의 명령어 핸들러 및 시간 기반 스케줄러 구현

🧩 주요 작업 내용

  • WendyCommand.java - 디스코드 명령어 핸들러
  • WendyScheduler.java - 시간 기반 자동 메시지 스케줄러
  • VoteResult.java - 투표 현황 DTO
  • DiscordBotConfig.java - Spring Boot + JDA 연동 설정
  • WendyService.java - 서비스 인터페이스 정의
  • WendyServiceStub.java - 임시 구현체 (테스트용)

💬 추가 설명

구현된 명령어

명령어 기능
웬디 시작 세션 시작 + 참석자 체크(✅) + 날짜 범위 질문
웬디 종료 세션 종료 + 스케줄러 중지
웬디 재투표 기존 참석자로 재투표
/help, 웬디 도움말 명령어 안내

스케줄러 동작

시점 동작
10분 후 첫 투표 현황 공유
11분~ 1분마다 신규 투표자 체크
15분, 1시간, 6시간, 12시간, 24시간 미투표자 독촉

폴더 구조

com.workingdead/
├── config/
│   └── DiscordBotConfig.java
├── chatbot/
│   ├── command/
│   │   └── WendyCommand.java
│   ├── scheduler/
│   │   └── WendyScheduler.java
│   └── dto/
│       └── VoteResult.java
└── meet/service/
    ├── WendyService.java        # 인터페이스
    └── WendyServiceStub.java    # 임시 구현 (TODO 주석 참고)

⚠️ 다음 작업 필요 (WendyServiceStub 실제 구현)

WendyServiceStub.java는 테스트용 껍데기입니다. 아래 메서드들의 실제 구현이 필요합니다:

메서드 설명 힌트
createVote() 투표 생성 후 URL 반환 VoteService 활용
getVoteStatus() 투표 현황 → VoteResult 변환 VoteResultService 활용
getNonVoterIds() 미투표자 디스코드 ID 반환 참석자 - 투표자
hasNewVoter() 신규 투표자 감지 lastCheckTime 비교

자세한 내용은 WendyServiceStub.java 주석 참고!

📎 참고 자료

  • Discord Developer Portal에서 봇 토큰 발급 필요
  • application.ymldiscord.token 설정 필요
  • Privileged Gateway Intents 활성화 필요 (MESSAGE CONTENT, SERVER MEMBERS)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions