Stats Channels
Live server statistics as voice-channel names
Stats Channels turn locked voice channels into live information boards: member counts, online presence, boosts, role and channel totals — automatically refreshed every 10 minutes. The renderer skips channels whose value didn't change, so we only spend Discord's strict 2-renames-per-10-minutes budget on channels that actually need it. Custom bots use their own rate-limit budget and scale independently.
Overview
The Stats Channels tab in the dashboard manages a set of locked voice channels that display live numbers in their name. Each channel is bound to a stat type (e.g. members, online, boosts) and a name template like '👥 Members: {value}'. A background worker picks up changes from a Redis signal and a 10-minute tick, so values stay current without manual refreshes.
Quick setup in 30 seconds
If you don't want to configure every channel manually, click Quick setup on the Stats Channels page. The bot will:
- Create a category named '📊 Server Stats' at the top of your channel list
- Create 5 locked voice channels: total members, online members, humans, bots, and server boosts
- Render the live values within the next 10 minutes and start the auto-update cycle
Available stat types
You can mix and match up to 10 stat channels per server from the following stat types:
| Stat | Description |
|---|---|
| Total members | Every member of the server, including bots. |
| Online members | Members currently online (status: online, idle, or dnd). Requires the Presence intent — see below. |
| Humans | Member count excluding bots. |
| Bots | Number of bot accounts in the server. |
| Server boosts | Active Nitro boosts contributing to the server's boost level. |
| Roles | Total number of roles in the server (excluding @everyone). |
| Channels | Total number of channels including categories, text, voice, and stages. |
| New members today | Members who joined since 00:00 in the server's timezone. |
| Top XP member | Username of the highest-ranking member from the Leveling module. Requires Leveling to be enabled. |
Custom name templates
Each channel name is rendered from a template that contains the placeholder {value}. The renderer substitutes the live number, formats it (e.g. 1234 → 1,234), and writes the result as the channel name.
A few examples:
'👥 Members: {value}' → 👥 Members: 1,234''Online ▸ {value}' → Online ▸ 87''🚀 Boosts {value}' → 🚀 Boosts 12'Channel names are capped at 100 characters after rendering — the Discord limit. The dashboard shows a live preview while you edit the template.
Presence intent (for Online counter)
The Online stat type relies on Discord's Presence intent. This is a privileged intent — bots that serve more than 100 servers need explicit approval from Discord, but TeraOne already runs with Presence approved.
How often values update
Stats Channels follow Discord's per-channel rate limit of 2 renames every 10 minutes. The worker therefore runs on a fixed 10-minute tick:
- Every 10 minutes the worker evaluates all configured channels for the server
- For each channel it computes the current value and the rendered name
- If the rendered name matches the last one (skip-when-unchanged), the channel is left alone — no API call is made
- Otherwise the channel is renamed via the Discord REST API
Limits
A few hard limits apply:
- Up to 10 stat channels per server
- Channel names are capped at 100 characters after rendering
- Update interval is fixed at 10 minutes (Discord rate limit)
- Templates must include the {value} placeholder
Troubleshooting
- Channel name doesn't update
- Check that TeraOne (or your custom bot) has the Manage Channels permission for the channel. Without it, the Discord API rejects the rename and the worker logs an error.
- Online counter is stuck at 0
- Enable the Presence intent in the Discord Developer Portal (Bot → Privileged Gateway Intents → Server Members Intent + Presence Intent). For TeraOne the intent is already on; for custom bots you need to enable it yourself.
- I renamed a channel manually and it switched back
- That's intentional. The worker overwrites manual renames every 10 minutes to keep values consistent with the configured template. To stop overwriting, delete the channel from the Stats Channels dashboard tab — the bot will leave it alone after that.
- Quick setup says category already exists
- If you previously deleted the channels but kept the '📊 Server Stats' category, the setup will try to reuse it. Either delete the category in Discord first, or rename it — the bot only auto-creates if no category with that exact name exists.
Frequently asked questions
- Why is the update interval fixed at 10 minutes?
- Discord limits voice-channel renames to 2 per 10 minutes per channel. Updating more often would mean dropped renames or rate-limit errors. 10 minutes is the safest cadence for stable values without burning rate-limit budget.
- Do stat channels count toward Discord's channel limit?
- Yes. Each stat channel is a regular voice channel. Discord allows up to 500 channels per server, so 10 stat channels is a tiny fraction.
- Can members join the stat voice channels?
- No. Quick setup creates them with @everyone Connect denied, so they're display-only. You can change this manually if you want, but it's usually not what you want for stat channels.
- Does this work with a custom bot?
- Yes. Stats Channels respect custom-bot precedence — if your server has a custom bot configured, the renames are issued under its token and rate-limit budget. This means a custom bot at scale doesn't share TeraOne's rate-limit pool.
- What happens if my server has no Leveling module enabled but I added a Top XP channel?
- The channel name will fall back to a placeholder ('—'). Once you enable Leveling and accumulate some XP, the value populates automatically on the next tick.