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 +5 -0
- package/dist/structures/Manager.js +7 -21
- package/dist/structures/Node.js +5 -1
- package/dist/structures/Player.js +21 -0
- package/package.json +1 -1
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.
|
|
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.
|
|
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
|
-
|
|
1082
|
-
|
|
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
|
-
|
|
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.
|
package/dist/structures/Node.js
CHANGED
|
@@ -1171,8 +1171,12 @@ class Node {
|
|
|
1171
1171
|
* @private
|
|
1172
1172
|
*/
|
|
1173
1173
|
createReadmeFile() {
|
|
1174
|
-
const
|
|
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;
|