🪄 Pixie Docs
Overview Commands Blog Status Invite
Setup & Server

Anonymous Confessions

Posts a member's text to a channel with zero author attribution anywhere - not in the message, not in any bot log - with bans handled through a one-way hash that expires.

Setup

Manage Guild
$confessions setup <#channel>

Also /confessions setup. Posts a short disclaimer message (just "this channel is fully anonymous" plus a Very Technical Info button for anyone who wants the actual mechanism) with a Submit a Confession button, and keeps it re-pinned to the bottom of the channel automatically (a background check runs every 15 seconds, posted silently so re-stickying never pings anyone). Re-running setup on a different channel removes the old disclaimer.

Submitting

/confess

Also the disclaimer's own Submit a Confession button - both open the same form. There's deliberately no prefix command for this: a typed message would be visible in the channel before the bot could act on it, defeating the point. Max 1800 characters, and a 30-second cooldown between submissions per member (resets on bot restart - it's abuse prevention, not a persisted log). Each confession (and each reply) gets a random muted color, just for visual variety - it's not tied to the server's $customize color and can't be used to tell two confessions from the same poster apart.

Modals can't accept file uploads, so there's no way to attach an image directly - but pasting a direct image or gif link (ending in .png/.jpg/.gif/ .webp) as part of the confession text renders it as a real image in the embed instead of sitting there as a plain link.

Replying

Every confession has its own Reply button, which opens (or reuses) a thread under that confession for anonymous replies - same anonymity guarantees as the confession itself, and replies get the same random-color treatment. Opening the thread doesn't leave Discord's own "X started a thread" system notice behind - Pixie deletes it immediately, so nothing points back at who triggered it.

Moderation

Manage Guild
$confessions ban add <confession_id>
$confessions ban remove <ban_id>
$confessions ban list

Also /confessions ban add/remove/list. Each confession shows a short ID in its footer - ban add uses that ID to ban whoever posted it, but only within 7 days of posting. After that window the link is deleted from storage permanently, and that confession can never be used to identify or ban anyone again, even with full bot access.

Bans work by hashing the poster's user ID together with a secret, app-wide "pepper" value that no command ever exposes - the bot can check whether a hash matches a ban record without that hash ever being reversible back to a real account. The disclaimer message's own Very Technical Info button explains this in more detail for anyone who wants to verify it themselves.