diff --git a/src/Structures/Queue.ts b/src/Structures/Queue.ts index f2c5d67..a533878 100644 --- a/src/Structures/Queue.ts +++ b/src/Structures/Queue.ts @@ -141,16 +141,17 @@ class Queue { this.player.emit("connectionCreate", this, this.connection); - this.connection.on("start", () => { + this.connection.on("start", (resource) => { this.playing = true; - if (!this._filtersUpdate) this.player.emit("trackStart", this, this.current); + if (!this._filtersUpdate) this.player.emit("trackStart", this, resource.metadata); this._filtersUpdate = false; }); - this.connection.on("finish", async () => { + this.connection.on("finish", async (resource) => { this.playing = false; if (this._filtersUpdate) return; this._streamTime = 0; + this.previousTracks.push(resource.metadata); if (!this.tracks.length && this.repeatMode === QueueRepeatMode.OFF) { if (this.options.leaveOnEnd) this.destroy(); @@ -405,7 +406,6 @@ class Queue { if (!options.filtersUpdate) { this.previousTracks = this.previousTracks.filter((x) => x._trackID !== track._trackID); - this.previousTracks.push(track); } let stream; diff --git a/src/VoiceInterface/BasicStreamDispatcher.ts b/src/VoiceInterface/BasicStreamDispatcher.ts index d1a27a9..edacff7 100644 --- a/src/VoiceInterface/BasicStreamDispatcher.ts +++ b/src/VoiceInterface/BasicStreamDispatcher.ts @@ -20,8 +20,8 @@ import { Util } from "../utils/Util"; export interface VoiceEvents { error: (error: AudioPlayerError) => any; // eslint-disable-line @typescript-eslint/no-explicit-any debug: (message: string) => any; // eslint-disable-line @typescript-eslint/no-explicit-any - start: () => any; // eslint-disable-line @typescript-eslint/no-explicit-any - finish: () => any; // eslint-disable-line @typescript-eslint/no-explicit-any + start: (resource: AudioResource) => any; // eslint-disable-line @typescript-eslint/no-explicit-any + finish: (resource: AudioResource) => any; // eslint-disable-line @typescript-eslint/no-explicit-any } class StreamDispatcher extends EventEmitter { @@ -89,11 +89,11 @@ class StreamDispatcher extends EventEmitter { this.audioPlayer.on("stateChange", (oldState, newState) => { if (newState.status === AudioPlayerStatus.Idle && oldState.status !== AudioPlayerStatus.Idle) { if (!this.paused) { + void this.emit("finish", this.audioResource); this.audioResource = null; - void this.emit("finish"); } } else if (newState.status === AudioPlayerStatus.Playing) { - if (!this.paused) void this.emit("start"); + if (!this.paused) void this.emit("start", this.audioResource); } });