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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions