const { ButtonBuilder, ButtonStyle, SlashCommandBuilder, ActionRow, ActionRowBuilder} = require('discord.js') const config = require('../../config.json') if (!config.proxmoxUser || !config.proxmoxPass || !config.proxmoxHostname) { console.error("Proxmox credentials not found in config.json. Exiting."); process.exit(1); } proxmox = require("proxmox")(config.proxmoxUser, config.proxmoxPass, config.proxmoxHostname); module.exports = { cooldowns: 60, data: new SlashCommandBuilder() .setName('start-mc') .setDescription('Starts the minecraft server machine.'), async execute(interaction) { const confirm = new ButtonBuilder() .setCustomId('confirm') .setLabel('Confirm') .setStyle(ButtonStyle.Primary) const cancel = new ButtonBuilder() .setCustomId('cancel') .setLabel('Cancel') .setStyle(ButtonStyle.Danger) const row = new ActionRowBuilder() .addComponents(cancel, confirm) const response = await interaction.reply({ content: 'Are you sure you want to start the Minecraft server?', components: [row] }) const collectorFilter = i => i.user.id === interaction.user.id; try { const confirmation = await response.awaitMessageComponent({ filter: collectorFilter, time: 30_000 }); if (confirmation.customId === 'confirm') { proxmox.qemu.start("pve", "102", function(err, res) { if (err) { confirmation.update("Error starting the Minecraft server: " + err); } else { const linkButton = new ButtonBuilder() .setStyle(ButtonStyle.Link) .setLabel('Web Interface') .setURL('https://mc.louisgallet.fr') const row = new ActionRowBuilder() .addComponents(linkButton) confirmation.update({content: "Minecraft server started successfully. Please wait a few minutes for it to boot.", components: [row]}); } }) } else if (confirmation.customId === 'cancel') { await confirmation.update({ content: 'Minecraft server start cancelled.', components: [] }); } } catch (e) { await confirmation.update({ content: 'You took too long to respond.', components: [] }); } } }