From 37cbab368e5688dd879c3b74e3bb5e628312ae54 Mon Sep 17 00:00:00 2001 From: supremesupreme <91563714+supremesupreme@users.noreply.github.com> Date: Sat, 5 Oct 2024 15:52:30 +0100 Subject: [PATCH] Create ForEachObjectArray.js --- src/functions/ForEachObjectArray.js | 59 +++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/functions/ForEachObjectArray.js diff --git a/src/functions/ForEachObjectArray.js b/src/functions/ForEachObjectArray.js new file mode 100644 index 000000000..84e982ab0 --- /dev/null +++ b/src/functions/ForEachObjectArray.js @@ -0,0 +1,59 @@ +const Interpreter = require("../core/interpreter.js"); +/** + * @param {import("..").Data} d + */ +module.exports = async (d) => { + const data = d.util.aoiFunc(d); + if (data.err) return d.error(data.err); + + const [name, property, awaitedCmd, awaitData = "{}", endCmd] = data.inside.splits; + + if (!d.data.objects?.[name]) { + return d.aoiError.fnError(d, "custom", { inside: data.inside }, "Array With Name '" + name + "' Does Not Exist."); + } + + if (!property) { + return d.aoiError.fnError(d, "custom", { inside: data.inside }, "Property not found. "); + } + + let cmd = d.client.cmd.awaited.find((c) => c.name.toLowerCase() === awaitedCmd.toLowerCase()); + + if (!cmd) { + return d.aoiError.fnError(d, "custom", { inside: data.inside }, "Awaited Command With Name '" + awaitedCmd + "' Does Not Exist."); + } + let parsedData; + try { + parsedData = JSON.parse(awaitData); + } catch (e) { + return d.aoiError.fnError(d, "custom", {}, `Failed To Parse Data With Reason: ${e.message}`); + } + + for (const key in property) { + console.log(`Key: ${key}`); + + property[key].forEach((value) => { + console.log(value); + }); + } + + let i = 0; + for (const el of d.arrays[name]) { + const c = { ...cmd }; + c.code = c.code.replaceAll("{value}", el); + await Interpreter(d.client, d.message, d.args, c, d.client.db, true, undefined, { ...d.data, awaitData: parsedData, index: i }); + i++; + } + + if (endCmd.trim() !== "") { + const cmd = d.client.cmd.awaited.find((x) => x.name.toLowerCase() === endCmd.addBrackets().toLowerCase()); + if (!cmd) return; + await d.interpreter(d.client, d.message, d.args, cmd, d.client.db, false, undefined, { + awaitData, + index: i + }); + } + + return { + code: d.util.setCode(data) + }; +};