Gaming Stats
Track gaming activity through Discord presence detection with playtime analytics, achievements, role rewards, and leaderboards.
Zagreus tracks gaming activity for every member in your server by reading Discord presence data. It records play sessions, calculates playtime, tracks streaks, awards achievements, assigns roles, and powers server-wide leaderboards — all without any manual input from users.
Enable Discord Activity Status in Settings > Activity Privacy for game tracking to work. If your activity status is disabled, Zagreus cannot detect what you are playing.
How It Works
Presence detection
When a member starts playing a game, Discord broadcasts a presence update to all servers they share with the bot. Zagreus listens for these updates and begins a play session.
Session recording
The bot records the start time, game name, and user ID. When the user stops playing (presence changes away from the game), the session end time is captured.
Periodic flush
Every 30 seconds, the bot flushes active session data to the database. This ensures that even if the bot restarts unexpectedly, at most 30 seconds of playtime is lost.
Playtime rollups
Sessions are aggregated into per-user per-game totals. These rollups power leaderboards, streak calculations, milestone tracking, and role rewards.
Analytics and display
Users and moderators can query playtime data via slash commands or the web dashboard. Data is presented as charts, leaderboards, and detailed session histories.
Valid Sessions
A session must be 10 minutes or longer to count as a valid session. Sessions shorter than 10 minutes are still recorded for total playtime, but only valid sessions count toward session counts, achievements, and milestone tracking.
Commands
All commands are under /playtime. Options marked with * are required.
Your Stats
| Command | Description |
|---|---|
/playtime top [count] [period] | Your top games by playtime. Period: all-time, 7/30/365 days. |
/playtime game <name>* | Detailed playtime stats for a specific game. |
/playtime sessions [game] [count] | Your recent gaming sessions (up to 25). |
/playtime mytop | Quick view of your top 10 most played games. |
/playtime recent | Your last 5 recently played games. |
/playtime profile [user] | View a gaming profile card with stats, streaks, and badges. |
/playtime streak | Your current and longest gaming streak + streak leaderboard. |
/playtime achievements | View your earned achievements and progress toward locked ones. Newly earned achievements are awarded automatically. |
/playtime wrapped [period] | Your personalized gaming recap — month or year summary. |
/playtime peakhours | Server gaming activity heatmap by hour and day. |
/playtime score | Server-wide gaming activity score (0-100). |
/playtime export | Export your complete gaming data as JSON. |
Server & Social
| Command | Description |
|---|---|
/playtime leaderboard | Server gaming leaderboard — all-time top players by hours. |
/playtime insights | Gaming activity insights for the whole server. |
/playtime trends <game>* | Game popularity trend over the last 8 weeks. |
/playtime compare <user>* [game] | Head-to-head playtime comparison with another user. |
/playtime playnow <game>* | See who is currently playing a specific game. |
/playtime lfg <game>* [platform] [message] [max_players] | Create a "Looking For Group" request to find players. |
/playtime challenge <user>* [game] [duration] [action] | Challenge another player to a gaming duel (1 day, 3 days, or 1 week). |
Privacy
| Command | Description |
|---|---|
/playtime privacy status | View your current tracking settings. |
/playtime privacy opt-out | Stop all game tracking. Existing data is retained but hidden. |
/playtime privacy opt-in | Re-enable game tracking. |
/playtime privacy set-public <public>* | Toggle whether your gaming profile is publicly visible. |
/playtime privacy blacklist-add <game>* | Hide a specific game from your profile and stats. |
/playtime privacy blacklist-remove <game>* | Un-hide a previously blacklisted game. |
/playtime privacy blacklist-list | View all your blacklisted games. |
Alerts
| Command | Description |
|---|---|
/playtime alerts add <game>* | Get a DM when someone in the server starts playing a game. |
/playtime alerts remove <game>* | Remove a game alert. |
/playtime alerts list | View your active game alerts. |
Goals
| Command | Description |
|---|---|
/playtime goals set <type>* <hours>* [game] | Set a daily or weekly gaming time goal (overall or per-game). |
/playtime goals remove <type>* [game] | Remove a gaming time goal. |
/playtime goals check | Check progress on your active goals. |
Admin Commands
The following commands require Administrator permission.
| Command | Description |
|---|---|
/playtime admin enable | Enable game tracking for this server. |
/playtime admin disable | Disable game tracking for this server. |
/playtime admin set-live-feed <channel>* | Set the channel for the persistent "Currently Playing" embed. |
/playtime admin set-digest-channel <channel>* | Set the channel for periodic gaming digests. |
/playtime admin set-digest-frequency <freq>* | Set digest frequency: daily, weekly, monthly, or disabled. |
/playtime admin send-digest | Send the gaming digest immediately without affecting the schedule. |
/playtime admin milestones-enable | Enable milestone announcements. |
/playtime admin milestones-disable | Disable milestone announcements. |
/playtime admin milestones-channel <channel>* | Set the channel for milestone announcements. |
/playtime admin milestones-add <type>* <threshold>* | Add a custom milestone threshold. |
/playtime admin milestones-remove <type>* <threshold>* | Remove a milestone threshold. |
/playtime admin milestones-list | View all configured milestone thresholds. |
Features
Achievements
Zagreus awards 13 achievements for gaming milestones and behaviors. When earned, achievements are displayed on your profile and can automatically assign Discord roles (configurable per server).
| Achievement | Requirement |
|---|---|
| Night Owl | 10+ late-night gaming sessions (after midnight) |
| Early Bird | 10+ early morning sessions (before 8 AM) |
| Marathon Runner | A single session lasting 6+ hours |
| Variety Gamer | 10+ different games played in one week |
| Dedicated | 100+ hours in a single game |
| Centurion | 500+ total hours of gaming |
| Explorer | 25+ different games played |
| Grand Explorer | 50+ different games played |
| On Fire | 7-day gaming streak |
| Unstoppable | 30-day gaming streak |
| Living Legend | 100-day gaming streak |
| Regular | 100+ total gaming sessions |
| Veteran | 1,000+ total gaming sessions |
Role Rewards
Servers can configure Discord roles to be automatically assigned when:
- An achievement is earned — e.g., earning "Centurion" gives the @Centurion role
- A playtime threshold is reached — e.g., 50 cumulative hours gives the @ICG Guild role
Role rewards are configured per server via the dashboard (Settings > Gaming > Role Rewards) and assigned automatically. Achievement roles are granted when a user runs /playtime achievements. Playtime roles are assigned on every session flush (every 30 seconds).
Streaks
Zagreus tracks daily play streaks for each user. A streak increments for every consecutive day with a valid 10+ minute session. Missing a day resets the streak.
- Current streak and longest streak are shown on profiles
- Streak milestones (7, 30, 60, 100, 365 days) can trigger announcements
- Streaks power the On Fire, Unstoppable, and Living Legend achievements
Milestones
When cumulative stats cross configurable thresholds, the bot announces the achievement in the designated channel. Default thresholds:
| Type | Default Thresholds |
|---|---|
| Game Hours | 50, 100, 250, 500, 1,000 hours per game |
| Total Hours | 100, 250, 500, 1,000, 2,500 hours overall |
| Unique Games | 10, 25, 50, 100 different games |
| Sessions | 100, 500, 1,000, 5,000 valid sessions |
| Streak | 7, 30, 60, 100, 365 consecutive days |
Admins can add or remove custom thresholds via /playtime admin milestones-add and /playtime admin milestones-remove.
Challenges
Players can challenge each other to head-to-head gaming duels using /playtime challenge. Choose a game, set the duration (1 day, 3 days, or 1 week), and whoever logs more playtime in that game wins. Challenges are tracked live and the winner is announced automatically.
Game Metadata (IGDB)
Zagreus enriches game data using the IGDB database — cover art, genres, ratings, and summaries are displayed alongside your stats wherever possible.
Live Feed
A persistent embed in a designated channel shows who is currently playing and what they're playing. The embed auto-updates as members start and stop gaming sessions.
Digests
Periodic gaming digests summarize server activity:
- Daily/Weekly/Monthly frequency (configurable)
- Top games, most active players, trending games, busiest day
- Comparison stats vs. the previous period
- Posted automatically or on-demand with
/playtime admin send-digest
Privacy
Opt-Out
Users can opt out of game tracking entirely with /playtime privacy opt-out. When opted out, no sessions are recorded, and the user is hidden from leaderboards and feeds. Existing data is retained but not displayed.
Blacklist
The blacklist commands let users hide specific games from their profile. Useful for non-gaming apps that Discord detects as games, or games you'd rather keep private.
Profile Control
Users control their public visibility with /playtime privacy set-public. When set to private, your gaming profile is only visible to you and server admins.
Even when opted out, server admins can see aggregate (anonymous) statistics. Individual user data is never exposed without the user's consent.