Filtre de texte

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Appliqué à diverses sources et entrées, filtrage de texte empêche les utilisateurs de voir des langues inappropriées et des informations personnalisées telles que des numéros de téléphone. Roblox filtre automatiquement les sorties de texte courantes telles que les messages qui ont passé à travers chat textuel , mais vous êtes responsable du filtrage de tout texte que vous n'avez pas de contrôle explicite sur .

Filtrer les scénarios

Le texte peut être recueilli et/ou affiché aux utilisateurs dans une variété de scénarios, y compris :

  • Une expérience qui rassemble les utilisateurs par le biais de l'entrée de texte de leur via les entrées TextBox, un GUI personnalisé avec des boutons tels qu'une interface clavier/keypad ou un modèle de clavier interactif dans l'espace 3D.

  • Une expérience qui génère des mots à partir de personnages aléatoires et les affiche aux utilisateurs, car il y a une chance qu'il crée des mots inappropriés.

  • Une expérience qui se connecte à un serveur web externe pour obtenir du contenu qui est affiché dans l'expérience. Habituellement, vous n'aurez pas le contrôle sur le contenu du site Web externe et un tiers peut modifier les informations.

  • Une expérience qui stocke le texte, comme les noms de compagnie des utilisateurs, en utilisant des magasins de données, où le texte stocké peut inclure des mots inappropriés qui devraient être filtrés lors de leur récupération.

Processus de filtrage

TextService:FilterStringAsync() les filtres dans le texte d'expérience en prenant une chaîne de texte et le UserId de l'utilisateur qui a créé le texte comme entrée. Il renvoie un objet TextFilterResult qui a deux méthodes supplémentaires que vous pouvez appeler dans différents scénarios :

Dans le contexte de l'entrée de TextBox , le code suivant recueille l'entrée sur l'événement

Filtre d'entrée de texte - Script client

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local textBox = script.Parent
textBox.ClearTextOnFocus = false
textBox.PlaceholderText = "..."
textBox.TextXAlignment = Enum.TextXAlignment.Left
textBox.TextScaled = true
-- RemoteEvent pour envoyer l'entrée de texte sur le serveur pour le filtrage
local inputRemoteEvent = ReplicatedStorage:FindFirstChild("InputRemoteEvent")
-- Détecteur d'événement pour le focus perdu et entrée en jeu
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)
Filtre d'entrée de texte - Server Script

local TextService = game:GetService("TextService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Événement distant à recevoir l'entrée de texte du client pour le filtrage
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
-- Activé lorsque le client soumet l'entrée à partir de la boîte de texte
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)