How a ticket flows
An admin runs /ticket setup in the channel that should carry the panel. From then on a member clicks the button, and the bot creates a private channel under the configured category, visible to the member and to the support roles, with a welcome message and a control row.
The controls are claim, close, reopen, transcript and delete. A claimed ticket shows who owns it, which stops the pattern where three moderators answer the same question in slightly different ways. Members can be pulled into a ticket with /ticket add and removed again with /ticket remove.
- /ticket setup - place the panel in a channel
- /ticket create - open a ticket without the panel
- /ticket add and /ticket remove - manage who can see it
- /ticket transcript - export the conversation at any point
- /ticket close - close it, with a confirmation step
Transcripts
A transcript is the conversation written to a plain-text file and attached to a message in the transcript channel you configure. It is deliberately dull: text, authors and timestamps, nothing that needs a renderer to read.
Nothing is uploaded to a third-party service, because there is no third-party service involved. The file lands in your own Discord server and, if you want a copy elsewhere, it is an attachment you can take.
The export covers the most recent 100 messages in the channel, which is the batch size Discord returns in one fetch. For a normal support conversation that is the whole thing.
Application forms
Applications are separate machinery with the same purpose. A member runs /apply start and fills in the questions for the position; the submission is stored with a number, and staff work through them with /apply list, /apply accept and /apply deny.
Accept and deny both notify the applicant by direct message, with the optional note or reason attached. An accepted application can assign the role configured for that position automatically.
- Positions configured per server
- Numbered submissions with a status
- /apply list, filterable by status
- /apply accept with an optional note
- /apply deny with a reason
- Automatic role on acceptance
Limits and hygiene
Discord has a hard limit on channels per guild, and a ticket system without hygiene will find it. Close tickets when they are done, take the transcript, and delete the channel - the control row has a button for each of those steps so none of it needs a command.