Fancy Chatting
Key RequiredUniversal

Fancy Chatting

Universal Scriptmcdaggittmcdaggitt 742 views 139 executesUpdated Mar 24, 2026
5.0/ 5(4 votes)
40100% Positive
Lua Script•85 lines (4112 chars)
local HttpService = game:GetService("HttpService")
local TextChatService = game:GetService("TextChatService")
local CoreGui = game:GetService("CoreGui")

--[[ 
this method contains my hooking chat box method, basically contains chat blocking!
hard to explain in simple terms.
if you want the box hook method yourself then it will be on my github
https://github.com/jodta/my-scripts/blob/main/Coding%20help/Textchatservice/Hooking%20ChatBox%20Tutorial.lua

hooks chat and blocks any message you send
the message that gets sent gets translated and sent through chat SendAsync

I think I did okay making this, needs optimization if its going to be a whole script. Just made it for someone since they requested it
--]]

local skip = { -- without this then the translation will look shitty like it outputs sorta like this "what a glorious serviceman partake evening" -- inconsistant so we must ignore these keywords
    "a","an","the","is","it","in","on","at","to","of","or","and","but",
    "for","i","me","my","we","us","you","he","she","him","her","his",
    "they","them","was","are","be","do","did","has","had","not","no",
    "as","by","if","that","this","with","from","what","when","your",
    "their","than","then","who","how","where"
}

for i, v in ipairs(skip) do skip[v] = true skip[i] = nil end

local fancy = { -- fancy english interpitation - did bad job sorry
    {"good","splendid"},{"bad","dreadful"},{"big","grandiose"},{"small","diminutive"},
    {"happy","elated"},{"sad","melancholic"},{"said","proclaimed"},{"say","proclaim"},
    {"think","contemplate"},{"want","desire"},{"need","require"},{"get","acquire"},
    {"got","obtained"},{"use","utilise"},{"very","tremendously"},{"really","exceedingly"},
    {"nice","exquisite"},{"cool","remarkable"},{"awesome","magnificent"},{"weird","peculiar"},
    {"old","antiquated"},{"new","contemporary"},{"fast","expeditious"},{"slow","lethargic"},
    {"smart","astute"},{"dumb","obtuse"},{"angry","indignant"},{"scared","apprehensive"},
    {"sure","certainly"},{"maybe","perhaps"},{"also","furthermore"},{"know","discern"},
    {"look","observe"},{"see","perceive"},{"try","endeavour"},{"start","commence"},
    {"end","conclude"},{"make","fabricate"},{"tell","inform"},{"show","demonstrate"},
    {"help","assist"},{"thing","matter"},{"things","matters"},{"people","individuals"},
    {"money","capital"},{"house","residence"},{"talk","converse"},{"walk","promenade"},
    {"buy","procure"},{"give","bestow"},{"take","acquire"},{"keep","retain"},
    {"go","proceed"},{"went","proceeded"},{"eat","consume"},{"drink","imbibe"}
}

for i, v in ipairs(fancy) do fancy[v[1]] = v[2] fancy[i] = nil end

local function transform(word)
    local punct = word:match("[%p]+$") or ""
    local clean = word:gsub("[%p]+$", "")
    local lower = clean:lower()
    if clean == "" or skip[lower] then return word end

    local result = fancy[lower]

    if not result then
        local res = request({
            Url = "https://api.datamuse.com/words?rel_syn=" .. HttpService:UrlEncode(lower) .. "&max=20",
            Method = "GET"
        })
        local data = HttpService:JSONDecode(res.Body)
        local longest = clean
        for _, e in ipairs(data) do
            if not e.word:find(" ") and #e.word > #longest then longest = e.word end
        end
        result = longest
    end

    if clean:sub(1,1):match("%u") then result = result:sub(1,1):upper() .. result:sub(2) end
    return result .. punct
end

local textBox = CoreGui:WaitForChild("ExperienceChat").appLayout.chatInputBar.Background.Container.TextContainer.TextBoxContainer.TextBox

for _, conn in pairs(getconnections(textBox.FocusLost)) do conn:Disable() end

textBox.FocusLost:Connect(function(enterPressed)
    if not enterPressed or textBox.Text == "" then return end
    local original = textBox.Text
    textBox.Text = ""
    textBox:ReleaseFocus()
    task.spawn(function()
        local out = {}
        for word in original:gmatch("%S+") do table.insert(out, transform(word)) end
        TextChatService.TextChannels.RBXGeneral:SendAsync(table.concat(out, " "))
    end)
end)

Features & Information

Fancy English or smth (opensourced) I havent been uploading in awhile since the banwaves so my uploads will be slow, sorry!

Community Comments (4)

_OpenSource__OpenSource_Mar 24, 2026

good basic script

HskwksjjHskwksjjMar 24, 2026

Ts so tuff british

Mugen_DocsMugen_DocsMar 24, 2026

folk

Meraxe67Meraxe67May 8, 2026

this is splendid!

More Scripts for Universal Scripts