Filtro de texto

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Aplicado a várias fontes e entradas, filtragem de texto impede que os usuários vejam linguagem inapropriada e informações pessoalmente identificáveis, como números de telefone.O Roblox filtra automaticamente saídas de texto comuns, como mensagens que passaram por conversa de texto na experiência, mas você é responsável por filtrar qualquer texto exibido que você não tenha controle explícito .

Filtrar cenários

O texto pode ser reunido e/ou exibido aos usuários em uma variedade de cenários, incluindo:

  • Uma experiência que reúne a entrada de texto dos usuários através de TextBox personalizadas, uma GUI personalizada com botões como uma interface de teclado/teclado, ou um modelo de teclado interativo no espaço 3D.

  • Uma experiência que gera palavras de personagens aleatórios e as exibe aos usuários, pois há uma chance de que ela crie palavras inapropriadas.

  • Uma experiência que se conecta a um servidor web externo para obter conteúdo que é exibido na experiência.Muitas vezes você não terá controle sobre o conteúdo do site externo e uma terceira parte pode editar as informações.

  • Uma experiência que armazena texto, como os nomes de animais de estimação de usuários, usando armazenamentos de dados, onde o texto armazenado pode incluir palavras inapropriadas que devem ser filtradas ao recuperá-los.

Processo de filtragem

TextService:FilterStringAsync() filtros em texto na experiência, tomando uma string de texto e o UserId do usuário que criou o texto como entrada.Ele retorna um objeto TextFilterResult que tem dois métodos adicionais que você pode chamar em diferentes cenários:

No contexto da entrada TextBox de entrada, o seguinte exemplo reúne a entrada no evento FocusLost e envia-a para o servidor através de um RemoteEvent.No servidor, é filtrado primeiro através de FilterStringAsync() e depois GetNonChatStringForBroadcastAsync() com a intenção de que o texto será exibido a todos os usuários em um objeto do lado do servidor, como um SurfaceGui no mundo 3D.

Filtro de entrada de texto - script do cliente

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local textBox = script.Parent
textBox.ClearTextOnFocus = false
textBox.PlaceholderText = "..."
textBox.TextXAlignment = Enum.TextXAlignment.Left
textBox.TextScaled = true
-- Evento remoto para enviar entrada de texto ao servidor para filtragem
local inputRemoteEvent = ReplicatedStorage:FindFirstChild("InputRemoteEvent")
-- Manuseador de eventos para foco perdido e entrada pressionada
local function onFocusLost(enterPressed, inputObject)
if enterPressed then
print("SUBMITTED:", textBox.Text)
if inputRemoteEvent then
inputRemoteEvent:FireServer(textBox.Text)
end
end
end
textBox.FocusLost:Connect(onFocusLost)
Filtro de entrada de texto - Script do servidor

local TextService = game:GetService("TextService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Evento remoto para receber a entrada de texto do cliente para filtrar
local inputRemoteEvent = ReplicatedStorage:FindFirstChild("InputRemoteEvent")
local function getFilterResult(text, fromUserId)
local filterResult
local success, errorMessage = pcall(function()
filterResult = TextService:FilterStringAsync(text, fromUserId)
end)
if success then
return filterResult
else
warn("Error generating TextFilterResult:", errorMessage)
end
end
-- Dispedido quando o cliente envia uma entrada da Caixa de Texto
local function onInputReceived(player, text)
if text ~= "" then
local filterResult = getFilterResult(text, player.UserId)
if filterResult then
local success, filteredText = pcall(function()
return filterResult:GetNonChatStringForBroadcastAsync()
end)
if success then
print("FILTERED:", filteredText)
else
warn("Error filtering text!")
end
end
end
end
inputRemoteEvent.OnServerEvent:Connect(onInputReceived)