Tickets
A private support channel per member, opened from a button, answered by whoever is actually on duty.
What it does
You post one panel in a public channel. A member clicks its button and Cyndrix opens a private channel that only they and your support roles can see. Every message is saved as a transcript you can read back in the dashboard long after the channel is gone.
It replaces "DM a mod and hope they're awake": every request lands in one place, any available staff member can pick it up, and nothing is lost in someone's inbox.
After close, the opener is asked for an optional 1โ5 star rating. They can tap Skip โ Cyndrix will not ask again, and a skip is not counted against your average.
On-duty pings
Pinging @Support at 4am wakes everyone who happens to have the role. Set Staff ping to On-duty staff and each support role gets a partner duty role instead โ @Tech pairs with @on duty Tech, @CS with @on duty CS โ so a new ticket mentions only the people actually around.
A ticket option listing two support roles pings both duty roles. Two options sharing a support role share its duty role, so this grows on its own as you add teams.
It follows Discord status by itself. Online, idle or do-not-disturb puts a staff member on duty; going offline or invisible takes them off, usually within a minute. Nobody has to remember to clock in.
For "online but not taking tickets", publish the duty board to a staff channel from Dashboard โ Tickets โ Duty. It shows a live head count per team, flags any team with nobody on it, and gives staff an Available / Not taking tickets switch. Prefer clocking on by hand? Turn off Follow Discord status and the board becomes one button per team.
Nobody on duty is never silence. That ticket falls back to pinging the whole support role, and the welcome message says why.
Running your own bot on Nexus? Automatic on-duty needs the Presence Intent switched on for your application โ Discord Developer Portal โ your app โ Bot โ Presence Intent. Your bot picks the change up on its own within about ten minutes; there is nothing to restart. Until then everything else works and staff clock on from the board by hand.
Closing a ticket
Closing no longer destroys the channel. Staff pick one of two:
- Close (remove user) โ the normal path. The opener keeps access for a few minutes so they can actually answer the rating, then loses access. The channel is renamed
closed-โฆ, moved to an archive category, and staff get a message with Delete channel and Reopen buttons. Reopen puts the member straight back in. - Close & delete โ the old behaviour, for spam and duplicates. The channel goes in a few seconds and no rating is asked, because nobody could answer one in time.
Members closing their own ticket always take the first path, and so does /supportclose unless you pass delete:true.
Archived channels are deleted automatically after 7 days โ change or disable that in Setup. Worth knowing before you set it to never: Discord caps a server at 500 channels, and at that ceiling no new ticket can be opened at all. The transcript is kept in the dashboard either way, so the channel is only a convenience.
Setup
- Dashboard โ Tickets โ enable.
- Pick the panel channel (where the button lives โ somewhere everyone can see, like #support) and the category new ticket channels are created under.
- Add your support roles. Only these roles โ plus the member who opened it โ can see a ticket.
- Write the panel title, description, button label, emoji and colour, then publish it.
- Set max open tickets per user so one person can't spawn twenty channels.
- Under Close & archive, choose how long the opener keeps access after a close and how long archived channels are kept.
- For on-duty pings: the Duty tab โ Create missing duty roles โ pick a staff channel โ Publish Duty Board.
Move the panel later and the old message stops working โ republish rather than copying it by hand.
Good habits
- Put the category somewhere staff-only. The channels are permission-locked, but a private category keeps the sidebar tidy for everyone else.
- Say what you need in the panel description. "Include your username, the server, and what you already tried" saves an entire round trip.
- Close, don't delete by hand. Closing keeps the transcript and the channel; deleting it yourself in Discord throws the conversation away. Staff can run
/supportcloseor/ticket(rename, priority, notes, snippets, block) inside the ticket. - Ratings are optional. Members can Skip. Duplicate / Won't-fix closes skip the prompt by default.
- Keep Cyndrix's role above the duty roles. It creates them at the bottom of the role list so it can hand them out โ move its own role down and it can't.
- Leave archive retention on. "Never" is the setting that quietly fills a server's 500-channel budget.
What members see
๐ No one is on duty for CS right now, so the whole team was pinged.
Commands 4
Generated from the bot's source โ this list is always what is actually deployed.
Add a member to this ticket channel
userrequiredThe member to add to this ticketRemove a member from this ticket channel
userrequiredThe member to remove from this ticketClose this ticket
statusoptionalResolved or unresolved (defaults to unresolved)reasonoptionalOptional close reasondeleteoptionalDelete the channel instead of archiving it (skips the rating prompt)Ticket staff tools
/ticket renamesubcommandRename this ticket channel/ticket prioritysubcommandSet this ticket's priority/ticket notesubcommandAdd an internal staff note/ticket snippetsubcommandPost a canned reply/ticket blocksubcommandBlock a member from opening tickets/ticket unblocksubcommandAllow a member to open tickets again