warn("Executed!") local Fluent = loadstring(game:HttpGet("https://github.com/dawid-scripts/Fluent/releases/latest/download/main.lua"))() local Window = Fluent:CreateWindow({ Title = "Webhook Logger", SubTitle = "by @dandush on discord", TabWidth = 160, Size = UDim2.fromOffset(650, 500), Acrylic = true, Theme = "Dark", MinimizeKey = Enum.KeyCode.K }) local logs = {} local Tabs = { logTab = Window:AddTab({Title = "Logging Tab", Icon = "newspaper"}) } Tabs.logTab:AddButton({ Title = "Clear", Description = "Clears All Logs", Callback = function() for i,v in logs do v:Destroy() end end, }) local function getPrettierTableString(args : table) : string local str = "" for i,v in args do str = str .. i str = str .. " = " str = str .. v str = str .. "\n" end return str end local function onWebhookSent(args : table) : () table.insert(logs,Tabs.logTab:AddParagraph( { Title = "HTTP SENT (AND BLOCKED)", Content = getPrettierTableString(args) } )) table.insert(logs,Tabs.logTab:AddButton({ Title = "Copy Webhook", Description = "Copies The Webhook URL To Your Clipboard", Callback = function() setclipboard(args["Url"]) end, })) end -- Safely convert any value to string local function safeToString(v) local ok, s = pcall(function() if type(v) == "table" then return "{table: " .. tostring(v) .. "}" end return tostring(v) end) if not ok or s == nil then return "" end return s end -- Recursively flatten a table into a { key = "string_value" } table local function flattenTable(tbl, result, prefix) result = result or {} prefix = prefix or "" for k, v in pairs(tbl) do local keyName = prefix ~= "" and (prefix .. "." .. tostring(k)) or tostring(k) if type(v) == "table" then flattenTable(v, result, keyName) else result[keyName] = safeToString(v) end end return result end -- Main function: accepts either a single table (like a request) or varargs local function getPrettyArgs(...) local argCount = select("#", ...) local first = select(1, ...) if argCount == 1 and type(first) == "table" then return flattenTable(first) end -- For varargs, just stringify all arguments and store by index local result = {} for i = 1, argCount do local v = select(i, ...) if type(v) == "table" then local flat = flattenTable(v, {}, "Arg" .. i) for k, val in pairs(flat) do result[k] = val end else result["Arg" .. i] = safeToString(v) end end return result end -- Replace the real global reference: if syn and syn.request then syn.request = function(...) print("Hooked syn.request") local args = getPrettyArgs(...) onWebhookSent(args) end elseif http_request then getgenv().http_request = function(...) print("Hooked http_request") local args = getPrettyArgs(...) onWebhookSent(args) end elseif fluxus and fluxus.request then fluxus.request = function(...) print("Hooked fluxus.request") local args = getPrettyArgs(...) onWebhookSent(args) end else warn("No request function found to hook.") end