Skip to content
This repository was archived by the owner on Jan 13, 2026. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 62 additions & 0 deletions src/capy_app/frontend/cogs/onboarding/dan2_onboarding_cog.py
Original file line number Diff line number Diff line change
@@ -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))
40 changes: 40 additions & 0 deletions src/capy_app/frontend/cogs/onboarding/dan_onboarding_cog.py
Original file line number Diff line number Diff line change
@@ -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):
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion: File name doesn't reflect its purpose

Rename dan_onboarding_cog.py to random_cog.py for consistency with the class and command.

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))