// Modules const { SlashCommandBuilder } = require('discord.js'); const { DebugBuilder } = require("../utilities/debugBuilder"); const { filterAutocompleteValues, filterPresetsAvailable } = require("../utilities/utils"); const { getOnlineNodes, getAllConnections } = require("../utilities/mysqlHandler"); const { joinServerWrapper } = require("../controllers/adminController"); // Global Vars const log = new DebugBuilder("server", "join"); module.exports = { data: new SlashCommandBuilder() .setName('join') .setDescription('Join the channel you are in with the preset you choose') .addStringOption(option => option.setName("preset") .setDescription("The preset you would like to listen to") .setAutocomplete(true) .setRequired(true)), example: "join", isPrivileged: false, requiresTokens: false, defaultTokenUsage: 0, deferInitialReply: true, async autocomplete(interaction) { const nodeObjects = await new Promise((recordResolve, recordReject) => { getOnlineNodes((nodeRows) => { recordResolve(nodeRows); }); }); const options = await filterPresetsAvailable(nodeObjects); // Filter the results to what the user is entering filterAutocompleteValues(interaction, options); }, async execute(interaction) { try{ const guildId = interaction.guild.id; const presetName = interaction.options.getString('preset'); const channelId = interaction.member.voice.channel.id; if (!channelId) return interaction.editReply(`You need to be in a voice channel, ${interaction.user}`); log.DEBUG(`Join requested by: ${interaction.user.username}, to: '${presetName}', in channel: ${channelId} / ${guildId}`); const connections = await getAllConnections(); log.DEBUG("Current Connections: ", connections); const selectedClientId = await joinServerWrapper(presetName, channelId, connections); await interaction.editReply(`Ok, ${interaction.member}. **${selectedClientId.name}** is joining your channel.`); //await interaction.channel.send('**Pong.**'); // This will send a message to the channel of the interaction outside of the initial reply }catch(err){ log.ERROR(err) //await interaction.reply(err.toString()); } } }