const { SlashCommandBuilder, SlashCommandStringOption } = require('discord.js'); const { DebugBuilder } = require("../utilities/debugBuilder"); const { BufferToJson } = require("../utilities/utils"); const log = new DebugBuilder("server", "customSlashCommandBuilder"); const { getAllNodes, getAllNodesSync } = require("../utilities/mysqlHandler"); exports.customSlashCommandBuilder = class customSlashCommandBuilder extends SlashCommandBuilder { constructor() { super(); } async addAllSystemPresetOptions() { const nodeObjects = await new Promise((recordResolve, recordReject) => { getAllNodes((nodeRows) => { recordResolve(nodeRows); }); }); log.DEBUG("Node objects: ", nodeObjects); var presetsAvailable = []; for (const nodeObject of nodeObjects) { log.DEBUG("Node object: ", nodeObject); for (const presetName in nodeObject.nearbySystems) presetsAvailable.push(nodeObject.nearbySystems[presetName]); } log.DEBUG("All Presets available: ", presetsAvailable); // Remove duplicates presetsAvailable = [...new Set(presetsAvailable)]; log.DEBUG("DeDuped Presets available: ", presetsAvailable); this.addStringOption(option => option.setName("preset").setRequired(true).setDescription("The channels")); for (const preset of presetsAvailable){ log.DEBUG("Preset: ", preset); this.options[0].addChoices({ 'name': String(preset), 'value': String(preset) }); } log.DEBUG("Preset Options: ", this); return this; } }