From b4495281f19dfc7f13bd0a1d5344bd7e73a5f03f Mon Sep 17 00:00:00 2001 From: Tyler Murphy Date: Wed, 5 Oct 2022 18:56:44 -0400 Subject: [PATCH] finish akinator --- .../tylermurphy/ken/command/Responder.java | 5 ++- .../ken/command/game/Akinator.java | 33 ++++++++++++------- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/main/java/net/tylermurphy/ken/command/Responder.java b/src/main/java/net/tylermurphy/ken/command/Responder.java index c8d3967..259b41a 100644 --- a/src/main/java/net/tylermurphy/ken/command/Responder.java +++ b/src/main/java/net/tylermurphy/ken/command/Responder.java @@ -296,11 +296,14 @@ public class Responder extends ListenerAdapter { } else { hook.editOriginal(response.getMessage()).queue(); } - if(response.hasSelectMenu() || response.hasButtons()) { + if((response.hasSelectMenu() || response.hasButtons() && !response.hasNoComponents())) { List components = new ArrayList<>(); if(response.hasButtons()) components.add(ActionRow.of(response.getButtons())); if(response.hasSelectMenu()) components.add(ActionRow.of(response.getSelectMenu())); hook.editOriginalComponents(components).queue(); + } else if(response.hasNoComponents()) { + List components = new ArrayList<>(); + hook.editOriginalComponents(components).queue(); } } } diff --git a/src/main/java/net/tylermurphy/ken/command/game/Akinator.java b/src/main/java/net/tylermurphy/ken/command/game/Akinator.java index b86d99b..cb1bd6d 100644 --- a/src/main/java/net/tylermurphy/ken/command/game/Akinator.java +++ b/src/main/java/net/tylermurphy/ken/command/game/Akinator.java @@ -16,6 +16,7 @@ import net.tylermurphy.ken.command.Response; import net.tylermurphy.ken.command.annotation.ButtonCallback; import net.tylermurphy.ken.command.annotation.Command; import net.tylermurphy.ken.util.Checks; +import org.json.JSONException; import java.awt.*; import java.util.*; @@ -162,18 +163,25 @@ class AkinatorGame { } private Response respondQuestion(String label) { - switch (label) { - case "yes": - wrapper.answer(Akiwrapper.Answer.YES); - break; - case "no": - wrapper.answer(Akiwrapper.Answer.NO); - break; - case "idk": - wrapper.answer(Akiwrapper.Answer.DONT_KNOW); - break; - case "back": - return back(); + try { + switch (label) { + case "yes": + wrapper.answer(Akiwrapper.Answer.YES); + break; + case "no": + wrapper.answer(Akiwrapper.Answer.NO); + break; + case "idk": + wrapper.answer(Akiwrapper.Answer.DONT_KNOW); + break; + case "back": + return back(); + } + } catch (JSONException e) { + // JSONEXception when aki cant make more questions + container.games.remove(gameId); + container.gameMappings.remove(userId); + return sendWin(); } return next(); } @@ -184,6 +192,7 @@ class AkinatorGame { if(guess.isPresent()) { status = AkiStatus.GUESS; sequence.add(guess.get()); + guesses.add(guess.get().getId()); attemptedGuesses++; return sendGuess(guess.get()); } else {