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
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
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
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!')
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
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
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!')
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
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
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]`')
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
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))
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)
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
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
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
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
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)
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)
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
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)
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)
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]
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
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
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
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
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
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]
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