aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Shom770 <[email protected]>2021-11-16 17:39:09 -0500
committerGravatar Shom770 <[email protected]>2022-02-09 18:13:37 -0500
commit1e44a974ed1946c424b61c43d3fbc5ef23e37613 (patch)
tree539965709d66e72509333d956813799d3b7408fd
parentmore bug fixes/sorting (diff)
feat: allow a dynamic number of questions, not just being 4 answers
-rw-r--r--bot/exts/events/trivianight/_questions.py14
1 files changed, 8 insertions, 6 deletions
diff --git a/bot/exts/events/trivianight/_questions.py b/bot/exts/events/trivianight/_questions.py
index 53f0a4e0..f94371da 100644
--- a/bot/exts/events/trivianight/_questions.py
+++ b/bot/exts/events/trivianight/_questions.py
@@ -92,20 +92,22 @@ class QuestionView(View):
super().__init__()
self.current_question: CurrentQuestion
self.users_picked = {}
- self.buttons = [QuestionButton(label, self.users_picked, self) for label in ("A", "B", "C", "D")]
- for button in self.buttons:
- self.add_item(button)
self.active_question = False
def create_current_question(self) -> Union[Embed, None]:
"""Helper function to create the embed for the current question."""
+ self.current_labels = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[:len(self.current_question["answers"])]
question_embed = Embed(
title=f"Question {self.current_question['number']}",
description=self.current_question["description"],
color=Colours.python_yellow
)
- for label, answer in zip("ABCD", self.current_question["answers"]):
+ self.buttons = [QuestionButton(label, self.users_picked, self) for label in self.current_labels]
+ for button in self.buttons:
+ self.add_item(button)
+
+ for label, answer in zip(self.current_labels, self.current_question["answers"]):
question_embed.add_field(name=f"Answer {label}", value=answer, inline=False)
question_embed.set_footer(text="0 people have answered")
@@ -121,7 +123,7 @@ class QuestionView(View):
def end_question(self) -> tuple[dict, Embed]:
"""Returns the dictionaries from the corresponding buttons for those who got it correct."""
- labels = ("A", "B", "C", "D")
+ labels = self.current_labels
label = labels[self.current_question["answers"].index(self.current_question["correct"])]
return_dict = {name: (*info, info[0] == label) for name, info in self.users_picked.items()}
all_players = list(self.users_picked.items())
@@ -137,7 +139,7 @@ class QuestionView(View):
answer_choice: len(
tuple(filter(lambda x: x[0] == answer_choice, self.users_picked.values()))
) / len(all_players)
- for answer_choice in "ABCD"
+ for answer_choice in labels
}
answers_chosen = dict(sorted(answers_chosen.items(), key=lambda item: item[1], reverse=True))