Metin filtreleme

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Çeşitli kaynaklara ve girişlere uygulanan metin filtreleme , kullanıcıların uygunsuz dil ve telefon numaraları gibi kişisel olarak tanımlanabilir bilgileri görmesini engeller.Roblox otomatik olarak deneyim içi metin sohbeti aracılığıyla geçen ortak metin çıktılarını filtreler, ancak açık bir şekilde kontrolünüzün olmadığı herhangi bir gösterilen metni filtre etmekten sorumlusunuz .

Senaryoları filtrele

Metin çeşitli senaryolarda toplanabilir ve/veya kullanıcılara gösterilebilir, şunlar da dahil:

  • Kullanıcıların metin girişini üzerinden toplayan bir deneyim, bir klavye/keypad arayüzü gibi özel bir GUI veya 3B alanda etkileşimli bir klavye modeli.

  • Rastgele karakterlerden kelimeler oluşturan ve kullanıcılara gösteren bir deneyim, uygunsuz kelimeler oluşturma olasılığı olduğundan.

  • Deneyim, deneyimde gösterilen içeriği almak için dış bir web sunucusuna bağlanan bir deneyim.Genellikle dış site içeriğine kontrol sahibi olmayacaksınız ve üçüncü bir taraf bilgileri düzenleyebilir.

  • Kullanıcıların evcil hayvan isimleri gibi metinleri depolayan bir deneyim, veri depoları kullanarak, depolanan metin, onları alırken filtrelenmesi gereken uygunsuz kelimeler içerebilir.

Filtreleme süreci

TextService:FilterStringAsync() deneyim içi metni bir dize metin ve metni oluşturan kullanıcının UserId adresini alarak filtreler.Farklı senaryolarda çağırabileceğiniz iki ek yönteme sahip bir TextFilterResult nesnesi döndürür:

TextBox girişinin konteksinde, aşağıdaki örnek FocusLost etkinliğine giriş toplar ve bunu bir RemoteEvent aracılığıyla sunucuya gönderir.Sunucuda, önce FilterStringAsync() aracılığıyla filtrelenir ve ardından GetNonChatStringForBroadcastAsync() 3D dünyadaki bir sunucu tarafı nesnesi gibi tüm kullanıcılara gösterilmek üzere SurfaceGui ile filtrelenir.

Metin giriş filtreleme - müşteri kodu

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local textBox = script.Parent
textBox.ClearTextOnFocus = false
textBox.PlaceholderText = "..."
textBox.TextXAlignment = Enum.TextXAlignment.Left
textBox.TextScaled = true
-- Metin girişini filtrelemek için sunucuya göndermek için Uzak Etkinlik RemoteEvent to send text input to server for filtering
local inputRemoteEvent = ReplicatedStorage:FindFirstChild("InputRemoteEvent")
-- Odak kaybı için etkinlik işleyicisi ve basılırken girilir
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)
Metin Girişi Filtreleme - Sunucu Kodu

local TextService = game:GetService("TextService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Filtreleme için müşteriden metin girişi almak için RemoteEvent
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
-- Müşteri TextBox'tan giriş gönderdiğinde ateş edildi
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)