Công cụ tự động quét, nhận và hoàn thành các Quest trên Discord.
Server cộng đồng: Tham gia Discord để nghịch bot auto
| Tính năng | Mô tả |
|---|---|
| Auto Scan | Tự động quét quest mới theo chu kỳ (POLL_INTERVAL) |
| Auto Accept | Tự động đăng ký (enroll) các quest chưa nhận |
| Auto Complete | Tự động hoàn thành quest bằng cách gửi progress/heartbeat |
| Rate Limit Handling | Tự động chờ và retry khi bị rate limit (429) |
| Build Number Fetch | Tự động lấy client_build_number mới nhất từ Discord web app |
- Python 3.7+
- Thư viện:
requests
pip install requestspython3 main.py <DISCORD_TOKEN>Tạo file .token trong cùng thư mục chứa token, sau đó chạy:
python3 main.pyChạy không có argument, chương trình sẽ yêu cầu nhập token:
python3 main.pyLưu ý: Dùng
Ctrl+Cđể dừng chương trình.
Các hằng số cấu hình nằm ở đầu file main.py:
| Biến | Mặc định | Mô tả |
|---|---|---|
API_BASE |
https://discord.com/api/v9 |
Base URL của Discord API |
POLL_INTERVAL |
60 |
Số giây giữa các lần quét quest |
HEARTBEAT_INTERVAL |
20 |
Số giây giữa các lần gửi heartbeat |
AUTO_ACCEPT |
True |
Tự động nhận tất cả quest khả dụng |
LOG_PROGRESS |
True |
Hiển thị log tiến độ |
DEBUG |
True |
Bật log debug chi tiết |
SUPPORTED_TASKS— Danh sách các loại task mà tool hỗ trợ hoàn thành tự động.
Colors — Class chứa mã màu ANSI cho terminal output.
log(msg, level) — Hàm log với các mức:
| Level | Ý nghĩa |
|---|---|
info |
Thông tin chung |
ok |
Thành công |
warn |
Cảnh báo |
error |
Lỗi |
progress |
Tiến độ (có thể tắt qua LOG_PROGRESS) |
debug |
Debug (có thể tắt qua DEBUG) |
fetch_latest_build_number()— Scrape trang Discord web app để lấyclient_build_numbermới nhất. Fallback về giá trị mặc định nếu thất bại.make_super_properties(build_number)— Tạo headerX-Super-Propertiesdạng base64, giả lập Discord Desktop Client.
Class quản lý HTTP session với Discord API.
| Method | Mô tả |
|---|---|
__init__(token, build_number) |
Khởi tạo session với headers giả lập Discord Client |
get(path) |
Gửi GET request |
post(path, payload) |
Gửi POST request |
validate_token() |
Kiểm tra token hợp lệ, in thông tin user |
Các hàm tiện ích để trích xuất dữ liệu từ quest object (hỗ trợ cả camelCase và snake_case):
| Hàm | Mô tả |
|---|---|
_get(d, *keys) |
Lấy giá trị từ dict với nhiều key thay thế |
get_task_config(quest) |
Lấy task config từ quest |
get_quest_name(quest) |
Lấy tên quest (fallback qua nhiều field) |
get_expires_at(quest) |
Lấy thời gian hết hạn |
get_user_status(quest) |
Lấy trạng thái user cho quest |
is_completable(quest) |
Kiểm tra quest có thể hoàn thành không |
is_enrolled(quest) |
Kiểm tra đã đăng ký quest chưa |
is_completed(quest) |
Kiểm tra đã hoàn thành quest chưa |
get_task_type(quest) |
Lấy loại task của quest |
get_seconds_needed(quest) |
Tổng số giây cần để hoàn thành |
get_seconds_done(quest) |
Số giây đã hoàn thành |
get_enrolled_at(quest) |
Thời điểm đăng ký quest |
Class chính điều khiển toàn bộ logic auto-complete.
| Method | Mô tả |
|---|---|
fetch_quests() |
Gọi API lấy danh sách quest, xử lý rate limit |
enroll_quest(quest) |
Đăng ký một quest (retry tối đa 3 lần) |
auto_accept(quests) |
Tự động đăng ký tất cả quest chưa nhận |
complete_video(quest) |
Hoàn thành quest dạng xem video (gửi video-progress) |
complete_heartbeat(quest) |
Hoàn thành quest dạng chơi/stream game (gửi heartbeat) |
complete_activity(quest) |
Hoàn thành quest dạng activity (gửi heartbeat) |
process_quest(quest) |
Xử lý một quest — chọn phương thức phù hợp |
run() |
Vòng lặp chính: quét → nhận → hoàn thành → chờ → lặp lại |
Khởi động
│
├─ Đọc token (argument / .token / nhập tay)
├─ Lấy build number từ Discord
├─ Validate token
│
└─ Vòng lặp chính (mỗi POLL_INTERVAL giây):
│
├─ Fetch danh sách quest
├─ Hiển thị tổng quan (tổng / enrolled / completed)
├─ Auto-accept các quest chưa nhận
├─ Lọc quest cần hoàn thành
│
└─ Với mỗi quest cần hoàn thành:
│
├─ WATCH_VIDEO / WATCH_VIDEO_ON_MOBILE
│ └─ Gửi POST /quests/{id}/video-progress liên tục
│
├─ PLAY_ON_DESKTOP / STREAM_ON_DESKTOP
│ └─ Gửi POST /quests/{id}/heartbeat mỗi 20s
│
└─ PLAY_ACTIVITY
└─ Gửi POST /quests/{id}/heartbeat mỗi 20s
| Task | API Endpoint | Cơ chế |
|---|---|---|
WATCH_VIDEO |
/quests/{id}/video-progress |
Gửi timestamp tăng dần, tốc độ ~7s/lần |
WATCH_VIDEO_ON_MOBILE |
/quests/{id}/video-progress |
Tương tự WATCH_VIDEO |
PLAY_ON_DESKTOP |
/quests/{id}/heartbeat |
Heartbeat mỗi 20s với stream_key ngẫu nhiên |
STREAM_ON_DESKTOP |
/quests/{id}/heartbeat |
Tương tự PLAY_ON_DESKTOP |
PLAY_ACTIVITY |
/quests/{id}/heartbeat |
Heartbeat mỗi 20s với stream_key cố định |