aboutsummaryrefslogtreecommitdiff
path: root/commands/control.js
diff options
context:
space:
mode:
authorAndrew Lee <alee14498@protonmail.com>2022-04-22 23:01:50 -0400
committerAndrew Lee <alee14498@protonmail.com>2022-04-22 23:01:50 -0400
commit219b64b51b0297469c7a0401767d7f533c8ac7c3 (patch)
tree8fda370a9b32226399ba2a40be17857470c5cca6 /commands/control.js
parenta555449001cbe87503e5ffe9b311aceb59592c63 (diff)
downloadDLAP-219b64b51b0297469c7a0401767d7f533c8ac7c3.tar.gz
DLAP-219b64b51b0297469c7a0401767d7f533c8ac7c3.tar.bz2
DLAP-219b64b51b0297469c7a0401767d7f533c8ac7c3.zip
Buttons can now be disabled from control
Diffstat (limited to 'commands/control.js')
-rw-r--r--commands/control.js203
1 files changed, 110 insertions, 93 deletions
diff --git a/commands/control.js b/commands/control.js
index bac86d0..6007dcc 100644
--- a/commands/control.js
+++ b/commands/control.js
@@ -25,6 +25,9 @@ import { audio, player, destroyAudio, voiceInit, stopBot, searchAudio, playerSta
import config from '../config.json' assert {type: 'json'}
export let controlEmbed
+export let controlButtons
+export let controlButtons2
+
let runOnce = false
export default {
@@ -33,105 +36,119 @@ export default {
.setDescription('Controlling the music'),
async execute(interaction, bot) {
if (![config.botOwner].includes(interaction.user.id)) return await interaction.reply({ content: "You do not have permissions to execute this command.", ephemeral: true });
- if (runOnce === false) {
- controlEmbed = new MessageEmbed()
- .setAuthor({name: `${bot.user.username} Control Panel`, iconURL: bot.user.avatarURL()})
- .addField('State', playerState)
- .addField('Currently Playing', audio)
- //.addField('Next Music', '(a possible feature when queue system is implemented?)')
- .setColor('#0066ff')
+ if (runOnce === true) return await interaction.reply({content:'You already executed this command', ephemeral:true})
- const controlButtons = new MessageActionRow()
- .addComponents(
- new MessageButton()
- .setStyle('SUCCESS')
- .setLabel('Join')
- .setCustomId('join'),
- new MessageButton()
- .setStyle('PRIMARY')
- .setLabel('Play')
- .setCustomId('play'),
- new MessageButton()
- .setStyle('PRIMARY')
- .setLabel('Pause')
- .setCustomId('pause'),
- new MessageButton()
- .setStyle('SECONDARY')
- .setLabel('Skip')
- .setCustomId('skip'),
- new MessageButton()
- .setStyle('SECONDARY')
- .setLabel('>>')
- .setCustomId('next'),
- );
+ controlEmbed = new MessageEmbed()
+ .setAuthor({name: `${bot.user.username} Control Panel`, iconURL: bot.user.avatarURL()})
+ .addField('State', playerState)
+ .addField('Currently Playing', audio)
+ //.addField('Next Music', '(a possible feature when queue system is implemented?)')
+ .setColor('#0066ff')
- const controlButtons2 = new MessageActionRow()
- .addComponents(
- new MessageButton()
- .setStyle('SECONDARY')
- .setLabel('<<')
- .setCustomId('back'),
- new MessageButton()
- .setStyle('DANGER')
- .setLabel('Leave')
- .setCustomId('leave'),
- new MessageButton()
- .setStyle('DANGER')
- .setLabel('Power Off')
- .setCustomId('stop')
- )
+ controlButtons = new MessageActionRow()
+ .addComponents(
+ new MessageButton()
+ .setStyle('SUCCESS')
+ .setLabel('Join')
+ .setCustomId('join')
+ .setDisabled(true),
+ new MessageButton()
+ .setStyle('SECONDARY')
+ .setLabel('Play')
+ .setCustomId('play')
+ .setDisabled(true),
+ new MessageButton()
+ .setStyle('SECONDARY')
+ .setLabel('Pause')
+ .setCustomId('pause'),
+ new MessageButton()
+ .setStyle('SECONDARY')
+ .setLabel('Skip')
+ .setCustomId('skip'),
+ new MessageButton()
+ .setStyle('PRIMARY')
+ .setLabel('>>')
+ .setCustomId('next'),
+ );
- const filter = i => i.user.id === config.botOwner;
+ controlButtons2 = new MessageActionRow()
+ .addComponents(
+ new MessageButton()
+ .setStyle('PRIMARY')
+ .setLabel('<<')
+ .setCustomId('back'),
+ new MessageButton()
+ .setStyle('DANGER')
+ .setLabel('Leave')
+ .setCustomId('leave'),
+ new MessageButton()
+ .setStyle('DANGER')
+ .setLabel('Power Off')
+ .setCustomId('stop')
+ )
- const collector = interaction.channel.createMessageComponentCollector({filter});
+ const filter = i => i.user.id === config.botOwner;
- collector.on('collect', async ctlButton => {
- if (ctlButton.customId === 'join') {
- await ctlButton.reply({content:'Joining voice channel', ephemeral:true});
- return await voiceInit(bot);
- }
- if (ctlButton.customId === 'play') {
- await ctlButton.reply({content:'Resuming music', ephemeral:true});
- audioState();
- return player.unpause();
- }
- if (ctlButton.customId === 'pause') {
- await ctlButton.reply({content:'Pausing music', ephemeral:true});
- audioState();
- return player.pause();
- }
- if (ctlButton.customId === 'skip') {
- await ctlButton.reply({content:`Skipping ${audio}`, ephemeral:true});
- player.stop();
- return await searchAudio(bot, interaction);
- }
- if (ctlButton.customId === 'next') {
- return await interaction.editReply({ components: [controlButtons2] }).then(ctlButton.deferUpdate());
- }
- if (ctlButton.customId === 'back') {
- return await interaction.editReply({ components: [controlButtons] }).then(ctlButton.deferUpdate());
- }
- if (ctlButton.customId === 'leave') {
- await ctlButton.reply({content:'Leaving voice channel', ephemeral:true});
- console.log('Leaving voice channel...');
- runOnce = false
- await interaction.deleteReply();
- return await destroyAudio(interaction);
- }
- if (ctlButton.customId === 'stop') {
- await ctlButton.reply({content:`Powering off ${bot.user.username}...`, ephemeral:true});
- runOnce = false
- await interaction.deleteReply();
- return await stopBot(bot, interaction);
- }
- });
+ const collector = interaction.channel.createMessageComponentCollector({filter});
- collector.on('end', collected => console.log(`Collected ${collected.size} items`));
+ collector.on('collect', async ctlButton => {
+ if (ctlButton.customId === 'join') {
+ await ctlButton.reply({content:'Joining voice channel', ephemeral:true});
+ controlButtons.components[0].setDisabled(true);
+ controlButtons.components[1].setDisabled(true);
+ controlButtons.components[2].setDisabled(false);
+ controlButtons.components[3].setDisabled(false);
+ controlButtons2.components[1].setDisabled(false);
+ await interaction.editReply({components:[controlButtons]});
+ return await voiceInit(bot);
+ }
+ if (ctlButton.customId === 'play') {
+ controlButtons.components[2].setDisabled(false);
+ controlButtons.components[1].setDisabled(true);
+ await interaction.editReply({components:[controlButtons]});
+ await ctlButton.reply({content:'Resuming music', ephemeral:true});
+ audioState();
+ return player.unpause();
+ }
+ if (ctlButton.customId === 'pause') {
+ controlButtons.components[2].setDisabled(true);
+ controlButtons.components[1].setDisabled(false);
+ await interaction.editReply({components:[controlButtons]});
+ await ctlButton.reply({content:'Pausing music', ephemeral:true});
+ audioState();
+ return player.pause();
+ }
+ if (ctlButton.customId === 'skip') {
+ await ctlButton.reply({content:`Skipping ${audio}`, ephemeral:true});
+ player.stop();
+ return await searchAudio(bot, interaction);
+ }
+ if (ctlButton.customId === 'next') {
+ return await interaction.editReply({ components: [controlButtons2] }).then(ctlButton.deferUpdate());
+ }
+ if (ctlButton.customId === 'back') {
+ return await interaction.editReply({ components: [controlButtons] }).then(ctlButton.deferUpdate());
+ }
+ if (ctlButton.customId === 'leave') {
+ await ctlButton.reply({content:'Leaving voice channel', ephemeral:true});
+ console.log('Leaving voice channel...');
+ controlButtons.components[0].setDisabled(false);
+ controlButtons.components[1].setDisabled(true);
+ controlButtons.components[2].setDisabled(true);
+ controlButtons.components[3].setDisabled(true);
+ controlButtons2.components[1].setDisabled(true);
+ await interaction.editReply({components:[controlButtons2]});
+ return await destroyAudio(interaction);
+ }
+ if (ctlButton.customId === 'stop') {
+ await ctlButton.reply({content:`Powering off ${bot.user.username}...`, ephemeral:true});
+ await interaction.deleteReply();
+ return await stopBot(bot, interaction);
+ }
+ });
- runOnce = true
- return await interaction.reply({embeds:[controlEmbed], components:[controlButtons]});
- } else {
- return await interaction.reply({content:'You already executed this command', ephemeral:true})
- }
+ collector.on('end', collected => console.log(`Collected ${collected.size} items`));
+ runOnce = true
+ return await interaction.reply({embeds:[controlEmbed], components:[controlButtons]});
},
}; \ No newline at end of file