Skip to content

Commit

Permalink
feat: implement resetting of stats
Browse files Browse the repository at this point in the history
  • Loading branch information
d-Rickyy-b committed Jul 29, 2021
1 parent 07c6a39 commit bcd75d1
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 5 deletions.
4 changes: 3 additions & 1 deletion blackjackbot/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
stop_command_handler = CommandHandler("stop", game.stop_cmd)
language_command_handler = CommandHandler("language", settings.language_cmd)
stats_command_handler = CommandHandler("stats", util.stats_cmd)
resetstats_command_handler = CommandHandler("resetstats", util.reset_stats_cmd)
comment_command_handler = CommandHandler("comment", util.comment_cmd)
comment_text_command_handler = MessageHandler(Filters.text & ~(Filters.forwarded | Filters.command), util.comment_text)

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

handlers = [banned_user_handler,
start_command_handler, stop_command_handler, join_callback_handler, hit_callback_handler,
stand_callback_handler, start_callback_handler, language_command_handler, stats_command_handler,
newgame_callback_handler, reload_lang_command_handler, language_callback_handler, users_command_handler,
comment_command_handler, comment_text_command_handler, answer_command_handler, ban_command_handler,
unban_command_handler, bans_command_handler]
unban_command_handler, bans_command_handler, resetstats_command_handler, reset_stats_callback_handler]

__all__ = ['handlers', 'error_handler']
4 changes: 2 additions & 2 deletions blackjackbot/commands/util/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from .functions import remove_inline_keyboard, get_start_keyboard, generate_evaluation_string, html_mention, get_game_keyboard, get_join_keyboard
from .decorators import admin_method, needs_active_game
from .commands import stats_cmd, comment_cmd, comment_text
from .commands import stats_cmd, comment_cmd, comment_text, reset_stats_cmd, reset_stats_callback

__all__ = ['remove_inline_keyboard', 'get_start_keyboard', 'generate_evaluation_string', 'html_mention', 'get_game_keyboard', 'get_join_keyboard',
'stats_cmd', 'comment_cmd', 'comment_text', 'admin_method', 'needs_active_game']
'stats_cmd', 'comment_cmd', 'comment_text', 'admin_method', 'needs_active_game', 'reset_stats_cmd', 'reset_stats_callback']
34 changes: 33 additions & 1 deletion blackjackbot/commands/util/commands.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-

from telegram import ForceReply, ParseMode
from telegram import ForceReply, ParseMode, InlineKeyboardButton, InlineKeyboardMarkup

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


def reset_stats_cmd(update, context):
"""Asks the user if they want to reset their statistics"""
user_id = update.effective_user.id
db = Database()
lang_id = db.get_lang_id(user_id)

keyboard = [[
InlineKeyboardButton(translate("reset_stats_confirm_button"), callback_data='reset_stats_confirm'),
InlineKeyboardButton(translate("reset_stats_cancel_button"), callback_data='reset_stats_cancel'),
]]
reply_markup = InlineKeyboardMarkup(keyboard)

update.message.reply_text(translate("reset_stats_confirm", lang_id), reply_markup=reply_markup)


def reset_stats_callback(update, context):
"""Handler for confirmation of statistics reset"""
query = update.callback_query
query.answer()

user_id = update.effective_user.id
db = Database()
lang_id = db.get_lang_id(user_id)

if query.data == "reset_stats_confirm":
db.reset_stats(user_id=user_id)
query.edit_message_text(translate("reset_stats_executed", lang_id))

elif query.data == "reset_stats_cancel":
query.edit_message_text(translate("reset_stats_cancelled", lang_id))


def comment_cmd(update, context):
"""MessageHandler callback for the /comment command"""
if context.user_data.get("state", UserState.IDLE) != UserState.IDLE:
Expand Down
7 changes: 6 additions & 1 deletion blackjackbot/lang/strings/translations_en.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,5 +47,10 @@
"admin_reply": "⚠ You need to reply to the user's comment!",
"reply_from_maintainer": "The maintainer of this bot sent you a reply:\n\n{}",
"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%}",
"dealer_name": "Dealer"
"dealer_name": "Dealer",
"reset_stats_confirm": "Do you really want to reset your statistics?",
"reset_stats_confirm_button": "Reset",
"reset_stats_cancel_button": "Cancel",
"reset_stats_executed": "Alright, I reset your statistics!",
"reset_stats_cancelled": "Okay, I did not reset your statistics!"
}

0 comments on commit bcd75d1

Please sign in to comment.