From bec4c2d74381e907c2c6340cf1b8c7522526e7f9 Mon Sep 17 00:00:00 2001 From: Logan Cusano Date: Sun, 25 Jun 2023 02:08:46 -0400 Subject: [PATCH] Add discord commands to allow users to start recording --- Server/commands/start-record.js | 37 +++++++++++++++++++++++++++++++++ Server/commands/stop-record.js | 37 +++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 Server/commands/start-record.js create mode 100644 Server/commands/stop-record.js diff --git a/Server/commands/start-record.js b/Server/commands/start-record.js new file mode 100644 index 0000000..443a63f --- /dev/null +++ b/Server/commands/start-record.js @@ -0,0 +1,37 @@ +const { SlashCommandBuilder } = require('discord.js'); +const { DebugBuilder } = require("../utilities/debugBuilder"); +const log = new DebugBuilder("server", "start-record"); +const { getAllConnections } = require("../utilities/mysqlHandler"); +const { requestOptions, sendHttpRequest } = require("../utilities/httpRequests"); + +module.exports = { + data: new SlashCommandBuilder() + .setName('start-record') + .setDescription('Starts recording all bots online'), + example: "start-record", + isPrivileged: false, + requiresTokens: false, + defaultTokenUsage: 0, + deferInitialReply: false, + async execute(interaction) { + try{ + await interaction.reply(`Ok, ${interaction.member}. **Recording** will begin shorting.`); + // Get nodes online + getAllConnections((connections) => { + for (const connection of connections){ + const reqOptions = new requestOptions("/bot/startRecording", "POST", connection.node.ip, connection.node.port); + sendHttpRequest(reqOptions, JSON.stringify({}), async (responseObj) => { + log.VERBOSE("Response Object from node: ", connection, responseObj); + if (!responseObj || !responseObj.statusCode == 202 || !responseObj.statusCode == 204) return false; + if (responseObj.statusCode >= 300) return log.ERROR(responseObj.body); + // Bot is recording + await interaction.channel.send(`**${connection.clientObject.name} is now recording**`); + }); + } + }); + }catch(err){ + log.ERROR(err) + //await interaction.reply(err.toString()); + } + } +}; \ No newline at end of file diff --git a/Server/commands/stop-record.js b/Server/commands/stop-record.js new file mode 100644 index 0000000..127d445 --- /dev/null +++ b/Server/commands/stop-record.js @@ -0,0 +1,37 @@ +const { SlashCommandBuilder } = require('discord.js'); +const { DebugBuilder } = require("../utilities/debugBuilder"); +const log = new DebugBuilder("server", "stop-record"); +const { getAllConnections } = require("../utilities/mysqlHandler"); +const { requestOptions, sendHttpRequest } = require("../utilities/httpRequests"); + +module.exports = { + data: new SlashCommandBuilder() + .setName('stop-record') + .setDescription('Starts recording all bots online'), + example: "stop-record", + isPrivileged: false, + requiresTokens: false, + defaultTokenUsage: 0, + deferInitialReply: false, + async execute(interaction) { + try{ + await interaction.reply(`Ok, ${interaction.member}. **Recording** will stop shorting.`); + // Get nodes online + getAllConnections((connections) => { + for (const connection of connections){ + const reqOptions = new requestOptions("/bot/stopRecording", "POST", connection.node.ip, connection.node.port); + sendHttpRequest(reqOptions, JSON.stringify({}), async (responseObj) => { + log.VERBOSE("Response Object from node: ", connection, responseObj); + if (!responseObj || !responseObj.statusCode == 204) return false; + if (responseObj.statusCode >= 300) return log.ERROR(responseObj.body); + // Bot is recording + await interaction.channel.send(`**${connection.clientObject.name} has stopped recording**`); + }); + } + }); + }catch(err){ + log.ERROR(err) + //await interaction.reply(err.toString()); + } + } +}; \ No newline at end of file