From e6332dffc9c59ca233ba696f12f50c185e583cb4 Mon Sep 17 00:00:00 2001 From: Logan Cusano Date: Sat, 15 Jul 2023 17:58:12 -0400 Subject: [PATCH] Update join command to accept a specific node ID --- Server/commands/join.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Server/commands/join.js b/Server/commands/join.js index 6dab9a7..e7f59b3 100644 --- a/Server/commands/join.js +++ b/Server/commands/join.js @@ -1,7 +1,7 @@ // Modules const { SlashCommandBuilder } = require('discord.js'); const { DebugBuilder } = require("../utilities/debugBuilder"); -const { getMembersInRole, getAllClientIds, filterAutocompleteValues } = require("../utilities/utils"); +const { getMembersInRole, getAllClientIds, filterAutocompleteValues, getKeyByArrayValue } = require("../utilities/utils"); const { requestOptions, sendHttpRequest } = require("../utilities/httpRequests"); const { getOnlineNodes, updateNodeInfo, addNodeConnection, getConnectionByNodeId, getAllConnections } = require("../utilities/mysqlHandler"); @@ -14,15 +14,16 @@ const log = new DebugBuilder("server", "join"); * @param {*} presetName The preset name to listen to on the client * @param {*} channelId The channel ID to join the bot to * @param {*} connections EITHER A collection of clients that are currently connected OR a single discord client ID (NOT dev portal ID) that should be used to join the server with + * @param {number} nodeId [OPTIONAL] The node ID to join with (will join with another node if given node is not available) * @returns */ -async function joinServerWrapper(presetName, channelId, connections) { +async function joinServerWrapper(presetName, channelId, connections, nodeId = 0) { // Get nodes online var onlineNodes = await new Promise((recordResolve, recordReject) => { getOnlineNodes((nodeRows) => { recordResolve(nodeRows); }); - }); + }); // Check which nodes have the selected preset onlineNodes = onlineNodes.filter(node => node.presets.includes(presetName)); @@ -63,7 +64,10 @@ async function joinServerWrapper(presetName, channelId, connections) { selectedClientId = availableClientIds[0]; } - const selectedNode = nodesCurrentlyAvailable[0]; + let selectedNode; + if (nodeId > 0) selectedNode = getKeyByArrayValue(nodesCurrentlyAvailable, nodeId); + + if (!selectedNode) selectedNode = nodesCurrentlyAvailable[0]; const reqOptions = new requestOptions("/bot/join", "POST", selectedNode.ip, selectedNode.port); const postObject = {