การกรองข้อความ

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

ใช้กับแหล่งและการป้อนข้อมูลต่างๆ การกรองข้อความ ป้องกันไม่ให้ผู้ใช้เห็นภาษาที่ไม่เหมาะสมและข้อมูลที่ระบุตัวตนได้ เช่น หมายเลขโทรศัพท์Roblox จะกรองข้อความทั่วไปอัตโนมัติเช่นข้อความที่ผ่านมาผ่าน ในการแชทข้อความในประสบการณ์ แต่ คุณมีความรับผิดชอบในการกรองข้อความใดๆ ที่คุณไม่มีการควบคุมโดยเฉพาะ

กรองสถานการณ์

ข้อความสามารถรวบรวมและ/หรือแสดงให้กับผู้ใช้ในหลากหลายสถานการณ์ รวมถึง:

  • ประสบการณ์ที่รวบรวมการใส่ข้อความของผู้ใช้ ผ่านการเข้าสู่ระบบ รายการ, GUI ที่กำหนดเองพร้อมปุ่มเช่นแป้นพิมพ์/แป้นพิมพ์หรือแบบรูปแบบแป้นพิมพ์โต้ตอบในพื้นที่ 3D หรือแบบรูปแบบแป้นพิมพ์โต้ตอบในพื้นที่ 3D

  • ประสบการณ์ที่สร้างคําจากตัวละครสุ่มและแสดงให้กับผู้ใช้เนื่องจากมีโอกาสที่จะสร้างคําที่ไม่เหมาะสม

  • ประสบการณ์ที่เชื่อมต่อกับเซิร์ฟเวอร์เว็บภายนอกเพื่อดึงเนื้อหาที่แสดงในประสบการณ์มักจะไม่มีการควบคุมเนื้อหาของไซต์ภายนอกและบุคคลที่สามสามารถแก้ไขข้อมูลได้

  • ประสบการณ์ที่เก็บข้อความเช่นชื่อสัตว์เลี้ยงของผู้ใช้โดยใช้ ร้านข้อมูล ซึ่งข้อความที่บันทึกอาจมีคำที่ไม่เหมาะสมที่ควรถูกกรองเมื่อดึงมันออกมา

กระบวนการการกรอง

TextService:FilterStringAsync() กรองข้อความในประสบการณ์โดยใช้สตริงข้อความและ UserId ของผู้ใช้ที่สร้างข้อความเป็นอินพุตมันส่งคืนวัตถุ TextFilterResult ที่มีวิธีเพิ่มเติมสองวิธีที่คุณสามารถโทรได้ในสถานการณ์ที่แตกต่างกัน:

  • TextFilterResult:GetNonChatStringForBroadcastAsync() สำหรับการกรองข้อความที่มองเห็นได้สำหรับผู้ใช้ทุกคนในประสบการณ์ เช่นสำหรับกล่องโต้ตอบที่ให้ผู้ใช้เขียนข้อความบนป้ายที่มองเห็นได้สำหรับผู้ใช้ทุกคนบนเซิร์ฟเวอร์
  • TextFilterResult:GetNonChatStringForUserAsync() เพื่อแสดงข้อความที่กรองสำหรับผู้ใช้รายหนึ่งโดยเฉพาะ, ขึ้นอยู่กับอายุและรายละเอียดอื่นๆ

ในบริบทของการใส่ข้อมูล TextBox ตัวอย่างต่อไปนี้รวบรวมข้อมูลในเหตุการณ์ FocusLost และส่งไปยังเซิร์ฟเวอร์ผ่าน RemoteEventบนเซิร์ฟเวอร์ จะถูกกรองก่อนผ่าน FilterStringAsync() แล้วจึง GetNonChatStringForBroadcastAsync() ด้วยความตั้งใจที่จะแสดงข้อความให้กับผู้ใช้ทั้งหมดบนวัตถุด้านเซิร์ฟเวอร์เช่น SurfaceGui ในโลก 3D

การกรองการใส่ข้อความ - สคริปต์ไคลเอนต์

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local textBox = script.Parent
textBox.ClearTextOnFocus = false
textBox.PlaceholderText = "..."
textBox.TextXAlignment = Enum.TextXAlignment.Left
textBox.TextScaled = true
-- อีเวนต์ระยะไกลเพื่อส่งการป้อนข้อความไปยังเซิร์ฟเวอร์เพื่อการกรอง
local inputRemoteEvent = ReplicatedStorage:FindFirstChild("InputRemoteEvent")
-- ตัวจัดการอีเวนต์สำหรับการโฟกัสหายไปและกดเข้าไป
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)
การกรองการใส่ข้อความ - สคริปต์เซิร์ฟเวอร์

local TextService = game:GetService("TextService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- อีเวนต์ระยะไกลที่จะรับการป้อนข้อความจากไคลเอนต์เพื่อการกรอง
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
-- ยิงเมื่อไคลเอนต์ส่งข้อมูลจาก 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)