summaryrefslogtreecommitdiff
path: root/states.py
diff options
context:
space:
mode:
authorAndrew <saintruler@gmail.com>2020-02-11 21:42:01 +0400
committerAndrew <saintruler@gmail.com>2020-02-11 21:42:01 +0400
commitbc2124fbfa33b0aa5969c86523afb4f404e21ee5 (patch)
tree82b7c96ec304fa912b21f72e244e788ae74a6037 /states.py
parenta2d7e6357ea7d9ffcd361580b5d48eefeb1e69cb (diff)
Added new bindings for backend api. Implemented restoring state of bot
for user after restarting bot.
Diffstat (limited to 'states.py')
-rw-r--r--states.py22
1 files changed, 20 insertions, 2 deletions
diff --git a/states.py b/states.py
index ccd4318..653f442 100644
--- a/states.py
+++ b/states.py
@@ -11,8 +11,19 @@ import backend_api
from telegram import Update, User, Bot
+def save_state(func):
+ def wrapper(bot: Bot, update: Update, user_data: dict, *args, **kwargs):
+ print(user_data)
+ last_state = func(bot, update, user_data, *args, **kwargs)
+ backend_api.save_state(last_state, update.message.from_user.id, user_data)
+ return last_state
+
+ return wrapper
+
+
class States:
@staticmethod
+ @save_state
def wait_for_username(bot: Bot, update: Update, user_data: dict):
update.message.reply_text(
"По правилам квиза ты не можешь участвовать, если у тебя не указано "
@@ -22,6 +33,7 @@ class States:
return WAIT_FOR_USERNAME
@staticmethod
+ @save_state
def main_menu(bot: Bot, update: Update, user_data: dict):
user_data["chosen_task"] = None
@@ -34,6 +46,7 @@ class States:
return MAIN_MENU
@staticmethod
+ @save_state
def choose_task(bot: Bot, update: Update, user_data: dict):
user_data["chosen_task"] = None
@@ -44,21 +57,24 @@ class States:
return TASK_CHOOSING
@staticmethod
+ @save_state
def top_10(bot: Bot, update: Update, user_data: dict):
update.message.reply_text("какая то хуйня")
return MAIN_MENU
@staticmethod
+ @save_state
def rules(bot: Bot, update: Update, user_data: dict):
update.message.reply_text("какая то хуйня")
return MAIN_MENU
@staticmethod
+ @save_state
def show_task(bot: Bot, update: Update, user_data: dict):
if "chosen_task" in user_data and user_data["chosen_task"] is not None:
task_title = user_data["chosen_task"]
else:
- task_title = get_input(update, user_data)
+ task_title = update.message.text
user_data["chosen_task"] = task_title
status_code, task = backend_api.get_task(task_title)
@@ -83,6 +99,7 @@ class States:
return TASK_SHOWN
@staticmethod
+ @save_state
def type_answer(bot: Bot, update: Update, user_data: dict):
update.message.reply_text(
"Вводи свой ответ, я его проверю.",
@@ -91,8 +108,9 @@ class States:
return ANSWERING
@staticmethod
+ @save_state
def accept_answer(bot: Bot, update: Update, user_data: dict):
- answer = get_input(update, user_data)
+ answer = update.message.text
if answer == "хуй":
update.message.reply_text(
"Ты ввел правильный ответ! Возвращайся к другим задачам",