magmastream 2.9.2-dev.4 → 2.9.2-dev.6

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.
@@ -571,6 +571,10 @@ class Manager extends events_1.EventEmitter {
571
571
  player.setAutoplay(true, autoPlayUser, state.autoplayTries);
572
572
  }
573
573
  }
574
+ const savedNowPlayingMessage = state.data?.nowPlayingMessage;
575
+ if (savedNowPlayingMessage) {
576
+ player.setNowPlayingMessage(savedNowPlayingMessage);
577
+ }
574
578
  if (lavaPlayer.track) {
575
579
  await player.queue.clear();
576
580
  if (currentTrack) {
@@ -749,9 +753,7 @@ class Manager extends events_1.EventEmitter {
749
753
  guildId: state.options.guildId,
750
754
  data: { voice: { token: state.voiceState.event.token, endpoint: state.voiceState.event.endpoint, sessionId: state.voiceState.sessionId } },
751
755
  });
752
- if (!lavaPlayer || !lavaPlayer.state.connected) {
753
- player.connect();
754
- }
756
+ player.connect();
755
757
  // Rest of the player state restoration code (tracks, filters, etc.)
756
758
  const tracks = [];
757
759
  const currentTrack = state.queue.current;
@@ -763,6 +765,10 @@ class Manager extends events_1.EventEmitter {
763
765
  player.setAutoplay(true, autoPlayUser, state.autoplayTries);
764
766
  }
765
767
  }
768
+ const savedNowPlayingMessage = state.data?.nowPlayingMessage;
769
+ if (savedNowPlayingMessage) {
770
+ player.setNowPlayingMessage(savedNowPlayingMessage);
771
+ }
766
772
  if (lavaPlayer.track) {
767
773
  await player.queue.clear();
768
774
  if (currentTrack) {
@@ -579,6 +579,8 @@ class Node {
579
579
  if ("delete" in player.nowPlayingMessage && typeof player.nowPlayingMessage.delete === "function") {
580
580
  await player.nowPlayingMessage.delete().catch(() => { });
581
581
  }
582
+ player.nowPlayingMessage = null;
583
+ player.set("nowPlayingMessage", null);
582
584
  }
583
585
  await this.trackEnd(player, track, payload);
584
586
  break;
@@ -355,6 +355,7 @@ class Player {
355
355
  message: "You must provide the message of the now playing message.",
356
356
  });
357
357
  }
358
+ this.set("nowPlayingMessage", message);
358
359
  this.nowPlayingMessage = message;
359
360
  return this.nowPlayingMessage;
360
361
  }
@@ -692,16 +693,25 @@ class Player {
692
693
  async stop(amount) {
693
694
  const oldPlayer = { ...this };
694
695
  let removedTracks = [];
696
+ const current = await this.queue.getCurrent(); // may be null
695
697
  if (typeof amount === "number" && amount > 1) {
696
- if (amount > (await this.queue.size())) {
698
+ const queueSize = await this.queue.size();
699
+ if (amount > queueSize) {
697
700
  throw new MagmastreamError_1.MagmaStreamError({
698
701
  code: Enums_1.MagmaStreamErrorCode.PLAYER_QUEUE_EMPTY,
699
- message: "The queue size must be greater than 1.",
702
+ message: "The amount of tracks to remove is greater than the queue size.",
700
703
  });
701
704
  }
702
705
  removedTracks = await this.queue.getSlice(0, amount - 1);
703
706
  await this.queue.modifyAt(0, amount - 1);
707
+ const toAdd = [];
708
+ if (current)
709
+ toAdd.push(current);
710
+ toAdd.push(...removedTracks);
711
+ await this.queue.addPrevious(toAdd);
704
712
  }
713
+ // This will trigger trackEnd for the current track; since we already added current,
714
+ // addPrevious will ignore duplicates.
705
715
  this.node.rest.updatePlayer({
706
716
  guildId: this.guildId,
707
717
  data: {
@@ -651,7 +651,8 @@ class PlayerUtils {
651
651
  }
652
652
  if (key === "data") {
653
653
  return {
654
- clientUser: value?.Internal_BotUser ?? null,
654
+ clientUser: value?.Internal_AutoplayUser ?? null,
655
+ nowPlayingMessage: value?.nowPlayingMessage ?? null,
655
656
  };
656
657
  }
657
658
  return value;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "magmastream",
3
- "version": "2.9.2-dev.4",
3
+ "version": "2.9.2-dev.6",
4
4
  "description": "A user-friendly Lavalink client designed for NodeJS.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",