Пример #1
0
 async def daily(self, ctx):
     log.debug("%s issued server command %s" %
               (str(ctx.message.author), str(ctx.message.content)))
     current_time = time.time()
     query = sql.db_query(
         "SELECT dailyRewardClaimed, dailyRewardStreak FROM Members WHERE UserID = %s "
         % (str(ctx.author.id)))
     last_advent = query[0][0]
     streak = query[0][1]
     if last_advent < current_time:
         next_advent = current_time + ((60 * 60) * 20)
         sql.execute_query(
             "UPDATE Members SET dailyRewardClaimed = %s WHERE UserID = %s "
             % (str(next_advent), str(ctx.author.id)))
         reward = random.randint(1, 4)
         if reward == 1:
             reward_name = "5000 Exp"
             add_exp(ctx.author.id, 5000)
         if reward == 2:
             reward_name = "$5.00"
             add_coins(ctx.author, float(5.00))
         if reward == 3:
             reward_name = "2 Crates"
             crates_no = sql.db_query(
                 "SELECT crates FROM Members WHERE UserID = %s" %
                 (str(ctx.author.id)))[0][0]
             crates_no = crates_no + 2
             sql.execute_query(
                 "UPDATE Members SET crates = %s WHERE UserID = %s" %
                 (str(crates_no), str(ctx.author.id)))
         if reward == 4:
             reward_name = "3 Crates"
             crates_no = sql.db_query(
                 "SELECT crates FROM Members WHERE UserID = %s" %
                 (str(ctx.author.id)))[0][0]
             crates_no = crates_no + 3
             sql.execute_query(
                 "UPDATE Members SET crates = %s WHERE UserID = %s" %
                 (str(crates_no), str(ctx.author.id)))
         embed = discord.Embed(title="Easter Reward",
                               description="You Won " + reward_name,
                               color=colour.primary)
         await ctx.send(embed=embed)
         new_streak = streak + 1
         sql.execute_query(
             "UPDATE Members SET dailyRewardStreak = %s WHERE UserID = %s "
             % (str(new_streak), str(ctx.author.id)))
     else:
         next_advent = last_advent
         time_difference = next_advent - current_time
         time_difference_string = time_phaser(time_difference)
         embed = discord.Embed(
             title="Error",
             description="You cannot use that command for another **%s**" %
             (time_difference_string),
             color=colour.reds)
         await ctx.send(embed=embed)
Пример #2
0
 async def advent(self, ctx):
     current_time = time.time()
     last_advent = sql.db_query(
         "SELECT dailyRewardClaimed FROM Members WHERE UserID = %s " %
         (str(ctx.author.id)))[0][0]
     if last_advent < current_time:
         next_advent = current_time + ((60 * 60) * 20)
         sql.execute_query(
             "UPDATE Members SET dailyRewardClaimed = %s WHERE UserID = %s "
             % (str(next_advent), str(ctx.author.id)))
         reward = random.randint(1, 4)
         if reward == 1:
             reward_name = "1000 Exp"
             add_exp(ctx.author.id, 1000)
         if reward == 2:
             reward_name = "$0.75"
             add_coins(ctx.author, float(0.75))
         if reward == 3:
             reward_name = "1 Crate"
             crates_no = sql.db_query(
                 "SELECT crates FROM Members WHERE UserID = %s" %
                 (str(ctx.author.id)))[0][0]
             crates_no = crates_no + 1
             sql.execute_query(
                 "UPDATE Members SET crates = %s WHERE UserID = %s" %
                 (str(crates_no), str(ctx.author.id)))
         if reward == 4:
             reward_name = "2 Crates"
             crates_no = sql.db_query(
                 "SELECT crates FROM Members WHERE UserID = %s" %
                 (str(ctx.author.id)))[0][0]
             crates_no = crates_no + 2
             sql.execute_query(
                 "UPDATE Members SET crates = %s WHERE UserID = %s" %
                 (str(crates_no), str(ctx.author.id)))
         embed = discord.Embed(title="Advent",
                               description="You Won " + reward_name,
                               color=colour.primary)
         await ctx.send(embed=embed)
     else:
         next_advent = last_advent
         time_difference = next_advent - current_time
         time_difference_string = time_phaser(time_difference)
         embed = discord.Embed(
             title="Error",
             description="You cannot use that command for another **%s**" %
             (time_difference_string),
             color=colour.reds)
         await ctx.send(embed=embed)
Пример #3
0
 async def crates(self, ctx):
     crates_no = sql.db_query("SELECT crates FROM Members WHERE UserID = %s" % (str(ctx.author.id)))[0][0]
     args = ctx.message.content.split(" ")
     if len(args) == 1:
         embed = discord.Embed(description="You currently have **%s** crate(s)" % (str(crates_no)),
                               color=colour.reds)
         embed.set_author(name="Crates")
         await ctx.send(embed=embed)
Пример #4
0
def open_crate(ctx):
    # Pick rarity
    chance = random.randint(1, 100)
    if chance <= 50:
        rarity = "COMMON"
        embed_color = 0xFFFFFF
        dupe_reward = 250
    elif 50 < chance <= 75:
        rarity = "UNCOMMON"
        embed_color = 0x55FF55
        dupe_reward = 500
    elif 75 < chance <= 95:
        rarity = "RARE"
        embed_color = 0X5555FF
        dupe_reward = 750
    elif 95 < chance <= 99:
        rarity = "LEGENDARY"
        embed_color = 0xFFAA00
        dupe_reward = 1000
    elif chance == 100:
        rarity = "MYTHIC"
        embed_color = 0xFF5555
        dupe_reward = 0

    # select cosmetic
    if rarity == "MYTHIC":
        title = "You Won: " + "$25.00"
        description = "Some Money to spend on cool things."
        add_balance(ctx.author, float(25.00))
    else:
        items = sql.db_query("SELECT * from cosmetics WHERE cosmetic_rarity = '%s'" % (str(rarity)))
        item = random.choice(items)
        inventory = eval(
            sql.db_query("SELECT cosmetics FROM Members WHERE UserID = %s" % (str(ctx.author.id)))[0][0])
        if item[0] in inventory:
            title = "You Won: " + item[1] + " (Duplicate)"
            description = item[3] + "\nSince you already had this item you've been awarded %s exp" % (str(dupe_reward))
            add_exp(ctx.author.id, dupe_reward)
        else:
            title = "You Won: " + item[1]
            description = item[3]
            inventory.append(int(item[0]))
            sql.execute_query("UPDATE Members SET cosmetics = '%s' WHERE UserID = %s" % (
                str(inventory), str(ctx.author.id)))
    return title, description, embed_color, rarity, dupe_reward  # In this order to prevent confusion with indexes at the embed creation
Пример #5
0
 async def give(self, ctx, target: discord.Member = None, amount: int = 0):
     if "Manager" in [role.name for role in ctx.message.author.roles]:
         if target is not None:
             crates_no = \
                 sql.db_query("SELECT crates FROM Members WHERE UserID = %s" % (str(target.id)))[0][0]
             crates_no = crates_no + amount
             sql.execute_query("UPDATE Members SET crates = %s WHERE UserID = %s" % (
                 str(crates_no), str(target.id)))
             await ctx.send("Successfully gave %s **%s** crate(s)" % (target.mention, str(amount)))
     else:
         await ctx.send("**Insufficient Permissions:** This command requires permission rank `MANAGER`")
Пример #6
0
    async def open(self, ctx, amount: int = 1):
        crates_no = sql.db_query("SELECT crates FROM Members WHERE UserID = %s" % (str(ctx.author.id)))[0][0]
        if crates_no == 0:
            await ctx.send("**Error:** You don't have any crates to open")
        else:
            if amount > 10:
                await ctx.send(embed=discord.Embed(title="Crates Opening Error",
                                                   description="You're trying to open too many crates, try a smaller number.",
                                                   color=colour.reds))
                return
            elif amount <= 0:
                await ctx.send(embed=discord.Embed(title="Crates Opening Error",
                                                   description="Please don't try to create a black hole and try a bigger number.",
                                                   color=colour.reds))
                return
            # If a user tries to open more crates than they have it'll default to how much they have
            if crates_no < amount:
                amount = crates_no
            # Open crates
            crates = [open_crate(ctx) for _ in range(0, amount)]
            # Take however many crates the user opened
            crates_no = crates_no - amount
            sql.execute_query("UPDATE Members SET crates = %s WHERE UserID = %s" % (str(crates_no), str(ctx.author.id)))
            embed = discord.Embed(description="Opening Crate" if amount == 1 else "Opening %d Crates" % amount)
            embed.set_author(name="Crate")
            msg = await ctx.send(embed=embed)
            await asyncio.sleep(2)
            if amount == 1:
                print(crates)
                embed = discord.Embed(title=crates[0][0], description=crates[0][1], color=crates[0][2])
                embed.set_author(name=crates[0][3])
                await msg.edit(embed=embed)
            else:
                dupe_reward = 0
                description = "You won:\n"
                for c in crates:
                    description += " - " + c[0].strip("You Won:").replace("(Duplicate)", "**(Duplicate +%d XP)**" % c[4])
                    if "Duplicate" in c[0]:
                        dupe_reward += c[4]
                    description += "\n"

                if dupe_reward > 0:
                    description += "\n"
                    description += "You've earned **%d XP** from duplicates" % dupe_reward
                embed = discord.Embed(title="You've successfully opened %d crates!" % amount,
                                      description=description,
                                      colour=colour.primary)
                await msg.edit(embed=embed)
Пример #7
0
    async def cookie(self, ctx, target: discord.Member):
        '''
        Give someone a cookie

        Required Permission: None
        Required Arguments: Mention

        '''
        bal = fetch_balance(ctx.author)
        args = ctx.message.content.split(' ')
        if bal >= 0.01:
            add_balance(ctx.author, -0.01)
            cookie_type = random.choice([
                "just gave you a chocolate chip cookie!",
                "just gave you a otis spunkmeyer cookie!",
                "just gave you a super sized cookie!",
                "just gave you a sainsburys taste the difference cookie!"
            ])
            embed = discord.Embed(
                description="Hey %s, %s %s" %
                (args[1], ctx.message.author.mention, cookie_type),
                color=colour.secondary)
            embed.set_author(name="Cookie")
            embed.set_thumbnail(
                url=
                "https://upload.wikimedia.org/wikipedia/commons/thumb/0/03/Oxygen480-apps-preferences-web-browser-cookies.svg/1024px-Oxygen480-apps-preferences-web-browser-cookies.svg.png"
            )
            await ctx.message.channel.send(embed=embed)
            if not target.id == ctx.author.id:
                cookies_no = sql.db_query(
                    "SELECT cookiesReceived FROM Members WHERE UserID = %s" %
                    (str(target.id)))[0][0]
                cookies_no = cookies_no + 1
                sql.execute_query(
                    "UPDATE Members SET cookiesReceived = %s WHERE UserID = %s"
                    % (str(cookies_no), str(target.id)))
        else:
            await ctx.send("%s you do not have sufficient funds for this!" %
                           (ctx.message.author.mention))
Пример #8
0
def generate_leaderboard_string(guild, page=1):
    leaderboard_2d_array = sql.db_query(
        "SELECT UserID, Level, expTotal FROM Members WHERE NOT UserID = 1 ORDER BY expTotal DESC"
    )
    leaderboard_2d_array_processed = []
    server_total = 0
    for entry in leaderboard_2d_array:
        entry_member_object = discord.utils.get(guild.members, id=entry[0])
        if not entry_member_object is None:
            if not entry_member_object.bot:
                leaderboard_2d_array_processed.append(entry)
                server_total += entry[2]

    start_index = 0 + ((page - 1) * 10)
    leaderboard_string = "Server Total: **" + str(server_total) + " EXP**\n\n"
    for i in range(start_index, start_index + 10):
        try:
            leaderboard_string += "**" + str(i + 1) + ")** <@" + str(
                leaderboard_2d_array_processed[i][0]) + "> - **Lvl " + str(
                    leaderboard_2d_array_processed[i][1]) + "** (" + str(
                        leaderboard_2d_array_processed[i][2]) + " exp)\n"
        except IndexError:
            break
    return leaderboard_string
Пример #9
0
def fetch_items(userID):
    return sql.db_query("SELECT items FROM Members WHERE UserID = %s" %
                        (str(userID)))
Пример #10
0
def fetch_exps(userID):
    return sql.db_query("SELECT Exp, ExpTotal FROM Members WHERE UserID = %s" %
                        (str(userID)))[0]
Пример #11
0
async def check_level_up(userID, guild, channel):
    Checking = True
    while Checking:
        level_data = sql.db_query(
            "SELECT Exp, Level FROM Members WHERE UserID = %s" %
            (str(userID)))[0]
        Exp = level_data[0]
        lvl = level_data[1]
        Required = 5 * (lvl * lvl) + (50 * lvl) + 100
        if Exp >= Required:
            level_up(userID, lvl + 1)
            sub_exp_only(userID, Required)
            lvl = lvl + 1
            balAdd = float(lvl / 100)
            add_balance_id(userID, float(balAdd))
            user = discord.utils.get(guild.members, id=userID)
            if lvl in [3, 15, 30, 45, 60, 75, 90]:
                if lvl == 3:
                    new_role = discord.utils.get(guild.roles,
                                                 id=547132381073768494)
                    await user.add_roles(new_role)
                    await channel.send(embed=discord.Embed(
                        title="Level Up!",
                        description=
                        "Congratulations %s! You've reached Level 3! That means you've unlocked the `%s` role!"
                        % (user.mention, new_role.name),
                        color=colour.primary))
                else:
                    if lvl == 15:
                        new_role = discord.utils.get(guild.roles,
                                                     id=547132866094432260)
                        old_role = discord.utils.get(guild.roles,
                                                     id=547132381073768494)
                    elif lvl == 30:
                        new_role = discord.utils.get(guild.roles,
                                                     id=547133065298837525)
                        old_role = discord.utils.get(guild.roles,
                                                     id=547132866094432260)
                    elif lvl == 45:
                        new_role = discord.utils.get(guild.roles,
                                                     id=547133123503194112)
                        old_role = discord.utils.get(guild.roles,
                                                     id=547133065298837525)
                    elif lvl == 60:
                        new_role = discord.utils.get(guild.roles,
                                                     id=547133176435310603)
                        old_role = discord.utils.get(guild.roles,
                                                     id=547133123503194112)
                    elif lvl == 75:
                        new_role = discord.utils.get(guild.roles,
                                                     id=630451524602036254)
                        old_role = discord.utils.get(guild.roles,
                                                     id=547133176435310603)
                    elif lvl == 90:
                        new_role = discord.utils.get(guild.roles,
                                                     id=690185873056071721)
                        old_role = discord.utils.get(guild.roles,
                                                     id=630451524602036254)
                    await user.add_roles(new_role)
                    await user.remove_roles(old_role)
                    await channel.send(embed=discord.Embed(
                        title="Level Up!",
                        description=
                        "Congratulations %s! You've reached Level %s! That means you've unlocked the `%s` role!"
                        % (user.mention, str(lvl), new_role.name),
                        color=colour.primary))
        else:
            Checking = False
Пример #12
0
    async def daily(self, ctx):
        current_time = time.time()
        query = sql.db_query(
            "SELECT dailyRewardClaimed, dailyRewardStreak FROM Members WHERE UserID = %s "
            % (str(ctx.author.id)))
        last_advent = query[0][0]
        streak = query[0][1]
        if last_advent < current_time:
            if current_time - last_advent > ((60 * 60) * 24):
                streak = 0
                sql.execute_query(
                    "UPDATE Members SET dailyRewardStreak = %s WHERE UserID = %s "
                    % (str(streak), str(ctx.author.id)))

        if "Supporter" in [role.name for role in ctx.author.roles]:
            multiplier = 2
        else:
            multiplier = 1

        if last_advent < current_time:
            cookie_chance = random.randint(1, 25)
            embed = discord.Embed(
                description="Select your reward by typing the number in chat",
                color=colour.primary)
            embed.set_author(name="Daily Rewards")
            embed.add_field(name="Reward 1",
                            value=str(
                                (1000 + (streak * 10)) * multiplier) + " Exp",
                            inline=False)
            embed.add_field(name="Reward 2",
                            value="$" +
                            str(round(0.10 + (streak * 0.01), 2) * multiplier),
                            inline=False)
            if cookie_chance == 1:
                embed.add_field(name="Reward 3",
                                value="3 Cookies",
                                inline=False)

            embed.set_footer(text="Your current reward streak is: " +
                             str(streak))
            mssg = await ctx.send(embed=embed)
            channel = ctx.channel

            def check(m):
                return m.author.id == ctx.author.id and m.channel == channel

            try:
                msg = await self.client.wait_for('message',
                                                 check=check,
                                                 timeout=60.0)
            except asyncio.TimeoutError:
                embed = discord.Embed(description="No Message Received",
                                      color=colour.reds)
                embed.set_author(name="Daily Reward")
                await mssg.edit(embed=embed)
            else:
                await msg.delete()
                if msg.content == "1":
                    add_exp(ctx.author.id, (1000 + (streak * 10)) * multiplier)
                    embed = discord.Embed(description="You unlocked **" + str(
                        (1000 + (streak * 10)) * multiplier) + " EXP**!",
                                          color=colour.primary)
                    embed.set_author(name="Daily Reward")
                    await mssg.edit(embed=embed)
                    next_advent = current_time + ((60 * 60) * 20)
                    sql.execute_query(
                        "UPDATE Members SET dailyRewardClaimed = %s WHERE UserID = %s "
                        % (str(next_advent), str(ctx.author.id)))
                    new_streak = streak + 1
                    sql.execute_query(
                        "UPDATE Members SET dailyRewardStreak = %s WHERE UserID = %s "
                        % (str(new_streak), str(ctx.author.id)))
                elif msg.content == "2":
                    add_balance(ctx.author,
                                round(0.10 + (streak * 0.01), 2) * multiplier)
                    embed = discord.Embed(
                        description="You unlocked **$" +
                        str(round(0.10 +
                                  (streak * 0.01), 2) * multiplier) + " **!",
                        color=colour.primary)
                    embed.set_author(name="Daily Reward")
                    await mssg.edit(embed=embed)
                    next_advent = current_time + ((60 * 60) * 20)
                    sql.execute_query(
                        "UPDATE Members SET dailyRewardClaimed = %s WHERE UserID = %s "
                        % (str(next_advent), str(ctx.author.id)))
                    new_streak = streak + 1
                    sql.execute_query(
                        "UPDATE Members SET dailyRewardStreak = %s WHERE UserID = %s "
                        % (str(new_streak), str(ctx.author.id)))
                elif msg.content == "3" and cookie_chance == 1:
                    embed = discord.Embed(
                        description="You unlocked **3 Cookies**!",
                        color=colour.primary)
                    embed.set_author(name="Daily Reward")
                    await mssg.edit(embed=embed)
                    cookies_no = sql.db_query(
                        "SELECT cookiesReceived FROM Members WHERE UserID = %s"
                        % (str(ctx.author.id)))[0][0]
                    cookies_no = cookies_no + 3
                    sql.execute_query(
                        "UPDATE Members SET cookiesReceived = %s WHERE UserID = %s"
                        % (str(cookies_no), str(ctx.author.id)))
                else:
                    embed = discord.Embed(description="Invalid Response",
                                          color=colour.reds)
                    embed.set_author(name="Daily Reward")
                    await mssg.edit(embed=embed)
        else:
            next_advent = last_advent
            time_difference = next_advent - current_time
            time_difference_string = time_phaser(time_difference)
            embed = discord.Embed(
                title="Error",
                description="You cannot use that command for another **%s**" %
                (time_difference_string),
                color=colour.reds)
            await ctx.send(embed=embed)
Пример #13
0
    async def weekly(self, ctx):
        args = ctx.message.content.split(" ")
        showDetails = False
        if len(args) >= 2 and (
                "Moderator" in [role.name for role in ctx.author.roles]
                or "Manager" in [role.name for role in ctx.author.roles]):
            if args[1].upper() == "DETAILS":
                activity = sql.db_query(
                    "SELECT UserID, weeklyActivity FROM Members WHERE NOT UserID = 472063067014823938 AND NOT UserID = 1 AND NOT UserID = 568905827952361490 ORDER BY weeklyActivity DESC"
                )
                count = 1
                index = 0
                server_total = 0
                for entry in activity:
                    server_total += entry[1]
                lbString = "Server Total: **" + str(
                    server_total) + " Points**\n\n"

                while count < 6:
                    user = discord.utils.get(ctx.guild.members,
                                             id=activity[index][0])
                    if not user == None:
                        lbString += "**" + str(count) + ")** <@" + str(
                            activity[index][0]) + "> - **" + str(
                                balance_formatter(
                                    activity[index][1])) + "** Points\n"
                        count += 1
                    index += 1
                embed = discord.Embed(description=lbString,
                                      color=colour.primary)
                embed.set_author(name="Weekly Activity Leaderboard")
                embed.set_thumbnail(
                    url="https://i.foggyio.uk/varsity_discord.png")
                await ctx.send(embed=embed)
            elif args[1].upper() == "RESET":
                if "Manager" in [role.name for role in ctx.author.roles]:
                    sql.execute_query("UPDATE Members SET weeklyActivity=0")
                    await ctx.send("Reset Weekly Activity Stats")
                    return
        else:
            activity = sql.db_query(
                "SELECT UserID, weeklyActivity FROM Members WHERE NOT UserID = 472063067014823938 AND NOT UserID = 1 AND NOT UserID = 568905827952361490 ORDER BY weeklyActivity DESC"
            )
            count = 1
            index = 0
            server_total = 0
            for entry in activity:
                server_total += entry[1]
            lbString = "Server Total: **" + str(server_total) + " Points**\n\n"
            while count < 6:
                user = discord.utils.get(ctx.guild.members,
                                         id=activity[index][0])
                if not user == None:
                    lbString += "**" + str(count) + ")** <@" + str(
                        activity[index][0]) + ">\n"
                    count += 1
                index += 1

            not_found = True
            i = 1
            index2 = 0
            while not_found:
                user = discord.utils.get(ctx.guild.members,
                                         id=activity[index2][0])
                if not user == None:
                    if activity[index2][0] == ctx.author.id:
                        not_found = False
                        if i >= 6:
                            lbString += "\n**" + str(i) + ")** <@" + str(
                                activity[index2][0]) + ">\n"
                    i += 1
                index2 += 1

            embed = discord.Embed(description=lbString, color=colour.primary)
            embed.set_author(name="Weekly Activity Leaderboard")
            embed.set_thumbnail(url="https://i.foggyio.uk/varsity_discord.png")
            await ctx.send(embed=embed)
Пример #14
0
    async def cosmetics(self, ctx, operand=None, *, cosmetic=None):
        if operand is None:
            #get inventory
            cosmetics_all = sql.db_query("SELECT cosmetic_id FROM cosmetics")
            cosmetics_total = len(cosmetics_all)
            inventory = eval(
                sql.db_query(
                    "SELECT cosmetics FROM Members WHERE UserID = %s" %
                    (str(ctx.author.id)))[0][0])
            inventory_size = len(inventory)
            if len(inventory) == 0:
                embed = discord.Embed(
                    title="Inventory",
                    description="You have nothing in your inventory",
                    color=reds)
                await ctx.send(embed=embed)
            else:
                inventory_string = ""
                count = 1
                for item_id in inventory:
                    cosmetic = sql.db_query(
                        "SELECT * from cosmetics WHERE cosmetic_id = %s" %
                        (str(item_id)))[0]
                    inventory_string += str(count) + ") **" + cosmetic[
                        2] + "** " + cosmetic[1] + "\n"
                    count = count + 1
                embed = discord.Embed(title="Inventory",
                                      description=inventory_string,
                                      color=colour.secondary)
                embed.set_footer(text="%s/%s Cosmetics Unlocked" %
                                 (str(inventory_size), str(cosmetics_total)))
                await ctx.send(embed=embed)

        elif operand.upper() == "SHOW" or operand.upper() == "DISPLAY":
            index = int(cosmetic)
            inventory = eval(
                sql.db_query(
                    "SELECT cosmetics FROM Members WHERE UserID = %s" %
                    (str(ctx.author.id)))[0][0])
            inventory_size = len(inventory)
            try:
                item_id = inventory[index - 1]
            except IndexError:
                await ctx.send(
                    "**Error:** You do not own a cosmetic under that id")
                return
            item = sql.db_query(
                "SELECT * from cosmetics WHERE cosmetic_id = %s" %
                (str(item_id)))[0]
            if item[2] == "COMMON":
                embed_color = 0xFFFFFF
            elif item[2] == "UNCOMMON":
                embed_color = 0x55FF55
            elif item[2] == "RARE":
                embed_color = 0X5555FF
            elif item[2] == "LEGENDARY":
                embed_color = 0xFFAA00
            elif item[2] == "SPECIAL":
                embed_color = 0xFF55FF
            elif item[2] == "FESTIVE":
                embed_color = 0x00AA00
            embed = discord.Embed(title=item[1],
                                  description=item[3],
                                  color=embed_color)
            embed.set_author(name=item[2])
            if not item[4] is None:
                embed.set_thumbnail(url=item[4])
            embed.set_footer(text="Item Owned By: " + str(ctx.author))
            await ctx.send(embed=embed)

        elif operand.upper() == "CREATE":
            if "Manager" in [role.name for role in ctx.author.roles]:
                cosmetic_args = "".join(cosmetic).split("|")
                title = cosmetic_args[0]
                rarity = cosmetic_args[1].upper()
                description = cosmetic_args[2]
                if len(cosmetic_args) >= 4:
                    image_url = cosmetic_args[3]
                else:
                    image_url = None
                if rarity == "COMMON":
                    embed_color = 0xFFFFFF
                elif rarity == "UNCOMMON":
                    embed_color = 0x55FF55
                elif rarity == "RARE":
                    embed_color = 0X5555FF
                elif rarity == "LEGENDARY":
                    embed_color = 0xFFAA00
                elif rarity == "SPECIAL":
                    embed_color = 0xFF55FF
                else:
                    await ctx.send("**Error:** Invalid Rarity")
                    return
                embed = discord.Embed(title=title,
                                      description=description,
                                      color=embed_color)
                embed.set_author(name=rarity)
                if len(cosmetic_args) >= 4:
                    embed.set_thumbnail(url=image_url)

                await ctx.send(content="Confirm Creation Of Cosmetic (y/n)",
                               embed=embed)

                def check(m):
                    return m.channel == ctx.message.channel and m.author == ctx.message.author

                msg = await self.client.wait_for('message', check=check)
                if msg.content.upper() == "Y":
                    if image_url is None:
                        sql.execute_query(
                            "INSERT INTO cosmetics (cosmetic_name, cosmetic_rarity, cosmetic_description) VALUES ('%s', '%s', '%s')"
                            % (title.replace("'", "''"), rarity,
                               description.replace("'", "''")))
                    else:
                        sql.execute_query(
                            "INSERT INTO cosmetics (cosmetic_name, cosmetic_rarity, cosmetic_description, cosmetic_image_url) VALUES ('%s', '%s', '%s', '%s')"
                            % (title.replace("'", "''"), rarity,
                               description.replace(
                                   "'", "''"), image_url.replace("'", "''")))
                    await ctx.send("Cosmetic Created")
                else:
                    await ctx.send("_Cancelled_")
            else:
                await ctx.send(
                    "**Error:** Permission Denied. This command requires permission rank `MANAGER`"
                )
        else:
            await ctx.send("**Error:** Invalid Usage")
Пример #15
0
    async def shop(self, ctx):
        args = ctx.message.content.split()
        if len(args) == 1:
            shop_string = """1) **Custom Tag** -  __$15.00__
A custom role for you, permanent, no hoist or color

2) **Custom Profile Colour** -  __$10.00__
Stand out with a custom profile border. (Once a colour is chosen you cannot change it again without purchasing another)

3) **1 Week Custom Role** - __$5.00__
Aqua Coloured role with a name of your choice

4) **1000 Exp** - __$2.50__
Help boost your level with this exp bonus

5) **1 Crate** - __$1.00__
Open the crate to see what's inside
            """
            shopEm = discord.Embed(description="List of Purchasable Items\n" +
                                   shop_string,
                                   color=colour.primary)
            shopEm.set_author(name="Shop")
            shopEm.add_field(
                name="How to use the shop",
                value=
                "You can obtain balance through being the most active each week, once you have enough balance to purchase an item on the shop, type !shop buy <item> <quantity>",
                inline=False)
            await ctx.send(embed=shopEm)
        else:
            if args[1].upper() == "BUY":
                bal = fetch_balance(ctx.author)
                if len(args) > 3:
                    quantity = int(args[3])
                else:
                    quantity = 1
                if args[2] == "1":
                    if bal >= 15.00:
                        add_balance(ctx.author, -15.00)
                        em = discord.Embed(
                            description=
                            "Please contact a member of staff to request your tag!",
                            color=colour.primary)
                        em.set_author(name="Purchase Successful")
                        await ctx.send(embed=em)
                    else:
                        await discord_error("Insufficent funds", ctx)
                elif args[2] == "2":
                    if bal >= 10.00:
                        add_balance(ctx.author, -10.00)
                        em = discord.Embed(
                            description=
                            "Please contact a member of staff to request your profile colour!",
                            color=colour.primary)
                        em.set_author(name="Purchase Successful")
                        await ctx.send(embed=em)
                    else:
                        await discord_error("Insufficent funds", ctx)

                elif args[2] == "3":
                    if bal >= 5.00:
                        add_balance(ctx.author, -5.00)
                        em = discord.Embed(
                            description=
                            "Please contact a member of staff to request your role!",
                            color=colour.primary)
                        em.set_author(name="Purchase Successful")
                        await ctx.send(embed=em)
                    else:
                        await discord_error("Insufficent funds", ctx)
                elif args[2] == "4":
                    if bal >= 2.50 * float(quantity):
                        add_balance(ctx.author, -2.50 * float(quantity))
                        em = discord.Embed(
                            description="You have been given **%s** exp!" %
                            (str(1000 * quantity)),
                            color=colour.primary)
                        em.set_author(name="Purchase Successful")
                        await ctx.send(embed=em)
                        add_exp(ctx.author.id, 1000 * quantity)
                        await check_level_up(ctx.author.id, ctx.guild,
                                             ctx.channel)
                    else:
                        await discord_error("Insufficent funds", ctx)

                elif args[2] == "5":
                    if bal >= 1.00 * float(quantity):
                        crates_no = sql.db_query(
                            "SELECT crates FROM Members WHERE UserID = %s" %
                            (str(ctx.author.id)))[0][0]
                        if crates_no + quantity > 15:
                            await discord_error(
                                "You cannot have more than 15 crates in your inventory",
                                ctx)
                        else:
                            add_balance(ctx.author, -1.00 * float(quantity))
                            em = discord.Embed(
                                description=
                                "You have been given **%s** crate(s)!" %
                                (str(1 * quantity)),
                                color=colour.primary)
                            em.set_author(name="Purchase Successful")
                            await ctx.send(embed=em)
                            crates_no = crates_no + 1 * quantity
                            sql.execute_query(
                                "UPDATE Members SET crates = %s WHERE UserID = %s"
                                % (str(crates_no), str(ctx.author.id)))
                    else:
                        await discord_error("Insufficent funds", ctx)
                else:
                    await discord_error(
                        "Invalid Item! Use `!shop` to view list of items", ctx)
Пример #16
0
def fetch_balance_id(user_id):
    balance = sql.db_query("SELECT Balance FROM Members WHERE UserID = %s" %
                           (str(user_id)))[0][0]
    return balance
Пример #17
0
    async def profile(self, ctx, user : discord.Member = None):
        message = ctx.message
        if user is None:
            user = ctx.author

        profile = get_profile(user.id)

        if "Supporter" in [role.name for role in user.roles]:
            em = discord.Embed(title=user.name, colour=0xf231ff)
        else:
            em = discord.Embed(title=user.name, colour=eval(profile[4]))

        exps = sql.db_query("SELECT UserID FROM Members WHERE NOT UserID = 472063067014823938 AND NOT UserID = 1 ORDER BY expTotal DESC")
        lpos = 1
        for userl in exps:
            userlOb = discord.utils.get(ctx.guild.members, id=userl[0])
            if userlOb is None or userlOb.bot:
                pass
            elif not userl[0] == user.id:
                lpos = lpos + 1
            else:
                break

        activity = sql.db_query("SELECT UserID FROM Members WHERE NOT UserID = 472063067014823938 AND NOT UserID = 1 ORDER BY weeklyActivity DESC")
        apos = 1
        for usera in activity:
            if not usera[0] == user.id:
                apos = apos + 1
            else:
                break

        bals = sql.db_query("SELECT UserID FROM Members WHERE NOT UserID = 472063067014823938 AND NOT UserID = 1 ORDER BY Balance DESC")
        bpos = 1
        for userb in bals:
            if not userb[0] == user.id:
                bpos = bpos + 1
            else:
                break


        rank = get_rank(user)
        cookies_no = sql.db_query("SELECT cookiesReceived FROM Members WHERE UserID = %s" % (str(user.id)))[0][0]
        em.set_author(name=rank[0], icon_url=rank[1])

        badges = profile[3]

        exp = profile[6]
        expCost = 5 * (profile[1]*profile[1]) + 50 * profile[1] + 100

        preLevelTotal = profile[2] - exp
        nextRequiredAmount = preLevelTotal + expCost

        cosmetics_all = sql.db_query("SELECT cosmetic_id FROM cosmetics")
        cosmetics_total = len(cosmetics_all)
        inventory = eval(sql.db_query("SELECT cosmetics FROM Members WHERE UserID = %s" % (str(user.id)))[0][0])
        inventory_size = len(inventory)

        em.add_field(name=badges, value="_ _ _ _ ")
        em.set_thumbnail(url=user.avatar_url)
        em.add_field(name="_ _ _ _", value="_ _ _ _", inline=False)
        em.add_field(name="Level", value=str(profile[1])+ " [**#" + str(lpos) + "**]")
        em.add_field(name="Experience", value=str(profile[2])+ "/" + str(nextRequiredAmount))
        em.add_field(name="Member Since", value=str(user.joined_at)[0:19])

        em.add_field(name="Balance", value="$"+str(balance_formatter(round(float(profile[0]),2 ))))
        em.add_field(name="Cookies Received", value=str(cookies_no))
        em.add_field(name="Cosmetics Unlocked", value="%s/%s" % (str(inventory_size), str(cosmetics_total)))
        if not profile[5] is None:
            em.set_footer(text=""+profile[5])

        await message.channel.send(embed=em)
Пример #18
0
    async def on_message(self, message):
        try:

            def check(m):
                flag = False
                m_split = m.content.translate(
                    {ord(i): None
                     for i in '",.?!;:-_`*\''}).upper().split(" ")
                banned_words = [
                    "NIGGER", "N***A", "AUTISTIC", "RETARD", "RETARDED",
                    "AIDS", "SPASTIC", "SPAZ", "RETARDS"
                ]
                for word in banned_words:
                    if word in m_split:
                        flag = True
                        #print(m.content)
                return flag

            if check(message):
                await message.delete()
                return 0

            message.content = message.content.replace(
                "@!", "@"
            )  #crappy fix for the mention inconsistency between platforms

            if len(message.content) == 0:
                return
            if isinstance(message.channel, discord.DMChannel):
                log.info("Ignoring Direct Message From %s: %s" %
                         (str(message.author), str(message.content)))
                return
            mSplit = message.content.split()
            mList = []
            for word in mSplit:
                user = discord.utils.get(message.guild.members,
                                         mention=word.replace("@",
                                                              "@!").replace(
                                                                  "!!", "!"))
                if not user is None:
                    if not user.nick is None:
                        word = word.replace("@", "@!").replace("!!", "!")
                mList.append(word)
            message.content = " ".join(mList)

            if message.content.upper().startswith("V!UPDATE"):
                await message.channel.send("Syncing DB")
                for member in message.guild.members:
                    insert_db_user(member)
                await message.channel.send("Completed DB Sync")

            args = message.content.split(" ")

            if message.content[0] == "$":
                message.content = message.content.replace("$", "!tag ")
                await self.client.process_commands(message)

            if args[0].lower() in self.client.disabled_commands:
                await error("[423] This command is currently disabled",
                            message.channel)
                return False
            channel = message.channel

            if message.content.upper().startswith("!ENTER"):
                if "Manager" in [role.name for role in message.author.roles
                                 ] and self.client.raffles:
                    embed = discord.Embed(
                        title="Raffle",
                        description=
                        "Sorry %s, you are not allowed to enter raffles." %
                        (message.author.mention),
                        color=colour.reds)
                    await message.channel.send(embed=embed)
                elif self.client.raffles and not message.author.name in self.client.enteries:
                    self.client.enteries.append(message.author.name)
                    embed = discord.Embed(
                        title="Raffle",
                        description="**%s** has been entered!" %
                        (message.author.name),
                        color=0x00ff73)
                    await message.channel.send(embed=embed)
                elif self.client.raffles:
                    embed = discord.Embed(
                        title="Raffle",
                        description=
                        "Hey %s! You can only enter into the same raffle once!"
                        % (message.author.mention),
                        color=colour.reds)
                    await message.channel.send(embed=embed)

            if message.content.upper().startswith("!VOTE"):
                if self.client.polls and not message.author.name in self.client.polls_enteries:
                    args = message.content.split(" ")
                    try:
                        choice = int(args[1])
                        self.client.polls_votes[choice - 1] += 1
                    except (IndexError, TypeError, ValueError):
                        embed = discord.Embed(
                            title="Poll",
                            description="Hey %s! That is not a valid option!" %
                            (message.author.mention),
                            color=colour.reds)
                        await message.channel.send(embed=embed)
                        return

                    self.client.polls_enteries.append(message.author.name)
                    embed = discord.Embed(
                        title="Poll",
                        description="**%s** you have voted for %s" %
                        (message.author.name,
                         self.client.polls_options[choice - 1]),
                        color=0x00ff73)
                    await message.channel.send(embed=embed)
                elif self.client.polls:
                    embed = discord.Embed(
                        title="Poll",
                        description="Hey %s! You can only vote once" %
                        (message.author.mention),
                        color=colour.reds)
                    await message.channel.send(embed=embed)

            if message.content.upper().startswith("!SUDO"):
                if message.author.id == 345514405775147023:
                    args = message.content.split()
                    target = discord.utils.get(message.guild.members,
                                               mention=args[1])
                    channel = self.client.get_channel(int(args[2]))
                    contents = " ".join(args[3:])
                    message.content = contents
                    message.author = target
                    message.channel = channel
                    await self.client.process_commands(message)

            if message.guild == None:
                return

            words = message.content.split()
            if not str(
                    message.author.id
            ) in self.client.ignore_list and not str(
                    message.channel.id
            ) in self.client.ignore_list and not message.author.id in self.client.cooldown and len(
                    words) > 4 and len(message.content) > 16:
                multiplier = sql.db_query(
                    "SELECT Level FROM Members WHERE UserID = 1")[0][0]
                if "Supporter" in [role.name for role in message.author.roles]:
                    multiplier = multiplier + 0.5
                bal = sql.db_query(
                    "SELECT Balance FROM Members WHERE UserID = %s" %
                    (str(message.author.id)))[0][0]
                if not "Manager" in [
                        role.name for role in message.author.roles
                ]:
                    currentWeeklyPoints = sql.db_query(
                        "SELECT weeklyActivity from Members WHERE UserID = %s"
                        % (str(message.author.id)))[0][0]
                    newWeeklyPoints = currentWeeklyPoints + 1
                    sql.execute_query(
                        "UPDATE Members set weeklyActivity = %s WHERE UserID = %s"
                        % (str(newWeeklyPoints), str(message.author.id)))

                level = get_profile(message.author.id)[1]
                self.client.cooldown.append(message.author.id)
                exp_add = int(round(random.randint(15, 25) * multiplier, 0))
                add_exp(message.author.id, exp_add)
                channel = self.client.get_channel(547120498568331267)
                await check_level_up(message.author.id, message.guild,
                                     message.channel)
                await asyncio.sleep(60)
                try:
                    self.client.cooldown.remove(message.author.id)
                except ValueError:  #some people aren't always on cooldown
                    pass

            def check(m):
                flag = False
                m_split = m.content.translate(
                    {ord(i): None
                     for i in '",.?!;:-_`*\''}).upper().split(" ")
                banned_words = [
                    "F**K", "F*****G", "DICK", "BOLLOCK", "F***S", "AIDS",
                    "BOLLOCKS", "F****D", "W***E", "BASTARD", "SHIT",
                    "S******G", "C**T", "WANKER", "BASTARD", "BELLEND",
                    "N***A", "NIGGER", "PISS", "PISSING", "C**T", "CUNTS",
                    "WANKERS", "RETARDS", "RETARD", "RETARDED", "F****T",
                    "FKING", "FK", "CRAP", "PUSSY", "PENIS", "C**K"
                ]
                for word in banned_words:
                    if word in m_split:
                        flag = True

                return flag

        except Exception as e:
            log.error("Error Processing Message From %s - Error: %s" %
                      (str(message.author), str(e)))
Пример #19
0
def get_profile(userID):
    profile = sql.db_query(
        "SELECT Balance, Level, expTotal, Badges, profileColour, profileHashtag, exp FROM Members WHERE UserID = %s"
        % (userID))[0]
    return profile
Пример #20
0
 async def tag(self, ctx):
     args = ctx.message.content.split()
     if args[1].upper() == "CREATE":
         if get_profile(ctx.author.id)[1] >= 30 or "Moderator" in [
                 role.name for role in ctx.message.author.roles
         ] or "Manager" in [role.name for role in ctx.message.author.roles]:
             tagContent = " ".join(args[3:]).replace("'", "''")
             print(tagContent)
             tagSubmitter = str(ctx.message.author)
             tagName = args[2]
             try:
                 sql.execute_query(
                     "INSERT INTO tags (name, content, submittedBy) VALUES ('%s', '%s', '%s')"
                     % (tagName.replace(
                         "'", "''"), tagContent.replace(
                             "'", "''"), tagSubmitter.replace("'", "''")))
                 await ctx.send("Tag successfully created")
             except:
                 await ctx.send("A tag already exists with that name")
         else:
             await ctx.send("You are not allowed to create tags yet!")
     elif args[1].upper() == "CREATE_IMG":
         if get_profile(ctx.author.id)[1] >= 30 or "Moderator" in [
                 role.name for role in ctx.message.author.roles
         ] or "Manager" in [role.name for role in ctx.message.author.roles]:
             tagContent = " ".join(args[3:]).replace("'", "''")
             tagSubmitter = str(ctx.message.author)
             tagName = args[2]
             try:
                 sql.execute_query(
                     "INSERT INTO tags (name, content, submittedBy, isImage) VALUES ('%s', '%s', '%s', 1)"
                     % (tagName.replace(
                         "'", "''"), tagContent.replace(
                             "'", "''"), tagSubmitter.replace("'", "''")))
                 await ctx.send("Tag successfully created")
             except:
                 await ctx.send("A tag already exists with that name")
         else:
             await ctx.send("You are not allowed to create tags yet!")
     elif args[1].upper() == "DELETE":
         if "Moderator" in [
                 role.name for role in ctx.message.author.roles
         ] or "Manager" in [role.name for role in ctx.message.author.roles]:
             tagName = args[2]
             tag = sql.db_query("SELECT name FROM tags WHERE name = '%s'" %
                                (tagName.replace("'", "''")))
             if len(tag) == 0:  # tag does not exists
                 await ctx.send("There is no tag with that name")
             else:
                 sql.execute_query("DELETE FROM tags WHERE name = '%s'" %
                                   (tagName.replace("'", "''")))
                 await ctx.send("Tag has been successfully deleted")
     else:
         tagName = args[1]
         tag = sql.db_query(
             "SELECT name, content, submittedBy, isImage FROM tags WHERE name = '%s'"
             % (tagName.replace("'", "''")))
         if not len(tag) == 0:
             if tag[0][3] == 1:
                 embed = discord.Embed(title=tag[0][0],
                                       color=colour.secondary)
                 embed.set_image(url=tag[0][1])
             else:
                 embed = discord.Embed(title=tag[0][0],
                                       description=tag[0][1],
                                       color=colour.secondary)
             embed.set_footer(text="Submitted By: " + tag[0][2])
             await ctx.send(embed=embed)
         else:
             await ctx.send("That tag does not exist")