Javascript 如何使用ytdl core通过Discord.js bot发送下载的.mp3?

Javascript 如何使用ytdl core通过Discord.js bot发送下载的.mp3?,javascript,Javascript,以下是它当前的样子: const Discord = require("discord.js") const client = new Discord.Client() const fs = require("fs") const ytdl = require("ytdl-core") const config = require("./config.json") fs.readdir("./events/", (err, files) => { if (err) return c

以下是它当前的样子:

const Discord = require("discord.js")
const client = new Discord.Client()
const fs = require("fs")
const ytdl = require("ytdl-core")

const config = require("./config.json")

fs.readdir("./events/", (err, files) => {
  if (err) return console.error(err)
  files.forEach(file => {
    let eventFunction = require(`./events/${file}`)
    let eventName = file.split(".")[0]
    client.on(eventName, (...args) => eventFunction.run(client, ...args))
  })
})

client.on("message", message => {
  if (message.author.bot) return
  if(message.content.indexOf(config.prefix) !== 0) return

  const args = message.content.slice(config.prefix.length).trim().split(/ +/g)
  const command = args.shift().toLowerCase()

  try {
    let commandFile = require(`./commands/${command}.js`)
    commandFile.run(client, message, args)
  } catch (err) {
    console.error(err)
  }

  if(command === "test"){
    let url = args[0]
    ytdl(url, {filter:'audioonly', format:'mp3'}).pipe(fs.createWriteStream("audio.mp3"))
    message.channel.sendFile("./audio.mp3")
  }
});

client.login(config.token)
命令存储在不同的文件中,但我在 如果(命令==“测试”) 用于测试命令


非常感谢您的帮助,谢谢您使用的是异步的
流。要使其正常工作,您需要检查文件的写入过程是否完成

ytdl(url, {filter: 'audioonly', format: 'mp3'})
.pipe(fs.createWriteStream('audio.mp3'))

// End of writing
.on('end', () => {
    message.sendFile('./audio.mp3');
});