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.