From 43d9b17f5f497d8d8aff98d505065aae3ffdf77b Mon Sep 17 00:00:00 2001 From: Andrei Stoica Date: Tue, 21 Jan 2025 10:06:04 -0500 Subject: [PATCH] refactoring --- bot.py | 14 ++++++-------- dice.py | 10 ++++++++++ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/bot.py b/bot.py index 4c639ef..de23ec7 100644 --- a/bot.py +++ b/bot.py @@ -15,33 +15,31 @@ tree = CommandTree(bot) @bot.event async def on_ready(): await tree.sync() # Bad idea + print("Bot Ready") @tree.command() @discord.app_commands.describe( - dice="Dice to be rolled in format [number]d[sides]", + dice="Dice to be rolled (format: [number]d[sides])", private="Roll privatly or publicly", ) async def roll(interaction: discord.Interaction, dice: str, private: bool): dice_objs = [Dice(d) for d in dice.split(" ")] try: - text = [] - for die in dice_objs: - roll = die.roll() - text.append(f"{die.text} => {roll} = {sum(roll)}") - print(text) + result_text = [die.roll_as_text() for die in dice_objs] except DiceTextError as e: print(e) await interaction.response.send_message(str(e)) return if not private: - intro = interaction.user.display_name + " rolled:\n" + intro = f"@{interaction.user.display_name} rolled:\n" else: intro = "You rolled:\n" + msg = intro + "/n".join(result_text) - await interaction.response.send_message(intro + "\n".join(text), ephemeral=private) + await interaction.response.send_message(msg, ephemeral=private) token = environ.get("DISCORD_TOKEN") diff --git a/dice.py b/dice.py index cd49f99..83a021c 100644 --- a/dice.py +++ b/dice.py @@ -17,10 +17,20 @@ class Dice: (self.count, self.sides) = parsed_text def roll(self) -> Iterable[int]: + """Randomly generates `self.count` integers in range [1,`self.sides`]""" result = [randint(1, self.sides) for _ in range(self.count)] print(f"rolling {self.text} => {result}") return result + def roll_as_text(self) -> str: + """ + Randomly generates `self.count` integers in range [1,`self.sides`] + then returns a formated string. + """ + roll = self.roll() + result = f"{self.text} => {roll} = {sum(roll)}" + return result + @staticmethod def parse_text(text: str) -> tuple[int, int] | None: match = re.match(r"^(\d*)d(\d+)$", text)