Skip to content

Commit 93db319

Browse files
committed
added new command and polished shop
1 parent 962f347 commit 93db319

File tree

1 file changed

+40
-7
lines changed

1 file changed

+40
-7
lines changed

main.py

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,14 @@ async def inventory(ctx):
4949

5050
from discord.ui import Button, Select, View
5151
@bot.slash_command()
52-
async def shop(ctx):
52+
async def shop(ctx: discord.ApplicationContext):
5353
options = []
5454
for item in ShopItem.objects:
5555
option = discord.SelectOption(label=item.item.name, description=item.item.price)
5656
options.append(option)
5757
menu = Select(placeholder="Select an item for purchase", options=options)
5858
async def on_select(interaction: discord.Interaction):
59+
await ctx.interaction.delete_original_message()
5960
# we only have 1 value
6061
itemName = menu.values[0]
6162
itemPrice = Item.objects.get(name=itemName).price
@@ -64,13 +65,32 @@ async def on_select(interaction: discord.Interaction):
6465
cancelButton = Button(style=discord.ButtonStyle.secondary, label="Cancel")
6566
confirmButton = Button(style=discord.ButtonStyle.success, label="Purchase")
6667

67-
async def on_confirm(interaction: discord.Interaction):
68-
player = Player.objects.get(userId=interaction.user.id)
69-
player.wallet -= itemPrice
70-
player.items.append(Item.objects.get(name=itemName))
71-
player.save()
72-
await interaction.response.send_message(f"You purchased {itemName} for {itemPrice}")
68+
async def on_cancel(interactione: discord.Interaction):
69+
await interaction.response.defer(ephemeral=False)
70+
await interaction.delete_original_message()
71+
72+
async def on_confirm(interactionne: discord.Interaction):
73+
try:
74+
player = Player.objects.get(userId=interactionne.user.id)
75+
except DoesNotExist:
76+
player = Player(userId=interactionne.user.id, displayName=interactionne.user.display_name, wallet=0, items=[])
77+
player.save()
78+
if Item.objects.get(name=itemName) in player.items:
79+
# the double underscore is like items.name
80+
await interactionne.response.send_message(f"You already own {itemName}")
81+
await interaction.delete_original_message()
82+
else:
83+
if player.wallet < itemPrice:
84+
await interactionne.response.send_message(f"You don't have enough money to buy {itemName}")
85+
await interaction.delete_original_message()
86+
return
87+
player.wallet -= itemPrice
88+
player.items.append(Item.objects.get(name=itemName))
89+
player.save()
90+
await interactionne.response.send_message(f"You purchased {itemName} for {itemPrice}")
91+
await interaction.delete_original_message()
7392
confirmButton.callback = on_confirm
93+
cancelButton.callback = on_cancel
7494
view2 = View()
7595
view2.add_item(cancelButton)
7696
view2.add_item(confirmButton)
@@ -80,4 +100,17 @@ async def on_confirm(interaction: discord.Interaction):
80100
view.add_item(menu)
81101
await ctx.respond(view=view)
82102

103+
@bot.slash_command(guild_ids=[804100748275220530])
104+
async def sparechange(ctx: discord.ApplicationContext, amount: int = None):
105+
try:
106+
player = Player.objects.get(userId=ctx.author.id)
107+
except DoesNotExist:
108+
player = Player(userId=ctx.author.id, displayName=ctx.author.name, wallet=0, items=[])
109+
player.save()
110+
# if they didn't pass in an amount, the condition will fail and it'll give 10k
111+
player.wallet += amount or 10000
112+
player.save()
113+
embed = discord.Embed(title="Money deposited", description=f"{amount or 10000} has been deposited into your wallet")
114+
await ctx.respond(embed=embed)
115+
83116
bot.run(token)

0 commit comments

Comments
 (0)