magmastream 2.9.3-dev.2 → 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: {
@@ -579,7 +579,7 @@ class Manager extends events_1.EventEmitter {
579
579
  if (lavaPlayer.track) {
580
580
  await player.queue.clear();
581
581
  if (currentTrack) {
582
- 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));
583
583
  }
584
584
  const remainingQueue = queueTracks.filter((t) => t.uri !== lavaPlayer.track.info.uri);
585
585
  if (remainingQueue.length > 0) {
@@ -774,7 +774,7 @@ class Manager extends events_1.EventEmitter {
774
774
  if (lavaPlayer.track) {
775
775
  await player.queue.clear();
776
776
  if (currentTrack) {
777
- 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));
778
778
  }
779
779
  const remainingQueue = queueTracks.filter((t) => t.uri !== lavaPlayer.track.info.uri);
780
780
  if (remainingQueue.length > 0) {
@@ -1107,6 +1107,7 @@ class Manager extends events_1.EventEmitter {
1107
1107
  }
1108
1108
  this.emit(Enums_1.ManagerEventTypes.PlayerDisconnect, player, player.voiceChannelId);
1109
1109
  player.voiceChannelId = null;
1110
+ player.state = Enums_1.StateTypes.Disconnected;
1110
1111
  player.voiceState = Object.assign({});
1111
1112
  if (player.options.pauseOnDisconnect) {
1112
1113
  await player.pause(true);
@@ -632,12 +632,7 @@ 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 (!track.requester || !track.requester.id) {
637
- console.log(track);
638
- console.warn(`[WARN] Track requester missing for guild ${player.guildId}`, track);
639
- }
640
- if (AutoplayUser && track.requester && AutoplayUser.id === track.requester.id) {
635
+ if (track.isAutoplay) {
641
636
  this.manager.emit(Enums_1.ManagerEventTypes.PlayerStateUpdate, oldPlayer, player, {
642
637
  changeType: Enums_1.PlayerStateEventTypes.TrackChange,
643
638
  details: {
@@ -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.2",
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",