我有一个.mp3格式的音乐库,存储在Google云端硬盘文件夹中,有一堆音乐文件,我希望能够一个接一个地播放。我能够分别读取和流式传输每个文件,但是当我尝试从文件夹中“排队”所有文件并一个接一个地播放时,它不会等到一个流(歌曲)播放完毕后再播放。下一步,而是立即开始下一首歌曲,这将导致整个文件夹中只播放最后一首歌曲。我假设我必须弄乱我之前在discord.js开发中所做的async / await,或者不熟悉的Promises和Promise.all()。这是代码的相关部分。
var folderId = "'the-folder-id'";
drive.files.list({
q: folderId + " in parents", // to get all the files in the folder
fields: 'files(id)'
}, (err, res) => {
if (err) throw err;
const files = res.data.files;
files.map(file => {
drive.files.get({
fileId: file.id,
alt: 'media'
},
{ responseType: "stream" },
(err, { data }) => {
message.member.voiceChannel.join().then(connection => {
const dispatcher = connection.playStream(data); // doesn't wait for this to finish to play the next stream (song)
}).catch(err => console.log(err));
});
});
});
[请注意,我有一条命令使漫游器离开频道,因此正常情况下我的代码中没有任何voiceChannel.leave()
,因为我不希望它在歌曲播放完毕后立即离开。] >
欢迎任何意见,在此先谢谢您!
我有一个.mp3格式的音乐库,存储在Google云端硬盘文件夹中,有一堆音乐文件,我希望能够一个接一个地播放。我能够分别读取和流式传输每个文件,...