aboutsummaryrefslogtreecommitdiffstats
path: root/bot
diff options
context:
space:
mode:
authorGravatar Shom770 <[email protected]>2021-10-13 22:02:37 -0400
committerGravatar Shom770 <[email protected]>2022-02-09 18:13:36 -0500
commita4b2facdd51ed7cff7e045e62d12c93797df0e11 (patch)
treed6d8d69e5027ffaa7b74b0fa106c4337f8626ced /bot
parentinitial commit (diff)
organizing score board (scoreboard.py)
Diffstat (limited to 'bot')
-rw-r--r--bot/exts/events/trivianight/__init__.py0
-rw-r--r--bot/exts/events/trivianight/scoreboard.py59
-rw-r--r--bot/exts/events/trivianight/trivianight.py (renamed from bot/exts/utilities/trivianight.py)0
3 files changed, 59 insertions, 0 deletions
diff --git a/bot/exts/events/trivianight/__init__.py b/bot/exts/events/trivianight/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/bot/exts/events/trivianight/__init__.py
diff --git a/bot/exts/events/trivianight/scoreboard.py b/bot/exts/events/trivianight/scoreboard.py
new file mode 100644
index 00000000..4e94e361
--- /dev/null
+++ b/bot/exts/events/trivianight/scoreboard.py
@@ -0,0 +1,59 @@
+import discord.ui
+from discord import ButtonStyle, Embed, Interaction
+from discord.ui import Button, View
+
+from bot.constants import Colours
+
+
+class ScoreboardView(View):
+ """View for the scoreboard."""
+
+ def __init__(self):
+ self.points = {}
+ self.speed = {}
+
+ def create_speed_embed(self) -> None:
+ """Helper function that iterates through `self.speed` to generate a leaderboard embed."""
+ speed_embed = Embed(
+ title="Average Time Taken to Answer a Question",
+ description="See the leaderboard for how fast each user took to answer a question correctly!",
+ color=Colours.python_blue,
+ )
+ for user, time_taken in list(self.speed.items())[:10]:
+ speed_embed.add_field(
+ name=user, value=f"`{(time_taken[1] / time_taken[0]):.3f}s` (on average)", inline=False
+ )
+
+ return speed_embed
+
+ @discord.ui.button(label="Scoreboard for Speed", style=ButtonStyle.green)
+ async def speed_leaderboard(self, button: Button, interaction: Interaction) -> None:
+ """Send an ephemeral message with the speed leaderboard embed."""
+ await interaction.response.send_message(embed=self.create_speed_embed(), ephemeral=True)
+
+
+class Scoreboard:
+ """Class for the scoreboard for the trivianight event."""
+
+ def __init__(self, view: View):
+ self.view = view
+
+ def __setitem__(self, key: str, value: int):
+ if key.startswith("points: "):
+ key = key.removeprefix("points: ")
+ if key not in self.view.points.keys():
+ self.view.points[key] = value
+ else:
+ self.view.points[key] += self.view.points[key]
+ elif key.startswith("speed: "):
+ key = key.removeprefix("speed: ")
+ if key not in self.view.speed.keys():
+ self.view.speed[key] = [1, value]
+ else:
+ self.view.speed[key] = [self.view.speed[key][0] + 1, self.view.speed[key][1] + value]
+
+ def __getitem__(self, item: str):
+ if item.startswith("points: "):
+ return self.view.points[item.removeprefix("points: ")]
+ elif item.startswith("speed: "):
+ return self.view.speed[item.removepreix("speed: ")]
diff --git a/bot/exts/utilities/trivianight.py b/bot/exts/events/trivianight/trivianight.py
index 29a9e3d1..29a9e3d1 100644
--- a/bot/exts/utilities/trivianight.py
+++ b/bot/exts/events/trivianight/trivianight.py