This repository has been archived on 2025-01-25. You can view files and clone it, but cannot push or open issues or pull requests.
aquabot/code/cogs/gambling_helpers.py
2025-01-25 22:58:41 -06:00

139 lines
4.3 KiB
Python

import discord
from discord.ext import commands
from discord import app_commands
import random
from bot import InsufficientFundsException
from global_variables import BOT_COLOR, BONUS_COOLDOWN
from database import Database
class GamblingHelpers(commands.Cog):
def __init__(self, bot: commands.Bot) -> None:
self.bot = bot
self.economy = Database(bot)
async def check_bet(
self,
interaction: discord.Interaction,
bet
):
bet = int(bet)
if bet <= 0:
raise commands.errors.BadArgument()
current = (await self.economy.get_entry(interaction.user.id))[1]
if bet > current:
raise InsufficientFundsException()
# This is only here temporarily, because I accidentally deleted the database
@commands.command()
@commands.is_owner()
@commands.dm_only()
async def refund(
self,
ctx: commands.Context,
id,
amount: int
):
user = await self.bot.fetch_user(id)
if user:
await self.economy.add_money(id, amount)
await ctx.send(f"Refunded {user} ${amount:,}")
else:
await ctx.send("User not found")
@app_commands.command()
@app_commands.checks.cooldown(1, BONUS_COOLDOWN*3600)
async def add(
self,
interaction: discord.Interaction
):
f"Add $10,000 to your balance every {BONUS_COOLDOWN} hours"
amount = 10000
await self.economy.add_money(interaction.user.id, amount)
embed = discord.Embed(
title="I've added $10,000 to you balance",
description=f"Come back again in {BONUS_COOLDOWN} hours.",
color=BOT_COLOR
)
await interaction.response.send_message(embed=embed, ephemeral=True)
@app_commands.command()
@app_commands.checks.cooldown(1, 120)
async def work(
self,
interaction: discord.Interaction
):
"Work for a randomized amount of money every 2 minutes"
a = random.randint(500, 2500)
b = random.randint(500, 2500)
if a == b:
num = 50000000
else:
num = a + b
await self.economy.add_money(interaction.user.id, num)
embed = discord.Embed(
title=f"You worked and earned ${num:,}",
description="Come back again in 2 minutes.",
color=BOT_COLOR
)
await interaction.response.send_message(embed=embed, ephemeral=True)
@app_commands.command()
async def leaderboard(
self,
interaction: discord.Interaction
):
"Show the global currency leaderboard"
entries = await self.economy.top_entries(5)
embed = discord.Embed(
title="Global Economy Leaderboard:",
description="",
color=discord.Color.gold()
)
for i, entry in enumerate(entries):
id = entry[0]
name = f"<@{id}>"
embed.description += f"**`{i+1}.` {name}**\n${entry[1]:,}\n\n"
await interaction.response.send_message(embed=embed)
@app_commands.command()
@app_commands.describe(user="The user to give money to")
@app_commands.describe(amount="The amount of money to give the user")
async def give(
self,
interaction: discord.Interaction,
user: discord.Member,
amount: app_commands.Range[int, 1, None]
):
"Give money to another user"
if user == interaction.user:
embed = discord.Embed(
title="Self Error",
description="You cannot give money to yourself, please try again with a different user.",
color=BOT_COLOR
)
return await interaction.response.send_message(embed=embed, ephemeral=True)
else:
await self.check_bet(interaction, amount)
await self.economy.add_money(user.id, amount)
await self.economy.add_money(interaction.user.id, amount*-1)
embed = discord.Embed(
title="Gift Success",
description=f"You have successfully given {user.mention} ${amount:,}!",
color=discord.Color.green()
)
return await interaction.response.send_message(embed=embed)
async def setup(bot: commands.Bot):
await bot.add_cog(GamblingHelpers(bot))