
Key RequiredUniversal

local DataStoreService = game:GetService("DataStoreService")
local playtimeStore = DataStoreService:GetDataStore("PlaytimeData")
local playtimeThreshold = 300 -- Playtime threshold (in seconds)
-- Create the UI for reporting bots
local function createBotReportUI(player)
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "BotReportUI"
screenGui.Parent = player:WaitForChild("PlayerGui")
local botReportFrame = Instance.new("Frame")
botReportFrame.Size = UDim2.new(0.3, 0, 0.2, 0)
botReportFrame.Position = UDim2.new(0.35, 0, 0.05, 0)
botReportFrame.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
botReportFrame.BackgroundTransparency = 0.5
botReportFrame.BorderSizePixel = 0
botReportFrame.Parent = screenGui
local titleLabel = Instance.new("TextLabel")
titleLabel.Text = "Bot Report"
titleLabel.Size = UDim2.new(1, 0, 0.2, 0)
titleLabel.BackgroundTransparency = 1
titleLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
titleLabel.TextScaled = true
titleLabel.Parent = botReportFrame
local botList = Instance.new("TextLabel")
botList.Name = "BotList"
botList.Size = UDim2.new(1, 0, 0.8, 0)
botList.Position = UDim2.new(0, 0, 0.2, 0)
botList.BackgroundTransparency = 1
botList.TextColor3 = Color3.fromRGB(255, 255, 255)
botList.TextScaled = true
botList.TextWrapped = true
botList.Text = "No bots detected."
botList.Parent = botReportFrame
end
local function updateBotReportUI(player, botName)
local screenGui = player:FindFirstChild("PlayerGui"):FindFirstChild("BotReportUI")
if screenGui then
local botList = screenGui:FindFirstChild("BotList")
if botList then
botList.Text = botList.Text == "No bots detected." and botName or (botList.Text .. "\n" .. botName)
end
end
end
local function isDefaultAvatar(player)
local humanoidDescription = player.Character:FindFirstChildOfClass("Humanoid"):GetAppliedDescription()
return humanoidDescription.HeadColor == BrickColor.new("Bright yellow").Color and
humanoidDescription.TorsoColor == BrickColor.new("Bright blue").Color and
humanoidDescription.LeftLegColor == BrickColor.new("Bright green").Color
end
local function loadPlaytime(player)
local success, data = pcall(function()
return playtimeStore:GetAsync(player.UserId)
end)
if success and data then
player:SetAttribute("Playtime", data)
else
player:SetAttribute("Playtime", 0)
end
end
local function savePlaytime(player)
local playtime = player:GetAttribute("Playtime") or 0
pcall(function()
playtimeStore:SetAsync(player.UserId, playtime)
end)
end
local function isLowPlaytime(player)
return (player:GetAttribute("Playtime") or 0) < playtimeThreshold
end
local function handlePlayer(player)
loadPlaytime(player)
createBotReportUI(player)
player:SetAttribute("Playtime", player:GetAttribute("Playtime") or 0)
local function trackPlaytime()
while player.Parent do
local playtime = player:GetAttribute("Playtime") or 0
player:SetAttribute("Playtime", playtime + 1)
wait(1)
end
end
task.spawn(trackPlaytime)
player.CharacterAdded:Connect(function()
if isDefaultAvatar(player) and isLowPlaytime(player) then
updateBotReportUI(player, player.Name)
player:Kick("You have been identified as a bot.")
end
end)
end
game.Players.PlayerAdded:Connect(function(player)
handlePlayer(player)
end)
game.Players.PlayerRemoving:Connect(function(player)
savePlaytime(player)
end)



chatgpt
Sucks
use this in sols rng to find 20 "bots" in one server
Chatgpt?
credit to chatgpt