Slash Commands
Full slash command reference for AttendiBot.
AttendiBot uses Discord slash commands. Admin commands require Manage Server permission.
Terminology: Voice channel tracking (
/admin track-channel,/admin track-user) controls which channels and members are counted. Leaderboard tracks (/admin tracks, optionaltrackon stats commands) are concurrent period schedules — use/admin tracks listto see track names and slugs.
Track option: Many commands accept an optional
trackparameter (name or slug). Omit it to use the server's default track.
Public commands
Available to all server members.
/ping
Check if the bot is online and measure latency.
/ping/leaderboard
Show the voice time leaderboard for the current period.
| Option | Type | Default | Description |
|---|---|---|---|
limit | Integer | 10 | Number of users to show (max 25) |
track | String | Default track | Leaderboard track name or slug |
/leaderboard
/leaderboard limit:15
/leaderboard track:monthlyDashboard equivalent: Leaderboard
/stats
Show voice attendance stats for a user in the current or an archived period.
| Option | Type | Default | Description |
|---|---|---|---|
user | User | You | User to inspect |
track | String | Default track | Leaderboard track name or slug |
period | Integer | Current period | Period number to inspect |
/stats
/stats user:@MemberName
/stats user:@MemberName track:yearly
/stats user:@MemberName track:yearly period:2Dashboard equivalent: User Stats
/channel-stats
Show the voice leaderboard for a specific channel.
| Option | Type | Default | Description |
|---|---|---|---|
channel | Channel | Required | Voice or stage channel |
limit | Integer | 10 | Number of users to show (max 25) |
track | String | Default track | Leaderboard track name or slug |
period | Integer | Current period | Period number to inspect |
/channel-stats channel:#Study-Hall
/channel-stats channel:#Study-Hall track:monthly
/channel-stats channel:#Study-Hall track:monthly period:3Dashboard equivalent: Channel Stats
/occupancy
Show members currently in tracked voice channels (live occupancy).
/occupancyDashboard equivalent: Analytics (live occupancy widget)
/vote
Show vote links for AttendiBot on bot listing sites (top.gg and others). The reply is only visible to you.
/voteVotes help AttendiBot rank higher in bot listing search results.
Admin commands
All /admin subcommands require Manage Server permission.
/admin tracking-mode
Set how voice channels are selected for tracking.
| Option | Values |
|---|---|
mode | Off, Allowlist, Denylist, All |
/admin tracking-mode mode:AllowlistDashboard equivalent: Settings → Tracking → Tracking mode
/admin track-channel
Add, remove, or list tracked channels (for Allowlist/Denylist modes).
| Option | Values | Required |
|---|---|---|
action | Add, Remove, Show | Yes |
channel | Voice channel | For Add/Remove |
/admin track-channel action:Add channel:#Voice-1
/admin track-channel action:Remove channel:#Voice-1
/admin track-channel action:ShowDashboard equivalent: Settings → Tracking → Tracked channels
/admin track-user
Add, remove, or list tracked members (global or per-channel).
| Option | Values | Required |
|---|---|---|
action | Add, Remove, Show | Yes |
user | Discord member | For Add/Remove |
channel | Voice channel | No — omit for global list |
/admin track-user action:Add user:@Alice
/admin track-user action:Remove user:@Bob channel:#Study-Hall
/admin track-user action:ShowDashboard equivalent: Settings → Tracking → Global tracked users / per-channel members
/admin reset-interval
Configure how often a leaderboard track resets.
| Option | Type | Description |
|---|---|---|
value | Integer | Interval amount (e.g. 2 for every 2 weeks) |
unit | Choice | Hour, Day, Week, Month, Year |
anchor_mode | Choice | Rolling, StartOfHour, StartOfDay, StartOfWeek, StartOfMonth, StartOfYear |
timezone | String | IANA timezone (default UTC) |
custom_anchor | String | ISO 8601 start time for rolling mode |
track | String | Track name or slug (default track if omitted) |
/admin reset-interval value:1 unit:Week anchor_mode:StartOfWeek timezone:America/New_York
/admin reset-interval value:1 unit:Month track:yearlyDashboard equivalent: Settings → Tracks (default track)
/admin reset-now
Force an immediate period reset. Archives the current period with a signed snapshot and starts a new leaderboard.
| Option | Type | Description |
|---|---|---|
track | String | Track name or slug (default track if omitted) |
/admin reset-now
/admin reset-now track:monthlyDashboard equivalent: Settings → Tracks → Reset now (default track)
/admin generate-keys
Create the initial Ed25519 signing keypair for the server. Allowed only once per server.
/admin generate-keysRun once per server. If keys already exist, use
/admin rotate-keysinstead.
Dashboard equivalent: Signing → Generate keys (shown only when no keys exist)
/admin rotate-keys
Replace the active Ed25519 signing keypair. Older signed sessions and period snapshots remain verifiable.
/admin rotate-keysDashboard equivalent: Signing → Rotate keys
/admin signing-status
Show signing key status, tracking mode, and active period.
/admin signing-statusDashboard equivalent: Signing panel
/admin setup-status
Show whether this server is activated for voice tracking: signing unlocked, tracking mode on, and channels configured (allowlist). Includes session count and a short next-step hint.
/admin setup-statusUse this after install (also linked from the welcome DM) when sessions are not appearing.
/admin public-key
Display the active Ed25519 public key (base64) for verification.
/admin public-keyDashboard equivalent: Signing → Public key
/admin verify-session
Verify a voice session signature in Discord.
| Option | Type | Description |
|---|---|---|
session_id | String | Voice session UUID |
/admin verify-session session_id:550e8400-e29b-41d4-a716-446655440000Public alternative: Session verifier
/admin verify-period
Verify an archived period snapshot signature.
| Option | Type | Description |
|---|---|---|
period_index | Integer | Archived period index |
track | String | Track name or slug (default track if omitted) |
/admin verify-period period_index:1
/admin verify-period period_index:1 track:monthlyDashboard equivalent: Signing → Verify period
/admin history
List archived periods for a leaderboard track.
| Option | Type | Default | Description |
|---|---|---|---|
limit | Integer | 5 | Number of periods to list |
track | String | Default track | Track name or slug |
/admin history limit:10
/admin history track:yearly limit:10Dashboard equivalent: Settings → Tracks → History (default track)
/admin adjust
Apply a manual time adjustment to a member for the current period.
| Option | Type | Description |
|---|---|---|
user | User | Member to adjust |
amount | Integer | Signed amount (positive to add, negative to deduct) |
unit | Choice | Minutes, Hours, Days, Weeks |
reason | String | Audit reason stored with the adjustment |
/admin adjust user:@Alice amount:2 unit:Hours reason:Event coverage
/admin adjust user:@Bob amount:-30 unit:Minutes reason:AFK correctionDashboard equivalent: Automation → Manual adjustments
/admin rules
Manage automation rules. Subcommands:
/admin rules list
List configured rules with IDs.
/admin rules toggle
Enable or disable a rule by UUID.
| Option | Type | Description |
|---|---|---|
rule_id | String | Rule UUID from /admin rules list |
enabled | Boolean | Enable or disable |
/admin rules delete
Delete a rule by UUID.
Creating recurring, quota, or DSL rules is dashboard-only — use Automation.
Dashboard equivalent: Automation
/admin adjustments
Inspect manual time adjustments. Subcommands:
/admin adjustments list
| Option | Type | Default | Description |
|---|---|---|---|
user | User | — | Filter to one member |
limit | Integer | 10 | Max rows (1–25) |
Dashboard equivalent: Automation → Manual adjustments
/admin tracks
Manage leaderboard tracks (concurrent period schedules). Subcommands:
/admin tracks list
List all tracks with slug, period number, and next reset.
/admin tracks create
| Option | Type | Description |
|---|---|---|
name | String | Display name |
value | Integer | Reset interval amount |
unit | Choice | Hour, Day, Week, Month, Year |
anchor_mode | Choice | Rolling, StartOfHour, StartOfDay, StartOfWeek, StartOfMonth, StartOfYear |
timezone | String | IANA timezone (default UTC) |
/admin tracks create name:Monthly value:1 unit:Month anchor_mode:StartOfMonth/admin tracks rename
Rename a track by slug or name.
/admin tracks set-default
Promote a track to the default used when track is omitted.
/admin tracks disable
Disable a track (cannot disable the current default).
/admin tracks reset-now
Force reset for a specific track (default track if track omitted).
/admin tracks history
List archived periods for a track.
Dashboard equivalent: Settings → Tracks
/admin fairness
Configure voice fairness rules. Subcommands:
/admin fairness show
Display current pause-on-mute/deafen/solo and minimum session duration.
/admin fairness set
Update one or more fairness fields (at least one required).
| Option | Type | Description |
|---|---|---|
pause_on_mute | Boolean | Pause accrual when self-muted |
pause_on_deafen | Boolean | Pause accrual when self-deafened |
pause_when_solo | Boolean | Pause accrual when alone in channel |
min_session_seconds | Integer | Minimum session duration |
/admin fairness preset
Apply a preset: Patrol, Meeting, or StrictAfk.
Dashboard equivalent: Settings → Tracking → Fairness rules
/admin counting-hours
Inspect or clear the server's counting hours schedule (when voice time counts toward leaderboards). Subcommands:
/admin counting-hours show
Display the current schedule mode (24/7 or scheduled windows), timezone, and whether time is counting right now.
/admin counting-hours clear
Clear the schedule and revert to counting 24/7 (fairness rules still apply).
Creating or editing weekly schedules and exceptions is dashboard-only — use Settings → Tracking → Counting hours.
Dashboard equivalent: Settings → Tracking → Counting hours
/admin repair-sessions
Re-sign voice sessions that fail verification.
| Option | Type | Default | Description |
|---|---|---|---|
period_index | Integer | — | Limit to one archived period |
dry_run | Boolean | true | Preview without writing signatures |
Dashboard equivalent: Signing → Repair sessions
/admin repair-periods
Re-sign archived period snapshots that fail verification.
| Option | Type | Default | Description |
|---|---|---|---|
period_index | Integer | — | Limit to one archived period |
track | String | — | Leaderboard track name or slug |
dry_run | Boolean | true | Preview without writing signatures |
Dashboard equivalent: Signing → Repair period snapshots
/admin backfill-transparency-log
Backfill the server's transparency log with historical signed sessions and period archives that predate transparency logging.
| Option | Type | Default | Description |
|---|---|---|---|
dry_run | Boolean | true | Preview how many records would be appended without writing |
/admin backfill-transparency-log
/admin backfill-transparency-log dry_run:false/admin logs
Configure log channel destinations. Subcommands:
/admin logs add
Add a log destination to a text channel.
| Option | Type | Description |
|---|---|---|
channel | Text channel | Where to post logs |
log_type | Choice | All, VoiceJoin, VoiceLeave, SessionTime, Leaderboard, AttendanceSummary |
label | String | Optional label for /admin logs list |
interval_value | Integer | Required for All, Leaderboard, and AttendanceSummary |
interval_unit | Choice | Hour, Day, Week, Month |
/admin logs add channel:#attendance-logs log_type:VoiceJoin
/admin logs add channel:#leaderboards log_type:Leaderboard interval_value:1 interval_unit:Day
/admin logs add channel:#all-logs log_type:All interval_value:1 interval_unit:Day/admin logs remove
Remove a log destination by ID.
/admin logs remove destination_id:550e8400-e29b-41d4-a716-446655440000/admin logs list
List all configured log destinations.
/admin logs set-types
Enable or disable a log type on a destination.
/admin logs set-frequency
Update the posting frequency for periodic log types.
Dashboard equivalent: Logs
Log type reference
| Log type | Delivery | Description |
|---|---|---|
| VoiceJoin | Real-time | Member joined a tracked voice channel |
| VoiceLeave | Real-time | Member left a tracked voice channel |
| SessionTime | Real-time | Completed session with duration |
| Leaderboard | Periodic | Current period leaderboard embed |
| AttendanceSummary | Periodic | Attendance summary embed |
Dashboard-only features
These dashboard capabilities have no Discord slash command. Use the dashboard for them.
| Feature | Route | Notes |
|---|---|---|
| Automation rule creation | /dashboard/automation | Create recurring adjustments, quota rules, and custom DSL rules. Discord supports list/toggle/delete via /admin rules. |
| Activity heatmap | /dashboard/analytics | GitHub-style participation calendar — no Discord equivalent |
| Signed export (Pro) | /dashboard/export | Download signed period bundles as JSON or CSV |
| Webhooks (Pro) | /dashboard/webhooks | Outbound webhooks for session and period events |
| Verified auto-roles (Pro) | /dashboard/verified-roles | Grant or remove roles based on signed voice time |
| Subscription / billing | /dashboard/subscription | View tier, upgrade, and manage billing |
Pro-gated features require Pro or Enterprise. See Subscription Tiers.