AttendiBotAttendiBot

Getting Started

Invite the bot, unlock Ed25519 signing keys, configure voice tracking, and verify signed session records.

This guide walks server admins through the first-time setup of AttendiBot. You need Manage Server permission on the guild you want to configure.

First 10 minutes

StepActionWhere
1Add AttendiBot to your serverAdd to Discord
2Sign in to the dashboardDashboard login
3Generate Ed25519 signing keysDashboard → Signing
4Unlock signing with your passphraseDashboard → Signing
5Set tracking mode + channelsDashboard → Settings → Tracking
6Join a tracked voice channel and leaveDiscord
7Verify a session signaturePublic verifier

Setup checklist

  • Bot invited with applications.commands scope
  • Signed in to dashboard with same Discord account
  • Ed25519 keypair generated (passphrase ≥ 8 characters)
  • Signing unlocked (required after every backend restart)
  • Tracking mode set (Allowlist, Denylist, or All)
  • Tracked channels configured (if using Allowlist/Denylist)
  • Reset interval configured
  • (Optional) Log destinations added
  • Test session verified on public verifier

1. Invite the bot and sign in

Click Add to Discord on attendibot.com to install AttendiBot with the applications.commands scope. You need Manage Server permission on the guild.

Then sign in to the dashboard with the same Discord account. The dashboard uses Discord OAuth and only shows servers where you have Manage Server permission.

Tip: Use the same Discord application for bot install and dashboard OAuth. See Discord Setup for Developer Portal configuration.


2. Generate and unlock signing keys

AttendiBot signs every completed voice session with Ed25519. Without unlocked signing keys, sessions are not recorded.

Generate keys (once per server)

In the dashboard, go to Signing and click Generate keys. Choose a passphrase (minimum 8 characters) and store it securely.

Alternatively in Discord:

/admin generate-keys passphrase:your-secure-passphrase

Unlock signing (after every restart)

Signing keys are encrypted at rest. After every backend restart, an admin must unlock them:

  • Dashboard → SigningUnlock signing
  • Or Discord: /admin unlock-signing passphrase:your-secure-passphrase

Check status with /admin signing-status or the dashboard signing panel.

Important: If signing is locked, voice sessions are dropped when members leave channels. Always unlock after deploys or restarts.

Share your public key so anyone can verify session signatures. See Signing & Verification.


3. Configure voice tracking

Choose which voice channels AttendiBot monitors in Settings → Tracking:

ModeBehavior
OffNo tracking
AllowlistTrack only selected channels
DenylistTrack all except excluded channels
AllTrack every voice channel in the server

For Allowlist or Denylist, add or remove channels in the dashboard or with /admin track-channel.

Configure fairness rules (pause on mute, solo detection, minimum session duration) in the same settings page.

AttendiBot records join, leave, and move events — never voice audio.


4. Set period resets and log destinations

Period resets

Configure leaderboard reset intervals in Settings → Periods:

  • Interval: hourly through yearly (e.g. every 1 week)
  • Anchor mode: rolling or calendar-aligned (start of day, week, month, year)
  • Timezone for calendar alignment (IANA, default UTC)

Each reset archives a signed period snapshot and starts a fresh leaderboard.

Force an immediate reset with /admin reset-now or the dashboard.

Log destinations (optional)

Post automated embeds to Discord text channels via Logs in the dashboard or /admin logs commands:

  • Real-time: voice join, voice leave, session completed
  • Periodic: leaderboard summaries, attendance summaries

See Commands for log subcommands.


5. Verify signed sessions

Every completed session receives a UUID and Ed25519 signature. Anyone can verify a record:

  1. Open the public session verifier on the homepage
  2. Paste the session UUID
  3. Confirm the signature matches your server's public key

Admins can also verify in Discord:

/admin verify-session session_id:550e8400-e29b-41d4-a716-446655440000
/admin verify-period period_index:1

6. Explore the dashboard

PagePurpose
OverviewLive occupancy and current period stats
LeaderboardPeriod rankings for your server
AnalyticsActivity heatmaps
StatsPer-user and per-channel breakdowns
ExportDownload signed period bundles (Pro)
SubscriptionCompare Free, Pro, and Enterprise tiers

Members can check stats with /stats and view leaderboards with /leaderboard.

See the full Dashboard Guide for every route.


Next steps

Edit on GitHub

On this page