support tickets.
private channels for the conversations that shouldn’t happen in public.
setting up the ticket system
setup binds one category, one staff role, and an optional opening message. it requires manage server and checks the category before saving. the staff role must be a normal role: havoc rejects @everyone and integration-managed roles because either would make access unsafe or unusable.
,ticket setup "Support Tickets" @Support describe your problem and include relevant links
/ticket setup category: Support Tickets role: @Support message: describe your problem and include relevant links
,ticket statusthe havoc member needs view channel, manage channels, manage permissions, send messages, and read message history in the ticket category. these are exact category requirements. setup also moves existing ticket channels to a newly selected staff role before saving it, so the old team does not retain access while the new team is locked out.
server-level permissions are not enough when the category denies them. grant all five permissions to havoc in the configured category. ticket creation commonly fails because manage channels or manage permissions is missing there.
personalizing the opening message
the opening message set by ticket setup or ticket type message can include placeholders that are filled in with real values when a ticket opens. an unrecognized placeholder is removed rather than breaking the message, so an old message with no placeholders keeps working exactly as before.
- ::{opener}
- the ticket opener's display name
- ::{opener.mention}
- a mention of the ticket opener
- ::{opener.name}
- their account name
- ::{opener.id}
- their account id
- ::{server}
- this server's name
- ::{server.id}
- this server's id
- ::{type}
- the ticket type's label, or 'ticket' when there is no type
,ticket setup "Support Tickets" @Support hey {opener.mention}, welcome to {server}! describe your problem and the {type} team will be with you shortly.
,ticket type message content thanks for reaching out about content, {opener} — a member of the {type} team will follow up here soon.changing configuration
use the individual settings when the system is already live. changing the staff role updates every existing ticket channel. the open-ticket limit is per member and accepts 1 through 10 — new servers start at 3, so a member can have a few tickets open at once without an admin changing anything. the transcript destination must be staff-only; havoc refuses a channel readable by everyone, ordinary roles, or non-staff member overwrites.
| command | what it does | needs |
|---|---|---|
| /ticket setup <category> <staff role> [opening message] | configure the core system in one step | manage server |
| /ticket category <category> | change where ticket channels are created | manage server |
| /ticket staffrole <role> | change the team with ticket access | manage server |
| /ticket limit <count> | set each member’s simultaneous open-ticket limit | manage server |
| /ticket logs <channel> | file closing transcripts in a private channel | manage server |
| /ticket logs-off | stop filing closing transcripts | manage server |
| /ticket status | show settings, counts, and up to twenty open tickets | manage server |
posting panels and opening tickets
ticket panel create posts a named card with an open button (or one button per chosen ticket type) and remembers it, so it shows up in ticket panel list and can be removed later withticket panel delete. buttons are matched from their stored button id, so every posted panel keeps working after havoc restarts even if its record is later deleted by hand. the command validates the category and staff role first rather than leaving members with a button that cannot create a channel.
- 01
post the panel
run
,ticket panel create support none need help? open a private ticketfor a plain panel, or swapnonefor type keys (e.g.billing,account) orallto get one button per ticket type. - 02
member opens
press a button or run
,ticket create billing question.ticket newis the prefix alias. - 03
havoc checks access
the blacklist and the member’s current open-ticket count are checked before a channel is created.
- 04
private channel appears
the opener, configured staff role, and havoc receive access; @everyone is denied.
| command | what it does | needs |
|---|---|---|
| /ticket panel create <name> <types, all, or none> [panel message] | post a named panel, remembered for listing and deletion | manage server |
| /ticket panel list | list every panel posted here | manage server |
| /ticket panel delete <name> | delete a posted panel and its message | manage server |
| /ticket create [reason] | open a ticket without using a panel | anyone |
the prefix create command may contain private details, so havoc deletes it before opening the ticket. if it lacks manage messages in that public channel, creation stops. use /ticket create instead or grant that permission.
claiming and transferring work
in-ticket staff commands are gated by the configured staff role; the server owner, administrators, members with manage server, and the bot owner also count as ticket staff. claiming records who owns the response. another staff member cannot take an active claim unless the claimant transfers it or an administrator forces the change.
| command | what it does | needs |
|---|---|---|
| /ticket claim | claim the open ticket you are in | ticket staff |
| /ticket unclaim | release your claim; an administrator can release another person’s | ticket staff |
| /ticket transfer <member> | hand the claim to another member of the staff team | ticket staff |
| /ticket rename <name> | rename the current ticket channel | ticket staff |
claim and close buttons on the opening message use the same stored ticket record and also survive restarts. claiming does not remove the rest of the staff team from the channel; it marks responsibility so two people do not answer independently.
adding and removing participants
staff can add a member who needs to contribute, such as a team lead or witness. havoc adds a specific channel overwrite and records the participant. removing the participant drops that overwrite.
| command | what it does | needs |
|---|---|---|
| /ticket add <member> | give another member access to this ticket | ticket staff |
| /ticket remove <member> | remove a previously added member’s access | ticket staff |
ticket remove cannot remove the member who opened the ticket. close the ticket to hide it from the opener and every added participant. staff retain access for review.
closing a ticket
- ::ticket close [reason]
- attempts to file a transcript, then deletes the ticket channel and its stored record for good. the opener or ticket staff may close.
,ticket close duplicate requestthere is no separate delete step and no confirmation prompt: closing a ticket removes the channel immediately. configure a transcript channel with ticket logs beforehand if conversations need to be kept.
transcripts
closing automatically attempts to generate a plain-text transcript when a log channel is configured. the file contains message timestamps, author names and ids, text, and attachment filenames; embeds and component-only messages are noted. transcripts include at most the first 500 messages in channel history.
ticket transcript generates one on demand in the ticket. the opener or staff may run it only if they can view the channel and read its history. automatic filing fails closed if the destination no longer exists or is no longer provably staff-only.
| command | what it does | needs |
|---|---|---|
| /ticket transcript | generate the current ticket’s transcript in its channel | opener or ticket staff |
| /ticket logs <channel> | choose the private automatic filing destination | manage server |
| /ticket logs-off | stop filing closing transcripts | manage server |
controlling repeated misuse
the ticket blacklist prevents selected members from opening through both the command and panel button. it does not remove an existing ticket or block the member from havoc as a whole. blacklist commands are available to the configured ticket staff, and havoc refuses to blacklist a member of that staff team.
| command | what it does | needs |
|---|---|---|
| /ticket blacklist | list members blocked from opening tickets | ticket staff |
| /ticket blacklist list | list the same blacklist explicitly | ticket staff |
| /ticket blacklist add <member> | prevent a member from opening new tickets | ticket staff |
| /ticket blacklist remove <member> | allow that member to open tickets again | ticket staff |
use ticket status for a wider operational view: configured category and role, transcript channel, open-ticket limit, open and closed totals, blacklist count, opening message, and current open tickets. if a ticket channel was deleted manually, status cleanup removes its stale record so it no longer counts against the opener’s limit.
