I'm trying to create a party system, and users are able to name their own party for other players to see. I would need to filter the name string if I don't want actions to be taken against me. I tried filtering the string, but it seems if I print the name of the party, it is not filtered. Is there anything wrong?

--Filter's the party name.
function module:filter(name, from)
	local filtered 
	local success, errormessage = pcall(function()
		filtered = TS:FilterStringAsync(name, from.UserId)
	end)
	if success then
		filtered = filtered:GetNonChatStringForBroadcastAsync()
		return filtered
	else
		warn(from.Name.."'s party name does not pass ROBLOX's filter.")
		WarningRemote:FireClient(from, "Warning", "PARTY NAME DEFAULTED")
		--Use default party name if filter failed.
		return "LET'S PLAY"
	end
end

--Create new party with specified requirements and size.
function module:new(creator, name, requirement, size)
	if not creator then return end
	--Set default values for party if arguments are not given.
	if name then
		name = string.upper(module:filter(name, creator))
	else
		name = "LET'S PLAY"
	end
	requirement = requirement or 1
	--Party size defaulted to 4 if not specified or a maximum of 6 people
	if size then
		size = math.min(math.max(1,size), 6)
	else
		size = 4
	end
	
	module.inParty[creator.Name] = true
	
	local group = {}
	group.identifier = helper:getidentifier()
	group.leader = creator.Name
	group.name = name
	group.requirement = requirement
	group.banned = {}
	group.members = {[creator.Name] = true}
	
	return group
end

This is how I check the party's name and number of parties. All parties are put in a dictionary with a unique identifier.

while wait(2) do
	local length = {}
	for _, party in pairs(parties) do
		if party ~= nil then
			print(party.name)
			table.insert(length, party)
		end
	end
	print(#length.." parties created.")
end

7 comments

0

Are you testing this in-game or in studio? I think filtering doesn't work if you're testing in studio.

1

Both.

0

What words are you putting in that you expect to be filtered? Also, try putting numbers in as the broadcast function usually tags those.

0

Numbers and the usual swear words.

0

It seems to work now but I did not know what happened before.

0

I did read something about FilterStringASync possibly breaking if results are "cached and reused". Not sure if it relates to your problem though : https://developer.roblox.com/api-reference/function/TextService/FilterStringAsync

0

if your trying it in studio, it has no filter.