From e0c8a327abbc617e3498a397a6e035fd644f3090 Mon Sep 17 00:00:00 2001 From: Yuzu Date: Fri, 4 Feb 2022 22:42:59 +0700 Subject: [PATCH] Support skip on last song --- src/discord/MusicPlayer/Skip.ts | 16 +++++++++++++--- src/providers/DiscordMusicPlayer.ts | 4 ++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/discord/MusicPlayer/Skip.ts b/src/discord/MusicPlayer/Skip.ts index 8cf3c83..d72a94a 100644 --- a/src/discord/MusicPlayer/Skip.ts +++ b/src/discord/MusicPlayer/Skip.ts @@ -12,6 +12,12 @@ const EMBEDS = { user: (data instanceof Interaction) ? data.user : data.author }); }, + SKIPPED_LASTSONG: (data: Message | Interaction) => { + return makeSuccessEmbed({ + title: `Skipped, that was the last song`, + user: (data instanceof Interaction) ? data.user : data.author + }); + }, NO_MUSIC_PLAYING: (data: Message | Interaction) => { return makeErrorEmbed({ title: `There are no music playing`, @@ -73,10 +79,14 @@ export default class Skip { if(instance!.voiceChannel.id !== data.member.voice.channel.id) return await sendMessageOrInteractionResponse(data, { embeds: [EMBEDS.USER_NOT_IN_SAME_VOICECHANNEL(data)] }, true); + if(instance?.queue.track.length === 0) + return await sendMessageOrInteractionResponse(data, { embeds: [EMBEDS.NO_MUSIC_PLAYING(data)] }); + instance!.skipTrack(); - //await sendMessageOrInteractionResponse(data, { embeds: [EMBEDS.SKIPPED(data)] }); - - return; + if(instance?.queue.track.length === 0) + return await sendMessageOrInteractionResponse(data, { embeds: [EMBEDS.SKIPPED_LASTSONG(data)] }); + else + return await sendMessageOrInteractionResponse(data, { embeds: [EMBEDS.SKIPPED(data)] }); } } \ No newline at end of file diff --git a/src/providers/DiscordMusicPlayer.ts b/src/providers/DiscordMusicPlayer.ts index b5e7716..fa5fc94 100644 --- a/src/providers/DiscordMusicPlayer.ts +++ b/src/providers/DiscordMusicPlayer.ts @@ -155,6 +155,10 @@ export class DiscordMusicPlayerInstance { this.queue.track.shift(); this.playTrack(this.queue.track[0]); } + else { + this.queue.track.shift(); + this.player.stop(); + } } public async destroy() {