Do I need to filter words in a Chat Plugin?

I am currently developing a chat plugin for Roblox Studio and am wondering if the users’ messages need to be filtered. Nobody except other people with the same plugin in Studio is going to see these messages. My current solution would be to send an HTTP GET request to get Google’s profanity word list and filter messages based on that.

If multiple people are going to have access to the plugin, yeah, you’ll probably need to use roblox’s filter or you might risk getting oofed.

“Probably” is not really helpful in this case. Do you have any evidence/rule that would support this? I can’t use the Roblox Filter in a plugin btw.

Yes, you need to filter any and all text boxes that users use for input. This could end up very badly for you otherwise.

I just found this reply, when searching for a way to filter words inside of a plugin. Roblox doesn’t even provide a way of doing this. The reply also suggests that you don’t need to filter words inside of a plugin. So, do I need to filter words or not? I’m pretty confused about this.

Go do whatever if you truly want but in order to keep yourself safe, I suggest you do.

1 Like

TextService’s FilterStringAsync

According to roblox guidelines, you MUST filter all user input text through this filter.

1 Like

Then why does Roblox disable it for plugins? Man, I don’t understand what Roblox wants developers to do.
Bildschirmfoto 2021-08-01 um 20.12.35

Well, that could be an oversight on roblox’s part that doesn’t count users in studio as players so it wouldn’t work. Unfortunately I’m not sure what else you can do that will stay in guidelines unless roblox updates it to count users in studio to this method as well.

2 Likes

Since Studio itself while in play solo/test mode, there is no ability to filter so even Roblox’s own Chat while in a play solo/test mode, is completely unfiltered.

Only risk to beware is to ensure if saving through via the game file, content should be obfuscated or unreadable if using team create or saving to a game place that could be upload able to avoid issues with auto moderation tools that could consider your game having unsafe content.

In the long run, if Roblox deems your plugin unwanted, it’ll probably simply be removed from the toolbox.

Roblox is working on new API’s for plugins atm. Maybe they will enable string filtering in the near future. Until then, the best thing I can do is to encode the saved data, so Roblox can’t detect profanity words in the StringValue. My saved data now looks like this:

\91\123\34\105\100\34\58\34\102\51\100\100\50\98\98\51\45\98\50\52\53\45\52\102\55\97\45\56\53\56\52\45\50\48\101\48\55\100\55\56\50\48\102\57\34\44\34\114\101\97\99\116\105\111\110\115\34\58\91\93\44\34\100\97\116\101\34\58\34\48\51\58\50\49\32\80\77\34\44\34\117\115\101\114\34\58\34\67\111\121\97\110\110\34\44\34\109\101\115\115\97\103\101\34\58\34\72\101\108\108\111\32\87\111\114\108\100\33\34\125\93

I would consider looking into another method of encoding just to be safe, bytecode encoding isn’t that hard to decode. A simple convert to a string and ‘print’ can output the contents, and Roblox auto moderation may look for standard bytecode \00\00 in their filters too.

Looks like this now:

DC455DC615DC170DC525DC500DC170DC290DC170DC495DC245DC260DC255DC240DC275DC500DC245DC225DC280DC285DC245DC510DC225DC260DC490DC250DC240DC225DC485DC255DC490DC285DC225DC260DC500DC490DC275DC500DC240DC260DC270DC500DC495DC510DC240DC170DC220DC170DC570DC505DC485DC495DC580DC525DC555DC550DC575DC170DC290DC455DC465DC220DC170DC500DC485DC580DC505DC170DC290DC170DC240DC285DC290DC260DC260DC160DC400DC385DC170DC220DC170DC585DC575DC505DC570DC170DC290DC170DC335DC555DC605DC485DC550DC550DC170DC220DC170DC545DC505DC575DC575DC485DC515DC505DC170DC290DC170DC420DC505DC575DC580DC170DC625DC465

I don’t think any automatic tool’s going to figure that one out.

2 Likes

You should use Base64 along with some basic form of encryption, a way to insert a key, and if the key is right, you’ll see all messages in a valid way, you’d have to agree with the receiver on a key that you would both keep private and use to encrypt and decrypt