# Filtro de chat (Veritédoux)

O Veritédoux é o filtro de chat do Verité. Lê cada mensagem que um jogador envia e decide se essa mensagem deve chegar ao resto do servidor. Quando uma mensagem infringe uma regra, o Verité para-a antes que mais alguém a veja e informa o remetente de que a sua mensagem não foi entregue.

O filtro corre automaticamente assim que o Verité está instalado. No chat padrão do Minecraft não há nada a configurar. Se o seu servidor utiliza um plugin que interceta ou reestiliza o chat por conta própria, consulte [Integração de chat personalizado](page:developers/wiring) para que as mensagens continuem a passar pelo filtro.

Esta página explica o que o filtro apanha e como as suas partes principais funcionam. Para as chaves de configuração exatas e as suas predefinições, consulte a [Referência de configuração](page:configuration#chat-filter-veritedoux).

## O que o filtro apanha

Cada mensagem é ordenada num destes resultados:

| Resultado | Significado |
| --- | --- |
| Limpo | A mensagem é permitida e entregue normalmente. |
| Bloqueado | Conteúdo comum que infringe regras. A mensagem é descartada e o remetente vê o aviso de bloqueio. |
| Palavrões | Uso de palavrões, avaliado por idioma e dialeto. Desativado por predefinição para que os servidores que permitem palavrões casuais não sejam afetados. |
| Abuso | Conteúdo destinado a prejudicar ou visar outra pessoa. |
| Automutilação | Conteúdo que pode relacionar-se com suicídio ou automutilação. Tratado com cuidado, não como uma infração passível de punição. Consulte [Conteúdo de automutilação](#self-harm-content). |

Quando uma mensagem é parada, apenas o remetente é notificado. A mensagem simplesmente não é entregue a mais ninguém. O Verité nunca silencia, expulsa ou bane um jogador por conta própria por uma mensagem filtrada. Decidir o que fazer com um jogador sinalizado fica ao critério do seu pessoal e das suas regras de [moderação](page:developers/moderation-enforcement).

O aviso de bloqueio e o aviso de repetição são configuráveis. Consulte `chat.filter.block.message` e `chat.filter.repeat.message` na [Referência de configuração](page:configuration#chat-filter-veritedoux).

## Idiomas suportados

O Verité verifica conteúdo em seis idiomas:

- Inglês
- Espanhol
- Francês
- Português
- Alemão
- Italiano

Cada idioma pode ser ligado ou desligado independentemente, e dentro de cada idioma escolhe que categorias correm: deteção de automutilação, deteção de abuso, deteção de insultos e palavrões. Os palavrões estão desligados por predefinição para todos os idiomas.

O espanhol, o francês e o português também suportam dialetos regionais, por isso os palavrões são avaliados contra a lista de palavras regional correta em vez de uma única lista genérica. O espanhol cobre variedades como Espanha, mexicano, argentino, chileno, colombiano e mais; o francês cobre França e canadiano; o português cobre europeu e brasileiro. Estes alternadores regionais vivem sob cada idioma na configuração.

O Verité determina em que idioma cada parte de uma mensagem está escrita, por isso um insulto é avaliado pelo idioma das palavras à sua volta. Isto importa em servidores de idiomas mistos onde uma única mensagem pode mudar de idioma a meio.

!!! note "Cobertura de idiomas hoje"
    A deteção é mais forte em inglês. Os outros idiomas são suportados e podem ser ativados, mas o inglês recebe a cobertura mais completa.

### Mensagens noutros idiomas

Duas definições especiais decidem o que acontece a texto fora do conjunto suportado:

- `unknown.lang`: uma mensagem escrita num idioma que o Verité reconhece como não suportado.
- `undeterminable`: uma mensagem cujo idioma não pode ser determinado (por exemplo, mensagens muito curtas ou símbolos puros).

Ambas são permitidas por predefinição. Se preferir bloquear tudo o que o filtro não consegue verificar por conteúdo, pode ativar `block.unsupported.languages` na secção avançada. Com ela ligada, as mensagens num idioma que o Verité ainda não suporta são bloqueadas.

## Passar pela evasão

Os jogadores que querem fazer passar conteúdo proibido por um filtro disfarçam-no frequentemente. O Veritédoux normaliza uma mensagem antes da correspondência para que os truques comuns não funcionem. Cada uma destas passagens pode ser alternada na configuração, e todas estão ligadas por predefinição.

| Truque | Como se parece | Como o Verité o trata |
| --- | --- | --- |
| Homóglifos | Letras cirílicas, de largura total ou math-bold que se parecem com as normais | Reconvertidas para letras simples antes da correspondência |
| Entidades | Códigos de caracteres ao estilo HTML a substituir letras | Descodificados para as letras que representam |
| Ofuscação | `e!v!i!l` ou letras espaçadas | Reparadas de volta para a palavra real |
| Segmentação | Palavras coladas sem espaços | Divididas de volta em palavras reais |
| Fingerprinting | Letras trocadas, como trocar duas letras num insulto | Correspondidas por fingerprint de letras |

A passagem de fingerprint de letras só se aplica a palavras de pelo menos seis letras, e afasta-se para palavras que um idioma permite legitimamente, por isso as palavras comuns que por acaso se rearranjam noutra coisa não são apanhadas.

As fontes unicode decorativas são tratadas separadamente. Ligar `keep.chat.readable` bloqueia mensagens escritas maioritariamente em fontes decorativas que renderizam mas tornam o chat difícil de ler. Os emoji não são afetados por esta definição.

## Símbolos e emoji

Algum conteúdo não são palavras de todo: símbolos proibidos, ou emoji dispostos para soletrar algo. O Verité corre uma segunda passagem sobre os símbolos e emoji de uma mensagem, verificando símbolos únicos, símbolos repetidos e combinações de emoji ordenadas ou espelhadas. Isto apanha conteúdo de símbolos que uma verificação baseada em palavras ignoraria. O texto simples fica a cargo das verificações de idioma.

## Deteção de repetição e spam

### Mensagens repetidas

A deteção de repetição impede um jogador de inundar o chat com a mesma mensagem ou quase a mesma. Está desligada por predefinição e é ativada com `block.repeat.messages`.

Quando ativada, o Verité recorda as mensagens recentes de um jogador e compara cada nova mensagem com elas:

- As **repetições exatas** são apanhadas mesmo quando disfarçadas. A comparação ignora maiúsculas, acentos e letras repetidas, por isso `HELLO`, `hello` e `helllo` contam todas como a mesma mensagem.
- As **quase repetições** são apanhadas quando uma nova mensagem é suficientemente semelhante a uma recente, mesmo que não idêntica. O grau de proximidade que conta como correspondência é definido por `block.repeat.similarity.threshold` (um valor de 0 a 1, onde 1 significa idêntico).

Controla quantas mensagens recentes são recordadas (`block.repeat.history.size`) e até que ponto no tempo uma mensagem ainda conta como repetição (`block.repeat.window.ms`). Uma repetição bloqueada mostra o aviso de repetição em vez do aviso de bloqueio comum. Consulte a [Referência de configuração](page:configuration#chat-filter-veritedoux) para cada chave de repetição.

!!! note "Histórico e servidores movimentados"
    Definir tanto o tamanho do histórico como a janela de tempo como ilimitados significa que o histórico recordado de um jogador continua a crescer. Num servidor movimentado, mantenha pelo menos um dos dois limitado.

### Spam e anúncios

A deteção de spam utiliza o tokenizer do Verité para identificar mensagens que se leem como golpes ou anúncios e bloqueá-las antes de os jogadores as verem. Está desligada por predefinição e é ativada com `block.possible.spam`.

Esta verificação é de adesão voluntária porque nenhum detetor de spam é perfeito. Pode falhar um golpe novo, e pode ocasionalmente sinalizar uma mensagem legítima que por acaso soa muito promocional. Quando ativada, utiliza um modelo de golpes dedicado onde disponível, e recorre a uma verificação mais ligeira caso contrário.

## Conteúdo de automutilação

A deteção de automutilação existe para proteger as pessoas, não para as punir. Quando uma mensagem é apanhada como conteúdo de automutilação, o Verité faz duas coisas:

1. A mensagem não é entregue ao resto do servidor.
2. O remetente recebe um aviso de apoio fixo em inglês.

O aviso de apoio informa o remetente de que a sua mensagem não foi enviada, refere que pode reformular e tentar novamente se tiver sido um engano, oferece incentivo não crítico para procurar alguém de confiança ou um serviço de crise local, aconselha a contactar os serviços de emergência se houver risco imediato, e liga um diretório internacional de recursos de crise em findahelpline.com.

!!! warning "Isto é uma funcionalidade de segurança, não uma infração de moderação"
    A automutilação e o abuso são reportados separadamente das infrações comuns às regras precisamente para que possam ser tratados de forma diferente. Desaconselhamos vivamente punir automaticamente um jogador por uma mensagem de automutilação. Trate-a como um sinal de bem-estar, não como uma violação de chat.

!!! note "O aviso de automutilação não pode ser alterado"
    Ao contrário do aviso de bloqueio comum, a mensagem de apoio de automutilação é fixa e não configurável. Isto mantém a orientação de crise precisa e completa. O aviso é sempre entregue em inglês para que a redação permaneça fiável para todos.

A deteção de automutilação é ativada por idioma através de `self.harm.detection`, que está ligada por predefinição para todos os idiomas suportados.

## Configurar o filtro

Todas as definições descritas aqui vivem na secção `chat.filter` do `config.yml`. Todas as chaves verdadeiro ou falso e numéricas aqui podem ser lidas e alteradas a partir do jogo com `/verite config`. Para a lista completa de chaves e predefinições, consulte a [Referência de configuração](page:configuration#chat-filter-veritedoux).

## Para programadores

Se está a construir uma integração, um sistema de chat personalizado ou um Skript que precisa de passar texto pelo filtro, consulte:

- [Integração de chat personalizado](page:developers/wiring) para ligar o filtro a um plugin que trata do chat por conta própria.
- [API para programadores](page:developers/api) para a API pública do filtro.
- [Integração com Skript](page:developers/skript) para a sintaxe do Skript.
