🎮 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:
| Reaction | Action |
|---|---|
| 🔒 | 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:
- The bot removes their reaction (to keep the controls clean and reusable)
- The bot performs the action
- 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
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.