magmastream 2.9.3-dev.1 → 2.9.3-dev.3

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.
package/dist/index.d.ts CHANGED
@@ -1189,6 +1189,8 @@ interface Track {
1189
1189
  pluginInfo: TrackPluginInfo;
1190
1190
  /** Add your own data to the track. */
1191
1191
  customData: Record<string, unknown>;
1192
+ /** If the track is autoplayed. */
1193
+ readonly isAutoplay: boolean;
1192
1194
  }
1193
1195
  /**
1194
1196
  * Track Plugin Info
@@ -3471,9 +3473,10 @@ declare abstract class TrackUtils {
3471
3473
  * Builds a Track from the raw data from Lavalink and a optional requester.
3472
3474
  * @param data The raw data from Lavalink to build the Track from.
3473
3475
  * @param requester The user who requested the track, if any.
3476
+ * @param isAutoPlay Whether the track is autoplayed. Defaults to false.
3474
3477
  * @returns The built Track.
3475
3478
  */
3476
- static build<T = AnyUser>(data: TrackData, requester?: T): Track;
3479
+ static build<T = AnyUser>(data: TrackData, requester?: T, isAutoplay?: boolean): Track;
3477
3480
  /**
3478
3481
  * Validates a search result.
3479
3482
  * @param result The search result to validate.
@@ -56,8 +56,7 @@ class JsonQueue {
56
56
  this.manager.emit(Enums_1.ManagerEventTypes.Debug, `[JSONQUEUE] Added ${tracks.length} track(s) to queue`);
57
57
  if (this.manager.players.has(this.guildId) && this.manager.players.get(this.guildId).isAutoplay) {
58
58
  if (!isArray) {
59
- const AutoplayUser = (await this.manager.players.get(this.guildId).get("Internal_AutoplayUser"));
60
- if (AutoplayUser && AutoplayUser.id === track.requester.id) {
59
+ if (track.isAutoplay) {
61
60
  this.manager.emit(Enums_1.ManagerEventTypes.PlayerStateUpdate, oldPlayer, this.manager.players.get(this.guildId), {
62
61
  changeType: Enums_1.PlayerStateEventTypes.QueueChange,
63
62
  details: {
@@ -84,8 +84,7 @@ class MemoryQueue extends Array {
84
84
  }
85
85
  if (this.manager.players.has(this.guildId) && this.manager.players.get(this.guildId).isAutoplay) {
86
86
  if (!isArray) {
87
- const AutoplayUser = this.manager.players.get(this.guildId).get("Internal_AutoplayUser");
88
- if (AutoplayUser && AutoplayUser.id === track.requester.id) {
87
+ if (track.isAutoplay) {
89
88
  this.manager.emit(Enums_1.ManagerEventTypes.PlayerStateUpdate, oldPlayer, this.manager.players.get(this.guildId), {
90
89
  changeType: Enums_1.PlayerStateEventTypes.QueueChange,
91
90
  details: {
@@ -81,8 +81,7 @@ class RedisQueue {
81
81
  // Autoplay logic
82
82
  if (this.manager.players.has(this.guildId) && this.manager.players.get(this.guildId).isAutoplay) {
83
83
  if (!Array.isArray(track)) {
84
- const AutoplayUser = (await this.manager.players.get(this.guildId).get("Internal_AutoplayUser"));
85
- if (AutoplayUser && AutoplayUser.id === track.requester.id) {
84
+ if (track.isAutoplay) {
86
85
  this.manager.emit(Enums_1.ManagerEventTypes.PlayerStateUpdate, oldPlayer, this.manager.players.get(this.guildId), {
87
86
  changeType: Enums_1.PlayerStateEventTypes.QueueChange,
88
87
  details: {
@@ -547,6 +547,7 @@ class Manager extends events_1.EventEmitter {
547
547
  volume: lavaPlayer.volume || state.options.volume,
548
548
  nodeIdentifier: nodeId,
549
549
  applyVolumeAsFilter: state.options.applyVolumeAsFilter,
550
+ pauseOnDisconnect: state.options.pauseOnDisconnect,
550
551
  };
551
552
  this.emit(Enums_1.ManagerEventTypes.Debug, `[MANAGER] Recreating player: ${state.guildId} from saved file: ${Utils_1.JSONUtils.safe(state.options, 2)}`);
552
553
  const player = this.create(playerOptions);
@@ -578,7 +579,7 @@ class Manager extends events_1.EventEmitter {
578
579
  if (lavaPlayer.track) {
579
580
  await player.queue.clear();
580
581
  if (currentTrack) {
581
- await player.queue.add(Utils_1.TrackUtils.build(lavaPlayer.track, currentTrack.requester));
582
+ await player.queue.add(Utils_1.TrackUtils.build(lavaPlayer.track, currentTrack.requester, currentTrack.isAutoplay));
582
583
  }
583
584
  const remainingQueue = queueTracks.filter((t) => t.uri !== lavaPlayer.track.info.uri);
584
585
  if (remainingQueue.length > 0) {
@@ -746,6 +747,7 @@ class Manager extends events_1.EventEmitter {
746
747
  volume: lavaPlayer.volume || state.options.volume,
747
748
  nodeIdentifier: nodeId,
748
749
  applyVolumeAsFilter: state.options.applyVolumeAsFilter,
750
+ pauseOnDisconnect: state.options.pauseOnDisconnect,
749
751
  };
750
752
  this.emit(Enums_1.ManagerEventTypes.Debug, `[MANAGER] Recreating player: ${guildId} from Redis`);
751
753
  const player = this.create(playerOptions);
@@ -772,7 +774,7 @@ class Manager extends events_1.EventEmitter {
772
774
  if (lavaPlayer.track) {
773
775
  await player.queue.clear();
774
776
  if (currentTrack) {
775
- await player.queue.add(Utils_1.TrackUtils.build(lavaPlayer.track, currentTrack.requester));
777
+ await player.queue.add(Utils_1.TrackUtils.build(lavaPlayer.track, currentTrack.requester, currentTrack.isAutoplay));
776
778
  }
777
779
  const remainingQueue = queueTracks.filter((t) => t.uri !== lavaPlayer.track.info.uri);
778
780
  if (remainingQueue.length > 0) {
@@ -1105,6 +1107,7 @@ class Manager extends events_1.EventEmitter {
1105
1107
  }
1106
1108
  this.emit(Enums_1.ManagerEventTypes.PlayerDisconnect, player, player.voiceChannelId);
1107
1109
  player.voiceChannelId = null;
1110
+ player.state = Enums_1.StateTypes.Disconnected;
1108
1111
  player.voiceState = Object.assign({});
1109
1112
  if (player.options.pauseOnDisconnect) {
1110
1113
  await player.pause(true);
@@ -632,14 +632,13 @@ class Node {
632
632
  player.playing = true;
633
633
  player.paused = false;
634
634
  this.manager.emit(Enums_1.ManagerEventTypes.TrackStart, player, track, payload);
635
- const AutoplayUser = player.get("Internal_AutoplayUser");
636
- if (AutoplayUser && AutoplayUser.id === track.requester.id) {
635
+ if (track.isAutoplay) {
637
636
  this.manager.emit(Enums_1.ManagerEventTypes.PlayerStateUpdate, oldPlayer, player, {
638
637
  changeType: Enums_1.PlayerStateEventTypes.TrackChange,
639
638
  details: {
640
639
  type: "track",
641
640
  action: "autoPlay",
642
- track: track,
641
+ track,
643
642
  },
644
643
  });
645
644
  return;
@@ -649,7 +648,7 @@ class Node {
649
648
  details: {
650
649
  type: "track",
651
650
  action: "start",
652
- track: track,
651
+ track,
653
652
  },
654
653
  });
655
654
  }
@@ -1005,6 +1005,7 @@ class Player {
1005
1005
  nowPlayingMessage: this.nowPlayingMessage,
1006
1006
  isAutoplay: this.isAutoplay,
1007
1007
  applyVolumeAsFilter: this.options.applyVolumeAsFilter,
1008
+ pauseOnDisconnect: this.options.pauseOnDisconnect,
1008
1009
  };
1009
1010
  // If force is true, destroy the existing player for the new guild
1010
1011
  if (force && newPlayer) {
@@ -1015,6 +1016,7 @@ class Player {
1015
1016
  newOptions.selfMute = newOptions.selfMute ?? oldPlayerProperties.selfMute;
1016
1017
  newOptions.volume = newOptions.volume ?? oldPlayerProperties.volume;
1017
1018
  newOptions.applyVolumeAsFilter = newOptions.applyVolumeAsFilter ?? oldPlayerProperties.applyVolumeAsFilter;
1019
+ newOptions.pauseOnDisconnect = newOptions.pauseOnDisconnect ?? oldPlayerProperties.pauseOnDisconnect;
1018
1020
  // Deep clone the current player
1019
1021
  const clonedPlayer = this.manager.create(newOptions);
1020
1022
  // Connect the cloned player to the new voice channel
@@ -85,9 +85,10 @@ class TrackUtils {
85
85
  * Builds a Track from the raw data from Lavalink and a optional requester.
86
86
  * @param data The raw data from Lavalink to build the Track from.
87
87
  * @param requester The user who requested the track, if any.
88
+ * @param isAutoPlay Whether the track is autoplayed. Defaults to false.
88
89
  * @returns The built Track.
89
90
  */
90
- static build(data, requester) {
91
+ static build(data, requester, isAutoplay = false) {
91
92
  if (typeof data === "undefined") {
92
93
  throw new MagmastreamError_1.MagmaStreamError({
93
94
  code: Enums_1.MagmaStreamErrorCode.UTILS_TRACK_BUILD_FAILED,
@@ -138,6 +139,7 @@ class TrackUtils {
138
139
  requester: requester,
139
140
  pluginInfo: data.pluginInfo,
140
141
  customData: {},
142
+ isAutoplay: isAutoplay,
141
143
  };
142
144
  track.displayThumbnail = track.displayThumbnail.bind(track);
143
145
  if (this.trackPartial) {
@@ -560,7 +562,7 @@ class AutoPlayUtils {
560
562
  context: { recommendedResult },
561
563
  });
562
564
  }
563
- return [TrackUtils.build(data, requester)];
565
+ return [TrackUtils.build(data, requester, true)];
564
566
  }
565
567
  case Enums_1.LoadTypes.Short:
566
568
  case Enums_1.LoadTypes.Search: {
@@ -572,7 +574,7 @@ class AutoPlayUtils {
572
574
  context: { recommendedResult },
573
575
  });
574
576
  }
575
- return data.map((d) => TrackUtils.build(d, requester));
577
+ return data.map((d) => TrackUtils.build(d, requester, true));
576
578
  }
577
579
  case Enums_1.LoadTypes.Album:
578
580
  case Enums_1.LoadTypes.Artist:
@@ -582,7 +584,7 @@ class AutoPlayUtils {
582
584
  case Enums_1.LoadTypes.Playlist: {
583
585
  const data = recommendedResult.data;
584
586
  if (this.isPlaylistRawData(data)) {
585
- return data.tracks.map((d) => TrackUtils.build(d, requester));
587
+ return data.tracks.map((d) => TrackUtils.build(d, requester, true));
586
588
  }
587
589
  throw new MagmastreamError_1.MagmaStreamError({
588
590
  code: Enums_1.MagmaStreamErrorCode.UTILS_AUTOPLAY_BUILD_FAILED,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "magmastream",
3
- "version": "2.9.3-dev.1",
3
+ "version": "2.9.3-dev.3",
4
4
  "description": "A user-friendly Lavalink client designed for NodeJS.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",