Discord.js — Переписанная версия кода для моего музыкального бота не работает

#node.js #discord #discord.js #bots #audio-player

Вопрос:

У меня проблема с моим музыкальным ботом. Переписанный файл присоединяется и запускает строку «Воспроизведение песни», но не воспроизводит звук. Грязный работает просто отлично. Что может быть в этом случае-все в основном одно и то же, за исключением этих функций

Беспорядочный код

 const videoPlayer = async function (message, song, skip, stop) {
    const guild = message.guild;
    const songQueue = queue.get(guild.id);
    if(!song amp;amp; !skip amp;amp; !stop) {
        songQueue.connection.disconnect();
        queue.delete(guild.id);
        return;
    }
    if (skip) {        
        if (!songQueue) return message.channel.send("There are currently no songs in the queue");
        const prev = songQueue.songs[0].title
        await songQueue.textChannel.send(`Skipping `${prev}`!`)
        songQueue.songs.shift();
        if (!song amp;amp; songQueue.songs.length == 0) {
            songQueue.connection.disconnect();
            queue.delete(guild.id);
            return songQueue.textChannel.send("There are currently no songs in the queue");
        }
        var music = songQueue.songs[0]
        var stream = ytdl(music.url, {filter: 'audioonly', highWaterMark: 1<<25})
    
    } else {
        var stream = ytdl(song.url, {filter: 'audioonly', highWaterMark: 1<<25})  
    }
    const player = Voice.createAudioPlayer();
    const resource = Voice.createAudioResource(stream);
    await player.play(resource);
    songQueue.connection.subscribe(player);

    if (!song amp;amp; music) {
        song = music
    }
    player.on(Voice.AudioPlayerStatus.Playing, async () => {
        await songQueue.textChannel.send(`Playing `${song.title}`!`)
    });
    player.on(Voice.AudioPlayerStatus.Idle, () => {
        songQueue.songs.shift();
        videoPlayer(message, songQueue.songs[0])
    });   
}
 

Переписанный Код

 const videoPlayer = async (message, song) => {
  const guild = message.guild;
  const songQueue = queue.get(guild.id);

  if(!song) {
    songQueue.connection.disconnect();
    queue.delete(guild.id);
    return message.channel.send("There are no more songs in queue.");
  }

  const stream = ytdl(song.url, {filter: 'audioonly', highWaterMark: 1<<25});
  const player = Voice.createAudioPlayer();
  const resource = Voice.createAudioResource(stream);
  await player.play(resource);
  songQueue.connection.subscribe(player);

  player.on(Voice.AudioPlayerStatus.Playing, async () => {
    await songQueue.textChannel.send(`Playing `${song.title}``)
  });

  player.on(Voice.AudioPlayerStatus.Idle, async () => {
    songQueue.songs.shift();
    videoPlayer(message, songQueue.songs[0]);
  })
}

const skipSong = async (message) => {
  guild = message.guild;
  songQueue = queue.get(guild.id);

  if(!songQueue) return message.channel.send("There are currently no songs in queue.");

  let song = songQueue.songs[0];
  await message.channel.send(`Skipping `${song.title}`!`);
  songQueue.songs.shift();
  song = songQueue.songs[0];

  if(!song) return message.channel.send("There are no more songs in queue.");
  videoPlayer(message, song);
}

const stop = async (message) => {
    songQueue = queue.get(message.guild.id);
    await songQueue.textChannel.send('Stopping in just a moment...');
    songQueue.connection.disconnect();
    queue.delete(guild.id);
    return;
}
 

Я не понимаю, в чем проблема-пожалуйста, помогите!

Редактировать:

Так что, оказывается, нет никаких проблем с кодом, кроме их каталога. По какой-то причине он просто работает на оригинальном-я до сих пор не знаю, в чем именно проблема, но сейчас он работает» ^^

Комментарии:

1. это выдает ошибку или что-то в этом роде?

2. Никакой ошибки-вот почему я совсем растерялся

3. Я новичок в javascript, так что это может быть проблемой—

4. Одна вещь, которую я заметил, это то, что мой бот долгое время остается в ВК, не воспроизводя аудио, но все еще там.

5. Совет при рефакторинге делайте это шаг за шагом. Проверьте работоспособность шага, прежде чем двигаться дальше. В конечном итоге вы столкнетесь с ошибками, которые вызывают вашу текущую проблему.