дискорд. js - муси c бот глючит - PullRequest
0 голосов
/ 21 апреля 2020

Примерно через 1-2 минуты воспроизведения песни мой бот говорит, что воспроизведение закончено независимо от длины песни. вот ссылка на него: https://github.com/Sheesher/amos Я думаю, эта ошибка не вызвана из-за кода ...

const ytdl = require('ytdl-core-discord');
const validUrl = require('valid-url');

let servers = {};

const play = (msg) => {
  const args = msg.content.substring(1).split(" ");
  const link = args[1];

  if (!link) {
    return msg.channel.send('You must provide a link.');
  };

  if (!msg.member.voice.channel) {
    return msg.channel.send('You have to be in a voice chat.');
  }

  if (!validUrl.isUri(link)) {
    return msg.channel.send('That aint be link.');
  }

  if (!servers[msg.guild.id]) servers[msg.guild.id] = {
    queque: []
  }

  let server = servers[msg.guild.id];
  server.queque.push(link);

  if (!msg.guild.voiceConnection) msg.member.voice.channel.join().then((connection) => {
    playSong(connection, link, msg);
  })
}

const playSong = async (connection, url, msg) => {
  const server = servers[msg.guild.id];
  server.dispatcher = connection.play(await ytdl(url), { type: 'opus' });
  server.queque.shift();
  server.dispatcher.on("end", () => {
    if (server.queque[0]) {
      playSong(connection, url);
    } else {
      connection.disconnect();
    }
  })
  server.dispatcher.on('finish', () => log(s('playing finished')))
}```

1 Ответ

0 голосов
/ 21 апреля 2020

Это фактически любая проблема, от которой страдают и многие другие. Это из-за того, как YTDL-Core (даже диссон-версия) обрабатывается с потоками на YouTube. Если он теряет соединение, то он тоже пытается перенаправить его, перенаправить слишком много и создать sh или пропустить песню. Даже созданный мною c бот, от которого я недавно столкнулся, страдает от этого, но старается учиться у начинающих. Честно говоря, просто не используйте YTDL-Core. Используйте что-то вроде lavalink, которая обрабатывает все музи c, играющие для вас.

...