trivia good

This commit is contained in:
nora 2021-01-20 22:49:45 +01:00
parent 381081fc81
commit 8aaa8702fb
6 changed files with 114 additions and 62 deletions

View file

@ -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);
}
}
}

View file

@ -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;
}

View file

@ -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();
}
}

View file

@ -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);
}
}

View file

@ -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

View file

@ -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"));