discord-bot / activity-monitor
● offline
uptime —
Dashboard
Live data from your bot's API
Guilds Configured
guilds.json
Tracked Users
across all guilds
Commands
4
prefix-based
Save Interval
30s
periodic disk write
Connect your bot API to load live data → ⚙ API Settings
Guilds
Per-guild configuration — run commands directly from here
GUILD REGISTRY
Guild IDThresholdMsg Floor Active RoleInactive RoleTracked Role AddActions
No data — configure API settings first.
Users
Activity timestamps, message counts, and status per user
No data — configure API settings first.
Commands
All 4 bot commands — copy to Discord or run via API
!activitymonitor setup
ADMIN

Interactive setup wizard — walks an admin through full guild configuration via Discord messages. Auto-creates roles if they don't exist.

1
Bot asks for inactiveThresholdDays — days of silence before a user is marked inactive.
2
Bot asks for the Active Role name. Creates it automatically if needed.
3
Bot asks for the Inactive Role name. Type none to skip.
4
Bot asks for messageThreshold — messages needed to earn the active role.

REQUIRES AdministratorSCOPE Discord channelSAVES TO guilds.json
!activitymonitor purge
ADMIN

Force-triggers the inactivity check for all tracked users in the current guild immediately, without waiting for the next scheduled check.

1
Iterates through every user in the guild's users object.
2
Compares each user's last active timestamp against inactiveThresholdDays.
3
Removes the Active Role and adds the Inactive Role for users over the threshold.

REQUIRES AdministratorEFFECT Role changes applied immediately
!activitymonitor register-existing
ADMIN

Scans all members who already have the Active Role and registers them into the tracking system with today's timestamp. Ideal for first-time setup on an existing server.

1
Fetches all guild members who currently hold the configured activeRoleID.
2
Registers each one in users with Date.now() as their last activity timestamp.
3
Skips already-tracked members. Reports how many were newly registered.

REQUIRES AdministratorUSE CASE First-time setup on existing servers
!activitymonitor create-role
ADMIN

Manually creates an activity tracking role. Normally handled by setup, but useful if the role was accidentally deleted.

1
Bot (or dashboard) prompts for the desired role name.
2
Creates the role via Discord API and stores the new roleID in guilds.json.

REQUIRES Administrator + Manage RolesSAVES TO guilds.json
Config Fields
guilds.json schema + spam rules reference
GUILD DATA SCHEMA — guilds.json
FieldTypeDescriptionDefault
idstringDiscord guild snowflake ID
inactiveThresholdDaysnumberDays of silence before user is considered inactiveset via setup
activeRoleIDstring|nullRole ID assigned to active usersnull
inactiveRoleIDstring|nullRole ID assigned to inactive usersnull
usersobjectuserID → ISO last-active timestamp for tracked (role-holding) users{}
allowRoleAdditionbooleanWhether bot may assign roles to new userstrue
ignoredUserIDsarrayUser IDs excluded from all activity tracking[]
messageThresholdnumberMinimum messages to earn active status30
messageCountsobjectuserID → message count toward threshold{}
lastMessageTimeobjectuserID → Unix timestamp (ms) of last message{}
lastMessageContentobjectuserID → last message text (used for duplicate detection){}
SPAM DETECTION RULES
LayerRuleValue
GlobalSliding-window rate limit5 s window · max 3 msgs
GlobalDuplicate consecutive messageRejected
Per-guildMinimum message length3 characters
Per-guildEmoji-only messagesRejected
Per-guildRepeated-character messagesRejected (4+ repeats)
Per-guildPer-user cooldown5 seconds
Per-guildDuplicate content detectionRejected