diff --git a/src/capy_app/frontend/cogs/onboarding/dan2_onboarding_cog.py b/src/capy_app/frontend/cogs/onboarding/dan2_onboarding_cog.py new file mode 100644 index 0000000..ae3a47d --- /dev/null +++ b/src/capy_app/frontend/cogs/onboarding/dan2_onboarding_cog.py @@ -0,0 +1,62 @@ +import discord +import logging +from discord.ext import commands +from discord import app_commands + +from frontend import config_colors as colors +from config import settings +import random +import asyncio + + +class higherlowercog(commands.Cog): + def __init__(self, bot: commands.Bot): + self.bot = bot + self.logger = logging.getLogger( + f"discord.cog.{self.__class__.__name__.lower()}" + ) + + @app_commands.guilds(discord.Object(id=settings.DEBUG_GUILD_ID)) + @app_commands.command( + name="higherlower", + description="Picks a random number between user specified bounds that you have to guess" + ) + async def higherlower(self, interaction: discord.Interaction, lower_bound: int, upper_bound: int): + if lower_bound > upper_bound: + await interaction.response.send_message("❌ Lower bound must be <= upper bound", ephemeral=True) + return + + target = random.randint(lower_bound, upper_bound) + self.logger.info(f"Target number: {target}") + + await interaction.response.send_message( + f"🎯 I've picked a number between {lower_bound} and {upper_bound}. Try to guess it!", + ephemeral=True + ) + + def check(msg: discord.Message): + return ( + msg.author == interaction.user and + msg.channel == interaction.channel and + msg.content.isdigit() + ) + + while True: + try: + guess_msg = await self.bot.wait_for("message", check=check, timeout=120.0) + guess = int(guess_msg.content) + + if guess < target: + await interaction.followup.send("🔽 Too low! Try again...", ephemeral=True) + elif guess > target: + await interaction.followup.send("🔼 Too high! Try again...", ephemeral=True) + else: + await interaction.followup.send(f"✅ You got it! The number was **{target}** 🎉", ephemeral=True) + break + except asyncio.TimeoutError: + await interaction.followup.send("⌛ You took too long to respond. Game over!", ephemeral=True) + break + + +async def setup(bot: commands.Bot): + await bot.add_cog(higherlowercog(bot)) diff --git a/src/capy_app/frontend/cogs/onboarding/dan_onboarding_cog.py b/src/capy_app/frontend/cogs/onboarding/dan_onboarding_cog.py new file mode 100644 index 0000000..27c276e --- /dev/null +++ b/src/capy_app/frontend/cogs/onboarding/dan_onboarding_cog.py @@ -0,0 +1,40 @@ +import discord +import logging +from discord.ext import commands +from discord import app_commands + +from frontend import config_colors as colors +from config import settings +import random + + +class RandomCog(commands.Cog): + def __init__(self, bot: commands.Bot): + self.bot = bot + self.logger = logging.getLogger( + f"discord.cog.{self.__class__.__name__.lower()}" + ) + + @app_commands.guilds(discord.Object(id=settings.DEBUG_GUILD_ID)) + @app_commands.command( + name="randomnum", + description="Picks a random number between input lower and upper bounds" + ) + async def randomnum(self,interaction: discord.Interaction, lower_bound: int, upper_bound: int): + if lower_bound > upper_bound: + message = "Lower bound must be <= Upper bound" + else: + message = f"{random.randint(lower_bound, upper_bound)} is your number" + + embed = discord.Embed( + title="Random Number", + description=message, + color=colors.PING, + ) + + self.logger.info(message) + await interaction.response.send_message(embed=embed) + + +async def setup(bot: commands.Bot): + await bot.add_cog(RandomCog(bot))