Hacky-Quizbot/src/main/java/linux/general/hackyquizbot/QuizHandler.java

58 lines
2.4 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package linux.general.hackyquizbot;
import java.util.concurrent.ExecutionException;
import org.javacord.api.entity.message.Message;
import org.javacord.api.entity.user.User;
import com.vdurmont.emoji.EmojiParser;
import linux.general.hackyquizbot.QuizBackend.Question;
public class QuizHandler {
private User user;
private Question lastQuestion;
public QuizHandler(User user) {
this.user = user;
if (QuizBackend.shouldGetMoreQuestions(user.getIdAsString())) {
try {
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"
+ "Select the :white_check_mark: reaction to continue.").get();
message.addReaction(EmojiParser.parseToUnicode(":white_check_mark:"));
message.addReactionAddListener(event -> {
// 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 dont.
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
System.err.println("Something went wrong while trying to get the sent message object.");
e.printStackTrace();
}
// TODO: add white question mark reaction
// TODO: add reaction handler (preferably to channel?)
} else {
user.sendMessage(
"You have already had the maximum amount of questions that you can get with the current question set.");
}
}
}