Tickets

Multi-type panels, channel-per-ticket runtime, Discord-styled web transcripts

The ticket system turns a Discord server into a full helpdesk: panels with buttons or dropdown open different ticket types, every ticket gets its own channel, staff works with internal notes, tags, priorities and claims, and on close you get a web transcript that looks like the Discord client.

Overview

Enable the module in the Tickets tab, create at least one type, build a panel, and publish it to a channel. Once a user clicks a panel button, the bot opens a private channel under the chosen category and pings your staff role.

Step-by-step setup

Step 1: Enable the module

Open Dashboard → Tickets → Settings and toggle 'Enable ticket system'. While the module is off, the bot replies to panel clicks with an error message.

Step 2: Create at least one type

In the 'Types' tab you define what kind of ticket can be opened. Required:

  • Name + emoji (shown on the panel button)
  • Discord category for channel creation
  • At least one staff role allowed to see + handle tickets
  • Welcome embed (posted inside the ticket on open)

Step 3: Build a panel

In the 'Panels' tab you choose a display type (buttons or dropdown), provide title + description, and assign types. Buttons allow up to 25 entries per panel; dropdown allows up to 25 options.

Multiple types per panel are allowed — e.g. a Support panel with types 'Bug report', 'Feature request', 'General'.

Step 4: Publish the panel

Click 'Publish' and choose the target channel. The bot posts the embed with interactive buttons or dropdown. When you edit and re-publish, the existing message is updated.

Panels

A panel is a Discord message that lets users open tickets. Per panel you configure:

  • Display type — buttons (up to 25) or dropdown (up to 25 options)
  • Embed content — title, description, color, optional image
  • Assigned types — each type becomes a button or dropdown entry

Ticket types

Each type defines how an individual ticket behaves. Important settings:

SettingMeaning
Discord categoryUnder which category the channel is created. At 50 channels the bot spawns an overflow category.
Staff rolesWho can see and respond to the ticket. At least one role required.
Max open per userHow many tickets of this type a user can have open at once. Default: 1.
Cooldown (sec)Minimum pause between two tickets of the same type from the same user.
Opener can self-closeWhen on, the opener sees a 'Close' button in the ticket. Otherwise staff only.
DM on closeAfter close, send the web transcript link to the opener via DM.
Grace period (hours)How long the archived channel stays visible before deletion. Default: 24.

Pre-open fields

Per type you can define modal fields users must fill in before opening. Inputs are posted as an embed in the ticket header. Available field types:

  • Short text — single line, max 100 chars (e.g. name, in-game ID)
  • Long text — multi-line, max 4000 chars (e.g. description)
  • Select — single choice from predefined options
  • Multi-select — multiple choices
  • Number — numeric input with optional min/max

Channel-per-ticket runtime

On open, the bot creates a new channel with permission overrides: only opener + staff roles see the channel, everyone else doesn't. The header shows an embed with pre-open fields, and buttons for claim, close, tags, priority.

Discord limits categories to 50 channels. Once the main category is full, the bot auto-spawns an overflow category with an incrementing suffix (e.g. 'Support-2', 'Support-3'). Up to 500 open tickets per server.

Claim, priority, tags

Staff can claim a ticket by button — the claimer is shown in the header and audited in mod-log. Priority (Low/Normal/High/Urgent) is colour-coded in the embed. Tags are coloured labels you define server-wide and attach per ticket (e.g. 'Bug', 'GDPR', 'VIP').

SLA timers

Configurable per type. When an SLA target is missed, the bot escalates to the mod-log with a hint and a link to the ticket.

  • First-response SLA — time between open and first staff reply
  • Resolution SLA — time between open and close
  • Pauses — SLA pauses while waiting on opener reply (configurable)

Auto-close on inactivity

When a ticket has been inactive for the configured hours, it auto-archives. The bot warns 24h beforehand; the opener can reset the deadline with the re-open button.

Auto-close only runs if the type enables it. By default it's off, so tickets don't disappear without explicit consent.

Web transcripts

On close the bot mints a 90-day token and posts a link to the mod-log (and optionally as DM to the opener). The link opens a web page that renders the ticket Discord-style: avatars, username colors, embeds with color bar, reply arrows, attachments as images/videos/file cards. URL pattern:

tera-one.de/:locale/t/:token

Example: tera-one.de/en/t/Q5x9k3R2pL_aB7vN…

Token scopeAudienceLifetime
staffAny staff member (link is shareable)90 days
openerThe opener personally90 days
publicManually issued for outsidersConfigurable
On the viewer page there's a 'JSON Export' button that lets you download the entire ticket machine-readable — header, all messages, embeds, attachments.

Settings: storage & transcripts

The 'Settings' tab has two privacy toggles. Both are on by default.

  • Store messagesWhen on, all messages in open tickets are stored in the database. Required for transcripts and analytics.
  • Generate transcriptsWhen on, closing creates a transcript link and posts it to mod-log + DM.
If 'Store messages' is off, 'Generate transcripts' is automatically off — without storage there's nothing to render.

Blacklist & anti-spam

A heuristic blocks spam openers who create several tickets in a short time without substance. The blacklist has a hit counter and an expiry (manual or automatic). Staff can edit and delete entries in the 'Blacklist' tab.

Custom-bot compatibility

If your server has a custom bot configured, all ticket operations — channel creation, embed posts, mod-log posts, opener DMs — go through its token. Your branding, your rate-limit slot.

Troubleshooting

Panel click shows 'Ticket system is disabled'
Enable the module in the 'Settings' tab. This is separate from the module toggle in general server settings.
'You've already reached the maximum number of open tickets' even though none are open
Check in the Live tab whether a ticket is in status 'archived' — the counter only respects 'open' tickets, not archived ones. If an archived ticket still blocks the counter, report it — that's a bug.
Publishing fails / panel doesn't appear in channel
Check the bot permissions in the target channel: 'Send Messages', 'Embed Links', 'Use External Emojis' are required. For custom-bot setups: verify the custom bot has access to the target channel.
Transcript link doesn't appear in mod-log
1) Set the mod-log channel in the audit-log module — the ticket mod-log uses that configuration. 2) Verify 'Generate transcripts' is on in the Settings tab. 3) 'Store messages' must also be on.
Attachments missing in the web viewer
Attachments are mirrored on close — if the mirror fails (bot offline during close, Discord link expired), the viewer falls back to the original link. If that link has also expired, the attachment is lost.

FAQ

How many open tickets per server are possible?
Up to 500. Discord limits categories to 50 channels — the bot auto-spawns overflow categories.
Does this work with a custom bot?
Yes. Once you've registered your server's custom bot via token, it takes over all ticket operations.
Can tickets be closed without a reason?
Yes. The reason field accepts 0–500 chars. With an empty input the reason is stored as 'no reason given' in the audit log.
What happens if the opener deletes their account?
The auth hook places a tombstone marker on the user record. Tickets remain readable for server-owner accountability; the username is anonymized to '[deleted]'.
Can I edit a panel or type after going live?
Yes. Panels, types and tags can be edited any time. When you update a panel, the existing Discord message is patched.
Does this module cost anything?
No. Completely free — all features, no limits, no premium tier.
Tickets · TeraOne Docs · TeraOne