From 8aaa8702fbe6f1ab9faaf3519444ff03813fab3f Mon Sep 17 00:00:00 2001 From: Nilstrieb Date: Wed, 20 Jan 2021 22:49:45 +0100 Subject: [PATCH] trivia good --- .../nilstrieb/commands/fun/TriviaCommand.java | 64 ++++++++++++++++--- .../nilstrieb/commands/handler/Command.java | 43 +------------ .../commands/handler/MessageSender.java | 50 +++++++++++++++ .../nilstrieb/listener/CommandListener.java | 3 +- .../github/nilstrieb/sections/Section.java | 14 ++-- .../util/trivia/TriviaQuestionData.java | 2 +- 6 files changed, 114 insertions(+), 62 deletions(-) create mode 100644 src/main/java/com/github/nilstrieb/commands/handler/MessageSender.java diff --git a/src/main/java/com/github/nilstrieb/commands/fun/TriviaCommand.java b/src/main/java/com/github/nilstrieb/commands/fun/TriviaCommand.java index e5ba9dc..0c13e1f 100644 --- a/src/main/java/com/github/nilstrieb/commands/fun/TriviaCommand.java +++ b/src/main/java/com/github/nilstrieb/commands/fun/TriviaCommand.java @@ -1,9 +1,13 @@ package com.github.nilstrieb.commands.fun; +import com.github.nilstrieb.cofig.Config; import com.github.nilstrieb.commands.handler.Command; import com.github.nilstrieb.sections.ChannelMessageEventManager; import com.github.nilstrieb.sections.Section; +import com.github.nilstrieb.util.trivia.Arc; +import com.github.nilstrieb.util.trivia.TriviaQuestion; import com.github.nilstrieb.util.trivia.TriviaQuestionData; +import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; public class TriviaCommand extends Command { @@ -19,26 +23,68 @@ public class TriviaCommand extends Command { 3 Yorknew City arc 4 Greed Island arc 5 Chimera Ant arc - 6 Election arc"" + 6 Election arc """); } @Override public void called(MessageReceivedEvent event, String args) { - int arc = 6; + int arc = 0; try { arc = Integer.parseInt(args); } catch (NumberFormatException ignored) { } - reply(event, TriviaQuestionData.getQuestion(arc).getQuestion()); + TriviaQuestion question = TriviaQuestionData.getQuestion(arc); + StringBuilder answers = new StringBuilder(); + for (int i = 0; i < question.getAnswers().length; i++) { + answers.append(i).append(". ").append(question.getAnswers()[i]).append("\n"); + } + EmbedBuilder builder = Config.getDefaultEmbed(event) + .addField(question.getQuestion(), answers.toString(), false); - new Section(event.getTextChannel().getIdLong(), 414755070161453076L) { - @Override - public void messageReceived(MessageReceivedEvent event) { - event.getTextChannel().sendMessage("hallo ich bin killua").queue(); - ChannelMessageEventManager.removeListener(this); + reply(event, builder.build()); + new TriviaSection(event.getTextChannel().getIdLong(), event.getAuthor().getIdLong(), question); + } + + + private static class TriviaSection extends Section { + private final TriviaQuestion question; + + public TriviaSection(long textChannelID, long userID, TriviaQuestion question) { + super(textChannelID, userID); + this.question = question; + } + + @Override + public void messageReceived(MessageReceivedEvent event) { + String msg = event.getMessage().getContentRaw().toLowerCase(); + String answer; + + String correctAnswer = question.getAnswers()[question.getCorrectAnswer()]; + if (correctAnswer.equals(msg) || msg.equals(question.getCorrectAnswer() + ".")) { + answer = "Correct!"; + } else { + try { + if (Integer.parseInt(msg) == question.getCorrectAnswer()) { + answer = "Correct!"; + } else { + answer = "False!"; + } + } catch (NumberFormatException e) { + answer = "False!"; + } } - }; + + EmbedBuilder builder = Config.getDefaultEmbed(event) + .setTitle(answer) + .setThumbnail(null) + .addField("Correct answer", correctAnswer, false); + if (question.getArc() == Arc.EXAM) { + builder.setFooter("Tip: Use " + Config.PREFIX + "help trivia for more questions."); + } + reply(event, builder.build()); + ChannelMessageEventManager.removeListener(this); + } } } diff --git a/src/main/java/com/github/nilstrieb/commands/handler/Command.java b/src/main/java/com/github/nilstrieb/commands/handler/Command.java index 0278049..8ec240d 100644 --- a/src/main/java/com/github/nilstrieb/commands/handler/Command.java +++ b/src/main/java/com/github/nilstrieb/commands/handler/Command.java @@ -8,7 +8,7 @@ import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import java.util.Timer; import java.util.TimerTask; -public abstract class Command { +public abstract class Command extends MessageSender{ private final String name; private final String description; private final String exampleUsage; @@ -75,47 +75,6 @@ public abstract class Command { */ public abstract void called(MessageReceivedEvent event, String args); - protected void reply(MessageReceivedEvent event, String message) { - if (!message.equals("")) { - event.getTextChannel().sendMessage(message).queue(); - } - } - - - protected void reply(MessageReceivedEvent event, MessageEmbed embed) { - if (!embed.isEmpty()) { - event.getTextChannel().sendMessage(embed).queue(); - } - } - - protected void reply(MessageReceivedEvent event, MessageEmbed... embeds) { - if (!embeds[0].isEmpty()) { - event.getTextChannel().sendMessage(embeds[0]).queue(message -> new MultiPageEmbed(message, embeds)); - } - } - - protected void reply(MessageReceivedEvent event, String emote1, String emote2, MessageEmbed... embeds) { - if (!embeds[0].isEmpty()) { - event.getTextChannel().sendMessage(embeds[0]).queue(message -> new MultiPageEmbed(message, emote1, emote2, embeds)); - } - } - - protected void deleteMsg(MessageReceivedEvent event, long delay) { - new Timer().schedule( - new TimerTask() { - @Override - public void run() { - event.getMessage().delete().queue(); - } - }, delay - ); - } - - protected void deleteMsg(MessageReceivedEvent event) { - event.getMessage().delete().queue(); - } - - public String getName() { return name; } diff --git a/src/main/java/com/github/nilstrieb/commands/handler/MessageSender.java b/src/main/java/com/github/nilstrieb/commands/handler/MessageSender.java new file mode 100644 index 0000000..cf812fd --- /dev/null +++ b/src/main/java/com/github/nilstrieb/commands/handler/MessageSender.java @@ -0,0 +1,50 @@ +package com.github.nilstrieb.commands.handler; + +import com.github.nilstrieb.util.MultiPageEmbed; +import net.dv8tion.jda.api.entities.MessageEmbed; +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; + +import java.util.Timer; +import java.util.TimerTask; + +public abstract class MessageSender { + + protected void reply(MessageReceivedEvent event, String message) { + if (!message.equals("")) { + event.getTextChannel().sendMessage(message).queue(); + } + } + + protected void reply(MessageReceivedEvent event, MessageEmbed embed) { + if (!embed.isEmpty()) { + event.getTextChannel().sendMessage(embed).queue(); + } + } + + protected void reply(MessageReceivedEvent event, MessageEmbed... embeds) { + if (!embeds[0].isEmpty()) { + event.getTextChannel().sendMessage(embeds[0]).queue(message -> new MultiPageEmbed(message, embeds)); + } + } + + protected void reply(MessageReceivedEvent event, String emote1, String emote2, MessageEmbed... embeds) { + if (!embeds[0].isEmpty()) { + event.getTextChannel().sendMessage(embeds[0]).queue(message -> new MultiPageEmbed(message, emote1, emote2, embeds)); + } + } + + protected void deleteMsg(MessageReceivedEvent event, long delay) { + new Timer().schedule( + new TimerTask() { + @Override + public void run() { + event.getMessage().delete().queue(); + } + }, delay + ); + } + + protected void deleteMsg(MessageReceivedEvent event) { + event.getMessage().delete().queue(); + } +} diff --git a/src/main/java/com/github/nilstrieb/listener/CommandListener.java b/src/main/java/com/github/nilstrieb/listener/CommandListener.java index 0f0ccb8..09bb83c 100644 --- a/src/main/java/com/github/nilstrieb/listener/CommandListener.java +++ b/src/main/java/com/github/nilstrieb/listener/CommandListener.java @@ -10,7 +10,8 @@ public class CommandListener extends ListenerAdapter { @Override public void onMessageReceived(@NotNull MessageReceivedEvent event) { if (!event.getAuthor().isBot()) { - System.out.println(ConsoleColors.CYAN + "[CListener] Received message: '" + event.getMessage().getContentRaw() + "'" + ConsoleColors.RESET); + System.out.println(ConsoleColors.CYAN + "[CListener] Received message: '" + + event.getMessage().getContentRaw() + "' by " + event.getAuthor().getAsTag() + ConsoleColors.RESET); CommandHandler.call(event); } } diff --git a/src/main/java/com/github/nilstrieb/sections/Section.java b/src/main/java/com/github/nilstrieb/sections/Section.java index 3287c55..425c558 100644 --- a/src/main/java/com/github/nilstrieb/sections/Section.java +++ b/src/main/java/com/github/nilstrieb/sections/Section.java @@ -1,25 +1,21 @@ package com.github.nilstrieb.sections; -import net.dv8tion.jda.api.events.message.MessageReceivedEvent; +import com.github.nilstrieb.commands.handler.MessageSender; -import java.util.HashMap; - -public abstract class Section implements ChannelListener{ - private long textChannelID; - private long userID; - private boolean multiUser; +public abstract class Section extends MessageSender implements ChannelListener{ + private final long textChannelID; + private final long userID; public Section(long textChannelID, long userID) { this.textChannelID = textChannelID; this.userID = userID; - this.multiUser = false; ChannelMessageEventManager.addListener(this, textChannelID); } public Section(long textChannelID) { this.textChannelID = textChannelID; - this.multiUser = true; + this.userID = 0; } @Override diff --git a/src/main/java/com/github/nilstrieb/util/trivia/TriviaQuestionData.java b/src/main/java/com/github/nilstrieb/util/trivia/TriviaQuestionData.java index b8d783b..05200db 100644 --- a/src/main/java/com/github/nilstrieb/util/trivia/TriviaQuestionData.java +++ b/src/main/java/com/github/nilstrieb/util/trivia/TriviaQuestionData.java @@ -32,7 +32,7 @@ public class TriviaQuestionData { "He didn't die on Greed Island", "Hisoka killed him with a card to the neck", "He lost too muich blood when Genthru blew his arm of", "He killed himself after Killuas death")); add(new TriviaQuestion("How many doors are there at the Testing Gate of the Zoldyck Family?", 0, Arc.ZOLDYCK_FAMILY, "7", "5", "12", "8")); - add(new TriviaQuestion("What was Gon's aim after Killua left him alone playing with the Chairman Netero", 1, Arc.EXAM, + add(new TriviaQuestion("What was Gon's aim after Killua left him alone playing with the Chairman Netero?", 1, Arc.EXAM, "Get the ball", "Make Netero use his right hand", "Make Netero use his left leg", "Let Netero drop the ball")); add(new TriviaQuestion("What did Tonpa mix into the drink?", 2, Arc.EXAM, "Sleeping pills", "Headache tabletsschla", "Laxative", "Rat poison"));