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

*เนื้อหานี้แปลโดยใช้ 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 เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ