Exemple #1
0
async def topcookies(cmd: SigmaCommand, message: discord.Message, args: list):
    value_name = 'Cookies'
    sort_key = 'Cookies'
    lb_icon = cmd.bot.user.avatar_url
    lb_category = 'Global'
    if args:
        if args[0].lower() == 'total':
            sort_key = 'Total'
            lb_category = 'Total'
    all_docs = await cmd.db[cmd.db.db_cfg.database
                            ].Cookies.find({}).sort(sort_key,
                                                    -1).limit(50).to_list(None)
    leader_docs = []
    all_members = list(cmd.bot.get_all_members())
    for data_doc in all_docs:
        user_value = data_doc.get(sort_key) or 0
        user_object = discord.utils.find(
            lambda usr: usr.id == data_doc.get('UserID'), all_members)
        if user_object:
            leader_docs.append([user_object, user_value])
            if len(leader_docs) >= 20:
                break
    table_data = [[clean_name(doc[0].name, 'Unknown')[:12],
                   str(doc[1])] for doc in leader_docs]
    table_body = boop(table_data, ['User Name', value_name])
    response = discord.Embed(color=await get_image_colors(lb_icon))
    response.set_author(name=f'{lb_category} {value_name} Leaderboard',
                        icon_url=lb_icon)
    response.description = f'```hs\n{table_body}\n```'
    await message.channel.send(embed=response)
async def topexperience(cmd: SigmaCommand, message: discord.Message, args: list):
    value_name = 'Experience'
    sort_key = 'global'
    lb_icon = cmd.bot.user.avatar_url
    lb_category = 'Global'
    if args:
        if args[0].lower() == 'local':
            sort_key = f'guilds.{message.guild.id}'
            lb_icon = message.guild.icon_url or lb_icon
            lb_category = message.guild.name
        elif args[0].lower() == 'total':
            sort_key = 'total'
            lb_category = 'Total'
    all_docs = await cmd.db[cmd.db.db_cfg.database].ExperienceSystem.find({}).sort(sort_key, -1).limit(50).to_list(None)
    leader_docs = []
    all_members = list(cmd.bot.get_all_members())
    for data_doc in all_docs:
        if sort_key == 'global' or sort_key == 'total':
            user_value = data_doc.get(sort_key) or 0
        else:
            user_value = data_doc.get('guilds').get(str(message.guild.id)) or 0
        user_level = int(user_value / 13266.85)
        user_object = discord.utils.find(lambda usr: usr.id == data_doc.get('UserID'), all_members)
        if user_object:
            leader_docs.append([user_object, user_level, user_value])
            if len(leader_docs) >= 20:
                break
    table_data = [[clean_name(doc[0].name, 'Unknown')[:12], str(doc[1]), str(doc[2])] for doc in leader_docs]
    table_body = boop(table_data, ['User Name', 'Level', value_name])
    response = discord.Embed(color=await get_image_colors(lb_icon))
    response.set_author(name=f'{lb_category} {value_name} Leaderboard', icon_url=lb_icon)
    response.description = f'```hs\n{table_body}\n```'
    await message.channel.send(embed=response)
Exemple #3
0
async def topexperience(cmd: SigmaCommand, message: discord.Message,
                        args: list):
    value_name = 'Experience'
    sort_key = 'global'
    lb_category = 'Global'
    search = {}
    if args:
        if args[0].lower() == 'local':
            sort_key = f'guilds.{message.guild.id}'
            search = {sort_key: {'$exists': True}}
            lb_category = message.guild.name
        elif args[0].lower() == 'total':
            sort_key = 'total'
            lb_category = 'Total'
    now = arrow.utcnow().timestamp
    leader_docs, leader_timer = txplb_cache.get_cache(
        sort_key), txplb_cache.get_cache(f'{sort_key}_stamp') or now
    if not leader_docs or leader_timer < now + 180:
        coll = cmd.db[cmd.db.db_nam].ExperienceSystem
        all_docs = await coll.find(search).sort(sort_key,
                                                -1).limit(50).to_list(None)
        leader_docs = []
        all_members = cmd.bot.get_all_members()
        for data_doc in all_docs:
            if sort_key == 'global' or sort_key == 'total':
                user_value = data_doc.get(sort_key) or 0
            else:
                user_value = data_doc.get('guilds').get(str(
                    message.guild.id)) or 0
            user_level = int(user_value / 13266.85)
            user_object = discord.utils.find(
                lambda usr: usr.id == data_doc.get('UserID'), all_members)
            if user_object:
                if user_value:
                    leader_docs.append([user_object, user_level, user_value])
                    if len(leader_docs) >= 20:
                        break
        txplb_cache.set_cache(sort_key, leader_docs)
        txplb_cache.set_cache(f'{sort_key}_stamp', now)
    table_data = [[
        pos + 1 if not doc[0].id == message.author.id else f'{pos + 1} <',
        clean_name(doc[0].name, 'Unknown')[:12],
        str(doc[1]),
        str(doc[2])
    ] for pos, doc in enumerate(leader_docs)]
    table_body = boop(table_data, ['#', 'User Name', 'Level', value_name])
    response = f'🔰 **{lb_category} {value_name} Leaderboard**'
    response += f'\n```hs\n{table_body}\n```'
    response += f'\nLeaderboard last updated {arrow.get(leader_timer).humanize()}.'
    await message.channel.send(response)
Exemple #4
0
async def topcookies(cmd: SigmaCommand, message: discord.Message, args: list):
    value_name = 'Cookies'
    sort_key = 'Cookies'
    lb_category = 'Global'
    localed = False
    if args:
        if args[0].lower() == 'total':
            sort_key = 'Total'
            lb_category = 'Total'
        elif args[0].lower() == 'local':
            lb_category = 'Local'
            localed = True
    cache_key = message.guild.id if localed else sort_key
    now = arrow.utcnow().timestamp
    leader_docs, leader_timer = tcklb_cache.get_cache(
        cache_key), tcklb_cache.get_cache(f'{cache_key}_stamp') or now
    if not leader_docs or leader_timer < now + 180:
        coll = cmd.db[cmd.db.db_nam].Cookies
        all_docs = await coll.find({}).sort(sort_key,
                                            -1).limit(50).to_list(None)
        leader_docs = []
        if localed:
            all_members = message.guild.members
        else:
            all_members = cmd.bot.get_all_members()
        for data_doc in all_docs:
            user_value = data_doc.get(sort_key) or 0
            user_object = discord.utils.find(
                lambda usr: usr.id == data_doc.get('UserID'), all_members)
            if user_object:
                if user_value:
                    leader_docs.append([user_object, user_value])
                    if len(leader_docs) >= 20:
                        break
        tcklb_cache.set_cache(cache_key, leader_docs)
        tcklb_cache.set_cache(f'{cache_key}_stamp', now)
    table_data = [[
        pos + 1 if not doc[0].id == message.author.id else f'{pos + 1} <',
        clean_name(doc[0].name, 'Unknown')[:12],
        str(doc[1])
    ] for pos, doc in enumerate(leader_docs)]
    table_body = boop(table_data, ['#', 'User Name', value_name])
    response = f'� **{lb_category} {value_name} Leaderboard**'
    response += f'\n```hs\n{table_body}\n```'
    response += f'\nLeaderboard last updated {arrow.get(leader_timer).humanize()}.'
    await message.channel.send(response)
Exemple #5
0
async def topcurrency(cmd: SigmaCommand, message: discord.Message, args: list):
    value_name = cmd.bot.cfg.pref.currency
    sort_key = 'global'
    lb_icon = cmd.bot.user.avatar_url
    lb_category = 'Global'
    search = {}
    if args:
        if args[0].lower() == 'local':
            sort_key = f'guilds.{message.guild.id}'
            search = {sort_key: {'$exists': True}}
            lb_icon = message.guild.icon_url or lb_icon
            lb_category = message.guild.name
        elif args[0].lower() == 'total':
            sort_key = 'total'
            lb_category = 'Total'
    coll = cmd.db[cmd.db.db_cfg.database].CurrencySystem
    all_docs = tcr_cache.get_cache(sort_key)
    if not all_docs:
        all_docs = await coll.find(search).sort(sort_key,
                                                -1).limit(50).to_list(None)
        tcr_cache.set_cache(sort_key, all_docs)
    leader_docs = []
    all_members = list(cmd.bot.get_all_members())
    for data_doc in all_docs:
        if sort_key == 'global' or sort_key == 'total':
            user_value = data_doc.get(sort_key) or 0
        else:
            user_value = data_doc.get('guilds').get(str(message.guild.id)) or 0
        user_object = discord.utils.find(
            lambda usr: usr.id == data_doc.get('UserID'), all_members)
        if user_object:
            if user_value:
                leader_docs.append([user_object, user_value])
                if len(leader_docs) >= 20:
                    break
    table_data = [[clean_name(doc[0].name, 'Unknown')[:12],
                   str(doc[1])] for doc in leader_docs]
    table_body = boop(table_data, ['User Name', value_name])
    response = discord.Embed(color=await get_image_colors(lb_icon))
    response.set_author(name=f'{lb_category} {value_name} Leaderboard',
                        icon_url=lb_icon)
    response.description = f'```hs\n{table_body}\n```'
    await message.channel.send(embed=response)