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)