Exemplo n.º 1
0
    async def help(self, ctx, *, command=None):
        """Shows the help message."""
        prefix = (await self.bot.get_prefix(ctx.message))[2]

        if command:
            em = self.format_command_help(command, prefix)
            if em:
                return await ctx.send(embed=em)
            else:
                return await ctx.send(
                    'Could not find a cog or command by that name.')

        pages = []

        for name, cog in sorted(self.bot.cogs.items()):
            em = self.format_cog_help(name, cog, prefix)
            pages.append(em)

        p_session = PaginatorSession(
            ctx,
            footer_text=
            f'Type {prefix}help command for more info on a command.',
            pages=pages)

        await p_session.run()
Exemplo n.º 2
0
 async def paginate(self, ctx):
     embeds = []
     for x in range(10):
         em = discord.Embed(title=f'Page: {x+1}', description='hello' * x)
         embeds.append(em)
     session = PaginatorSession(ctx, pages=embeds)
     await session.run()
Exemplo n.º 3
0
    async def fnmatches(self, ctx, plat=None, name=None):
        '''Get a player's most recent matches.'''
        await ctx.trigger_typing()
        if plat is None and name is None:
            # connect to db
            plat = await self.get_plat(str(ctx.author.id))
            name = await self.get_name(str(ctx.author.id))
            if plat is None or name is None:
                return await ctx.send(
                    f'Use `{ctx.prefix}fnsave <plat> <name>` to save a profile.'
                )
        else:
            if plat is None or name is None:
                return await ctx.send(
                    "Please specify a username as well as the platform.")

        if plat not in ['psn', 'xbl', 'pc']:
            return await ctx.send("Invalid platform.")

        try:
            player = await self.client.get_player(plat, name)
        except Exception as e:
            return await ctx.send(f'Error {e.code}: {e.error}')

        try:
            matches = player.recent_matches
        except Exception as e:
            return await ctx.send('This player has no recent matches.')

        modes = {'p2': 'Solos', 'p10': 'Duos', 'p9': 'Squads'}

        pages = []

        for index, match in enumerate(matches):
            em = discord.Embed(color=discord.Color.green())
            em.title = f'{player.epic_user_handle}- Match {index + 1}/{len(matches)}'
            em.description = 'Platform: ' + player.platform_name_long
            em.set_thumbnail(
                url=
                'https://pbs.twimg.com/profile_images/872808170225270784/_ccP8lTm_400x400.jpg'
            )

            em.add_field(name='Match ID', value=str(match.id))
            em.add_field(name='Mode', value=modes[match.playlist])
            em.add_field(name='Minutes Played',
                         value=str(match.minutes_played))
            em.add_field(name='Kills', value=str(match.kills))

            pages.append(em)

        p_session = PaginatorSession(
            ctx,
            footer=f'Stats made by Cree-Py | Powered by fortnitetracker.com',
            pages=pages)
        await p_session.run()
Exemplo n.º 4
0
    async def topclans(self, ctx):
        '''Returns the global top 50 clans.'''

        await ctx.trigger_typing()
        try:
            clans = await self.cr.get_top_clans()
        except errors.ServerError as e:
            er = discord.Embed(title=f'Error {e.code}',
                               color=discord.Color.red(),
                               description=e.error)
            await ctx.send(embed=er)
        else:
            ems = await embeds.format_top_clans(ctx, clans)
            session = PaginatorSession(ctx=ctx, pages=ems)
            await session.run()
Exemplo n.º 5
0
 async def paginate(self, ctx):
     pages = []
     
     embed = discord.Embed(color=0xf1c40f)
     embed.title = "page 1"
     embed.description = "lol"
     
     pages.append(embed)
     
     embed = discord.Embed(color=0xf1c40f)
     embed.title = "page 1"
     embed.description = "lol2"
     
     pages.append(embed)
     
     p_session = PaginatorSession(ctx, footer=f'pagination test', pages=pages)
     await p_session.run()
Exemplo n.º 6
0
    async def cocprofile(self, ctx, *, tag_or_user: TagCheck = None):
        '''Gets the Clash of Clans profile of a player.'''
        tag = await self.resolve_tag(ctx, tag_or_user)

        await ctx.trigger_typing()
        try:
            async with self.session.get(
                    f"https://api.clashofclans.com/v1/players/%23{tag}") as p:
                profile = await p.json()
        except Exception as e:
            return await ctx.send(f'`{e}`')
        else:
            ems = await embeds_coc.format_profile(ctx, profile)
            session = PaginatorSession(
                ctx=ctx,
                pages=ems,
                footer_text='Statsy | Powered by the COC API')
            await session.run()
Exemplo n.º 7
0
    async def cocclan(self, ctx, *, tag_or_user: TagCheck = None):
        '''Gets a clan by tag or by profile. (tagging the user)'''
        tag = await self.resolve_tag(ctx, tag_or_user, clan=True)

        await ctx.trigger_typing()
        try:
            async with self.session.get(
                    f"https://api.clashofclans.com/v1/clans/%23{tag}") as c:
                clan = await c.json()
        except Exception as e:
            return await ctx.send(f'`{e}`')
        else:
            ems = await embeds_coc.format_clan(ctx, clan)
            session = PaginatorSession(
                ctx=ctx,
                pages=ems,
                footer_text='Statsy | Powered by the COC API')
            await session.run()
Exemplo n.º 8
0
    async def clan(self, ctx, *, tag_or_user: TagCheck = None):
        '''Gets a clan by tag or by profile. (tagging the user)'''
        tag = await self.resolve_tag(ctx, tag_or_user, clan=True)

        await ctx.trigger_typing()
        try:
            clan = await self.cr.get_clan(tag)
        except errors.ServerError as e:
            er = discord.Embed(title=f'Error {e.code}',
                               color=discord.Color.red(),
                               description=e.error)
            await ctx.send(embed=er)
        except errors.NotFoundError:
            await ctx.send('Thae tag cannot be found!')
        else:
            ems = await embeds.format_clan(ctx, clan)
            session = PaginatorSession(ctx=ctx, pages=ems)
            await session.run()
Exemplo n.º 9
0
    async def cocmembers(self, ctx, *, tag_or_user: TagCheck = None):
        '''Gets all the members of a clan.'''
        tag = await self.resolve_tag(ctx, tag_or_user, clan=True)

        await ctx.trigger_typing()
        try:
            async with self.session.get(
                    f"https://api.clashofclans.com/v1/clans/%23{tag}") as c:
                clan = await c.json()
        except Exception as e:
            return await ctx.send(f'`{e}`')
        else:
            ems = await embeds_coc.format_members(ctx, clan)
            if len(ems) > 1:
                session = PaginatorSession(
                    ctx=ctx,
                    pages=ems,
                    footer_text=f'{clan["members"]}/50 members')
                await session.run()
            else:
                await ctx.send(embed=ems[0])
Exemplo n.º 10
0
async def help(ctx, *, command: str = None):
    '''Shows this message'''

    if command is not None:
        command = command.title()
        aliases = {
            'clash of clans': 'Clash_of_Clans',
            'coc': 'Clash_of_Clans',
            'cr': 'Clash_Royale',
            'Clash Of Clans': 'Clash_of_Clans',
            'utils': 'Utility'
        }

        if command.lower() in aliases.keys():
            command = aliases[command]

        cog = bot.get_cog(command.replace(' ', '_'))
        cmd = bot.get_command(command)
        if cog is not None:
            em = format_cog_help(ctx, cog)
        elif cmd is not None:
            em = format_command_help(ctx, cmd)
        else:
            await ctx.send('No commands found.')
        return await ctx.send(embed=em)

    pages = []
    for cog in bot.cogs.values():
        em = format_cog_help(ctx, cog)
        pages.append(em)
    em = format_bot_help(ctx)
    pages.append(em)

    p_session = PaginatorSession(
        ctx,
        footer=f'Type {ctx.prefix}help command for more info on a command.',
        pages=pages)
    await p_session.run()
Exemplo n.º 11
0
    async def ovprofile(self, ctx, region, *, tag_or_user: TagCheck = None):
        '''Gets the Overwatch profile of a player.'''
        tag = await self.resolve_tag(ctx, tag_or_user)
        region = region.lower()
        tag = tag.replace('#', '-')
        region_aliases = {'korea': 'kr', 'america': 'us', 'europe': 'eu'}
        if region in region_aliases:
            region = region_aliases[region]
        regions = ['kr', 'us', 'eu']
        if region not in regions:
            return await ctx.send('Please enter a correct region!')

        await ctx.trigger_typing()

        try:
            async with self.session.get(
                    f"https://owapi.net/api/v3/u/{tag}/stats") as p:
                profile = await p.json()
        except Exception as e:
            return await ctx.send(f'`{e}`')
        else:
            try:
                ems = await embeds_ov.format_profile(ctx,
                                                     tag.split('-')[0],
                                                     profile[region]['stats'])
            except Exception as e:
                print(e)
                ems = [
                    discord.Embed(
                        color=embeds_ov.random_color(),
                        description="There aren't any stats for this region!")
                ]
            if len(ems) > 1:
                session = PaginatorSession(ctx=ctx, pages=ems)
                await session.run()
            else:
                await ctx.send(embed=ems[0])
Exemplo n.º 12
0
    async def members(self, ctx, *, tag_or_user: TagCheck = None):
        '''Gets all the members of a clan.'''
        tag = await self.resolve_tag(ctx, tag_or_user, clan=True)

        await ctx.trigger_typing()
        try:
            clan = await self.cr.get_clan(tag)
        except errors.ServerError as e:
            er = discord.Embed(title=f'Error {e.code}',
                               color=discord.Color.red(),
                               description=e.error)
            await ctx.send(embed=em)
        except errors.NotFoundError:
            await ctx.send('Thae tag cannot be found!')
        else:
            ems = await embeds.format_members(ctx, clan)
            if len(ems) > 1:
                session = PaginatorSession(
                    ctx=ctx,
                    pages=ems,
                    footer_text=f'{len(clan.members)}/50 members')
                await session.run()
            else:
                await ctx.send(embed=ems[0])
Exemplo n.º 13
0
    async def seasons(self, ctx, *, tag_or_user: TagCheck = None):
        '''Gets the season results a player.'''
        tag = await self.resolve_tag(ctx, tag_or_user)

        await ctx.trigger_typing()
        try:
            profile = await self.cr.get_profile(tag)
        except errors.ServerError as e:
            er = discord.Embed(title=f'Error {e.code}',
                               color=discord.Color.red(),
                               description=e.error)
            await ctx.send(embed=er)
        except errors.NotFoundError:
            await ctx.send('Thae tag cannot be found!')
        else:
            ems = await embeds.format_seasons(ctx, profile)
            if len(ems) > 0:
                session = PaginatorSession(ctx=ctx,
                                           pages=ems,
                                           footer_text=f'{len(ems)} seasons')
                await session.run()
            else:
                await ctx.send(
                    f"**{profile.name}** doesn't have any season results.")
Exemplo n.º 14
0
    async def bsband(self, ctx, id=None):
        '''Get a brawl stars band's stats'''
        def get_attr(type: str, attr: str):
            return soup.find(type, class_=attr).text

        def get_all_attrs(type: str, attr: str):
            return soup.find_all(type, class_=attr)

        await ctx.trigger_typing()
        if not id:
            id = await self.get_tag(str(ctx.message.author.id))
            id = id.strip('#').replace('O', '0')
            if id == 'None':
                return await ctx.send(
                    f'Please save your player tag using `{ctx.prefix}bs save <tag>`'
                )
            else:
                id = await self.get_tag(str(ctx.author.id))
                if self.check_tag(id):
                    # get player stats
                    try:
                        async with aiohttp.ClientSession() as session:
                            async with session.get(
                                    f'https://brawlstats.io/players/{id}'
                            ) as resp:
                                data = await resp.read()
                        soup = BeautifulSoup(data, 'lxml')
                    except Exception as e:
                        await ctx.send(f'`{e}`')
                    bandtag = get_attr('div', 'band-tag').strip("#")
                    try:
                        async with aiohttp.ClientSession() as session:
                            async with session.get(
                                    f'https://brawlstats.io/bands/{bandtag}'
                            ) as resp:
                                data = await resp.read()
                        soup = BeautifulSoup(data, 'lxml')
                    except Exception as e:
                        await ctx.send(f'`{e}`')
                    else:
                        success = True
                else:
                    return await ctx.send("You have an invalid tag.")
        else:
            id = id.strip('#').replace('O', '0')
            if self.check_tag(id):
                bandtag = id.strip('#')
                try:
                    async with aiohttp.ClientSession() as session:
                        async with session.get(
                                f'https://brawlstats.io/bands/{bandtag}'
                        ) as resp:
                            data = await resp.read()
                    soup = BeautifulSoup(data, 'lxml')
                except Exception as e:
                    await ctx.send(f'`{e}`')
                else:
                    success = True
            else:
                await ctx.send(
                    "Invalid tag. Tags can only contain the following characters: `0289PYLQGRJCUV`"
                )
        if success:
            pages = []
            name = str(get_attr('div', 'name'))
            desc = str(get_attr('div', 'clan-description'))

            trophies = get_all_attrs('div', 'trophies')[0].text
            required = get_all_attrs('div', 'trophies')[1].text

            n = 1
            r = 0
            t = 0
            info = []

            for i in range(4):
                player = {}
                player['name'] = get_all_attrs('div', 'name')[n].text
                player['role'] = get_all_attrs('div', 'clan')[r].text
                player['trophies'] = get_all_attrs('div',
                                                   'trophy-count')[t].text
                info.append(player)
                n += 1
                r += 1
                t += 1

            source = str(get_all_attrs('div', 'badge'))
            src = source.split('src="')[1]
            url = src.split('" w')[0]
            imgpath = url.split('"')[0]

            em = discord.Embed(color=discord.Color.green())
            em.title = f'{name} (#{bandtag})'
            em.description = desc
            em.set_thumbnail(url=f'https://brawlstats.io{imgpath}')
            em.add_field(name="Total trophies", value=trophies)
            em.add_field(name="Required trophies", value=required)
            em.set_footer(icon_url='http://brawlstats.io/images/bs-stats.png')
            pages.append(em)

            em = discord.Embed(color=discord.Color.green())
            em.title = "Top members"
            em.description = "This is calculated through total trophy count."
            em.set_thumbnail(url=f'https://brawlstats.io{imgpath}')
            em.set_footer(icon_url='http://brawlstats.io/images/bs-stats.png')
            for entry in info:
                em.add_field(
                    name=entry['name'],
                    value=
                    f"{entry['role'].replace(' ', '-')}\n{entry['trophies']}")
            pages.append(em)

            p_session = PaginatorSession(
                ctx,
                footer=f'Stats made by Cree-Py | Powered by brawlstats',
                pages=pages)
            await p_session.run()
Exemplo n.º 15
0
    async def bsevents(self, ctx, when=None):
        '''Information about events.'''

        url = 'https://brawlstats.io/events/'

        def get_attr(type: str, attr: str):
            return soup.find(type, class_=attr).text

        def get_all_attrs(type: str, attr: str):
            return soup.find_all(type, class_=attr)

        now = datetime.datetime.now(pytz.UTC)
        now = now.astimezone(pytz.timezone("US/Pacific"))
        dayofwk = int(now.weekday()) + 1

        async with aiohttp.ClientSession() as session:
            async with session.get(url) as resp:
                data = await resp.read()
        soup = BeautifulSoup(data, 'lxml')

        if when not in ('current', 'upcoming', 'both'):
            return await ctx.send(
                f'Usage: `{ctx.prefix}bsevents <current|upcoming|both>`')
        if when == "current":
            await ctx.trigger_typing()
            em = discord.Embed(color=discord.Color.green())
            em.set_footer(text='Stats made by Cree-Py | Powered by brawlstats',
                          icon_url='http://brawlstats.io/images/bs-stats.png')
            if dayofwk in [1, 2, 3, 4, 5]:
                em.title = "Current events"
                j = 0
                for i in range(3):
                    val = str(
                        get_all_attrs(
                            'h6',
                            'card-subtitle mb-2 text-muted')[i].text) + '\n'
                    val += str(get_all_attrs('div', 'card-map-coins')[j].text)
                    val += ' Coins\n'
                    j += 1
                    val += str(get_all_attrs('div', 'card-map-coins')[j].text)
                    val += ' Coins'
                    j += 1
                    em.add_field(name=str(
                        get_all_attrs('h4', 'card-title')[i].text),
                                 value=val)
                await ctx.send(embed=em)
            else:
                em = discord.Embed(color=discord.Color.green())
                em.set_footer(
                    text='Stats made by Cree-Py | Powered by brawlstats',
                    icon_url='http://brawlstats.io/images/bs-stats.png')
                em.title = "Current events"
                j = 0
                for i in range(3):
                    val = str(
                        get_all_attrs(
                            'h6',
                            'card-subtitle mb-2 text-muted')[i].text) + '\n'
                    val += str(get_all_attrs('div', 'card-map-coins')[j].text)
                    val += ' Coins\n'
                    j += 1
                    val += str(get_all_attrs('div', 'card-map-coins')[j].text)
                    val += ' Coins'
                    j += 1
                    em.add_field(name=str(
                        get_all_attrs('h4', 'card-title')[i].text),
                                 value=val)
                em.add_field(
                    name=str(get_all_attrs('h4', 'card-title')[3].text),
                    value=str(
                        get_all_attrs(
                            'h6', 'card-subtitle mb-2 text-muted')[3].text) +
                    '\n' + str(get_attr('div', 'card-map-tickets')) +
                    ' Tickets')
                await ctx.send(embed=em)
        elif when == "upcoming":
            await ctx.trigger_typing()
            em = discord.Embed(color=discord.Color.green())
            em.set_footer(text='Stats made by Cree-Py | Powered by brawlstats',
                          icon_url='http://brawlstats.io/images/bs-stats.png')
            j = 6
            if dayofwk in [1, 2, 3, 4, 5]:
                em.title = "Upcoming events"
                for i in range(3):
                    val = str(
                        get_all_attrs(
                            'h6', 'card-subtitle mb-2 text-muted')[i + 3].text)
                    val += '\n'
                    val += str(get_all_attrs('div', 'card-map-coins')[j].text)
                    val += ' Coins\n'
                    j += 1
                    val += str(get_all_attrs('div', 'card-map-coins')[j].text)
                    val += ' Coins'
                    j += 1
                    em.add_field(name=str(
                        get_all_attrs('h4', 'card-title')[i + 3].text),
                                 value=val)

                em.add_field(
                    name=str(get_all_attrs('h4', 'card-title')[6].text),
                    value=str(
                        get_all_attrs(
                            'h6', 'card-subtitle mb-2 text-muted')[6].text) +
                    '\n' + str(get_attr('div', 'card-map-tickets')) +
                    ' Tickets')
                await ctx.send(embed=em)
            else:
                em.title = "Upcoming events"
                for i in range(3):
                    val = str(
                        get_all_attrs(
                            'h6', 'card-subtitle mb-2 text-muted')[i + 4].text)
                    val += '\n'
                    val += str(get_all_attrs('div', 'card-map-coins')[j].text)
                    val += ' Coins\n'
                    j += 1
                    val += str(get_all_attrs('div', 'card-map-coins')[j].text)
                    val += ' Coins'
                    j += 1
                    em.add_field(name=str(
                        get_all_attrs('h4', 'card-title')[i + 4].text),
                                 value=val)
                em.add_field(
                    name=str(get_all_attrs('h4', 'card-title')[7].text),
                    value=str(
                        get_all_attrs(
                            'h6', 'card-subtitle mb-2 text-muted')[7].text) +
                    '\n' + str(get_attr('div', 'card-map-tickets')) +
                    ' Tickets')
                await ctx.send(embed=em)
        elif when == "both":
            em = discord.Embed(color=discord.Color.green())
            em.set_footer(icon_url='http://brawlstats.io/images/bs-stats.png')
            pages = []
            await ctx.trigger_typing()
            if dayofwk in [1, 2, 3, 4, 5]:
                em.title = "Current events"
                j = 0
                for i in range(3):
                    val = str(
                        get_all_attrs(
                            'h6',
                            'card-subtitle mb-2 text-muted')[i].text) + '\n'
                    val += str(get_all_attrs('div', 'card-map-coins')[j].text)
                    val += ' Coins\n'
                    j += 1
                    val += str(get_all_attrs('div', 'card-map-coins')[j].text)
                    val += ' Coins'
                    j += 1
                    em.add_field(name=str(
                        get_all_attrs('h4', 'card-title')[i].text),
                                 value=val)
                pages.append(em)

                em = discord.Embed(color=discord.Color.green())
                em.set_footer(
                    icon_url='http://brawlstats.io/images/bs-stats.png')
                em.title = "Upcoming events"
                for i in range(3):
                    val = str(
                        get_all_attrs(
                            'h6', 'card-subtitle mb-2 text-muted')[i + 3].text)
                    val += '\n'
                    val += str(get_all_attrs('div', 'card-map-coins')[j].text)
                    val += ' Coins\n'
                    j += 1
                    val += str(get_all_attrs('div', 'card-map-coins')[j].text)
                    val += ' Coins'
                    j += 1
                    em.add_field(name=str(
                        get_all_attrs('h4', 'card-title')[i + 3].text),
                                 value=val)

                em.add_field(
                    name=str(get_all_attrs('h4', 'card-title')[6].text),
                    value=str(
                        get_all_attrs(
                            'h6', 'card-subtitle mb-2 text-muted')[6].text) +
                    '\n' + str(get_attr('div', 'card-map-tickets')) +
                    ' Tickets')
                pages.append(em)

                p_session = PaginatorSession(
                    ctx,
                    footer='Stats made by Cree-Py | Powered by brawlstats',
                    pages=pages)
                await p_session.run()
            else:
                em = discord.Embed(color=discord.Color.green())
                em.set_footer(
                    icon_url='http://brawlstats.io/images/bs-stats.png')
                em.title = "Current events"
                j = 0
                for i in range(3):
                    val = str(
                        get_all_attrs(
                            'h6',
                            'card-subtitle mb-2 text-muted')[i].text) + '\n'
                    val += str(get_all_attrs('div', 'card-map-coins')[j].text)
                    val += ' Coins\n'
                    j += 1
                    val += str(get_all_attrs('div', 'card-map-coins')[j].text)
                    val += ' Coins'
                    j += 1
                    em.add_field(name=str(
                        get_all_attrs('h4', 'card-title')[i].text),
                                 value=val)
                em.add_field(
                    name=str(get_all_attrs('h4', 'card-title')[3].text),
                    value=str(
                        get_all_attrs(
                            'h6', 'card-subtitle mb-2 text-muted')[3].text) +
                    '\n' + str(get_attr('div', 'card-map-tickets')) +
                    ' Tickets')
                pages.append(em)

                em = discord.Embed(color=discord.Color.green())
                em.set_footer(
                    icon_url='http://brawlstats.io/images/bs-stats.png')
                em.title = "Upcoming events"
                for i in range(3):
                    val = str(
                        get_all_attrs(
                            'h6', 'card-subtitle mb-2 text-muted')[i + 4].text)
                    val += '\n'
                    val += str(get_all_attrs('div', 'card-map-coins')[j].text)
                    val += ' Coins\n'
                    j += 1
                    val += str(get_all_attrs('div', 'card-map-coins')[j].text)
                    val += ' Coins'
                    j += 1
                    em.add_field(name=str(
                        get_all_attrs('h4', 'card-title')[i + 4].text),
                                 value=val)
                em.add_field(
                    name=str(get_all_attrs('h4', 'card-title')[7].text),
                    value=str(
                        get_all_attrs(
                            'h6', 'card-subtitle mb-2 text-muted')[7].text) +
                    '\n' + str(get_attr('div', 'card-map-tickets')) +
                    ' Tickets')
                pages.append(em)
                p_session = PaginatorSession(
                    ctx,
                    footer='Stats made by Cree-Py | Powered by brawlstats',
                    pages=pages)
                await p_session.run()
Exemplo n.º 16
0
    async def pokeinfo(self, ctx, pokemon):
        '''Get stats about a pokemon. You can specify either its pokedex number or name.'''
        await ctx.trigger_typing()
        pages = []
        try:
            async with aiohttp.ClientSession() as session:
                async with session.get(f'https://pokeapi.co/api/v2/pokemon/{pokemon}/') as resp:
                    data = await resp.json()
                    id = data['id']
                    pokemonname = data['name']
                    em = discord.Embed(color=discord.Color.green())
                    em.title = data['name'].title()
                    em.set_thumbnail(url=data['sprites']['front_default'])
                    em.add_field(name="Height", value=str(data['height'] / 10) + ' meters')
                    em.add_field(name="Weight", value=str(data['weight'] / 10) + ' kilograms')
                    j = 0
                    abilities = ""
                    for i in range(len(data['abilities'])):
                        abilities += data['abilities'][i]['ability']['name'].title().replace('-', ' ') + "\n"
                        j += 1
                    if j == 1:
                        em.add_field(name="Ability", value=abilities)
                    else:
                        em.add_field(name="Abilities", value=abilities)
                    types = ""
                    j = 0
                    for i in range(len(data['types'])):
                        types += data['types'][i]['type']['name'].title().replace('-', ' ') + "\n"
                        j += 1
                    if j == 1:
                        em.add_field(name="Type", value=types)
                    else:
                        em.add_field(name="Types", value=types)
                    for i in range(len(data['stats'])):
                        name = data['stats'][i]['stat']['name'].title().replace('-', ' ')
                        if name == "Hp":
                            name = "HP"
                        em.add_field(name=name, value=data['stats'][i]['base_stat'])

            async with aiohttp.ClientSession() as session:
                async with session.get('https://pokeapi.co/api/v2/pokedex/national/') as resp:
                    data = await resp.json()
                    pokedex = data['pokemon_entries'][id - 1]['pokemon_species']['url']
            async with aiohttp.ClientSession() as session:
                async with session.get(pokedex) as resp:
                    data = await resp.json()
                    for i in range(len(data['flavor_text_entries'])):
                        if data['flavor_text_entries'][i]['language']['name'] == "en":
                            description = data['flavor_text_entries'][i]['flavor_text']
                            break
                    em.description = description
            pages.append(em)
            async with aiohttp.ClientSession() as session:
                async with session.get(f'https://pokeapi.co/api/v2/pokemon/{pokemon}/') as resp:
                    data = await resp.json()
                    moves = ""
                    for i in range(len(data['moves'])):
                        if not i == 0:
                            moves += ", "
                        if len(moves) < 1024:
                            moves += data['moves'][i]['move']['name'].title().replace('-', ' ')
                        else:
                            moves = "Sorry, this pokemon knows too many moves to be displayed within this embed."
            em = discord.Embed(color=discord.Color.green())

            em.add_field(name="Learnable Moves", value=moves)
            em.set_thumbnail(url=data['sprites']['back_default'])
            pages.append(em)

            em = discord.Embed(color=discord.Color.green())
            em.set_image(url=f'https://raw.githubusercontent.com/110Percent/beheeyem-data/master/gifs/{pokemonname}.gif')
            em.title = pokemonname.title()

            p_session = PaginatorSession(ctx, pages=pages)
            await p_session.run()
        except Exception as e:
            await ctx.send("That is not a valid pokemon name or pokedex number. Please check your spelling or note that no Gen 7 pokemon are included in pokeapi.")
            await ctx.send(e)
Exemplo n.º 17
0
    async def random(self, ctx):
        '''Get stats about a random pokemon.'''
        await ctx.trigger_typing()
        num = random.randint(1, 721)
        pages = []
        async with aiohttp.ClientSession() as session:
            async with session.get(
                    f'https://pokeapi.co/api/v2/pokemon/{num}/') as resp:
                data = await resp.json()
                id = data['id']
                em = discord.Embed(color=discord.Color.green())
                em.title = data['name'].title()
                em.set_thumbnail(url=data['sprites']['front_default'])
                em.add_field(name="Height",
                             value=str(data['height'] / 10) + ' meters')
                em.add_field(name="Weight",
                             value=str(data['weight'] / 10) + ' kilograms')
                j = 0
                abilities = ""
                for i in range(len(data['abilities'])):
                    abilities += data['abilities'][i]['ability']['name'].title(
                    ).replace('-', ' ') + "\n"
                    j += 1
                if j == 1:
                    em.add_field(name="Ability", value=abilities)
                else:
                    em.add_field(name="Abilities", value=abilities)
                types = ""
                j = 0
                for i in range(len(data['types'])):
                    types += data['types'][i]['type']['name'].title().replace(
                        '-', ' ') + "\n"
                    j += 1
                if j == 1:
                    em.add_field(name="Type", value=types)
                else:
                    em.add_field(name="Types", value=types)
                for i in range(len(data['stats'])):
                    name = data['stats'][i]['stat']['name'].title().replace(
                        '-', ' ')
                    if name == "Hp":
                        name = "HP"
                    em.add_field(name=name,
                                 value=data['stats'][i]['base_stat'])

        async with aiohttp.ClientSession() as session:
            async with session.get(
                    'https://pokeapi.co/api/v2/pokedex/national/') as resp:
                data = await resp.json()
                pokedex = data['pokemon_entries'][id -
                                                  1]['pokemon_species']['url']
        async with aiohttp.ClientSession() as session:
            async with session.get(pokedex) as resp:
                data = await resp.json()
                for i in range(len(data['flavor_text_entries'])):
                    if data['flavor_text_entries'][i]['language'][
                            'name'] == "en":
                        description = data['flavor_text_entries'][i][
                            'flavor_text']
                        break
                    else:
                        pass
                em.description = description
        pages.append(em)
        async with aiohttp.ClientSession() as session:
            async with session.get(
                    f'https://pokeapi.co/api/v2/pokemon/{num}/') as resp:
                data = await resp.json()
                moves = ""
                tooMany = False
                for i in range(len(data['moves'])):
                    if not i == 0:
                        moves += ", "
                    if len(moves) < 1024:
                        moves += data['moves'][i]['move']['name'].title(
                        ).replace('-', ' ')
                    else:
                        tooMany = True
        if tooMany:
            moves = "Sorry, this pokemon knows too many moves to be displayed within this embed."
        em = discord.Embed(color=discord.Color.green())
        em.add_field(name="Learnable Moves", value=moves)
        em.set_thumbnail(url=data['sprites']['back_default'])
        pages.append(em)

        p_session = PaginatorSession(ctx, pages=pages)
        await p_session.run()
Exemplo n.º 18
0
    async def fnprofile(self, ctx, plat=None, name=None):
        '''Get your fortnite stats.'''
        await ctx.trigger_typing()
        if plat is None and name is None:
            # connect to db
            plat = await self.get_plat(str(ctx.author.id))
            name = await self.get_name(str(ctx.author.id))
            if plat is None or name is None:
                return await ctx.send(
                    f'Use `{ctx.prefix}fnsave <plat> <name>` to save a profile.'
                )
        else:
            if plat is None or name is None:
                return await ctx.send(
                    "Please specify a username as well as the platform.")

        if plat not in ['psn', 'xbl', 'pc']:
            return await ctx.send("Invalid platform.")

        hasSolos = True
        hasDuos = True
        hasSquads = True
        hasLifetime = True

        try:
            player = await self.client.get_player(plat, name)
        except Exception as e:
            return await ctx.send(f'```py\nError {e.code}: {e.error}\n```')
        try:
            solos = await player.get_solos()
        except Exception as e:
            hasSolos = False
        try:
            duos = await player.get_duos()
        except Exception as e:
            hasDuos = False
        try:
            squads = await player.get_squads()
        except Exception as e:
            hasSquads = False
        try:
            lifetime = await player.get_lifetime_stats()
        except Exception as e:
            hasLifetime = False

        pages = []

        if hasLifetime:
            em = discord.Embed(color=discord.Color.green())
            em.title = player.epic_user_handle + '- Lifetime Stats'
            em.description = 'Platform: ' + player.platform_name_long
            em.add_field(name='Wins (%)',
                         value=f'{lifetime[8].value} ({lifetime[9] .value})')
            em.add_field(name='Top 5', value=lifetime[1].value)
            em.add_field(name='Top 12', value=lifetime[4].value)

            em.add_field(name='Score', value=lifetime[6].value)
            em.add_field(name='Matches Played', value=lifetime[7].value)
            em.add_field(name='Time Played', value=lifetime[13].value)

            em.add_field(name='Kills', value=lifetime[10].value)
            em.add_field(name='Kill/Death Ratio', value=lifetime[11].value)
            em.add_field(name='Kills/Min', value=lifetime[12].value)

            pages.append(em)

        if hasSolos:
            em = discord.Embed(color=discord.Color.green())
            em.title = player.epic_user_handle + '- Solos'
            em.description = f'Platform: {player.platform_name_long}'
            em.add_field(name="Victory Royales", value=solos.top1.value)
            em.add_field(name='Top 10', value=solos.top10.value)
            em.add_field(name='Top 25', value=solos.top25.value)

            em.add_field(name="Score", value=solos.score.value)
            em.add_field(
                name="TRN Rating",
                value=
                f'[{solos.trn_rating.display_value}](https://fortnitetracker.com/article/23/trn-rating-you)'
            )
            em.add_field(name="K/D", value=solos.kd.value)

            em.add_field(name="Kills", value=solos.kills.value)
            em.add_field(name="Kills per Minute", value=solos.kpm.value)
            em.add_field(name="Kills per Match", value=solos.kpg.value)

            em.add_field(name="Matches Played", value=solos.matches.value)
            em.add_field(name="Minutes Played",
                         value=solos.minutes_played.display_value)
            em.add_field(name="Average Match Time",
                         value=solos.avg_time_played.display_value)
            pages.append(em)

        if hasDuos:
            em = discord.Embed(color=discord.Color.green())
            em.title = player.epic_user_handle + '- Duos'
            em.description = f'Platform: {player.platform_name_long}'
            em.add_field(name="Victory Royales", value=duos.top1.value)
            em.add_field(name='Top 5', value=duos.top5.value)
            em.add_field(name='Top 10', value=duos.top10.value)

            em.add_field(name="Score", value=duos.score.value)
            em.add_field(
                name="TRN Rating",
                value=
                f'[{duos.trn_rating.display_value}](https://fortnitetracker.com/article/23/trn-rating-you)'
            )
            em.add_field(name="K/D", value=duos.kd.value)

            em.add_field(name="Kills", value=duos.kills.value)
            em.add_field(name="Kills per Minute", value=duos.kpm.value)
            em.add_field(name="Kills per Match", value=duos.kpg.value)

            em.add_field(name="Matches Played", value=duos.matches.value)
            em.add_field(name="Minutes Played",
                         value=duos.minutes_played.display_value)
            em.add_field(name="Average Match Time",
                         value=duos.avg_time_played.display_value)
            pages.append(em)

        if hasSquads:
            em = discord.Embed(color=discord.Color.green())
            em.title = player.epic_user_handle + '- Squads'
            em.description = f'Platform: {player.platform_name_long}'
            em.add_field(name="Victory Royales", value=squads.top1.value)
            em.add_field(name='Top 3', value=squads.top3.value)
            em.add_field(name='Top 6', value=squads.top6.value)

            em.add_field(name="Score", value=squads.score.value)
            em.add_field(
                name="TRN Rating",
                value=
                f'[{squads.trn_rating.display_value}](https://fortnitetracker.com/article/23/trn-rating-you)'
            )
            em.add_field(name="K/D", value=squads.kd.value)

            em.add_field(name="Kills", value=squads.kills.value)
            em.add_field(name="Kills per Minute", value=squads.kpm.value)
            em.add_field(name="Kills per Match", value=squads.kpg.value)

            em.add_field(name="Matches Played", value=squads.matches.value)
            em.add_field(name="Minutes Played",
                         value=squads.minutes_played.display_value)
            em.add_field(name="Average Match Time",
                         value=squads.avg_time_played.display_value)
            pages.append(em)

        p_session = PaginatorSession(
            ctx,
            footer=f'Stats made by Cree-Py | Powered by fortnitetracker.com',
            pages=pages)
        await p_session.run()
Exemplo n.º 19
0
    async def fnprofile(self, ctx, name=None, *, plat=None):
        '''Get stats for your fortnite account !'''
        pages = []
        client = pynite.Client('5a20baea-b8a7-4e42-9de3-741534219452')
        player = await client.get_player(plat, name)
        lifetime = await player.get_lifetime_stats()
        solo = await player.get_solos()
        duos = await player.get_duos()
        squads = await player.get_squads()
        
        if plat is None:
            plat = 'pc'
            
        if name is None:
            return await ctx.send("Please specify a username as well as the platform (defaults to pc if not specified).")

        if plat not in ['psn', 'xbl', 'pc']:
            return await ctx.send("Invalid platform, platforms are {psn, xbl, pc}.")
        
        embed = discord.Embed(color=discord.Color.blue())
        embed.title = 'Name: ' + player.epic_user_handle + ' - LifeTime stats'
        embed.description = 'Platform: ' + player.platform_name_long
        embed.add_field(name=lifetime[9].key, value=lifetime[9].value)
        embed.add_field(name=lifetime[1].key, value=lifetime[1].value)
        embed.add_field(name=lifetime[4].key, value=lifetime[4].value)
        embed.add_field(name=lifetime[6].key, value=lifetime[6].value)
        embed.add_field(name=lifetime[7].key, value=lifetime[7].value)
        embed.add_field(name=lifetime[13].key, value=lifetime[13].value)
        embed.add_field(name=lifetime[10].key, value=lifetime[10].value)
        embed.add_field(name=lifetime[11].key, value=lifetime[11].value)
        embed.add_field(name=lifetime[12].key, value=lifetime[12].value)
        
        pages.append(embed)
        
        embed = discord.Embed(color=discord.Color.blue())
        embed.title = 'Name: ' + player.epic_user_handle + ' - Solo Stats'
        embed.description = 'Platform: ' + player.platform_name_long
        embed.add_field(name='Victory Royales', value=solo.top1.value)
        embed.add_field(name='Top 10', value=solo.top10.value)
        embed.add_field(name='Score', value=solo.score.value)
        embed.add_field(name='K/D', value=solo.kd.value)
        embed.add_field(name='Kills', value=solo.kills.value)
        embed.add_field(name='Average kills per match', value=solo.kpg.value)
        embed.add_field(name='Matches Played', value=solo.matches.value)
        
        pages.append(embed)
        
        embed = discord.Embed(color=discord.Color.blue())
        embed.title = 'Name: ' + player.epic_user_handle + ' - Duo Stats'
        embed.description = 'Platform: ' + player.platform_name_long
        embed.add_field(name='Victory Royales', value=solo.top1.value)
        embed.add_field(name='Top 10', value=duos.top10.value)
        embed.add_field(name='Score', value=duos.score.value)
        embed.add_field(name='K/D', value=duos.kd.value)
        embed.add_field(name='Kills', value=duos.kills.value)
        embed.add_field(name='Average kills per match', value=duos.kpg.value)
        embed.add_field(name='Matches Played', value=duos.matches.value)
        
        pages.append(embed)
        
        embed = discord.Embed(color=discord.Color.blue())
        embed.title = 'Name: ' + player.epic_user_handle + ' - Squad Stats'
        embed.description = 'Platform: ' + player.platform_name_long
        embed.add_field(name='Victory Royales', value=solo.top1.value)
        embed.add_field(name='Top 10', value=squads.top10.value)
        embed.add_field(name='Score', value=squads.score.value)
        embed.add_field(name='K/D', value=squads.kd.value)
        embed.add_field(name='Kills', value=squads.kills.value)
        embed.add_field(name='Average kills per match', value=squads.kpg.value)
        embed.add_field(name='Matches Played', value=squads.matches.value)
        
        pages.append(embed)
        p_session = PaginatorSession(ctx, footer=f'Bot made by Nyan Pikachu#4148 | Powered by fortnitetracker.com', pages=pages)
        await p_session.run()
Exemplo n.º 20
0
    async def roleinfo(self, ctx, *, rolename):
        '''Get information about a role. Case Sensitive!'''
        try:
            role = discord.utils.get(ctx.message.guild.roles, name=rolename)
        except:
            return await ctx.send(
                f"Role could not be found. The system IS case sensitive!")

        em = discord.Embed(description=f'Role ID: {str(role.id)}',
                           color=role.color or discord.Color.green())
        em.title = role.name
        perms = ""
        if role.permissions.administrator:
            perms += "Administrator, "
        if role.permissions.create_instant_invite:
            perms += "Create Instant Invite, "
        if role.permissions.kick_members:
            perms += "Kick Members, "
        if role.permissions.ban_members:
            perms += "Ban Members, "
        if role.permissions.manage_channels:
            perms += "Manage Channels, "
        if role.permissions.manage_guild:
            perms += "Manage Guild, "
        if role.permissions.add_reactions:
            perms += "Add Reactions, "
        if role.permissions.view_audit_log:
            perms += "View Audit Log, "
        if role.permissions.read_messages:
            perms += "Read Messages, "
        if role.permissions.send_messages:
            perms += "Send Messages, "
        if role.permissions.send_tts_messages:
            perms += "Send TTS Messages, "
        if role.permissions.manage_messages:
            perms += "Manage Messages, "
        if role.permissions.embed_links:
            perms += "Embed Links, "
        if role.permissions.attach_files:
            perms += "Attach Files, "
        if role.permissions.read_message_history:
            perms += "Read Message History, "
        if role.permissions.mention_everyone:
            perms += "Mention Everyone, "
        if role.permissions.external_emojis:
            perms += "Use External Emojis, "
        if role.permissions.connect:
            perms += "Connect to Voice, "
        if role.permissions.speak:
            perms += "Speak, "
        if role.permissions.mute_members:
            perms += "Mute Members, "
        if role.permissions.deafen_members:
            perms += "Deafen Members, "
        if role.permissions.move_members:
            perms += "Move Members, "
        if role.permissions.use_voice_activation:
            perms += "Use Voice Activation, "
        if role.permissions.change_nickname:
            perms += "Change Nickname, "
        if role.permissions.manage_nicknames:
            perms += "Manage Nicknames, "
        if role.permissions.manage_roles:
            perms += "Manage Roles, "
        if role.permissions.manage_webhooks:
            perms += "Manage Webhooks, "
        if role.permissions.manage_emojis:
            perms += "Manage Emojis, "

        if perms is None:
            perms = "None"
        else:
            perms = perms.strip(", ")

        em.add_field(name='Hoisted', value=str(role.hoist))
        em.add_field(name='Position from bottom', value=str(role.position))
        em.add_field(name='Managed by Integration', value=str(role.managed))
        em.add_field(name='Mentionable', value=str(role.mentionable))
        em.add_field(name='People in this role', value=str(len(role.members)))

        pages = []
        pages.append(em)

        em2 = discord.Embed(description=f'Role ID: {str(role.id)}',
                            color=role.color or discord.Color.green())
        em2.title = role.name
        em2.add_field(name='Permissions', value=perms)

        pages.append(em2)

        thing = str(role.created_at.__format__('%A, %B %d, %Y'))

        p_session = PaginatorSession(ctx,
                                     footer=f'Created At: {thing}',
                                     pages=pages)
        await p_session.run()
Exemplo n.º 21
0
 async def paginate(self, ctx):
     session = PaginatorSession(ctx)
     for x in range(10):
         em = discord.Embed(title=f'Page: {x}', description='hello' * x)
         session.add_page(em)
     await session.run()