명령어
| 명령어 | 기능 |
|---|---|
| /setup | 서버 채널 및 역할 자동 구성 |
| /add-prob | 분야·문제명 선택 후 채널 생성 |
| /solve | 현재 문제 해결 처리 |
| /unsolve | 해결 처리 취소 |
| /edit-prob | 문제 이름·분야·점수 수정 |
| /delete-prob | 문제 채널 삭제 |
| /help | 사용 가능한 명령어 안내 |
대충 이정도 구현하면 되지 않을까 생각했음
setup 명령어
기능
처음 앱 초대 후 대회 운영에 필요한 기본 채널과 카테고리를 자동 생성한다.
동작 과정
/setup 명령어를 실행하면 다음과 같이 디렉터리가 만들어짐
1
2
3
4
5
6
7
8
9
10
11
12
13
14
🏆 CTF SERVER
│
├── 📌 INFORMATION
│ └── 📋・대회정보
│
├── 🎯 CHALLENGES
│ └── (문제 등록 시 자동 생성)
│
├── 💬 TEAM
│ ├── 💬・자유채팅
│ └── 📝・라이트업
│
└── 🔊 VOICE
└── General
해당 명령어를 구현할 때 다음과 같은 것들을 고려했음
- 여러 번 호출해도 채널이 중복 생성되지 않고 기존 채팅 및 파일은 유지한다.
- 문제 생성 시 디스코드 포럼이나 쓰레드 형식이 아닌 일반 텍스트 채널 형태로 생성한다.
CTFtime 연동
CTFtime 은 대회 API를 입력하면 대회 이름, 시작 및 종료 날짜/시간, 공식 대회 홈페이지 주소, 대회 형식, 주최자 정보, 장소 등의 정보를 받을 수 있음 따라서 해당 기능을 활용하여 CTFTime 에 등록된 대회라면 자동으로 정보를 불러와서 보여줄 수 있음
/setup 명령 실행 시 봇이 다음과 같은 명령을 보여줌
1
2
3
4
5
6
7
8
🏆 CTF 서버 초기 설정
대회 서버를 자동으로 구성합니다.
📌 대회 정보를 어떻게 등록할까요?
[🌐 CTFtime에서 불러오기]
[⏭️ 건너뛰고 시작하기]
ctftime 에서 불러오기 버튼을 누르면 입력창이 표시됨
1
2
3
4
5
6
7
8
9
10
┌────────────────────────────────────┐
│ 🌐 CTFtime 대회 등록 │
│ │
│ CTFtime 대회 URL │
│ ┌──────────────────────────────┐ │
│ │ https://ctftime.org/event/ │ │
│ └──────────────────────────────┘ │
│ │
│ [제출] │
└────────────────────────────────────┘
CTFtime은 공식 API로 특정 대회의 정보를 조회하는 기능을 제공해서 ID 기반으로 대회 정보가 자동으로 생성될 수 있음
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
🏆 ACDC 2026
│
├── 📌 INFORMATION
│ └── 📋・대회정보 ← CTFtime 정보 자동 등록
│
├── 🎯 CHALLENGES
│
├── 💬 TEAM
│ ├── 💬・자유채팅
│ └── 📝・라이트업
│
└── 🔊 VOICE
└── General
📅 Discord 예정 이벤트
└── 🏆 ACDC 2026

이렇게 알아서 이벤트까지 등록해줌
add-prob — 새로운 CTF 문제 등록
문제의 분야와 이름을 입력하면 해당 문제의 디스코드 채널을 자동 생성한다. 명령어를 실행하면 다음과 같이 분야 선택 모달이 나옴
1
2
3
4
5
6
7
8
9
10
11
[ 🌐 Web ▼ ]
🌐 Web
💥 Pwn
🔐 Crypto
🔍 Reversing
🔎 Forensics
🧩 Misc
🤖 AI
📦 Blockchain
🔒 개인정보보호
분야 선택 후 디스코드 입력창이 나타나고 문제 이름을 입력할 수 있음
1
2
3
4
5
6
7
8
9
10
11
┌─────────────────────────────────────┐
│ │
│ 새로운 문제 등록 │
│ │
│ 문제 이름 * │
│ ┌───────────────────────────────┐ │
│ │ Login Bypass │ │
│ └───────────────────────────────┘ │
│ │
│ [문제 생성하기] │
└─────────────────────────────────────┘
그럼 채널이 자동으로 생성된다.
1
2
🎯 CHALLENGES
└── 🌐・web-login-bypass
- 해당 명령어를 구현할 때 주의했던 점은 다음과 같음
- 문제별 디스코드 일반 텍스트 채널이 생성된다.
- 동일한 문제가 중복 생성되지 않도록 확인한다.
solve - 문제 해결
명령어 요구 사항
해당 명령어를 실행하면
- 현재 문제를 해결 완료 상태로 변경한다.
- 해결한 사용자와 해결 시각을 자동으로 기록한다. (해결 시각은 한국 시간(KST)을 기준으로 표시한다.)
- 해결된 문제 채널을 자동으로 정렬하고 문제 정보 카드를 갱신한다. (해결된 문제는 맨 아래로 이동함.)
- 해결 기록을 DB에 저장해서 봇 재시작 후에도 유지함
- 해결 취소 후 다시 해결하면 새로운 기록으로 갱신된다.
- 해당 문제 채널에서 명령어를 실행하면 문제 이름은 따로 입력하지 않아도 된다.
- 이미 해결된 문제에 다시 실행해도 오류나 중복 처리가 되지 않는다.
라이트업 작성
문제가 해결처리가 되고 나면 다음과 같은 화면이 됨
1
2
3
4
5
6
7
8
9
10
✅ Login Bypass
📂 분야: Web
📌 상태: ✅ 해결 완료
👤 해결 신고자: @승훈
🕒 해결 시각: 2026.10.13 22:45
[📝 Write-up 작성]
[↩️ 해결 취소] [⚙️ 문제 관리]
라이트업 작성을 통해서 빠르게 라이트업 작성이 가능함
1
2
3
4
5
6
7
8
9
10
📝 Login Bypass — Write-up
풀이 내용:
┌──────────────────────────────┐
│ 1. 로그인 요청 분석 │
│ 2. SQL Injection 발견 │
│ 3. 인증 우회 성공 │
└──────────────────────────────┘
[등록하기]
이후 등록이 완료되면 팀 라이트업 채널에 자동으로 게시됨. 또한 문제 카드의 버튼도 변경됨
1
2
3
4
5
6
7
8
9
10
11
✅ Login Bypass
📂 분야: Web
📌 상태: ✅ 해결 완료
👤 해결 신고자: @승훈
🕒 해결 시각: 2026.10.13 22:45
[📖 Write-up 보기]
[✏️ Write-up 수정]
[⚙️ 문제 관리]

이런식으로 공유 라이트업도 작성 가능 다만 음… 굳이 있어야 하나 싶었음 그냥 md 파일 올리면 되는거라 ;;
unsolve - 문제 해결 취소
해당 명령어를 실행하면 해결 완료로 표시된 문제를 다시 미해결 상태로 변경한다.
지켜야 하는 규칙들은 다음과 같음
- 현재 채널의 문제를 자동 인식한다.
- 문제 상태를
SOLVED → UNSOLVED로 변경한다. - ✅ 표시를 기존 분야 이모지로 복구한다.
- 미해결 문제 그룹의 맨 아래로 이동한다.
- 문제 정보 카드의 상태를 갱신한다.
edit-prob - 문제 정보 수정
현재 문제의 이름이나 분야 변경
구현 요구사항
-
현재 문제 채널을 자동 인식한다.
-
수정할 항목을 선택한다.
-
새로운 정보를 입력하거나 선택한다.
-
Discord 채널 이름과 저장된 문제 정보를 함께 수정한다.
항목 수정 방법 문제 이름 입력창에서 변경 문제 분야 드롭다운 메뉴에서 선택 -
문제 채널을 새로 만들지 않는다.
-
기존 채팅과 파일은 유지된다.
-
이미 해결된 문제라면 해결 상태를 유지한다.
delete-prob - 문제 삭제
등록된 문제와 해당 디스코드 채널을 삭제한다.
요구 사항
-
현재 문제 채널을 자동 인식한다.
-
삭제 확인 메시지를 표시한다.
-
사용자가 삭제를 승인하면 해당 채널을 삭제한다.
-
저장된 문제 정보를 삭제 상태로 변경한다.
1 2 3 4 5 6 7
⚠️ 문제 삭제 Login Bypass 문제를 삭제하시겠습니까? 문제 채널과 기존 메시지가 삭제됩니다. [취소] [삭제 확인]
-
채널 삭제 시 기존 채팅과 첨부파일도 함께 삭제된다.
-
삭제한 디스코드 채널은 일반적으로 복구가 불가능하다.
-
서버 관리자 또는 채널 관리 권한이 있는 사용자만 실행할 수 있다.
help - 명령어 도움말
봇에서 사용 가능한 명령어 사용 방법을 안내함
-
출력 예시
1 2 3 4 5 6 7 8 9 10 11 12 13 14
📖 CTF BOT HELP 서버 설정 /setup 서버 기본 구조 생성 문제 관리 /add-prob 새로운 문제 등록 /solve 문제 해결 완료 /unsolve 해결 상태 취소 /edit-prob 문제 이름·분야 수정 /delete-prob 문제 삭제 도움말 /help 명령어 목록 확인
요구사항
- 서버 내 어디서든 실행할 수 있다.