Filtro de texto

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

Aplicado a varias fuentes y entradas, filtrado de texto impide que los usuarios vean lenguaje inapropiado e información personalmente identificable, como números de teléfono.Roblox filtra automáticamente los resultados de texto comunes como mensajes que han pasado por el chat de texto en experiencia, pero eres responsable de filtrar cualquier texto mostrado que no tengas control explícito .

Filtrar escenarios

El texto se puede recopilar y/o mostrar a los usuarios en una variedad de escenarios, incluyendo:

  • Una experiencia que reúne la entrada de texto de los usuarios a través de TextBox personalizadas, una interfaz de usuario personalizada con botones como una interfaz de teclado/teclado o un modelo de teclado interactivo en el espacio 3D.

  • Una experiencia que genera palabras de caracteres aleatorios y las muestra a los usuarios, ya que hay una probabilidad de que cree palabras inapropiadas.

  • Una experiencia que se conecta a un servidor web externo para recuperar contenido que se muestra en la experiencia.A menudo no tendrás control sobre el contenido del sitio externo y un tercero puede editar la información.

  • Una experiencia que almacena texto como los nombres de mascotas de los usuarios usando almacenamiento de datos, donde el texto almacenado podría incluir palabras inapropiadas que deberían filtrarse al recuperarlos.

Proceso de filtrado

TextService:FilterStringAsync() filtros en el texto de la experiencia toman una cadena de texto y el UserId del usuario que creó el texto como entrada.Devuelve un objeto TextFilterResult que tiene dos métodos adicionales que puedes llamar en diferentes escenarios:

En el contexto de la entrada TextBox de la entrada, el siguiente ejemplo recoge la entrada en el evento FocusLost y la envía al servidor a través de un RemoteEvent.En el servidor, se filtra primero a través de FilterStringAsync() y luego GetNonChatStringForBroadcastAsync() con la intención de que el texto se muestre a todos los usuarios en un objeto del lado del servidor como un SurfaceGui en el mundo 3D.

Filtro de entrada de texto - guión del 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 la entrada de texto al servidor para su filtrado
local inputRemoteEvent = ReplicatedStorage:FindFirstChild("InputRemoteEvent")
-- Manejador de eventos para el enfoque perdido y entrar presionando
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 - Guión del servidor

local TextService = game:GetService("TextService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Evento remoto para recibir la entrada de texto del 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
-- Se desfue cuando el cliente envía la entrada desde el TextBox
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)