Getting started
You need the Manage Server permission in Discord, and write access to the GitHub repository you want reports to go to.
- Choose Add to Discord on this site and add the bot to your server.
- Run
/dispatch setup. Dispatch gives you a link to install its GitHub App. - Install the app on the account that owns the repository. You can limit it to a single repository.
- Sign in with GitHub when asked, then pick the repository. Dispatch checks that you can push to it before linking.
Members can now use /report. Everything else, such as a triage channel, labels and rewards, is optional and lives in /dispatch settings.
Several repositories (Dispatch Pro)
A server with Dispatch Pro can connect up to 10 repositories. Run /dispatch setup again for each one: with Pro it adds the repository instead of replacing the old one. When a member reports a bug they pick which repository it is for, and the issue is filed there. In a triage queue, each card shows its repository and Approve files the issue in that one.
Labels, report types, the triage queue and rewards are shared by all of a server's repositories. /dispatch disconnect asks which repository to remove.
If a subscription ends, the oldest connected repository keeps working. The others are paused, not deleted, and work again as soon as Dispatch Pro returns.
Reporting a bug
Members run /report, or right-click any message and choose Apps → Report bug. The second route pre-fills the form with the message text and links back to the message.
The form asks for a title, what happened, steps to reproduce, the version or environment, and up to three screenshots or logs. Only the title and description are required.
If your server has report types, members choose one first. It becomes a label on the GitHub issue, alongside your base labels.
The reporter gets a receipt straight away. If there is a cooldown, they are told how long to wait.
Triage
Pick a triage channel in /dispatch settings and new reports land there instead of going straight to GitHub. Each report is a card with Approve and Reject buttons, and gets its own thread for discussion.
- Approve files the GitHub issue and tells the reporter.
- Reject asks for an optional reason and sends it to the reporter.
- Staff are members with the staff role, or anyone with Manage Server.
- If the triage channel is deleted or Dispatch loses access, reports are filed directly rather than lost.
Updates and status
Reporters get a DM when their report is approved, rejected, answered by a maintainer, closed, reopened or fixed. An optional updates channel announces new issues and fixes.
A report counts as fixed when its issue is closed as completed. Issues closed as not planned or duplicate are closed without credit. Reopening an issue takes the credit back.
Reward roles
/dispatch rewards add @Bug Hunter 5 grants the role after 5 fixed reports. Add as many tiers as you like, and see them with /dispatch rewards list.
Dispatch’s own role must sit above every reward role in Server Settings → Roles, or Discord refuses the assignment. When you add a tier, up to 20 members who already qualify get it immediately. Everyone else gets it the next time one of their reports is fixed.
Settings
Admins open /dispatch settings. Channels and the staff role are selectors, and labels, report types and cooldown are in the Edit form.
| Setting | Default | What it does |
|---|---|---|
| Triage channel | Off | Where new reports wait for approval. Leave empty to file issues immediately. |
| Updates channel | Off | Where new issues, fixes and reward roles are announced. |
| Status board | Off | One self-updating message with open, in-review and fixed counts and the most upvoted reports. |
| Fast-track | Off | Members with this many accepted reports, at 90% or better, skip the triage queue. |
| Staff role | None | Can approve or reject reports. Members with Manage Server always can. |
| Issue labels | bug | Added to every issue, comma separated. Missing labels are created automatically. |
| Report types | None | Up to 10, such as Crash, UI, Performance. Members pick one before the form opens, and it is added to the issue as a label. |
| Cooldown | 60 seconds | Minimum time between reports from the same member. 0 to 3600. |
| Reporter DMs | On | Whether reporters hear about approvals, fixes and maintainer comments. |
Commands
/dispatch is hidden from members without Manage Server by default. Admins can change this under Server Settings → Integrations.
| Command | Who | What it does |
|---|---|---|
/report | Everyone | Open the bug report form. |
Apps → Report bug | Everyone | Right-click a message to report it, with its text pre-filled and a link back to it. |
/issues | Everyone | Your open reports across every server using Dispatch. Works in DMs too. |
/stats [member] | Everyone | Report counts and reward progress. |
/leaderboard | Everyone | Top reporters by fixed bugs. |
/dispatch replies | Manage Server | Saved replies for rejecting or asking about a report. |
/dispatch reporters | Manage Server | Mute or unmute a member, or list who is muted. |
/dispatch setup | Manage Server | Connect a GitHub repository. With Dispatch Pro, add up to 10; otherwise a new one replaces the old. |
/dispatch settings | Manage Server | Triage queue, updates channel, staff role, labels, report types, cooldown, reporter DMs. |
/dispatch disconnect | Manage Server | Unlink a repository. |
/dispatch rewards add / remove / list | Manage Server | Configure reward roles. |
Permissions and data
- GitHub App: Issues (read and write) and Metadata (read-only), with webhooks for issue, comment and repository events. It uses a short-lived token scoped to the one repository an issue is filed in.
- Discord: View Channel, Send Messages, Embed Links, Create Public Threads and Manage Roles. No message content access.
- Stored: report text, the reporter’s Discord ID and username, and server settings, in Cloudflare D1. Attachments are kept in Cloudflare R2 and are public to anyone with the link. The GitHub issue includes the reporter’s Discord username and, for message reports, a link to the message.
- Disconnecting:
/dispatch disconnect, or uninstalling the GitHub App, removes the repository link (only the repositories taken off the app, if it stays installed). Existing reports, settings and attachments stay stored, and nothing is deleted automatically yet.
Limits
- Up to 3 attachments per report, 10 MB each.
- Allowed types: images, mp4, webm and mov videos, and txt, log and json files. Anything else is skipped and the reporter is told.
- Up to 10 report types per server.
- One connected repository per server, or up to 10 with Dispatch Pro.
- Cooldown between reports from one member: 0 to 3600 seconds.
Troubleshooting
| Symptom | Fix |
|---|---|
| Triage cards have no discussion thread | Dispatch needs Create Public Threads in the triage channel. Grant it there. Existing cards are not back-filled. |
| “I can’t post in #channel” in settings | Dispatch cannot see that channel, usually because of a private category. Give it View Channel and Send Messages there. |
| Reporters never get DMs | The member has DMs from server members turned off. Dispatch skips the DM, and updates channel posts still work. |
| A reward role is not granted | Dispatch’s own role must sit above every reward role in Server Settings → Roles. |
| “Dispatch no longer has access to the repository” | The GitHub App was removed from the repository or its access changed. An admin should run /dispatch setup again. |
| Status does not change when an issue is closed | The GitHub App sends a webhook when an issue closes. If you host Dispatch yourself, check the app’s Recent Deliveries for a 401, which means the webhook secret does not match. |
Still stuck? Open an issue on GitHub.