From ee3e87a6ec19878d56e8f386b20c58e4d9b211b3 Mon Sep 17 00:00:00 2001 From: Dmitrii Morozov Date: Tue, 7 May 2024 17:15:25 +0200 Subject: Modules --- formatter/__init__.py | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 formatter/__init__.py (limited to 'formatter') diff --git a/formatter/__init__.py b/formatter/__init__.py new file mode 100644 index 0000000..9efc249 --- /dev/null +++ b/formatter/__init__.py @@ -0,0 +1,95 @@ +from telebot import formatting +import typing +from app_types import * + +# Status +def format_fortnite_status(fortnite_status): + statuses = [__format_fortnite_service_status(service_status) for service_status in fortnite_status.serviceStatuses] + return formatting.format_text( + formatting.mbold("Fortnite status"), + "", + '\n'.join(statuses), + separator='\n') + +def __format_status(status): + if (status == True): + return u'\u2705' + else: + return u'\u274c' + +def __format_fortnite_service_status(fortnite_service_status): + return formatting.format_text( + formatting.mbold(fortnite_service_status.serviceName), + __format_status(fortnite_service_status.status), + separator=': ') + +# User +def format_users(users: typing.List[User]): + users_formatted = [format_user(user) for user in users] + return formatting.format_text( + '\n\n'.join(users_formatted), + separator='\n') + +def format_user(user: User): + return formatting.format_text( + formatting.mbold("User: ") + user.display_name, + formatting.mbold("ID: ") + user.id, + separator='\n') + +# Stats +def format_user_stats_list(stats: typing.List[UserStats]): + stats_formatted = [__format_stats(single_stats) for single_stats in stats] + return formatting.format_text( + '\n\n'.join(stats_formatted), + separator='\n') + +def format_user_stats_difference(old_user_stats: typing.List[UserStats], new_user_stats: typing.List[UserStats]): + stats_formatted = [] + + for stats in old_user_stats: + matched = [x for x in new_user_stats if x.user_id == stats.user_id][0] + stats_formatted.append(__format_stats_difference(stats, matched)) + + return formatting.format_text( + '\n\n'.join(stats_formatted), + separator='\n') + +def __format_stats_difference(old_user_stats: UserStats, new_user_stats: UserStats): + return formatting.format_text( + formatting.mbold("User: ") + new_user_stats.user_display_name, + formatting.mbold("ID: ") + new_user_stats.user_id, + formatting.mbold("Level: ") + "{}{}".format(str(new_user_stats.level), __format_stat_difference(old_user_stats.level, new_user_stats.level)), + formatting.mbold("Matches played: ") + "{}{}".format(str(new_user_stats.matches_played), __format_stat_difference(old_user_stats.matches_played, new_user_stats.matches_played)), + formatting.mbold("Total kills: ") + "{}{}".format(str(new_user_stats.kills), __format_stat_difference(old_user_stats.kills, new_user_stats.kills)), + formatting.mbold("Wins: ") + "{}{}".format(str(new_user_stats.wins), __format_stat_difference(old_user_stats.wins, new_user_stats.wins)), + separator='\n') + +def __format_stat_difference(old_stat_value: int, new_stat_value: int): + if old_stat_value != new_stat_value: + return " \(\+ {}\)".format(str(new_stat_value - old_stat_value)) + else: + return "" + +def __format_stats(user_stats: UserStats): + return formatting.format_text( + formatting.mbold("User: ") + user_stats.user_display_name, + formatting.mbold("ID: ") + user_stats.user_id, + formatting.mbold("Level: ") + str(user_stats.level), + formatting.mbold("Matches played: ") + str(user_stats.matches_played), + formatting.mbold("Total kills: ") + str(user_stats.kills), + formatting.mbold("Wins: ") + str(user_stats.wins), + separator='\n') + +def format_friend_online(display_name: str, party_size: int): + if party_size == 1: + text = 'is playing Fortnite\!' + elif party_size == 2: + text = 'is playing Fortnite together with {} friend\!'.format(str(party_size - 1)) + elif party_size > 2: + text = 'is playing Fortnite together with {} friends\!'.format(str(party_size - 1)) + return formatting.format_text( + u'\u2b50', + formatting.mbold('{}'.format(display_name)), + text, + u'\u2b50', + separator=' ') \ No newline at end of file -- cgit v1.2.3