Guide
Set up your support panel, configure AI behavior, and understand how DMs and staff handoff work.
DM-First
AI replies in private DMs when it has enough knowledge.
Smart Handoff
If AI can’t answer, a private support channel is created automatically.
Per-Guild Control
Language, tone, categories, roles, and embed texts from your dashboard.
New here? Start with /setup in the channel where you want the panel. If you later want it in a different channel, delete the old panel message and run /setup again in the new channel.
Important: TicketlyAI is powered by AI models. We cannot guarantee that every answer, ticket summary or automatic category choice is always correct, but the system is tuned to be as stable and predictable as possible.
Post the Support Panel
- Invite the bot from your Licenses page.
- Go to the target text channel and run /setup
- That’s it members can now click the button and describe their issue.
Move it later: If you want the panel in another channel, delete the old panel message and run /setup in the new channel.
How Replies & Handoff Work
When AI can answer
- The user submits their issue via your panel’s modal.
- AI checks your Knowledge Base + recent News (ingested channels).
- If answerable, the bot responds in the user’s DM.
- A 30-minute DM session starts for follow-ups.
When AI can’t answer
- The bot creates a private support channel on your server.
- It mentions the configured staff roles and the user.
- Staff can close the channel with the provided button.
Language settings: DM replies vs ticket summaries
- AI language (DM replies)
This controls which language the bot uses when replying in DMs:auto– the bot tries to detect the user’s language from what they write and replies in that language for the current DM session.- Specific code (e.g.
en,da,de…) the bot always replies in that language, even if the user writes in something else. - Because
autodepends on AI language detection, it can sometimes be a bit buggy for very short or mixed-language messages.
- Summary language & Command reply
This controls the language used for the staff-facing ticket summaries inside the ticket embedand all built-in slash command replies in the server:- You choose a fixed language (e.g.
en,da,de…) in the Dashboard setting called Summary language & Command reply. - There is no auto option for this setting – summaries and command replies are always written in the specific language you selected.
- Slash commands like /ticket_summary, /ticket_user and /setup use this language for their success/error messages and prompts.
- This makes it easier for staff teams to read both summaries and command responses consistently, even if users ask questions in many different languages.
- You choose a fixed language (e.g.
Automatic ticket summary
- Every time a ticket channel is created, TicketlyAI fills a Summary field in the ticket embed (label can be changed via
summaryEmbedTitlein your Dashboard). - If the ticket was created directly from the panel, the summary is based on the user’s original issue text.
- If the ticket was created from DMs, the bot summarises the entire DM session (user questions + AI replies) before staff handoff.
- The language for staff summaries is controlled by your Summary language & Command reply setting in the Dashboard.
- Staff can also manually generate or refresh a summary inside an existing ticket channel by running /ticket_summary. Only staff roles linked to that ticket category (via Categories & roles) can use the command, and the summary is written in your configured Summary language & Command reply.
Session window: DM follow-ups work for 30 minutes after the first AI reply. After it expires, users must start again from the panel.
Categories & roles (auto-routing)
When AI cannot fully answer, the bot chooses the best-matching category from your dashboard settings, names the new channel after that category, and mentions the roles linked to it.
How matching works
- AI reads the user’s text (and DM transcript if applicable) to extract the intent.
- It compares the intent to your Categories list (names + internal descriptions you defined).
- The highest-scoring category becomes the channel name (sanitized for Discord rules).
- The category’s role IDs are added as channel permission overwrites and pinged once.
- If a chosen category has no roles, the bot uses your Global default staff role IDs.
How to configure
- Open Dashboard → Categories & roles.
- Add a category name (e.g., Whitelist, Donation, Bug report, Ban appeal).
- Optionally fill in the Description (for AI) field. This is not shown to users – it only tells the model what kind of questions belong in this category (e.g. “payment issues about donations and ranks”). Good descriptions make auto-routing more accurate.
- Attach role IDs to each category (comma separated).
- Optionally set Global default staff role IDs (used if a category has no roles).
- Click Save. Routing updates immediately.
Tip: Use thematic names like “Payment”, “Whitelist”, or “Tech support” and describe them clearly. It improves matching for messages like “I donated but didn’t get my rank” or “Can’t join whitelist”.
Note: Automatic categories are AI-based. They are usually accurate, but we still cannot guarantee that every ticket is routed perfectly every time.
Settings Reference
These values are controlled in your Dashboard and affect the panel, DM language, tone, and staff handoff.
| Setting | Description | Example / Current |
|---|---|---|
guildId | Discord guild ID linked to the license. | 1419713976442425406 |
ticketCategoryId | Discord category ID where support channels are created. | 123456789012345678 |
aiLanguage | DM replies. auto = try to match the user’s language automatically for the current DM session; set a specific language code (e.g. en, da) to force all DM replies into that language. Because auto relies on AI language detection, it can sometimes be slightly inaccurate for very short or mixed messages. | auto |
warnAfterHours | Hours before an inactivity warning is sent in the ticket. | 8 |
autoCloseAfterHours | Hours before an inactive ticket is closed automatically. | 48 |
warnAfterMessage | Message sent before auto-close. | No activity detected. This ticket will be closed soon unless you respond. |
tone | AI persona/style. | professional |
embedTitle | Panel title. | TicketlyAI - Need help? |
embedDescription | Panel subtitle/instructions. | Click the button to describe your issue. |
embedColor | Hex color for the panel embed. | #5865F2 |
embedButtonText | Panel button label. | Open ticket |
Button color | Hex color for the panel button. In the Dashboard you choose it with a color picker (RGB). TicketlyAI stores the hex value (e.g. #ff0000) and automatically maps it to the closest Discord button style: blue≈Primary, grey≈Secondary, green≈Success, red≈Danger. This affects both the main panel button and the close button inside tickets. | #5865F2 (or your chosen color) |
modalTitle | Title of the “create ticket” modal. | Create a ticket |
modalPlaceholder | Help text shown above the modal input. | Describe your issue… |
closeButtonText | Button label to close a ticket. | Close ticket |
confirmCloseMessage | Confirmation text when closing. | Are you sure you want to close this ticket? |
confirmCloseButtonText | Text on the confirm button. | Are you sure? |
categories | Named categories, each with a name, optional internal description and role IDs. The description is only for AI routing (not shown to users); role IDs control which staff are pinged and can see the ticket. | Configure in Dashboard → Categories & roles. |
staffRoleIds | Global fallback: role IDs that are pinged if a chosen category has no roles of its own. | 123456789012345678, 987654321098765432 |
ticketEmbedTitle | Title used inside the newly created ticket channel embed. | Support channel created |
ticketEmbedDescription | Subtitle/message inside the support ticket embed. | Describe your issue. Staff will reply shortly. |
ticketEmbedColor | Hex color for embeds sent inside the ticket channel. | #5865F2 |
summaryEmbedTitle | Label/title used for summary field when TicketlyAI generates a ticket summary. | Summary |
summaryLanguage | Language used for staff-facing ticket summaries inside the ticket embed, and for all built-in slash command replies in the server (e.g. /ticket_summary, /ticket_user, /setup). This corresponds to the Dashboard setting Summary language & Command reply and is always a fixed language that you choose (there is no auto option here). DM replies still follow aiLanguage. | en (or the language you selected) |
Knowledge Base and live news channels are managed on the Knowledge page.
Knowledge & News
- Knowledge Base: Store your long-form documentation per license.
- News Ingestion: Add channel IDs to ingest. The bot uses recent posts as context for DM answers.
- AI replies only from your Knowledge + ingested News. If that’s not enough, it escalates to staff.
Tip: Keep “how to” posts and policy changes in your selected news channels to make AI answers current.
How news ingestion behaves:
• New messages from your selected channels can take up to 2 minutes before they appear on the Knowledge page as snippets.
• Timestamps on the Knowledge page are based on the original Discord message time and shown in timezone (
• If a message is deleted in Discord, TicketlyAI automatically removes the matching snippet from your stored news so old/invalid content doesn't linger.
• New messages from your selected channels can take up to 2 minutes before they appear on the Knowledge page as snippets.
• Timestamps on the Knowledge page are based on the original Discord message time and shown in timezone (
Europe/Copenhagen).• If a message is deleted in Discord, TicketlyAI automatically removes the matching snippet from your stored news so old/invalid content doesn't linger.
Transcripts & history
- When a ticket channel is closed, TicketlyAI stores the full conversation as a transcript under the license.
- License owners can review all transcripts for a given guild from the Licenses → transcripts link.
- Individual users can browse and manage their own transcripts on the my transcripts page.
- Transcripts are searchable by message text, channel, Discord IDs and date so you can quickly revisit past cases.
Custom bot (name & avatar)
With the Custom plan you get your own branded bot (name + logo), powered by TicketlyAI. This is not your own Discord developer application it is created and managed by TicketlyAI.
How custom bots work
- Purchase the Custom plan from the main website.
- Set the bot name (e.g. YourServer Support) and upload a logo/avatar. Do not leave the site while choosing the name and logo.
- Go to your Licenses page your custom license will have extra options for bot name and icon.
- TicketlyAI uses its own Discord developer profile to create and host the bot for you.
- You invite the bot to your server using the invite link shown on the license page.
Important: we do not use your token
- You never paste a token anywhere on the website.
- The bot is created under the TicketlyAI developer account, with tokens that we generate and manage internally.
- We do not store or use any third-party bot tokens from customers.
- This keeps the setup simple and avoids the risk of leaking your own developer credentials.
You still get your own branding (name + avatar) and per-guild settings, but the technical hosting and tokens are fully handled by TicketlyAI.
Commands
| Command | Scope | What it does |
|---|---|---|
| /setup | Server | Posts the support panel in the current channel (one panel per guild). If you want to move it, delete the old panel message and run /setup again in the new channel. |
| /ticket_summary | Ticket channel | Lets staff generate an AI summary of the current ticket (ticket embed + messages). Only staff roles linked to that category (via Categories & roles) can use it, and the summary is written in your configured Summary language & Command reply. |
| /ticket_user | Ticket channel | Lets staff add or remove extra users from an existing ticket channel (subcommands /ticket_user add and /ticket_user remove). Only staff for that ticket’s category (or members with channel management permissions) can use it. All replies from this command follow your Summary language & Command reply setting. |
| ticket | DM (during session) | Creates a private support channel on your server if your 30-minute DM session is active. |
| stop | DM | Immediately ends your current DM support session so you can start a new one from the server panel. |
Next steps
- Post your panel with /setup.
- Configure Settings (language, tone, categories, roles, ticket category, button color).
- Add live sources for News ingestion to keep AI answers fresh.