magmastream 2.9.3-dev.22 → 2.9.3-dev.23

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
@@ -2435,6 +2435,11 @@ declare class Player {
2435
2435
  * @returns {Promise<void>} - A promise that resolves when the voice receiver error is handled.
2436
2436
  */
2437
2437
  private onVoiceReceiverError;
2438
+ /**
2439
+ * Updates the voice state for the player.
2440
+ * @returns {Promise<void>} - A promise that resolves when the voice state is updated.
2441
+ */
2442
+ updateVoice(): Promise<void>;
2438
2443
  }
2439
2444
 
2440
2445
  /** Handles the requests sent to the Lavalink REST API. */
@@ -558,6 +558,7 @@ class Manager extends events_1.EventEmitter {
558
558
  };
559
559
  this.emit(Enums_1.ManagerEventTypes.Debug, `[MANAGER] Recreating player: ${state.guildId} from saved file: ${Utils_1.JSONUtils.safe(state.options, 2)}`);
560
560
  const player = this.create(playerOptions);
561
+ player.connect();
561
562
  await player.node.rest.updatePlayer({
562
563
  guildId: state.options.guildId,
563
564
  data: {
@@ -565,11 +566,10 @@ class Manager extends events_1.EventEmitter {
565
566
  token: state.voiceState.event.token,
566
567
  endpoint: state.voiceState.event.endpoint,
567
568
  sessionId: state.voiceState.sessionId,
568
- channelId: state.voiceState.event.channel_id,
569
+ channelId: state.voiceState.channelId,
569
570
  },
570
571
  },
571
572
  });
572
- player.connect();
573
573
  const tracks = [];
574
574
  const currentTrack = state.queue.current;
575
575
  const queueTracks = state.queue.tracks;
@@ -747,6 +747,7 @@ class Manager extends events_1.EventEmitter {
747
747
  };
748
748
  this.emit(Enums_1.ManagerEventTypes.Debug, `[MANAGER] Recreating player: ${guildId} from Redis`);
749
749
  const player = this.create(playerOptions);
750
+ player.connect();
750
751
  await player.node.rest.updatePlayer({
751
752
  guildId: state.options.guildId,
752
753
  data: {
@@ -754,11 +755,10 @@ class Manager extends events_1.EventEmitter {
754
755
  token: state.voiceState.event.token,
755
756
  endpoint: state.voiceState.event.endpoint,
756
757
  sessionId: state.voiceState.sessionId,
757
- channelId: state.voiceState.event.channel_id,
758
+ channelId: state.voiceState.channelId,
758
759
  },
759
760
  },
760
761
  });
761
- player.connect();
762
762
  // Rest of the player state restoration code (tracks, filters, etc.)
763
763
  const tracks = [];
764
764
  const currentTrack = state.queue.current;
@@ -1078,15 +1078,8 @@ class Manager extends events_1.EventEmitter {
1078
1078
  player.voiceState.event = update;
1079
1079
  const sessionId = player.voiceState.sessionId;
1080
1080
  const channelId = player.voiceState.channelId;
1081
- const token = update.token;
1082
- const endpoint = update.endpoint;
1083
- this.emit(Enums_1.ManagerEventTypes.Debug, `Updated voice server for player ${player.guildId} with token ${token} | endpoint ${endpoint} | sessionId ${sessionId} | channelId ${channelId}`);
1084
- if (!sessionId || !channelId)
1085
- return;
1086
- await player.node.rest.updatePlayer({
1087
- guildId: player.guildId,
1088
- data: { voice: { token, endpoint, sessionId, channelId } },
1089
- });
1081
+ this.emit(Enums_1.ManagerEventTypes.Debug, `Updated voice server for player ${player.guildId} with token ${update.token} | endpoint ${update.endpoint} | sessionId ${sessionId} | channelId ${channelId}`);
1082
+ await player.updateVoice();
1090
1083
  }
1091
1084
  /**
1092
1085
  * Handles a voice state update by updating the player's voice channel and session ID if provided, or by disconnecting and destroying the player if the channel ID is null.
@@ -1113,14 +1106,7 @@ class Manager extends events_1.EventEmitter {
1113
1106
  player.voiceState.channelId = update.channel_id;
1114
1107
  player.voiceChannelId = update.channel_id;
1115
1108
  player.options.voiceChannelId = update.channel_id;
1116
- const token = player.voiceState.event?.token;
1117
- const endpoint = player.voiceState.event?.endpoint;
1118
- if (!token || !endpoint)
1119
- return;
1120
- await player.node.rest.updatePlayer({
1121
- guildId: player.guildId,
1122
- data: { voice: { token, endpoint, sessionId: update.session_id, channelId: update.channel_id } },
1123
- });
1109
+ await player.updateVoice();
1124
1110
  }
1125
1111
  /**
1126
1112
  * Cleans up an inactive player by removing its state data.
@@ -1171,8 +1171,12 @@ class Node {
1171
1171
  * @private
1172
1172
  */
1173
1173
  createReadmeFile() {
1174
- const readmeFilePath = path_1.default.join(process.cwd(), "magmastream", "README.md");
1174
+ const baseDir = path_1.default.join(process.cwd(), "magmastream");
1175
+ const readmeFilePath = path_1.default.join(baseDir, "README.md");
1175
1176
  const message = "Please do NOT delete the magmastream/ folder as it is used to store player data for autoresume etc.";
1177
+ if (!fs_1.default.existsSync(baseDir)) {
1178
+ fs_1.default.mkdirSync(baseDir, { recursive: true });
1179
+ }
1176
1180
  if (!fs_1.default.existsSync(readmeFilePath)) {
1177
1181
  fs_1.default.writeFileSync(readmeFilePath, message, "utf-8");
1178
1182
  this.manager.emit(Enums_1.ManagerEventTypes.Debug, `[NODE] Created README file at: ${readmeFilePath}`);
@@ -1144,5 +1144,26 @@ class Player {
1144
1144
  this.manager.emit(Enums_1.ManagerEventTypes.Debug, `VoiceReceiver error for player ${this.guildId}: ${error.message}`);
1145
1145
  this.manager.emit(Enums_1.ManagerEventTypes.VoiceReceiverError, this, error);
1146
1146
  }
1147
+ /**
1148
+ * Updates the voice state for the player.
1149
+ * @returns {Promise<void>} - A promise that resolves when the voice state is updated.
1150
+ */
1151
+ async updateVoice() {
1152
+ const vs = this.voiceState;
1153
+ const ev = vs?.event;
1154
+ if (!vs?.channelId || !vs?.sessionId || !ev?.token || !ev?.endpoint)
1155
+ return;
1156
+ await this.node.rest.updatePlayer({
1157
+ guildId: this.options.guildId,
1158
+ data: {
1159
+ voice: {
1160
+ token: ev.token,
1161
+ endpoint: ev.endpoint,
1162
+ sessionId: vs.sessionId,
1163
+ channelId: vs.channelId,
1164
+ },
1165
+ },
1166
+ });
1167
+ }
1147
1168
  }
1148
1169
  exports.Player = Player;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "magmastream",
3
- "version": "2.9.3-dev.22",
3
+ "version": "2.9.3-dev.23",
4
4
  "description": "A user-friendly Lavalink client designed for NodeJS.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",