OnyxBot registers three slash commands on every server it joins: /ticket, /blacklist and /mystats. /ticket carries eleven subcommands and only works inside an open ticket channel. /blacklist controls who is allowed to open tickets. /mystats shows a staff member their own numbers. Turning on the Tebex plugin adds two more, /tebex and /claim.
What can a regular member run?
One thing: /ticket close. OnyxBot replies with a confirmation carrying Close ticket and Cancel buttons. Confirm it and the channel is deleted and a transcript is saved, unless you have set Transcript retention to off on Tickets, then Settings.
The ticket opener can close their own ticket. Set Member close permissions on Tickets, then Settings to Once staff steps in, only staff can close and the opener loses that as soon as a staff member claims the ticket or replies in it. Tickets still handled only by the AI stay opener-closable either way.
Every other subcommand refuses a non-staff member.
Which slash commands are staff only?
The /ticket subcommands run inside the ticket channel. /blacklist and /mystats run anywhere in your server.
| Command | What it does |
|---|---|
| /ticket claim | Assigns the ticket to you. Fails if someone else already claimed it. |
| /ticket unclaim | Drops the claim. The claimer can always do this, anyone else has to be staff. |
| /ticket priority | Sets Low, Normal, High or Urgent. |
| /ticket add-user | Adds a member to the ticket. |
| /ticket remove-user | Removes a member from the ticket. |
| /ticket move | Opens a Move this ticket to⦠picker of your other enabled categories. Refuses if there is no other enabled category. |
| /ticket pin | Keeps the ticket around: it sorts to the top of its Discord category, takes a π on its name, and stops auto-closing. |
| /ticket unpin | Releases the pin. The π comes off and the inactivity timers start again from that moment. |
| /ticket summarize | An AI catch-up on the whole ticket: the issue, what has happened, where it stands, open questions and a suggested next step, each point linked to the message it comes from. Billed as AI usage, on every plan. |
| /ticket draft | The next reply, written by the AI in your own voice (learned from your past replies on this server) and grounded in your knowledge base. Only you see it, with Send as me, Edit and send and Regenerate; sending posts it from the bot with a "Sent by" line naming you. Pro, switched on under Tickets, then Settings. The same draft is one click away on every escalation briefing. |
| /blacklist add | Blocks a member from opening tickets, with an optional staff-visible reason. Their existing open tickets are not affected. |
| /blacklist remove | Lets a blocked member open tickets again. |
| /blacklist list | Shows who is blocked. Lists the first 25 names, then a count of any beyond that. |
| /mystats | Your own tickets closed, replies, median first reply and median time to close for the last 24 hours, the last 7 days and this calendar month. Adds your pay so far this month when pay rules are set. Paid plan only. |
Every reply above is ephemeral. Only the person who ran the command sees it.
What does pinning a ticket do?
Three things at once, and /ticket unpin undoes all three:
- The channel moves. It sorts to the top of its Discord category, so the ticket your team is holding open is the first one they see.
- The channel is marked. A π goes on the front of the channel name.
- The clocks stop. A pinned ticket is skipped by the inactivity reminder, by auto-close, and by the staff attention alert, so a ticket you are deliberately keeping open is never chased and never closed out from under you. Unpinning restarts both clocks from that moment, not from the last message.
Two Discord limits are worth knowing. Reordering a channel needs the server-level Manage Channels permission, and many servers grant OnyxBot that on the ticket category alone: the pin still applies and the π and the exemption still work, the channel simply stays where it is, and the reply says so. And Discord allows two channel renames per ten minutes, so if the channel was renamed twice recently, by a /ticket move for instance, the π can take a few minutes to show up. The pin itself is in effect the moment the command returns.
A ticket that opened as a thread takes the marker and the exemption too, but threads have no position in a category, so nothing moves. The notice OnyxBot posts in the ticket when you pin it is yours to rewrite on the Messages page.
What does /ticket summarize show?
A catch-up on the whole ticket, for a staff member who has not been following it. Only you see it: the member never does, and it is not added to the transcript.
- The facts come from the ticket, not the AI. Who opened it and when, who claimed it, its priority, how many messages it has, who wrote last and how long it has waited on staff are read straight from the ticket.
- The AI reads the whole ticket. Every message, any answers from the form that opened it, and every claim, move and priority change. From that it writes the issue, what has happened, where it stands, any open questions and a suggested next step.
- Every point shows its source. Each one carries the time of the message it is based on and a link that jumps to it, so checking a point takes one click. A point the AI cannot tie to a real message is dropped, and an ID, error code or order number is shown only when it appears in the ticket word for word.
- It is written in the ticket's language. The summary uses the language the member and staff wrote in most, even when the ticket started in another one.
Your server's chat model writes it, the one chosen under Chat model on the Configuration page, or the default model on the Free plan. It works on every plan and is billed as AI usage like any other AI reply, with its cost listed on the Usage page. Ask again before anything in the ticket has changed and, for a few hours, you get the same summary back at no charge, marked with when it was made. If the server is out of AI usage, OnyxBot says so instead and nothing is charged.
What does /ticket draft do?
It writes the reply you were about to write. The AI reads the ticket (the intake answers, the summary so far and the latest messages), searches your knowledge base for the member's question, and drafts the next reply in your voice. Your voice comes from the replies you have already sent in tickets on this server: your greeting and sign-off habits, how casual you are, your punctuation, emoji, favourite phrases and language. The draft copies how you write, never what you wrote before, and it needs about five past replies before it can; until then the card says it is using a neutral voice.
The card is ephemeral and carries three buttons. Send as me posts the draft in the ticket from your server's bot, with a "Sent by" line naming you. Edit and send opens it in a text box first. Regenerate tries again. A draft waits fifteen minutes for a decision, then expires. Whatever you send counts as your message everywhere, including the transcript and staff pay, and takes the ticket over from the AI exactly as typing a reply would.
Pro only, billed as AI usage on your chat model, and listed on the Usage page under Staff drafts. See how the AI works inside tickets for the full picture.
Do plugins add commands?
The Tebex plugin, which needs Pro, adds /tebex for staff with the subcommands lookup, customer, checkout, note, claim-transfer and status, plus the coupon, giftcard and payment groups. It also adds /claim, the member verb for claiming a purchase with a transaction id. /claim and /tebex claim-transfer ship turned off. Switch them on under Plugins, then Tebex, then Commands.
Who counts as staff?
For the /ticket subcommands, staff means anyone with Discord's Manage Server permission, anyone with a guild-wide staff role set on Tickets, then Settings, or anyone with a staff role on that ticket's category. /blacklist is narrower: it takes Manage Server or a guild-wide staff role only, not a category staff role. /mystats accepts a staff role on any category.
Discord's command picker does not hide /ticket or /blacklist from regular members. OnyxBot checks permission when the command runs, not when it is listed, so a member can type a staff subcommand and simply be told no.