Discord js 音乐播放器机器人突然离开

问题描述 投票:0回答:1

所以我为discord js制作了一个音乐机器人,它使用discord播放器包。该命令运行完美,但在中间的歌曲中突然停止,我尝试到处搜索,但没有任何效果,我认为这是 ffmpeg 的问题,但我不太确定

bot.player = new Player(bot, {
    ytdlOptions: {
        quality: 'lowestaudio',
        highWaterMark: 1 >> 25
    },
})

const player = bot.player;

//play command 


bot.on('interactionCreate', async interaction =>{
    if(interaction.commandName === 'play'){

    const song = interaction.options.get('song').value;
    const res = await player.search(song, {
        searchEngine: QueryType.SPOTIFY_SONG
    });


    if (!res || !res.tracks.length) return interaction.reply({ content: `No results found ${interaction.member}... try again ? ❌`, ephemeral: true });

    const queue = await player.createQueue(interaction.guild)

        if (!queue.connection) await queue.connect(interaction.member.voice.channel);


   await interaction.channel.send({ content:`Loading your ${res.playlist ? 'playlist' : 'track'}... 🎧`});

   const track = await res.tracks[0]

   console.log(track)
    if(!track)  return interaction.channel.send({content: 'No song found'});

    queue.addTrack(track)

    queue.play();

}
})

离开频道后,其他命令和机器人工作正常

ffmpeg discord discord.js audio-player
1个回答
0
投票

您遇到的问题不是 ffmpeg 的问题。您似乎正在使用

ytdl-core
来传输音频。
ytdl-core
的设计初衷并不是让 HTTP 连接长时间保持打开状态。当将媒体流式传输到消耗数据的速度比输入数据的速度慢时,就会发生这种情况。

另一个称为

play-dl
的 npm 包解决了这个问题(并添加了对其他流媒体服务的支持,这是真正的锦上添花)。 这里查看它的示例 Discord 机器人代码,了解它是如何使用的。

在我以前的 Discord 机器人项目中,在遇到与

play-dl
相同的问题后,我使用了
ytdl-core
,事情进展顺利。如果您需要进一步帮助,请发表评论。

© www.soinside.com 2019 - 2024. All rights reserved.