BOT SCRIPT by Rubo v5
Key RequiredUniversal

BOT SCRIPT by Rubo v5

Universal ScriptSnic23242Snic23242 928 views 22 executesUpdated May 1, 2026
2.5/ 5(2 votes)
1150% Positive
Lua Scriptβ€’507 lines (16429 chars)
--[[
	WARNING: Heads don't copy at your own risk
	REBRANDED & UPGRADED TO: RUBO PANEL
]]

local Players = game:GetService("Players")
local TextChatService = game:GetService("TextChatService")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")

local player = Players.LocalPlayer

--------------------------------------------------
-- SETTINGS
--------------------------------------------------
local saying = false
local targetName = "TMX"
local delayTime = 1
local pattern = "_"
local allowedPlayer = nil

-- Loop controller for movement commands
if _G.RuboMovementLoop then _G.RuboMovementLoop:Disconnect() end

--------------------------------------------------
-- RO MESSAGE LIST (TMX ROASTS)
--------------------------------------------------
local roMessages = {
"TMX MEH FIRE πŸ”₯","FYTER BNEGA?🀣","BCHE RUBO ON TOPπŸ‘‘","TMX MEH Rocket πŸš€",
"TMX MEH electricity ⚑","TMX meh SURF πŸ˜†","Leave marde 🀣","mera beta ON TOP BOL πŸ”₯",
"TMX MEH BOOK πŸ“š","Pil gya itni jaldi 🀣","Itna lallu fyter🀧","Cvr bye RuboπŸ‘‘",
"Tmx meh petroleum","Dffn?πŸ˜”","Bhag ja bache😹","Tmx meh dino 😈",
"TMX MEH MAJDOOR","TMX MEH SCRIPT","TMX MEH TREE🌴","TMX MEH CLIP",
"Tmx AlluπŸ₯”","TMX MEH GOAT","TMX MEH BLAZE","TMX MEH SALT",
"TMX MEH ROD","TMX MEH UNIVERSE","TMX MEH SOFA",
"TMX MEH KEYBOARD","TMX MEH SNIPER","this script ON TOPπŸ‘‘",
"TMX MEH MONITOR","TMX MEH TABLE","TMX MEH GALAXLY",
"TMX MEH MUSHROOM","TMX MEH STONE","TMX MEH BOT",
"TMX MEH TAB","TMX MEH CYLINDER","TMX MEH KING",
"TMX MEH VOID","TMX MEH REAPER","TMX MEH GOD",
"TMX MEH MASTER","TMX MEH NOVA","TMX MEH BEAST",
"TMX MEH LEGEND","TMX MEH GHOST","TMX MEH NINJA",
"TMX MEH STAR","TMX MEH MOON","TMX MEH NEON",
"TMX MEH OMEGA","TMX MEH STICK","TMX MEH PAPER",
"TMX MEH STYLE","TMX MEH ALPHA","TMX MEH FISH"
}

--------------------------------------------------
-- GENERATE LINE
--------------------------------------------------
local function generateLine()
	local result = ""
	while #result < 150 do
		result = result .. pattern
	end
	return string.sub(result, 1, 150)
end

--------------------------------------------------
-- SPAM SYSTEM
--------------------------------------------------
local function startROSpam()
	if saying then return end
	saying = true

	task.spawn(function()
		while saying do
			local msgText = roMessages[math.random(1, #roMessages)]
			local msg = generateLine().."\n"..targetName.."\n"..msgText
			
			TextChatService.TextChannels.RBXGeneral:SendAsync(msg)
			task.wait(delayTime)
		end
	end)
end

local function stopAll()
	saying = false
	if _G.RuboMovementLoop then 
		_G.RuboMovementLoop:Disconnect() 
		_G.RuboMovementLoop = nil
	end
end

--------------------------------------------------
-- COMMAND SYSTEM
--------------------------------------------------
local function handleCommand(speaker, message)
	if allowedPlayer and speaker.Name ~= allowedPlayer then return end

	local args = message:split(" ")
	local cmd = args[1]:lower()

	local commander = Players:FindFirstChild(speaker.Name)
	local commanderChar = commander and commander.Character
	local myChar = player.Character

	if cmd == "!ro" then
		if args[2] then targetName = args[2] end
		startROSpam()
	end

	if cmd == "!say" then
		if #args > 1 then
			local text = message:sub(6)
			TextChatService.TextChannels.RBXGeneral:SendAsync(text)
		end
	end

	if cmd == "!bot" then
		local msg = generateLine().."\nH1 RUBO RULER πŸ‘‘"
		TextChatService.TextChannels.RBXGeneral:SendAsync(msg)
	end

	if cmd == "!stop" then
		stopAll()
	end

	if cmd == "!delay" then
		local n = tonumber(args[2])
		if n then delayTime = n end
	end

	if cmd == "!pattern" then
		if args[2] then pattern = args[2] end
	end

	-- NEW COMMAND: !assemble
	if cmd == "!assemble" then
		if commanderChar and commanderChar:FindFirstChild("HumanoidRootPart") and myChar and myChar:FindFirstChild("HumanoidRootPart") then
			stopAll() -- Stop other loops
			-- Get the index of this bot to calculate equal gapping
			local bots = {}
			for _, p in pairs(Players:GetPlayers()) do table.insert(bots, p.Name) end
			table.sort(bots)
			local myIndex = 1
			for i, v in ipairs(bots) do
				if v == player.Name then myIndex = i break end
			end
			
			-- Position linearly behind commander (Z is back, X is left/right)
			local gap = 4
			local startX = -((#bots * gap) / 2)
			local offsetX = startX + (myIndex * gap)
			myChar.HumanoidRootPart.CFrame = commanderChar.HumanoidRootPart.CFrame * CFrame.new(offsetX, 0, 5)
		end
	end

	-- NEW COMMAND: !Ravan
	if cmd == "!ravan" then
		if commanderChar and commanderChar:FindFirstChild("Head") and myChar and myChar:FindFirstChild("HumanoidRootPart") then
			stopAll()
			local bots = {}
			for _, p in pairs(Players:GetPlayers()) do table.insert(bots, p.Name) end
			table.sort(bots)
			local myIndex = 1
			for i, v in ipairs(bots) do if v == player.Name then myIndex = i break end end

			_G.RuboMovementLoop = RunService.RenderStepped:Connect(function()
				if commanderChar and commanderChar:FindFirstChild("Head") and myChar and myChar:FindFirstChild("HumanoidRootPart") then
					local angle = (myIndex * (math.pi * 2 / #bots)) + (tick() * 3) -- Orbit speed
					local x = math.cos(angle) * 3
					local z = math.sin(angle) * 3
					myChar.HumanoidRootPart.CFrame = commanderChar.Head.CFrame * CFrame.new(x, 0, z)
				else
					stopAll()
				end
			end)
		end
	end

	-- NEW COMMAND: !rubo
	if cmd == "!rubo" then
		if commanderChar and commanderChar:FindFirstChild("HumanoidRootPart") and myChar and myChar:FindFirstChild("HumanoidRootPart") then
			stopAll()
			_G.RuboMovementLoop = RunService.RenderStepped:Connect(function()
				if commanderChar and commanderChar:FindFirstChild("HumanoidRootPart") and myChar and myChar:FindFirstChild("HumanoidRootPart") then
					-- Random teleport glitch around the commander
					if math.random(1, 5) > 3 then 
						local rx = math.random(-25, 25)
						local ry = math.random(-5, 20)
						local rz = math.random(-25, 25)
						myChar.HumanoidRootPart.CFrame = commanderChar.HumanoidRootPart.CFrame * CFrame.new(rx, ry, rz)
					end
				else
					stopAll()
				end
			end)
		end
	end

	-- NEW COMMAND: !Ruboking
	if cmd == "!ruboking" then
		player:Kick("ban by Rubo")
	end
end

--------------------------------------------------
-- CHAT LISTENER
--------------------------------------------------
for _, plr in pairs(Players:GetPlayers()) do
	plr.Chatted:Connect(function(msg)
		handleCommand(plr, msg)
	end)
end

Players.PlayerAdded:Connect(function(plr)
	plr.Chatted:Connect(function(msg)
		handleCommand(plr, msg)
	end)
end)

--------------------------------------------------
-- GUI CREATION
--------------------------------------------------
local gui = Instance.new("ScreenGui", player:WaitForChild("PlayerGui"))
gui.Name = "RuboGUI"
gui.IgnoreGuiInset = true

--------------------------------------------------
-- CINEMATIC INTRO
--------------------------------------------------
local introFrame = Instance.new("Frame", gui)
introFrame.Size = UDim2.new(1, 0, 1, 0)
introFrame.BackgroundColor3 = Color3.fromRGB(5, 5, 5)
introFrame.BackgroundTransparency = 0
introFrame.ZIndex = 999
introFrame.BorderSizePixel = 0

local introText = Instance.new("TextLabel", introFrame)
introText.Size = UDim2.new(1, 0, 1, 0)
introText.BackgroundTransparency = 1
introText.Text = "R U B O"
introText.Font = Enum.Font.GothamBlack
introText.TextSize = 60
introText.TextColor3 = Color3.fromRGB(200, 30, 30)
introText.TextTransparency = 1
introText.ZIndex = 1000

local introSub = Instance.new("TextLabel", introFrame)
introSub.Size = UDim2.new(1, 0, 1, 80)
introSub.BackgroundTransparency = 1
introSub.Text = "THE RULER HAS ARRIVED"
introSub.Font = Enum.Font.Gotham
introSub.TextSize = 20
introSub.TextColor3 = Color3.fromRGB(150, 150, 150)
introSub.TextTransparency = 1
introSub.ZIndex = 1000

-- Cinematic Sound
local introSound = Instance.new("Sound", gui)
introSound.SoundId = "rbxassetid://4809574295" -- Deep bass drop/cinematic hit
introSound.Volume = 2
introSound:Play()

-- Intro Animations
local tweenInfo = TweenInfo.new(1.5, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
TweenService:Create(introText, tweenInfo, {TextTransparency = 0}):Play()
task.wait(1)
TweenService:Create(introSub, tweenInfo, {TextTransparency = 0}):Play()

task.wait(2.5)

local fadeOutInfo = TweenInfo.new(1, Enum.EasingStyle.Quad, Enum.EasingDirection.In)
TweenService:Create(introText, fadeOutInfo, {TextTransparency = 1}):Play()
TweenService:Create(introSub, fadeOutInfo, {TextTransparency = 1}):Play()
TweenService:Create(introFrame, fadeOutInfo, {BackgroundTransparency = 1}):Play()

task.wait(1)
introFrame:Destroy()

--------------------------------------------------
-- FLOATING BALLS ANIMATION
--------------------------------------------------
local balls = {}
local ballColors = {
	Color3.fromRGB(200, 30, 30),
	Color3.fromRGB(220, 50, 50),
	Color3.fromRGB(150, 20, 20),
	Color3.fromRGB(255, 60, 60),
	Color3.fromRGB(100, 10, 10)
}

local function createFloatingBall(parent, xPos, yPos, size, color)
	local ball = Instance.new("Frame", parent)
	ball.Size = UDim2.new(0, size, 0, size)
	ball.Position = UDim2.new(0, xPos, 0, yPos)
	ball.BackgroundColor3 = color
	ball.BackgroundTransparency = 0.3
	ball.BorderSizePixel = 0
	
	local corner = Instance.new("UICorner", ball)
	corner.CornerRadius = UDim.new(1, 0)
	
	local glow = Instance.new("Frame", ball)
	glow.Size = UDim2.new(1.5, 0, 1.5, 0)
	glow.Position = UDim2.new(-0.25, 0, -0.25, 0)
	glow.BackgroundColor3 = color
	glow.BackgroundTransparency = 0.7
	glow.BorderSizePixel = 0
	
	local glowCorner = Instance.new("UICorner", glow)
	glowCorner.CornerRadius = UDim.new(1, 0)
	
	return ball
end

local function animateBalls()
	for _, ball in pairs(balls) do
		task.spawn(function()
			local startPos = ball.Position
			local amplitude = math.random(20, 50)
			local speed = math.random(2, 5)
			local time = 0
			
			while ball and ball.Parent do
				time = time + 0.016
				local newY = startPos.Y.Offset + math.sin(time * speed) * amplitude
				ball.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset, startPos.Y.Scale, newY)
				RunService.Heartbeat:Wait()
			end
		end)
	end
end

--------------------------------------------------
-- MAIN PANEL (MODERN RED/DARK THEME)
--------------------------------------------------
local frame = Instance.new("Frame", gui)
frame.Size = UDim2.new(0, 350, 0, 530)
frame.Position = UDim2.new(0, 80, 0.5, -265)
frame.BackgroundColor3 = Color3.fromRGB(30, 10, 10)
frame.BackgroundTransparency = 0.05
frame.BorderSizePixel = 0
frame.Visible = true
frame.Active = true
frame.Draggable = true

local frameCorner = Instance.new("UICorner", frame)
frameCorner.CornerRadius = UDim.new(0, 15)

local frameShadow = Instance.new("Frame", frame)
frameShadow.Size = UDim2.new(1, 15, 1, 15)
frameShadow.Position = UDim2.new(0, -7, 0, -7)
frameShadow.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
frameShadow.BackgroundTransparency = 0.25
frameShadow.BorderSizePixel = 0
frameShadow.ZIndex = -1

local frameShadowCorner = Instance.new("UICorner", frameShadow)
frameShadowCorner.CornerRadius = UDim.new(0, 18)

-- Toggle button (floating)
local toggle = Instance.new("TextButton", gui)
toggle.Size = UDim2.new(0, 55, 0, 55)
toggle.Position = UDim2.new(0, 20, 0.5, -27)
toggle.Text = "πŸ‘‘"
toggle.TextSize = 28
toggle.BackgroundColor3 = Color3.fromRGB(150, 20, 20)
toggle.BackgroundTransparency = 0.05
toggle.BorderSizePixel = 0
toggle.Visible = true
toggle.Active = true
toggle.Draggable = true

local toggleCorner = Instance.new("UICorner", toggle)
toggleCorner.CornerRadius = UDim.new(1, 0)

local titleBar = Instance.new("Frame", frame)
titleBar.Size = UDim2.new(1, 0, 0, 60)
titleBar.Position = UDim2.new(0, 0, 0, 0)
titleBar.BackgroundColor3 = Color3.fromRGB(150, 20, 20)
titleBar.BackgroundTransparency = 0.1
titleBar.BorderSizePixel = 0

local titleBarCorner = Instance.new("UICorner", titleBar)
titleBarCorner.CornerRadius = UDim.new(0, 15)

local titleMain = Instance.new("TextLabel", titleBar)
titleMain.Size = UDim2.new(1, 0, 1, 0)
titleMain.Text = "πŸ‘‘ RUBO PANEL"
titleMain.TextColor3 = Color3.new(1, 1, 1)
titleMain.BackgroundTransparency = 1
titleMain.Font = Enum.Font.GothamBold
titleMain.TextSize = 22

local targetLabel = Instance.new("TextLabel", frame)
targetLabel.Size = UDim2.new(1, 0, 0, 35)
targetLabel.Position = UDim2.new(0, 0, 0, 70)
targetLabel.Text = "🎯 COMMANDS TO: NONE"
targetLabel.TextColor3 = Color3.fromRGB(255, 80, 80)
targetLabel.BackgroundTransparency = 1
targetLabel.Font = Enum.Font.GothamBold
targetLabel.TextSize = 15

local cmdSection = Instance.new("Frame", frame)
cmdSection.Size = UDim2.new(1, -20, 0, 190)
cmdSection.Position = UDim2.new(0, 10, 0, 115)
cmdSection.BackgroundColor3 = Color3.fromRGB(20, 5, 5)
cmdSection.BackgroundTransparency = 0.15
cmdSection.BorderSizePixel = 0

local cmdSectionCorner = Instance.new("UICorner", cmdSection)
cmdSectionCorner.CornerRadius = UDim.new(0, 10)

local cmdTitle = Instance.new("TextLabel", cmdSection)
cmdTitle.Size = UDim2.new(1, 0, 0, 30)
cmdTitle.Position = UDim2.new(0, 0, 0, 0)
cmdTitle.Text = "πŸ“ COMMANDS"
cmdTitle.TextColor3 = Color3.fromRGB(255, 100, 100)
cmdTitle.BackgroundTransparency = 1
cmdTitle.Font = Enum.Font.GothamBold
cmdTitle.TextSize = 14

local cmdText = Instance.new("TextLabel", cmdSection)
cmdText.Size = UDim2.new(1, -20, 1, -40)
cmdText.Position = UDim2.new(0, 10, 0, 35)
cmdText.Text = "!ro <player>     - Start RO spam\n!assemble       - Line up bots behind you\n!Ravan           - Hover bot heads on you\n!rubo              - Bots TP randomly around\n!Ruboking       - Kicks the bot\n!stop              - Stop spam & loops\n!say <msg>       - Say something"
cmdText.TextColor3 = Color3.fromRGB(220, 200, 200)
cmdText.BackgroundTransparency = 1
cmdText.Font = Enum.Font.Gotham
cmdText.TextSize = 13
cmdText.TextXAlignment = Enum.TextXAlignment.Left
cmdText.TextYAlignment = Enum.TextYAlignment.Top

local playerSection = Instance.new("Frame", frame)
playerSection.Size = UDim2.new(1, -20, 0, 200)
playerSection.Position = UDim2.new(0, 10, 0, 315)
playerSection.BackgroundColor3 = Color3.fromRGB(20, 5, 5)
playerSection.BackgroundTransparency = 0.15
playerSection.BorderSizePixel = 0

local playerSectionCorner = Instance.new("UICorner", playerSection)
playerSectionCorner.CornerRadius = UDim.new(0, 10)

local playerTitle = Instance.new("TextLabel", playerSection)
playerTitle.Size = UDim2.new(1, 0, 0, 30)
playerTitle.Position = UDim2.new(0, 0, 0, 0)
playerTitle.Text = "πŸ‘₯ PLAYERS"
playerTitle.TextColor3 = Color3.fromRGB(255, 100, 100)
playerTitle.BackgroundTransparency = 1
playerTitle.Font = Enum.Font.GothamBold
playerTitle.TextSize = 14

local scroll = Instance.new("ScrollingFrame", playerSection)
scroll.Size = UDim2.new(1, -10, 1, -40)
scroll.Position = UDim2.new(0, 5, 0, 35)
scroll.BackgroundTransparency = 1
scroll.BorderSizePixel = 0
scroll.ScrollBarThickness = 6
scroll.ScrollBarImageColor3 = Color3.fromRGB(150, 20, 20)

local function loadPlayers()
	scroll:ClearAllChildren()
	local y = 0

	for _, plr in pairs(Players:GetPlayers()) do
		local btn = Instance.new("TextButton", scroll)
		btn.Size = UDim2.new(1, -10, 0, 35)
		btn.Position = UDim2.new(0, 5, 0, y)
		btn.Text = "πŸ‘€ " .. plr.Name
		btn.BackgroundColor3 = Color3.fromRGB(150, 20, 20)
		btn.BackgroundTransparency = 0.2
		btn.TextColor3 = Color3.new(1, 1, 1)
		btn.Font = Enum.Font.Gotham
		btn.TextSize = 14
		btn.BorderSizePixel = 0

		local btnCorner = Instance.new("UICorner", btn)
		btnCorner.CornerRadius = UDim.new(0, 6)

		btn.MouseEnter:Connect(function() btn.BackgroundTransparency = 0.05 end)
		btn.MouseLeave:Connect(function() btn.BackgroundTransparency = 0.2 end)

		btn.MouseButton1Click:Connect(function()
			allowedPlayer = plr.Name
			targetLabel.Text = "🎯 COMMANDS TO: " .. allowedPlayer
		end)

		y = y + 40
	end
	scroll.CanvasSize = UDim2.new(0, 0, 0, y)
end

loadPlayers()
Players.PlayerAdded:Connect(loadPlayers)
Players.PlayerRemoving:Connect(loadPlayers)

toggle.MouseButton1Click:Connect(function()
	frame.Visible = not frame.Visible
end)

local mainBallPositions = {
	{30, 40, 25, 1},
	{300, 35, 22, 2},
	{25, 480, 28, 3},
	{310, 490, 24, 4},
	{175, 20, 20, 5},
	{175, 500, 20, 6}
}

for _, pos in ipairs(mainBallPositions) do
	local ball = createFloatingBall(frame, pos[1], pos[2], pos[3], ballColors[math.random(1, #ballColors)])
	table.insert(balls, ball)
end

animateBalls()

Features & Information

The best bot script ever seen in your life
#Bot script#Rubo#Rubo spammer

Community Comments (1)

S1R_RuboS1R_RuboMay 21, 2026

This is goat

More Scripts for Universal Scripts