Skip to content

Commit 1f5d0be

Browse files
committed
Allow clients to listen for all track events
1 parent 69ce0f0 commit 1f5d0be

File tree

3 files changed

+34
-7
lines changed

3 files changed

+34
-7
lines changed

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,20 +26,20 @@ data class StatsEvent(override val node: LavalinkNode, override val event: Messa
2626
: ClientEvent<Message.StatsEvent>(node, event)
2727

2828
// Player events
29-
data class EmittedEvent(override val node: LavalinkNode, override val event: Message.EmittedEvent)
30-
: ClientEvent<Message.EmittedEvent>(node, event)
29+
sealed class EmittedEvent<T : Message.EmittedEvent>(override val node: LavalinkNode, override val event: T)
30+
: ClientEvent<T>(node, event)
3131

3232
data class TrackStartEvent(override val node: LavalinkNode, override val event: Message.EmittedEvent.TrackStartEvent)
33-
: ClientEvent<Message.EmittedEvent.TrackStartEvent>(node, event)
33+
: EmittedEvent<Message.EmittedEvent.TrackStartEvent>(node, event)
3434

3535
data class TrackEndEvent(override val node: LavalinkNode, override val event: Message.EmittedEvent.TrackEndEvent)
36-
: ClientEvent<Message.EmittedEvent.TrackEndEvent>(node, event)
36+
: EmittedEvent<Message.EmittedEvent.TrackEndEvent>(node, event)
3737

3838
data class TrackExceptionEvent(override val node: LavalinkNode, override val event: Message.EmittedEvent.TrackExceptionEvent)
39-
: ClientEvent<Message.EmittedEvent.TrackExceptionEvent>(node, event)
39+
: EmittedEvent<Message.EmittedEvent.TrackExceptionEvent>(node, event)
4040

4141
data class TrackStuckEvent(override val node: LavalinkNode, override val event: Message.EmittedEvent.TrackStuckEvent)
42-
: ClientEvent<Message.EmittedEvent.TrackStuckEvent>(node, event)
42+
: EmittedEvent<Message.EmittedEvent.TrackStuckEvent>(node, event)
4343

4444
data class WebSocketClosedEvent(override val node: LavalinkNode, override val event: Message.EmittedEvent.WebSocketClosedEvent)
45-
: ClientEvent<Message.EmittedEvent.WebSocketClosedEvent>(node, event)
45+
: EmittedEvent<Message.EmittedEvent.WebSocketClosedEvent>(node, event)

src/test/java/JavaJDAExample.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,21 @@ private void registerLavalinkListeners() {
101101
event.getPlayers()
102102
);
103103
});
104+
105+
this.client.on(EmittedEvent.class).subscribe((data) -> {
106+
if (data instanceof TrackStartEvent) {
107+
System.out.println("Is a track start event!");
108+
}
109+
110+
final var node = data.getNode();
111+
final var event = data.getEvent();
112+
113+
System.out.printf(
114+
"Node '%s' emitted event: %s%n",
115+
node.getName(),
116+
event
117+
);
118+
});
104119
}
105120

106121
@Override

src/test/kotlin/testScript.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,18 @@ fun main() {
3333
println("Node '${node.name}' has stats, current players: ${event.playingPlayers}/${event.players}")
3434
}
3535

36+
client.on<EmittedEvent<*>>()
37+
.subscribe { raw ->
38+
if (raw is TrackStartEvent) {
39+
println("Is a track start event!")
40+
}
41+
42+
val node = raw.node
43+
val event = raw.event
44+
45+
println("Node '${node.name}' emitted event: $event")
46+
}
47+
3648
JDABuilder.createDefault(token)
3749
.setVoiceDispatchInterceptor(JDAVoiceUpdateListener(client))
3850
.enableIntents(

0 commit comments

Comments
 (0)