【问题标题】:Discord.js ytdl Error: input stream: Status code: 416Discord.js ytdl 错误:输入流:状态代码:416
【发布时间】:2020-11-21 17:42:02
【问题描述】:

我有一个使用 ytdl 的音乐 Discord 机器人,偶尔,歌曲会随机停止并输出此错误:

Error: input stream: Status code: 416

这是我的 playSong 函数的代码

static playSong(queue, message) {
    const classThis = this;
    queue[0].voiceChannel
    .join()
    .then(function(connection) {
        const dispatcher = connection.play(ytdl(queue[0].url, {quality: 'highestaudio'}))
        .on('start', function() {
            message.guild.musicData.songDispatcher = dispatcher;
            dispatcher.setVolume(message.guild.musicData.volume);
            const videoEmbed = new Discord.MessageEmbed()
                .setThumbnail(queue[0].thumbnail)
                .setColor(embedSettings.color)
                .addField('Now Playing', `${queue[0].title} (${queue[0].url})`)
                .addField('Duration', queue[0].duration)
                .setFooter(embedSettings.footer, embedSettings.footer_url);
            if (queue[1]) videoEmbed.addField('Next Song:', queue[1].title);
            message.say(videoEmbed);
            message.guild.musicData.nowPlaying = queue[0];
            return queue.shift();
        })
        .on('finish', function() {
            if (queue.length >= 1) {
                return classThis.playSong(queue, message);
            } else {
                message.guild.musicData.isPlaying = false;
                message.guild.musicData.nowPlaying = null;
                message.guild.musicData.songDispatcher = null;
                if (message.guild.me.voice.channel) {
                    return message.guild.me.voice.channel.leave();
                }
            }
        })
}

当我将机器人移至 Discord Bot 托管服务时,错误发生的频率降低了,但仍然发生。这是我的代码问题,还是与 YouTube API 的连接问题?

【问题讨论】:

    标签: node.js discord discord.js ytdl


    【解决方案1】:

    我使用以下方法解决了这个问题:

    const dispatcher = connection.play(ytdl(queue[0].url, {
        quality: 'highestaudio',
        highWaterMark: 1 << 25
    }))
    

    所以,对你来说:

    static playSong(queue, message) {
        const classThis = this;
        queue[0].voiceChannel
        .join()
        .then(function(connection) {
            const dispatcher = connection.play(ytdl(queue[0].url, {quality: 'highestaudio', highWaterMark: 1 << 25 }))
            .on('start', function() {
                message.guild.musicData.songDispatcher = dispatcher;
                dispatcher.setVolume(message.guild.musicData.volume);
                const videoEmbed = new Discord.MessageEmbed()
                    .setThumbnail(queue[0].thumbnail)
                    .setColor(embedSettings.color)
                    .addField('Now Playing', `${queue[0].title} (${queue[0].url})`)
                    .addField('Duration', queue[0].duration)
                    .setFooter(embedSettings.footer, embedSettings.footer_url);
                if (queue[1]) videoEmbed.addField('Next Song:', queue[1].title);
                message.say(videoEmbed);
                message.guild.musicData.nowPlaying = queue[0];
                return queue.shift();
            })
            .on('finish', function() {
                if (queue.length >= 1) {
                    return classThis.playSong(queue, message);
                } else {
                    message.guild.musicData.isPlaying = false;
                    message.guild.musicData.nowPlaying = null;
                    message.guild.musicData.songDispatcher = null;
                    if (message.guild.me.voice.channel) {
                        return message.guild.me.voice.channel.leave();
                    }
                }
            })
    }
    

    【讨论】:

    • 这似乎解决了它。谢谢!
    猜你喜欢
    • 2020-10-30
    • 2021-08-03
    • 2021-12-06
    • 1970-01-01
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    相关资源
    最近更新 更多