Support tickets
The Tickets module lets your members open a private space (a text channel, a thread or a relayed DM) to contact your staff team directly.
How the dashboard page is organised
Section titled “How the dashboard page is organised”The page is split into six main tabs:
- Tickets: the operational interface for reading, replying to and managing active tickets.
- Transcripts: the history of archived and closed tickets.
- Satisfaction: the ratings and comments left by your members after their ticket is closed.
- Macros: the staff’s ready-made replies, with their attached actions.
- Blacklist: the list of members barred from opening a ticket.
- Configuration: the module’s technical settings.
Handling tickets in real time (Tickets tab)
Section titled “Handling tickets in real time (Tickets tab)”This tab is a full customer support centre built into the dashboard.
1. Filter and select a ticket
Section titled “1. Filter and select a ticket”The list on the left holds every ticket. You can filter by status: All, Open, Claimed or Closed. Click a ticket to load its conversation in the centre.
2. Chat from the dashboard
Section titled “2. Chat from the dashboard”The central area shows the messages exchanged. You can type a message at the bottom of the screen: it is sent immediately to the matching Discord channel, under the signed-in staff account.
3. Quick staff actions
Section titled “3. Quick staff actions”Action buttons sit at the top right of the conversation:
- Claim: assigns the ticket to you. The bot updates the Discord channel to signal that you are handling the member.
- Close: closes the ticket. A pop-up requires you to enter a closing reason.
- Rename: changes the name of the linked Discord channel (for example from
#ticket-001to#bug-fixed). - Reopen: for a closed ticket that needs further discussion.
- Overclaim: take over a ticket already claimed by someone else, when the configuration allows it.
- Archive / Unarchive: an archived ticket keeps its channel, which becomes read-only instead of being deleted. It then carries the Archived status.
- Lock / Unlock: protects the ticket against deletion.
Protecting a ticket against deletion
Section titled “Protecting a ticket against deletion”The Lock button opens a Protect against deletion dialog: while the protection holds, this ticket cannot be deleted from the dashboard nor from Discord.
- Protection duration: 7 days, 30 days, 90 days or No expiry.
- Reason (optional), for example ongoing dispute, part of a moderation case.
A protected ticket shows a Protected against deletion banner, with who locked it and until when. Any attempt to delete it returns: this ticket is protected, lift the lock first.
- Restore: if the Discord channel was deleted by accident, instantly recreates it with the full message history intact.
- Delete: permanently erases the ticket and its data from the database.
4. Direct access to the member file
Section titled “4. Direct access to the member file”Next to the name of the user who opened the ticket, a button opens their member file in a modal window. Without leaving the tickets page, you can review their history and apply an immediate sanction:
- Warning (WARN)
- Timeout (TIMEOUT)
- Kick (KICK)
- Ban (BAN)
Ticket history (Transcripts tab)
Section titled “Ticket history (Transcripts tab)”When a ticket is closed:
- Kotbo compiles the whole conversation into a clean HTML page.
- The file is stored securely.
- In the Transcripts tab, click an archived ticket to generate a signed temporary access link. That link lets you read the full transcript in your browser or share it with your team.
Quality tracking (Satisfaction tab)
Section titled “Quality tracking (Satisfaction tab)”When a ticket is closed, the bot sends the member a DM or a channel message asking them to rate the support they received (from 1 to 5 stars) and to add an optional comment.
In the Satisfaction tab you can see:
- Your overall average rating.
- The breakdown of ratings (Very dissatisfied 😡, Dissatisfied 😕, Neutral 😐, Satisfied 🙂, Very satisfied 🤩).
- A chronological list of the detailed comments left by users.
Reposting reviews on Discord
Section titled “Reposting reviews on Discord”- Reviews channel: every review is reposted there as an embed - rating, author, assigned staff and comment. Leave empty to disable.
- Hide the review author: the embed shows Anonymous member instead of the member. The dashboard still shows the author.
Ready-made replies (Macros tab)
Section titled “Ready-made replies (Macros tab)”A macro puts a reply the staff rewrites ticket after ticket one click away, and attaches whatever usually follows it.
The New macro button asks for:
- Name, Category and Emoji.
- Content: the text sent, 2000 characters maximum - the limit of a Discord message. The
{user},{staff},{ticket_id},{ticket_type}and{server}variables are replaced in it. - Ticket types concerned and Allowed roles: left empty, the macro applies to every type and to the whole staff.
- Suggestion keywords: macros whose keyword appears in the request move to the top of the picker.
Attached actions
Section titled “Attached actions”A macro can do more than write:
- Reclassify as: change the ticket’s type.
- Add the role and Remove the role.
- Trigger the satisfaction survey.
- Close the ticket: applied last, the others needing a ticket that is still open.
Automatic sending
Section titled “Automatic sending”Send automatically on opening posts the macro as soon as the ticket is created.
In the ticket channel, the Macros button opens the picker. Discord only accepts 25 entries: the most used ones come first.
Ticket blacklist (Blacklist tab)
Section titled “Ticket blacklist (Blacklist tab)”The Blacklist tab stops specific members from opening a ticket, without going through a Discord sanction.
- Discord ID: the ID of the member to block. A malformed ID is refused with the message Invalid Discord ID.
- Reason: it is shown to the member when they try to open a ticket. Left empty, it displays as No reason given.
- Duration (days) or Permanent: choose a temporary or permanent block.
- Allow reopening their past tickets: the blacklist closes new ticket creation; tick this to still let them request the reopening of an already handled case. The entry then carries the Reopening allowed label.
- Click Add to confirm.
Every entry in the list shows who created it (Added by …), so a decision can be traced back. While the list is empty, the tab shows No blacklisted member.
Configuring the module (Configuration tab)
Section titled “Configuring the module (Configuration tab)”Before your members can open tickets, you need to set up the basics and post the opening panel on your server.
1. Channels and roles (Mode accordion)
Section titled “1. Channels and roles (Mode accordion)”- Ticket category: pick the Discord category under which ticket channels will be created.
- Staff role: the Discord role allowed to see and reply to every ticket created (for example
@Support Staff). - Log channel: the channel where Kotbo posts a summary each time a ticket is opened, claimed and closed.
- Conversation mode:
CHANNEL: creates one private text channel per ticket (recommended).THREAD: creates a private thread under the panel’s channel.DM: opens a direct message conversation with the user and relays their messages into a dedicated staff channel.
2. The opening panel (Embed accordion)
Section titled “2. The opening panel (Embed accordion)”Configure the message members will use to open a ticket:
- Enter the panel’s Title, Description, Colour and Button text.
- Selector type: choose between individual Buttons (limited to 5) or a Dropdown if you offer many support categories.
3. Ticket categories (ticket types)
Section titled “3. Ticket categories (ticket types)”You can configure several support options (for example “Report a bug”, “Shop question”, “Complaints”):
-
For each type, click Add a ticket type.
-
Customise its label, description, emoji and button style (green, blue, grey, red).
-
Per-category overrides: you can override the default category and staff role for each type (for example send “Recruitment” tickets into an HR category restricted to administrators).
-
Anonymity: hides the member’s identity from the staff (the ticket shows Anonymous user).
-
Staff server relay: relays messages to another Discord server if needed.
-
Custom opening form (questions): For each ticket type you can configure up to 5 custom questions that the user must (or may optionally) fill in inside a pop-up (a Discord modal) before their ticket opens:
- Click Add a question to design a new field.
- Enter the question label (for example “What is your in-game username?”).
- Provide a hint / placeholder to guide the member (for example “Enter your exact username”).
- Choose the answer type: short line (for a username, an ID or a short value) or long paragraph (for a detailed explanation).
- Tick Required field to force the user to answer.
- If no custom question is configured, Kotbo shows the standard form with two default questions: “Subject of the request” and “Detailed description”.
The five answer types fall into two families:
Type Where the question is asked Short line and Long paragraph In the opening window (Discord modal). Dropdown menu, Radio buttons and File attachment Interactive: the question is not part of the opening form, the bot asks it inside the ticket right after it is created. Choice types ask for the list of Choices / options, comma separated. Discord only renders the first 5 choices as radio buttons.
4. Archiving (Archiving accordion)
Section titled “4. Archiving (Archiving accordion)”An archived ticket keeps its channel: it becomes read-only instead of being deleted.
- Archive category: archived channels are moved there. Left empty, the channel stays put and only its permissions change.
- The opener keeps read access: when on, the member keeps seeing their archived ticket without being able to write in it.
5. Member-side history (History accordion)
Section titled “5. Member-side history (History accordion)”A button under the opening panel gives members access to their closed tickets, their transcripts, and the actions you allow here.
- “My past tickets” button: adds the button under the opening embed. The panel it opens is ephemeral - everyone only sees their own tickets.
- Member-side reopening: members can request the reopening of a closed ticket, capped at 3 reopenings with increasing delays.
- Member-side deletion: members can permanently erase one of their past tickets and its transcript. Locked tickets stay protected.
6. Claiming (Mode accordion)
Section titled “6. Claiming (Mode accordion)”- Auto-claim on reply: as soon as a staff member writes in an open ticket, it is automatically claimed by them.
- Lock until claimed: the channel stays visible to the opener and staff, but nobody can write until a staff member claims it. The setting applies globally, or ticket type by ticket type.
- Allow overclaiming: a staff member can take over an already claimed ticket. The Who can overclaim? sub-setting opens the gesture to All staff or to Higher or equal grade only.
7. Quotas (Quotas accordion)
Section titled “7. Quotas (Quotas accordion)”Opening limits on the member side, and a load ceiling on the staff side. Each switch commands its own threshold.
| Quota | What it limits |
|---|---|
| Simultaneously open tickets | How many tickets a member can have running at once. |
| Delay between two openings | Prevents chaining tickets without leaving time to answer. |
| Quota over a period | Caps the number of openings over a sliding window (Maximum tickets over N hours). |
| Limit reopenings | The maximum number of times a ticket can be reopened. |
The maximum load per moderator counts tickets claimed and still open. Three modes: Disabled, Warn or Block. Roles that bypass it can be exempted.
8. Inactivity handling (Follow-up accordion)
Section titled “8. Inactivity handling (Follow-up accordion)”Turn on inactivity follow-ups to automatically warn or close tickets for members who stop replying:
- Set the delay in hours (for example 24 hours).
- Write the automatic follow-up message (for example “Hello
{user}, your ticket has been inactive…”).
Putting the panel live
Section titled “Putting the panel live”Once all your settings are in place:
- Click Save in the green bottom bar to store the configuration.
- In the configuration block, select the panel channel (for example
#support-tickets). - Click the Send the panel button in the top right of the configuration screen.
- Kotbo instantly posts the embed with its button or select menu in the chosen channel. Members can now click it to open a ticket.