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)
如何在我的应用中实现?
答案 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))
})
如果您有任何其他问题,请随时发表评论!
快乐编码! :)