summaryrefslogtreecommitdiff
path: root/Formatter.py
blob: fc8b8ad7fcc6b5179bbe8d20df8ada2630a5968d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
from telebot import formatting
import typing
from Types import *

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

# User
def formatUsers(users: typing.List[User]): 
    users_formatted = [formatUser(user) for user in users]
    return formatting.format_text(
        '\n\n'.join(users_formatted),
        separator='\n')

def formatUser(user: User):
    return formatting.format_text(
        formatting.mbold("User: ") + user.display_name,
        formatting.mbold("ID: ") + user.id,
        separator='\n')

# 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: ") + newUserStats.user_display_name,
        formatting.mbold("ID: ") + newUserStats.user_id,
        formatting.mbold("Level: ") + "{}{}".format(str(newUserStats.level), __formatStatDifference(oldUserStats.level, newUserStats.level)),
        formatting.mbold("Matches played: ") + "{}{}".format(str(newUserStats.matches_played), __formatStatDifference(oldUserStats.matches_played, newUserStats.matches_played)),
        formatting.mbold("Total kills: ") + "{}{}".format(str(newUserStats.kills), __formatStatDifference(oldUserStats.kills, newUserStats.kills)),
        formatting.mbold("Wins: ") + "{}{}".format(str(newUserStats.wins), __formatStatDifference(oldUserStats.wins, newUserStats.wins)),
        separator='\n')

def __formatStatDifference(oldStatValue: int, newStatValue: int):
    if oldStatValue != newStatValue:
        return " \(\+ {}\)".format(str(newStatValue - oldStatValue))
    else:
        return ""

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