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 status

the 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.

warningcategory overwrites win

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.

changing configuration commands
commandwhat it doesneeds
/ticket setup <category> <staff role> [opening message]configure the core system in one stepmanage server
/ticket category <category>change where ticket channels are createdmanage server
/ticket staffrole <role>change the team with ticket accessmanage server
/ticket limit <count>set each member’s simultaneous open-ticket limitmanage server
/ticket logs <channel>file closing transcripts in a private channelmanage server
/ticket logs-offstop filing closing transcriptsmanage server
/ticket statusshow settings, counts, and up to twenty open ticketsmanage 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.

  1. 01

    post the panel

    run ,ticket panel create support none need help? open a private ticket for a plain panel, or swap none for type keys (e.g. billing,account) or all to get one button per ticket type.

  2. 02

    member opens

    press a button or run ,ticket create billing question. ticket new is the prefix alias.

  3. 03

    havoc checks access

    the blacklist and the member’s current open-ticket count are checked before a channel is created.

  4. 04

    private channel appears

    the opener, configured staff role, and havoc receive access; @everyone is denied.

posting panels and opening tickets commands
commandwhat it doesneeds
/ticket panel create <name> <types, all, or none> [panel message]post a named panel, remembered for listing and deletionmanage server
/ticket panel listlist every panel posted heremanage server
/ticket panel delete <name>delete a posted panel and its messagemanage server
/ticket create [reason]open a ticket without using a panelanyone
noteprefix reasons are removed first

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.

claiming and transferring work commands
commandwhat it doesneeds
/ticket claimclaim the open ticket you are inticket staff
/ticket unclaimrelease your claim; an administrator can release another person’sticket staff
/ticket transfer <member>hand the claim to another member of the staff teamticket staff
/ticket rename <name>rename the current ticket channelticket 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.

adding and removing participants commands
commandwhat it doesneeds
/ticket add <member>give another member access to this ticketticket staff
/ticket remove <member>remove a previously added member’s accessticket staff
warningthe opener cannot be removed

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 request
dangerclosing is permanent

there 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.

transcripts commands
commandwhat it doesneeds
/ticket transcriptgenerate the current ticket’s transcript in its channelopener or ticket staff
/ticket logs <channel>choose the private automatic filing destinationmanage server
/ticket logs-offstop filing closing transcriptsmanage 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.

controlling repeated misuse commands
commandwhat it doesneeds
/ticket blacklistlist members blocked from opening ticketsticket staff
/ticket blacklist listlist the same blacklist explicitlyticket staff
/ticket blacklist add <member>prevent a member from opening new ticketsticket staff
/ticket blacklist remove <member>allow that member to open tickets againticket 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.