Discord. js «Ошибка: FFMPEG не найден», но я уверен, что она у меня есть - PullRequest
0 голосов
/ 21 февраля 2020

Я изучаю Discord. js и следую этому уроку: https://discord.js.org/# / docs / main / stable / themes / voice . С самого начала, когда я пытаюсь запустить - npm install ffmpeg-binaries, я получаю огромное сообщение об ошибке, но он говорит мне просто использовать install ffmpeg, поэтому я так и сделал.

Вот мой индекс. js страница (я заменил свой токен на * здесь):

const Discord = require('discord.js');
const Colesbot = new Discord.Client();

const token = '**********************************';

Colesbot.on('ready', () =>{
    console.log('Slamsbot is online.');
})

Colesbot.on('message', msg=>{
   if(msg.content == "What up bot?"){
       msg.reply("Whats good pimp?")
   }
});

Colesbot.on('message', message=>{
    if (message.content === '/join') {
        // Only try to join the sender's voice channel if they are in one themselves
        if (message.member.voiceChannel) {
            message.member.voiceChannel.join().then(connection => {
                message.reply('I have successfully connected to the channel!');
            }).catch(console.log);
    } else {
        message.reply('You need to join a voice channel first!');
      }
    }
 });

//Event listener for new guild members
Colesbot.on('guildMemberAdd', member =>{
    // Send the message to a designated channel on a server:
    const channel = member.guild.channels.find(ch => ch.name === 'general');
    // Do nothing if the channel wasn't found on this server
    if (!channel) return;
    // Send the message, mentioning the member
    channel.send(`Welcome to the server, ${member}. Please use the bot-commands channel to assign yourself a role.`);
})

Colesbot.login(token);



exports.run = (client, message, args) => {

    let user = message.mentions.users.first || message.author;


}

Если я набираю «/ join», когда не подключен к голосовому каналу, я получаю правильное сообщение. Однако, если я попытаюсь, пока я нахожусь, я получаю это сообщение об ошибке:

Error: FFMPEG not found
task_queues.js:94
message:"FFMPEG not found"
stack:"Error: FFMPEG not found\n    at Function.selectFfmpegCommand (c:\Users\bobal\Documents\GitHub\Spotify-Playlist-Discord-bot\node_modules\prism-media\src\transcoders\ffmpeg\Ffmpeg.js:46:13)\n    at new FfmpegTranscoder (c:\Users\bobal\Documents\GitHub\Spotify-Playlist-Discord-bot\node_modules\prism-media\src\transcoders\ffmpeg\Ffmpeg.js:7:37)\n    at new MediaTranscoder (c:\Users\bobal\Documents\GitHub\Spotify-Playlist-Discord-bot\node_modules\prism-media\src\transcoders\MediaTranscoder.js:10:19)\n    at new Prism (c:\Users\bobal\Documents\GitHub\Spotify-Playlist-Discord-bot\node_modules\prism-media\src\Prism.js:5:23)\n    at new VoiceConnection (c:\Users\bobal\Documents\GitHub\Spotify-Playlist-Discord-bot\node_modules\discord.js\src\client\voice\VoiceConnection.js:46:18)\n    at c:\Users\bobal\Documents\GitHub\Spotify-Playlist-Discord-bot\node_modules\discord.js\src\client\voice\ClientVoiceManager.js:63:22\n    at new Promise (<anonymous>)\n    at ClientVoiceManager.joinChannel (c:\Users\bobal\Documents\GitHub\Spotif...

Итак, я пошел в эту папку, и там находится файл Ffmpeg. js, и вот его содержимое:

const ChildProcess = require('child_process');
const FfmpegProcess = require('./FfmpegProcess');

class FfmpegTranscoder {
  constructor(mediaTranscoder) {
    this.mediaTranscoder = mediaTranscoder;
    this.command = FfmpegTranscoder.selectFfmpegCommand();
    this.processes = [];
  }

  static verifyOptions(options) {
    if (!options) throw new Error('Options not provided!');
    if (!options.media) throw new Error('Media must be provided');
    if (!options.ffmpegArguments || !(options.ffmpegArguments instanceof Array)) {
      throw new Error('FFMPEG Arguments must be an array');
    }
    if (options.ffmpegArguments.includes('-i')) return options;
    if (typeof options.media === 'string') {
      options.ffmpegArguments = ['-i', `${options.media}`].concat(options.ffmpegArguments).concat(['pipe:1']);
    } else {
      options.ffmpegArguments = ['-i', '-'].concat(options.ffmpegArguments).concat(['pipe:1']);
    }
    return options;
  }

  /**
   * Transcodes an input using FFMPEG
   * @param {FfmpegTranscoderOptions} options the options to use
   * @returns {FfmpegProcess} the created FFMPEG process
   * @throws {FFMPEGOptionsError}
   */
  transcode(options) {
    if (!this.command) this.command = FfmpegTranscoder.selectFfmpegCommand();
    const proc = new FfmpegProcess(this, FfmpegTranscoder.verifyOptions(options));
    this.processes.push(proc);
    return proc;
  }

  static selectFfmpegCommand() {
    try {
      return require('ffmpeg-binaries');
    } catch (err) {
      for (const command of ['ffmpeg', 'avconv', './ffmpeg', './avconv']) {
        if (!ChildProcess.spawnSync(command, ['-h']).error) return command;
      }
      throw new Error('FFMPEG not found');
    }
  }
}

module.exports = FfmpegTranscoder;

Я также добавил ffmpeg в системный путь, и это не помогло:

C:\ffmpeg
C:\Users\bobal\Documents\GitHub\Spotify-Playlist-Discord-bot\ffmpeg

Я не совсем уверен, что делать дальше. Если вам нужна какая-либо другая информация, я с радостью ее предоставлю.

...