diff options
author | suhas <hi@suhas.one> | 2023-11-02 23:28:24 -0500 |
---|---|---|
committer | suhas <hi@suhas.one> | 2023-11-02 23:28:24 -0500 |
commit | 0db6d876288da45b8c4814407fcbae4c02314cc0 (patch) | |
tree | 1c9f0cea64b33e7ae8500a02410b31a94ecc4137 /cogs/solo.py | |
download | qbb-0db6d876288da45b8c4814407fcbae4c02314cc0.tar.gz |
first commit
Diffstat (limited to 'cogs/solo.py')
-rw-r--r-- | cogs/solo.py | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/cogs/solo.py b/cogs/solo.py new file mode 100644 index 0000000..aab0b77 --- /dev/null +++ b/cogs/solo.py @@ -0,0 +1,41 @@ +from discord.ext.commands import GroupCog, Bot +from discord.ui import View, Button, Modal, button, TextInput +from discord.app_commands import command +from discord import Interaction, Embed, User, Member, ButtonStyle, Color +from httpx import AsyncClient +from nltk import sent_tokenize +from typing import Union, Optional +from common.types import question_category +from components.TossupButtons import SoloTossupButtons + + +class Solo(GroupCog, name="solo"): + def __init__(self, bot: Bot) -> None: + self.bot = bot + super().__init__() + + @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]} + if category is not None: + params['categories'] = category + + req = await c.get( + "https://qbreader.org/api/random-tossup", params=params + ) + tossup: dict = req.json()["tossups"][0] + tossup['sentences'] = await self.bot.loop.run_in_executor(None, sent_tokenize, tossup['question']) + + + view: SoloTossupButtons = SoloTossupButtons(tossup, ctx.user) + embed = Embed(title="Random Tossup", description=tossup["sentences"][0]) + embed.set_author( + name=f"{tossup['set']['name']} Packet {tossup['packetNumber']} Question {tossup['questionNumber']}" + ) + embed.set_footer(text="Questions obtained from qbreader.org") + await ctx.response.send_message(embed=embed, view=view) + await c.aclose() + +async def setup(bot: Bot) -> None: + await bot.add_cog(Solo(bot)) |