Skip to content

Commands and Permissions

Mathildeuh edited this page Sep 12, 2026 · 2 revisions

Commands and Permissions

Player commands

The label /ticket and its aliases /support//sos are all configurable via commands.main/commands.aliases - the table below uses the defaults.

Command Effect
/ticket Show your active ticket's id, status, and priority (same as /ticket status)
/ticket <reason> Create a ticket in one step, in the first configured category
/ticket new Open the category/preset creation panel (free text falls back to a chat prompt)
/ticket new <category> Create a ticket directly in that category, with no opening message
/ticket status Same as bare /ticket
/ticket list List every ticket you've ever opened, with its id, category, and status
/ticket close [reason] Close your active ticket; the reason is recorded on the transcript
/ticket cancel Close your active ticket with a generic reason, no text needed

None of these require a permission node by default - anyone can open and manage their own tickets. sosstaff.bypass.antispam lifts the open-ticket cap and post-close cooldown for whoever holds it (see Configuration).

Staff commands

Command Effect Permission
/sostaff panel Open the paginated, filterable admin ticket list sosstaff.admin.panel
/sostaff reload Reload config.yml, every lang/*.yml, and reconnect to Discord if the token changed sosstaff.admin.reload
/sostaff gdpr erase <player> Permanently delete all of a player's tickets and messages sosstaff.admin.gdpr

Clicking a ticket in the admin panel teleports you to its player (if online) and attaches your in-game chat to that ticket - whatever you type next relays into its Discord channel, the same as if you were the reporter, until you attach to a different ticket or disconnect.

Claiming and action-button permissions

Claiming a ticket is a pure Discord action - it records the Discord user who clicked "Claim" and has nothing to do with being online in Minecraft or having a matching username.

Every entry under discord.action-buttons in config.yml defines its own permission node (convention: sosstaff.action.<button-id>). If the clicker's Discord display name matches an online Minecraft player, that permission is checked normally against their account; otherwise the action runs anyway, trusting that anyone with access to the ticket channel (discord.permissions.staff-roles) is allowed to use it - there is no way to check a Bukkit permission for a Discord account with no online session and no account-linking system (see Configuration). The one exception is TELEPORT_TO_PLAYER/TELEPORT_PLAYER_TO_STAFF, which move an actual Minecraft character and so still require an online, name-matched account.

PlaceholderAPI

If PlaceholderAPI is installed, SOS-Staff registers no new permissions of its own but exposes:

Placeholder Value
%sosstaff_active_id% The requesting player's active ticket id, or empty
%sosstaff_active_status% Its status (OPEN, CLAIMED, ...), or empty
%sosstaff_active_priority% Its priority, or empty
%sosstaff_ticket_count% How many tickets the player has in their history

These read from an in-memory cache and never touch the database, so they're safe to use in scoreboards, tab lists, or anywhere else resolved frequently.

Clone this wiki locally