function Util.MakeAliasCommand(Q,x)return{Name=Q,Aliases={},Description=x,Group="\085\115\101\114\065\108\105\097\115",Args={{Type="\115\116\114\105\110\103",Name="\065\114\103\117\109\101\110\116 \049";Description="";Default=""};{Type="\115\116\114\105\110\103";Name="\065\114\103\117\109\101\110\116 \050",Description="",Default=""},{Type="\115\116\114\105\110\103";Name="\065\114\103\117\109\101\110\116 \051",Description="",Default=""},{Type="\115\116\114\105\110\103",Name="\065\114\103\117\109\101\110\116 \052";Description="";Default=""},{Type="\115\116\114\105\110\103";Name="\065\114\103\117\109\101\110\116 \053";Description="",Default=""}};Run=function(Q,...)local n={...}local Z=Util.SplitStringSimple(x,"\038\038")for x,N in ipairs(Z)do local g=Q.Dispatcher:EvaluateAndRun(Util.RunEmbeddedCommands(Q.Dispatcher,Util.SubstituteArgs(N,n)))if x==#Z then return g else Q:Reply(g)end end return""end}end

function Util.MakeAliasCommand(name, commandString)
	return {
		Name = name,
		Aliases = {},
		Description = commandString,
		Group = "UserAlias",
		Args = {
			{
				Type = "string",
				Name = "Argument 1",
				Description = "",
				Default = ""
			},
			{
				Type = "string",
				Name = "Argument 2",
				Description = "",
				Default = ""
			},
			{
				Type = "string",
				Name = "Argument 3",
				Description = "",
				Default = ""
			},
			{
				Type = "string",
				Name = "Argument 4",
				Description = "",
				Default = ""
			},
			{
				Type = "string",
				Name = "Argument 5",
				Description = "",
				Default = ""
			}
		},
		Run = function(context, ...)
			local args = {...}
			local commands = Util.SplitStringSimple(commandString, "&&")

			for i, command in ipairs(commands) do
				local output = context.Dispatcher:EvaluateAndRun(
					Util.RunEmbeddedCommands(
						context.Dispatcher,
						Util.SubstituteArgs(command, args)
					)
				)
				if i == #commands then
					return output -- return last command's output
				else
					context:Reply(output)
				end
			end

			return ""
		end
	}
end
