async def award_take(self, message, is_award): server, channel, author = message.guild, message.channel, message.author split_message = message.content.split(" ") mode_text, mode_change = ("awarded", 1) if is_award else ("deducted", -1) if len(split_message) > 2: amount = split_message[1] if amount.isdigit(): amount = int(amount) user = Utils.get_user(server, split_message[2]) if user is not None: EconomyUtils.set_cash( server.id, user.id, EconomyUtils.get_cash(server.id, user.id) + amount * mode_change) await Utils.simple_embed_reply( channel, "[%s]" % str(author), "User `%s` was %s %d%s." % (str(user), mode_text, amount, EconomyUtils.currency)) else: given_role = Utils.get_role(server, ''.join(split_message[2])) users = [] if given_role is not None: for user in server.members: if given_role in user.roles: EconomyUtils.set_cash( server.id, user.id, EconomyUtils.get_cash(server.id, user.id) + amount * mode_change) users.append(user) if len(users) > 0: await Utils.simple_embed_reply( channel, "[%s]" % str(author), "Users with the role `%s` were %s %d%s." % (str(given_role), mode_text, amount, EconomyUtils.currency)) else: await Utils.simple_embed_reply( channel, "[Error]", "No users are equipped with that role.") else: await Utils.simple_embed_reply( channel, "[Error]", "Invalid user or role supplied.") else: await Utils.simple_embed_reply( channel, "[Error]", "Amount parameter is incorrect.") else: await Utils.simple_embed_reply( channel, "[Error]", "Insufficient parameters supplied.")
async def command_called(self, message, command): split_message = message.content.split(" ") server, channel, author = message.guild, message.channel, message.author if command is self.commands["Set Currency Command"]: if len(split_message) > 1: new_currency = split_message[1] self.config.write_data(new_currency, key="Currency") EconomyUtils.currency = new_currency await Utils.simple_embed_reply( channel, "[Set Currency]", "Currency has been set to `%s`." % new_currency) else: await Utils.simple_embed_reply( channel, "[Error]", "Currency parameter not supplied.") elif command is self.commands["Set Starting Balance Command"]: if len(split_message) > 1: starting_balance = split_message[1] if starting_balance.isdigit(): self.config.write_data(int(starting_balance), key="Starting Balance") await Utils.simple_embed_reply( channel, "[Success]", "Starting balance set to `%s`." % starting_balance) else: await Utils.simple_embed_reply( channel, "[Error]", "Starting balance command parameter is incorrect.") else: await Utils.simple_embed_reply( channel, "[Error]", "Starting balance command parameter not supplied.") elif command is self.commands["Balance Command"]: user = author if len(split_message) > 1: given_user = Utils.get_user(server, split_message[1]) if given_user is not None: user = given_user else: await Utils.simple_embed_reply(channel, "[Error]", "Invalid user supplied.") user_cash = EconomyUtils.get_cash(server.id, user.id) user_bank = EconomyUtils.get_bank(server.id, user.id) user_rank = EconomyUtils.get_rank(server.id, user.id) rank_text = Utils.add_number_abbreviation(user_rank) user_worth = user_cash + user_bank embed = discord.Embed(title=" [%s]" % str(user), description="Server Rank: %s" % str(rank_text), color=Utils.default_hex_color) embed.add_field(name="Cash", value=str(user_cash) + EconomyUtils.currency, inline=True) embed.add_field(name="Bank", value=str(user_bank) + EconomyUtils.currency, inline=True) embed.add_field(name="Net Worth", value=str(user_worth) + EconomyUtils.currency, inline=True) await channel.send(embed=embed) elif command is self.commands["Deposit Command"]: if len(split_message) > 1: deposit_amount = split_message[1] user_cash = EconomyUtils.get_cash(server.id, author.id) user_bank = EconomyUtils.get_bank(server.id, author.id) if user_cash != 0: if deposit_amount.isdigit(): deposit_amount = int(deposit_amount) if user_cash >= deposit_amount: EconomyUtils.set_cash(server.id, author.id, user_cash - deposit_amount) EconomyUtils.set_bank(server.id, author.id, user_bank + deposit_amount) await Utils.simple_embed_reply( channel, "[%s]" % str(author), "Deposited %s%s into your bank account." % (str(deposit_amount), EconomyUtils.currency)) else: await Utils.simple_embed_reply( channel, "[%s]" % str(author), "Sorry, but you don't have enough money to do that." ) elif deposit_amount == "all": EconomyUtils.set_cash(server.id, author.id, 0) EconomyUtils.set_bank(server.id, author.id, user_bank + user_cash) await Utils.simple_embed_reply( channel, "[%s]" % str(author), "Deposited %s%s into your bank account." % (str(user_cash), EconomyUtils.currency)) else: await Utils.simple_embed_reply( channel, "[Error]", "Amount parameter is incorrect.") else: await Utils.simple_embed_reply( channel, "[%s]" % str(author), "Sorry, but you don't have any money to deposit.") else: await Utils.simple_embed_reply( channel, "[Error]", "Amount command parameter not supplied.") elif command is self.commands["Withdraw Command"]: if len(split_message) > 1: withdraw_amount = split_message[1] user_cash = EconomyUtils.get_cash(server.id, author.id) user_bank = EconomyUtils.get_bank(server.id, author.id) if user_bank != 0: if withdraw_amount.isdigit(): withdraw_amount = int(withdraw_amount) if user_bank >= withdraw_amount: EconomyUtils.set_cash(server.id, author.id, user_cash + withdraw_amount) EconomyUtils.set_bank(server.id, author.id, user_bank - withdraw_amount) await Utils.simple_embed_reply( channel, "[%s]" % str(author), "Withdrew %s%s into cash." % (str(withdraw_amount), EconomyUtils.currency)) else: await Utils.simple_embed_reply( channel, "[%s]" % str(author), "Sorry, but you don't have enough money to do that." ) elif withdraw_amount == "all": EconomyUtils.set_bank(server.id, author.id, 0) EconomyUtils.set_cash(server.id, author.id, user_cash + user_bank) await Utils.simple_embed_reply( channel, "[%s]" % str(author), "Withdrew %s%s into cash." % (str(user_bank), EconomyUtils.currency)) else: await Utils.simple_embed_reply( channel, "[Error]", "Amount parameter is incorrect.") else: await Utils.simple_embed_reply( channel, "[%s]" % str(author), "Sorry, but you don't have any money to withdraw.") else: await Utils.simple_embed_reply( channel, "[Error]", "Amount command parameter not supplied.") elif command is self.commands["Give Command"]: if len(split_message) > 2: user = Utils.get_user(server, split_message[1]) if user is not None: author_cash = EconomyUtils.get_cash(server.id, author.id) user_cash = EconomyUtils.get_cash(server.id, user.id) if split_message[2].isdigit(): give_amount = int(split_message[2]) if author_cash < int(split_message[2]): return await Utils.simple_embed_reply( channel, "[Error]", "You don't have enough cash to do that.") elif split_message[2] == "all": give_amount = EconomyUtils.get_cash( server.id, author.id) else: return await Utils.simple_embed_reply( channel, "[Error]", "Amount parameter is incorrect.") EconomyUtils.set_cash(server.id, author.id, author_cash - give_amount) EconomyUtils.set_cash(server.id, user.id, user_cash + give_amount) await Utils.simple_embed_reply( channel, "[Success]", "You gave %s %s%s." % (str(user), str(give_amount), EconomyUtils.currency)) else: await Utils.simple_embed_reply(channel, "[Error]", "Invalid user supplied.") else: await Utils.simple_embed_reply( channel, "[Error]", "Insufficient parameters supplied.") # TODO: Optimize this? elif command is self.commands["Leaderboard Command"]: page = 1 if len(split_message) > 1: page = split_message[1] if page.isdigit(): page = int(page) else: return await Utils.simple_embed_reply( channel, "[Error]", "Page number parameter is incorrect.") user_rank_order = EconomyUtils.database_execute( "SELECT user FROM '%s' ORDER BY bank + cash DESC" % server.id) max_page = int((len(user_rank_order) + 9) // 10) if page <= max_page: if (len(user_rank_order) + 10) / 10 >= page: embed = discord.Embed(title="[%s Leaderboard]" % str(server), color=Utils.default_hex_color) for i in range(min(10, len(user_rank_order))): user_rank = (page - 1) * 10 + i rank_text = Utils.add_number_abbreviation(user_rank + 1) if len(user_rank_order) <= user_rank: break user_id = user_rank_order[user_rank] user = Utils.get_user_by_id(server, user_id) user_worth = EconomyUtils.get_bank( server.id, user_id) + EconomyUtils.get_cash( server.id, user_id) embed.add_field( name="%s : %s" % (str(user), rank_text), value=str(user_worth) + EconomyUtils.currency, inline=False) embed.set_footer(text="Page %d/%d" % (page, max_page)) await channel.send(embed=embed) else: await Utils.simple_embed_reply(channel, "[Error]", "Page number is too high.") else: await Utils.simple_embed_reply( channel, "[Error]", "You can only view a page between 1 and %d." % max_page) elif command is self.commands["Bank Command"]: embed = discord.Embed( description="**The bank never goes Bankrupt!**", color=Utils.default_hex_color) # Remove this if? if server.icon is None: embed.set_author(name="%s Bank" % str(server), icon_url=author.default_avatar_url) else: embed.set_author( name="%s Bank" % str(server), icon_url="https://media.discordapp.net/icons/%s/%s.jpg" % (server.id, server.icon)) embed.set_thumbnail(url=self.config.get_data("Bank Icon URL")) total_balance = int( EconomyUtils.database_execute( "SELECT SUM(bank + cash) FROM `%s`" % server.id)[0]) embed.add_field(name="Balance:", value=str(total_balance) + EconomyUtils.currency, inline=True) embed.add_field(name="Interest:", value=str(self.config.get_data("Interest Rate"))) embed.set_footer(text="%s" % str(time.strftime("%m-%d-%Y"))) await channel.send(embed=embed) elif command is self.commands["Award Command"]: await self.award_take(message, True) elif command is self.commands["Take Command"]: await self.award_take(message, False)
async def command_called(self, message, command): split_message = message.content.split(" ") server, channel, author = message.guild, message.channel, message.author if command is self.commands["Claim Command"]: if len(split_message) > 2: # Try and get a user from the passed arguments user = Utils.get_user(server, split_message[1]) # Check if a user was found (arguments were valid) if user is not None: # Check if the author is trying to claim themselves if user.id != author.id: amount = split_message[2].lower() if amount == "all": amount = str( EconomyUtils.get_cash(server.id, author.id)) # Check if the "Amount" parameter is a digit so it can be used correctly later if amount.isdigit(): amount = int(amount) user_cash = EconomyUtils.get_cash( server.id, author.id) # Calculate the waifu price -> DB Waifu Price + Claim Addition Amount waifu_price = int( self.waifus_db.execute( "SELECT price FROM '%s' WHERE user_id='%s'" % (server.id, user.id))[0]) + int( self.config.get_data( "Claim Addition Amount")) # Check if the user has enough cash if user_cash >= amount: # Check if the given argument is at least the minimum waifu price if amount >= waifu_price: # Set the user's (waifu) owner's ID in the DB self.waifus_db.execute( "UPDATE '%s' SET owner_id='%s', price='%d' WHERE user_id='%s'" % (server.id, author.id, amount, user.id)) # Deduct from the user's cash the amount they spent EconomyUtils.set_cash( server.id, user.id, user_cash - amount) # Tell them it was a successful waifu claim await Utils.simple_embed_reply( channel, "[Waifu]", "You claimed %s for %d%s." % (str(user), amount, EconomyUtils.currency)) else: await Utils.simple_embed_reply( channel, "[Error]", "You must pay at least %d to claim them!" % waifu_price) else: await Utils.simple_embed_reply( channel, "[Error]", "You don't have enough cash to do that.") else: await Utils.simple_embed_reply( channel, "[Error]", "Invalid amount supplied.") else: await Utils.simple_embed_reply( channel, "[Error]", "You cannot claim yourself.") else: await Utils.simple_embed_reply(channel, "[Error]", "Invalid user supplied.") else: await Utils.simple_embed_reply( channel, "[Error]", "Insufficient parameters supplied.") elif command is self.commands["Waifu Info Command"]: # Get the user this command is being called on - the author by default user = author if len(split_message) > 1: given_user = Utils.get_user(server, split_message[1]) if given_user is not None: user = given_user else: return await Utils.simple_embed_reply( channel, "[Error]", "Invalid user supplied.") # Start a new embed for the info to be displayed on embed = discord.Embed(title="[Waifu Info]", description="Waifu info for %s" % str(user), color=Utils.default_hex_color) # Create text of the user's waifus from the DB waifus = ''.join([ str(Utils.get_user(server, i)) + "\n" for i in self.waifus_db.execute( "SELECT user_id FROM '%s' WHERE owner_id='%s'" % (server.id, user.id)) ])[:-1] waifus = "None" if waifus == '' else waifus # Grab the price and owner of the user from the Db gifts = self.config.get_data("Gifts") # Get gift names from gifts DB (Table names) for gift and pocket gifts text db_gift_names = [gift_name for gift_name in gifts] # db_gift_names = self.gifts_db.execute("SELECT name FROM sqlite_master WHERE type='table'") # ---------- GIFT TEXT ---------- gifts_text = "" pocket_text = "" for gift_name in db_gift_names: # Get the number of gifts of that type the user has gift_amount, pocket_amount = tuple( self.gifts_db.execute( "SELECT amount, pocket_amount FROM '%s' WHERE server_id='%s' AND user_id='%s'" % (gift_name, server.id, user.id))) # If they have at least one of that gift, add it to the gift text if gift_amount > 0: gifts_text += "%s x%d" % (gifts[gift_name]["Symbol"], gift_amount) if pocket_amount > 0: pocket_text += "%s x%d" % (gifts[gift_name]["Symbol"], pocket_amount) # If the user doesn't have any gifts, set the text to "None" gifts_text = "None" if gifts_text == "" else gifts_text # If the user doesn't have any pocket gifts, set the text to "None" pocket_text = "None" if pocket_text == "" else pocket_text # Grab more info for the embed from the DB price, claimed_by, affinity, changes_of_heart, divorces = tuple( self.waifus_db.execute( "SELECT price, owner_id, affinity, changes_of_heart, divorces FROM '%s' WHERE user_id='%s'" % (server.id, user.id))) # Grab user info - it will be "None" if it doesn't apply claimed_by_user = Utils.get_user(server, str(claimed_by)) affinity_user = Utils.get_user(server, str(affinity)) # Generate the rest of the embed embed.add_field(name="Claimed By", value=str(claimed_by_user), inline=True) embed.add_field(name="Price", value=price, inline=True) embed.add_field(name="Divorces", value=divorces, inline=True) embed.add_field(name="Gifts", value=gifts_text, inline=False) embed.add_field(name="Pocket", value=pocket_text, inline=False) embed.add_field(name="Affinity", value=str(affinity_user), inline=True) embed.add_field(name="Changes of Heart", value=changes_of_heart, inline=True) embed.add_field(name="Waifus", value=waifus, inline=True) # Send the embed as the reply await channel.send(embed=embed) # TODO: Delete marriage role elif command is self.commands["Divorce Command"]: if len(split_message) > 1: # Try and get a user from the passed arguments user = Utils.get_user(server, split_message[1]) # Check if a user was found (arguments were valid) if user is not None: # Get the message author's waifus from DB waifus = self.waifus_db.execute( "SELECT user_id FROM '%s' WHERE owner_id='%s'" % (server.id, author.id)) # Check if the passed user is actually one of the author's waifus if user.id in waifus: # Calculate how much each user will get back from the divorce waifu_cost_split = round( self.waifus_db.execute( "SELECT price FROM '%s' WHERE user_id='%s' LIMIT 1" % (server.id, user.id))[0] / 2) # Grab cash values of each user and update the balance with the divorce money author_cash = EconomyUtils.get_cash( server.id, author.id) user_cash = EconomyUtils.get_cash(server.id, user.id) EconomyUtils.set_cash(server.id, user.id, user_cash + waifu_cost_split) EconomyUtils.set_cash(server.id, author.id, author_cash + waifu_cost_split) # Remove the owner from the user self.waifus_db.execute( "UPDATE '%s' SET owner_id=NULL WHERE user_id='%s'" % (server.id, user.id)) # Increase author divorce count self.waifus_db.execute( "UPDATE '%s' SET divorces=divorces+1 WHERE user_id='%s'" % (server.id, author.id)) # Let the user know it was a successful divorce and how much they got back await Utils.simple_embed_reply( channel, "[Divorce]", "You divorced %s and received %d back!" % (str(user), waifu_cost_split)) else: await Utils.simple_embed_reply( channel, "[Error]", "That is not one of your waifus.") command.reset_cool_down(author.id) else: await Utils.simple_embed_reply(channel, "[Error]", "Invalid user supplied.") command.reset_cool_down(author.id) else: await Utils.simple_embed_reply( channel, "[Error]", "Insufficient parameters supplied.") command.reset_cool_down(author.id) elif command is self.commands["Gifts Command"]: # Config gifts_per_page = 6 # Default 1st page, or set it as the passed argument if it exists and is valid page = 1 if len(split_message) > 1: if split_message[1].isdigit(): page = int(split_message[1]) # There is no 0th page, but this is a valid digit - so error if it's 0 if page == 0: return await Utils.simple_embed_reply( channel, "[Error]", "Page parameter is incorrect.") else: return await Utils.simple_embed_reply( channel, "[Error]", "Page parameter is incorrect.") # Start the embed for returning embed = discord.Embed(title="[Waifu Gifts]", description="Gifts for your waifus!", color=Utils.default_hex_color) # Grab all the gifts from the config gifts = self.config.get_data("Gifts") # Calculate the page count based on gift count and gifts per page page_count = (len(gifts) + gifts_per_page - 1) // gifts_per_page # Check if the page for display exists if page <= page_count: # Put the gift names into a list from each gift gift_names = [gift for gift in gifts] # Loop through gifts_per_page or the remaining number of gifts times for gift_number in range( min(gifts_per_page, len(gifts) - (page - 1) * gifts_per_page)): # Get the gift name and then the gift itself gift_name = gift_names[gifts_per_page * (page - 1) + gift_number] gift = gifts[gift_name] # Add found info to the embed as a new field embed.add_field(name="%s - %s" % (gift["Symbol"], gift_name), value=gift["Cost"], inline=True) # Set page number info footer embed.set_footer(text="%d/%d" % (page, page_count)) # Send the created embed as a reply await channel.send(embed=embed) else: await Utils.simple_embed_reply(channel, "[Error]", "That page doesn't exist.") elif command is self.commands["Gift Command"]: if len(split_message) > 2: user = Utils.get_user(server, split_message[1]) if user is not None: if user is not author: # Build the given gift name (since it caN CONTAIN spaces) # ["A", "goOD", "gIfT"] -> "a good gift" given_gift_name = (' '.join(split_message[2:])).lower() raw_gifts = self.config.get_data("Gifts") if given_gift_name in [ gift_name.lower() for gift_name in raw_gifts ]: for gift_name in raw_gifts: # Check if the lowercase gift name is the same as the lowercase given gift name if gift_name.lower() == given_gift_name: gift = raw_gifts[gift_name] author_cash = EconomyUtils.get_cash( server.id, author.id) if author_cash >= gift["Cost"]: # Add one to gift counter in DB self.gifts_db.execute( "UPDATE '%s' SET amount=amount+1 WHERE server_id='%s' AND user_id='%s'" % (gift_name, server.id, user.id)) # Update author cash EconomyUtils.set_cash( server.id, author.id, author_cash - gift["Cost"]) # Let the author know the user got the gift await Utils.simple_embed_reply( channel, "[Gift]", "%s was gifted **%s**." % (str(user), "%s %s" % (gift_name, gift["Symbol"]))) break else: await Utils.simple_embed_reply( channel, "[Error]", "You don't have enough cash to do that." ) else: await Utils.simple_embed_reply( channel, "[Error]", "Gift not found.") else: await Utils.simple_embed_reply( channel, "[Error]", "You cannot give yourself a gift.") else: await Utils.simple_embed_reply(channel, "[Error]", "Invalid user supplied.") else: await Utils.simple_embed_reply( channel, "[Error]", "Insufficient parameters supplied.") elif command is self.commands["Affinity Command"]: if len(split_message) > 1: # Try and get a user from what was passed user = Utils.get_user(server, split_message[1]) # Check if a valid user was given if user is not None: if user is not author: current_affinity = self.waifus_db.execute( "SELECT affinity FROM '%s' WHERE user_id='%s'" % (server.id, author.id))[0] if current_affinity != user.id: # If the current author affinity is not Null, then increase the changes of heart if current_affinity is not None: self.waifus_db.execute( "UPDATE '%s' SET changes_of_heart=changes_of_heart+1 WHERE user_id='%s'" % (server.id, author.id)) # Set the affinity in the DB self.waifus_db.execute( "UPDATE '%s' SET affinity='%s' WHERE user_id='%s'" % (server.id, user.id, author.id)) # Let the user know the affinity was set await Utils.simple_embed_reply( channel, "[Affinity]", "Your affinity is now set towards %s." % str(user)) else: await Utils.simple_embed_reply( channel, "[Error]", "You already have your affinity set towards %s." % str(user)) else: await Utils.simple_embed_reply( channel, "[Error]", "You cannot set your affinity to yourself.") else: await Utils.simple_embed_reply(channel, "[Error]", "Invalid user supplied.") elif command is self.commands["Waifu Leaderboard Command"]: # Grab ALL user IDs user_ids = self.waifus_db.execute("SELECT user_id FROM '%s'" % server.id) # Get Owner IDs (basically 1 person from each couple) owner_ids = self.waifus_db.execute( "SELECT owner_id FROM '%s' WHERE owner_id IS NOT NULL" % server.id) # If there's at least one couple if len(owner_ids) > 0: gifts = self.config.get_data("Gifts") # User ID : Gift Value gift_values = {} # Populate the dict with user IDs for user_id in user_ids: gift_values[user_id] = 0 # Calculate gift values for each owner for gift_name in gifts: db_data = self.gifts_db.execute( "SELECT user_id, amount FROM '%s' WHERE server_id='%s' AND amount IS NOT 0" % (gift_name, server.id)) # If there was data found if db_data: db_data = [[db_data[i], db_data[i + 1]] for i in range(0, len(db_data), 2)] # Add up each gift price for each user for user_info in db_data: gift_values[user_info[ 0]] += gifts[gift_name]["Cost"] * user_info[1] # Owner ID : Total Value owner_total_values = {} # Add up all the parameters to calculate total value for owner_id in owner_ids: owner_affinity = tuple( self.waifus_db.execute( "SELECT affinity FROM '%s' WHERE user_id='%s'" % (server.id, owner_id))) # Get the other ID of the person in the couple, their value and affinity waifu_id, waifu_value, waifu_affinity = tuple( self.waifus_db.execute( "SELECT user_id, price, affinity FROM '%s' WHERE owner_id='%s'" % (server.id, owner_id))) total_value = waifu_value + gift_values[waifu_id] # Add 10% to the value if both users have their affinities set to each other if waifu_affinity == owner_id and owner_affinity == waifu_id: owner_total_values[owner_id] = int(total_value * 1.1) else: owner_total_values[owner_id] = total_value # Get the top ten values by sorting the keys in the dictionary, reversing it and grabbing 10 or the max top_ten = sorted(owner_total_values.items(), key=lambda x: x[1] )[::-1][:min(len(owner_total_values), 11)] embed = discord.Embed(title=" [Waifu Leaderboard]", color=Utils.default_hex_color) for i in range(len(top_ten)): # Get the info from the current spot in the top 10 owner_id, value = top_ten[i] # Grab the owner's affinity owner_affinity = self.waifus_db.execute( "SELECT affinity FROM '%s' WHERE user_id='%s'" % (server.id, owner_id))[0] # Get the other ID of the person in the couple and their affinity waifu_id, waifu_affinity = tuple( self.waifus_db.execute( "SELECT user_id, affinity FROM '%s' WHERE owner_id='%s'" % (server.id, owner_id))) owner_user = Utils.get_user_by_id(server, owner_id) waifu_user = Utils.get_user_by_id(server, waifu_id) desc = "**%s** - Claimed by **%s**\n" % (str(waifu_user), str(owner_user)) if waifu_affinity == owner_id and owner_affinity == waifu_id: desc += "... and %s likes %s too!" % (str(waifu_user), str(owner_user)) else: other_user = Utils.get_user_by_id( server, waifu_affinity) desc += "... but %s likes %s!" % (str(waifu_user), str(other_user)) embed.add_field(name="%s - %s%s" % (Utils.add_number_abbreviation(i + 1), value, EconomyUtils.currency), value=desc) await channel.send(embed=embed) else: await Utils.simple_embed_reply( channel, "[Waifu Leaderboard]", "No waifus are currently claimed!") elif command is self.commands["Delete Waifu Leaderboard Command"]: # Reset all waifu info self.waifus_db.execute( "UPDATE '%s' SET owner_id=NULL, affinity=NULL, divorces=0, changes_of_heart=0, price='%d'" % (server.id, self.config.get_data("Default Claim Amount"))) # Pocket all gifts for gift_name in self.config.get_data("Gifts"): self.gifts_db.execute( "UPDATE '%s' SET pocket_amount=pocket_amount+amount, amount=0" % gift_name) # Reply await Utils.simple_embed_reply( channel, "[Waifu Leaderboard]", "The leaderboard has been deleted.")