Beispiel #1
0
	async def stat(self, ctx, member: discord.Member = None):
		msg = await ctx.send("processing data...")
		if member:
			if member.bot:
				return await msg.edit(content=f"Very funny, you know <@!{member.id}> is a bot.")
			user = db.user_db.fetch_user(member.id, ctx.guild.id)
			if not user:
				return await msg.edit(content=f"<@!{member.id}> exists? Never heard of them, hold on.\nPlease try again later")
			data_parser = UserData(user)
			await msg.edit(content="fetching user data...")

			embed = discord.Embed(
				colour=embed_colour
			)

			embed.add_field(name="User", value=f"Balance: **{data_parser.get_user_money():,} Σ**\nPrestige **Rank {data_parser.get_prestige()+1}** [{1 if data_parser.get_prestige() == 0 else (1+(data_parser.get_prestige()*0.75))}x Reward Multiplier]")
			embed.add_field(name="Others", value=f"ServerID: `{data_parser.get_id()[0]}`\nUserID: `{data_parser.get_id()[1]}`")
			embed.set_author(name=f"{member}", icon_url=member.display_avatar.url)
			return await msg.edit(content=None, embed=embed)

		#return await ctx.send(f"Good job lmao. You broke the system")
		user = db.user_db.fetch_user(ctx.author.id, ctx.guild.id)
		if not user:
			return await msg.edit(content=f"It appears that you don\'t exist to me. (No offense)\nPlease try again later")
		data_parser = UserData(user)
		await msg.edit(content="fetching user data...")

		embed = discord.Embed(
			colour=embed_colour
		)

		embed.add_field(name="User", value=f"Balance: **{data_parser.get_user_money():,} Σ**\nPrestige Rank **{data_parser.get_prestige()+1}** [{0 if data_parser.get_prestige() == 0 else (1+(data_parser.get_prestige()*0.75))}x Reward Multiplier]")
		embed.add_field(name="Others", value=f"ServerID: `{data_parser.get_id()[0]}`\nUserID: `{data_parser.get_id()[1]}`")
		embed.set_author(name=f"{ctx.author}", icon_url=ctx.author.display_avatar.url)
		return await msg.edit(content=None, embed=embed)
Beispiel #2
0
	async def prestige(self, ctx):
		msg = await ctx.send("processing data...")
		user = db.user_db.fetch_user(ctx.author.id, ctx.guild.id)
		if not user: return await msg.edit(content=f"It appears that you don\'t exist to me. (No offense)\nPlease try again later")
		data_parser = UserData(user)

		prestige_cost = round(100000 * ((data_parser.get_prestige()+1)*1.25))

		embed = discord.Embed(
			title="Prestige Info",
			description=f"When you prestige:\n1. Rewards multiplier will be increased by 0.75\n2. Flex more about how no life you are\n",
			colour=embed_colour
		)
		embed.add_field(name="Current Rank", value=f"**Rank {data_parser.get_prestige()+1}**")
		embed.add_field(name="Cost", value=f"**{prestige_cost:,} Σ**")	
		user_money = data_parser.get_user_money()
		if user_money < prestige_cost:
			embed.description += f"Looks like you don\'t have enough **Σ** to prestige, try again when you have **{prestige_cost:,} Σ**!"
			return await msg.edit(content=None, embed=embed)
		
		embed.description += f"You are eligible to prestige to Rank {data_parser.get_prestige()+2}, react with ☑️ to confirm ranking up or react with 🇽 to decline."
		await msg.edit(content=None, embed=embed)
		def check(reaction, user):
			return user == ctx.author and reaction.message.id == msg.id and str(reaction.emoji) in ["☑️", "🇽"]
		for reaction in ["☑️", "🇽"]: await msg.add_reaction(reaction)
		try:
			reaction, user = await self.client.wait_for("reaction_add", timeout=60, check=check)
		except asyncio.TimeoutError:
			return await msg.edit(content=f"You did not react within a 60s timespan, terminating prestige")

		await msg.clear_reactions()
		if str(reaction.emoji) == "🇽":
			return await msg.edit(content="Declined Rank Up", embed=None)

		await msg.edit(content="processing rank", embed=None)
		success = db.user_db.update_user_set_fields(
			{"_id": data_parser.user_data['_id']},
			[
				("money", user_money - prestige_cost),
				("prestige", data_parser.get_prestige()+1)
			]
		)

		if not success: return await msg.edit(content=f"Something went wrong while ranking up, try again later")

		embed = discord.Embed(
			title=f"Ranked Up Successfully",
			description=f"You have ranked up to **Rank {data_parser.get_prestige()+2}**\nYour new rewards multiplier is {1+(0.75*(data_parser.get_prestige()+1))}x",
			colour=embed_colour
		)

		return await msg.edit(content=None, embed=embed)
Beispiel #3
0
    async def reset_bank(self, ctx):
        msg = await ctx.send("processing...")
        user = db.user_db.fetch_user(ctx.author.id, ctx.guild.id)
        if not user:
            return await msg.edit(
                content=
                f"It appears that you don\'t exist to me. (No offense)\nPlease try again later"
            )
        data_parser = UserData(user)

        embed = discord.Embed(
            title="Bank Reset",
            description=
            f"Are you sure you want to reset your bank money?\nNote: interest will stay\n",
            colour=embed_colour)

        await msg.edit(content=None, embed=embed)

        def check(reaction, user):
            return user == ctx.author and reaction.message.id == msg.id and str(
                reaction.emoji) in ["☑️", "🇽"]

        for reaction in ["☑️", "🇽"]:
            await msg.add_reaction(reaction)
        try:
            reaction, user = await self.client.wait_for("reaction_add",
                                                        timeout=60,
                                                        check=check)
        except asyncio.TimeoutError:
            return await msg.edit(
                content=
                f"You did not react within a 60s timespan, terminating prestige"
            )

        await msg.clear_reactions()
        if str(reaction.emoji) == "🇽":
            return await msg.edit(content="Cancelled Bank Reset", embed=None)

        await msg.edit(content="processing reset...", embed=None)
        success = db.user_db.update_user_set_fields(
            {"_id": data_parser.user_data['_id']},
            [("bank.money", 0), ("bank.last_seen", int(time.time()))])

        if not success:
            return await msg.edit(
                content=
                f"Something went wrong while resetting your bank money, try again later"
            )

        embed = discord.Embed(
            title=f"Bank Reset Successful",
            description=f"Your bank reset have been successful!",
            colour=embed_colour)

        return await msg.edit(content=None, embed=embed)
Beispiel #4
0
async def process_reward(ctx, reward_data):  #pylint: disable=E0213

    msg = await ctx.send(f"fetching your user data...")  #pylint: disable=E1101
    user = db.user_db.fetch_user(ctx.author.id, ctx.guild.id)  #pylint: disable=E1101

    if not user:
        return await msg.edit(
            content=
            f"<@!{ctx.author.id}>, failed to fetch your user data, try again later."
        )  #pylint: disable=E1101

    data_parser = UserData(user)
    await msg.edit(content="processing reward...")

    _type, _period, _prize = reward_data

    process_results = process_user_rewards(data_parser, reward_data)

    if process_results["eligible"]:
        if process_results["update_status"]:
            _prize = process_results["prize"]
            embed = Embed(description=f"**{_type.capitalize()} Reward**",
                          colour=embed_colour)

            embed.set_author(name=f"{ctx.author}",
                             icon_url=ctx.author.display_avatar.url)  #pylint: disable=E1101
            embed.add_field(name="Reward",
                            value=f"**{_prize} Σ**",
                            inline=True)
            embed.add_field(name="Next Reward",
                            value=f"{process_results['next_reward']}",
                            inline=True)
            return await msg.edit(content=None, embed=embed)

        return await msg.edit(
            content=
            "Something went wrong while redeeming the reward...\nTry again later."
        )

    embed = Embed(
        description=
        f"<@!{data_parser.get_id()[1]}>, you already collected this,\nplease wait `{process_results['next_reward']}`",
        colour=embed_colour)
    return await msg.edit(content=None, embed=embed)
Beispiel #5
0
	async def leaderboard(self, ctx):
		msg = await ctx.send("fetching user data...")
		users = db.user_db.fetch_user_of(ctx.guild.id)
		if not bool(len(users)):
			return await msg.edit(content=f"And I thought this server was empty! How am I here?\nPlease try again later")
		await msg.edit(content="processing user data...")
		lb = ""
		users = sorted(users, key=lambda k: k["money"], reverse=True)
		ranking = 0
		for user in users:
			ranking += 1
			parser = UserData(user)
			lb += f"{ranking}) <@!{parser.get_id()[1]}> - **{parser.get_user_money():,} Σ**\n"

			if ranking == 10: break

		embed = discord.Embed(
			description=lb,
			colour=embed_colour
		)

		embed.set_author(name=f"Leaderboard")
		return await msg.edit(content=None, embed=embed)
Beispiel #6
0
    async def coinflip(self, ctx, heads_or_tails=None, bet=None):

        try:
            bet = int(bet)
            if bet == 0: bet = None
            if bet < 0:
                return await ctx.send(
                    content=
                    f"No no, you think I forgot about checking whether the bet is negative?"
                )
        except ValueError:
            if bet != None:
                return await ctx.send(
                    content=
                    f"What does betting `{bet}` even mean? Does `{bet}` look like an integer to you?"
                )
        except TypeError:
            pass

        msg = await ctx.send("flipping coin...")
        probability = random.randrange(452, 558 + 1)
        tails_percentage, heads_percentage, heads_threshold = f"{100 - (probability/10)}%", f"{probability/10}%", probability / 1000
        coinflip_result = random.random()
        result = Coinflip.HEADS
        if coinflip_result > heads_threshold:
            result = Coinflip.TAILS

        embed = discord.Embed(
            description=
            f"{tails_percentage} of flipping tails\n{heads_percentage} of flipping heads",
            colour=embed_colour)
        embed.set_author(name="Coinflip")
        embed.add_field(name="Result", value=result.value, inline=True)

        if not heads_or_tails and not bet:
            return await msg.edit(content=None, embed=embed)
        await msg.edit(content="doing checks...")

        if not heads_or_tails.capitalize() in [
                possibility.value for possibility in Coinflip
        ]:
            return await msg.edit(
                content=
                f"`{heads_or_tails.capitalize()}` is neither any of the following: {', '.join(map(lambda x: f'`{x}`', [result.value for result in Coinflip]))}"
            )
        guess = {
            True: "correct",
            False: "wrong"
        }.get(heads_or_tails.capitalize() == result.value)
        embed.description = f"{embed.description}\nYour guess was {guess}!"
        embed.add_field(name="Guess",
                        value=heads_or_tails.capitalize(),
                        inline=True)
        if not bet: return await msg.edit(content=None, embed=embed)

        user = db.user_db.fetch_user(ctx.author.id, ctx.guild.id)
        if not user:
            return await msg.edit(
                content=
                f"Hmm... somehow you don\'t exist to me, try again later!")
        user_parser = UserData(user)
        user_balance = user_parser.get_user_money()

        if user_balance < bet:
            return await msg.edit(
                content=
                f"Your user balance is **{user_balance:,} Σ**!\nYou cannot possibly bet more than you have!"
            )

        new_balance, win_indicator = {
            "correct": (user_balance + bet, f"\nYou won **{bet:,} Σ**"),
            "wrong": (user_balance - bet, f"\nYou lost **{bet:,} Σ**")
        }.get(guess)
        success = {
            "correct": user_parser.update_user_money(new_balance),
            "wrong": user_parser.update_user_money(new_balance)
        }.get(guess)

        embed.description += win_indicator
        embed.add_field(name="Balance",
                        value=f"**{new_balance:,} Σ**",
                        inline=True)
        return await msg.edit(content=None, embed=embed)
Beispiel #7
0
    async def would_you_rather(self, ctx):

        msg = await ctx.send("fetching question...")

        # START SCRAPE #
        result = requests.get("http://either.io/")
        src = result.content
        soup = BeautifulSoup(src, 'html.parser')

        containers = soup.findAll("div", {"class": "result"})[2:4]

        blue_option = containers[0].findAll("span",
                                            {"class": "option-text"})[0].text
        red_option = containers[1].findAll("span",
                                           {"class": "option-text"})[0].text
        blue_count = int(containers[0].findAll(
            "span", {"class", "count"})[0].text.replace(",", ""))
        red_count = int(containers[1].findAll(
            "span", {"class", "count"})[0].text.replace(",", ""))

        more_info = soup.find("p", {"class": "more-info"}).text
        if len(more_info) == 0: more_info = "No info"
        #  END  SCRAPE #

        answer = None
        if blue_count > red_count: answer = WYR_Answers.BLUE
        elif blue_count < red_count: answer = WYR_Answers.RED
        else:
            return await ctx.send(
                f"{ctx.author.name}, please try again.\nThere was no correct answer for the Would You Rather question."
            )

        await msg.edit(content=f"formatting question...")
        embed = discord.Embed(
            title=f"Would You Rather",
            description=
            f"<@!{ctx.author.id}>, guess which one most people chose.\n🟦 {blue_option}\n\n🟥 {red_option}\n\nReact with 🟦 or 🟥 to choose\n\nReact with 🇽 to cancel",
            colour=embed_colour)

        embed.add_field(name="More Info", value=f"{more_info}")
        embed.set_author(name=f'{ctx.author}',
                         icon_url=ctx.author.display_avatar.url)
        await msg.edit(content=None, embed=embed)
        reactions = ["🟦", "🟥", "🇽"]
        for reaction in reactions:
            await msg.add_reaction(reaction)
        chosen = None

        def check(reaction, user):
            return user == ctx.author and reaction.message.id == msg.id

        while True:
            try:
                reaction, user = await self.client.wait_for("reaction_add",
                                                            timeout=60,
                                                            check=check)
                if str(reaction.emoji) == "🟦": chosen = WYR_Answers.BLUE
                elif str(reaction.emoji) == "🟥": chosen = WYR_Answers.RED
                elif str(reaction.emoji) == "🇽":
                    await msg.clear_reactions()
                    return await msg.edit(
                        content=f"Question has been terminated", embed=None)
                if str(reaction.emoji) in ["🟦", "🟥"]: break
                await msg.remove_reaction(reaction, user)
            except asyncio.TimeoutError:
                await msg.clear_reactions()
                return await msg.edit(
                    content=
                    f"{ctx.author} has taken too long to respond, question has been terminated.",
                    embed=None)

        await msg.clear_reactions()

        embed = discord.Embed(
            title=f"Would You Rather",
            description=
            f"🟦 {blue_option}: {blue_count:,}\n\n🟥 {red_option}: {red_count:,}\n",
            colour=embed_colour)
        embed.add_field(name="Answer", value=f"{answer.value}", inline=True)
        embed.add_field(name="Guess", value=f"{chosen.value}", inline=True)
        embed.set_author(name=f"{ctx.author}",
                         icon_url=ctx.author.display_avatar.url)
        if chosen == answer:
            money = random.randint(25, 50)
            user = db.user_db.fetch_user(ctx.author.id, ctx.guild.id)
            if not user:
                return await msg.edit(
                    content=
                    f"Hmm... somehow you don\'t exist to me, try again later!")
            user_parser = UserData(user)
            user_balance = user_parser.get_user_money()
            new_balance = user_balance + money

            update_success = user_parser.update_user_money(new_balance)
            if not update_success:
                return await msg.edit(
                    content=
                    f"Something went wrong while crediting your account, try again later",
                    embed=None)

            embed.description = f"{embed.description}\nYou were correct! You earned **{money} Σ**"
            embed.add_field(name="Balance", value=f"**{new_balance:,} Σ**")
        else:
            embed.description = f"{embed.description}\nYou were wrong! Better luck next time!"

        return await msg.edit(content=None, embed=embed)
Beispiel #8
0
    async def dice(self, ctx, guess=None, bet=None):

        try:
            bet = int(bet)
            if bet == 0: bet = None
            if bet < 0:
                return await ctx.send(
                    content=
                    f"No no, you think I forgot about checking whether the bet is negative?"
                )
        except ValueError:
            if bet != None:
                return await ctx.send(
                    content=
                    f"What does betting `{bet}` even mean? Does `{bet}` look like an integer to you?"
                )
        except TypeError:
            pass

        msg = await ctx.send("rolling dice...")
        result = random.randint(1, 6)

        embed = discord.Embed(
            description=f"1 in 6 chance for rolling any number",
            colour=embed_colour)
        embed.set_author(name="Dice")
        embed.add_field(name="Result", value=f"**{result}**", inline=True)

        if not guess and not bet:
            return await msg.edit(content=None, embed=embed)
        await msg.edit(content="doing checks...")

        try:
            guess = int(guess)
        except ValueError:
            return await msg.edit(
                content=
                f"Your guess, `{guess}`, isn\'t a number at all, this is merely a standard dice where you can choose 1 to 6"
            )
        if not (guess in range(1, 6 + 1)):
            return await msg.edit(
                content=
                f"Your guess, `{guess}`, is not within 1 to 6, I\'m sure you know how a standard dice work"
            )
        user_correct = {True: "correct", False: "wrong"}.get(guess == result)
        embed.description = f"{embed.description}\nYour guess was {user_correct}!"
        embed.add_field(name="Guess", value=f"**{guess}**", inline=True)
        if not bet: return await msg.edit(content=None, embed=embed)

        user = db.user_db.fetch_user(ctx.author.id, ctx.guild.id)
        if not user:
            return await msg.edit(
                content=
                f"Hmm... somehow you don\'t exist to me, try again later!")
        user_parser = UserData(user)
        user_balance = user_parser.get_user_money()

        if user_balance < bet:
            return await msg.edit(
                content=
                f"Your user balance is **{user_balance:,} Σ**!\nYou cannot possibly bet more than you have!"
            )

        new_balance, win_indicator = {
            "correct": (user_balance + bet, f"\nYou won **{bet:,} Σ**"),
            "wrong": (user_balance - bet, f"\nYou lost **{bet:,} Σ**")
        }.get(user_correct)
        success = {
            "correct": user_parser.update_user_money(new_balance),
            "wrong": user_parser.update_user_money(new_balance)
        }.get(guess)

        embed.description += win_indicator
        embed.add_field(name="Balance",
                        value=f"**{new_balance:,} Σ**",
                        inline=True)
        return await msg.edit(content=None, embed=embed)
Beispiel #9
0
    async def bank(self, ctx, cmdtype, amount=None):
        msg = await ctx.send("processing...")
        if not cmdtype.lower() in [
                "info", "withdraw", "deposit", "stats", "stat", "upgrade"
        ]:
            return await msg.edit(
                content=
                f"`{cmdtype}` is none of the following:\n- `info`\n- `withdraw`\n- `deposit`\n- `upgrade`\ndo `{ctx.prefix}help bank` for more info"
            )

        user = db.user_db.fetch_user(ctx.author.id, ctx.guild.id)
        if not user:
            return await msg.edit(
                content=
                f"Hmm... somehow you don\'t exist to me, try again later!")
        user_parser = UserData(user)
        interest_result = process_bank_interest(user_parser)
        if interest_result == 0:
            interest_result = False
        else:
            if not interest_result["success"]:
                print("interest update unsuccessful")
            embed = discord.Embed(
                description=
                f"You earned **{interest_result['interest']:,} Σ** interest within the last **{interest_result['hours']:,} hours**!",
                colour=embed_colour)
            await ctx.send(embed=embed)

        if cmdtype.lower() in ["info", "stats", "stat"]:
            money_to_upgrade = get_interest_cost(
                user_parser.get_interest_percent())
            embed = discord.Embed(
                title="Bank Info",
                description=
                f"**{money_to_upgrade:,} Σ** to upgrade to {user_parser.get_interest_percent()+1}% interest",
                colour=embed_colour)
            embed.set_author(name=f"{ctx.author}",
                             icon_url=ctx.author.display_avatar.url)  #pylint: disable=E1101
            if (user_parser.get_user_money() +
                    user_parser.get_bank_money()) < money_to_upgrade:
                embed.description = f"{embed.description}\nYou can\'t afford the upgrade yet"
            else:
                embed.description = f"{embed.description}\nYou can afford the upgrade, make sure **{money_to_upgrade:,} Σ** is in the bank\nand run `{ctx.prefix}bank upgrade`"
            embed.add_field(name="Interest",
                            value=f"**{user_parser.get_interest_percent()}%**",
                            inline=True)
            embed.add_field(name="Balance",
                            value=f"**{user_parser.get_bank_money():,} Σ**",
                            inline=True)
            return await msg.edit(content=None, embed=embed)

        elif cmdtype.lower() == "upgrade":
            money_to_upgrade = get_interest_cost(
                user_parser.get_interest_percent())
            if user_parser.get_bank_money() < money_to_upgrade:
                return await msg.edit(
                    content=
                    f"Bank interest upgrade from {user_parser.get_interest_percent()}% to {user_parser.get_interest_percent()+1}% failed because,\nYou only have **{user_parser.get_bank_money():,} Σ** in your bank when you need **{money_to_upgrade:,} Σ** to upgrade."
                )
            success = db.user_db.update_user_set_fields(
                {"_id": user_parser.user_data["_id"]},
                [("bank.money",
                  (user_parser.get_bank_money() - money_to_upgrade)),
                 ("bank.interest",
                  ((user_parser.get_interest_percent() + 1) / 100))])
            if not success:
                return await msg.edit(
                    content=
                    f"Something went wrong while upgrading your interest, try again later"
                )
            embed = discord.Embed(
                description=
                f"Successfully upgraded to {user_parser.get_interest_percent()+1}% for a cost of **{money_to_upgrade:,} Σ**\nNew Bank Balance: **{(user_parser.get_bank_money()-money_to_upgrade):,} Σ**\nNew Bank Interest: **{user_parser.get_interest_percent()+1}%**",
                colour=embed_colour)
            embed.set_author(name=f"Interest Upgrade")
            return await msg.edit(content=None, embed=embed)

        elif cmdtype.lower() == "withdraw":

            if not amount:
                return await msg.edit(
                    content=
                    "Withdraw how much? 1000? 20?\nPlease specify the amount you want to withdraw!"
                )
            try:
                amount = int(amount)
            except ValueError:
                return await msg.edit(
                    content=f"Does {amount} look like an integer to you?")

            if amount == 0:
                return await msg.edit(
                    content=
                    "Please don\'t waste my resources doing a pointless task!")
            if amount < 0:
                return await msg.edit(content=f"Are you trying to be a joker?")
            if user_parser.get_bank_money() < amount:
                return await msg.edit(
                    content=
                    f"Your bank balance is **{user_parser.get_bank_money():,} Σ**!\nYou cannot possibly withdraw more than you have!"
                )

            result = process_bank_ops(user_parser, "withdraw", amount)
            if not result["success"]:
                return await msg.edit(
                    content=
                    f"Something went wrong while withdrawing, try again later")

            embed = discord.Embed(
                description=
                f"You have withdrawn **{result['amount']:,} Σ** from the bank!\nNew User Balance: **{result['new_user_bal']:,} Σ**\nNew Bank Balance: **{result['new_bank_bal']:,} Σ**",
                colour=embed_colour)
            embed.set_author(name=f"Bank Withdrawal")
            return await msg.edit(content=None, embed=embed)

        elif cmdtype.lower() == "deposit":

            if not amount:
                return await msg.edit(
                    content=
                    "Deposit how much? 1000? 20?\nPlease specify the amount you want to deposit!"
                )
            try:
                amount = int(amount)
            except ValueError:
                return await msg.edit(
                    content=f"Does {amount} look like an integer to you?")

            if amount == 0:
                return await msg.edit(
                    content=
                    "Please don\'t waste my resources doing a pointless task!")
            if amount < 0:
                return await msg.edit(content=f"Are you trying to be a joker?")
            if user_parser.get_user_money() < amount:
                return await msg.edit(
                    content=
                    f"Your user balance is **{user_parser.get_user_money():,} Σ**!\nYou cannot possibly deposit more than you have!"
                )

            result = process_bank_ops(user_parser, "deposit", amount)
            if not result["success"]:
                return await msg.edit(
                    content=
                    f"Something went wrong while depositing, try again later")

            embed = discord.Embed(
                description=
                f"You have deposited **{result['amount']:,} Σ** in the bank!\nNew User Balance: **{result['new_user_bal']:,} Σ**\nNew Bank Balance: **{result['new_bank_bal']:,} Σ**",
                colour=embed_colour)
            embed.set_author(name=f"Bank Deposition")
            return await msg.edit(content=None, embed=embed)

        return await msg.edit(content=f"You somehow broke the system!")
Beispiel #10
0
    async def pay(self, ctx, receiver: discord.Member, amount):
        msg = await ctx.send("processing...")

        try:
            amount = int(amount)
        except ValueError:
            return await msg.edit(
                content=f"Does `{amount}` look like an integer to you?")

        sender = ctx.author
        if receiver.bot:
            return await msg.edit(
                content=
                f"Seriously? You expect a bot to be registered in my database?"
            )
        if sender.id == receiver.id:
            return await msg.edit(
                content=
                "What\'s the point of sending to yourself?\nStop wasting my resources!"
            )
        if amount == 0:
            return await msg.edit(
                content=
                "Scram! Stop wasting my resources to do a pointless task!")
        if amount < 0:
            return await msg.edit(
                content=
                f"You think you are funny?\nPaying people negative money?")

        for banned_transfer in banned_transfers:
            p1, p2 = banned_transfer
            if ((sender.id == p1 and receiver.id == p2)
                    or (sender.id == p2 and receiver.id == p1)):
                return await msg.edit(
                    content=
                    f"ALT Account detected!\nNo cheating to the top of leaderboard!"
                )

        await msg.edit(content=f"checking user data...")
        user = db.user_db.fetch_user(sender.id, ctx.guild.id)
        if not user:
            return await msg.edit(
                content=
                f"Hmm... somehow you don\'t exist to me, try again later!")
        sender_user = UserData(user)
        user = db.user_db.fetch_user(receiver.id, ctx.guild.id)
        if not user:
            return await msg.edit(
                content=
                f"Who is this <@!{receiver.id}> you speak of? Never heard of them, hold on.\nPlease try again later"
            )
        receiver_user = UserData(user)

        if sender_user.get_user_money() < amount:
            return await msg.edit(
                content=
                f"You only have **{sender_user.get_user_money():,} Σ**,\nyou cannot afford to send **{amount:,} Σ**!"
            )

        await msg.edit(content="processing payment...")
        result = process_payment(amount, sender_user, receiver_user)
        if not (result["receiver_updated"] and result["sender_updated"]):
            return await msg.edit(
                content=
                f"Something went wrong while processing the payment, try again later"
            )

        embed = discord.Embed(
            description=
            f"You have sent **{result['amount']:,} Σ** to <@!{receiver.id}>!\n<@!{sender.id}>\'s balance: **{result['sender_balance']:,} Σ**\n<@!{receiver.id}>\'s balance: **{result['receiver_balance']:,} Σ**",
            colour=embed_colour)
        embed.set_author(name=f"Payment success")
        return await msg.edit(content=None, embed=embed)