고정 공격대(레이드)의 시간 조율을 돕는 디스코드 봇. 멤버별 가능 시간을 모아 겹치는 최적 시간대를 계산하고, 레이드 소집·참석 집계·시작 전 알림까지 처리한다.
| 커맨드 | 설명 |
|---|---|
/공대추가 [멤버] |
고정 공대 명단에 추가 (비우면 본인) |
/공대제외 [멤버] |
명단에서 제외 |
/공대 |
현재 명단 보기 |
/가능시간 <요일> <시작> <종료> |
참여 가능한 시간대 등록 (여러 번 등록 가능) |
/내일정 |
내가 등록한 가능 시간 보기 |
/일정초기화 |
내 가능 시간 전체 삭제 |
/조율 [개수] |
겹치는 최적 시간대 랭킹 계산 |
/레이드소집 <제목> <시간> |
레이드 소집 + 참석 버튼(✅🤔❌) 집계 |
- 시간 조율은 명단(roster)에 등록된 인원만 대상으로 계산한다. 명단이 비어 있으면 가능 시간을 등록한 모두를 대상으로 한다.
- 레이드 소집 메시지의 참석 버튼은 봇을 재시작해도 계속 동작한다(persistent view).
- 시작 30분 전 참석자를 멘션해 자동 알림한다.
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # 그 다음 .env 에 봇 토큰과 GUILD_ID 입력
python bot.py- https://discord.com/developers/applications → New Application
- 좌측 Bot → Reset Token → 토큰 복사 →
.env의DISCORD_TOKEN에 붙여넣기 - 같은 화면에서 특권 인텐트(Privileged Intents)는 켤 필요 없음 (슬래시 커맨드만 사용)
- 좌측 OAuth2 → URL Generator:
- Scopes:
bot,applications.commands - Bot Permissions:
Send Messages,Embed Links - 생성된 URL 로 봇을 서버에 초대
- Scopes:
- 서버 설정 → 고급 → 개발자 모드 켠 뒤, 서버 아이콘 우클릭 → ID 복사 →
.env의GUILD_ID에 입력 (개발 중에는 GUILD_ID 를 넣어야 슬래시 커맨드가 즉시 뜬다. 비우면 글로벌 등록이라 반영까지 최대 1시간)
- 모든 상태는
data/raid.db(SQLite) 에 저장된다. 백업은 이 파일만 복사하면 된다. .env와data/는.gitignore로 커밋에서 제외된다.
bot.py 진입점 · 코그 로딩 · 슬래시 커맨드 동기화
db.py SQLite 스키마 · 커넥션
util.py 요일 라벨 · 시간대
cogs/roster.py 고정 공대 명단
cogs/availability.py 가능 시간 등록
cogs/coordinate.py 겹치는 시간대 계산
cogs/raid.py 레이드 소집 · 참석 버튼 · 리마인더