Пытаюсь заставить discord.js-musicbot-аддон работать. Когда музыка вот-вот заиграет, я получаю эту ошибку

#javascript #discord.js

#javascript #discord.js

Вопрос:

 TypeError: Cannot read property 'play' of undefined
at C:UserspinkDesktopIwtdB0t_v.7node_modulesdiscord.js-musicbot-addonindex.js:1474:41
at processTicksAndRejections (internal/process/task_queues.js:93:5)
  

Я пытался обновить каждый discord.js команда v11 для discord.js версия 12, но ошибка все еще появляется после перехода с playStream на play. Есть идеи, что может быть причиной этого?

Ответ №1:

Похоже, это проблема с библиотекой discord.js-musicbot-addon, так что, к сожалению, вы мало что можете сделать.

Код, который, я думаю, вызывает ошибку (удален некоторый нерелевантный код, удалены отступы и добавлены комментарии для удобства чтения):

 new Promise((resolve, reject) => {
  const voiceConnection = client.voice.connections.find(val => val.channel.guild.id == msg.guild.id);

  // This line here is what (I believe) is ultimately causing the error.
  // Collection#find returns undefined, not null, when an item cannot be found.
  // Because this uses strict equality (===), an undefined voiceConnection (e.g.
  // the bot hasn't connected to a voice channel yet) won't trigger this code.
  if (voiceConnection === null) {
    // attempts to connect to the voice channel
    /* ... */
  } else {
    // The promise is resolved with a potentially undefined voiceConnection.
    resolve(voiceConnection);
  }
}).then(connection => {
  // retrieves the video to play
  /* ... */

  try {
    /* ... */

    // This line is where the error is. When connection is undefined, it throws
    // the error "Cannot read property 'play' of undefined"
    let dispatcher = connection.play(ytdl(video.url, {
      filter: 'audioonly',
      quality: 'highestaudio'
    }), {
      bitrate: mjusicbot.bitRate,
      volume: (queue.volume / 100)
    })
  

Обратите внимание, что discord.js-musicbot-addon устарел в NPM и больше не поддерживается. Из репозитория:

Этот проект БОЛЬШЕ НЕ ПОДДЕРЖИВАЕТСЯ и НЕ функционирует. Не используйте это.