Aplicado a várias fontes e entradas, filtro de texto impede que os usuários vejam linguagem inapropriada e informações pessoalmente identificáveis, como números de telefone. O Roblox automaticamente filtra saídas de texto comuns, como mensagens que passaram por o bate-papo de texto na experiência, mas você é responsável por filtrar qualquer texto exibido que você não tenha cont
Filtrar Cenários
O texto pode ser coletado e/ou exibido para os usuários em uma variedade de cenários, incluindo:
Uma experiência que coleta os entrada de texto do usuário através de TextBox e, um GUI personalizado com botões, como uma interface de teclado/pad ou um modelo de teclado interativ no espaço 3D.
Uma experiência que gera palavras de personagens aleatórios e as exibe para os usuários, pois há uma chance de criar palavras inapropriadas.
Uma experiência que se conecta a um servidor web externo para obter conteúdo que está sendo exibido na experiência. Muitas vezes, você não terá controle sobre o conteúdo do site externo e um terceiro pode editar as informações.
Uma experiência que armazena texto, como nomes de animais de estimação, usando armazenamento de dados, onde o texto armazenado pode incluir palavras inapropriadas que devem ser filtradas ao recuperá-las.
Processo de Filtragem
TextService:FilterStringAsync() filtros no texto na experiência ao levar uma string de texto e o UserId do usuário que criou o texto como entrada. Retorna um objeto TextFilterResult que possui dois métodos adicionais que você pode chamar em diferentes cenários:
- TextFilterResult:GetNonChatStringForBroadcastAsync() para filtrar texto visível para todos os usuários em uma experiência, como para uma caixa de diálogo que permite que um usuário escreva uma mensagem em um sinal que é visível para todos os usuários no servidor.
- TextFilterResult:GetNonChatStringForUserAsync() para exibir texto filtrado para um usuário específico, com base na idade e em outros detalhes.
No contexto da entrada de TextBox, o seguinte exemplo coleta a entrada no evento Class.Toolbar.FocusLost
Filtrando 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
-- RemoteEvent para enviar entrada de texto para o servidor para filtrar
local inputRemoteEvent = ReplicatedStorage:FindFirstChild("InputRemoteEvent")
-- Handler de eventos para perda de foco e entrada sendo 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)
Filtrando entrada de texto - Script do Servidor
local TextService = game:GetService("TextService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Evento Remoto para receber 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
-- Iniciado quando o cliente envia a 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)