Skip to content

Commit 0bf628d

Browse files
committed
Only create player if response is 404
1 parent e3682c9 commit 0bf628d

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

src/main/kotlin/dev/arbjerg/lavalink/client/LavalinkNode.kt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import dev.arbjerg.lavalink.client.protocol.toCustom
88
import dev.arbjerg.lavalink.client.protocol.toLavalinkLoadResult
99
import dev.arbjerg.lavalink.internal.LavalinkRestClient
1010
import dev.arbjerg.lavalink.internal.LavalinkSocket
11+
import dev.arbjerg.lavalink.internal.error.RestException
1112
import dev.arbjerg.lavalink.internal.fromRawJson
1213
import dev.arbjerg.lavalink.internal.loadbalancing.Penalties
1314
import dev.arbjerg.lavalink.internal.toLavalinkPlayer
@@ -120,6 +121,7 @@ class LavalinkNode(
120121

121122
/**
122123
* Gets the player from the guild id. If the player is not cached, it will be retrieved from the server.
124+
* If the player does not exist on the node, it will be created.
123125
*
124126
* @param guildId The guild id of the player.
125127
*
@@ -134,8 +136,14 @@ class LavalinkNode(
134136

135137
return rest.getPlayer(guildId)
136138
.map { it.toLavalinkPlayer(this) }
137-
// TODO: check for 404 status code, if not 404, don't create
138-
.onErrorResume { createOrUpdatePlayer(guildId) }
139+
// Create the player if it doesn't exist on the node.
140+
.onErrorResume {
141+
if (it is RestException && it.code == 404) {
142+
createOrUpdatePlayer(guildId)
143+
} else {
144+
it.toMono()
145+
}
146+
}
139147
.doOnSuccess {
140148
// Update the player internally upon retrieving it.
141149
playerCache[it.guildId] = it

0 commit comments

Comments
 (0)