hello
, this is my implementation of read-only chat.
it has been nearly a year since roblox disabled chat for players in the middle east like myself, leaving us unable to communicate with others and thus enjoy our time on roblox.
texttchatservice’s shoulddelivercallback drops messages entirely for players who can’t chat, so we intercept from the server and manually relay to chat-banned players.
what it does
on character load the client checks canchatcuserasync and reports the result to the server. players who can’t chat get pulled out of normal delivery since shoulddelivercallback returns false for them and the server takes over. we run the message through filterstringasync and fire it back with a bubble chat (using the deprecated chat service) via remotes.
weird canuserchatasync discrepancy
canchatuserasync returns different results depending on where you call it; the serverside result is unreliable and will come back true even for players who actually have chat restrictions. the client is the one that reports accurately, so that’s where the check lives.
caveats
this only catches players who are outright chat banned. accounts where roblox limits chat based on age group will still come back as able to chat and go through normal delivery.
it also doesn’t hook into chat channels beyond RBXGeneral, you’d need to replicate the callback and relay logic per channel yourself.
get it here
https://create.roblox.com/store/asset/115201357320873