const pool = global.pool const fpbx = global.fpbx const client = global.client const log = global.log module.exports = {}; module.exports.execute = async (interaction) => { const subcommand = interaction.options.getSubcommand(); switch (subcommand) { case 'create': // Create an extension for a user await interaction.deferReply({ ephemeral: true }); var forUser = interaction.options.getUser('user'); var newExt = interaction.options.getInteger('extension') ? interaction.options.getInteger('extension') : await fpbx.getNextAvailableExtension(); var [lookup] = await pool.query('SELECT * FROM discord_users WHERE discordId = ?', [forUser.id]); if (lookup) { await interaction.editReply({ content: `User already has an extension, it's ${lookup.extension}!`, ephemeral: true }); return; } await interaction.editReply({ content: `Creating extension ${newExt} for ${forUser.username}`, ephemeral: true }); fpbx.addExtension(newExt, forUser.username).then(async (res) => { if (res.addExtension.status != true) { await interaction.editReply({ content: `Something went wrong :(`, ephemeral: true }); return; } await pool.query('INSERT INTO discord_users (discordId, extension) VALUES (?, ?)', [forUser.id, newExt]); await interaction.editReply({ content: `Extension ${newExt} created! Getting info..`, ephemeral: true }); await fpbx.reload(); const extInfo = await fpbx.getExtension(newExt); await interaction.editReply({ embeds: [{ title: "Extension Info", description: `**PBX Address:** \`${process.env.PBX_HOSTNAME}\`\n**Extension:** \`${extInfo.fetchExtension.user.extension}\`\n**Name:** \`${extInfo.fetchExtension.user.name}\`\n**Password:** ||\`${extInfo.fetchExtension.user.extPassword}\`||`, color: 0x00ff00 }], ephemeral: true }) }).catch(async (error) => { log.error(error); await interaction.editReply({ content: 'There was an error while creating the extension!', ephemeral: true }); }); break; case "delete": // Delete an extension for a user await interaction.deferReply({ ephemeral: true }); var forUser = interaction.options.getUser('user'); var [lookup] = await pool.query('SELECT * FROM discord_users WHERE discordId = ?', [forUser.id]); if (!lookup) { await interaction.editReply({ content: `User does not have an extension!`, ephemeral: true }); return; } await interaction.editReply({ content: `Deleting extension ${lookup.extension} for ${forUser.username}`, ephemeral: true }); fpbx.deleteExtension(lookup.extension).then(async (res) => { console.log(res) if (res[0].deleteExtension.status != true) { await interaction.editReply({ content: `Something went wrong :(`, ephemeral: true }); return; } await pool.query('DELETE FROM discord_users WHERE discordId = ?', [forUser.id]); await fpbx.reload(); await interaction.editReply({ content: `Extension ${lookup.extension} deleted!`, ephemeral: true }); }).catch(async (error) => { log.error(error); await interaction.editReply({ content: 'There was an error while deleting the extension!', ephemeral: true }); }); break; case "lookup": // Get user extension info var forUser = interaction.options.getUser('user'); var [lookup] = await pool.query('SELECT * FROM discord_users WHERE discordId = ?', [forUser.id]); if (!lookup) { await interaction.reply({ content: `User does not have an extension!`, ephemeral: true }); return; } const extInfo = await fpbx.getExtension(lookup.extension); return await interaction.reply({ ephemeral: true, embeds: [ { title: "Extension Info", description: `**PBX Address:** \`${process.env.PBX_HOSTNAME}\`\n**Extension:** \`${extInfo.fetchExtension.user.extension}\`\n**Name:** \`${extInfo.fetchExtension.user.name}\`\n**Password:** ||\`${extInfo.fetchExtension.user.extPassword}\`||`, color: 0x00ff00 } ] }); break; } }