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=' ')