Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @typing
- @log
- async def stats(client: Client, message: Message, summoner_name: str = None, refresh: bool = False,
- language: str = None):
- user_id = message.from_user.id
- summoner_name = summoner_name or await parse_summoner_name(client, message, message.command[1:])
- summoner = await async_api.get_summoner_by_name(summoner_name)
- if not summoner:
- return await summoner_not_found(message, language)
- encrypted_account_id, summoner_id, puuid = summoner.accountId, summoner.id, summoner.puuid
- # match_number = await async_api.get_match_number(encrypted_account_id)
- if language is None:
- language, mastery_score, last_match, ranks = await asyncio.gather(
- get_language(user_id),
- async_api.get_mastery_score(summoner_id),
- async_api.get_nth_match(puuid),
- async_api.get_league(summoner_id),
- return_exceptions = True
- )
- else:
- mastery_score, last_match, ranks = await asyncio.gather(
- async_api.get_mastery_score(summoner_id),
- async_api.get_nth_match(puuid),
- async_api.get_league(summoner_id),
- return_exceptions = True
- )
- last_match: types.MatchDto
- text = [
- league.stats_name.get(language, f'<code>{escape(summoner.name)}</code>'),
- league.stats_summoner_level.get(language, summoner.summonerLevel),
- league.stats_total_mastery.get(language, mastery_score),
- # league.stats_match_number.get(language, match_number),
- ]
- if last_match:
- text.append(
- league.stats_last_match.get(
- language,
- datetime.fromtimestamp(
- last_match.info.gameCreation // 1000
- ).strftime('%d/%m/%Y %H:%M:%S UTC')
- )
- )
- if isinstance(ranks, set) and ranks:
- ranks = sorted(ranks, key = lambda x: x.queueType, reverse = True)
- for rank in ranks:
- text.append('')
- text.append(f'<u>{" ".join(rank.queueType.split("_"))}</u>')
- text.append(f'{rank.tier} {rank.rank} {rank.leaguePoints}')
- text.append(f'<code>{league.stats_wins.get(language, rank.wins)}</code>')
- text.append(f'<code>{league.stats_losses.get(language, rank.losses)}</code>')
- total_matches = rank.wins + rank.losses
- text.append(f'<code>{league.stats_total_matches.get(language, total_matches)}</code>')
- text.append(f'<code>{league.stats_ratio.get(language, math.floor(rank.wins / total_matches * 100))}</code>')
- if rank.miniSeries:
- text.append(
- f'<code>{league.stats_promo.get(language, rank.miniSeries.progress.replace("N", "-"))}</code>'
- )
- if rank.freshBlood:
- text.append(f'<b>{league.stats_fresh_blood.get(language)}</b>')
- if rank.veteran:
- text.append(f'<b>{league.stats_veteran.get(language)}</b>')
- text = '\n'.join(text).strip()
- reply_markup = keyboards.get_stats_kb(summoner_name, language)
- if refresh:
- if text != message.caption.html:
- # print(text, message.caption.html, sep = '\n\n\n\n')
- await message.edit_caption(
- text,
- reply_markup = reply_markup
- )
- else:
- try:
- await message.reply_photo(
- async_api.get_profile_icon_url(summoner.profileIconId),
- caption = text,
- reply_markup = reply_markup
- )
- except:
- await message.reply_photo(
- async_api.get_profile_icon_url(0),
- caption = text,
- reply_markup = reply_markup
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement