Discord Integration¶
Connect your Discord server to PulseCAD for notifications, slash commands, account linking, and automatic CAD-role → Discord-role sync. Configure it all in Admin → Discord.
Setup¶
- Click Invite the PulseCAD bot and add it to your Discord server. The invite asks for Manage Roles, View Channels, Send Messages, and Embed Links — role sync needs Manage Roles.
- Paste your Server (Guild) ID and a Notify Channel ID.
- To get the Guild ID: in Discord, open User Settings → Advanced → Developer Mode, then right-click your server icon and Copy Server ID. Right-click a channel and Copy Channel ID for the notify channel.
- On a multi-server community you can optionally set per-server channels so each game server's calls and BOLOs route to their own channel.
- Save, then Send test message to confirm the bot can post.
- Map your Rank Mappings (below), Save, and Sync Roles Now.
A live status banner at the top of the panel tells you the bot's health:
| Banner | Meaning |
|---|---|
| Bot offline | The pulsecad-bot process isn't running. |
| Online, but not in your server | Use Invite the PulseCAD bot. |
| In server, but missing Manage Roles | Role sync won't work — fix the bot's permissions. |
| Online … Manage Roles OK | Everything's healthy. |
Guild → community
Each Discord server maps to exactly one community via its Guild ID, so the bot knows which community to act on. If the bot is removed from a server, the link is cleared automatically; re-invite to restore it.
Slash commands¶
Members run these in your linked Discord server.
Lookup (public replies)
| Command | What it does |
|---|---|
/units |
List on-duty units (callsign, department, status). |
/calls |
List active & pending calls. |
/onduty |
Show how many units are on duty. |
/unit <callsign> |
Look up a single unit by callsign. |
Account (private replies)
| Command | What it does |
|---|---|
/link <code> |
Link your Discord account to CAD (code from CAD → Admin → Discord). |
/me |
Show your CAD link and on/off-duty status. |
Interactive / write commands
| Command | What it does |
|---|---|
/call <nature> [location] [priority] |
File a pending call to dispatch. |
/bolo <title> [plate] |
Create a BOLO. |
/duty on <callsign> [department] |
Go on duty. |
/duty off |
Go off duty. |
Notification embeds also carry buttons: Attach me on a new-call embed pulls your on-duty unit onto the call, and Sign / Deny on a warrant embed let court staff act without opening the CAD.
Link first
Write commands and /me require a linked account. If someone hasn't linked, the bot tells them to run /link with a code from CAD → Admin → Discord → Link your account.
Notifications¶
Choose which CAD events post to Discord in the Notifications matrix (the right column of the Discord panel). Each event has its own enable toggle, an optional channel override, and an optional ping.
| Event | Default |
|---|---|
| New call | On (with a priority threshold) |
| New BOLO | On |
| Panic / officer needs help | On |
| Unit on duty | Off |
| Unit off duty | Off |
| New warrant | Off |
| Shift summary (periodic) | Off |
| Roster sync summary | On |
| ER:LC mod call | On |
| ER:LC officer-involved kill | Off |
- Channel — leave blank to use the per-server channel (if set) or the default Notify Channel.
- Ping — a role ID, or the literal
here/everyone. - New call adds a priority dropdown (P1 only / P1-P2 / P1-P3 / All calls) so you don't get pinged for low-priority calls.
- Shift summary adds an Every N hours interval.
- The ER:LC events are relevant to ER:LC (Roblox / Liberty County) communities and fire from that platform's mod-call and officer-involved-kill events.
Fallback webhook
Under the matrix, set a Fallback webhook (a Discord channel webhook URL, stored encrypted). If the bot ever goes offline, calls, BOLOs, and panic alerts post through the webhook instead, so critical alerts are never lost. Create one in Discord under Edit Channel → Integrations → Webhooks.
Role sync¶
Map each CAD role (owner, admin, supervisor, member, readonly) to a Discord role ID in the Rank Mappings card. Auto-match by name fills them in from your server's existing role names, which you can then adjust.
- A member's CAD role is reflected as the mapped Discord role; other managed roles are removed.
- Changes sync automatically when you change a member's role.
- Run Sync Roles Now after editing the mapping or after bulk role changes. It reports how many members synced, failed, and are linked.
Role sync requires the bot to have Manage Roles in your server.
Link your account¶
There are three ways to connect a personal Discord account:
- Continue with Discord on the login page (OAuth) — creates or links your account and stores your Discord identity.
- Link with Discord on your Account page.
- Generate Link Code in Admin → Discord → Link your account, then run
/link <code>in Discord (codes expire after 10 minutes).
Linking sets you up for role sync and in-game identity. There's also a Community Discord invite URL field whose value appears as a Discord button on your community Hub (leave it blank to hide it).
Court notifications are separate
The Court module has its own Court channel ID (set on the Court tab) for approval buttons, verdicts, and court-date reminders — independent of the notification matrix above.