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

# Moderation

> Raise a moderator call (modcall) from in-game.

## modcall

Raises a **moderator call** to notify staff on the dashboard that a player needs assistance. BloxCord automatically attaches the list of players standing near the caller (within 15 studs).

```lua theme={null}
local ok = BloxCord:Invoke("modcall", player, reason)
```

<Warning>
  This method is rate-limited and gated:

  * **10-minute cooldown** per player between successful calls.
  * The `reason` must be **256 characters or fewer**.
  * Modcalls must be **enabled** for your organization, and the caller must not have an active `modcallban` logbook entry.
</Warning>

### Parameters

<ParamField body="player" type="Player" required>
  The player raising the call. Used as the caller and as the center point for the nearby-players scan.
</ParamField>

<ParamField body="reason" type="string" required>
  Why the call is being raised. Maximum 256 characters.
</ParamField>

### Returns

<ResponseField name="success" type="boolean">
  `true` if the call was raised. `false` if the player is still on cooldown, the reason exceeds 256 characters, or the call was otherwise rejected.
</ResponseField>

### Example

```lua theme={null}
local BloxCord = game:WaitForChild("BloxCord")

local function requestHelp(player)
    local ok = BloxCord:Invoke("modcall", player, "Exploiter in the lobby")
    if ok then
        player:SetAttribute("ModcallSent", true)
    else
        warn("Modcall rejected — likely on cooldown.")
    end
end
```

***

## pushCommandLog

Records that a staff member ran an admin command. This is a **local, buffered** call — entries are queued and uploaded with the next server report, so it returns instantly without a network round-trip.

```lua theme={null}
local ok = BloxCord:Invoke("pushCommandLog", actor, target, command, vanity)
```

### Parameters

<ParamField body="actor" type="Player" required>
  The player who ran the command. Its `UserId` and `Name` are recorded.
</ParamField>

<ParamField body="target" type="Player">
  The player the command targeted, if any. Omit for commands with no target.
</ParamField>

<ParamField body="command" type="string" required>
  The command string that was executed.
</ParamField>

<ParamField body="vanity" type="string">
  The vanity related to the admin-level of the user. For example, "SHR Admin", or "Administrator". The dashboard will show this as the moderator's admin level.
</ParamField>

### Returns

<ResponseField name="success" type="boolean">
  Always `true` — the entry is buffered locally and flushed on the next report.
</ResponseField>

### Example

```lua theme={null}
local BloxCord = game:WaitForChild("BloxCord")

BloxCord:Invoke("pushCommandLog", staff, targetPlayer, ":kick BadActor spamming", "Owner")
```
