Update queueManager.js
This commit is contained in:
parent
fb027bc7a6
commit
4ccc75d38b
|
@ -5,12 +5,23 @@ const queueMap = new Map();
|
||||||
const playerMap = new Map();
|
const playerMap = new Map();
|
||||||
const currentTrackMap = new Map();
|
const currentTrackMap = new Map();
|
||||||
const repeatMap = new Map();
|
const repeatMap = new Map();
|
||||||
|
const voiceChannelMap = new Map();
|
||||||
|
|
||||||
function addToQueue(guildId, filePath, title) {
|
function addToQueue(guildId, filePath, title, voiceChannel) {
|
||||||
if (!queueMap.has(guildId)) {
|
if (!queueMap.has(guildId)) {
|
||||||
queueMap.set(guildId, []);
|
queueMap.set(guildId, []);
|
||||||
}
|
}
|
||||||
queueMap.get(guildId).push({ filePath, title });
|
queueMap.get(guildId).push({ filePath, title });
|
||||||
|
|
||||||
|
if (voiceChannel) {
|
||||||
|
voiceChannelMap.set(guildId, voiceChannel);
|
||||||
|
}
|
||||||
|
|
||||||
|
const audioPlayer = playerMap.get(guildId);
|
||||||
|
|
||||||
|
if (!audioPlayer || audioPlayer.state.status !== AudioPlayerStatus.Playing) {
|
||||||
|
playNextInQueue(guildId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getQueue(guildId) {
|
function getQueue(guildId) {
|
||||||
|
@ -27,10 +38,16 @@ function toggleRepeat(guildId) {
|
||||||
return !currentRepeat;
|
return !currentRepeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
function playNextInQueue(guildId, voiceChannel) {
|
function playNextInQueue(guildId) {
|
||||||
const queue = getQueue(guildId);
|
const queue = getQueue(guildId);
|
||||||
const currentTrack = getCurrentTrack(guildId);
|
const currentTrack = getCurrentTrack(guildId);
|
||||||
const repeat = repeatMap.get(guildId);
|
const repeat = repeatMap.get(guildId);
|
||||||
|
const voiceChannel = voiceChannelMap.get(guildId);
|
||||||
|
|
||||||
|
if (!voiceChannel) {
|
||||||
|
console.error("Voice channel is undefined. Cannot play track.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (currentTrack && !repeat) {
|
if (currentTrack && !repeat) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -85,7 +102,7 @@ function playTrack(guildId, voiceChannel, track) {
|
||||||
|
|
||||||
const queue = getQueue(guildId);
|
const queue = getQueue(guildId);
|
||||||
if (queue.length > 0 || repeatMap.get(guildId)) {
|
if (queue.length > 0 || repeatMap.get(guildId)) {
|
||||||
playNextInQueue(guildId, voiceChannel);
|
playNextInQueue(guildId);
|
||||||
} else {
|
} else {
|
||||||
if (connection && connection.state.status !== 'destroyed') {
|
if (connection && connection.state.status !== 'destroyed') {
|
||||||
connection.destroy();
|
connection.destroy();
|
||||||
|
@ -102,7 +119,7 @@ function playTrack(guildId, voiceChannel, track) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function skipTrack(guildId, voiceChannel) {
|
function skipTrack(guildId) {
|
||||||
const player = playerMap.get(guildId);
|
const player = playerMap.get(guildId);
|
||||||
const queue = getQueue(guildId);
|
const queue = getQueue(guildId);
|
||||||
|
|
||||||
|
@ -115,7 +132,7 @@ function skipTrack(guildId, voiceChannel) {
|
||||||
player.stop();
|
player.stop();
|
||||||
|
|
||||||
if (queue.length > 0) {
|
if (queue.length > 0) {
|
||||||
playNextInQueue(guildId, voiceChannel);
|
playNextInQueue(guildId);
|
||||||
} else {
|
} else {
|
||||||
const connection = playerMap.get(guildId)?._state?.subscription?.connection;
|
const connection = playerMap.get(guildId)?._state?.subscription?.connection;
|
||||||
if (connection && connection.state.status !== 'destroyed') {
|
if (connection && connection.state.status !== 'destroyed') {
|
||||||
|
|
Loading…
Reference in New Issue