如何从一系列YouTube视频链接中获取一系列YouTube视频名称?

时间:2017-11-08 17:34:43

标签: javascript arrays node.js youtube discord.js

我正在制作一部不和谐的音乐机器人(我已经在这些问题上这么多次说了)而且我正在专门研究队列命令,到目前为止我唯一遇到的问题就是得到一组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)
    })
}

唯一的问题是它在发送队列时可能会被中断,而且看起来不太好。如果您有任何人可以帮助我,我们将不胜感激

1 个答案:

答案 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'));