FilterStringForPlayerAsync does not return anything. When called on a player with a message and printing it out, nothing is printed, not even a white space.
local chat = game:GetService("Chat")
local function Filter(msg, plyr)
local filtered = chat:FilterStringForPlayerAsync(msg, plyr)
local ret = {}
for i = 1, #filtered do
local chr = filtered:sub(i, i)
if filtered:sub(i, i) ~= msg:sub(i, i) then
chr = "*"
end
ret[#ret+1] = chr
end
return table.concat(ret)
end