コード例 #1
0
ファイル: clashofclans.py プロジェクト: mischievousdev/statsy
async def format_members(ctx, c):
    em = discord.Embed(description=_('A list of all members in this clan.'),
                       color=random_color())
    em.set_author(name=f"{c['name']} ({c['tag']})")
    em.set_thumbnail(url=c['badgeUrls']['medium'])
    embeds = []
    counter = 0
    for m in c['memberList']:
        if counter % 6 == 0 and counter != 0:
            embeds.append(em)
            em = discord.Embed(
                description=_('A list of all members in this clan.'),
                color=random_color())
            em.set_author(name=f"{c['name']} ({c['tag']})")
            em.set_thumbnail(url=c['badgeUrls']['medium'])
        try:
            versus_trophies = m['versusTrophies']
        except:
            versus_trophies = None
        em.add_field(
            name=
            f'{m["name"]} ({"Elder" if m["role"] == "admin" else m["role"].title()})',
            value="\n".join((f"{m['tag']}", f"{m['trophies']} {e('trophy')}",
                             f"{versus_trophies} {e('axes')}",
                             f"{m['donations']} {e('troops')}")))
        counter += 1
    embeds.append(em)
    return embeds
コード例 #2
0
ファイル: clashofclans.py プロジェクト: mischievousdev/statsy
async def format_achievements(ctx, p):
    em = discord.Embed(description=_("All of {}'s achievements").format(
        p['name']),
                       color=random_color())
    em.set_author(name=f"{p['name']} ({p['tag']})")
    embeds = []
    counter = 0
    for achievement in p['achievements']:
        if counter % 4 == 0 and counter != 0:
            embeds.append(em)
            em = discord.Embed(
                description=_("All of {}'s achievements").format(p['name']),
                color=random_color())
            em.set_author(name=f"{p['name']} ({p['tag']})")
        try:
            status = achievement['completionInfo']
        except KeyError:
            status = _('N/A')
        em.add_field(name=f"{achievement['name']} ({achievement['stars']})",
                     value=_('**Requirement:** {}\n**Status:** {}').format(
                         achievement['info'], status),
                     inline=False)
        counter += 1
    embeds.append(em)
    return embeds
コード例 #3
0
async def format_top_clan_wars(ctx, clans, region):
    em = discord.Embed(color=random_color())
    if ctx.bot.psa_message:
        em.description = f'*{ctx.bot.psa_message}*'
    else:
        em.description = _('Top 200 {} clans by clan wars right now.').format(
            region)
    badge_image = ctx.cog.cr.get_clan_image(clans[0])
    em.set_author(name='Top Clans By Clan Wars', icon_url=badge_image)
    embeds = []
    counter = 0
    async for c in clans:
        if counter % 12 == 0 and counter != 0:
            embeds.append(em)
            em = discord.Embed(color=random_color())
            if ctx.bot.psa_message:
                em.description = f'*{ctx.bot.psa_message}*'
            else:
                em.description = _(
                    'Top 200 {} clans by clan wars right now.').format(region)

            badge_image = ctx.cog.cr.get_clan_image(clans[0])
            em.set_author(name=_('Top Clans'), icon_url=badge_image)

        em.add_field(name=f'{e(c.badge_id, should_format=False)} {c.name}',
                     value=f"{c.tag}"
                     f"\n{e('wartrophy')}{c.clan_score}"
                     f"\n{e('rank')} Rank: {c.rank} "
                     f"\n{e('rank')} Previous Rank: {c.previous_rank}"
                     f"\n{e('clan')} {c.members}/50 ")
        counter += 1
    embeds.append(em)
    return embeds
コード例 #4
0
async def bug(ctx, type=None, *, body=None):
    """Report a bug to the Dev Team!"""
    possible_types = [
        "gameplay", "map", "glitch", "hardware", "optimization", "rendering",
        "networking", "connection", "ui", "general", "sound", "other"
    ]

    if type not in possible_types:
        em = discord.Embed(color=utils.random_color())
        em.title = f'{ctx.prefix}bug <bug-type> <description>'
        em.description = 'Report a bug within BattleBit!'
        em.add_field(name='Types:', value=", ".join(possible_types))
        return await ctx.send(embed=em)
    if not body:
        em = discord.Embed(color=utils.random_color())
        em.title = f'{ctx.prefix}bug <bug-type> <description>'
        em.description = 'Report a bug within BattleBit!'
        em.add_field(name='Types:', value=", ".join(possible_types))
        return await ctx.send(embed=em)

    ch = bot.get_channel(442059253453160470)

    em = discord.Embed(color=utils.random_color())
    em.title = 'Bug Reported'
    em.description = 'A bug has been reported!'
    em.add_field(name='Bug Type:', value=type)
    em.add_field(name='Description:', value=body)
    em.set_author(name=ctx.author.name, icon_url=ctx.author.avatar_url)
    em.set_footer(text="Bot created By Nyan Pikachu#4148")
    await ch.send(embed=em)
    await ctx.send('Thanks for your report Soldier!')
コード例 #5
0
ファイル: brawlstars.py プロジェクト: VeraButler/statsy
def format_top_clubs(ctx, clans):
    region = 'global'

    em = discord.Embed(color=random_color())
    if ctx.bot.psa_message:
        em.description = f'*{ctx.bot.psa_message}*'
    else:
        em.description = _('Top 200 {} clubs right now.').format(region)
    # badge_image = ctx.bot.cr.get_clan_image(clans[0])
    em.set_author(name='Top Clubs')  # , icon_url=badge_image)
    em.set_footer(text=_('Statsy | Powered by brawlapi.cf'))
    embeds = []
    counter = 0
    for c in clans:
        if counter % 12 == 0 and counter != 0:
            embeds.append(em)
            em = discord.Embed(color=random_color())
            if ctx.bot.psa_message:
                em.description = f'*{ctx.bot.psa_message}*'
            else:
                em.description = _('Top 200 {} clubs right now.').format(
                    region)

            # badge_image = ctx.bot.cr.get_clan_image(clans[0])
            em.set_author(name=_('Top Clubs'))  # , icon_url=badge_image)
            em.set_footer(text=_('Statsy | Powered by brawlapi.cf'))

        em.add_field(name=c.name,
                     value=f"#{c.tag}"
                     f"\n{e('bstrophy')}{c.trophies}"
                     f"\n{e('bountystar')} Rank: {c.position} "
                     f"\n{e('gameroom')} {c.members_count}/100 ")
        counter += 1
    embeds.append(em)
    return embeds
コード例 #6
0
async def format_profile(ctx, platform, p):
    ems = []
    top = {'solo': (10, 25), 'duo': (5, 12), 'squad': (3, 6)}

    if p['totals']['matchesplayed']:
        kdr = p['totals']['wins'] / p['totals']['matchesplayed'] * 100
    else:
        kdr = 0

    fields = [(_('Kills {}',
                 ctx).format(emoji(ctx, "fnskull")), p['totals']['kills']),
              (_('Victory Royale! {}',
                 ctx).format(emoji(ctx, "fnvictoryroyale")),
               f"{p['totals']['wins']} ({kdr:.2f})"),
              (_('Kill Death Ratio', ctx), p['totals']['kd']),
              (_('Time Played', ctx), timestamp(p['totals']['minutesplayed']))]

    ems.append(
        discord.Embed(description=_('Overall Statistics', ctx),
                      color=random_color()))
    ems[0].set_author(name=p['username'])
    for name, value in fields:
        ems[0].add_field(name=str(name), value=str(value))

    for n, mode in enumerate(('solo', 'duo', 'squad')):
        kdr = p[platform][f'winrate_{mode}']
        fields = [
            (_('Score', ctx), p[platform][f'score_{mode}']),
            (_('Kills {}',
               ctx).format(emoji(ctx,
                                 "fnskull")), p[platform][f'kills_{mode}']),
            (_('Total Battles', ctx), p[platform][f'matchesplayed_{mode}']),
            (_('Victory Royale! {}', ctx).format(emoji(ctx,
                                                       "fnvictoryroyale")),
             f"{p[platform][f'placetop1_{mode}']} ({kdr}%)"),
            (_('Top {}', ctx).format(emoji(ctx, "fnleague")),
             'Top {}: {}\nTop {}: {}'.format(
                 top[mode][0], p[platform][f'placetop{top[mode][0]}_{mode}'],
                 top[mode][1], p[platform][f'placetop{top[mode][1]}_{mode}'])),
            (_('Kill Death Ratio', ctx), p[platform][f'kd_{mode}']),
            (_('Time Played',
               ctx), timestamp(p[platform][f'minutesplayed_{mode}']))
        ]
        ems.append(
            discord.Embed(description=_('{} Statistics',
                                        ctx).format(mode.title()),
                          color=random_color()))
        ems[n + 1].set_author(name=p['username'])

        for name, value in fields:
            ems[n + 1].add_field(name=str(name), value=str(value))

    return ems
コード例 #7
0
async def suggest(ctx, *, suggestion=None):
    """suggest a feature to be added"""
    if not suggestion:
        em = discord.Embed(color=utils.random_color())
        em.title = f'Usage: {ctx.prefix}suggest <suggestion>'
        em.description = 'suggest a feature to be added!'
        return await ctx.send(embed=em)
    ch = bot.get_channel(442059237519130625)
    em = discord.Embed(color=utils.random_color())
    em.description = str(suggestion)
    em.title = 'Suggestion'
    em.set_author(name=ctx.author.name, icon_url=ctx.author.avatar_url)
    em.set_footer(text="Bot created By Nyan Pikachu#4148")
    await ch.send(embed=em)
    await ctx.send('Thanks for your suggestion Soldier!')
コード例 #8
0
ファイル: clashofclans.py プロジェクト: mischievousdev/statsy
async def format_most_valuable(ctx, c):
    for m in c['memberList']:
        try:
            m['score'] = ((m['donations'] / 5) + (m['versusTrophies'] / 7) +
                          (m['trophies'] / 7)) / 3
        except KeyError:
            m['score'] = ((m['donations'] / 5) + 0 + (m['trophies'] / 7)) / 3

    best = sorted(c['memberList'], key=lambda m: m['score'], reverse=True)[:4]

    em = discord.Embed(
        color=random_color(),
        description=_(
            'Here are the most valuable members of the clan currently.'))
    em.set_author(name=f"{c['name']} ({c['tag']})")
    em.set_thumbnail(url=c['badgeUrls']['medium'])
    em.set_footer(text=_('Statsy - Powered by the COC API'))

    for m in reversed(best):
        try:
            versus_trophies = m['versusTrophies']
        except KeyError:
            versus_trophies = None
        em.add_field(
            name=
            f'{m["name"]} ({"Elder" if m["role"] == "admin" else m["role"].title()})',
            value='\n'.join((f"{m['tag']}", f"{m['trophies']} {e('trophy')}",
                             f"{versus_trophies} {e('axes')}",
                             f"{m['donations']} {e('troops')}")))

    return em
コード例 #9
0
async def format_most_valuable(ctx, clan, wars):
    async def war_score(tag):
        score = 0
        async for w in wars:
            if tag in [i.tag for i in w.participants]:
                score += 1

        return score

    for m in clan.member_list:
        m.war_score = await war_score(m.tag)
        m.score = ((m.donations / 5) + (m.war_score / 3) +
                   (m.trophies / 7)) / 3

    best = sorted(clan.member_list, key=lambda m: m.score, reverse=True)[:4]

    em = discord.Embed(
        color=random_color(),
        description=_(
            'Here are the most valuable members of the clan currently.'))
    if ctx.bot.psa_message:
        em.description = f'*{ctx.bot.psa_message}*'
    em.set_author(name=f'{clan.name} ({clan.tag})')
    em.set_thumbnail(url=ctx.cog.cr.get_clan_image(clan))
    em.set_footer(text=_('Statsy | Powered by the CR API'))

    for m in reversed(best):
        em.add_field(name=f'{m.name} ({camel_case(m.role)})',
                     value=f"{m.tag}\n{m.trophies} "
                     f"{e('crownblue')}\n{m.donations} "
                     f"{e('cards')}\n"
                     f"{m.war_score} {e('clanwar')}")

    return em
コード例 #10
0
async def _presence(ctx, type=None, *, game=None):
    '''Change the bot's presence'''
    if not type:
        em = discord.Embed(color=utils.random_color())
        title_text = f'{ctx.prefix}presence <type> <message>!'
        em.title = title_text
        em.description = 'Change Presence of the Bot!'
        return await ctx.send(embed=em)
    else:
        if type.lower() == 'stream':
            await bot.change_presence(activity=discord.Activity(
                name=game, type=discord.ActivityType.streaming))
            await ctx.send(f'Set presence to. `Streaming {game}`')
        elif type.lower() == 'game':
            await bot.change_presence(activity=discord.Activity(
                name=game, type=discord.ActivityType.playing))
            await ctx.send(f'Set presence to `Playing {game}`')
        elif type.lower() == 'watch':
            await bot.change_presence(activity=discord.Activity(
                name=game, type=discord.ActivityType.watching))
            await ctx.send(f'Set presence to `Watching {game}`')
        elif type.lower() == 'listen':
            await bot.change_presence(activity=discord.Activity(
                name=game, type=discord.ActivityType.listening))
            await ctx.send(f'Set presence to `Listening to {game}`')
        elif type.lower() == 'clear':
            await bot.change_presence(activity=discord.Activity(name=None))
            await ctx.send('Cleared Presence')
        else:
            await ctx.send(
                'Usage: `.presence [game/stream/watch/listen] [message]`')
コード例 #11
0
async def format_friend_link(ctx, p, link, default):
    av = ctx.cog.cr.get_clan_image(p)
    if not link.startswith('http'):
        link = 'https://' + link

    em = discord.Embed(
        description=
        f'[Add]({link}) {ctx.author.mention} [as friend {e("clan")}]({link})',
        color=random_color())

    if default:
        prefix = (await ctx.bot.get_prefix(ctx.message))[2]
        em.set_footer(text=_(
            'Run `{}link disable` to disable this feature').format(prefix))
    else:
        em.set_footer(text=_('Statsy | Powered by the CR API'))

    em.set_author(name=f'{p.name} ({p.tag})', icon_url=av)
    em.set_thumbnail(url=ctx.cog.cr.get_arena_image(p))

    trophies = f"{p.trophies}/{p.best_trophies} PB {e('trophy')}"
    deck = get_deck(ctx, p)

    embed_fields = [(_('Trophies'), trophies, True),
                    (_('Level'), f"{p.exp_level} {e('experience')}", True),
                    (_('Battle Deck'), deck, False)]

    for n, v, i in embed_fields:
        em.add_field(name=n, value=v, inline=i)

    return em
コード例 #12
0
ファイル: utils.py プロジェクト: itzbananauwu/statsy-1
    async def suggest(self, ctx, *, details: str):
        """Suggest a game! Or a feature!"""
        em = discord.Embed(title=f'New Suggestion', description=details, color=utils.random_color())
        em.set_footer(text=f'G: {getattr(ctx.guild, "id", "DM")} | C: {ctx.channel.id} | U: {ctx.author.id}')
        await self.bot.get_channel(513715119520481290).send(embed=em)

        await ctx.send(_('Suggestion submitted. Thanks for the feedback!', ctx))
コード例 #13
0
ファイル: fortnite.py プロジェクト: NyanPikachu/PikaBot
 async def fnsave(self, ctx, platform=None, username=None):
     '''Save your Fortnite stats here'''
     authorID = str(ctx.author.id)
     if not platform or not username:
         return await ctx.send(
             f'Please provide a a platform as well as a username `Usage: fnsave platform username`'
         )
     try:
         validInfo = True
         data = self.req(platform, username)
         try:
             data['epicUserHandle']
         except Exception:
             validInfo = False
         if validInfo:
             await self.save_info(platform, username, authorID)
             await ctx.send(
                 f'Your Platform `{platform}` and Username `{username}` have been successfully saved! re-run this command to update them'
             )
         else:
             await ctx.send(
                 'Invalid Info please make sure that platform is pc/xbl/psn'
             )
     except Exception as e:
         em = discord.Embed(color=utils.random_color())
         em.title = 'Error'
         em.description = str(e)
         await ctx.send(embed=em)
コード例 #14
0
ファイル: clashofclans.py プロジェクト: mischievousdev/statsy
async def format_war(ctx, w):
    em = discord.Embed(description=_('In War')
                       if w['state'] == 'inWar' else w['state'].title(),
                       color=random_color())
    em.set_author(
        name=
        f"{w['clan']['name']} ({w['clan']['tag']}) vs {w['opponent']['name']} ({w['opponent']['tag']})"
    )
    em.set_image(url="attachment://war.png")
    em.add_field(name=w['clan']['name'], value='--------------')
    em.add_field(name=w['opponent']['name'], value='--------------')
    em.add_field(name=_('Level'),
                 value=f"{w['clan']['clanLevel']} {e('experience')}")
    em.add_field(name=_('Level'),
                 value=f"{w['opponent']['clanLevel']} {e('experience')}")
    em.add_field(name=_('Attacks'),
                 value=f"{w['clan']['attacks']} {e('sword')}")
    em.add_field(name=_('Attacks'),
                 value=f"{w['opponent']['attacks']} {e('sword')}")
    em.add_field(name=_('Stars'), value=f"{w['clan']['stars']} {e('cocstar')}")
    em.add_field(name=_('Stars'),
                 value=f"{w['opponent']['stars']} {e('cocstar')}")
    em.add_field(name=_('Destruction'),
                 value=f"{w['clan']['destructionPercentage']}%")
    em.add_field(name=_('Destruction'),
                 value=f"{w['opponent']['destructionPercentage']}%")
    return em
コード例 #15
0
ファイル: brawlstars.py プロジェクト: VeraButler/statsy
def format_brawlers(ctx, p):
    ems = []

    ranks = [
        0, 10, 20, 30, 40, 60, 80, 100, 120, 140, 160, 180, 220, 260, 300, 340,
        380, 420, 460, 500
    ]

    for n, i in enumerate(p.brawlers):
        if n % 6 == 0:
            ems.append(discord.Embed(color=random_color()))
            ems[-1].set_author(name=f'{p.name} (#{p.tag})')
            ems[-1].set_footer(text=_('Statsy | Powered by brawlapi.cf'))

        rank = ranks.index([r
                            for r in ranks if i.highest_trophies >= r][-1]) + 1

        skin = e('tick') if i.has_skin else e('xmark')

        val = f"{e('xp')} Level {i.level}\n{skin} Skin Active?\n{e('bstrophy')} {i.trophies}/{i.highest_trophies} PB (Rank {rank})"
        ems[-1].add_field(
            name=f"{e(i.name)} {i.name.replace('Franky', 'Frank')}",
            value=val)

    return ems
コード例 #16
0
async def format_deck_link(ctx, d, link, default):
    deck = ''
    elixir = 0
    for n, i in enumerate(d):
        for c in ctx.cog.cr.constants.cards:
            if str(c.id) == i:
                deck += str(e(c.name))
                elixir += c.elixir
                if n == 3:
                    deck += '\n'
                break

    elixir = elixir / len(d)
    deck += f'\n{elixir:.1f}{e("elixirdrop")} [Copy this deck!]({link}) {e("copydeck")}'
    em = discord.Embed(title=f'Deck shared by {ctx.author.name}',
                       description=deck,
                       color=random_color())
    if not link.startswith('http'):
        link = 'https://' + link

    if default:
        prefix = (await ctx.bot.get_prefix(ctx.message))[2]
        em.set_footer(text=_(
            'Run `{}link disable` to disable this feature').format(prefix))
    else:
        em.set_footer(text=_('Statsy | Powered by the CR API'))

    return em
コード例 #17
0
async def format_clan_link(ctx, c, link, default):
    av = ctx.cog.cr.get_clan_image(c)
    if not link.startswith('http'):
        link = 'https://' + link

    em = discord.Embed(
        description=
        f"[Join]({link}) {ctx.author.mention}['s clan! {e('clan')}]({link})",
        color=random_color())

    if default:
        prefix = (await ctx.bot.get_prefix(ctx.message))[2]
        em.set_footer(text=_(
            'Run `{}link disable` to disable this feature').format(prefix))
    else:
        em.set_footer(text=_('Statsy | Powered by the CR API'))

    em.set_author(name=f'{c.name} ({c.tag})')
    em.set_thumbnail(url=ctx.cog.cr.get_arena_image(av))

    embed_fields = [
        (_('Type'), camel_case(c.type) + ' 📩'),
        (_('Score'), str(c.clan_score) + _(' Trophies ') + str(e('trophy'))),
        (_('Donations/Week'),
         str(c.donations_per_week) + _(' Cards ') + str(e('cards'))),
        (_('Location'), c.location.name + ' 🌎'),
        (_('Members'), f"{len(c.member_list)}/50 {e('clan')}"),
        (_('Required Trophies'), f"{c.required_trophies} {e('trophy')}"),
    ]

    for n, v, i in embed_fields:
        em.add_field(name=n, value=v, inline=i)

    return em
コード例 #18
0
 async def usertag(self, ctx, platform: lower, *, member: discord.User=None):
     """Checks the saved tag(s) of a member"""
     member = member or ctx.author
     tag = await ctx.get_tag('fortnite', f'{member.id}: {platform}', index='all')
     em = discord.Embed(description='Tags saved', color=utils.random_color())
     em.set_author(name=member.name, icon_url=member.avatar_url)
     for i in tag:
         em.add_field(name=f'Tag index: {i}', value=tag[i])
     await ctx.send(embed=em)
コード例 #19
0
ファイル: brawlstars.py プロジェクト: VeraButler/statsy
async def format_random_brawler_and_send(ctx, brawler):
    image = await get_image(ctx, e(brawler).url)

    em = discord.Embed(title=brawler.title(), color=random_color())
    if ctx.bot.psa_message:
        em.description = f'*{ctx.bot.psa_message}*'
    em.set_image(url='attachment://brawler.png')

    await ctx.send(file=discord.File(image, 'brawler.png'), embed=em)
コード例 #20
0
def format_top_players(ctx, players):
    region = 'global'
    players = [
        box.Box(i, camel_killer_box=True)
        for i in json.loads(players.to_json())
    ]

    em = discord.Embed(color=random_color())
    if ctx.bot.psa_message:
        em.description = f'*{ctx.bot.psa_message}*'
    else:
        em.description = _('Top 200 {} players right now.').format(region)
    em.set_author(name='Top Players', icon_url=players[0].avatar_url)
    em.set_footer(text=_('Statsy | Powered by brawlapi.cf'))
    embeds = []
    counter = 0
    for c in players:
        if counter % 12 == 0 and counter != 0:
            embeds.append(em)
            em = discord.Embed(color=random_color())
            if ctx.bot.psa_message:
                em.description = f'*{ctx.bot.psa_message}*'
            else:
                em.description = _('Top 200 {} players right now.').format(
                    region)

            em.set_author(name=_('Top Players'),
                          icon_url=players[0].avatar_url)
            em.set_footer(text=_('Statsy | Powered by brawlapi.cf'))

        try:
            club_name = c.club_name
        except AttributeError:
            club_name = 'No Clan'

        em.add_field(name=c.name,
                     value=f"#{c.tag}"
                     f"\n{e('bstrophy')}{c.trophies}"
                     f"\n{e('bountystar')} Rank: {c.position} "
                     f"\n{e('xp')} XP Level: {c.exp_level}"
                     f"\n{e('gameroom')} {club_name}")
        counter += 1
    embeds.append(em)
    return embeds
コード例 #21
0
 async def usertag(self, ctx, member: discord.Member = None):
     """Checks the saved tag(s) of a member"""
     member = member or ctx.author
     tag = await self.resolve_tag(ctx, member, index='all')
     em = discord.Embed(description='Tags saved',
                        color=utils.random_color())
     em.set_author(name=member.name, icon_url=member.avatar_url)
     for i in tag:
         em.add_field(name=f'Tag index: {i}', value=tag[i])
     await ctx.send(embed=em)
コード例 #22
0
ファイル: utils.py プロジェクト: itzbananauwu/statsy-1
 async def shards_(self, ctx):
     em = discord.Embed(title='Shard Information', color=utils.random_color())
     em.set_footer(text=f'Shard ID: {ctx.guild.shard_id}')
     latencies = [i[1] * 1000 for i in self.bot.latencies]
     for i in range(self.bot.shard_count):
         users = len({u.id for g in self.bot.guilds for u in g.members if g.shard_id == i})
         guilds = sum(g.shard_id == i for g in self.bot.guilds)
         val = f'{users} users\n{guilds} guilds\n{latencies[i]:.2f}ms ping'
         em.add_field(name=f'Shard #{i}', value=val)
     await ctx.send(embed=em)
コード例 #23
0
ファイル: clashroyale.py プロジェクト: itzbananauwu/statsy-1
async def format_tournament(ctx, t):
    page1 = discord.Embed(description=t.description, color=random_color())
    page1.set_author(name=f"{t.name} ({t.tag})")
    page1.set_footer(text=_('Statsy | Powered by the CR API', ctx))
    page2 = copy.deepcopy(page1)
    page2.description = _('Top players of this tournament', ctx)

    pushers = []
    for i in range(9):
        if i < len(t.members_list):
            break
        pushers.append(f"**{t.members_list[i].name}**"
                       f"\n{t.members_list[i].score} "
                       f"{emoji(ctx, 'trophy')}\n"
                       f"{t.members_list[i].tag}")

    timeleft = ''
    date = datetime.datetime.utcnow() - datetime.datetime.strptime(
        t.created_time, '%Y%m%dT%H%M%S.%fZ')
    seconds = math.floor(date.total_seconds())
    minutes = max(math.floor(seconds / 60), 0)
    seconds -= minutes * 60
    hours = max(math.floor(minutes / 60), 0)
    minutes -= hours * 60
    if hours > 0:
        timeleft += f'{hours}h'
    if minutes > 0:
        timeleft += f' {minutes}m'
    if seconds > 0:
        timeleft += f' {seconds}s'

    join_link = 'https://fourjr-webserver.herokuapp.com/redirect?url=https://link.clashroyale.com/?joinTournament?id=' + t.tag

    fields1 = [
        (_('Type', ctx), camel_case(t.type) + ' 📩'),
        (_('Status', ctx), camel_case(t.status)),
        (_('Members', ctx),
         f"{len(t.members_list)}/{t.max_capacity} {emoji(ctx, 'clan')}"),
        (_('Time since creation', ctx), timeleft),
        (_('Join now', ctx), _('[Click here]({})', ctx).format(join_link))
    ]

    fields2 = [(_('Top Players', ctx), '\n\n'.join(pushers[0:3])),
               (_('Top Players', ctx), '\n\n'.join(pushers[3:6])),
               (_('Top Players', ctx), '\n\n'.join(pushers[6:9]))]

    for f, v in fields1:
        page1.add_field(name=f, value=v)

    for f, v in fields2:
        if v:
            page2.add_field(name=f, value=v)

    return [page1, page2]
コード例 #24
0
ファイル: brawlstars.py プロジェクト: VeraButler/statsy
def format_profile(ctx, p):
    em = discord.Embed(color=random_color())
    if ctx.bot.psa_message:
        em.description = f'*{ctx.bot.psa_message}*'
    try:
        badge = ctx.cog.constants.alliance_badges[p.club.badge_id].name
        em.set_author(name=f'{p.name} (#{p.tag})',
                      icon_url=f'{url}/club_badges/{badge}.png')
    except AttributeError:
        em.set_author(name=f'{p.name} (#{p.tag})')

    try:
        em.set_thumbnail(url=p.avatar_url)
    except box.BoxKeyError:
        pass
    em.set_footer(text=_('Statsy | Powered by brawlapi.cf'))

    brawlers = ' '.join([
        f'{e(i.name)} {i.level}  ' if
        (n + 1) % 8 != 0 else f'{e(i.name)} {i.level}\n'
        for n, i in enumerate(p.brawlers)
    ])

    try:
        club = p.club.name
    except AttributeError:
        club = False

    embed_fields = [
        (_('Trophies'),
         f"{p.trophies}/{p.highest_trophies} PB {e('bstrophy')}", False),
        (_('3v3 Victories'), f"{p.victories} {e('bountystar')}", True),
        (_('Solo Showdown Wins'),
         f"{p.solo_showdown_victories} {e('showdown')}", True),
        (_('Duo Showdown Wins'),
         f"{p.duo_showdown_victories} {e('duoshowdown')}", True),
        (_('Best time as Boss'), f"{p.best_time_as_boss} {e('bossfight')}",
         True),
        (_('Best Robo Rumble Time'),
         f"{p.best_robo_rumble_time} {e('roborumble')}", True),
        (_('XP Level'), f"{p.exp_level} ({p.exp_fmt}) {e('xp')}", True),
        (_('Club Name'), p.club.name if club else None, True),
        (_('Club Tag'), f'#{p.club.tag}' if club else None, True),
        (_('Club Role'), p.club.role if club else None, True),
        (_('Brawlers'), brawlers, False),
    ]

    for n, v, i in embed_fields:
        if v:
            em.add_field(name=n, value=v, inline=i)
        elif n == _('Club Name'):
            em.add_field(name=_('Club'), value=_('None'))

    return em
コード例 #25
0
async def format_tournaments(ctx, t):
    rewards = {
        50: (175, 25, 10),
        100: (700, 100, 20),
        200: (400, 57, 40),
        1000: (2000, 285, 200)
    }

    em = discord.Embed(
        description=_('A list of open tournaments you can join right now!'),
        color=random_color())
    em.set_author(name=_('Open Tournaments'))
    em.set_thumbnail(url='https://i.imgur.com/bwql3WU.png')

    if ctx.bot.psa_message:
        em.description = ctx.bot.psa_message
    em.set_footer(text=_('Statsy | Powered by RoyaleAPI'))

    tournaments = sorted(t, key=lambda x: int(x.max_players))
    i = 0
    for t in tournaments:
        if t.current_players == t.max_players:
            continue

        members = '/'.join((str(t.current_players), str(t.max_players)))

        timeleft = ''
        date = datetime.datetime.utcnow() - datetime.datetime.fromtimestamp(
            t.create_time)
        seconds = math.floor(date.total_seconds())
        minutes = max(math.floor(seconds / 60), 0)
        seconds -= minutes * 60
        hours = max(math.floor(minutes / 60), 0)
        minutes -= hours * 60
        if hours > 0:
            timeleft += f'{hours}h'
        if minutes > 0:
            timeleft += f' {minutes}m'
        if seconds > 0:
            timeleft += f' {seconds}s'

        gold = rewards[t.max_players][1]
        cards = rewards[t.max_players][0]

        join_link = 'https://fourjr-webserver.herokuapp.com/redirect?url=https://link.clashroyale.com/?joinTournament?id=' + t.tag
        value = f'Time since creation: {timeleft}\n{members} {e("clan")}\n{gold} {e("gold")}\n{cards} {e("cards")}\n[Join now]({join_link})'
        em.add_field(name=f'{t.name} ({t.tag})', value=value)
        i += 1
        if i > 6:
            break

    return em
コード例 #26
0
def format_brawlers(ctx, p):
    ems = []

    for n, i in enumerate(p.brawlers):
        if n % 6 == 0:
            ems.append(discord.Embed(color=random_color()))
            ems[-1].set_author(name=f'{p.name} (#{p.tag})')
            ems[-1].set_footer(text=_('Statsy | Powered by brawlapi.cf'))

        val = f"{e('xp')} Level {i.power}\n{e('bstrophy')} {i.trophies}/{i.highest_trophies} PB (Rank {i.rank})"
        ems[-1].add_field(name=f"{e(i.name)} {i.skin or i.name}", value=val)

    return ems
コード例 #27
0
async def format_card(ctx, c):
    arenas = {i.arena: i.title for i in ctx.cog.cr.constants.arenas}

    em = discord.Embed(description=c.description, color=random_color())
    em.set_author(name=_('{} Info').format(c.name),
                  icon_url='attachment://card.png')
    em.add_field(name=_('Rarity'), value=f"{c.rarity} {e('cards')}")
    em.add_field(name=_('Elixir Cost'), value=f"{c.elixir} {e('elixirdrop')}")
    em.add_field(name=_('Type'), value=f"{c.type} {e('challengedraft')}")
    em.add_field(name=_('Arena Found'),
                 value=f"{arenas[c.arena]} {e('arena'+str(c.arena))}")
    em.set_footer(text=_('Statsy | Powered by the CR API'))
    return em
コード例 #28
0
async def format_chests(ctx, p, c):
    av = ctx.cog.cr.get_clan_image(p)
    em = discord.Embed(color=random_color())
    em.set_author(name=f'{p.name} ({p.tag})', icon_url=av)
    if ctx.bot.psa_message:
        em.description = f'*{ctx.bot.psa_message}*'
    chests = get_chests(ctx, c)
    em.set_thumbnail(url=e('chest' +
                           c[0].name.replace(' Chest', '').lower()).url)
    em.add_field(name=_('Chests'), value=chests[0])
    em.add_field(name=_('Chests Until'), value=chests[1])
    em.set_footer(text=_('Statsy | Powered by the CR API'))
    return em
コード例 #29
0
ファイル: clashroyale.py プロジェクト: itzbananauwu/statsy-1
async def format_clan(ctx, c):
    page1 = discord.Embed(description=c.description, color=random_color())
    page1.set_author(name=f"{c.name} ({c.tag})")
    page1.set_footer(text=_('Statsy | Powered by the CR API', ctx))
    page2 = copy.deepcopy(page1)
    page2.description = _('Top Players/Donators/Contributors for this clan.',
                          ctx)
    page1.set_thumbnail(url=ctx.cog.cr.get_clan_image(c))

    _donators = list(reversed(sorted(c.member_list,
                                     key=lambda m: m.donations)))

    pushers = []
    donators = []

    for i in range(3):
        if len(c.member_list) < i + 1:
            break
        pushers.append(f"**{c.member_list[i].name}**"
                       f"\n{c.member_list[i].trophies} "
                       f"{emoji(ctx, 'trophy')}\n"
                       f"{c.member_list[i].tag}")
        donators.append(f"**{_donators[i].name}**"
                        f"\n{_donators[i].donations} "
                        f"{emoji(ctx, 'cards')}\n"
                        f"{_donators[i].tag}")

    fields1 = [
        (_('Type', ctx), camel_case(c.type) + ' 📩'),
        (_('Score', ctx),
         str(c.clan_score) + _(' Trophies ', ctx) + str(emoji(ctx, 'trophy'))),
        (_('Donations/Week', ctx), str(c.donations_per_week) +
         _(' Cards ', ctx) + str(emoji(ctx, 'cards'))),
        (_('Location', ctx), c.location.name + ' 🌎'),
        (_('Members', ctx), f"{len(c.member_list)}/50 {emoji(ctx, 'clan')}"),
        (_('Required Trophies',
           ctx), f"{c.required_trophies} {emoji(ctx, 'trophy')}"),
    ]

    fields2 = [(_('Top Players', ctx), '\n\n'.join(pushers)),
               (_('Top Donators', ctx), '\n\n'.join(donators))]

    for f, v in fields1:
        page1.add_field(name=f, value=v)

    for f, v in fields2:
        if v:
            page2.add_field(name=f, value=v)

    return [page1, page2]
コード例 #30
0
ファイル: clashroyale.py プロジェクト: itzbananauwu/statsy-1
async def format_stats(ctx, p):
    av = ctx.cog.cr.get_clan_image(p)
    em = discord.Embed(color=random_color())
    if ctx.bot.psa_message:
        em.description = f'*{ctx.bot.psa_message}*'
    em.set_author(name=f'{p.name} ({p.tag})', icon_url=av)
    em.set_thumbnail(url=ctx.cog.cr.get_arena_image(p))

    trophies = f"{p.trophies}/{p.best_trophies} PB {emoji(ctx, 'trophy')}"
    deck = get_deck(ctx, p)

    try:
        clan_name = p.clan.name
        clan_tag = p.clan.tag
        clan_role = camel_case(p.role)
    except AttributeError:
        clan_name = clan_tag = clan_role = None

    try:
        favourite_card = f"{p.current_favourite_card.name} {emoji(ctx, p.current_favourite_card.name)}"
    except AttributeError:
        favourite_card = _('No favourite card :(', ctx)

    embed_fields = [
        (_('Trophies', ctx), trophies, True),
        (_('Level', ctx), f"{p.exp_level} {emoji(ctx, 'experience')}", True),
        (_('Clan Name', ctx),
         f"{clan_name} {emoji(ctx, 'clan')}" if clan_name else None, True),
        (_('Clan Tag', ctx),
         f"{clan_tag} {emoji(ctx, 'clan')}" if clan_tag else None, True),
        (_('Clan Role', ctx),
         f"{clan_role} {emoji(ctx, 'clan')}" if clan_role else None, True),
        (_('War Day Wins',
           ctx), f"{p.war_day_wins} {emoji(ctx, 'clanwar')}", True),
        (_('Favourite Card', ctx), favourite_card, True),
        (_('Battle Deck', ctx), deck, True)
    ]

    for n, v, i in embed_fields:
        if v:
            em.add_field(name=n, value=v, inline=i)
        else:
            if n == _('Clan Name', ctx):
                em.add_field(name=_('Clan', ctx),
                             value=_('None {}',
                                     ctx).format(emoji(ctx, 'noclan')))

    em.set_footer(text=_('Statsy | Powered by the CR API', ctx))

    return em