
KeylessUniversal

--[[
Simple Chat Spy
Type "spy" to enable or disable the chat spy.
Only tested if this works executed with Synapse (should work with other exploits though)
--]]
print("-- Chat Spy Executed --")
print("Type \"spy\" to enable or disable the chat spy.")
print("Only tested if this works executed with Synapse (should work with other exploits though)")
print("https://github.com/dehoisted/Chat-Spy")
-- Config
Config = {
enabled = true,
spyOnMyself = true,
public = false,
publicItalics = true
}
-- Customizing Log Output
PrivateProperties = {
Color = Color3.fromRGB(0,255,255);
Font = Enum.Font.SourceSansBold;
TextSize = 18;
}
local StarterGui = game:GetService("StarterGui")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local saymsg = game:GetService("ReplicatedStorage"):WaitForChild("DefaultChatSystemChatEvents"):WaitForChild("SayMessageRequest")
local getmsg = game:GetService("ReplicatedStorage"):WaitForChild("DefaultChatSystemChatEvents"):WaitForChild("OnMessageDoneFiltering")
local instance = (_G.chatSpyInstance or 0) + 1
_G.chatSpyInstance = instance
local function onChatted(p,msg)
if _G.chatSpyInstance == instance then
if p==player and msg:lower():sub(1,4)=="/spy" then
Config.enabled = not Config.enabled
wait(0.3)
PrivateProperties.Text = "{SPY "..(Config.enabled and "EN" or "DIS").."ABLED}"
StarterGui:SetCore("ChatMakeSystemMessage", PrivateProperties)
elseif Config.enabled and (Config.spyOnMyself==true or p~=player) then
msg = msg:gsub("[\n\r]",''):gsub("\t",' '):gsub("[ ]+",' ')
local hidden = true
local conn = getmsg.OnClientEvent:Connect(function(packet,channel)
if packet.SpeakerUserId==p.UserId and packet.Message==msg:sub(#msg-#packet.Message+1) and (channel=="All" or (channel=="Team" and Config.public==false and Players[packet.FromSpeaker].Team==player.Team)) then
hidden = false
end
end)
wait(1)
conn:Disconnect()
if hidden and Config.enabled then
if Config.public then
saymsg:FireServer((Config.publicItalics and "/me " or '').."{SPY} [".. p.Name .."]: "..msg,"All")
else
PrivateProperties.Text = "{SPY} [".. p.Name .."]: "..msg
StarterGui:SetCore("ChatMakeSystemMessage", PrivateProperties)
end
end
end
end
end
for _,p in ipairs(Players:GetPlayers()) do
p.Chatted:Connect(function(msg) onChatted(p,msg) end)
end
Players.PlayerAdded:Connect(function(p)
p.Chatted:Connect(function(msg) onChatted(p,msg) end)
end)
PrivateProperties.Text = "{SPY "..(Config.enabled and "EN" or "DIS").."ABLED}"
StarterGui:SetCore("ChatMakeSystemMessage", PrivateProperties)
local chatFrame = player.PlayerGui.Chat.Frame
chatFrame.ChatChannelParentFrame.Visible = true
chatFrame.ChatBarParentFrame.Position = chatFrame.ChatChannelParentFrame.Position+UDim2.new(UDim.new(),chatFrame.ChatChannelParentFrame.Size.Y)



its not work on new chats roblox dude
it works only for some games that use old chats i think
Wdym you tested It with Synapse, Synapse Discontinued
I Can find the same thing On Inf yield Its called Chatlogs
its not mine dude
i tested it on some games and it worked so idk
It don't work