botqui/triv_api.rb
2025-07-16 00:27:46 +00:00

94 lines
2 KiB
Ruby

require 'uri'
require 'net/http'
require 'json'
require 'cgi'
uri = URI('https://opentdb.com/api.php?amount=1')
res = Net::HTTP.get_response(uri)
trev_running = false
if res.is_a?(Net::HTTPSuccess)
question = JSON.parse(res.body)
puts question.inspect
difficulty = question["results"][0]["difficulty"]
puts difficulty
question_text = CGI.unescapeHTML(question["results"][0]["question"])
answer = question["results"][0]["correct_answer"]
puts answer
category = question["results"][0]["category"]
answers = question["results"][0]["incorrect_answers"]
answers.push(answer)
answers.shuffle!
# puts answers.inspect
puts "[" + category + "] " + question_text
out_str = ""
current_answer = "A"
real_answer = ""
max_answer = answers.max{|c1, c2| c1.length <=> c2.length}
max_length = max_answer.length + 2 # 2 for padding a bit...
puts "max_length.to_s = " + max_length.to_s
padded_answers = answers.map{|v| v.ljust(max_length.to_i) }
answers_shown = 0
padded_answers.each{ |a|
answers_shown = answers_shown + 1
if a == answer then
real_answer = current_answer.clone
end
out_str = out_str + current_answer + ") " + CGI.unescapeHTML(a) + " "
if answers_shown % 2 == 0 then
out_str.strip!
out_str = out_str + "\n"
end
current_answer.next!
}
puts real_answer
out_str.delete_suffix!(" |")
puts out_str.strip
puts "TRIVIA STARTING IN 5 SECONDS!"
puts Time.now.to_i.to_s + " start 5s timer..."
sleep(5)
trev_running = true
# puts Time.now.to_i.to_s + " OK ABOUT TO START??"
puts "You have 30 seconds! Go!"
# puts real_answer
puts Time.now.to_i.to_s + " start guess time"
sleep(30)
puts Time.now.to_i.to_s + " end time"
# Check the user answers
# Check their times, calc score and save it,
# Reset answer array, save.
trev_running = false
end
# have trigger for !trev to start. Flag something to flip playing to true.
# have trigger for guesses- matches on case insensitive ^ABCDTF$