Analytics - Stat Channels
A stat channel is a voice channel whose name the bot keeps up to date with a live number, such as Members: 1,482 or Game night in 2d 3h. Members see it in the channel list without running a command. When you add one, the bot denies Connect to @everyone in that channel so nobody joins it; removing the stat channel gives Connect back.
There are three types:
| Type | Shows | Example |
|---|---|---|
| Stat | Any server statistic from the variables below | ๐ข Online: {members.online} |
| Countdown | Time until (or since) a date | Game night in {countdown.smart} |
| Goal | Progress toward a target | Road to {goal.target}: {goal.bar} |
Adding a stat channel
- Create a voice channel in Discord to hold the stat (or pick an existing one), and make sure the bot has View Channel, Connect and Manage Channels there (Discord lets only members who can connect to a voice channel edit it).
- Open Analytics > Stat Channels and click New Channel.
- Pick the Channel Type and the Voice Channel.
- Write the Name Template. Click Insert Variable for the list of Variables, Expressions and Filters; the Preview under the field shows the result with live values, and the counter shows the length (Discord allows 100 characters).
- Choose the Update Interval (10, 15, 30, 45 or 60 minutes; default 30) and fill in the type's settings (see below).
- Save. Use the switch on a stat channel to pause it, the pencil to edit it and the trash icon to remove it.
The bot renames the channel as soon as you save it, then checks stat channels every 5 minutes and renames one when its interval has passed and the name actually changed. Discord allows only about two renames per channel every 10 minutes, so 10 minutes is the shortest interval; if Discord still rate-limits a rename, the bot waits and tries again.
When the name is not current, the card says why instead of the next update time:
- Can't rename: the bot needs ... in this channel: it names what the bot lacks (View Channel, Connect or Manage Channels). Give the bot's role those permissions, on the server or on the channel; the bot renames it within a few seconds of the change.
- Discord's rename limit applies, with when the bot tries again.
- Waiting for the server's member list to finish loading: after the bot starts, member and presence counts are not trusted until Discord has sent the whole member list.
- First update within 5 minutes: saved, but not renamed yet.
- The voice channel was deleted: only for a channel deleted while the bot was offline. Deleting the channel while the bot runs removes the stat channel.
Type settings
Stat
- Period Window: the time span for the period variables (
period.*): the last 1, 6, 12 or 24 hours, 7 days or 30 days. - Time Format: 12h or 24h, for the time variables.
- *Tracked Role (for role. variables)**: the role the
role.*variables count.
Countdown
- Sub-type: Fixed Date (a Target Date & Time, in the server's timezone), Daily Recurring (every day at an hour), Weekly Recurring (a day of week and an hour) or Server Anniversary (the server's creation date each year).
- Event Label: your event name, for
{countdown.label}. - Past dates count up with the
elapsed.*variables.
Goal
- Metric: Total Members, Boost Count, Scheduled Events, or Custom (manual) with a Current Value you enter yourself.
- Target: the number to reach.
Stat variables
Members & Presence
| Variable | Description |
|---|---|
{members} | Total member count |
{members.humans} | Non-bot members |
{members.bots} | Bot members |
{members.online} | Online (green dot only) |
{members.active} | Online + idle + DND |
{members.idle} | Idle members |
{members.dnd} | Do Not Disturb members |
{members.offline} | Offline members |
{members.peak} | All-time peak online |
{members.new} | Joined in the period window |
Voice
| Variable | Description |
|---|---|
{voice.active} | Users in any voice channel |
{voice.streaming} | Users streaming |
{voice.video} | Users with camera on |
{voice.muted} | Self-muted users |
{voice.deafened} | Self-deafened users |
{voice.stages} | Users in stage channels |
Channels
| Variable | Description |
|---|---|
{channels} | Total channel count |
{channels.text} | Text channels |
{channels.voice} | Voice channels |
{channels.stage} | Stage channels |
{channels.forum} | Forum channels |
{channels.category} | Category channels |
{channels.thread} | Active threads |
Server Info
| Variable | Description |
|---|---|
{server.name} | Server name |
{server.owner} | Owner display name |
{roles} | Total roles (excl. @everyone) |
{boosts} | Boost count |
{boost.tier} | Boost tier number (0-3) |
{boost.tier.name} | Boost tier name |
{emojis} | Custom emoji count |
{stickers} | Custom sticker count |
{events} | Scheduled events |
{invites} | Active invite count |
Configured Role
| Variable | Description |
|---|---|
{role.name} | Role name |
{role.count} | Members with this role |
{role.position} | Role position |
Period Stats
| Variable | Description |
|---|---|
{period.joins} | Joins in the period window |
{period.leaves} | Leaves in the period window |
{period.messages} | Messages in the period window |
{period.reactions} | Reactions in the period window |
{period.commands} | Commands in the period window |
{period.voice_hours} | Voice hours in the period window |
{period.growth} | Net member growth in period |
{period.label} | Human-readable period (e.g. 'last 24h') |
Date & Time
| Variable | Description |
|---|---|
{time} | Current time (e.g. 9:41 AM) |
{date} | Current date (e.g. May 3, 2026) |
{datetime} | Date and time |
{weekday} | Full weekday name |
{weekday.short} | Short weekday (e.g. Mon) |
{month} | Full month name |
{month.short} | Short month (e.g. Jan) |
{year} | 4-digit year |
{year.short} | 2-digit year |
Countdown variables
Countdown
| Variable | Description |
|---|---|
{countdown.days} | Days component |
{countdown.hours} | Hours component (0-23) |
{countdown.minutes} | Minutes component (0-59) |
{countdown.total_days} | Total days remaining |
{countdown.total_hours} | Total hours remaining |
{countdown.total_minutes} | Total minutes remaining |
{countdown.smart} | Auto-formatted (e.g. '2d 3h') |
{countdown.label} | Your configured event label |
{elapsed.days} | Days elapsed (past dates) |
{elapsed.smart} | Elapsed auto-formatted |
{elapsed.years} | Full years elapsed (anniversary) |
Goal variables
Goal
| Variable | Description |
|---|---|
{goal.current} | Current value |
{goal.target} | Target value |
{goal.remaining} | Remaining to goal |
{goal.percent} | Percent complete (e.g. 72.5) |
{goal.bar} | 10-block progress bar (โโโโโโโโโโ) |
Expressions and filters
Besides variables, a name template can use:
{choose: Option A | Option B | Option C}picks one option at random on each update.{randint: 1..100}picks a random whole number in the range.{plural: members, member, members}picks the singular or plural word for a number or variable.- Filters after a pipe:
upper,lower,title,trim,length,format(thousands separator, 1,234),abs,reverse,slice(n,m),default(val),round(n),zfill(n),replace(old,new),prefix(s),suffix(s),truncate(n)andpad(n,char). For example{members | format}.
Online counts and N/A
Member, online, idle, do-not-disturb and role counts need the bot's member and presence data. Right after the bot starts, or if its host did not enable the Server Members and Presence intents, those numbers are not reliable yet: the preview shows N/A, and the channel keeps its last good name instead of being renamed.