Anonymous Reports
Lets members DM in a report that reaches staff with zero identifying information attached - staff can reply through the bot, and can only ever ban a reporter (not identify them) within a short window using the report's short ID.
How it works
A member runs /report, confirms they want to be DMed, and describes their issue in
their DMs. Pixie posts it into your configured report channel as a thread, relayed through an
anonymous "Reporter" webhook - no username, avatar, or account info tying it back
to them anywhere in the thread. Staff replies in the thread get relayed back to the reporter's DMs
the same way, and the connection is two-way until either side closes it.
Staff can never identify who filed a report. Bans use a one-way hash of the reporter's ID that gets purged after 7 days - after that window, not even Pixie can connect a report back to anyone.
Setup
$reportconfig
Set a channel for reports and turn the system on. Also configurable: auto-close duration (default 14 days, up to 60).
Filing a report
/report
Confirms in the server (ephemeral), then continues entirely in DMs. The reporter has 1 hour to describe their issue before it auto-cancels - a Cancel button is also provided. Attachments (images, files) are re-uploaded with metadata stripped.
Reporter-side DM commands
| Command | What it does |
|---|---|
$switchreport <number> | Switch which open report your DMs go to |
$closereport | Fully cut the connection for your focused report |
Staff side
Reply directly in a report's thread to talk to the reporter. Closing and banning both use a short report ID (shown when the report opens):
| Command | Permission |
|---|---|
$reportclose (also $closereport) / /reportconfig closereport | Timeout Members |
$reportban add <report_id> / /reportconfig ban add | Manage Guild + Ban Members |
$reportban remove <ban_id> / list (slash: /reportconfig ban remove / list) | Manage Guild + Ban Members |
The ban commands' prefix and slash forms genuinely live in different places - $reportban
is its own top-level command, while the slash version is nested under /reportconfig ban.
Not a typo, just how it's built.
Spam protection
If either side sends several messages in a short burst, they're queued and delivered together ~20 seconds later instead of relaying each one individually, with a heads-up that they can close the report if that's what they'd rather do.