From 6a0e4ed629e2356da45aea98f21eb010c1f103fc Mon Sep 17 00:00:00 2001 From: Xujiayao Date: Sun, 18 Jan 2026 22:29:15 +0800 Subject: [PATCH] Improve JDA initialization with enhanced error handling and connection validation --- .../server/discord/DiscordManager.java | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/core/src/main/java/com/xujiayao/discord_mc_chat/server/discord/DiscordManager.java b/core/src/main/java/com/xujiayao/discord_mc_chat/server/discord/DiscordManager.java index 1b27e05f..6370d1e4 100644 --- a/core/src/main/java/com/xujiayao/discord_mc_chat/server/discord/DiscordManager.java +++ b/core/src/main/java/com/xujiayao/discord_mc_chat/server/discord/DiscordManager.java @@ -43,19 +43,19 @@ public class DiscordManager { } try { - jda = JDABuilder.createDefault(token) - .enableIntents( - GatewayIntent.MESSAGE_CONTENT, - GatewayIntent.GUILD_MEMBERS - ) - .setMemberCachePolicy(MemberCachePolicy.ALL) - .addEventListeners(new DiscordEventHandler()) - .build(); - // Blocks until JDA is ready try (ExecutorService executor = Executors.newSingleThreadExecutor(r -> new Thread(r, "DMCC-FutureChecker"))) { CompletableFuture readyFuture = CompletableFuture.runAsync(() -> { try { + jda = JDABuilder.createDefault(token) + .enableIntents( + GatewayIntent.MESSAGE_CONTENT, + GatewayIntent.GUILD_MEMBERS + ) + .setMemberCachePolicy(MemberCachePolicy.ALL) + .addEventListeners(new DiscordEventHandler()) + .build(); + jda.awaitReady(); } catch (InterruptedException e) { LOGGER.error(I18nManager.getDmccTranslation("discord.manager.init_interrupted"), e); @@ -77,6 +77,10 @@ public class DiscordManager { LOGGER.error(I18nManager.getDmccTranslation("discord.manager.init_interrupted"), e); } + if (jda == null || jda.getStatus() != JDA.Status.CONNECTED) { + return false; + } + // Blocks until commands are updated try (ExecutorService executor = Executors.newSingleThreadExecutor(r -> new Thread(r, "DMCC-FutureChecker"))) { List commands = new ArrayList<>(); @@ -121,6 +125,8 @@ public class DiscordManager { } catch (Exception ignored) { } jda.shutdownNow(); + + jda = null; } } }