Real-Time Updates
Leaderboards refresh automatically as members solve challenges — no manual intervention needed.
CTFLab’s leaderboard system automatically tracks solver progress and updates rankings in real-time. Choose between solve-count mode (default) or points-based mode for competitive scoring.
Members are ranked by total number of CTFs solved, regardless of difficulty.
Best for:
Example:
🥇 Alice — 15 solved🥈 Bob — 12 solved🥉 Charlie — 10 solvedMembers earn points per difficulty and are ranked by total points. Points are fully customizable.
To enable:
/ctf-config-pointsBest for:
Example Configuration:
Easy = 100 pointsMedium = 250 pointsHard = 400 pointsInsane = 600 pointsResulting Leaderboard:
🥇 Alice — 2150 pts (1 Insane + 3 Hard + 2 Medium)🥈 Bob — 1850 pts (1 Insane + 2 Hard + 4 Medium)🥉 Charlie — 1250 pts (2 Hard + 3 Medium + 2 Easy)Real-Time Updates
Leaderboards refresh automatically as members solve challenges — no manual intervention needed.
Two Display Modes
Desktop (3-column) and Mobile (single-column) leaderboards for optimal viewing on any device.
Medals & Rankings
🥇 🥈 🥉 medals for top 3 with rank numbers for positions 4+.
Member Management
Remove users from leaderboards, revoke specific solves, or manually award achievements.
Both leaderboards display the same data but optimized for different viewing contexts.
Desktop Leaderboard:
/ctf-leaderboardMobile Leaderboard:
/ctf-leaderboard-mobile/ctf-leaderboard→ Choose channel→ Leaderboard posted and auto-updates
/ctf-leaderboard-mobile→ Choose channel→ Mobile version posted and auto-updatesUse /ctf-leaderboard-remove [member] to:
Note: This is irreversible — all their solve history is deleted.
Use /ctf-revoke-solve [member] [ctf_query] to:
Example:
/ctf-revoke-solve @alice 1→ Removes Alice's solve for CTF ID 1→ Leaderboard updates→ Alice keeps all other solvesWhen multiple users solve challenges within seconds of each other, the leaderboard updates are debounced (grouped) into a single refresh. This prevents excessive Discord API calls and improves performance.
How it works:
schedule_leaderboard_update() triggered (5 second delay)If first-blood bonuses are enabled, the leaderboard calculation automatically includes bonus points for top 3 solvers of each challenge.
Example (with first-blood at 50%, 30%, 15%):
Challenge: Web Exploitation (400 points base)
1st Solver: 400 + 50% = 600 pts2nd Solver: 400 + 30% = 520 pts3rd Solver: 400 + 15% = 460 pts4th+ Solver: 400 pts (no bonus)Post Both Leaderboards
Create both desktop and mobile leaderboards for accessibility. Many members use Discord mobile app.
Set Realistic Points
If using points mode, ensure point values encourage participation across all difficulty levels. If Insane challenges are 10x harder than Easy, consider slightly lower multipliers.
Pin Leaderboard Messages
Pin leaderboard messages in a dedicated channel so members can find them easily. Use /ctf-leaderboard to refresh without creating duplicates.
Combine with Top-3 Roles
Enable /enable-top-3 to automatically assign roles to top 3 solvers. Roles sync every time the leaderboard updates.