Skip to content

Tickets

The Tickets module lets your members open a private space (channel, thread or relayed direct message) with your team. From the dashboard, staff handle them as in a help desk: queues, priorities, assignment, response targets and statistics.

The page has seven tabs: Tickets, Performance, Transcripts, Satisfaction, Macros, Blocklist and Configuration.


On the left, tickets are sorted into queues, each with its counter:

QueueContent
Needs replyTickets where the member is waiting for a staff reply.
OpenEvery open ticket.
UnassignedOpen tickets with nobody assigned.
My ticketsThose assigned to you.
OverdueThose past a service target.
To approveRequests waiting for approval, when approval is required.
Closed and AllThe history.

The Search tickets field accepts a member, a reason, a #tag or an ID. Sorting switches between Oldest first and Newest first, and the j / k keys move from one ticket to the next.

In the list, each ticket shows whether it is Waiting for a staff reply or Waiting on member, its priority when it is High or Urgent, and who it is assigned to.

The ticket’s messages show in the middle. The Write a message… field replies directly: the message goes to the ticket’s Discord channel, under the signed-in staff account.

When AegisAI analyzes ticket mood, the requester’s mood shows on each ticket.

On the right, the properties block sets:

  • the Priority: Low, Normal, High or Urgent;
  • Assigned to: a staff member (the list shows how many tickets each one already has open), or Nobody;
  • Tags, to sort tickets and find them again through search;
  • the Targets: the time left before the First reply and Resolution deadlines, or how far past them the ticket is.

Below, the member card sums up their seniority, roles, Record (warns, timeouts, kicks, bans), past tickets and their average rating, plus a Staff note. Full case file opens their case file without leaving the page, where a sanction can be applied; Full profile opens their member profile.

ActionEffect
ClaimAssigns the ticket to you. The bot announces it in the channel.
OverclaimTakes over a ticket already assigned to someone else, if the configuration allows it.
CloseCloses the ticket. A Closing reason can be added; it is optional.
ReopenReopens a closed ticket.
Archive / UnarchiveAn archived ticket keeps its channel, which becomes read-only.
Lock / UnlockProtects the ticket against deletion (see below).
RenameChanges the Discord channel’s name.
RestoreRecreates the channel of a deleted ticket, with the whole message history, original names and avatars. Three restores at most per ticket; original attachments are not restored.
DeleteDeletes the channel on Discord and generates a transcript.

Lock opens Protect against deletion: while the protection holds, the ticket cannot be deleted from the dashboard nor from Discord. Pick a Protection duration (7 days, 30 days, 90 days or No expiry) and an optional Reason.

The ticket then shows Protected against deletion, with who set the lock and when it ends.

With approval required, a request opens no channel until it is accepted. It shows up in the To approve queue:

  • Approve request creates the ticket;
  • Reject asks for a Reason given to the member, who receives the rejection by DM.

The same decision can be made from the card posted in the approval channel on Discord.


The tab gives support times as medians, with the 90th percentile to spot forgotten tickets, over the chosen Period. Compare with previous period overlays the previous period.

  • The Open now block counts tickets without an owner and those waiting for a staff reply.
  • Per staff member: tickets handled, median times and satisfaction for each one.
  • By type and By tag: where requests pile up.
  • Ratings received: how satisfaction ratings are spread.

This tab replaces the former Transcripts page, whose /transcripts-list address now leads here. It lists ticket and channel transcripts:

  • a ticket is transcribed when it is deleted, and again when it is archived, so the archive reflects its last state;
  • the /transcript command and importing messages as evidence into a sanction report produce channel transcripts.

The Type column tells them apart: Ticket or /transcript. View opens the full transcript in a new tab.

Only people who manage the server settings can delete one. A confirmation comes first: the transcript disappears from the dashboard and its link stops working.


When a ticket closes, the bot asks the member to rate the support they got, from 1 to 5 stars. The Satisfaction tab shows:

  • the average rating and how ratings are spread;
  • Satisfaction per staff;
  • Recent reviews, with a With comment filter.

The comment question and reposting reviews on Discord are set in the configuration.


A macro puts a reply the staff keeps rewriting one click away, and attaches what usually comes next.

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_channel} (clickable channel mention), {ticket_link} (Discord link to the channel), {ticket_type} and {server} variables are replaced in it.
  • Ticket types covered and Allowed roles: empty, the macro applies to every type and all staff.
  • Suggestion keywords: macros whose keyword appears in the request move to the top of the picker.

A macro can do more than write:

  • Change type to: change the ticket’s type.
  • Add the role and Remove the role.
  • Trigger the satisfaction survey.
  • Close the ticket: applied last, since the others need a ticket that is still open.

Send automatically on open 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 come first.


The Ticket blocklist tab stops some members from opening a ticket, without going through a Discord sanction.

  • Discord ID: the ID of the member to block.
  • Reason: it is shown to the member when they try to open a ticket. Left empty, it shows as No reason given.
  • Duration (days): empty, the block is Permanent.
  • Allow reopening their past tickets: the member can no longer open tickets, but can still ask to reopen one that was already handled. The entry then reads Reopening allowed.

Each entry shows who created it (Added by …). Remove lifts the block.


Configuring the module (Configuration tab)

Section titled “Configuring the module (Configuration tab)”

At the top of the tab, Set up creates what is missing - the ticket category, the panel channel and the log channel - keeping what you already picked. Send Embed posts the opening panel in its channel.

The settings are grouped into collapsible sections.

  • Default ticket category, Opening panel channel, Logs / transcripts channel and Default support staff role.
  • Direct message relay channel (DM mode): where messages from tickets opened by DM arrive.
  • Allow overclaiming: a staff member can take over an already claimed ticket; Who can overclaim? opens it to All staff or Higher or equal grade.
  • Auto-claim on reply: as soon as a staff member writes in an open ticket, it is claimed by them.

A channel or role that cannot be found on the server is flagged: the module will not work while it points there.

The opening panel: Title, Description, Button text, Colour, images, author and footer. The Interaction type shows one button per ticket type (Buttons) or a single Dropdown menu.

The message sent when the ticket is created, with its variables ({type_label}, {user}, {staff_mention}, {reason}, {description}) and its Embed colour.

  • Lock until claimed: the channel stays visible to the opener and staff, but nobody can write until a staff member claims it.
  • Require approval before opening: the request goes to staff first, and the channel is only created once approved. The Approval channel receives the decision cards (empty: the ticket log channel).

Each ticket type can follow these settings or override them.

  • Archive category: archived channels are moved there. Empty, the channel stays put and only its permissions change.
  • The opener keeps read access: the member keeps seeing their archived ticket without being able to write in it.

Member-side history adds a “My past tickets” button under the panel: everyone sees their closed tickets and transcripts there. Member-side reopening lets them ask to reopen a closed ticket (3 reopenings at most, with increasing delays) and Member-side deletion lets them erase one of their past tickets; locked tickets stay protected.

  • Enable reminders: an automatic message when the author stops answering, after a Delay (hours), with the text of your choice.
  • Remind staff when a member is waiting: if no staff member has answered the member after the Delay without reply (minutes), the bot mentions whoever claimed the ticket, otherwise the staff role. One reminder per wait, counted in the statistics.

Show the notice before every ticket tells the member, before their ticket is created, that the conversation will be recorded, transcribed and archived. They read it in a message only they can see, and the ticket is created once the Reading delay has passed (5 to 30 seconds; 10 to 15 leave time to read). The Notice text can be changed, and a preview shows it with its countdown.

Two times to keep, tracked in the ticket list and in the Overdue queue:

  • First reply (minutes);
  • Resolution (hours): time between opening and closing.

Empty, a time has No target.

Opening limits on the member side, and a workload cap on the staff side. Each quota is turned on separately, and a ticket type can adjust the threshold.

QuotaWhat it limits
Tickets open at the same timeHow many tickets a member can have open at the same time.
Delay between two openingsStops members from opening ticket after ticket without leaving time to answer.
Quota over a periodCaps openings over a rolling window (Maximum tickets over N hours).
Limit reopeningsHow many times the same ticket can be reopened. The delays between two reopenings (24 h, then 7 days) apply no matter what.

The Maximum load per moderator counts tickets claimed and still open; beyond it, staff are warned or refused.

  • Ask for a comment: after rating, the member can add a free-text comment. The Question asked can be changed, and the button disappears from the DM after the Timeout (30 to 900 seconds). The rating is stored even without a comment.
  • Reviews channel: every review is reposted there - rating, author, assigned staff and comment. Empty, nothing is reposted.
  • Hide the review author: the reposted review shows Anonymous member. The dashboard still shows the author.

Several support options (“Report a bug”, “Shop question”…). Add a type then set:

  • the Button / option label, the Emoji, the Button colour (style) and the Option description (dropdown menu);
  • the Opening mode: New channel, Direct messages (DM), Thread, or Default (global);
  • the Target category and a Specific staff role (empty: the defaults);
  • Lock until claimed and Require approval, specific to the type;
  • Staff anonymity in DM mode, and creating the ticket on the staff server for an internal ticket (HR, complaint…).

Enable the question form for this type asks up to 5 questions before opening. With no custom question, Kotbo asks Subject and Description.

Answer typeWhere the question is asked
Short line and Long paragraphIn the opening window (Discord modal).
Dropdown menu, Radio buttons and File attachmentIn the ticket, right after it is created: the bot asks it itself.

Choice types need their Choices / options, comma separated; Discord only renders the first 5 as buttons. Required field makes the answer mandatory.