如果机器人断开连接,如何重新连接到 VC?

时间:2021-04-15 09:06:27

标签: javascript node.js discord.js

client.on("ready", () => {
    console.log(`Logged in as ${client.user.tag}`)
    const voiceChannel = client.channels.cache.get(channel_id)
    voiceChannel.join().then(connection => {
        console.log("Joined voice channel")
        function play(connection) {
            const stream = ytdl(video_urls[Math.floor(Math.random() * video_urls.length)], { filter: "audioonly" })
            const dispatcher = connection.play(stream)
            dispatcher.on("finish", () => {
                play(connection)
            })
        }

        play(connection)
    })
})

这是音乐机器人的基本代码。语音通道被人断线如何重新连接? 我见过一个这样的代码

setInterval(async function() {
  if(!client.voice.connections.get(SERVER)) {
    let channel = client.channels.cache.get(CHANNEL) || await client.channels.fetch(CHANNEL)
    if(!channel) return;

    const connection = await channel.join()
    connection.play(ytdl(LIVE))
  }
}, 20000)

如何在我的应用中实现?

1 个答案:

答案 0 :(得分:1)

您可以使用事件代替 setInterval()。它们的效率要高得多。

例如你可以使用这个:

const connection = client.voice.connections.get(SERVER)
connection.on("disconnect", () => {
  let channel = client.channels.cache.get(CHANNEL) || await client.channels.fetch(CHANNEL)
  const dispatcher = channel.join()
  dispatcher.play(ytdl(LIVE))
})

如果您有任何其他问题,请随时发表评论!

快乐编码! :)