Spaces:
Running
Running
File size: 3,339 Bytes
907240b ca6040a 907240b ca6040a 3a9dd4c f338b32 3a9dd4c f338b32 ca6040a 907240b ca6040a 907240b ca6040a 907240b 3a9dd4c 907240b ca6040a 3a9dd4c 907240b f338b32 ca6040a 3a9dd4c ca6040a 3a9dd4c ca6040a 3a9dd4c ca6040a 3a9dd4c ca6040a 3a9dd4c ca6040a 3a9dd4c ca6040a f338b32 3a9dd4c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
import discord
from discord import app_commands
import random
from cash import user_cash
@app_commands.command(name="roulette", description="Play roulette and bet")
async def roulette(interaction: discord.Interaction, bet: int, choice: str):
await play_roulette(interaction, bet, choice)
async def play_roulette(interaction: discord.Interaction, bet: int, choice: str):
user_id = interaction.user.id
balance = user_cash.get(user_id, 0)
if bet <= 0:
await interaction.response.send_message("Bet higher than 0, please.")
return
if bet > balance:
await interaction.response.send_message(f"you got no money. Your current balance is ${balance:.2f}")
return
if choice not in ["red", "black", "green"] and not (choice.isdigit() and 0 <= int(choice) <= 36):
await interaction.response.send_message("Invalid. Choose 'red', 'black', 'green', or a number between 0 and 36.")
return
embed = discord.Embed(title="Roulette Game", description=f"{interaction.user.name} is betting ${bet:.2f} on {choice}", color=0x787878)
embed.add_field(name="Current Balance", value=f"${balance:.2f}", inline=False)
spin_button = discord.ui.Button(style=discord.ButtonStyle.primary, label="Spin the Roulette", custom_id="spin_roulette")
async def spin_roulette_callback(interaction: discord.Interaction):
nonlocal balance
result_number = random.randint(0, 36)
result_color = "green" if result_number == 0 else ("red" if result_number % 2 == 1 else "black")
win = False
if choice.isdigit():
win = int(choice) == result_number
payout = bet * 35 if win else -bet
else:
win = choice == result_color
payout = bet * 2 if win else -bet
balance += payout
user_cash[user_id] = balance
result_text = f"The ball landed on {result_color} {result_number}. "
result_text += f"You {'won' if win else 'lost'} ${abs(payout):.2f}."
embed.clear_fields()
embed.add_field(name="Result", value=result_text, inline=False)
embed.add_field(name="New Balance", value=f"${balance:.2f}", inline=False)
spin_again_button = discord.ui.Button(style=discord.ButtonStyle.primary, label="Spin Again", custom_id="spin_again")
async def spin_again_callback(interaction: discord.Interaction):
if interaction.user.id == user_id:
await play_roulette(interaction, bet, choice)
else:
await interaction.response.send_message("You can't spin this.", ephemeral=True)
spin_again_button.callback = spin_again_callback
new_view = discord.ui.View()
new_view.add_item(spin_again_button)
await interaction.response.edit_message(embed=embed, view=new_view)
spin_button.callback = spin_roulette_callback
view = discord.ui.View()
view.add_item(spin_button)
if interaction.response.is_done():
await interaction.followup.send(embed=embed, view=view)
else:
await interaction.response.send_message(embed=embed, view=view)
# Ensure you have set up your bot and registered this command appropriately in your bot setup code. |