【问题标题】:discord.js - music bot is buggydiscord.js - 音乐机器人有问题
【发布时间】:2020-08-04 01:43:00
【问题描述】:

播放一首歌曲大约 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')))
}```

【问题讨论】:

    标签: javascript node.js discord discord.js


    【解决方案1】:

    这实际上也是许多其他人遭受的任何问题。这是因为 YouTube 上的流如何处理 YTDL-Core(甚至是不和谐版本)。如果它失去连接,那么它也会尝试重定向它,重定向太多并崩溃或跳过歌曲。即使是我最近创建的音乐机器人也有这个问题,但让初学者可以从中学习。老实说,做到这一点的方法就是不使用 YTDL-Core。使用像 lavalink 这样的东西来处理所有为你播放的音乐。

    【讨论】:

      猜你喜欢
      • 2020-09-22
      • 2021-07-25
      • 2020-11-01
      • 2020-12-01
      • 2020-06-27
      • 2021-02-07
      • 2021-11-29
      • 2021-09-18
      • 2019-10-22
      相关资源
      最近更新 更多