From 3089066696ce90eb1a4c0b381e9fc414ec00db85 Mon Sep 17 00:00:00 2001 From: ue86388 Date: Tue, 16 Apr 2024 15:28:02 +0200 Subject: User statistics --- Formatter.py | 71 +++++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 44 insertions(+), 27 deletions(-) (limited to 'Formatter.py') diff --git a/Formatter.py b/Formatter.py index 07499e5..7241aca 100644 --- a/Formatter.py +++ b/Formatter.py @@ -1,5 +1,6 @@ from telebot import formatting -import fortnitepy, typing +import typing +from Types import * # Status def formatFortniteStatus(fortniteStatus): @@ -22,40 +23,56 @@ def __formatFortniteServiceStatus(fortniteServiceStatus): __formatStatus(fortniteServiceStatus.status), separator=': ') -# Friend -async def formatFriends(friends: typing.List[fortnitepy.Friend]): - friends_formatted = [await __formatFriend(friend) for friend in friends] +# User +def formatUsers(users: typing.List[User]): + users_formatted = [formatUser(user) for user in users] return formatting.format_text( - '\n\n'.join(friends_formatted), + '\n\n'.join(users_formatted), separator='\n') -async def __formatFriend(friend: fortnitepy.Friend): - stats = await friend.fetch_br_stats() - return await formatUser(friend) - -# User -async def formatUser(user: fortnitepy.User): - stats = await user.fetch_br_stats() - bp_level: float = await user.fetch_battlepass_level(season=29) - combined_stats = stats.get_combined_stats() - if 'keyboardmouse' in combined_stats: - return __formatUserDevice(user, combined_stats['keyboardmouse'], bp_level) - else: - return __formatUserDevice(user, combined_stats['gamepad'], bp_level) - -def __formatUserDevice(user: fortnitepy.User, device_stats: dict, bp_level: float): +def formatUser(user: User): return formatting.format_text( formatting.mbold("User: ") + user.display_name, - formatting.mbold("External auth: ") + ', '.join([__formatExternalAuth(external_auth) for external_auth in user.external_auths]), formatting.mbold("ID: ") + user.id, - formatting.mbold("Level: ") + str(int(bp_level//1)), - formatting.mbold("Matches played: ") + str(device_stats['matchesplayed']), - formatting.mbold("Total kills: ") + str(device_stats['kills']), - formatting.mbold("Wins: ") + str(device_stats['wins']), separator='\n') -def __formatExternalAuth(external_auth: fortnitepy.ExternalAuth): - return '{} \({}\)'.format(external_auth.external_display_name, external_auth.type) +# Stats +def formatUserStatsList(stats: typing.List[UserStats]): + stats_formatted = [__formatStats(singleStats) for singleStats in stats] + return formatting.format_text( + '\n\n'.join(stats_formatted), + separator='\n') + +def formatUserStatsDifference(oldUserStats: typing.List[UserStats], newUserStats: typing.List[UserStats]): + stats_formatted = [] + + for stats in oldUserStats: + matched = [x for x in newUserStats if x.user_id == stats.user_id][0] + stats_formatted.append(__formatStatsDifference(stats, matched)) + + return formatting.format_text( + '\n\n'.join(stats_formatted), + separator='\n') + +def __formatStatsDifference(oldUserStats: UserStats, newUserStats: UserStats): + return formatting.format_text( + formatting.mbold("User: ") + oldUserStats.user_display_name, + formatting.mbold("ID: ") + oldUserStats.user_id, + formatting.mbold("Level: ") + "{} \(\+ {}\)".format(str(oldUserStats.level), str(newUserStats.level - oldUserStats.level)), + formatting.mbold("Matches played: ") + "{} \(\+ {}\)".format(str(oldUserStats.matches_played), str(newUserStats.matches_played - oldUserStats.matches_played)), + formatting.mbold("Total kills: ") + "{} \(\+ {}\)".format(str(oldUserStats.kills), str(newUserStats.kills - oldUserStats.kills)), + formatting.mbold("Wins: ") + "{} \(\+ {}\)".format(str(oldUserStats.wins), str(newUserStats.wins - oldUserStats.wins)), + separator='\n') + +def __formatStats(userStats: UserStats): + return formatting.format_text( + formatting.mbold("User: ") + userStats.user_display_name, + formatting.mbold("ID: ") + userStats.user_id, + formatting.mbold("Level: ") + str(userStats.level), + formatting.mbold("Matches played: ") + str(userStats.matches_played), + formatting.mbold("Total kills: ") + str(userStats.kills), + formatting.mbold("Wins: ") + str(userStats.wins), + separator='\n') def formatFriendOnline(display_name: str, party_size: int): if party_size == 1: -- cgit v1.2.3