Skip to main content

🎮 Ticket Controls

Staff can manage open tickets using reaction controls on the welcome message without typing any commands.


Available controls

The bot adds three reactions to every welcome message when a ticket opens:

ReactionAction
🔒Lock — remove the opener's ability to send messages
🔓Unlock — restore the opener's ability to send messages
Close — archive and delete the ticket channel

How it works

When a staff member reacts with one of the control emojis:

  1. The bot removes their reaction (to keep the controls clean and reusable)
  2. The bot performs the action
  3. The bot posts a status embed in the channel

This means the controls can be used multiple times — lock, unlock, lock again — without the reactions getting cluttered.


Lock 🔒

Removes the ticket opener's Send Messages permission while keeping View Channel intact. The opener can still read the conversation but cannot type.

🔒 Ticket Locked
Ticket locked by @StaffMember. The opener can no longer send messages.

Use case: The opener is being abusive or the ticket is on hold waiting for information.


Unlock 🔓

Restores the opener's full messaging permissions.

🔓 Ticket Unlocked
Ticket unlocked by @StaffMember. The opener can now send messages again.

Close ❌

Triggers the full close flow: archive → closing embed → 3 s delay → channel deletion.


Who can use controls?

Any user who can see and react in the ticket channel. This is determined by the permission overwrites set when the channel was created:

  • The ticket opener can react but cannot use lock/unlock/close on others (they don't have the manage-channel permissions to act on the reaction for other users — though they can trigger the close of their own ticket via ❌)
  • Support role members and global staff members have full access
note

The bot currently does not check whether the user reacting is actually a staff member before executing a control action. For a stricter setup, you can add a role check inside handleTicketControlReaction in reactionHandler.js.