Skip to content

Commit

Permalink
Filter out empty voice states when transferring
Browse files Browse the repository at this point in the history
  • Loading branch information
duncte123 committed Sep 30, 2024
1 parent 57c8d29 commit e654a19
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions src/main/kotlin/dev/arbjerg/lavalink/client/LavalinkClient.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import dev.arbjerg.lavalink.client.loadbalancing.builtin.DefaultLoadBalancer
import dev.arbjerg.lavalink.client.event.ClientEvent
import dev.arbjerg.lavalink.client.player.LavalinkPlayer
import dev.arbjerg.lavalink.internal.ReconnectTask
import dev.arbjerg.lavalink.protocol.v4.VoiceState
import reactor.core.Disposable
import reactor.core.publisher.Flux
import reactor.core.publisher.Sinks
Expand Down Expand Up @@ -128,6 +129,7 @@ class LavalinkClient(val userId: Long) : Closeable, Disposable {
val orphans = findOrphanedPlayers()

orphans.mapNotNull { linkMap[it.guildId] }
.filter { !it.cachedPlayer?.voiceState.isEmpty() } // TODO: do some logging to mark them as skipped?
.forEach { link ->
link.transferNode(node)
}
Expand Down Expand Up @@ -225,4 +227,12 @@ class LavalinkClient(val userId: Long) : Closeable, Disposable {
}
}
}

private fun VoiceState?.isEmpty(): Boolean {
if (this == null) {
return true
}

return this.token.isBlank() || this.endpoint.isBlank() || this.sessionId.isBlank();
}
}

0 comments on commit e654a19

Please sign in to comment.