From cfe05144f96b7ea4d7940c8d07af2b83eba35b62 Mon Sep 17 00:00:00 2001 From: loki5512344 Date: Sun, 12 Jul 2026 23:47:46 +0200 Subject: [PATCH] fix: create separate LavalinkManager for radio bot with its own token Radio bot is a separate Discord bot account but shared the main bot's LavalinkManager (created with main bot's user ID). When the radio bot connected to voice, Lavalink received voice server updates mismatched with the expected user ID, causing voice connection timeout. Now the radio bot creates its own LavalinkManager with its own token, matching the pattern already used by the music bot. --- .../creator/loki/core/BotInitializer.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/main/java/creator/loki/core/BotInitializer.java b/src/main/java/creator/loki/core/BotInitializer.java index c0b92f3..7187374 100644 --- a/src/main/java/creator/loki/core/BotInitializer.java +++ b/src/main/java/creator/loki/core/BotInitializer.java @@ -72,10 +72,15 @@ public class BotInitializer { healthHttpServer.start(); JDA musicJda = createMusicJDA(); - JDA radioJda = createRadioJDA(); - if (radioJda != null) { - radioManager.setRadioJda(radioJda); - radioManager.setLavalinkManager(lavalinkManager); + JDA radioJda = null; + if (config.getRadioToken() != null && !config.getRadioToken().isBlank()) { + LavalinkManager radioLavalink = + new LavalinkManager(config, queueRepository, config.getRadioToken()); + radioJda = createRadioJDA(radioLavalink); + if (radioJda != null) { + radioManager.setRadioJda(radioJda); + radioManager.setLavalinkManager(radioLavalink); + } } BotCluster cluster = new BotCluster(mainJda, musicJda, radioJda); Runtime.getRuntime() @@ -119,7 +124,7 @@ public class BotInitializer { return awaitJda(builder.build()); } - private JDA createRadioJDA() { + private JDA createRadioJDA(LavalinkManager radioLavalink) { if (config.getRadioToken() == null || config.getRadioToken().isBlank()) return null; LoggerDecorator.startup(logger, "Инициализация radio бота..."); var builder = @@ -129,8 +134,9 @@ public class BotInitializer { GatewayIntent.GUILD_MESSAGES, GatewayIntent.MESSAGE_CONTENT, GatewayIntent.GUILD_VOICE_STATES); - if (lavalinkManager.getClient() != null) { - builder.setVoiceDispatchInterceptor(new JDAVoiceUpdateListener(lavalinkManager.getClient())); + if (radioLavalink.getClient() != null) { + builder.setVoiceDispatchInterceptor( + new JDAVoiceUpdateListener(radioLavalink.getClient())); } builder.addEventListeners(new RadioBotListener(radioManager)); return awaitJda(builder.build());