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)