58 lines
2.4 KiB
Java
58 lines
2.4 KiB
Java
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 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
|
||
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.");
|
||
}
|
||
}
|
||
|
||
}
|