Skip to content

Commit ae29359

Browse files
authored
bombs, banks & capitalism
> **__BOMBS, BANKS, AND CAPITALISM__** > - BOMBs are now dynamic & provide an estimated payout > - can be long as 10 minutes *(for 1 mil)* > - 1,000 = 1m > - Bank upgrades now take from your bank > - You can now upgrade multiple times from one embed > - `bank_upgrade` removed from Shop
2 parents b6917d6 + 630b8c2 commit ae29359

4 files changed

Lines changed: 255 additions & 161 deletions

File tree

cogs/economy/Economy.py

Lines changed: 74 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -555,86 +555,90 @@ async def cancel_callback(interaction):
555555
await ctx.reply(embed=embed, view=view if not max_reached else None)
556556

557557
@commands.command(aliases=['upgrade_bank', 'bu'])
558+
@commands.cooldown(1, 3, commands.BucketType.user)
558559
async def bankupgrade(self, ctx):
559560
"""Upgrade your bank capacity (price scales with current limit)"""
560-
user_id = ctx.author.id
561-
guild_id = ctx.guild.id
562-
563-
# Get current bank stats
564-
current_limit = await db.get_bank_limit(user_id, guild_id)
565-
current_balance = await db.get_bank_balance(user_id, guild_id)
566-
567-
# Dynamic pricing formula (example: 10% of current limit + base 1000)
568-
base_cost = 1000
569-
upgrade_cost = int(current_limit * 0.1) + base_cost
570-
571-
# Get user's wallet balance
572-
wallet = await db.get_wallet_balance(user_id, guild_id)
573-
574-
# Create confirmation embed
575-
embed = discord.Embed(
576-
title="🏦 Bank Upgrade",
577-
color=0x2ecc71,
578-
description=(
579-
f"Current Bank Limit: **{current_limit:,}** {self.currency}\n"
580-
f"Upgrade Cost: **{upgrade_cost:,}** {self.currency}\n"
581-
f"New Limit: **{current_limit + 5000:,}** {self.currency}\n\n"
582-
f"Your Wallet: **{wallet:,}** {self.currency}"
583-
)
584-
)
585561

586-
# Add upgrade button
587-
view = discord.ui.View()
588-
589-
async def upgrade_callback(interaction):
590-
if interaction.user != ctx.author:
591-
return await interaction.response.send_message("This isn't your bank upgrade!", ephemeral=True)
592-
593-
# Re-check balance in case it changed
594-
wallet = await db.get_wallet_balance(user_id, guild_id)
595-
if wallet < upgrade_cost:
596-
return await interaction.response.edit_message(
597-
content=None,
598-
embed=discord.Embed(
599-
description="❌ You don't have enough money to upgrade your bank!",
600-
color=discord.Color.red()
601-
),
602-
view=None
603-
)
562+
async def create_upgrade_embed(user_id, guild_id):
563+
# Get current bank stats
564+
current_limit = await db.get_bank_limit(user_id, guild_id)
565+
current_balance = await db.get_bank_balance(user_id, guild_id)
604566

605-
# Process upgrade
606-
await db.update_wallet(user_id, -upgrade_cost, guild_id)
607-
await db.update_bank_limit(user_id, 5000, guild_id) # Increase by 5000
567+
# Dynamic pricing formula (example: 10% of current limit + base 1000)
568+
base_cost = 1000
569+
upgrade_cost = int(current_limit * 0.1) + base_cost
570+
new_limit = current_limit + 5000 # Fixed increase per upgrade
608571

609-
# Get updated stats
610-
new_limit = await db.get_bank_limit(user_id, guild_id)
572+
# Check if user can afford it
573+
can_afford = current_balance >= upgrade_cost
611574

612-
# Success message
613-
success_embed = discord.Embed(
614-
title=" Bank Upgraded!",
615-
color=0x00ff00,
575+
# Create embed
576+
embed = discord.Embed(
577+
title="🏦 Bank Upgrade",
578+
color=0x2ecc71 if can_afford else 0xe74c3c,
616579
description=(
617-
f"New Bank Limit: **{new_limit:,}** {self.currency}\n"
618-
f"Next Upgrade Cost: **{int(new_limit * 0.1) + base_cost:,}** {self.currency}"
580+
f"Current Bank Limit: **{current_limit:,}** {self.currency}\n"
581+
f"Current Bank Balance: **{current_balance:,}** {self.currency}\n\n"
582+
f"Upgrade Cost: **{upgrade_cost:,}** {self.currency}\n"
583+
f"New Limit: **{new_limit:,}** {self.currency}\n"
584+
f"*Money will be taken directly from your bank*"
619585
)
620586
)
621-
await interaction.response.edit_message(embed=success_embed, view=None)
622-
623-
upgrade_button = discord.ui.Button(label=f"Upgrade ({upgrade_cost:,})", style=discord.ButtonStyle.green)
624-
upgrade_button.callback = upgrade_callback
625-
view.add_item(upgrade_button)
626-
627-
cancel_button = discord.ui.Button(label="Cancel", style=discord.ButtonStyle.red)
628-
629-
async def cancel_callback(interaction):
630-
if interaction.user != ctx.author:
631-
return await interaction.response.send_message("This isn't your bank upgrade!", ephemeral=True)
632-
await interaction.response.edit_message(content="Upgrade cancelled.", embed=None, view=None)
633-
634-
cancel_button.callback = cancel_callback
635-
view.add_item(cancel_button)
587+
588+
if not can_afford:
589+
embed.add_field(
590+
name="Insufficient Funds",
591+
value=f"You need **{upgrade_cost - current_balance:,}** more {self.currency} in your bank to upgrade!",
592+
inline=False
593+
)
594+
595+
# Create view with buttons
596+
view = discord.ui.View()
597+
598+
if can_afford:
599+
confirm_button = discord.ui.Button(label="Upgrade", style=discord.ButtonStyle.green)
600+
601+
async def confirm_callback(interaction):
602+
if interaction.user != ctx.author:
603+
return await interaction.response.send_message("This isn't your upgrade!", ephemeral=True)
604+
605+
# Verify balance again in case it changed
606+
fresh_balance = await db.get_bank_balance(user_id, guild_id)
607+
fresh_limit = await db.get_bank_limit(user_id, guild_id)
608+
fresh_cost = int(fresh_limit * 0.1) + base_cost
609+
610+
if fresh_balance < fresh_cost:
611+
error_embed = discord.Embed(
612+
description="❌ Your bank balance changed and you can no longer afford this upgrade!",
613+
color=discord.Color.red()
614+
)
615+
return await interaction.response.edit_message(embed=error_embed, view=None)
616+
617+
# Process the upgrade
618+
await db.update_bank(user_id, -fresh_cost, guild_id)
619+
await db.update_bank_limit(user_id, 5000, guild_id) # Increase by 5000
620+
621+
# Show new upgrade options
622+
new_embed, new_view = await create_upgrade_embed(user_id, guild_id)
623+
await interaction.response.edit_message(embed=new_embed, view=new_view)
624+
625+
confirm_button.callback = confirm_callback
626+
view.add_item(confirm_button)
627+
628+
cancel_button = discord.ui.Button(label="Close", style=discord.ButtonStyle.red)
629+
630+
async def cancel_callback(interaction):
631+
if interaction.user != ctx.author:
632+
return await interaction.response.send_message("This isn't your upgrade!", ephemeral=True)
633+
await interaction.response.edit_message(content="Bank upgrade closed.", embed=None, view=None)
634+
635+
cancel_button.callback = cancel_callback
636+
view.add_item(cancel_button)
637+
638+
return embed, view
636639

637-
await ctx.send(embed=embed, view=view)
640+
embed, view = await create_upgrade_embed(ctx.author.id, ctx.guild.id)
641+
await ctx.reply(embed=embed, view=view)
638642

639643
async def setup(bot):
640644
await bot.add_cog(Economy(bot))

0 commit comments

Comments
 (0)