summaryrefslogtreecommitdiff
path: root/Formatter.py
diff options
context:
space:
mode:
authorue86388 <dmitrii.morozov@sbb.ch>2024-04-16 15:28:02 +0200
committerue86388 <dmitrii.morozov@sbb.ch>2024-04-16 15:28:02 +0200
commit3089066696ce90eb1a4c0b381e9fc414ec00db85 (patch)
treea4d4b400052b9abcc0b629cc4f4a06abd986759b /Formatter.py
parent27c484c4bbd8e2393c8f410df7cb6f8b7c6235f2 (diff)
User statistics
Diffstat (limited to 'Formatter.py')
-rw-r--r--Formatter.py71
1 files changed, 44 insertions, 27 deletions
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: