aboutsummaryrefslogtreecommitdiff
path: root/code/cogs/profile.py
diff options
context:
space:
mode:
Diffstat (limited to 'code/cogs/profile.py')
-rw-r--r--code/cogs/profile.py691
1 files changed, 691 insertions, 0 deletions
diff --git a/code/cogs/profile.py b/code/cogs/profile.py
new file mode 100644
index 0000000..4f76c66
--- /dev/null
+++ b/code/cogs/profile.py
@@ -0,0 +1,691 @@
+import discord
+import datetime
+from discord.ext import commands
+import psycopg2
+from discord import app_commands
+
+from global_variables import CONNECTION, BOT_COLOR
+from bot import InsufficientFundsException
+from database import Database
+
+
+class Economy:
+ def __init__(self, bot):
+ self.bot = bot
+ self.economy = Database(bot)
+
+ async def check_bet(
+ self,
+ user_id,
+ bet,
+ ):
+ bet = int(bet)
+ if bet <= 0:
+ raise commands.errors.BadArgument()
+ current = (await self.economy.get_entry(user_id))[1]
+ if bet > current:
+ raise InsufficientFundsException()
+
+#BEGIN CODE FOR RANK PURCHASING
+
+class AfterRankPurchase(discord.ui.View):
+ def __init__(self, bot, *, timeout = 180.0):
+ super().__init__(timeout=timeout)
+ self.bot = bot
+ self.economy = Database(bot)
+ self.value = None
+
+ @discord.ui.button(label='Main Page', style=discord.ButtonStyle.blurple, row=2)
+ async def main_page(self, interaction: discord.Interaction, button: discord.ui.Button):
+ user_id = interaction.user.id
+ profile = await self.economy.get_entry(user_id)
+ balance = profile[1]
+
+ cur = CONNECTION.cursor()
+ cur.execute("SELECT rank_name FROM profile WHERE user_id = %s ORDER BY rank_int DESC", (user_id,))
+ data = cur.fetchall()
+ if data:
+ names = ', '.join([str(i[0]) for i in data])
+
+ else:
+ names = "No ranks"
+
+ embed = discord.Embed(
+ title="Shop",
+ description=f"Choose from one of the categories below in order to shop for items \n\nBalance: **${balance:,}** \n\nRanks: **{names}**",
+ color=BOT_COLOR
+ )
+ view = ShopView(self.bot)
+ await interaction.response.edit_message(embed=embed, view=view)
+
+
+class ConfirmRankPurchase(discord.ui.View):
+ def __init__(self, bot, bet, rank_value, rank_name, *, timeout = 180.0):
+ super().__init__(timeout=timeout)
+ self.bot = bot
+ self.bet = bet
+ self.rank_int = int(rank_value)
+ self.rank_name = str(rank_name)
+ self.check = Economy(bot)
+ self.economy = Database(bot)
+ self.add_item(RankDropdown(bot))
+
+
+ @discord.ui.button(label='Yes', style=discord.ButtonStyle.green, row=2)
+ async def yes(self, interaction: discord.Interaction, button: discord.ui.Button):
+ user_id = interaction.user.id
+
+ cur = CONNECTION.cursor()
+ try:
+ await self.check.check_bet(user_id, self.bet)
+ cur.execute("INSERT INTO profile (user_id, rank_name, rank_int) VALUES(%s,%s,%s)", (user_id, self.rank_name, self.rank_int))
+ CONNECTION.commit()
+ await self.economy.add_money(user_id, self.bet*-1)
+
+ embed = discord.Embed(
+ title="Purchase Successful",
+ description=f"Your purchase was successful. In order to purchase more items, please click the main page button below.",
+ color=BOT_COLOR
+ )
+ view = AfterRankPurchase(self.bot)
+ await interaction.response.edit_message(embed=embed, view=view)
+
+ except psycopg2.errors.UniqueViolation:
+ embed = discord.Embed(
+ title="Rank Already Owned",
+ description=f"You already have that rank and therefore cannot buy it again. Try purchasing another rank.",
+ color=BOT_COLOR
+ )
+ view = RankView(self.bot)
+ return await interaction.response.edit_message(embed=embed, view=view)
+
+ except InsufficientFundsException:
+ embed = discord.Embed(
+ title="Not Enough Money",
+ description=f"You do not have enough money to make that purchase, come back once you've earned some more money.",
+ color=BOT_COLOR
+ )
+ view = RankView(self.bot)
+ return await interaction.response.edit_message(embed=embed, view=view)
+
+
+ @discord.ui.button(label='No', style=discord.ButtonStyle.red, row=2)
+ async def no(self, interaction: discord.Interaction, button: discord.ui.Button):
+ embed = discord.Embed(
+ title="Purchase Cancelled, Taken Back to Shop",
+ description=f"Choose from one of the categories below in order to shop for items.",
+ color=BOT_COLOR
+ )
+ view = ShopView(self.bot)
+ await interaction.response.edit_message(embed=embed, view=view)
+
+
+class RankDropdown(discord.ui.Select):
+ def __init__(self, bot):
+ self.bot = bot
+
+ options = [
+ discord.SelectOption(label='Copper III', description="100,000", emoji = "<:copper_3:908535582534299688>"),
+ discord.SelectOption(label='Copper II', description="200,000", emoji = "<:copper_2:908535594714558524>"),
+ discord.SelectOption(label='Copper I', description="300,000", emoji = "<:copper_1:908535605644918895>"),
+
+ discord.SelectOption(label='Bronze III', description="100,000,000", emoji = "<:bronze_3:908535616650760222>"),
+ discord.SelectOption(label='Bronze II', description="200,000,000", emoji = "<:bronze_2:908535628503863296>"),
+ discord.SelectOption(label='Bronze I', description="300,000,000", emoji = "<:bronze_1:908535639606198292>"),
+
+ discord.SelectOption(label='Silver III', description="100,000,000,000", emoji = "<:silver_3:908535654667911168>"),
+ discord.SelectOption(label='Silver II', description="200,000,000,000", emoji = "<:silver_2:908535667263434782>"),
+ discord.SelectOption(label='Silver I', description="300,000,000,000", emoji = "<:silver_1:908535680064442398>"),
+
+ discord.SelectOption(label='Gold III', description="100,000,000,000,000", emoji = "<:gold_3:908535691137388554>"),
+ discord.SelectOption(label='Gold II', description="200,000,000,000,000", emoji = "<:gold_2:908535705154764870>"),
+ discord.SelectOption(label='Gold I', description="300,000,000,000,000", emoji = "<:gold_1:908535742224027758>"),
+
+ discord.SelectOption(label='Platinum III', description="100,000,000,000,000,000", emoji = "<:platinum_3:908535751900282880>"),
+ discord.SelectOption(label='Platinum II', description="200,000,000,000,000,000", emoji = "<:platinum_2:908535764629999656>"),
+ discord.SelectOption(label='Platinum I', description="300,000,000,000,000,000", emoji = "<:platinum_1:908535773689679932>"),
+
+ discord.SelectOption(label='Diamond', description="123,456,789,000,000,000,000", emoji = "<:diamond:908535791700037702>"),
+
+ discord.SelectOption(label='Champion', description="999,999,999,999,999,999,999,999,999", emoji = "<:champion:908535801338540042>"),
+
+ ]
+
+ super().__init__(placeholder='Choose a rank...', min_values=1, max_values=1, options=options)
+
+ async def callback(self, interaction: discord.Interaction):
+ if self.values[0] == 'Copper III':
+ embed = discord.Embed(
+ title="Please Confirm Your Purchase",
+ description="If you are sure you would like to purchase the `Copper III` rank, please click the 'Yes' button below, otherwise click the 'No' button.",
+ color=BOT_COLOR
+ )
+
+ rank_value = 1
+ rank_name = 'Copper III'
+ bet = 100000
+
+ view = ConfirmRankPurchase(self.bot, bet, rank_value, rank_name)
+ await interaction.response.edit_message(embed=embed, view=view)
+
+ if self.values[0] == 'Copper II':
+ embed = discord.Embed(
+ title="Please Confirm Your Purchase",
+ description="If you are sure you would like to purchase the `Copper II` rank, please click the 'Yes' button below, otherwise click the 'No' button.",
+ color=BOT_COLOR
+ )
+
+ rank_value = 2
+ rank_name = 'Copper II'
+ bet = 200000
+
+ view = ConfirmRankPurchase(self.bot, bet, rank_value, rank_name)
+ await interaction.response.edit_message(embed=embed, view=view)
+
+ if self.values[0] == 'Copper I':
+ embed = discord.Embed(
+ title="Please Confirm Your Purchase",
+ description="If you are sure you would like to purchase the `Copper I` rank, please click the 'Yes' button below, otherwise click the 'No' button.",
+ color=BOT_COLOR
+ )
+
+ rank_value = 3
+ rank_name = 'Copper I'
+ bet = 300000
+
+ view = ConfirmRankPurchase(self.bot, bet, rank_value, rank_name)
+ await interaction.response.edit_message(embed=embed, view=view)
+
+ if self.values[0] == 'Bronze III':
+ embed = discord.Embed(
+ title="Please Confirm Your Purchase",
+ description="If you are sure you would like to purchase the `Bronze III` rank, please click the 'Yes' button below, otherwise click the 'No' button.",
+ color=BOT_COLOR
+ )
+
+ rank_value = 4
+ rank_name = 'Bronze III'
+ bet = 100000000
+
+ view = ConfirmRankPurchase(self.bot, bet, rank_value, rank_name)
+ await interaction.response.edit_message(embed=embed, view=view)
+
+ if self.values[0] == 'Bronze II':
+ embed = discord.Embed(
+ title="Please Confirm Your Purchase",
+ description="If you are sure you would like to purchase the `Bronze II` rank, please click the 'Yes' button below, otherwise click the 'No' button.",
+ color=BOT_COLOR
+ )
+
+ rank_value = 5
+ rank_name = 'Bronze II'
+ bet = 200000000
+
+ view = ConfirmRankPurchase(self.bot, bet, rank_value, rank_name)
+ await interaction.response.edit_message(embed=embed, view=view)
+
+ if self.values[0] == 'Bronze I':
+ embed = discord.Embed(
+ title="Please Confirm Your Purchase",
+ description="If you are sure you would like to purchase the `Bronze I` rank, please click the 'Yes' button below, otherwise click the 'No' button.",
+ color=BOT_COLOR
+ )
+
+ rank_value = 6
+ rank_name = 'Bronze I'
+ bet = 300000000
+
+ view = ConfirmRankPurchase(self.bot, bet, rank_value, rank_name)
+ await interaction.response.edit_message(embed=embed, view=view)
+
+ if self.values[0] == 'Silver III':
+ embed = discord.Embed(
+ title="Please Confirm Your Purchase",
+ description="If you are sure you would like to purchase the `Silver III` rank, please click the 'Yes' button below, otherwise click the 'No' button.",
+ color=BOT_COLOR
+ )
+
+ rank_value = 7
+ rank_name = 'Silver III'
+ bet = 100000000000
+
+ view = ConfirmRankPurchase(self.bot, bet, rank_value, rank_name)
+ await interaction.response.edit_message(embed=embed, view=view)
+
+ if self.values[0] == 'Silver II':
+ embed = discord.Embed(
+ title="Please Confirm Your Purchase",
+ description="If you are sure you would like to purchase the `Silver II` rank, please click the 'Yes' button below, otherwise click the 'No' button.",
+ color=BOT_COLOR
+ )
+
+ rank_value = 8
+ rank_name = 'Silver II'
+ bet = 200000000000
+
+ view = ConfirmRankPurchase(self.bot, bet, rank_value, rank_name)
+ await interaction.response.edit_message(embed=embed, view=view)
+
+ if self.values[0] == 'Silver I':
+ embed = discord.Embed(
+ title="Please Confirm Your Purchase",
+ description="If you are sure you would like to purchase the `Silver I` rank, please click the 'Yes' button below, otherwise click the 'No' button.",
+ color=BOT_COLOR
+ )
+
+ rank_value = 9
+ rank_name = 'Silver I'
+ bet = 300000000000
+
+ view = ConfirmRankPurchase(self.bot, bet, rank_value, rank_name)
+ await interaction.response.edit_message(embed=embed, view=view)
+
+ if self.values[0] == 'Gold III':
+ embed = discord.Embed(
+ title="Please Confirm Your Purchase",
+ description="If you are sure you would like to purchase the `Gold III` rank, please click the 'Yes' button below, otherwise click the 'No' button.",
+ color=BOT_COLOR
+ )
+
+ rank_value = 10
+ rank_name = 'Gold III'
+ bet = 100000000000000
+
+ view = ConfirmRankPurchase(self.bot, bet, rank_value, rank_name)
+ await interaction.response.edit_message(embed=embed, view=view)
+
+ if self.values[0] == 'Gold II':
+ embed = discord.Embed(
+ title="Please Confirm Your Purchase",
+ description="If you are sure you would like to purchase the `Gold II` rank, please click the 'Yes' button below, otherwise click the 'No' button.",
+ color=BOT_COLOR
+ )
+
+ rank_value = 11
+ rank_name = 'Gold II'
+ bet = 200000000000000
+
+ view = ConfirmRankPurchase(self.bot, bet, rank_value, rank_name)
+ await interaction.response.edit_message(embed=embed, view=view)
+
+ if self.values[0] == 'Gold I':
+ embed = discord.Embed(
+ title="Please Confirm Your Purchase",
+ description="If you are sure you would like to purchase the `Gold I` rank, please click the 'Yes' button below, otherwise click the 'No' button.",
+ color=BOT_COLOR
+ )
+
+ rank_value = 12
+ rank_name = 'Gold I'
+ bet = 300000000000000
+
+ view = ConfirmRankPurchase(self.bot, bet, rank_value, rank_name)
+ await interaction.response.edit_message(embed=embed, view=view)
+
+ if self.values[0] == 'Platinum III':
+ embed = discord.Embed(
+ title="Please Confirm Your Purchase",
+ description="If you are sure you would like to purchase the `Platinum III` rank, please click the 'Yes' button below, otherwise click the 'No' button.",
+ color=BOT_COLOR
+ )
+
+ rank_value = 13
+ rank_name = 'Platinum III'
+ bet = 100000000000000000
+
+ view = ConfirmRankPurchase(self.bot, bet, rank_value, rank_name)
+ await interaction.response.edit_message(embed=embed, view=view)
+
+ if self.values[0] == 'Platinum II':
+ embed = discord.Embed(
+ title="Please Confirm Your Purchase",
+ description="If you are sure you would like to purchase the `Platinum II` rank, please click the 'Yes' button below, otherwise click the 'No' button.",
+ color=BOT_COLOR
+ )
+
+ rank_value = 14
+ rank_name = 'Platinum II'
+ bet = 200000000000000000
+
+ view = ConfirmRankPurchase(self.bot, bet, rank_value, rank_name)
+ await interaction.response.edit_message(embed=embed, view=view)
+
+ if self.values[0] == 'Platinum I':
+ embed = discord.Embed(
+ title="Please Confirm Your Purchase",
+ description="If you are sure you would like to purchase the `Platinum I` rank, please click the 'Yes' button below, otherwise click the 'No' button.",
+ color=BOT_COLOR
+ )
+
+ rank_value = 15
+ rank_name = 'Platinum I'
+ bet = 300000000000000000
+
+ view = ConfirmRankPurchase(self.bot, bet, rank_value, rank_name)
+ await interaction.response.edit_message(embed=embed, view=view)
+
+ if self.values[0] == 'Diamond':
+ embed = discord.Embed(
+ title="Please Confirm Your Purchase",
+ description="If you are sure you would like to purchase the `Diamond` rank, please click the 'Yes' button below, otherwise click the 'No' button.",
+ color=BOT_COLOR
+ )
+
+ rank_value = 16
+ rank_name = 'Diamond'
+ bet = 123456789000000000000
+
+ view = ConfirmRankPurchase(self.bot, bet, rank_value, rank_name)
+ await interaction.response.edit_message(embed=embed, view=view)
+
+ if self.values[0] == 'Champion':
+ embed = discord.Embed(
+ title="Please Confirm Your Purchase",
+ description="If you are sure you would like to purchase the `Champion` rank, please click the 'Yes' button below, otherwise click the 'No' button.",
+ color=BOT_COLOR
+ )
+
+ rank_value = 17
+ rank_name = 'Champion'
+ bet = 999999999999999999999999999
+
+ view = ConfirmRankPurchase(self.bot, bet, rank_value, rank_name)
+ await interaction.response.edit_message(embed=embed, view=view)
+
+
+class RankView(discord.ui.View):
+ def __init__(self, bot, *, timeout = 180.0):
+ super().__init__(timeout=timeout)
+ self.bot = bot
+ self.economy = Database(bot)
+ self.add_item(RankDropdown(bot))
+
+
+ @discord.ui.button(label='Main Page', style=discord.ButtonStyle.blurple, row=2)
+ async def main_page(self, interaction: discord.Interaction, button: discord.ui.Button):
+ user_id = interaction.user.id
+ profile = await self.economy.get_entry(user_id)
+ balance = profile[1]
+
+ cur = CONNECTION.cursor()
+ cur.execute("SELECT rank_name FROM profile WHERE user_id = %s ORDER BY rank_int DESC", (user_id,))
+ data = cur.fetchall()
+ if data:
+ names = ', '.join([str(i[0]) for i in data])
+
+ else:
+ names = "No ranks"
+
+ embed = discord.Embed(
+ title="Shop",
+ description=f"Choose from one of the categories below in order to shop for items \n\nBalance: **${balance:,}** \n\nRanks: **{names}**",
+ color=BOT_COLOR
+ )
+ view = ShopView(self.bot)
+ await interaction.response.edit_message(embed=embed, view=view)
+
+
+##END RANK AND BEGIN PROFILE AND OTHER MAIN SHOP VIEWING
+
+
+class ShopDropdown(discord.ui.Select):
+ def __init__(self, bot):
+ self.bot = bot
+
+ options = [
+ discord.SelectOption(label='Ranks', description='Buy ranks and show off your wealth'),
+ ]
+
+ super().__init__(placeholder='Choose a category...', min_values=1, max_values=1, options=options)
+
+ async def callback(self, interaction: discord.Interaction):
+ user_id = interaction.user.id
+ cur = CONNECTION.cursor()
+ cur.execute("SELECT rank_name FROM profile WHERE user_id = %s ORDER BY rank_int DESC", (user_id,))
+ data = cur.fetchall()
+ if data:
+ names = ([str(i[0]) for i in data])
+
+ if "Copper III" in names:
+ copper_iii = "~~Copper III~~ - OWNED"
+ else:
+ copper_iii = "Copper III"
+
+ if "Copper II" in names:
+ copper_ii = "~~Copper II~~ - OWNED"
+ else:
+ copper_ii = "Copper II"
+
+ if "Copper I" in names:
+ copper_i = "~~Copper I~~ - OWNED"
+ else:
+ copper_i = "Copper I"
+
+ if "Bronze III" in names:
+ bronze_iii = "~~Bronze III~~ - OWNED"
+ else:
+ bronze_iii = "Bronze III"
+
+ if "Bronze II" in names:
+ bronze_ii = "~~Bronze II~~ - OWNED"
+ else:
+ bronze_ii = "Bronze II"
+
+ if "Bronze I" in names:
+ bronze_i = "~~Bronze I~~ - OWNED"
+ else:
+ bronze_i = "Bronze I"
+
+ if "Silver III" in names:
+ silver_iii = "~~Silver III~~ - OWNED"
+ else:
+ silver_iii = "Silver III"
+
+ if "Silver II" in names:
+ silver_ii = "~~Silver II~~ - OWNED"
+ else:
+ silver_ii = "Silver II"
+
+ if "Silver I" in names:
+ silver_i = "~~Silver I~~ - OWNED"
+ else:
+ silver_i = "Silver I"
+
+ if "Gold III" in names:
+ gold_iii = "~~Gold III~~ - OWNED"
+ else:
+ gold_iii = "Gold III"
+
+ if "Gold II" in names:
+ gold_ii = "~~Gold II~~ - OWNED"
+ else:
+ gold_ii = "Gold II"
+
+ if "Gold I" in names:
+ gold_i = "~~Gold I~~ - OWNED"
+ else:
+ gold_i = "Gold I"
+
+ if "Platinum III" in names:
+ platinum_iii = "~~Platinum III~~ - OWNED"
+ else:
+ platinum_iii = "Platinum III"
+
+ if "Platinum II" in names:
+ platinum_ii = "~~Platinum II~~ - OWNED"
+ else:
+ platinum_ii = "Platinum II"
+
+ if "Platinum I" in names:
+ platinum_i = "~~Platinum I~~ - OWNED"
+ else:
+ platinum_i = "Platinum I"
+
+ if "Diamond" in names:
+ diamond = "~~Diamond~~ - OWNED"
+ else:
+ diamond = "Diamond"
+
+ if "Champion" in names:
+ champion = "~~Champion~~ - OWNED"
+ else:
+ champion = "Champion"
+ else:
+ copper_iii = "Copper III"
+ copper_ii = "Copper II"
+ copper_i = "Copper I"
+ bronze_iii = "Bronze III"
+ bronze_ii = "Bronze II"
+ bronze_i = "Bronze I"
+ silver_iii = "Silver III"
+ silver_ii = "Silver II"
+ silver_i = "Silver I"
+ gold_iii = "Gold III"
+ gold_ii = "Gold II"
+ gold_i = "Gold I"
+ platinum_iii = "Platinum III"
+ platinum_ii = "Platinum II"
+ platinum_i = "Platinum I"
+ diamond = "Diamond"
+ champion = "Champion"
+
+ if self.values[0] == 'Ranks':
+ embed = discord.Embed(
+ title="Ranks \nSpend your money in order to get more ranks.",
+ description="**Purchase a rank by clicking on one of the dropdown menus below, and then confirming your purchase.**",
+ color=BOT_COLOR
+ )
+
+ embed.add_field(name=f"{copper_iii}", value=f"```100,000```", inline=True)
+ embed.add_field(name=f"{copper_ii}", value=f"```200,000```", inline=True)
+ embed.add_field(name=f"{copper_i}", value=f"```300,000```", inline=True)
+
+ embed.add_field(name=f"{bronze_iii}", value=f"```100,000,000```", inline=True)
+ embed.add_field(name=f"{bronze_ii}", value=f"```200,000,000```", inline=True)
+ embed.add_field(name=f"{bronze_i}", value=f"```300,000,000```", inline=True)
+
+ embed.add_field(name=f"{silver_iii}", value=f"```100,000,000,000\n(100 bil.)```", inline=True)
+ embed.add_field(name=f"{silver_ii}", value=f"```200,000,000,000\n(200 bil.)```", inline=True)
+ embed.add_field(name=f"{silver_i}", value=f"```300,000,000,000\n(300 bil.)```", inline=True)
+
+ embed.add_field(name=f"{gold_iii}", value=f"```100,000,000,000,\n000 (100 tril.)```", inline=True)
+ embed.add_field(name=f"{gold_ii}", value=f"```200,000,000,000,\n000 (200 tril.)```", inline=True)
+ embed.add_field(name=f"{gold_i}", value=f"```300,000,000,000,\n000 (300 tril.)```", inline=True)
+
+ embed.add_field(name=f"{platinum_iii}", value=f"```100,000,000,000,000,000 (100 quad.)```", inline=True)
+ embed.add_field(name=f"{platinum_ii}", value=f"```200,000,000,000,000,000 (200 quad.)```", inline=True)
+ embed.add_field(name=f"{platinum_i}", value=f"```300,000,000,000,000,000 (300 quad.)```", inline=True)
+
+ embed.add_field(name=f"{diamond}", value=f"```123,456,789,000,000,000,000\n(<123 quint.)```", inline=True)
+
+ embed.add_field(name=f"{champion}", value=f"```999,999,999,999,999,999,999,\n999,999 (<999 sept.)```", inline=True)
+
+ view = RankView(self.bot)
+ await interaction.response.edit_message(embed=embed, view=view)
+
+
+class ShopView(discord.ui.View):
+ def __init__(self, bot, *, timeout = 180.0):
+ super().__init__(timeout=timeout)
+ self.economy = Database(bot)
+ self.bot = bot
+ self.add_item(ShopDropdown(bot))
+
+
+ @discord.ui.button(label='Main Page', style=discord.ButtonStyle.blurple, row=2)
+ async def main_page(self, interaction: discord.Interaction, button: discord.ui.Button):
+ user_id = interaction.user.id
+ profile = await self.economy.get_entry(user_id)
+ balance = profile[1]
+
+ cur = CONNECTION.cursor()
+ cur.execute("SELECT rank_name FROM profile WHERE user_id = %s ORDER BY rank_int DESC", (user_id,))
+ data = cur.fetchall()
+ if data:
+ names = ', '.join([str(i[0]) for i in data])
+
+ else:
+ names = "No ranks"
+
+ embed = discord.Embed(
+ title="Shop",
+ description=f"Choose from one of the categories below in order to shop for items \n\nBalance: **${balance:,}** \n\nRanks: **{names}**",
+ color=BOT_COLOR
+ )
+ view = ShopView(self.bot)
+ await interaction.response.edit_message(embed=embed, view=view)
+
+
+#BEGIN CODE FOR PROFILE VIEWING
+
+
+class Profile(commands.Cog):
+ def __init__(self, bot):
+ self.bot = bot
+ self.economy = Database(bot)
+
+
+ @app_commands.command()
+ @app_commands.describe(user='User whose profile you would like to view')
+ async def profile(
+ self,
+ interaction: discord.Interaction,
+ user: discord.Member
+ ):
+ "Show the profile for the given user"
+ user_id = user.id if user else interaction.user.id
+ profile = await self.economy.get_entry(user_id)
+ balance = profile[1]
+
+ cur = CONNECTION.cursor()
+ cur.execute("SELECT rank_name FROM profile WHERE user_id = %s ORDER BY rank_int DESC", (user_id,))
+ data = cur.fetchall()
+ if data:
+ names = ', '.join([str(i[0]) for i in data])
+
+ else:
+ names = "No ranks"
+
+ embed = discord.Embed(
+ title=f"Profile For - {await self.bot.fetch_user(user_id)}",
+ description=f"Below will show all economy information for this user",
+ color=BOT_COLOR
+ )
+
+ embed.add_field(name="Money Balance:", value=f"${balance:,}", inline=False)
+ embed.add_field(name="Ranks:", value=f"{names}", inline=False)
+ embed.set_thumbnail(url = user.avatar.url)
+ embed.set_footer(text=datetime.datetime.now(datetime.timezone.utc).strftime('%Y-%m-%d %H:%M:%S')+" UTC")
+ await interaction.response.send_message(embed=embed)
+
+
+ @app_commands.command()
+ async def shop(
+ self,
+ interaction: discord.Interaction
+ ):
+ "Shows the shop so that you can buy items"
+ user_id = interaction.user.id
+ profile = await self.economy.get_entry(user_id)
+ balance = profile[1]
+
+ cur = CONNECTION.cursor()
+ cur.execute("SELECT rank_name FROM profile WHERE user_id = %s ORDER BY rank_int DESC", (user_id,))
+ data = cur.fetchall()
+ if data:
+ names = ', '.join([str(i[0]) for i in data])
+
+ else:
+ names = "No ranks"
+
+ embed = discord.Embed(
+ title="Shop",
+ description=f"Choose from one of the categories below in order to shop for items \n\nBalance: **${balance:,}** \n\nRanks: **{names}**",
+ color=BOT_COLOR
+ )
+ view = ShopView(self.bot)
+ await interaction.response.send_message(embed=embed, view=view, ephemeral=True)
+
+
+async def setup(bot):
+ await bot.add_cog(Profile(bot)) \ No newline at end of file