Skip to content

Commit 3054a20

Browse files
committed
feat: implement resetting of stats
1 parent 29442f8 commit 3054a20

File tree

4 files changed

+44
-5
lines changed

4 files changed

+44
-5
lines changed

blackjackbot/__init__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
stop_command_handler = CommandHandler("stop", game.stop_cmd)
1515
language_command_handler = CommandHandler("language", settings.language_cmd)
1616
stats_command_handler = CommandHandler("stats", util.stats_cmd)
17+
resetstats_command_handler = CommandHandler("resetstats", util.reset_stats_cmd)
1718
comment_command_handler = CommandHandler("comment", util.comment_cmd)
1819
comment_text_command_handler = MessageHandler(Filters.text & ~(Filters.forwarded | Filters.command), util.comment_text)
1920

@@ -33,12 +34,13 @@
3334
start_callback_handler = CallbackQueryHandler(game.start_callback, pattern=r"^start_[0-9]{7}$")
3435
newgame_callback_handler = CallbackQueryHandler(game.newgame_callback, pattern=r"^newgame$")
3536
language_callback_handler = CallbackQueryHandler(settings.language_callback, pattern=r"^lang_([a-z]{2}(?:-[a-z]{2})?)$")
37+
reset_stats_callback_handler = CallbackQueryHandler(util.reset_stats_callback, pattern=r"^reset_stats_(confirm|cancel)$")
3638

3739
handlers = [banned_user_handler,
3840
start_command_handler, stop_command_handler, join_callback_handler, hit_callback_handler,
3941
stand_callback_handler, start_callback_handler, language_command_handler, stats_command_handler,
4042
newgame_callback_handler, reload_lang_command_handler, language_callback_handler, users_command_handler,
4143
comment_command_handler, comment_text_command_handler, answer_command_handler, ban_command_handler,
42-
unban_command_handler, bans_command_handler]
44+
unban_command_handler, bans_command_handler, resetstats_command_handler, reset_stats_callback_handler]
4345

4446
__all__ = ['handlers', 'error_handler']
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# -*- coding: utf-8 -*-
22
from .functions import remove_inline_keyboard, get_start_keyboard, generate_evaluation_string, html_mention, get_game_keyboard, get_join_keyboard
33
from .decorators import admin_method, needs_active_game
4-
from .commands import stats_cmd, comment_cmd, comment_text
4+
from .commands import stats_cmd, comment_cmd, comment_text, reset_stats_cmd, reset_stats_callback
55

66
__all__ = ['remove_inline_keyboard', 'get_start_keyboard', 'generate_evaluation_string', 'html_mention', 'get_game_keyboard', 'get_join_keyboard',
7-
'stats_cmd', 'comment_cmd', 'comment_text', 'admin_method', 'needs_active_game']
7+
'stats_cmd', 'comment_cmd', 'comment_text', 'admin_method', 'needs_active_game', 'reset_stats_cmd', 'reset_stats_callback']

blackjackbot/commands/util/commands.py

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# -*- coding: utf-8 -*-
22

3-
from telegram import ForceReply, ParseMode
3+
from telegram import ForceReply, ParseMode, InlineKeyboardButton, InlineKeyboardMarkup
44

55
from blackjackbot.commands.admin.functions import notify_admins
66
from blackjackbot.lang import translate
@@ -13,6 +13,38 @@ def stats_cmd(update, context):
1313
update.message.reply_text(get_user_stats(update.effective_user.id), parse_mode=ParseMode.HTML)
1414

1515

16+
def reset_stats_cmd(update, context):
17+
"""Asks the user if they want to reset their statistics"""
18+
user_id = update.effective_user.id
19+
db = Database()
20+
lang_id = db.get_lang_id(user_id)
21+
22+
keyboard = [[
23+
InlineKeyboardButton(translate("reset_stats_confirm_button"), callback_data='reset_stats_confirm'),
24+
InlineKeyboardButton(translate("reset_stats_cancel_button"), callback_data='reset_stats_cancel'),
25+
]]
26+
reply_markup = InlineKeyboardMarkup(keyboard)
27+
28+
update.message.reply_text(translate("reset_stats_confirm", lang_id), reply_markup=reply_markup)
29+
30+
31+
def reset_stats_callback(update, context):
32+
"""Handler for confirmation of statistics reset"""
33+
query = update.callback_query
34+
query.answer()
35+
36+
user_id = update.effective_user.id
37+
db = Database()
38+
lang_id = db.get_lang_id(user_id)
39+
40+
if query.data == "reset_stats_confirm":
41+
db.reset_stats(user_id=user_id)
42+
query.edit_message_text(translate("reset_stats_executed", lang_id))
43+
44+
elif query.data == "reset_stats_cancel":
45+
query.edit_message_text(translate("reset_stats_cancelled", lang_id))
46+
47+
1648
def comment_cmd(update, context):
1749
"""MessageHandler callback for the /comment command"""
1850
if context.user_data.get("state", UserState.IDLE) != UserState.IDLE:

blackjackbot/lang/strings/translations_en.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,5 +47,10 @@
4747
"admin_reply": "⚠ You need to reply to the user's comment!",
4848
"reply_from_maintainer": "The maintainer of this bot sent you a reply:\n\n{}",
4949
"statistic_template": "Here are your statistics 📊:\n\n<b>Played Games:</b> {}\n<b>Won Games:</b> {}\n<b>Last Played:</b> {} UTC\n\n{}\n\n<b>Winning rate:</b> {:.2%}",
50-
"dealer_name": "Dealer"
50+
"dealer_name": "Dealer",
51+
"reset_stats_confirm": "Do you really want to reset your statistics?",
52+
"reset_stats_confirm_button": "Reset",
53+
"reset_stats_cancel_button": "Cancel",
54+
"reset_stats_executed": "Alright, I reset your statistics!",
55+
"reset_stats_cancelled": "Okay, I did not reset your statistics!"
5156
}

0 commit comments

Comments
 (0)