55import dev .arbjerg .lavalink .client .loadbalancing .builtin .VoiceRegionPenaltyProvider ;
66import dev .arbjerg .lavalink .libraries .jda .JDAVoiceUpdateListener ;
77import net .dv8tion .jda .api .JDABuilder ;
8+ import net .dv8tion .jda .api .entities .channel .unions .AudioChannelUnion ;
89import net .dv8tion .jda .api .requests .GatewayIntent ;
910import net .dv8tion .jda .api .utils .cache .CacheFlag ;
1011import org .slf4j .Logger ;
1617public class Main {
1718 private static final Logger LOG = LoggerFactory .getLogger (Main .class );
1819
20+ private static final int SESSION_INVALID = 4006 ;
21+
1922 public static void main (String [] args ) throws InterruptedException {
2023 final var token = System .getenv ("BOT_TOKEN" );
2124 final LavalinkClient client = new LavalinkClient (Helpers .getUserIdFromToken (token ));
@@ -25,15 +28,35 @@ public static void main(String[] args) throws InterruptedException {
2528 registerLavalinkListeners (client );
2629 registerLavalinkNodes (client );
2730
28- JDABuilder .createDefault (token )
31+ final var jda = JDABuilder .createDefault (token )
2932 .setVoiceDispatchInterceptor (new JDAVoiceUpdateListener (client ))
3033 .enableIntents (GatewayIntent .GUILD_VOICE_STATES )
3134 .enableCache (CacheFlag .VOICE_STATE )
3235 .addEventListeners (new JDAListener (client ))
3336 .build ()
3437 .awaitReady ();
35- }
3638
39+ // Got a lot of 4006 closecodes? Try this "fix"
40+ client .on (WebSocketClosedEvent .class ).subscribe ((event ) -> {
41+ if (event .getCode () == SESSION_INVALID ) {
42+ final var guildId = event .getGuildId ();
43+ final var guild = jda .getGuildById (guildId );
44+
45+ if (guild == null ) {
46+ return ;
47+ }
48+
49+ final var connectedChannel = guild .getSelfMember ().getVoiceState ().getChannel ();
50+
51+ // somehow
52+ if (connectedChannel == null ) {
53+ return ;
54+ }
55+
56+ jda .getDirectAudioController ().reconnect (connectedChannel );
57+ }
58+ });
59+ }
3760
3861
3962 private static void registerLavalinkNodes (LavalinkClient client ) {
0 commit comments