# Referência da integração com Skript

Com o Verité e o Skript ambos instalados, o Verité regista um addon de Skript automaticamente e a sua sintaxe fica disponível sem configuração. Cada elemento delega na mesma superfície pública `teacommontea.api` documentada na [Referência da API para programadores](page:developers/api), por isso um script vê exatamente o que o plugin aplica.

Esta página lista todas as condições, efeitos, expressões, eventos e valores de evento registados, agrupados por tipo, com o padrão realmente registado para cada um. As partes opcionais aparecem em `[parênteses retos]` e as escolhas em `(a|b)`, correspondendo à própria gramática de padrões do Skript. Um `-` inicial num tipo (por exemplo `%-player%`) marca esse argumento como opcional.

Dois temas têm guias dedicados que mostram estes elementos num manipulador de chat funcional:

- Filtrar conteúdo de chat: [Integração de chat personalizado](page:developers/wiring).
- Aplicar silenciamentos, modo lento e congelamento: [Aplicação de moderação personalizada](page:developers/moderation-enforcement).

## Condições

### Silenciado, banido, em vanish, em captcha

Estas são condições de propriedade de jogador, por isso suportam a gramática padrão `is` / `is not` do Skript e alvos plurais.

```vb
%players% (is|are) muted
%players% (is|are) banned by verite
%players% (is|are) vanished in verite
%players% (is|are) in a captcha
```

| Raiz do padrão | Significado | Suportado por |
| --- | --- | --- |
| `muted` | O jogador tem um silenciamento ativo do Verité. Leitura pura, não envia nada. | `VeriteModeration.isMuted` |
| `banned by verite` | O jogador tem um banimento ativo do Verité. | `VeriteModeration.isBanned` |
| `vanished in verite` | O jogador está em vanish através do vanish do pessoal. | `VeriteVanish.isVanished` |
| `in a captcha` | O jogador está atualmente a resolver um desafio de captcha. | `VeriteCaptcha.isActive` |

```vb
on chat:
    if player is in a captcha:
        cancel event
```

### Congelamento de chat e modo lento

```vb
chat is frozen [for %-player%]
%player% is rate limited
%player% is on slowmode
```

`is rate limited` e `is on slowmode` são duas formulações da mesma verificação de modo lento. As três mapeiam para as portas de moderação e enviam ao jogador um aviso como efeito secundário, por isso use-as num manipulador de chat onde pretende parar a mensagem, não meramente para ler o estado. `chat is frozen` mapeia para `VeriteModeration.chatMuteGate`; as formulações de modo lento mapeiam para `VeriteModeration.slowmodeGate`.

```vb
on chat:
    if chat is frozen for player:
        cancel event
    else if player is on slowmode:
        cancel event
```

### Texto bloqueado pelo 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%]
```

Sem um jogador é uma classificação pura que não regista nada, segura para verificar placas, títulos de livros ou renomeações em bigorna. Com `for %player%` também regista o acerto contra esse jogador, correspondendo à filtragem de chat ao vivo. Isto reporta apenas se o texto está bloqueado; use a expressão de resultado do filtro abaixo para distinguir palavrões de automutilação ou abuso. Suportado por `VeriteFilter`. Consulte [Integração de chat personalizado](page:developers/wiring).

### Castigo emitido ou removido

Utilizável dentro do evento `verite punishment` para distinguir uma emissão de uma remoção.

```vb
[the] verite punishment was removed
[the] verite punishment was (not removed|issued)
```

Lê a flag de removido do evento atual. Fora do evento é sempre falso.

## Efeitos

### Emitir um 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]
```

Um timespan torna um banimento ou silenciamento temporário; omiti-lo torna-o permanente. `kick` e `warn` não recebem timespan. `by %player%` define o executor; omitido, o castigo é emitido como consola. O `silently` final define a flag de silêncio para que o castigo não seja difundido. O alvo tem de ser um jogador online, uma vez que o efeito resolve o uuid e o nome a partir dele. Suportado 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 um 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%` regista quem o levantou; omitido, é registado como consola. O alvo tem de estar online. Suportado por `VeriteModeration.unban` / `unmute` / `unwarn`.

### Verificar texto e registar a sinalização

```vb
check %string% for %player%
```

Passa uma mensagem pelo filtro e regista qualquer acerto contra o jogador, exatamente como a filtragem de chat ao vivo faz, sem devolver o veredicto. Este é o companheiro do tipo dispara-e-esquece da condição de bloqueado e da expressão de resultado do filtro. Suportado por `VeriteFilter.check`.

### Emitir um desafio 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 um desafio padrão ou detalhado imediatamente, marcado com um rótulo de origem opcional que regista por que motivo foi aberto. O rótulo predefine-se para um valor genérico quando omitido. Suportado por `VeriteCaptcha.challengeStandard` / `challengeDetailed`.

### Bloqueio do servidor

```vb
begin message lockdown [(with reason|for) %-string%]
end message lockdown
```

Sela o servidor por trás de um bloqueio com um motivo opcional, ou levanta-o. O motivo predefine-se para um rótulo genérico. Suportado por `VeriteLockdown.begin` / `end`. Consulte [Aplicação de moderação personalizada](page:developers/moderation-enforcement).

## Expressões

### Resultado do filtro de uma mensagem

```vb
filter [the] result of %string% [for %-player%]
```

Devolve a classificação do filtro como uma string em minúsculas: `clean`, `block`, `profanity`, `self_harm` ou `abuse`. Esta é a única sintaxe de filtro que preserva a distinção entre conteúdo bloqueado comum e um falante que pode estar em crise ou a ser prejudicado, por isso encaminhe `self_harm` e `abuse` para uma resposta de cuidado em vez de um castigo. Sem um jogador não regista nada; com `for %player%` também regista o acerto. Suportado por `VeriteFilter.check` e `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
```

### Mensagem de bloqueio do filtro

```vb
block message
```

Devolve a mensagem configurada mostrada quando uma mensagem de chat é bloqueada. Suportado por `VeriteFilter.blockMessage`.

### Contagem de sinalizações do filtro

```vb
[get] message flags (for|of) %player%
```

Devolve quantas vezes o filtro sinalizou um jogador. Devolve 0 para um jogador sem registo. Suportado por `VeriteFilter.count`.

### Detalhes do banimento ou silenciamento ativo

```vb
[get] [verite] ban status of %player% [reason:with reason]
[get] [verite] mute status of %player% [reason:with reason]
```

Sem `with reason` a expressão devolve o tempo restante em milissegundos, ou `-1` para um castigo permanente. Com `with reason` devolve o texto do motivo do castigo. Não devolve nada quando não há castigo ativo desse tipo. Suportado 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 um 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%
```

Lê um campo de um valor de castigo do Verité, mais útil dentro do evento `verite punishment`. `type` é o tipo de castigo em minúsculas (`ban`, `mute`, `warning`, `kick`). `target uuid` é o uuid do jogador afetado como string, ou nada para um castigo de âmbito ip. `length` é a duração total em milissegundos, ou `-1` para um castigo permanente. Suportado pelos acessores públicos de `Punishment`.

### Estado de vanish

Uma propriedade booleana definível.

```vb
[the] vanish state of %players%
%players%'s vanish state
```

Ler devolve se o jogador está em vanish. Definir como `true` coloca-o em vanish, `false` retira-o do vanish. Apenas o modo de alteração por definição é suportado. Suportado por `VeriteVanish.isVanished` / `vanish` / `unvanish`.

```vb
set vanish state of player to true
```

### Consultas de nome e uuid conhecidos

```vb
[get] [verite] name of %player%
[get] [verite] uuid of %string%
```

`name of` devolve o último nome de utilizador conhecido que o Verité registou para um jogador. `uuid of` resolve um nome de utilizador para o uuid que o Verité registou por último para ele (como string), o que funciona para nomes offline ou que nunca estiveram online no diretório do Verité. Ambos não devolvem nada quando desconhecidos. Suportado por `VeritePlayerData.nameOf` / `uuidByName`.

### País GeoIP

```vb
[get] country of %string%
```

Devolve o nome do país que o Verité resolve para uma string de ip, ou nada quando o ip não pode ser resolvido, a base de dados está indisponível ou o endereço é privado. Suportado por `VeriteGeoIp.country`.

### Tempo formatado

```vb
[get] fancy time of %number%
```

Formata uma contagem de milissegundos como uma duração legível ao estilo próprio do Verité, correspondendo à formulação que o plugin utiliza para as durações de castigo e os tempos restantes. Suportado por `VeriteFormat.fancyTime`.

## Evento

O Verité regista um evento Bukkit para que os scripts possam reagir a castigos.

```vb
on verite punishment:
```

O evento dispara quando um castigo é emitido e quando um é levantado, perdoado ou expira. Use a condição `verite punishment was removed` / `was issued` para os distinguir, e as expressões de campo de castigo para ler o registo.

```vb
on verite punishment:
    if the verite punishment was issued:
        broadcast "%punishment executor name of event-punishment% punished someone"
```

### Valores de evento

Dentro do evento `verite punishment`, o castigo é exposto como um valor de evento.

| Valor de evento | Tipo | Significado |
| --- | --- | --- |
| `event-punishment` | Verite Punishment | O castigo que foi emitido ou levantado. |

O tipo `Verite Punishment` está registado sob o padrão `(verite ?)?punishments?`, por isso `punishment` e `verite punishment` nomeiam-no ambos. Leia os seus campos com as expressões de campo de castigo acima.
