Bank upgrades

pull/119/head
stijndcl 2022-07-03 17:44:16 +02:00
parent ba86d4a6f2
commit fff35c6c44
8 changed files with 99 additions and 3 deletions

3
.gitignore vendored
View File

@ -154,3 +154,6 @@ cython_debug/
# PyCharm # PyCharm
.idea/ .idea/
# Debugging files
debug.py

View File

@ -5,6 +5,7 @@ from sqlalchemy.ext.asyncio import AsyncSession
from database.crud import users from database.crud import users
from database.exceptions import currency as exceptions from database.exceptions import currency as exceptions
from database.models import Bank from database.models import Bank
from database.utils.math.currency import rob_upgrade_price, interest_upgrade_price, capacity_upgrade_price
NIGHTLY_AMOUNT = 420 NIGHTLY_AMOUNT = 420
@ -41,3 +42,57 @@ async def claim_nightly(session: AsyncSession, user_id: int):
session.add(bank) session.add(bank)
session.add(nightly_data) session.add(nightly_data)
await session.commit() await session.commit()
async def upgrade_capacity(database_session: AsyncSession, user_id: int) -> int:
"""Upgrade capacity level"""
bank = await get_bank(database_session, user_id)
upgrade_price = capacity_upgrade_price(bank.capacity_level)
# Can't afford this upgrade
if upgrade_price > bank.dinks:
raise exceptions.NotEnoughDinks
bank.dinks -= upgrade_price
bank.capacity_level += 1
database_session.add(bank)
await database_session.commit()
return bank.capacity_level
async def upgrade_interest(database_session: AsyncSession, user_id: int) -> int:
"""Upgrade interest level"""
bank = await get_bank(database_session, user_id)
upgrade_price = interest_upgrade_price(bank.interest_level)
# Can't afford this upgrade
if upgrade_price > bank.dinks:
raise exceptions.NotEnoughDinks
bank.dinks -= upgrade_price
bank.interest_level += 1
database_session.add(bank)
await database_session.commit()
return bank.interest_level
async def upgrade_rob(database_session: AsyncSession, user_id: int) -> int:
"""Upgrade rob level"""
bank = await get_bank(database_session, user_id)
upgrade_price = rob_upgrade_price(bank.rob_level)
# Can't afford this upgrade
if upgrade_price > bank.dinks:
raise exceptions.NotEnoughDinks
bank.dinks -= upgrade_price
bank.rob_level += 1
database_session.add(bank)
await database_session.commit()
return bank.rob_level

View File

@ -1,2 +1,6 @@
class DoubleNightly(Exception): class DoubleNightly(Exception):
"""Exception raised when claiming nightlies multiple times per day""" """Exception raised when claiming nightlies multiple times per day"""
class NotEnoughDinks(Exception):
"""Exception raised when trying to do something you don't have the Dinks for"""

View File

View File

@ -4,11 +4,11 @@ import discord
from discord.ext import commands from discord.ext import commands
from database.crud import currency as crud from database.crud import currency as crud
from database.exceptions.currency import DoubleNightly from database.exceptions.currency import DoubleNightly, NotEnoughDinks
from didier import Didier from didier import Didier
from didier.utils.discord.checks import is_owner from didier.utils.discord.checks import is_owner
from didier.utils.discord.converters import abbreviated_number from didier.utils.discord.converters import abbreviated_number
from didier.utils.math.currency import capacity_upgrade_price, interest_upgrade_price, rob_upgrade_price from database.utils.math.currency import capacity_upgrade_price, interest_upgrade_price, rob_upgrade_price
from didier.utils.types.string import pluralize from didier.utils.types.string import pluralize
@ -72,6 +72,39 @@ class Currency(commands.Cog):
await ctx.reply(embed=embed, mention_author=False) await ctx.reply(embed=embed, mention_author=False)
@bank_upgrades.command(name="Capacity", aliases=["C"])
async def bank_upgrade_capacity(self, ctx: commands.Context):
"""Upgrade the capacity level of your bank"""
async with self.client.db_session as session:
try:
await crud.upgrade_capacity(session, ctx.author.id)
await ctx.message.add_reaction("")
except NotEnoughDinks:
await ctx.reply("Je hebt niet genoeg Didier Dinks om dit te doen.", mention_author=False)
await self.client.reject_message(ctx.message)
@bank_upgrades.command(name="Interest", aliases=["I"])
async def bank_upgrade_interest(self, ctx: commands.Context):
"""Upgrade the interest level of your bank"""
async with self.client.db_session as session:
try:
await crud.upgrade_interest(session, ctx.author.id)
await ctx.message.add_reaction("")
except NotEnoughDinks:
await ctx.reply("Je hebt niet genoeg Didier Dinks om dit te doen.", mention_author=False)
await self.client.reject_message(ctx.message)
@bank_upgrades.command(name="Rob", aliases=["R"])
async def bank_upgrade_rob(self, ctx: commands.Context):
"""Upgrade the rob level of your bank"""
async with self.client.db_session as session:
try:
await crud.upgrade_rob(session, ctx.author.id)
await ctx.message.add_reaction("")
except NotEnoughDinks:
await ctx.reply("Je hebt niet genoeg Didier Dinks om dit te doen.", mention_author=False)
await self.client.reject_message(ctx.message)
@commands.hybrid_command(name="dinks") @commands.hybrid_command(name="dinks")
async def dinks(self, ctx: commands.Context): async def dinks(self, ctx: commands.Context):
"""Check your Didier Dinks""" """Check your Didier Dinks"""

View File

@ -30,7 +30,8 @@ disable = [
"missing-module-docstring", "missing-module-docstring",
"too-few-public-methods", "too-few-public-methods",
"too-many-arguments", "too-many-arguments",
"too-many-instance-attributes" "too-many-instance-attributes",
"too-many-locals"
] ]
[tool.pylint.format] [tool.pylint.format]