So I am making a chat system in Roblox Studio, and I want it so that when the player clicks enter, a few functions are send to a server script where it filters the message, then returns and displays the message. The problem is that every time it filters, it comes back as a string, “Instance”, instead of the actual filtered message.
Code
Local script which fires the message to the server script
script.Parent.FocusLost:Connect(function(enterPressed)
if enterPressed then
local player = game.Players.LocalPlayer
local message = game.Players.LocalPlayer.PlayerGui.Main.BackgroundFrame.ChatDMS.MessageBar.Message.Text
game.ReplicatedStorage.SendMessageToServer:FireServer(player, message)
end
end)
Server Script which filters the message
local TextService = game:GetService("TextService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local sendMessageToServer = ReplicatedStorage.SendMessageToServer
local function getTextObject(message, fromPlayerId)
local textObject
local success, errorMessage = pcall(function()
textObject = TextService:FilterStringAsync(message, fromPlayerId)
end)
if success then
return textObject
elseif errorMessage then
print("Error generating TextFilterResult:", errorMessage)
end
return false
end
local function getFilteredMessage(textObject)
local filteredMessage
local success, errorMessage = pcall(function()
filteredMessage = textObject:GetNonChatStringForBroadcastAsync()
end)
if success then
return filteredMessage
elseif errorMessage then
print("Error filtering message:", errorMessage)
end
return false
end
sendMessageToServer.OnServerEvent:Connect(function(player, message)
local messageObject = getTextObject(message, player.UserId)
local filteredText = ""
filteredText = getFilteredMessage(messageObject)
local text = filteredText
print(text)
-- ReplicatedStorage.SendFilteredText:FireClient(player, message)
end)
Local script which should display the message
local playerr = game.Players.LocalPlayer
local Players = game:GetService("Players")
local chatDMS = playerr.PlayerGui.Main.BackgroundFrame.ChatDMS
local function getPhoto(image)
local userId = playerr.UserId
local thumbType = Enum.ThumbnailType.HeadShot
local thumbSize = Enum.ThumbnailSize.Size420x420
local content, isReady = Players:GetUserThumbnailAsync(userId, thumbType, thumbSize)
image.Image = content
end
game.ReplicatedStorage.SendFilteredText.OnClientEvent:Connect(function(player, message)
local msg = chatDMS.MessageHandler.MessageTemplateFolder.MessageTemplate:Clone()
msg.MessageSent.Text = message
getPhoto(msg.Avatar)
msg.Parent = chatDMS.MessageHandler
msg.Visible = true
end)
Can anybody help?