diff options
| -rw-r--r-- | AudioBackend.js | 14 | ||||
| -rw-r--r-- | README.md | 2 | ||||
| -rw-r--r-- | bot.js | 2 | ||||
| -rw-r--r-- | commands/next.js (renamed from commands/skip.js) | 8 | ||||
| -rw-r--r-- | commands/previous.js | 34 | ||||
| -rw-r--r-- | commands/reshuffle.js | 2 |
6 files changed, 55 insertions, 7 deletions
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]; @@ -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. @@ -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/skip.js b/commands/next.js index b276790..589389c 100644 --- a/commands/skip.js +++ b/commands/next.js @@ -25,12 +25,12 @@ import { PermissionFlagsBits } from 'discord-api-types/v10'; export default { data: new SlashCommandBuilder() - .setName('skip') - .setDescription('Skips the audio track') + .setName('next') + .setDescription('Goes to next track') .setDefaultMemberPermissions(PermissionFlagsBits.Administrator), async execute(interaction, bot) { - await interaction.reply({ content: `Skipping ${audio}`, ephemeral: true }); + await interaction.reply({ content: 'Playing next music', ephemeral: true }); player.stop(); - return await nextAudio(bot, interaction); + 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 <https://www.gnu.org/licenses/>. + * + ***************************************************************************/ + +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 }); } }; |
