-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathTriviaManager.java
More file actions
34 lines (30 loc) · 1.21 KB
/
TriviaManager.java
File metadata and controls
34 lines (30 loc) · 1.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package com.togetherjava.tjplays.trivia;
import com.togetherjava.tjplays.services.chatgpt.ChatGptService;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Optional;
/**
* Manages Java trivia questions using ChatGptService.
* Used by quiz commands to fetch questions for users.
* Future contributors can use this for any trivia/quiz feature.
*/
public class TriviaManager {
private final ChatGptService chatGptService;
private final ObjectMapper mapper = new ObjectMapper();
public TriviaManager(ChatGptService chatGptService) {
this.chatGptService = chatGptService;
}
public Optional<QuizQuestion> fetchRandomQuestion() {
String prompt = "Provide one Java trivia question as a JSON object like"
+ " {\"question\":\"...\",\"choices\":[\"A\",\"B\",\"C\",\"D\"],\"correct\":<index>}";
Optional<String> raw = chatGptService.ask(prompt, "java quiz");
if (raw.isEmpty()) {
return Optional.empty();
}
try {
QuizQuestion question = mapper.readValue(raw.get(), QuizQuestion.class);
return Optional.of(question);
} catch (Exception e) {
return Optional.empty();
}
}
}