diff options
Diffstat (limited to 'commands')
| -rw-r--r-- | commands/control.js | 122 | ||||
| -rw-r--r-- | commands/help.js | 2 | ||||
| -rw-r--r-- | commands/leave.js | 32 | ||||
| -rw-r--r-- | commands/pause.js | 35 | ||||
| -rw-r--r-- | commands/play.js | 2 | ||||
| -rw-r--r-- | commands/skip.js | 31 | ||||
| -rw-r--r-- | commands/status.js | 32 |
7 files changed, 134 insertions, 122 deletions
diff --git a/commands/control.js b/commands/control.js index 6007dcc..435c102 100644 --- a/commands/control.js +++ b/commands/control.js @@ -20,14 +20,9 @@ ***************************************************************************/ import { SlashCommandBuilder } from '@discordjs/builders' -import { MessageEmbed, MessageActionRow, MessageButton } from 'discord.js' -import { audio, player, destroyAudio, voiceInit, stopBot, searchAudio, playerState, audioState } from '../AudioBackend.js' +import { controlPanel } from '../AudioBackend.js' import config from '../config.json' assert {type: 'json'} -export let controlEmbed -export let controlButtons -export let controlButtons2 - let runOnce = false export default { @@ -36,119 +31,6 @@ 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 === true) return await interaction.reply({content:'You already executed this command', ephemeral:true}) - - 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') - - 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'), - ); - - 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 filter = i => i.user.id === config.botOwner; - - const collector = interaction.channel.createMessageComponentCollector({filter}); - - 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); - } - }); - - collector.on('end', collected => console.log(`Collected ${collected.size} items`)); - runOnce = true - return await interaction.reply({embeds:[controlEmbed], components:[controlButtons]}); + await controlPanel(interaction, bot); }, };
\ No newline at end of file diff --git a/commands/help.js b/commands/help.js index 11d9d60..ec0283c 100644 --- a/commands/help.js +++ b/commands/help.js @@ -36,6 +36,6 @@ export default { .setFooter({text:'© Copyright 2020-2022 Andrew Lee'}) .setColor('#0066ff') - return await interaction.reply({ embeds: [helpEmbed]}); + return await interaction.reply({ embeds: [helpEmbed] }); }, };
\ No newline at end of file diff --git a/commands/leave.js b/commands/leave.js new file mode 100644 index 0000000..e1fa67d --- /dev/null +++ b/commands/leave.js @@ -0,0 +1,32 @@ +/************************************************************************** + * + * DLAP Bot: A Discord bot that plays local audio tracks. + * (C) Copyright 2022 + * Programmed by Andrew Lee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + * + ***************************************************************************/ + +import { SlashCommandBuilder } from '@discordjs/builders' + +export default { + data: new SlashCommandBuilder() + .setName('leave') + .setDescription('Leaves the voice chat'), + async execute(interaction) { + + + }, +};
\ No newline at end of file diff --git a/commands/pause.js b/commands/pause.js new file mode 100644 index 0000000..c0edeeb --- /dev/null +++ b/commands/pause.js @@ -0,0 +1,35 @@ +/************************************************************************** + * + * DLAP Bot: A Discord bot that plays local audio tracks. + * (C) Copyright 2022 + * Programmed by Andrew Lee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + * + ***************************************************************************/ + +import { SlashCommandBuilder } from '@discordjs/builders' +import config from '../config.json' assert {type: 'json'} + +export let integer; + +export default { + data: new SlashCommandBuilder() + .setName('pause') + .setDescription('Pauses the player'), + 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 }); + + }, +};
\ No newline at end of file diff --git a/commands/play.js b/commands/play.js index cc88bb3..a6d3453 100644 --- a/commands/play.js +++ b/commands/play.js @@ -28,7 +28,7 @@ export let integer; export default { data: new SlashCommandBuilder() .setName('play') - .setDescription('Plays the audio by number') + .setDescription('Plays the player') .addIntegerOption(option => option.setName('int') .setDescription('Input a number for the selection for the audio file.'), diff --git a/commands/skip.js b/commands/skip.js new file mode 100644 index 0000000..11a0c83 --- /dev/null +++ b/commands/skip.js @@ -0,0 +1,31 @@ +/************************************************************************** + * + * DLAP Bot: A Discord bot that plays local audio tracks. + * (C) Copyright 2022 + * Programmed by Andrew Lee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + * + ***************************************************************************/ + +import { SlashCommandBuilder } from '@discordjs/builders' + +export default { + data: new SlashCommandBuilder() + .setName('skip') + .setDescription('Skips the track'), + async execute(interaction) { + + }, +};
\ No newline at end of file diff --git a/commands/status.js b/commands/status.js new file mode 100644 index 0000000..f36f994 --- /dev/null +++ b/commands/status.js @@ -0,0 +1,32 @@ +/************************************************************************** + * + * DLAP Bot: A Discord bot that plays local audio tracks. + * (C) Copyright 2022 + * Programmed by Andrew Lee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + * + ***************************************************************************/ + +import { SlashCommandBuilder } from '@discordjs/builders' +import { readdirSync, readdir } from 'fs' + +export default { + data: new SlashCommandBuilder() + .setName('status') + .setDescription('Checks what audio file is playing currently'), + async execute(interaction) { + + }, +};
\ No newline at end of file |
