DCI Counting Docs
Everything you need to set up, configure, and get the most out of DCI Counting โ the competitive counting bot for Discord.
Get counting in your server in under 2 minutes.
Speed Round, Boss Battle, Relay, Reverse, Skip Count.
Saves, gamemodes, custom AC, and full API access.
Pull leaderboard and server data programmatically.
What is DCI Counting?
DCI Counting is a Discord bot that turns counting into a competitive, community-driven activity. Servers count together in a dedicated channel โ one number at a time โ while the bot tracks streaks, enforces rules, and ranks servers globally.
It includes a built-in Anti-Cheat system (AC v2) that silently detects and blocks automation, rate abuse, and number pre-computing. Premium servers unlock gamemodes, configurable AC settings, a web-based guild portal, and full API access.
Quick Setup
Get DCI Counting running in your server in a few steps.
The bot needs Send Messages, Read Messages, Add Reactions, Manage Messages, and Moderate Members in the counting channel.
How Counting Works
The core rules that govern every count.
Basic Rules
| Rule | Detail |
|---|---|
| One number at a time | Messages must be a single integer. "100 nice" or "100!" are rejected. |
| Sequential | Each count must be exactly 1 more than the previous (or follow gamemode rules). |
| No double counting | You cannot count twice in a row. Someone else must go between your turns. |
| Wrong number = reset | Any wrong count resets the count to 0. The next number is 1. |
| Reactions | โ = correct count. โ = wrong count or rule violation. |
On a wrong count
When someone sends the wrong number: the message gets a โ reaction, the bot replies naming who ruined it and what score was reached, and the current count, streak, and saves all reset to 0.
Premium servers can have saves โ wrong counts use a save instead of resetting if saves remain. Configure save limit (1โ10) in the guild portal or with /setsaves.
Global tracking
Every correct count contributes to two global leaderboards โ one ranked by highest count reached per server, and one ranked by total counts submitted per user. Both update in real time and are visible via /leaderboard and the public API.
General Commands
Available to all server members.
Admin Commands
Require Manage Server or Manage Channels permission.
These commands require Manage Server or Manage Channels. Server owners always have access.
Owner Commands
Restricted to bot owner IDs hardcoded in the source.
These are not accessible to server admins. They are controlled by the bot developers.
Slash Commands
Prefix Commands (!)
Gamemodes
Premium servers can activate special counting modes that change the rules.
Configure gamemodes at panel.dcicounting.com under the Gamemode section.
Race to a configurable target number as fast as possible. The bot records elapsed time and announces it on completion.
Config: target (10โ10,000)Each user can only count once per round, forcing everyone to participate. No single player can carry the count.
No config neededCount to the boss HP before the timer expires. Running out of time or a wrong count triggers a boss attack and resets progress.
Config: HP + timer (minutes)Count backwards from a set number down to zero. The sequence decrements โ the next expected number goes down instead of up.
Config: start (10โ10,000)Count by a multiplier instead of 1. ร2: count 2, 4, 6, 8... ร5: count 5, 10, 15... All AC rules still apply.
Config: multiplier (ร2, ร5, ร10)Enabling a Gamemode
Anti-Cheat
AC v2 silently detects and blocks automated counting without disrupting legitimate users.
Checks
| Check | What it detects | Default |
|---|---|---|
| Rate limit | Messages faster than the minimum cooldown | 450ms between counts |
| Burst detection | Too many counts in a short window | 4 counts in 5 seconds |
| Double count | Same user counting twice in a row | Always blocked |
| Number skip | Sending a future number (pre-computing) | Any number above expected |
Flags and ignoring
Each violation writes a timestamped entry to the user's flag log with the guild ID and reason. After 5 session flags (default), the user is silently ignored โ their messages are deleted with no feedback. Check logs with /integrity [userId].
Adjust rate limit cooldown (100โ2000ms), burst threshold (2โ10), and auto-ignore threshold (1โ20) from the guild portal. AC can also be disabled entirely.
Managing flags
| Action | Command |
|---|---|
| View flag log | /integrity [userId] |
| Clear flags + remove ignore | !clearflags [userId] (owner) |
| Remove from ignore only | !unignore [userId] (owner) |
Streaks & Goals
Track momentum and set targets to work towards.
Streaks
The streak increments on every correct count and resets on any mistake. Best streak is stored separately and never resets.
| Tier | Streak |
|---|---|
| ๐ Dead | 0 |
| ๐ฑ Warming Up | 1โ9 |
| ๐ฅ On Fire | 10โ49 |
| โก Electric | 50โ99 |
| ๐ Legendary | 100โ499 |
| ๐ Godlike | 500+ |
Goals
Set a target with /setgoal [number]. When reached, the bot sends a celebration embed and clears the goal. Use /setgoal 0 to clear manually.
Set a custom message that replaces the default celebration embed when a goal is reached. Configure in the portal under Premium Settings.
Leaderboards
Two global leaderboards โ one for servers, one for users.
Server leaderboard
Servers ranked by highest count ever reached. This score never decreases. The current server is marked with โ.
User leaderboard
Users ranked by total correct counts submitted across all servers. Lifetime cumulative. Tags appear next to names.
Commands
/leaderboard โ defaults to server leaderboard
/leaderboard type:Servers โ top 10 servers by highest count
/leaderboard type:Users โ top 10 users by total counts
The footer shows your rank and score even if outside the top 10. Also accessible via GET /api/v1/leaderboard.
Guild Portal
A web dashboard for server admins to manage all settings without touching Discord.
panel.dcicounting.com โ Log in with Discord. Manage Server permission required.
Available settings
| Setting | Tier | Description |
|---|---|---|
| Counting channel | Free | Set or change via dropdown |
| Counting goal | Free | Set or clear the server goal |
| Reset count | Free | Wipe count back to 0 |
| Max saves | Premium | Saves per run (1โ10) |
| Server description | Premium | Shown in /serverinfo |
| Goal celebration message | Premium | Custom message on goal reached |
| Gamemode | Premium | Enable and configure any of 5 gamemodes |
| AC rate limit | Premium | Cooldown between counts (100โ2000ms) |
| AC burst threshold | Premium | Counts in 5s before flagged (2โ10) |
| AC ignore threshold | Premium | Flags before auto-ignore (1โ20) |
| AC on/off | Premium | Toggle Anti-Cheat entirely |
| API key | Premium | Generate/revoke API key |
Public API
Access DCI Counting data programmatically.
Base URL
https://panel.dcicounting.com/api/v1
Authentication
# Via header (recommended)
X-API-Key: dci_your_key_here
# Via query param
GET /api/v1/bot?api_key=dci_your_key_here
Rate limits
| Tier | Requests/min | Endpoints |
|---|---|---|
| Free | 10 | 3 (bot, leaderboard, guild) |
| Premium | 120 | All endpoints |
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 118
X-RateLimit-Reset: 1713456789
Error codes
| Status | Meaning |
|---|---|
401 | Missing or invalid API key |
403 | Endpoint requires premium tier |
404 | Guild or user not found |
429 | Rate limit exceeded |
500 | Internal server error |
API Endpoints
Full reference for all endpoints.
Free Endpoints
{ "name": "DCI Counting", "id": "...", "version": "v3.0",
"guilds": 42, "totalCounts": 158392, "totalUsers": 891,
"flaggedUsers": 7, "ping": 43,
"uptime": { "seconds": 86400, "human": "24h 0m 0s" } }Free: limit 10. Premium: limit 100.
{ "servers": [{ "rank": 1, "guildId": "...", "name": "The Bread Club", "score": 4521 }],
"users": [{ "rank": 1, "userId": "...", "totalCounts": 2891, "bestStreak": 450 }],
"limit": 10, "generatedAt": "2026-04-18T15:00:00.000Z" }{ "guildId": "...", "name": "The Bread Club", "memberCount": 312,
"currentCount": 3891, "streak": 142, "bestStreak": 450,
"isPremium": true, "tags": ["Premium"], "goal": 5000,
"globalRank": 1, "description": "We count bread." }Premium Endpoints
{ "userId": "...", "username": "carter", "totalCounts": 2891,
"bestStreak": 450, "tags": ["Staff"], "flagged": false, "flagCount": 0 }Top users within a specific guild. Max limit: 50.
All flagged users in a guild with flag count and recent incidents.
All guilds the bot is in where this user has counted.
// Request body
{ "message": "Optional plain text",
"embed": { "title": "Title", "description": "Body", "color": "#38bdf8", "footer": "Footer" } }
// Response
{ โokโ: true, โguildIdโ: โโฆโ, โchannelIdโ: โโฆโ }API Keys
How to generate and manage your API key.
Do not commit it to public repos. If compromised, regenerate from the portal โ the old key is invalidated instantly.
Key format
dci_a3f8c2e1b9d47f6a2c8e1b3d7f9a2c4e6b8d0f2a4c6e8b0d2f4a6c8e0b2d4f6
Programmatic generation
POST /api/v1/keys/generate
Content-Type: application/json
{ "guildId": "your_guild_id" }
// Response
{ โokโ: true, โapiKeyโ: โdci_โฆโ, โissuedโ: โ2026-04-18T15:00:00.000Zโ,
โtierโ: โpremiumโ, โlimitsโ: { โrequestsPerMinuteโ: 120 },
โwarningโ: โStore this key securely. It will not be shown again.โ }
Revoking
In the portal under API Access, click Revoke. Apps using the old key will immediately receive 401 errors.