Filtrado 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 diversas fuentes y entradas, el filtrado de texto evita que los usuarios vean lenguaje inapropiado e información de identificación personal como números de teléfono. Roblox filtra automáticamente salidas de texto comunes, como mensajes que han pasado por el chat de texto en la experiencia, pero tú eres responsable de filtrar cualquier texto mostrado sobre el que no tienes control explícito.

Escenarios de filtrado

El texto puede ser recopilado y/o mostrado a los usuarios en una variedad de escenarios, incluyendo:

  • Una experiencia que recopila la entrada de texto de los usuarios a través de entradas de TextBox, una GUI personalizada con botones como una interfaz de teclado/pad, o un modelo de teclado interactivo en el espacio 3D.

  • Una experiencia que genera palabras a partir de caracteres aleatorios y las muestra a los usuarios, ya que existe la posibilidad de que cree palabras inapropiadas.

  • Una experiencia que se conecta a un servidor web externo para recuperar contenido que se muestra dentro de 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 las mascotas de los usuarios, utilizando almacenes de datos, donde el texto almacenado puede incluir palabras inapropiadas que deben ser filtradas al recuperarlas.

Proceso de filtrado

TextService:FilterStringAsync() filtra el texto dentro de la experiencia tomando un string 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 de TextBox, 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, primero se filtra 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.

Filtrado de entrada de texto - Script del 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 la entrada de texto al servidor para filtrado
local inputRemoteEvent = ReplicatedStorage:FindFirstChild("InputRemoteEvent")
-- Manejador de eventos para cuando se pierde el foco y se presiona enter
local function onFocusLost(enterPressed, inputObject)
if enterPressed then
print("ENVIADO:", textBox.Text)
if inputRemoteEvent then
inputRemoteEvent:FireServer(textBox.Text)
end
end
end
textBox.FocusLost:Connect(onFocusLost)
Filtrado de entrada de texto - Script del servidor

local TextService = game:GetService("TextService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- RemoteEvent para recibir la entrada de texto del cliente para filtrado
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 generando TextFilterResult:", errorMessage)
end
end
-- Se activa cuando el cliente envía la entrada del 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("FILTRADO:", filteredText)
else
warn("Error filtrando texto!")
end
end
end
end
inputRemoteEvent.OnServerEvent:Connect(onInputReceived)
©2026 Roblox Corporation. Roblox, el logotipo de Roblox y "Powering Imagination" son algunas de nuestras marcas registradas y no registradas en los Estados Unidos y otros países.