async def max_lvl_lookup(self, ctx, *username): """ Shows user's level 99s """ url_safe_name = '+'.join(username) safe_name = ' '.join(username) user = Hiscore(url_safe_name) async with ctx.typing(): await user.fetch() embed = discord.Embed( title="99s", description=f'{safe_name}\n{user.overall_level} total') count, table = user.generate_99_table() if table: embed.add_field(name=f'**{count} / 23**', value=f'```{table}```') else: embed.add_field(name=f'**0 / 23**', value='User doesn\'t have any 99s') await ctx.send(f'{ctx.message.author.mention}', embed=embed) return
async def kc_lookup(self, ctx, *username): """ Lookup a user's boss kill counts """ url_safe_name = '+'.join(username) safe_name = ' '.join(username) user = Hiscore(url_safe_name) async with ctx.typing(): await user.fetch() field_count = 0 await ctx.send(f'{ctx.message.author.mention}') embed = discord.Embed(title="Boss kill counts", description=f'{safe_name}') if user.generate_kc_table(): embed.add_field(name='Details', value=f'```{user.generate_kc_table()}```') else: embed.add_field(name='Nothing found', value='No kill counts on the hiscore page.') await ctx.send(embed=embed) return
async def overall_lookup(self, ctx, *username): async with ctx.typing(): url_safe_name = '+'.join(username) safe_name = ' '.join(username) user = Hiscore(url_safe_name) embed = discord.Embed(title="Overall", description=f'{safe_name}') embed.add_field(name="Level", value=f'**{user.overall_level:,}**', inline=True) embed.add_field(name="XP", value=f'{user.overall_xp:,}', inline=True) embed.add_field(name="Rank", value=f'{user.overall_rank:,}', inline=True) await ctx.send(f'{ctx.message.author.mention}', embed=embed) return
async def defence_lookup(self, ctx, *username): async with ctx.typing(): url_safe_name = '+'.join(username) safe_name = ' '.join(username) user = Hiscore(url_safe_name) embed = discord.Embed(title="Defence", description=f'{safe_name}') embed.set_thumbnail(url=f'{get_icon_url("defence")}') embed.add_field(name="Level", value=f'**{user.defence_level:,}**', inline=True) embed.add_field(name="XP", value=f'{user.defence_xp:,}', inline=True) embed.add_field(name="Rank", value=f'{user.defence_rank:,}') embed.set_footer(text=f'{next_level_string(user.defence_xp, "defence")}') await ctx.send(f'{ctx.message.author.mention}', embed=embed) return
async def lms_lookup(self, ctx, *username): """ Shows LMS scores and rank """ url_safe_name = '+'.join(username) safe_name = ' '.join(username) user = Hiscore(url_safe_name) async with ctx.typing(): await user.fetch() embed = discord.Embed(title="Last Man Standing", description=f'{safe_name}') embed.set_thumbnail(url=lms_icon) if user.lms_score == -1: embed.add_field(name="Score", value="You have never played LMS") else: embed.add_field(name="Score", value=f'**{int(user.lms_score):,}** score (Rank {int(user.lms_rank):,})', inline=False) await ctx.send(f'{ctx.message.author.mention}', embed=embed) return
async def stats_command(self, ctx, *username): """ Shows all stats for a user """ url_safe_name = '+'.join(username) safe_name = ' '.join(username) user = Hiscore(url_safe_name) async with ctx.typing(): await user.fetch() embed = discord.Embed(title=safe_name, description=f'**{user.overall_xp:,}** XP\n' f'**{user.overall_level:,}** Total\n' f'**{user.overall_rank:,}** Rank', url=f'{hiscore_url}{url_safe_name}') embed.add_field(name='Details', value=f'```{user.generate_hiscore_table()}```') await ctx.send(f'{ctx.message.author.mention}', embed=embed) return
async def clue_lookup(self, ctx, *username): """ Shows clue scrolls for user """ url_safe_name = '+'.join(username) safe_name = ' '.join(username) user = Hiscore(url_safe_name) async with ctx.typing(): await user.fetch() embed = discord.Embed(title="Clue Scrolls", description=f'{safe_name}') embed.set_thumbnail(url=clue_icon) if user.all_clues_rank == -1: embed.add_field(name="Nothing found", value="You haven't solved any clue scrolls", inline=True) else: embed.add_field(name="Total clues", value=f'**{int(user.all_clues_score):,}** (Rank {int(user.all_clues_rank):,})\n' f'```{user.generate_clue_table()}```', inline=True) await ctx.send(f'{ctx.message.author.mention}', embed=embed) return
async def max_lvl_lookup(self, ctx, *username): """ Shows user's level 99s """ async with ctx.typing(): url_safe_name = '+'.join(username) safe_name = ' '.join(username) user = Hiscore(url_safe_name) embed = discord.Embed(title="99s", description=f'{safe_name}\n*{user.overall_level}* total level') count = 0 msg = f'' for (name, level, xp, rank) in user.levels: if int(level) == 99: msg += f'**{name}** {int(xp) / 1000000:.2f}M xp\n' count += 1 if count == 0: embed.add_field(name="**0 / 23**", value="User doesn't have any level 99s") else: embed.add_field(name=f"**{count} / 23**", value=msg) await ctx.send(f'{ctx.message.author.mention}', embed=embed) return
async def kc_lookup(self, ctx, *username): """ Lookup a user's boss kill counts """ async with ctx.typing(): url_safe_name = '+'.join(username) safe_name = ' '.join(username) user = Hiscore(url_safe_name) field_count = 0 await ctx.send(f'{ctx.message.author.mention}') embed = discord.Embed(title="Boss kill counts", description=f'{safe_name}') for (name, kc, rank) in user.kcs: if int(kc) > -1: embed.add_field(name=name, value=f'**{int(kc):,}** (Rank {int(rank):,})') field_count += 1 if field_count == 25: await ctx.send(embed=embed) embed = discord.Embed() field_count = 0 await ctx.send(embed=embed) return
async def bounty_lookup(self, ctx, *username): """ Shows bounty hunter scores and rank """ url_safe_name = '+'.join(username) safe_name = ' '.join(username) user = Hiscore(url_safe_name) async with ctx.typing(): await user.fetch() embed = discord.Embed(title="Bounty Hunter", description=f'{safe_name}') embed.set_thumbnail(url=bounty_icon) if user.bounty_hunter_hunter_score == -1: embed.add_field(name="Hunter", value="You have never played as Hunter", inline=False) else: embed.add_field(name="Hunter", value=f'**{int(user.bounty_hunter_hunter_score):,}** score (Rank {int(user.bounty_hunter_hunter_rank):,})', inline=False) if user.bounty_hunter_rogue_rank == -1: embed.add_field(name="Rogue", value="You have never played as Rogue", inline=False) else: embed.add_field(name="Rogue", value=f'**{int(user.bounty_hunter_rogue_score):,}** score (Rank {int(user.bounty_hunter_rogue_rank):,})', inline=False) await ctx.send(f'{ctx.message.author.mention}', embed=embed) return
async def tracker_command(self, ctx, *username): """ Shows weekly activity for a user """ async with ctx.typing(): url_safe_name = '+'.join(username) safe_name = ' '.join(username) if safe_name != '': await ctx.send(f'Tracking **{safe_name}**...') hiscore = Hiscore(url_safe_name) tracker = Tracker(url_safe_name) embed = discord.Embed(title='Weekly activity', url=f'{cml_url}{url_safe_name}') embed.set_thumbnail(url=cml_logo) embed.add_field(name=f'{safe_name}', value=f'**{int(hiscore.overall_xp):,}** XP\n' f'**{int(hiscore.overall_level):,}** Total\n' f'**{int(hiscore.overall_rank):,}** Rank', inline=False) (overall_name, overall_xp, overall_rank, overall_levels, overall_ehp) = tracker.top_gains[0] embed.add_field(name='**Overall gains**', value=f'+{overall_xp:,} XP\n' f'{overall_levels} levels\n' f'{overall_rank} overall rank') for (name, xp, rank, levels, ehp) in tracker.top_gains[1:6]: if xp > 0: embed.add_field(name=f'**{hiscore.level_lookup(name)}** {name}', value=f'+{xp:,} xp\n' f'{levels} levels\n' f'{rank} rank') kills_msg = f'' for (name, kills, rank) in tracker.top_kills[:5]: if kills > 0: kills_msg += f'{kills:,}\t{name}\n' if kills_msg != '': embed.add_field(name='Recent kills', value=f'```{kills_msg}```', inline=False) embed.set_footer(text=f'Checked: {tracker.last_checked} ago\n' f'Changed: {tracker.last_changed} ago\n' f'Oldest data point: {tracker.oldest_data} ago') await ctx.send(f'{ctx.message.author.mention}', embed=embed) return
def __init__(self, username): Hiscore.__init__(self, username) GrandExchange.__init__(self, "Nature rune")
async def fetch(self): """ Fetch the results """ Hiscore.__init__(self, self.username) GrandExchange.__init__(self, "Nature rune") await Hiscore.fetch(self) await GrandExchange.fetch(self)