summary refs log tree commit diff stats
path: root/cogs
diff options
context:
space:
mode:
authorsuhas <hi@suhas.one>2023-11-16 23:00:29 -0600
committersuhas <hi@suhas.one>2023-11-16 23:00:29 -0600
commit2e38b5aefb08abdd34d5244d0998274e5f35ff3e (patch)
treea221637a7eaa9195c8ae5322d8c73c1ad70e90a2 /cogs
parente0ede3dddabf27cde5a1db35e499885ece51f542 (diff)
downloadqbb-2e38b5aefb08abdd34d5244d0998274e5f35ff3e.tar.gz
add stats tracking
Diffstat (limited to 'cogs')
-rw-r--r--cogs/__init__.py0
-rw-r--r--cogs/__pycache__/__init__.cpython-311.pycbin0 -> 147 bytes
-rw-r--r--cogs/__pycache__/solo.cpython-311.pycbin3787 -> 3774 bytes
-rw-r--r--cogs/__pycache__/stats.cpython-311.pycbin0 -> 4143 bytes
-rw-r--r--cogs/__pycache__/tossup.cpython-311.pycbin3805 -> 3270 bytes
-rw-r--r--cogs/solo.py2
-rw-r--r--cogs/stats.py36
-rw-r--r--cogs/tossup.py15
8 files changed, 44 insertions, 9 deletions
diff --git a/cogs/__init__.py b/cogs/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/cogs/__init__.py
diff --git a/cogs/__pycache__/__init__.cpython-311.pyc b/cogs/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..17c16fd
--- /dev/null
+++ b/cogs/__pycache__/__init__.cpython-311.pyc
Binary files differdiff --git a/cogs/__pycache__/solo.cpython-311.pyc b/cogs/__pycache__/solo.cpython-311.pyc
index 6ede884..d6d2e68 100644
--- a/cogs/__pycache__/solo.cpython-311.pyc
+++ b/cogs/__pycache__/solo.cpython-311.pyc
Binary files differdiff --git a/cogs/__pycache__/stats.cpython-311.pyc b/cogs/__pycache__/stats.cpython-311.pyc
new file mode 100644
index 0000000..dde7701
--- /dev/null
+++ b/cogs/__pycache__/stats.cpython-311.pyc
Binary files differdiff --git a/cogs/__pycache__/tossup.cpython-311.pyc b/cogs/__pycache__/tossup.cpython-311.pyc
index 08b770b..419e663 100644
--- a/cogs/__pycache__/tossup.cpython-311.pyc
+++ b/cogs/__pycache__/tossup.cpython-311.pyc
Binary files differdiff --git a/cogs/solo.py b/cogs/solo.py
index aab0b77..1652960 100644
--- a/cogs/solo.py
+++ b/cogs/solo.py
@@ -17,7 +17,7 @@ class Solo(GroupCog, name="solo"):
     @command(description="Do a tossup in solo mode (only you can control the tossup)")
     async def tossup(self, ctx: Interaction, category: Optional[question_category] = None):
         c = AsyncClient()
-        params = {'difficulties': [2,3,4,5]}
+        params: dict = {'difficulties': [2,3,4,5]}
         if category is not None:
             params['categories'] = category
 
diff --git a/cogs/stats.py b/cogs/stats.py
new file mode 100644
index 0000000..03031ec
--- /dev/null
+++ b/cogs/stats.py
@@ -0,0 +1,36 @@
+from discord.ext.commands import Cog, Bot
+from discord.app_commands import command
+from discord import Interaction, Embed, Color
+from prisma import Prisma
+from prisma.models import User, CategoryBreakdown
+from common.types import category_field_translations
+
+reverse_categories = {v: k for k, v in category_field_translations.items()}
+
+class Stats(Cog):
+    def __init__(self, bot: Bot) -> None:
+        self.bot = bot
+        super().__init__()
+
+    @command(description="Get your statistics for qbb")
+    async def stats(self, ctx: Interaction):
+        db = Prisma(auto_register=True)
+        await db.connect()
+        stats = await User.prisma().find_first(where={'id': ctx.user.id})
+        cb = await CategoryBreakdown.prisma().find_first(where={'userId': ctx.user.id})
+        if stats is None or cb is None:
+            embed = Embed(title="No Stats!", description="You have no stats! Trying using the bot and then running this command", color=Color.red())
+            return await ctx.response.send_message(embed=embed)
+        embed = Embed(title="Your Stats!", description=f"""**Number of correct tossups:** {stats.questions_correct}
+        **Number of incorrect tossups:** {stats.questions_incorrect}
+        """)
+        print(stats.category_breakdown.__str__())
+        for cat in category_field_translations.values():
+            corr = getattr(cb, f'{cat}_correct')
+            incorr = getattr(cb, f'{cat}_incorrect')
+            embed.add_field(name=reverse_categories[cat], value=f'{corr+incorr} heard ({corr} correct)')
+        await ctx.response.send_message(embed=embed)
+        await db.disconnect()
+
+async def setup(bot: Bot) -> None:
+    await bot.add_cog(Stats(bot))
diff --git a/cogs/tossup.py b/cogs/tossup.py
index ae01519..3b62724 100644
--- a/cogs/tossup.py
+++ b/cogs/tossup.py
@@ -1,12 +1,10 @@
 from discord.ext.commands import Cog, Bot
 from discord.app_commands import command, describe
-from discord import Interaction, Embed, ButtonStyle
-from discord.ui import View, Button, Modal, button, TextInput
+from discord import Interaction, Embed
 from nltk import sent_tokenize
 from httpx import AsyncClient
-from typing import Literal, Optional
+from typing import Optional
 from common.types import question_category
-from components.AnswerModal import Answer
 from components.TossupButtons import TossupButtons
 
 class Tossup(Cog):
@@ -18,7 +16,7 @@ class Tossup(Cog):
     async def tossup(self, ctx: Interaction, category: Optional[question_category] = None):
         c = AsyncClient()
 
-        params = {"difficulties": [2, 3, 4, 5]}
+        params: dict = {"difficulties": [2, 3, 4, 5]}
         if category is not None:
             params["categories"] = category
 
@@ -30,9 +28,10 @@ class Tossup(Cog):
 
         view: TossupButtons = TossupButtons(tossup)
         embed = Embed(title="Random Tossup", description=tossup["sentences"][0])
-        embed.set_author(
-            name=f"{tossup['set']['name']} Packet {tossup['packetNumber']} Question {tossup['questionNumber']} (Category: {tossup['category']})"
-        )
+        # embed.set_author(
+            # name=f"{tossup['set']['name']} Packet {tossup['packetNumber']} Question {tossup['questionNumber']} (Category: {tossup['category']})"
+        # )
+        embed.set_author(name=tossup['answer'])
         embed.set_footer(text="Questions obtained from qbreader.org")
         await ctx.response.send_message(embed=embed, view=view)
         await c.aclose()