From 8c0abb092ac29e37648fbf82373f4fa05c71c20d Mon Sep 17 00:00:00 2001 From: BodgeMaster <> Date: Tue, 22 Feb 2022 21:17:16 +0100 Subject: [PATCH] trying to work around an arbitrary API limitation with a hack --- .../general/hackyquizbot/QuizHandler.java | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/main/java/linux/general/hackyquizbot/QuizHandler.java b/src/main/java/linux/general/hackyquizbot/QuizHandler.java index ff585c5..d1b2ea4 100644 --- a/src/main/java/linux/general/hackyquizbot/QuizHandler.java +++ b/src/main/java/linux/general/hackyquizbot/QuizHandler.java @@ -20,21 +20,25 @@ public class QuizHandler { Message message = user.sendMessage("Hi! I'm Hacky.\n" + "I will be sending you a bunch of multiple-choice questions. " + "You can answer by selecting one or more of the reactions on the message and confirm your selection by selecting the :white_check_mark: reaction." - + " Please contact @BodgeMaster#0344 if there are any issues.\n" - + "\n" + + " Please contact @BodgeMaster#0344 if there are any issues.\n\n" + "Select the :white_check_mark: reaction to continue.").get(); message.addReaction(EmojiParser.parseToUnicode(":white_check_mark:")); message.addReactionAddListener(event -> { - System.err.println("We get to here. #1"); - User test = event.getUser().get(); //test to see if this throws an exception - System.err.println("We get to here. #2"); - System.err.println("Got an event from "+Long.toString(event.getUser().get().getId())); //this throws an exception - why? - System.err.println("We get to here. #3"); - if (event.getUser().get().getId()!=Main.getUserID() && event.getReaction().get().getEmoji().equalsEmoji(EmojiParser.parseToUnicode(":white_check_mark:"))) { - event.getMessage().get().getChannel().sendMessage("test"); - //TODO: trigger question dispatch - //TODO: remove ReactionAddListener + // HACK: Testing for an exception to find out whether the event was caused by a + // user or by the bot itself because reactions added by the bot allow to check + // for user where reactions added by actual users don’t. + try { + if (!event.getUser().get().isYourself() && event.getReaction().get().getEmoji() + .equalsEmoji(EmojiParser.parseToUnicode(":white_check_mark:"))) { + event.getMessage().get().getChannel().sendMessage( + "This should not work. If you ever see this message, please inform @BodgeMaster#0344 that there is more to this arbitrary limitation in the Discord API than expected."); + } + } catch (Exception e) { + System.err.println("Assuming the reaction event was caused by the user..."); + System.err.println("User ID: "+this.user.getIdAsString()); //test if we can get the user ID that way } + // TODO: trigger question dispatch + // TODO: remove ReactionAddListener }); } catch (InterruptedException | ExecutionException e) { // TODO Auto-generated catch block