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

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

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

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

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

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

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

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

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

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

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
-- RemoteEvent เพื่อส่งข้อมูลนำเข้านข้อความไปยังเซิร์ฟเวอร์สำหรับการกรอง
local inputRemoteEvent = ReplicatedStorage:FindFirstChild("InputRemoteEvent")
-- ตัวจัดการเหตุการณ์สำหรับการสูญเสียโฟกัสและการกดปุ่ม Enter
local function onFocusLost(enterPressed, inputObject)
if enterPressed then
print("ส่งข้อมูล:", 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")
-- 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("เกิดข้อผิดพลาดในการสร้าง 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("ข้อความที่ถูกกรอง:", filteredText)
else
warn("เกิดข้อผิดพลาดในการกรองข้อความ!")
end
end
end
end
inputRemoteEvent.OnServerEvent:Connect(onInputReceived)
©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ