diff --git a/src/main/java/com/jaoafa/jdavcspeaker/Event/AutoMove.java b/src/main/java/com/jaoafa/jdavcspeaker/Event/AutoMove.java index 44f2c2a..80b72be 100644 --- a/src/main/java/com/jaoafa/jdavcspeaker/Event/AutoMove.java +++ b/src/main/java/com/jaoafa/jdavcspeaker/Event/AutoMove.java @@ -65,14 +65,26 @@ void runJoined(MoveInfo info) { return; // Botが移動した場合は終了 } - if (isAfkChannel(newChannel)) { - return; // 移動先がAFKチャンネルの場合は終了 - } - if (connectedChannel.getIdLong() != oldChannel.getIdLong()) { return; // 移動元チャンネルに自身が入っていない } + if (isAfkChannel(newChannel)) { + // VCに残ったユーザーが全員Bot、または誰もいなくなった + boolean existsUser = newChannel + .getMembers() + .stream() + .anyMatch(member -> !member.getUser().isBot()); // Bot以外がいるかどうか + if (!existsUser) { + return; + } + + AudioManager audioManager = event.getGuild().getAudioManager(); + audioManager.closeAudioConnection(); + + return; // 移動先がAFKチャンネルの場合は終了 + } + if (connectedUsers >= newUsers) { return; // 自身がいるチャンネルの人数より、移動先の人数の方が少ない、もしくは同じ場合終了 }