81 lines
3.0 KiB
Python
81 lines
3.0 KiB
Python
import json
|
|
import urllib
|
|
import random
|
|
|
|
from funcs import logThis
|
|
|
|
def triviaStart(channel : str):
|
|
with open("resources/trivia.json", "r") as f:
|
|
triviaFile = json.load(f)
|
|
|
|
logThis("Trying to find a trivia question for "+channel)
|
|
|
|
if channel not in triviaFile["questions"]:
|
|
with urllib.request.urlopen("https://opentdb.com/api.php?amount=10&type=multiple") as response:
|
|
data = json.loads(response.read())
|
|
|
|
logThis("Found the question \""+data["results"][0]["question"]+"\"")
|
|
answers = data["results"][0]["incorrect_answers"]
|
|
answers.append(data["results"][0]["correct_answer"])
|
|
random.shuffle(answers)
|
|
correctAnswer = answers.index(data["results"][0]["correct_answer"]) + 97
|
|
|
|
triviaFile["questions"][channel] = {"answer" : str(chr(correctAnswer)),"players" : {}}
|
|
with open("resources/trivia.json", "w") as f:
|
|
json.dump(triviaFile,f,indent=4)
|
|
|
|
question = data["results"][0]["question"].replace("'","\'").replace(""","\"")
|
|
|
|
return question, answers, correctAnswer
|
|
else:
|
|
logThis("There was already a trivia question for that channel")
|
|
return "There's already a trivia question going on. Try again in like, a minute", "", ""
|
|
|
|
def triviaOtherThing(user : str, channel : str, command : str):
|
|
with open("resources/trivia.json", "r") as f:
|
|
data = json.load(f)
|
|
|
|
if command in ["a","b","c","d"]:
|
|
if channel in data["questions"]:
|
|
if user not in data["questions"][channel]["players"]:
|
|
logThis(user+" answered the question in "+channel)
|
|
|
|
data["questions"][channel]["players"][user] = command
|
|
|
|
with open("resources/trivia.json", "w") as f:
|
|
json.dump(data,f,indent=4)
|
|
|
|
return "Locked in "+user+"'s answer"
|
|
else:
|
|
return user+" has already answered this question"
|
|
else:
|
|
return "There's no question right now"
|
|
elif command == "p":
|
|
items = {k: v for k, v in sorted(data["users"].items(), key=lambda item: item[1])}
|
|
|
|
return "\n".join(['%s: %s' % (key, value) for (key, value) in items.items()])
|
|
else:
|
|
return "I didn't quite understand that"
|
|
|
|
def triviaCountPoints(channel : str):
|
|
with open("resources/trivia.json", "r") as f:
|
|
data = json.load(f)
|
|
|
|
logThis("Counting points for question in "+channel)
|
|
|
|
if channel in data["questions"]:
|
|
for player, answer in data["questions"][channel]["players"].items():
|
|
if answer == data["questions"][channel]["answer"]:
|
|
if player in data["users"]:
|
|
points = data["users"][player]
|
|
data["users"][player] = points + 1
|
|
else:
|
|
data["users"][player] = 1
|
|
|
|
with open("resources/trivia.json", "w") as f:
|
|
json.dump(data,f,indent=4)
|
|
|
|
else:
|
|
logThis("Couldn't find the question")
|
|
|
|
return None |