ziplayer 0.3.2 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/{AI-Guide.md → AGENTS.md} +717 -624
  2. package/README.md +658 -526
  3. package/dist/extensions/BaseExtension.d.ts +10 -1
  4. package/dist/extensions/BaseExtension.d.ts.map +1 -1
  5. package/dist/extensions/BaseExtension.js +27 -1
  6. package/dist/extensions/BaseExtension.js.map +1 -1
  7. package/dist/extensions/index.d.ts.map +1 -1
  8. package/dist/extensions/index.js +24 -6
  9. package/dist/extensions/index.js.map +1 -1
  10. package/dist/plugins/index.d.ts.map +1 -1
  11. package/dist/plugins/index.js +105 -51
  12. package/dist/plugins/index.js.map +1 -1
  13. package/dist/structures/Player.d.ts +90 -15
  14. package/dist/structures/Player.d.ts.map +1 -1
  15. package/dist/structures/Player.js +487 -81
  16. package/dist/structures/Player.js.map +1 -1
  17. package/dist/structures/PlayerManager.d.ts +70 -6
  18. package/dist/structures/PlayerManager.d.ts.map +1 -1
  19. package/dist/structures/PlayerManager.js +184 -19
  20. package/dist/structures/PlayerManager.js.map +1 -1
  21. package/dist/structures/Queue.d.ts +19 -0
  22. package/dist/structures/Queue.d.ts.map +1 -1
  23. package/dist/structures/Queue.js +21 -0
  24. package/dist/structures/Queue.js.map +1 -1
  25. package/dist/types/extension.d.ts +3 -0
  26. package/dist/types/extension.d.ts.map +1 -1
  27. package/dist/types/index.d.ts +69 -2
  28. package/dist/types/index.d.ts.map +1 -1
  29. package/dist/types/index.js +13 -0
  30. package/dist/types/index.js.map +1 -1
  31. package/package.json +1 -1
  32. package/src/extensions/BaseExtension.ts +31 -1
  33. package/src/extensions/index.ts +30 -7
  34. package/src/plugins/index.ts +137 -54
  35. package/src/structures/Player.ts +2937 -2457
  36. package/src/structures/PlayerManager.ts +916 -725
  37. package/src/structures/Queue.ts +621 -599
  38. package/src/types/extension.ts +3 -0
  39. package/src/types/index.ts +80 -2
@@ -1,8 +1,14 @@
1
1
  import { Readable } from "stream";
2
2
  import { Player } from "../structures/Player";
3
+ import type { PlayerManager } from "../structures/PlayerManager";
3
4
  import type { AudioFilter } from "./fillter";
4
5
  import type { SourcePluginLike } from "./plugin";
5
6
  import type { AudioResource } from "@discordjs/voice";
7
+ export declare enum PlaybackMode {
8
+ NATIVE = "native",
9
+ REMOTE = "remote",
10
+ FORWARD = "forward"
11
+ }
6
12
  /**
7
13
  * Represents a music track with metadata and streaming information.
8
14
  *
@@ -115,9 +121,42 @@ export interface SearchScore {
115
121
  */
116
122
  export interface StreamInfo {
117
123
  stream: Readable;
118
- type: "webm/opus" | "ogg/opus" | "arbitrary";
124
+ type: "webm/opus" | "ogg/opus" | "arbitrary" | string;
119
125
  metadata?: Record<string, any>;
126
+ remote?: boolean;
127
+ handle?: {
128
+ play(): Promise<void>;
129
+ stop(): Promise<void>;
130
+ pause(): Promise<void>;
131
+ resume(): Promise<void>;
132
+ seek(position: number): Promise<void>;
133
+ setVolume(volume: number): Promise<void>;
134
+ destroy(): Promise<void>;
135
+ };
136
+ }
137
+ /** Passed to each {@link TrackMiddleware} run (before stream resolution). */
138
+ export interface TrackMiddlewareContext {
139
+ player: Player;
140
+ manager: PlayerManager;
141
+ }
142
+ /**
143
+ * Runs immediately before stream extraction (`Player.getStream`): after enqueue, before extension `provideStream` and plugins.
144
+ * Prefer mutating `track` in place (especially `metadata`). If you return another object, its fields are merged into the original
145
+ * `track` reference so queue/current-track pointers stay valid.
146
+ */
147
+ export type TrackMiddleware = (track: Track, context: TrackMiddlewareContext) => void | Track | Promise<void | Track>;
148
+ /** Options for {@link PlayerManager.subscribeForwardMirror}. */
149
+ export interface PlaybackMirrorOptions {
150
+ leaderGuildId: string;
151
+ followerGuildIds: string[];
152
+ /**
153
+ * When enabled, follower connections subscribe directly
154
+ * to leader.audioPlayer
155
+ * Default: true
156
+ */
157
+ forwardMode?: boolean;
120
158
  }
159
+ export declare function normalizeTrackMiddleware(input?: TrackMiddleware | TrackMiddleware[]): TrackMiddleware[];
121
160
  /**
122
161
  * Configuration options for creating a new player instance.
123
162
  *
@@ -298,6 +337,11 @@ export interface PlayerOptions {
298
337
  */
299
338
  limiterCeiling?: number;
300
339
  };
340
+ /**
341
+ * Chain of middleware applied to every track immediately before stream extraction (after queueing).
342
+ * Merged after {@link PlayerManagerOptions.trackMiddleware} from the manager.
343
+ */
344
+ trackMiddleware?: TrackMiddleware | TrackMiddleware[];
301
345
  }
302
346
  export interface PlayerManagerOptions {
303
347
  plugins?: SourcePluginLike[];
@@ -307,6 +351,10 @@ export interface PlayerManagerOptions {
307
351
  cleanupInterval?: number;
308
352
  enableSearchCache?: boolean;
309
353
  enableStatsCollection?: boolean;
354
+ /**
355
+ * Global track middleware for every {@link Player} created from this manager (before per-player middleware).
356
+ */
357
+ trackMiddleware?: TrackMiddleware | TrackMiddleware[];
310
358
  }
311
359
  /**
312
360
  * Options for the progress bar
@@ -372,12 +420,27 @@ export interface PreloadState {
372
420
  streamId?: string;
373
421
  isBeingUsed: boolean;
374
422
  }
423
+ export interface ForwardHealthStatus {
424
+ guildId: string;
425
+ healthy: boolean;
426
+ role: "leader" | "follower" | "none";
427
+ issues: string[];
428
+ details: {
429
+ leaderId?: string;
430
+ followerCount?: number;
431
+ connectionState?: string;
432
+ audioPlayerState?: string;
433
+ };
434
+ }
375
435
  export interface PlayerStats {
376
436
  totalPlayers: number;
437
+ leader: number;
438
+ follower: number;
377
439
  activePlayers: number;
378
440
  pausedPlayers: number;
379
441
  connectedPlayers: number;
380
442
  totalTracksInQueue: number;
443
+ forwardHealthStatus: ForwardHealthStatus[];
381
444
  }
382
445
  export interface StreamSlot {
383
446
  resource: AudioResource | null;
@@ -495,7 +558,9 @@ export interface ManagerEvents {
495
558
  lyricsChange: [player: Player, track: Track, lyrics: any];
496
559
  voiceCreate: [player: Player, evt: any];
497
560
  stats: [stats: PlayerStats];
498
- streamError: [error: Error, track: Track | null];
561
+ streamError: [player: Player, error: Error, track: Track | null];
562
+ forwardModeStart: [player: Player, leader: Player];
563
+ forwardModeEnd: [player: Player, leader: Player, reason: string | undefined];
499
564
  }
500
565
  export interface PlayerEvents {
501
566
  debug: [message: string, ...args: any[]];
@@ -535,6 +600,8 @@ export interface PlayerEvents {
535
600
  streamError: [error: Error, track: Track | null];
536
601
  /** Emitted when player stats are updated (if enabled) */
537
602
  stats: [stats: PlayerStats];
603
+ forwardModeStart: [leader: Player];
604
+ forwardModeEnd: [leader: Player, reason: string | undefined];
538
605
  }
539
606
  export * from "./fillter";
540
607
  export * from "./plugin";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,19 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.PlaybackMode = void 0;
18
+ exports.normalizeTrackMiddleware = normalizeTrackMiddleware;
19
+ var PlaybackMode;
20
+ (function (PlaybackMode) {
21
+ PlaybackMode["NATIVE"] = "native";
22
+ PlaybackMode["REMOTE"] = "remote";
23
+ PlaybackMode["FORWARD"] = "forward";
24
+ })(PlaybackMode || (exports.PlaybackMode = PlaybackMode = {}));
25
+ function normalizeTrackMiddleware(input) {
26
+ if (!input)
27
+ return [];
28
+ return Array.isArray(input) ? input : [input];
29
+ }
17
30
  __exportStar(require("./fillter"), exports);
18
31
  __exportStar(require("./plugin"), exports);
19
32
  __exportStar(require("./extension"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAiiBA,4CAA0B;AAC1B,2CAAyB;AACzB,8CAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAuKA,4DAGC;AAnKD,IAAY,YAIX;AAJD,WAAY,YAAY;IACvB,iCAAiB,CAAA;IACjB,iCAAiB,CAAA;IACjB,mCAAmB,CAAA;AACpB,CAAC,EAJW,YAAY,4BAAZ,YAAY,QAIvB;AA4JD,SAAgB,wBAAwB,CAAC,KAA2C;IACnF,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC/C,CAAC;AAqcD,4CAA0B;AAC1B,2CAAyB;AACzB,8CAA4B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ziplayer",
3
- "version": "0.3.2",
3
+ "version": "0.3.4",
4
4
  "description": "A modular Discord voice player with plugin system",
5
5
  "keywords": [
6
6
  "ZiPlayer",
@@ -10,14 +10,44 @@ import type {
10
10
  ExtensionSearchRequest,
11
11
  } from "../types";
12
12
  import type { Player } from "../structures/Player";
13
+ import { EventEmitter } from "events";
13
14
 
14
- export abstract class BaseExtension implements SourceExtension {
15
+ export abstract class BaseExtension extends EventEmitter implements SourceExtension {
15
16
  abstract name: string;
16
17
  abstract version: string;
17
18
  priority?: number; // Higher = run first
18
19
  abstract player: Player | null;
19
20
  abstract active(alas: any): boolean | Promise<boolean>;
20
21
 
22
+ // Player event forwarders
23
+ protected forwardToPlayer(event: string, ...args: any[]): void {
24
+ if (this.player && !this.player.destroyed) {
25
+ this.player.emit(event as any, ...args);
26
+ }
27
+ }
28
+
29
+ // Direct player control methods
30
+ protected async playerPlayNext(): Promise<void> {
31
+ if (this.player && !this.player.destroyed) {
32
+ await (this.player as any).playNext();
33
+ }
34
+ }
35
+
36
+ protected async playerSkip(): Promise<void> {
37
+ if (this.player && !this.player.destroyed) {
38
+ (this.player as any).skip();
39
+ }
40
+ }
41
+
42
+ protected updatePlayerState(state: Partial<{ playing: boolean; paused: boolean; track: any }>): void {
43
+ if (this.player && !this.player.destroyed) {
44
+ // Update internal player state if needed
45
+ if (state.track !== undefined && (this.player as any).queue) {
46
+ (this.player as any).queue.setCurrentTrack(state.track);
47
+ }
48
+ }
49
+ }
50
+
21
51
  onRegister?(context: ExtensionContext): void | Promise<void>;
22
52
  onDestroy?(context: ExtensionContext): void | Promise<void>;
23
53
  beforePlay?(
@@ -61,8 +61,13 @@ export class ExtensionManager {
61
61
  this.streamCache = new Map();
62
62
  this.pendingSearches = new Map();
63
63
  this.pendingStreams = new Map();
64
- this.extensionContext = Object.freeze({ player, manager });
65
-
64
+ this.extensionContext = Object.freeze({
65
+ player,
66
+ manager,
67
+ playNext: () => (player as any).playNext?.(),
68
+ skip: () => (player as any).skip?.(),
69
+ emit: (event: string, ...args: any[]) => player.emit(event as any, ...args),
70
+ });
66
71
  // Auto-cleanup caches periodically
67
72
  setInterval(() => this.cleanupCaches(), 5 * 60 * 1000);
68
73
  }
@@ -314,7 +319,10 @@ export class ExtensionManager {
314
319
 
315
320
  // Check cache first
316
321
  const cached = this.getCachedStream(track);
317
- if (cached) return cached;
322
+ if (cached) {
323
+ this.debug(`[Cache] Stream hit for: ${track.title}`);
324
+ return cached;
325
+ }
318
326
 
319
327
  // Deduplicate concurrent requests
320
328
  const cacheKey = this.getCacheKey("stream", track.url || track.id || track.title);
@@ -333,16 +341,31 @@ export class ExtensionManager {
333
341
  if (typeof hook !== "function") continue;
334
342
 
335
343
  try {
344
+ this.debug(`Trying extension ${extension.name} for stream: ${track.title}`);
336
345
  const result = await Promise.resolve(hook.call(extension, this.extensionContext, request));
337
- if (result && (result as StreamInfo).stream) {
338
- this.debug(`Extension ${extension.name} provided stream for: ${track.title}`);
339
- this.setCachedStream(track, result as StreamInfo);
340
- return result as StreamInfo;
346
+
347
+ if (result) {
348
+ const isRemote = (result as StreamInfo).remote;
349
+ const hasStream = !!(result as StreamInfo).stream;
350
+ const hasHandle = !!(result as StreamInfo).handle;
351
+
352
+ this.debug(
353
+ `Extension ${extension.name} returned stream for ${track.title}: remote=${isRemote}, hasStream=${hasStream}, hasHandle=${hasHandle}`,
354
+ );
355
+
356
+ if (hasStream || hasHandle) {
357
+ // Only cache if it's a reusable stream (not remote with handle)
358
+ if (!isRemote) {
359
+ this.setCachedStream(track, result as StreamInfo);
360
+ }
361
+ return result as StreamInfo;
362
+ }
341
363
  }
342
364
  } catch (err) {
343
365
  this.debug(`Extension ${extension.name} provideStream error:`, err);
344
366
  }
345
367
  }
368
+ this.debug(`No extension provided stream for: ${track.title}`);
346
369
  return null;
347
370
  })();
348
371
 
@@ -704,43 +704,123 @@ export class PluginManager {
704
704
  }
705
705
 
706
706
  private async getStreamInternal(track: Track, primary: BasePlugin): Promise<StreamInfo | null> {
707
+ // Reuse existing stream from StreamManager
707
708
  if (this.streamManager) {
708
709
  const existingStream = this.streamManager.getStreamByTrack(track.id || track.title);
710
+
709
711
  if (existingStream) {
710
712
  this.debug(`[Stream] Using existing stream from manager`);
711
- return { stream: existingStream, type: "arbitrary" };
713
+
714
+ return {
715
+ stream: existingStream,
716
+ type: "arbitrary",
717
+ };
712
718
  }
713
719
  }
714
720
 
715
721
  const timeoutMs = this.options.extractorTimeout ?? 50000;
716
722
 
723
+ // Cache
717
724
  const cached = this.getCachedStream(track);
718
- if (cached) return cached;
719
725
 
720
- try {
721
- this.debug(`[Stream] Trying ${primary.name} for track: ${track.title}`);
726
+ if (cached) {
727
+ this.debug(`[Stream] Using cached stream for: ${track.title}`);
728
+ return cached;
729
+ }
730
+
731
+ /**
732
+ * Try resolve stream from plugin
733
+ * Flow:
734
+ * 1. plugin.getStream()
735
+ * 2. validate stream
736
+ * 3. if failed -> plugin.getFallback()
737
+ */
738
+ const tryPlugin = async (
739
+ plugin: BasePlugin,
740
+ isPrimary: boolean = false,
741
+ ): Promise<{ result: StreamInfo | null; similarity: number }> => {
722
742
  const controller = new AbortController();
723
- const result = await withTimeout(
724
- primary.getStream(track, controller.signal),
725
- timeoutMs,
726
- `Primary timeout: ${primary.name}`,
727
- );
728
743
 
729
- if (result?.stream) {
730
- const isValid = await this.validateStreamMatchesTrack(result, track);
731
- if (isValid) {
732
- this.debug(`[Stream] Success via ${primary.name}`);
733
- this.setCachedStream(track, result);
734
- return result;
744
+ let result: StreamInfo | null = null;
745
+
746
+ // =========================================================
747
+ // 1. TRY DIRECT STREAM
748
+ // =========================================================
749
+ if (plugin.getStream) {
750
+ try {
751
+ this.debug(`[Stream] ${plugin.name} trying direct stream`);
752
+
753
+ result = await withTimeout(plugin.getStream(track, controller.signal), timeoutMs, `${plugin.name} getStream timeout`);
754
+
755
+ if (result?.stream) {
756
+ const valid = await this.validateStreamMatchesTrack(result, track);
757
+
758
+ if (valid) {
759
+ this.debug(`[Stream] ${plugin.name} direct stream success`);
760
+
761
+ return {
762
+ result,
763
+ similarity: 1,
764
+ };
765
+ }
766
+
767
+ this.debug(`[Stream] ${plugin.name} returned invalid stream`);
768
+ } else {
769
+ this.debug(`[Stream] ${plugin.name} no direct stream returned`);
770
+ }
771
+ } catch (error) {
772
+ this.debug(`[Stream] ${plugin.name} getStream failed:`, error instanceof Error ? error.message : error);
735
773
  }
736
- this.debug(`[Stream] Stream validation failed - wrong track returned`);
737
774
  }
738
- throw new Error("Primary plugin returned no stream or invalid stream");
739
- } catch (error) {
740
- this.debug(`[Stream] Primary failed: ${primary.name}`, error);
775
+
776
+ // =========================================================
777
+ // 2. TRY FALLBACK SEARCH
778
+ // =========================================================
779
+ if (plugin.getFallback) {
780
+ try {
781
+ this.debug(`[Stream] ${plugin.name} trying fallback resolver`);
782
+
783
+ result = await withTimeout(plugin.getFallback(track, controller.signal), timeoutMs, `${plugin.name} fallback timeout`);
784
+
785
+ if (result?.stream) {
786
+ const similarity = this.calculateTrackSimilarity(track, {
787
+ title: result.metadata?.title || result.metadata?.originalTitle || track.title,
788
+ });
789
+
790
+ this.debug(`[Stream] ${plugin.name} fallback success (${similarity})`);
791
+
792
+ return {
793
+ result,
794
+ similarity,
795
+ };
796
+ }
797
+
798
+ this.debug(`[Stream] ${plugin.name} fallback returned no stream`);
799
+ } catch (error) {
800
+ this.debug(`[Stream] ${plugin.name} fallback failed:`, error instanceof Error ? error.message : error);
801
+ }
802
+ }
803
+
804
+ return {
805
+ result: null,
806
+ similarity: 0,
807
+ };
808
+ };
809
+
810
+ // =========================================================
811
+ // PRIMARY PLUGIN
812
+ // =========================================================
813
+ const primaryResult = await tryPlugin(primary, true);
814
+
815
+ if (primaryResult.result?.stream) {
816
+ this.setCachedStream(track, primaryResult.result);
817
+
818
+ return primaryResult.result;
741
819
  }
742
820
 
743
- // Fallback logic...
821
+ // =========================================================
822
+ // FALLBACK PLUGINS
823
+ // =========================================================
744
824
  const fallbackPlugins = this.getAll()
745
825
  .filter((p) => p !== primary && p.name !== primary.name)
746
826
  .sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
@@ -752,61 +832,64 @@ export class PluginManager {
752
832
 
753
833
  this.debug(`[Stream] Trying ${fallbackPlugins.length} fallback plugins`);
754
834
 
755
- const validResults: Array<{ plugin: string; streamInfo: StreamInfo; score: number }> = [];
835
+ const validResults: Array<{
836
+ plugin: string;
837
+ streamInfo: StreamInfo;
838
+ score: number;
839
+ }> = [];
756
840
 
757
841
  let attempt = 0;
842
+
758
843
  for (const plugin of fallbackPlugins) {
759
844
  attempt++;
845
+
760
846
  if (attempt > (this.options.maxFallbackAttempts ?? 3)) {
761
- this.debug(`[Stream] Max attempts reached`);
847
+ this.debug(`[Stream] Max fallback attempts reached`);
762
848
  break;
763
849
  }
764
850
 
765
- try {
766
- this.debug(`[Stream] Fallback ${attempt}: ${plugin.name}`);
767
- const controller = new AbortController();
768
-
769
- let result: StreamInfo | null = null;
851
+ const { result, similarity } = await tryPlugin(plugin);
770
852
 
771
- if (plugin.getStream) {
772
- result = await withTimeout(plugin.getStream(track, controller.signal), timeoutMs, `Timeout: ${plugin.name}`);
773
- }
853
+ if (!result?.stream) {
854
+ continue;
855
+ }
774
856
 
775
- if (!result?.stream && plugin.getFallback) {
776
- result = await withTimeout(plugin.getFallback(track, controller.signal), timeoutMs, `Fallback timeout: ${plugin.name}`);
777
- }
857
+ // Perfect / good match
858
+ if (similarity >= 0.7) {
859
+ this.debug(`[Stream] Success via fallback ${plugin.name} (score: ${similarity})`);
778
860
 
779
- if (result?.stream) {
780
- const similarityScore = this.calculateTrackSimilarity(track, result);
861
+ this.setCachedStream(track, result);
781
862
 
782
- if (similarityScore > 0.7) {
783
- this.debug(`[Stream] Fallback success via ${plugin.name} (score: ${similarityScore})`);
784
- this.setCachedStream(track, result);
785
- return result;
786
- } else {
787
- validResults.push({
788
- plugin: plugin.name,
789
- streamInfo: result,
790
- score: similarityScore,
791
- });
792
- this.debug(`[Stream] Fallback ${plugin.name} returned low similarity (${similarityScore})`);
793
- }
794
- }
795
- } catch (error) {
796
- this.debug(`[Stream] Fallback failed: ${plugin.name}`, error);
863
+ return result;
797
864
  }
865
+
866
+ // Keep low similarity result as backup
867
+ validResults.push({
868
+ plugin: plugin.name,
869
+ streamInfo: result,
870
+ score: similarity,
871
+ });
872
+
873
+ this.debug(`[Stream] ${plugin.name} low similarity match (${similarity})`);
798
874
  }
799
875
 
876
+ // =========================================================
877
+ // BEST AVAILABLE MATCH
878
+ // =========================================================
800
879
  if (validResults.length > 0) {
801
880
  const bestMatch = validResults.sort((a, b) => b.score - a.score)[0];
802
- this.debug(`[Stream] Using best available match from ${bestMatch.plugin} (score: ${bestMatch.score})`);
881
+
882
+ this.debug(`[Stream] Using best available match from ${bestMatch.plugin} (${bestMatch.score})`);
883
+
884
+ this.setCachedStream(track, bestMatch.streamInfo);
885
+
803
886
  return bestMatch.streamInfo;
804
887
  }
805
888
 
806
- this.debug(`[Stream] All plugins failed for track: ${track.title}`);
889
+ this.debug(`[Stream] All plugins failed for: ${track.title}`);
890
+
807
891
  return null;
808
892
  }
809
-
810
893
  async getStream(track: Track): Promise<StreamInfo | null> {
811
894
  if (!track) {
812
895
  this.debug(`[getStream] No track provided`);
@@ -848,7 +931,7 @@ export class PluginManager {
848
931
  return [];
849
932
  }
850
933
 
851
- const history = this.player.queue.previousTracks;
934
+ const history = this.player?.queue?.previousTracks || [];
852
935
  const historyUrls = new Set(history.map((t) => t.url));
853
936
  const currentTrackUrl = track.url;
854
937