diff --git a/commands/setactive.js b/commands/setactive.js new file mode 100644 index 0000000..cee9696 --- /dev/null +++ b/commands/setactive.js @@ -0,0 +1,83 @@ +const { SlashCommandBuilder, AttachmentBuilder } = require("discord.js"); +const { Card, Character, Band } = require("../models"); + +//fetch all cards owned by the user and list them +module.exports = { + data: new SlashCommandBuilder() + .setName("set_active") + .setDescription("Enable or disable entities") + .addStringOption(option => + option.setName('type') + .setDescription('Entity type') + .setRequired(true) + .addChoices( + { name: 'Band', value: 'band' }, + { name: 'Character', value: 'character' }, + { name: 'DEBUG', value: 'debug' }, + ) + ) + .addIntegerOption(option => + option.setName('id') + .setDescription('Entity ID') + .setRequired(true) + ) + .addBooleanOption(option => + option.setName('active') + .setDescription('Active (true) or inactive (false)') + .setRequired(true) + ) + .addBooleanOption(option => + option.setName('include_children') + .setDescription('Also set children') + .setRequired(false) + ), + permissionLevel: 2, + async execute(interaction) { + await interaction.deferReply(); + const type = interaction.options.getString('type'); + + if (type === 'band') { + let band = Band.findOne({ + where: { + id: interaction.options.getInteger('id') + } + }); + if (!band) { + interaction.reply({ + content: "Band not found", + ephemeral: true + }); + return; + } + band.update({ + active: interaction.options.getBoolean('active') + }); + + if (interaction.options.getBoolean('include_children')) { + let characters = await Character.findAll({ + where: { + bandId: band.id + } + }); + for (let character of characters) { + character.update({ + active: interaction.options.getBoolean('active') + }); + } + } + + await interaction.reply({ + content: `${band.name} is now ${(interaction.options.getBoolean('active') ? 'active' : 'inactive')} (Including children: ${interaction.options.getBoolean('include_children')})`, + }); + return; + } + if (type === 'debug') { + interaction.reply({ + content: 'Debug DEBUG', + ephemeral: true + }); + return; + } + + } +} \ No newline at end of file