module.exports = (commands, prefix) => {
	if (!commands) throw new Error("No commands were provided to the Soft UI cmdHandler.");
	if (!prefix) prefix = "/";

	const finalCategories = [];
	const categories = [];

	commands.map(cmd => {
		if (!categories.includes(cmd.category)) categories.push(cmd.category);
	});

	for (const category of categories) {
		if (category.toLowerCase().includes("admin") || category.toLowerCase().includes("owner") || category.toLowerCase().includes("development") || category.toLowerCase().includes("suncountry") || category.toLowerCase().includes("iat")) continue;
		const commandsArr = [];

		commands.filter(cmd => cmd.category === category).map(cmd => {
			const obj = {
				commandName: cmd.name,
				commandUsage: `${cmd.usage ? cmd.usage : `${prefix}${cmd.name}`}`,
				commandDescription: cmd.description,
				commandAlias: cmd.aliases?.join(", ") || "None",
			};
			commandsArr.push(obj);
		});


		const categoryObj = {
			categoryId: category,
			category: `${capitalizeFirstLetter(category)}`,
			subTitle: `${capitalizeFirstLetter(category)} commands`,
			list: commandsArr,
		};

		finalCategories.push(categoryObj);
	}

	function capitalizeFirstLetter(string) {
		return string.charAt(0).toUpperCase() + string.slice(1);
	}

	return finalCategories;
};