Skip to content

Commit a3d2567

Browse files
committed
feat: implement actual counting of game statistics
1 parent 932be69 commit a3d2567

File tree

4 files changed

+19
-12
lines changed

4 files changed

+19
-12
lines changed

blackjack/game/blackjackgame.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ def __init__(self, gametype=None, game_id=None, lang_id="en"):
1414
self.logger = logging.getLogger(__name__)
1515
self.__on_start_handlers = []
1616
self.__on_stop_handlers = []
17+
self.list_won = []
18+
self.list_tie = []
19+
self.list_lost = []
20+
self.bets_active = True
1721
self._current_player = 0
1822
self.players = []
1923
self.running = False
@@ -209,11 +213,11 @@ def evaluation(self):
209213

210214
list_lost.extend(list_busted)
211215

212-
list_won = sorted(list_won, key=lambda player: player.cardvalue, reverse=True)
213-
list_tie = sorted(list_tie, key=lambda player: player.cardvalue, reverse=True)
214-
list_lost = sorted(list_lost, key=lambda player: player.cardvalue, reverse=True)
216+
self.list_won = sorted(list_won, key=lambda player: player.cardvalue, reverse=True)
217+
self.list_tie = sorted(list_tie, key=lambda player: player.cardvalue, reverse=True)
218+
self.list_lost = sorted(list_lost, key=lambda player: player.cardvalue, reverse=True)
215219

216-
return list_won, list_tie, list_lost
220+
return self.list_won, self.list_tie, self.list_lost
217221

218222
def get_player_list(self):
219223
return "\n".join(["👤{}".format(p.first_name) for p in self.players])

blackjackbot/commands/util/commands.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111

1212
def stats_cmd(update, context):
13-
update.message.reply_text(get_user_stats(update.effective_user.id))
13+
update.message.reply_text(get_user_stats(update.effective_user.id), parse_mode="HTML")
1414

1515

1616
def comment_cmd(update, context):

blackjackbot/gamestore.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from random import randint
44

55
from .errors.noactivegameexception import NoActiveGameException
6+
import database.statistics
67

78

89
class GameStore(object):
@@ -74,9 +75,10 @@ def _game_stopped_callback(self, game):
7475
:param game:
7576
:return:
7677
"""
77-
# TODO Game statistics
78-
# for player in game.players:
79-
# player set game won
78+
for player in game.players:
79+
database.statistics.add_game_played(player.user_id)
80+
if player in game.list_won:
81+
database.statistics.set_game_won(player.user_id)
8082
self.remove_game(self._game_dict[game.id])
8183

8284
self.logger.debug("Current games: {}".format(len(self._chat_dict)))

database/statistics.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from time import time
55

66
from database import Database
7+
from blackjackbot.lang import translate
78

89
__author__ = 'Rico'
910
logger = logging.getLogger(__name__)
@@ -44,14 +45,14 @@ def get_user_stats(user_id):
4445
:return:
4546
"""
4647
user = Database().get_user(user_id)
48+
lang_id = Database().get_lang_id(user_id)
4749

4850
played_games = int(user[5]) or 1
4951
won_games = user[6]
5052
last_played = int(user[8])
5153
last_played_formatted = datetime.utcfromtimestamp(last_played).strftime('%d.%m.%y %H:%M')
52-
win_percentage = round(float(won_games) / float(played_games), 4) * 100
53-
bar = generate_bar_chart(win_percentage)
54-
55-
template = "Here are your statistics 📊:\n\nPlayed Games: {}\nWon Games: {}\nLast Played: {} UTC\n\n{}\n\nWinning rate: {:.2%}"
54+
win_percentage = round(float(won_games) / float(played_games), 4)
55+
bar = generate_bar_chart(win_percentage * 100)
56+
template = translate("statistic_template", lang_id)
5657
statistics_string = template.format(played_games, won_games, last_played_formatted, bar, win_percentage)
5758
return statistics_string

0 commit comments

Comments
 (0)