File size: 3,367 Bytes
907240b
 
 
 
ca6040a
907240b
ca6040a
3a9dd4c
 
f338b32
3a9dd4c
f338b32
 
ca6040a
907240b
ca6040a
907240b
ca6040a
907240b
ceb6eb9
3a9dd4c
 
ceb6eb9
 
 
907240b
ca6040a
ceb6eb9
 
907240b
f338b32
ceb6eb9
ca6040a
 
 
3a9dd4c
 
ca6040a
3a9dd4c
ceb6eb9
3a9dd4c
 
ceb6eb9
ca6040a
3a9dd4c
ceb6eb9
ca6040a
3a9dd4c
ca6040a
 
3a9dd4c
 
 
ca6040a
 
 
 
ceb6eb9
ca6040a
 
 
3a9dd4c
ca6040a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f338b32
 
 
ceb6eb9
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
81
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 don't have enough cash. Your current balance is ${balance:.2f}")
        return

    valid_choices = ["red", "black", "green"] + [str(i) for i in range(37)]
    if choice not in valid_choices:
        await interaction.response.send_message("Invalid choice. 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}", color=0x787878)
    embed.add_field(name="Your Bet", value=f"Choice: {choice}", inline=False)
    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
        payout = -bet
        if choice.isdigit():
            win = int(choice) == result_number
            payout = bet * 35 if win else payout
        else:
            win = choice == result_color
            payout = bet * 2 if win else payout
        
        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)