aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AudioBackend.js8
-rw-r--r--README.md1
-rw-r--r--commands/reshuffle.js37
-rw-r--r--commands/status.js11
4 files changed, 49 insertions, 8 deletions
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 <https://www.gnu.org/licenses/>.
+ *
+ ***************************************************************************/
+
+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})
},