summaryrefslogtreecommitdiff
path: root/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'views.py')
-rw-r--r--views.py71
1 files changed, 71 insertions, 0 deletions
diff --git a/views.py b/views.py
new file mode 100644
index 0000000..692af49
--- /dev/null
+++ b/views.py
@@ -0,0 +1,71 @@
+from telegram import Update, User, Bot # Typing
+from telegram.ext import CallbackContext # Typing
+from telegram import ReplyKeyboardMarkup, ReplyKeyboardRemove
+
+from enums import UtilStates, MainStates
+from keyboards import MenuKeyboard, BACK
+
+class UtilViews:
+ @staticmethod
+ def start(update: Update, context: CallbackContext):
+ update.message.reply_text(
+ "Welcome to The Club.",
+ reply_markup=ReplyKeyboardRemove()
+ )
+
+ user: User = update.message.from_user
+ if user.username is None:
+ return UtilViews.wait_for_username(update, context)
+ else:
+ return MainStatesView.main_menu(update, context)
+
+
+ @staticmethod
+ def wait_for_username(update: Update, context: CallbackContext):
+ user: User = update.message.from_user
+ if user.username is None:
+ update.message.reply_text(
+ "Этим ботом можно пользоваться только с указанным именем пользователя."
+ "Укажи его и возвращайся как только это сделаешь.",
+ reply_markup=ReplyKeyboardMarkup([['Я указал имя пользователя']])
+ )
+ return UtilStates.WAIT_FOR_USERNAME
+
+ else:
+ return MainStatesView.main_menu(update, context)
+
+ @staticmethod
+ def fallback(update: Update, context: CallbackContext):
+ update.message.reply_text("Команда не распознана")
+
+
+class MainStatesView:
+ @staticmethod
+ def main_menu(update: Update, context: CallbackContext):
+ update.message.reply_text(
+ "Выбери следующее действие...",
+ reply_markup=MenuKeyboard.get_keyboard()
+ )
+
+ return MainStates.MAIN_MENU
+
+ @staticmethod
+ def new_client_name(update: Update, context: CallbackContext):
+ update.message.reply_text(
+ "Введи имя для клиента (чтобы ты мог отличить клиентов в списке).",
+ reply_markup=ReplyKeyboardMarkup([[BACK]])
+ )
+ return MainStates.ENTERING_NAME
+
+ @staticmethod
+ def new_client(update: Update, context: CallbackContext):
+ client_name = update.message.text.strip()
+ update.message.reply_text(f"Клиент |{client_name}| успешно добавлен")
+ return MainStatesView.main_menu(update, context)
+
+
+ @staticmethod
+ def list_clients(update: Update, context: CallbackContext):
+ update.message.reply_text("Список клиентов:")
+ return MainStatesView.main_menu(update, context)
+