summaryrefslogtreecommitdiff
path: root/formatter/__init__.py
blob: 259a88131342bff207a48156c8234cf8351427d8 (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 app_types import *

# Status
def format_fortnite_status(fortnite_status): 
    statuses = [__format_fortnite_service_status(service_status) for service_status in fortnite_status.service_statuses]
    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.service_name),
        __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=' ')