Spaces:
Runtime error
Runtime error
| # cogs/progression.py | |
| import discord | |
| from discord import app_commands | |
| from discord.ext import commands | |
| import logging | |
| from services.progression_service import ProgressionService | |
| from utils.code_converter import decode_id | |
| logger = logging.getLogger(__name__) | |
| class ProgressionCog(commands.Cog): | |
| def __init__(self, bot): | |
| self.bot = bot | |
| async def fuse(self, interaction: discord.Interaction, target_code: str, sacrifice_code: str): | |
| await interaction.response.defer(thinking=True) | |
| try: | |
| target_id = decode_id(target_code) | |
| sacrifice_id = decode_id(sacrifice_code) | |
| except ValueError: | |
| return await interaction.followup.send("β Invalid card code format. Please check your codes.") | |
| try: | |
| char_name, new_constellation = await ProgressionService.fuse_character( | |
| interaction.user.id, target_id, sacrifice_id | |
| ) | |
| embed_color = discord.Color.purple() if new_constellation < 6 else discord.Color.gold() | |
| embed = discord.Embed( | |
| title="β¨ Constellation Unlocked!", | |
| description=f"You successfully sacrificed `{sacrifice_code}` to empower `{target_code}`.", | |
| color=embed_color | |
| ) | |
| if new_constellation == 6: | |
| embed.add_field(name=f"π {char_name} is now AWAKENED!", value="**Constellation 6 Reached.** Maximum power achieved.", inline=False) | |
| else: | |
| embed.add_field(name=char_name, value=f"β Constellation {new_constellation} Unlocked!", inline=False) | |
| await interaction.followup.send(embed=embed) | |
| except ValueError as e: | |
| await interaction.followup.send(f"β {str(e)}") | |
| except Exception as e: | |
| logger.error(f"Fusion Error: {e}", exc_info=True) | |
| await interaction.followup.send("β An unexpected database error occurred.") | |
| async def ascend(self, interaction: discord.Interaction, card_code: str, levels: int = 1): | |
| await interaction.response.defer(thinking=True) | |
| try: | |
| instance_id = decode_id(card_code) | |
| except ValueError: | |
| return await interaction.followup.send("β Invalid card code format.") | |
| try: | |
| char_name, new_level, cost_coins, cost_dust = await ProgressionService.ascend_character( | |
| interaction.user.id, instance_id, levels | |
| ) | |
| dust_str = f" and **{cost_dust:,} Dust**" if cost_dust > 0 else "" | |
| embed = discord.Embed( | |
| title="β¬οΈ Vanguard Ascended!", | |
| description=f"**{char_name}** (`{card_code}`) has been leveled up!\n\nThey are now **Level {new_level}**.", | |
| color=discord.Color.green() | |
| ) | |
| embed.set_footer(text=f"Resources Burned: {cost_coins:,} Coins{dust_str}") | |
| await interaction.followup.send(embed=embed) | |
| except ValueError as e: | |
| await interaction.followup.send(f"β {str(e)}") | |
| except Exception as e: | |
| logger.error(f"Ascension Error: {e}", exc_info=True) | |
| await interaction.followup.send("β An unexpected database error occurred.") | |
| async def setup(bot): | |
| await bot.add_cog(ProgressionCog(bot)) | |