function Dispatcher.Evaluate(v,P,O,Q,G)if RunService:IsClient()==true and O~=Players.LocalPlayer then error("\067\097\110\'\116 \101\118\097\108\117\097\116\101 \097 \099\111\109\109\097\110\100 \116\104\097\116 \105\115\110\'\116 \115\101\110\116 \098\121 \116\104\101 \108\111\099\097\108 \112\108\097\121\101\114\046")end local T=Util.SplitString(P)local n=table.remove(T,1)local j=v.Registry:GetCommand(n)if j then T=Util.MashExcessArguments(T,#j.Args)local U=Command.new({Dispatcher=v,Text=P;CommandObject=j,Alias=n,Executor=O;Arguments=T;Data=G})local a,x=U:Parse(Q)if a then return U else return false,x end else return false,("\037\113 \105\115 \110\111\116 \097 \118\097\108\105\100 \099\111\109\109\097\110\100 \110\097\109\101\046 \085\115\101 \116\104\101 \104\101\108\112 \099\111\109\109\097\110\100 \116\111 \115\101\101 \097\108\108 \097\118\097\105\108\097\098\108\101 \099\111\109\109\097\110\100\115\046"):format(tostring(n))end end
--- Takes in raw command information and generates a command out of it.
-- text and executor are required arguments.
-- allowIncompleteData, when true, will ignore errors about arguments missing so we can parse live as the user types.
-- data is for special networked Data about the command gathered on the client. Purely Optional.
-- returns the command if successful, or (false, errorText) if not
function Dispatcher:Evaluate(text, executor, allowIncompleteArguments, data)
	if RunService:IsClient() == true and executor ~= Players.LocalPlayer then
		error("Can't evaluate a command that isn't sent by the local player.")
	end

	local arguments = Util.SplitString(text)
	local commandName = table.remove(arguments, 1)
	local commandObject = self.Registry:GetCommand(commandName)

	if commandObject then
		-- No need to continue splitting when there are no more arguments. We'll just mash any additional arguments into the last one.
		arguments = Util.MashExcessArguments(arguments, #commandObject.Args)

		-- Create the CommandContext and parse it.
		local command = Command.new({
			Dispatcher = self,
			Text = text,
			CommandObject = commandObject,
			Alias = commandName,
			Executor = executor,
			Arguments = arguments,
			Data = data,
		})
		local success, errorText = command:Parse(allowIncompleteArguments)

		if success then
			return command
		else
			return false, errorText
		end
	else
		return false,
			("%q is not a valid command name. Use the help command to see all available commands."):format(
				tostring(commandName)
			)
	end
end
