> ## Documentation Index
> Fetch the complete documentation index at: https://fxscripts.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Commands

> Every built-in command, with parameters and access.

All commands use `lib.addCommand` from `ox_lib` — typed parameters, live
hints as you type.

## Roleplay

| Command             | Description             | Access   | Range |
| ------------------- | ----------------------- | -------- | ----- |
| `/me <action>`      | Character action        | Everyone | 15 m  |
| `/do <observation>` | Environment description | Everyone | 15 m  |
| `/ooc <message>`    | Out of character        | Everyone | 10 m  |

```text theme={null}
/me reaches into his coat pocket
/do The pocket is wet from the rain
/ooc brb 2 min
```

## Private messaging

| Command              | Description            | Access   |
| -------------------- | ---------------------- | -------- |
| `/pm <id> <message>` | Send a private message | Everyone |
| `/reply <message>`   | Reply to your last PM  | Everyone |

The recipient sees your name + identifier, and the sender ID is tracked
so `/reply` works without re-typing the ID.

## Public broadcasts

| Command                   | Description              | Access           |
| ------------------------- | ------------------------ | ---------------- |
| `/announcement <message>` | Server-wide announcement | `group.admin`    |
| `/lspd <message>`         | Police broadcast         | Job: `police`    |
| `/ems <message>`          | EMS broadcast            | Job: `ambulance` |

Job-restricted commands are styled differently — colored label, badge
icon. Configure colors in your active theme.

## Chat management

| Command         | Description                  | Access        |
| --------------- | ---------------------------- | ------------- |
| `/cls`          | Clear your own chat          | Everyone      |
| `/clear`        | Clear chat for everyone      | `group.admin` |
| `/chatadmin`    | Open the in-game admin panel | `group.admin` |
| `/reloadthemes` | Hot-reload theme files       | Admin         |

## Disabling a command

In `configs/commands.lua`:

```lua theme={null}
Commands = {
    ooc = { enabled = false },
}
```

Then `restart fxChat`.

## Permissions

* **Group** — `group = 'admin'` checks `IsPlayerAceAllowed(src, 'group.<name>')`
* **Job** — `job = 'police'` checks the player's framework job

You can mix both. Example for moderator-only:
`{ enabled = true, group = 'mod' }`.

## Adding your own command

`lib.addCommand` works as expected — drop your file under
`src/handlers/custom/commands.lua`:

```lua theme={null}
lib.addCommand('greet', {
    help = 'Greet a player by ID',
    params = {
        { name = 'id', type = 'playerId', help = 'Target' }
    }
}, function(source, args)
    exports.fxChat:addMessage(args.id, {
        args = ('Hello from #%d!'):format(source),
        title = 'Greeter',
        color = '#ec4899',
    })
end)
```

Full export reference at [Server exports](/docs/fxchat/exports/server).
