Documentation

How Clover works

The essentials for running commands and setting up the main features.

Clover is in early access and is not open for invites yet. This guide describes how it is designed to work.

Running commands

Every command is a native slash command, grouped where Discord's limits require it, such as /mod ban. Two other ways in reach the same commands:

  • /run finds any command, with search as you type: /run command:mod.ban args:@user reason=spam.
  • The text prefix also reaches everything: ol!mod.ban @user spam.

Use /help to search for a command, or browse the command directory.

Permissions the bot needs

Give the bot a role above the members it should moderate, with View Audit Log, Manage Channels, Manage Roles, Ban Members, Kick Members, Moderate Members, Manage Messages and Embed Links. Discord only lets it act on members below its top role.

Security setup

Start in monitor mode to see what would be flagged without enforcing anything:

  • /security log-channel channel:#security-alerts
  • /security dry-run enabled:yes

Once the results look right, turn monitor mode off. If something is flagged wrongly, use /security false-positive or /security trust. Run /security drill scenario:all to test your settings: nothing happens on Discord, and you get a report of what would have been missed.

Threat scoring

Each account's recent sensitive actions add up to a score out of 100. By default, 40 raises an alert, 65 calls for quarantine and 85 calls for a response. /security response-mode sets how far it may go:

  • alert only ever posts an alert.
  • quarantine also moves the account into your quarantine role.
  • auto also runs the anti-nuke response you chose, at the top level.

The security page lists every point value. Mark roles and channels with /security protect so that touching them raises the score.

Snapshots and rollback

Snapshots record roles, channels and permissions. They are taken automatically every six hours by default, and whenever you run /security snapshot.

  • /security compare shows what has changed since a snapshot.
  • /security rollback preview shows exactly what a rollback would do, and changes nothing.
  • /security rollback apply operation:1 confirm:yes applies a preview. Previews expire after 15 minutes.

A rollback never deletes anything. Things added since the snapshot are reported, not removed. Recreated roles and channels get new IDs, and deleted messages and attachments cannot be recovered by anyone.

Panic mode

Set a PIN with /panic set-pin, and add trusted operators with /panic authorize. Then /panic activate locks every channel, stops new invites and alerts staff. /panic deactivate restores each channel exactly as it was. /panic recovery pauses automatic responses while staff repair the server.

Hall of Fame and Shame

A single ⭐ nominates a message for the Hall of Fame, and a single 💩 nominates it for the Hall of Shame. Choose a channel for each Hall:

  • /hall configure system:fame channel:#hall-of-fame
  • /hall configure system:shame channel:#hall-of-shame

Nominations made before a channel is set are kept, and they post as soon as the channel is chosen. Messages from age-restricted channels are not reposted into channels that are not age-restricted.

Approvals

/approval rule pattern:mod.ban required:2 makes that command need two approvals. Patterns can cover a whole category, such as config.*. Even administrators then have to propose it with /approval create. The server owner is exempt.

Server networks

Create a network from the hub with /network create, and share a one-time code from /network invite. Each server joins with /network link and chooses what it accepts with /network policy. Nothing syncs until it allows it. Add templates with /network template-add, check with /network sync-preview and send with /network sync. Changes to roles or permissions wait for the receiving server's approval.

Tickets

Run /ticket setup with your staff role, then members open tickets with /ticket create. /ticket sla-set sets response targets, and /ticket hours sets support hours in UTC. SLA clocks only run during those hours.

Cloud storage

Use /storage upload with an attachment. Add scope:me for personal storage. Uploading the same name again creates a new version rather than replacing the old one, and deleted items stay in the trash for 30 days. /storage share creates a link with an optional expiry, download limit or password.

Automations

An automation is a trigger (a message, a join, a leave or a reaction), optional conditions, and up to five actions. Build one in the dashboard, or with /auto create and /auto add-action. Text can use {user}, {username}, {server}, {channel} and {members}.

Dashboard

Sign in with Discord to manage any server where you have Manage Server. Every action goes through the same permission, approval and logging path as Discord. Commands that hand out secrets, and owner-only commands, can only be used in Discord.

Developer API

Create a key with /apikey create. It is shown once, and it only sees its own server. Send it as Authorization: Bearer <key>. The API is read-only:

  • GET /public/v1/server: server ID, name and member count.
  • GET /public/v1/hall/:system: Hall entries for fame or shame, with limit (at most 100) and offset.
  • GET /public/v1/incidents: security incidents, with limit and offset.