Server · Concept

Server statistics

The bot counts your server's messages, voice time and reactions, turns them into an activity score, then sorts servers into tiers.

In short

EnderBot records your server's activity hour by hour and day by day. >chart draws the curves, and that same record feeds the activity score that decides where the server stands in the public directory.

There is nothing to switch on. As soon as the bot sees a message, a voice minute or a reaction, it adds it to that channel's record. The charts and the score read that one record, never two separate counts.

The activity score sums up five measures taken over the last 7 days. Each carries its own weight: one more person writing counts for more than one more message.

Public servers' scores are ranked against each other, then cut into six tiers. The highest goes to the top 1 %, and the lowest takes in everyone else.

Nothing is computed on demand: the curves stay cached for 30 minutes, the score for 60 minutes. That is what makes the dashboard instant, and also why a message just posted does not show up yet.

>chart opens five charts inside Discord: messages, voice, members, reactions and activity score. One more subcommand ranks the channels against each other.

1

Five measures, each with its own weight

Everything below is counted over the last 7 days, then weighted. The total is rounded to the unit.

Messages posted
3 per message
Every message written in a channel the bot can see, bots left out of the people count.
Voice minutes
30 per hour
The time of every member sitting in a voice channel, added up minute by minute.
People who write
10 per person
Each member counts once, no matter how many messages they posted.
People in voice
8 per person
Same rule as for writing: what counts is how many different people showed up, not how long.
Reactions added
1 per reaction
The lightest measure, the one that separates two otherwise similar servers.
Score for the week
9 340 points
The sum of the lines above, rounded, for a busy server over 7 days.
  • Voice is counted by the minute: one hour in a voice channel is worth 30 points.
2

Six tiers cut by percentile

The ranking compares servers with each other, never against a fixed threshold: the highest tier goes to the top 1 %, and it is redone every hour.

Tier 1
Everyone else
The floor. Every public server lands here without doing a thing, and nobody drops out of it.
Tier 2
Top 75 %
The lower half of the ranking, without being the bottom of it.
Tier 3
Top 50 %
The upper half: the server is livelier than half the others.
Tier 4
Top 25 %
The leading quarter, the one that starts showing up in the directory.
Tier 5
Top 5 %
The upper crust: a few servers in a hundred hold this place.
Tier 6
Top 1 %
The summit. It is lost as fast as it is won, since it is recomputed every hour.
  • Only public servers that are not banned and still have the bot in them enter the ranking.
3

Four clocks that do not beat together

The dashboard carries a button that forces the curves to be recomputed, usable every 5 minutes, or every 30 seconds for the bot team.

What the bot keeps, and for how long
Cached score
60 minutes
A server's score is kept in Redis: reading it back recounts nothing.
Cached curves
30 minutes
Kept in the bot's memory: a restart clears them, and so does the dashboard button, once every 5 minutes.
Hourly pass
Every hour
Scores go back through in batches of 10 servers, then tiers are redone in batches of 100.
Daily snapshot
Once a day
The day's score is filed away to draw the curve, which keeps the last 7 days.
  • The score has no button of its own: it waits its turn in the hourly pass.
4

Five charts, two time scales

An hourly curve keeps the last 48 points, a daily curve the last 30.

What `>chart` can drawBy hourBy day
MessagesMessages posted in the server, with the total and how many people wrote.48 hours30 days
VoiceTime spent in voice channels, shown in hours as soon as the total deserves it.48 hours30 days
MembersThe server's size, with the trend between the first and the last point of the curve.48 hours30 days
ReactionsReactions added to the server's messages, and who adds them most often.48 hours30 days
Activity scoreThe server's score, one value a day: there is no hourly score, the window itself is longer than that.No hourly axis30 days
  • Unique contributors are counted on top of that over six windows, from today to the server's whole history.
5

The screen of a chart

The command answers with a chart image, preceded by a single grey line saying what the image shows. Nothing else is written: everything else is in the plot and in the menus below it.

EnderBot
EnderBot BOT Today at 11:40 AM
📊 Messages · Daily · 7 avg — Ender Café
MESSAGESEnder CaféMessage ActivityTotal Messages45,197Contributors801.3K2.5K3.8K5.0K18 Aug22 Aug26 Aug30 Aug3 Sep7 Sep11 Sep15 SepMessages7-day avgLast 30d · EnderBot
🔄 Refresh 🏆 Top
  • The header line

    The type, the view, the average applied and the server name, in that order. With no average, that piece disappears.

  • The plot

    An image generated on demand, carrying the server name and icon. It is not stored: reopening it later recomputes it.

  • The refresh button

    It recomputes the picture from the freshest counters, in place. A Secondary button, like the view switch beside it.

  • The view switch

    It swaps the curve for the leaderboard of the same type, and back again. The same screen, another reading.

  • The chart is regenerated on every menu change: the message is edited in place, a second one is never sent.
6

Five controls under the image

Three dropdowns and two buttons. None of them asks you to retype the command: each edits the message in place.

Switch chart type Messages · Voice · Members · Reactions · Activity Score
The current type stays selected in the menu, so the screen always says what it shows.
5 types
Granularity Daily (last 30 days) or Hourly (last 48 hours)
Daily is the opening view. Hourly is for reading one evening, not a trend.
Daily by default
Rolling average No average, 7-day average or 14-day average
The command opens on 7 days. The average overlays the raw data, it does not replace it.
7 days by default
Refresh Asks for the data again and redraws the chart.
Useful after a statistics push: the series are cached, and this button is what fetches the fresh version.
Redraws
Top Switches from the plot to the channel or member ranking on the same measure.
The button takes the other view's label, so a second press brings the chart back.
Other view
  • The granularity menu disappears on the activity score, which only exists daily. The top view hides granularity and average as well.

The commands

View guild activity charts and statistics · servers only

stats View guild activity statistics chart
members View member count chart over time
channels View top channels activity chart
voice View voice activity chart
reactions View reactions activity chart
activity View activity score history chart