我正在尝试执行_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"
};
答案 0 :(得分:0)
您必须了解javascript的异步性和延续性。您正在滥用fs.exists
和.then
。问题不在于找不到文件,它的控制流程有缺陷。您可以使用fs.existsSync
简化第一个,但是随后您仍然必须处理Promise.then
部分。在回调中写入return不会从外部函数返回。我建议您改用async/await
。
答案 1 :(得分:0)
!已修复!
我刚刚添加了path-exists模块,它使用起来容易得多。 和f。我尝试了一下之后,方法也行得通。