Globalchat issue (EXTRA LETTERS)

You have various problems regarding outdated and improper use of functions.

Some examples include:
I notice that in the SubscribeAsync() block, you get a Player object using Players:GetPlayerByUserId(). However, this returns nil if the player does not exist in the server. What you should use is Players:GetNameFromUserIdAsync() or send the player’s name in the InfoTable.

Do note that these functions below are deprecated in favour of TextChatService and should NOT be used:

Also, according to documentation, TextService:FilterStringAsync() will throw an error if the fromUserId argument has no corresponding player in-game. To solve this, you should filter the string not under :SubscribeAsync() but under :PublishAsync() instead.

A very important note is that TextFilterResult:GetChatForUserAsync() (in your case: Obj:GetChatForUserAsync()) is completely deprecated in favour of filtering through the use of TextChatService. It will always return an empty string.

Important note: the reason you do not see any errors in the output is likely due to the pcalls you have set in place.

PS: There is no reason to filter the text you do in this case, as there is nothing the players can necessarily do to modify what text is sent.

Relevant Documentation:
TextChatService
TextFilterResult:GetChatForUserAsync()
Migration to TextChatService
TextService:FilterStringAsync()
Players:GetPlayerByUserId()
Players:GetNameFromUserIdAsync()