From 2471564098b1de1a635d90f381ef67cf2cb43511 Mon Sep 17 00:00:00 2001 From: Andrew Lee Date: Fri, 8 Jul 2022 12:09:06 -0400 Subject: New command; Some tweaks --- AudioBackend.js | 8 +++----- README.md | 1 + commands/reshuffle.js | 37 +++++++++++++++++++++++++++++++++++++ commands/status.js | 11 ++++++++--- 4 files changed, 49 insertions(+), 8 deletions(-) create mode 100644 commands/reshuffle.js diff --git a/AudioBackend.js b/AudioBackend.js index d1f54c4..bdd3738 100644 --- a/AudioBackend.js +++ b/AudioBackend.js @@ -48,8 +48,9 @@ export async function voiceInit(bot) { adapterCreator: channel.guild.voiceAdapterCreator }); - connection.on(VoiceConnectionStatus.Ready, () => { + connection.on(VoiceConnectionStatus.Ready, async () => { console.log('Ready to blast some beats!'); + await shufflePlaylist(bot); }); connection.on(VoiceConnectionStatus.Destroyed, () => { @@ -61,7 +62,6 @@ export async function voiceInit(bot) { nextAudio(bot); }) - await shufflePlaylist(bot); return connection.subscribe(player); }).catch(e => { console.error(e) }) } @@ -84,7 +84,7 @@ function shuffleArray(array) { return array; } -async function shufflePlaylist(bot) { +export async function shufflePlaylist(bot) { console.log('Shuffling beats...'); currentTrack = 0 audioArray = files; @@ -97,12 +97,10 @@ async function shufflePlaylist(bot) { export async function nextAudio(bot) { let totalTrack = files.length totalTrack-- - console.log(totalTrack) if (currentTrack > totalTrack) { console.log('All beats in the playlist has finished, reshuffling...') await shufflePlaylist(); } else { - console.log(files.length) currentTrack++ audio = audioArray[currentTrack]; } diff --git a/README.md b/README.md index 66e9108..89ec652 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,7 @@ play - Resumes music. play (int) - Input a number for the selection for the audio file. pause - Pauses music. skip - Skips the audio track. +reshuffle - Reshuffles the playlist leave - Leaves voice chat. shutdown - Powers off the bot. ``` diff --git a/commands/reshuffle.js b/commands/reshuffle.js new file mode 100644 index 0000000..5312d68 --- /dev/null +++ b/commands/reshuffle.js @@ -0,0 +1,37 @@ +/************************************************************************** + * + * 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 . + * + ***************************************************************************/ + +import { SlashCommandBuilder } from '@discordjs/builders' +import { player, shufflePlaylist } from "../AudioBackend.js" +import { PermissionFlagsBits } from "discord-api-types/v10" + +export default { + data: new SlashCommandBuilder() + .setName('reshuffle') + .setDescription('Reshuffles the playlist') + .setDefaultMemberPermissions(PermissionFlagsBits.Administrator), + async execute(interaction) { + // Command not fully functional yet + await interaction.reply({content:`Reshuffling the playlist...`, ephemeral:true}); + player.stop(); + return await shufflePlaylist(); + }, +}; \ No newline at end of file diff --git a/commands/status.js b/commands/status.js index e012239..7952238 100644 --- a/commands/status.js +++ b/commands/status.js @@ -28,13 +28,18 @@ export default { .setName('status') .setDescription('Checks what audio file is playing currently'), async execute(interaction, bot) { - let nextAudio = currentTrack - nextAudio++ + + let audioID = currentTrack + audioID++ + + let audioName = audioArray[audioID] + audioName = audioName.split('.').slice(0, -1).join('.'); + let controlEmbed = new MessageEmbed() .setAuthor({name: `${bot.user.username} Status`, iconURL: bot.user.avatarURL()}) .addField('State', playerState) .addField('Currently Playing', audio) - .addField('Next Music', audioArray[nextAudio]) + .addField('Up Next', audioName) .setColor('#0066ff') interaction.reply({embeds:[controlEmbed], ephemeral:true}) }, -- cgit v1.2.3