# Referencia de integración con Skript

Con Verité y Skript instalados a la vez, Verité registra un addon de Skript automáticamente y su sintaxis queda disponible sin ninguna configuración. Cada elemento delega en la misma superficie pública `teacommontea.api` documentada en la [Referencia de la API para desarrolladores](page:developers/api), así que un script ve exactamente lo que el plugin aplica.

Esta página enumera cada condición, efecto, expresión, evento y valor de evento registrados, agrupados por tipo, con el patrón realmente registrado para cada uno. Las partes opcionales aparecen entre `[corchetes]` y las alternativas entre `(a|b)`, coincidiendo con la propia gramática de patrones de Skript. Un `-` inicial en un tipo (por ejemplo `%-player%`) marca ese argumento como opcional.

Dos temas tienen guías dedicadas que muestran estos elementos en un manejador de chat funcional:

- Filtrar el contenido del chat: [Integración de chat personalizado](page:developers/wiring).
- Aplicar mutes, modo lento y congelación: [Aplicación de moderación personalizada](page:developers/moderation-enforcement).

## Condiciones

### Muteado, baneado, en vanish, en captcha

Estas son condiciones de propiedad de jugador, así que admiten la gramática estándar `is` / `is not` de Skript y objetivos en plural.

```vb
%players% (is|are) muted
%players% (is|are) banned by verite
%players% (is|are) vanished in verite
%players% (is|are) in a captcha
```

| Raíz del patrón | Significado | Respaldado por |
| --- | --- | --- |
| `muted` | El jugador tiene un mute activo de Verité. Lectura pura, no envía nada. | `VeriteModeration.isMuted` |
| `banned by verite` | El jugador tiene un baneo activo de Verité. | `VeriteModeration.isBanned` |
| `vanished in verite` | El jugador está en vanish a través del vanish del personal. | `VeriteVanish.isVanished` |
| `in a captcha` | El jugador está resolviendo actualmente un desafío de captcha. | `VeriteCaptcha.isActive` |

```vb
on chat:
    if player is in a captcha:
        cancel event
```

### Congelación de chat y modo lento

```vb
chat is frozen [for %-player%]
%player% is rate limited
%player% is on slowmode
```

`is rate limited` e `is on slowmode` son dos formas de expresar la misma comprobación de modo lento. Las tres se asignan a las puertas de moderación y envían al jugador un aviso como efecto secundario, así que úsalas en un manejador de chat donde tengas intención de detener el mensaje, no solo para leer el estado. `chat is frozen` se asigna a `VeriteModeration.chatMuteGate`; las formas de modo lento se asignan a `VeriteModeration.slowmodeGate`.

```vb
on chat:
    if chat is frozen for player:
        cancel event
    else if player is on slowmode:
        cancel event
```

### Texto bloqueado por el filtro

```vb
%string% (was|is|are) blocked [for %-player%]
%string% (wasn't|was not|isn't|is not|aren't|are not) blocked [for %-player%]
```

Sin un jugador es una clasificación pura que no registra nada, segura para escanear carteles, títulos de libro o renombres de yunque. Con `for %player%` también registra el acierto contra ese jugador, coincidiendo con el filtrado de chat en vivo. Esto solo informa de si el texto está bloqueado; usa la expresión de resultado del filtro de abajo para distinguir la profanidad de la autolesión o el abuso. Respaldado por `VeriteFilter`. Consulta [Integración de chat personalizado](page:developers/wiring).

### Castigo emitido o eliminado

Utilizable dentro del evento `verite punishment` para distinguir una emisión de una eliminación.

```vb
[the] verite punishment was removed
[the] verite punishment was (not removed|issued)
```

Lee la flag de eliminación del evento actual. Fuera del evento siempre es falso.

## Efectos

### Emitir un castigo

```vb
verite ban %player% [for %-timespan%] [(with reason|for) %-string%] [by %-player%] [silent:silently]
verite mute %player% [for %-timespan%] [(with reason|for) %-string%] [by %-player%] [silent:silently]
verite kick %player% [(with reason|for) %-string%] [by %-player%] [silent:silently]
verite warn %player% [(with reason|for) %-string%] [by %-player%] [silent:silently]
```

Un timespan hace que un baneo o mute sea temporal; omitirlo lo hace permanente. Kick y warn no toman timespan. `by %player%` establece el ejecutor; si se omite, el castigo se emite como consola. Un `silently` final establece la flag silenciosa para que el castigo no se difunda. El objetivo debe ser un jugador conectado, ya que el efecto resuelve el uuid y el nombre a partir de él. Respaldado por `VeriteModeration.ban` / `mute` / `kick` / `warn`.

```vb
verite ban player for 7 days with reason "spam" by {_staff} silently
verite warn player for "first offence"
```

### Levantar un castigo

```vb
verite unban %player% [(with reason|for) %-string%] [by %-player%]
verite unmute %player% [(with reason|for) %-string%] [by %-player%]
verite unwarn %player% [(with reason|for) %-string%] [by %-player%]
```

`by %player%` registra quién lo levantó; si se omite, se registra como consola. El objetivo debe estar conectado. Respaldado por `VeriteModeration.unban` / `unmute` / `unwarn`.

### Escanear texto y registrar la marca

```vb
check %string% for %player%
```

Pasa un mensaje por el filtro y registra cualquier acierto contra el jugador, exactamente como lo hace el filtrado de chat en vivo, sin devolver el veredicto. Este es el compañero de disparar y olvidar de la condición blocked y la expresión de resultado del filtro. Respaldado por `VeriteFilter.check`.

### Emitir un desafío de captcha

```vb
challenge %player% with [a] captcha [(with reason|for|from) %-string%]
challenge %player% with [a] detailed captcha [(with reason|for|from) %-string%]
```

Inicia inmediatamente un desafío estándar o detallado, etiquetado con una etiqueta de origen opcional que registra por qué se abrió. La etiqueta toma un valor genérico por defecto cuando se omite. Respaldado por `VeriteCaptcha.challengeStandard` / `challengeDetailed`.

### Bloqueo del servidor

```vb
begin message lockdown [(with reason|for) %-string%]
end message lockdown
```

Sella el servidor tras un bloqueo con un motivo opcional, o lo levanta. El motivo toma por defecto una etiqueta genérica. Respaldado por `VeriteLockdown.begin` / `end`. Consulta [Aplicación de moderación personalizada](page:developers/moderation-enforcement).

## Expresiones

### Resultado del filtro de un mensaje

```vb
filter [the] result of %string% [for %-player%]
```

Devuelve la clasificación del filtro como una cadena en minúsculas: `clean`, `block`, `profanity`, `self_harm` o `abuse`. Esta es la única sintaxis de filtro que preserva la distinción entre contenido bloqueado normal y un hablante que puede estar en crisis o siendo dañado, así que dirige `self_harm` y `abuse` a una respuesta de atención en lugar de a un castigo. Sin un jugador no registra nada; con `for %player%` también registra el acierto. Respaldado por `VeriteFilter.check` y `FilterResult`.

```vb
set {_result} to filter the result of {_msg} for player
if {_result} is "self_harm" or {_result} is "abuse":
    # handle with care, do not punish
    stop
if {_result} is not "clean":
    send block message to player
    stop
```

### Mensaje de bloqueo del filtro

```vb
block message
```

Devuelve el mensaje configurado que se muestra cuando se bloquea un mensaje de chat. Respaldado por `VeriteFilter.blockMessage`.

### Recuento de marcas del filtro

```vb
[get] message flags (for|of) %player%
```

Devuelve cuántas veces el filtro ha marcado a un jugador. Devuelve 0 para un jugador sin registro. Respaldado por `VeriteFilter.count`.

### Detalles de un baneo o mute activo

```vb
[get] [verite] ban status of %player% [reason:with reason]
[get] [verite] mute status of %player% [reason:with reason]
```

Sin `with reason` la expresión devuelve el tiempo restante en milisegundos, o `-1` para un castigo permanente. Con `with reason` devuelve el texto del motivo del castigo. No devuelve nada cuando no hay ningún castigo activo de ese tipo. Respaldado por `VeriteModeration.activeBan` / `activeMute`.

```vb
set {_left} to verite ban status of player
set {_why} to verite ban status of player with reason
```

### Campos de un valor de castigo

```vb
[get] punishment type of %veritepunishment%
[get] punishment reason of %veritepunishment%
[get] punishment target uuid of %veritepunishment%
[get] punishment target ip of %veritepunishment%
[get] punishment executor name of %veritepunishment%
[get] punishment removed by name of %veritepunishment%
[get] punishment removal reason of %veritepunishment%
[get] punishment length of %veritepunishment%
```

Lee un campo de un valor de castigo de Verité, más útil dentro del evento `verite punishment`. `type` es el tipo de castigo en minúsculas (`ban`, `mute`, `warning`, `kick`). `target uuid` es el uuid del jugador afectado como cadena, o nada para un castigo con ámbito de ip. `length` es la duración total en milisegundos, o `-1` para un castigo permanente. Respaldado por los accesores públicos de `Punishment`.

### Estado de vanish

Una propiedad booleana asignable.

```vb
[the] vanish state of %players%
%players%'s vanish state
```

Al leer, devuelve si el jugador está en vanish. Establecer en `true` lo pone en vanish, `false` lo saca. Solo se admite el modo de cambio set. Respaldado por `VeriteVanish.isVanished` / `vanish` / `unvanish`.

```vb
set vanish state of player to true
```

### Consultas de nombre y uuid conocidos

```vb
[get] [verite] name of %player%
[get] [verite] uuid of %string%
```

`name of` devuelve el último nombre de usuario conocido que Verité registró para un jugador. `uuid of` resuelve un nombre de usuario al uuid que Verité registró por última vez para él (como cadena), lo que funciona para nombres desconectados o que nunca se han conectado en el directorio de Verité. Ambos no devuelven nada cuando son desconocidos. Respaldado por `VeritePlayerData.nameOf` / `uuidByName`.

### País de GeoIP

```vb
[get] country of %string%
```

Devuelve el nombre del país que Verité resuelve para una cadena de ip, o nada cuando la ip no se puede resolver, la base de datos no está disponible o la dirección es privada. Respaldado por `VeriteGeoIp.country`.

### Tiempo con formato

```vb
[get] fancy time of %number%
```

Formatea un recuento de milisegundos como una duración legible en el propio estilo de Verité, coincidiendo con la redacción que usa el plugin para las duraciones de castigo y los tiempos restantes. Respaldado por `VeriteFormat.fancyTime`.

## Evento

Verité registra un evento de Bukkit para que los scripts puedan reaccionar ante los castigos.

```vb
on verite punishment:
```

El evento se dispara cuando se emite un castigo y cuando se levanta, indulta o caduca uno. Usa la condición `verite punishment was removed` / `was issued` para distinguir ambos, y las expresiones de campo de castigo para leer el registro.

```vb
on verite punishment:
    if the verite punishment was issued:
        broadcast "%punishment executor name of event-punishment% punished someone"
```

### Valores de evento

Dentro del evento `verite punishment`, el castigo se expone como un valor de evento.

| Valor de evento | Tipo | Significado |
| --- | --- | --- |
| `event-punishment` | Verite Punishment | El castigo que se emitió o se levantó. |

El tipo `Verite Punishment` se registra bajo el patrón `(verite ?)?punishments?`, así que tanto `punishment` como `verite punishment` lo nombran. Lee sus campos con las expresiones de campo de castigo de arriba.
