我正在制作一部不和谐的音乐机器人(我已经在这些问题上这么多次说了)而且我正在专门研究队列命令,到目前为止我唯一遇到的问题就是得到一组youtube我已经从音乐队列中获得的youtube链接数组中的名称。我能想出的最好的东西就像这样显示队列
var server = servers[message.guild.id];
console.log('QUEUE:')
if(server === undefined || !server.queue[i]){
message.channel.send("No songs in the queue");
return;
}
for(let i = 0; i < server.queue.length; i++) {
YTDL.getInfo(server.queue[i], function(err,info) {
message.channel.send(info.title)
console.log(info.title)
})
}
唯一的问题是它在发送队列时可能会被中断,而且看起来不太好。如果您有任何人可以帮助我,我们将不胜感激
答案 0 :(得分:0)
我被“The Coding Den”不和服务器上的某人帮忙了。他告诉我的解决方案是异步并等待。
var server = servers[message.guild.id];
var queueTitles = []
function queueCheck(queueSpot) {
return new Promise((resolve, reject) => {
YTDL.getInfo(server.queue[queueSpot], (err, info) => {
if (err) reject(err);
resolve(info);
});
});
}
async function queueWait(queueWaitSpot) {
let info = await queueCheck(queueWaitSpot);
queueTitles.push(info.title)
}
console.log('QUEUE:')
if(server === undefined) {
console.log("No songs in the queue");
messagesend("No songs in the queue");
return;
}
for(let i = 0; i < server.queue.length; i++) {
await queueWait(i)
}
if(queueTitles.length === 0) {
console.log("No songs in the queue")
messagesend("No songs in the queue");
return;
}
console.log("```\n" + queueTitles.join('\n') + "\n```");
message.channel.send(queueTitles.join('\n'));