local Players = game:GetService("Players")

local ADMINS = {
	[123456789] = true, -- Replace with your UserId
}

local PREFIX = "/"

local function isAdmin(player)
	return ADMINS[player.UserId] == true
end

local function findPlayer(name)
	name = string.lower(name)

	for _, player in ipairs(Players:GetPlayers()) do
		if string.sub(string.lower(player.Name), 1, #name) == name then
			return player
		end
	end

	return nil
end

local function getRoot(player)
	if player.Character then
		return player.Character:FindFirstChild("HumanoidRootPart")
	end
end

local function runCommand(sender, message)
	if not isAdmin(sender) then
		return
	end

	if string.sub(message, 1, 1) ~= PREFIX then
		return
	end

	local args = string.split(string.sub(message, 2), " ")
	local command = string.lower(args[1])

	if command == "kick" then
		local target = findPlayer(args[2] or "")

		if target then
			target:Kick("You were kicked by an administrator.")
		end

	elseif command == "kill" then
		local target = findPlayer(args[2] or "")

		if target and target.Character then
			local humanoid = target.Character:FindFirstChildOfClass("Humanoid")

			if humanoid then
				humanoid.Health = 0
			end
		end

	elseif command == "speed" then
		local target = findPlayer(args[2] or "")
		local amount = tonumber(args[3])

		if target and amount and target.Character then
			local humanoid = target.Character:FindFirstChildOfClass("Humanoid")

			if humanoid then
				humanoid.WalkSpeed = math.clamp(amount, 0, 100)
			end
		end

	elseif command == "bring" then
		local target = findPlayer(args[2] or "")
		local senderRoot = getRoot(sender)
		local targetRoot = target and getRoot(target)

		if senderRoot and targetRoot then
			targetRoot.CFrame = senderRoot.CFrame * CFrame.new(0, 0, -4)
		end

	elseif command == "tp" then
		local target = findPlayer(args[2] or "")
		local senderRoot = getRoot(sender)
		local targetRoot = target and getRoot(target)

		if senderRoot and targetRoot then
			senderRoot.CFrame = targetRoot.CFrame * CFrame.new(0, 0, -4)
		end
	end
end

Players.PlayerAdded:Connect(function(player)
	player.Chatted:Connect(function(message)
		runCommand(player, message)
	end)
end)