from telebot import formatting import fortnitepy, typing # Status def formatFortniteStatus(fortniteStatus): statuses = [__formatFortniteServiceStatus(serviceStatus) for serviceStatus in fortniteStatus.serviceStatuses] return formatting.format_text( formatting.mbold("Fortnite status"), "", '\n'.join(statuses), separator='\n') def __formatStatus(status): if (status == True): return u'\u2705' else: return u'\u274c' def __formatFortniteServiceStatus(fortniteServiceStatus): return formatting.format_text( formatting.mbold(fortniteServiceStatus.serviceName), __formatStatus(fortniteServiceStatus.status), separator=': ') # Friend async def formatFriends(friends: typing.List[fortnitepy.Friend]): friends_formatted = [await __formatFriend(friend) for friend in friends] return formatting.format_text( '\n\n'.join(friends_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): 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) def formatFriendOnline(display_name: str, party_size: int): if party_size == 1: text = 'is playing Fortnite\!' elif party_size == 2: text = 'is playing Fortnite with {} friend\!'.format(str(party_size - 1)) elif party_size > 2: text = 'is playing Fortnite with {} friends\!'.format(str(party_size - 1)) return formatting.format_text( u'\u2b50', formatting.mbold('{}'.format(display_name)), text, u'\u2b50', separator=' ')