-
-
Notifications
You must be signed in to change notification settings - Fork 281
Panels
Panels are public messages users click to open tickets. They are configured under panels in config/config.ts.
On startup, the bot syncs every configured panel. It reuses the previously tracked panel message when possible, so restarting the bot does not keep posting duplicate panels.
panels: {
supportSelect: {
channelId: "141414141414141414",
message: "tickets/open-panel",
content: "Choose the ticket type that fits your issue best.",
opener: { ... }
}
}| Field | Purpose |
|---|---|
channelId |
Channel where the panel message should be posted. |
message |
Template under messages/. |
content |
Optional text added to the panel template. |
opener |
Select menu or button configuration. |
The bot validates that each panel channel exists and is text-based.
An inline select menu appears directly on the panel message.
opener: {
type: "inline-select",
ticketTypes: ["general", "billing", "report"],
placeholder: "Open a ticket"
}This is the best default for servers with several ticket types.
A button opens an ephemeral select menu.
opener: {
type: "button-select",
ticketTypes: ["general", "billing"],
label: "Open Support Ticket",
emoji: "<:ticket:171717171717171717>",
style: "primary",
placeholder: "Choose a ticket type",
disabled: false
}Use this when you want a cleaner public panel with only one button.
Each button opens a specific ticket type.
opener: {
type: "buttons",
buttons: [
{
ticketType: "general",
label: "General Help",
emoji: "<:ticket:171717171717171717>",
style: "primary"
},
{
ticketType: "billing",
label: "Billing Help",
style: "secondary"
}
]
}Buttons are grouped in rows of 5. Discord allows up to 25 buttons per message.
- Select panels can contain up to 25 ticket types.
- Button panels can contain up to 25 buttons.
- Button rows contain up to 5 buttons.
- Users with blocked roles do not see inaccessible ticket types in button-select menus.
Panel templates live under messages/, for example:
message: "tickets/open-panel"The bot resolves that to messages/tickets/open-panel.ts or .js.
Templates can include a panel opener slot:
createPanelOpenerSlot()If the slot exists, Ticket-Bot inserts the select menu or buttons there. If no slot exists, it appends the opener to the first Components V2 container or to the end of the message.
See Custom Messages.