fs.exists找不到我的.mp3文件(node.js和discord.js)

时间:2018-07-01 10:07:33

标签: javascript node.js discord.js

我正在尝试执行_soundboard / _sb命令,并且我尝试检查.mp3文件是否存在,但是由于任何原因它将无法正常工作。 我希望有人可以帮助我。.

const Discord = require('discord.js');
const fs = require('fs');

module.exports.run = (client, message, args) => {
    if(message.author.id !== '201679157124399104') {
        message.channel.send(`Nope this is a testing command!`)
        return;
    };
    if(!message.member.voiceChannel) {
        message.channel.send(`You need to be in a voicechannel to do this!`)
        return;
    };
    let sound = args[0] + ".mp3";
    if(fs.exists(`./sounds/${sound}`,function(exists){})) {
    let vc = message.member.voiceChannel
    vc.join().then(connection => {
        const dispatcher = connection.playFile(`./sounds/${sound}`);
        message.channel.send(`playing: ${sound}`).then(m => m.delete(10000))
        dispatcher.on('end', () => {
        vc.leave();
        })
        return;
        
    });
}
    message.channel.send(`The sound "${sound}" doesn't exists!`)

    
    
    
};

module.exports.help = {
    name: "soundboard",
    name2: "sb"
};

2 个答案:

答案 0 :(得分:0)

您必须了解javascript的异步性和延续性。您正在滥用fs.exists.then。问题不在于找不到文件,它的控制流程有缺陷。您可以使用fs.existsSync简化第一个,但是随后您仍然必须处理Promise.then部分。在回调中写入return不会从外部函数返回。我建议您改用async/await

答案 1 :(得分:0)

!已修复!

我刚刚添加了path-exists模块,它使用起来容易得多。 和f。我尝试了一下之后,方法也行得通。