From d5ca0d40e77462cc7ad9e0d26d3430da21874d4f Mon Sep 17 00:00:00 2001 From: Andrew Lee Date: Wed, 13 Jul 2022 21:58:34 -0400 Subject: Renamed skip to next, added previous command --- AudioBackend.js | 14 +++++++++++++- README.md | 2 +- bot.js | 2 ++ commands/next.js | 36 ++++++++++++++++++++++++++++++++++++ commands/previous.js | 34 ++++++++++++++++++++++++++++++++++ commands/reshuffle.js | 2 +- commands/skip.js | 36 ------------------------------------ 7 files changed, 87 insertions(+), 39 deletions(-) create mode 100644 commands/next.js create mode 100644 commands/previous.js delete mode 100644 commands/skip.js diff --git a/AudioBackend.js b/AudioBackend.js index 354f26d..7d24b1c 100644 --- a/AudioBackend.js +++ b/AudioBackend.js @@ -39,6 +39,7 @@ export let currentTrack; export let playerState; export let isAudioStatePaused; +let totalTrack = files.length; export async function voiceInit(bot) { bot.channels.fetch(voiceChannel).then(async channel => { @@ -97,7 +98,6 @@ export async function shufflePlaylist(bot) { } export async function nextAudio(bot) { - let totalTrack = files.length; totalTrack--; if (currentTrack >= totalTrack) { console.log('All beats in the playlist has finished, repeating beats...'); @@ -109,6 +109,18 @@ export async function nextAudio(bot) { } } +export async function previousAudio(bot, interaction) { + if (currentTrack <= 0) { + return await interaction.reply({ content: 'You are at the beginning of the playlist, cannot go further than this', ephemeral: true }); + } else { + await interaction.reply({ content: 'Playing previous music', ephemeral: true }); + player.stop(); + currentTrack--; + audio = files[currentTrack]; + return await playAudio(bot); + } +} + export async function inputAudio(bot, integer) { const inputFiles = readdirSync('music'); audio = inputFiles[integer]; diff --git a/README.md b/README.md index b8f9c73..6ac5f88 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ join - Joins voice chat. play - Resumes music. play (int) - Input a number for the selection for the audio file. pause - Pauses music. -skip - Skips the audio track. +next - Goes to next track. reshuffle - Reshuffles the playlist leave - Leaves voice chat. shutdown - Powers off the bot. diff --git a/bot.js b/bot.js index 65e8488..8465874 100644 --- a/bot.js +++ b/bot.js @@ -36,6 +36,8 @@ bot.login(token); * Audio streaming * Metadata support * m3u support + * Custom string support + * Non repeat support */ // Slash Command Handler diff --git a/commands/next.js b/commands/next.js new file mode 100644 index 0000000..589389c --- /dev/null +++ b/commands/next.js @@ -0,0 +1,36 @@ +/************************************************************************** + * + * 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 { audio, player, nextAudio } from '../AudioBackend.js'; +import { PermissionFlagsBits } from 'discord-api-types/v10'; + +export default { + data: new SlashCommandBuilder() + .setName('next') + .setDescription('Goes to next track') + .setDefaultMemberPermissions(PermissionFlagsBits.Administrator), + async execute(interaction, bot) { + await interaction.reply({ content: 'Playing next music', ephemeral: true }); + player.stop(); + return await nextAudio(bot); + } +}; diff --git a/commands/previous.js b/commands/previous.js new file mode 100644 index 0000000..ed3be07 --- /dev/null +++ b/commands/previous.js @@ -0,0 +1,34 @@ +/************************************************************************** + * + * 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 { previousAudio } from '../AudioBackend.js'; +import { PermissionFlagsBits } from 'discord-api-types/v10'; + +export default { + data: new SlashCommandBuilder() + .setName('previous') + .setDescription('Goes to previous track') + .setDefaultMemberPermissions(PermissionFlagsBits.Administrator), + async execute(interaction, bot) { + return await previousAudio(bot, interaction); + } +}; diff --git a/commands/reshuffle.js b/commands/reshuffle.js index e4e6745..ee42289 100644 --- a/commands/reshuffle.js +++ b/commands/reshuffle.js @@ -37,6 +37,6 @@ export default { player.stop(); await shufflePlaylist(bot); } - return (shuffle === true) ? await shuffleDetected(bot) : await interaction.reply({ content: 'Shuffle mode is disabled, enable it on the configuration to access this command.', ephemeral: true }); + return (shuffle === true) ? await shuffleDetected(bot) : await interaction.reply({ content: 'Shuffle mode is disabled, enable it in the configuration file to access this command.', ephemeral: true }); } }; diff --git a/commands/skip.js b/commands/skip.js deleted file mode 100644 index b276790..0000000 --- a/commands/skip.js +++ /dev/null @@ -1,36 +0,0 @@ -/************************************************************************** - * - * 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 { audio, player, nextAudio } from '../AudioBackend.js'; -import { PermissionFlagsBits } from 'discord-api-types/v10'; - -export default { - data: new SlashCommandBuilder() - .setName('skip') - .setDescription('Skips the audio track') - .setDefaultMemberPermissions(PermissionFlagsBits.Administrator), - async execute(interaction, bot) { - await interaction.reply({ content: `Skipping ${audio}`, ephemeral: true }); - player.stop(); - return await nextAudio(bot, interaction); - } -}; -- cgit v1.2.3