def register(update, context): mes = update.message.text user_id = update.message.from_user.id if user_id in sessionStorage.keys( ) and sessionStorage[user_id]['has_account'] and sessionStorage[user_id][ 'register_stage'] == 7 and sessionStorage[user_id]["reg_ended"]: update.message.reply_text("У вас уже есть аккаунт!") sessionStorage[user_id]["login_stage"] = 0 return login(update, context) else: if user_id not in sessionStorage.keys(): form = RegisterForm() sessionStorage[user_id] = { 'has_account': True, "register_stage": 0, "reg_form": form, "reg_ended": False, } stage = sessionStorage[user_id]['register_stage'] if stage != 7: if stage != 0: if stage == 1: sessionStorage[user_id]["reg_form"].name = mes if stage == 2: sessionStorage[user_id]["reg_form"].surname = mes if stage == 3: sessionStorage[user_id]["reg_form"].email = mes if stage == 4: sessionStorage[user_id]["reg_form"].password = mes if stage == 5: sessionStorage[user_id]["reg_form"].password_again = mes if stage == 6: sessionStorage[user_id]["reg_form"].age = int(mes) update.message.reply_text(RegisterForm.stages[stage]) sessionStorage[user_id]['register_stage'] += 1 return 1 sessionStorage[user_id]["reg_form"].address = mes data = sessionStorage[user_id]["reg_form"] res = post('http://127.0.0.1:5000/api/users', json={ 'name': data.name, 'surname': data.surname, 'email': data.email, 'password': data.password, 'address': data.address, 'age': data.age }).json() print(res) sessionStorage[user_id]["login_stage"] = 0 sessionStorage[user_id]["reg_ended"] = True return login(update, context)
def get_test(user_id): section = sessionStorage[user_id]['curr_section'] theme = sessionStorage[user_id]['curr_lesson']['title'] res = get(f"{FLASK_SERVER}/api/tests/{theme}/{user_id}").json() if 'error' in res: words = [] for les in WORDS_FOR_LEARNING[section]['themes']: if les['title'] == theme: words = les['words'] break sam = random.sample(words, k=min(len(words), random.randint(5, 10))) test = [] if 'curr_q_id' not in sessionStorage.keys(): sessionStorage["curr_q_id"] = 1 questions = "" passed_users = str(user_id) curr_q_id = sessionStorage['curr_q_id'] for i in range(len(sam)): en, ru = sam[i] q = random.randint(0, 1) text, ans = "", "" if q: text = en + '\n' + "Как сказать это на русском?" ans = ru else: text = ru + '\n' + "Как сказать это на английском?" ans = en test.append([text, ans]) from requests import post ques_adding = post(f"{FLASK_SERVER}/api/questions", json={ "id": curr_q_id, "text": text, "ans": ans, "theme": theme, }).json() print(ques_adding) questions += str(curr_q_id) + ',' curr_q_id += 1 questions = questions[:-1] from requests import post test_adding = post(f"{FLASK_SERVER}/api/tests", json={ "theme": theme, "questions": questions, "passed_users": passed_users, }).json() sessionStorage['curr_q_id'] = curr_q_id return test else: test = [] for question_id in res['test']['questions'].split(','): ques = get(f"{FLASK_SERVER}/api/questions/{question_id}").json()['question'] text = ques['text'] ans = ques['ans'] test.append([text, ans]) return test
def start(update, context): user_id = update.message.from_user.id if user_id not in sessionStorage.keys(): update.message.reply_text("Здравствуйте, это бот " "для изучения английского языка, \n" "для начала вам нужно зарегистрироваться") return register(update, context) else: update.message.reply_text("Здравствуйте, это бот " "для изучения английского языка, \n" "для продолжения авторизуйтесь") sessionStorage[user_id]['login_stage'] = 0 return login(update, context)
def start(update, context): user_id = update.message.from_user.id res = get(f"http://127.0.0.1:5000/api/users/{user_id}").json() if res["message"] == 'ok': update.message.reply_text("Здравствуйте, это бот " "для изучения английского языка, \n" "для продолжения авторизуйтесь") if user_id not in sessionStorage.keys(): sessionStorage[user_id] = {'login_stage': 0} return login(update, context) else: update.message.reply_text("Здравствуйте, это бот " "для изучения английского языка, \n" "для начала вам нужно зарегистрироваться") return register(update, context)
def start(update, context): update.message.reply_text("Я работаю!") user_id = update.message.from_user.id res = get(f"{FLASK_SERVER}/api/users/{user_id}").json() if res["message"] == 'ok': update.message.reply_text( "У вас уже есть аккаунт, \n" "для продолжения авторизуйтесь", reply_keyboard=ReplyKeyboardMarkup([], one_time_keyboard=True)) if user_id not in sessionStorage.keys(): sessionStorage[user_id] = { 'login_stage': 0, 'conv_stage': 0 } return login(update, context) else: return register(update, context)
def register(update, context): mes = update.message.text.strip() user_id = update.message.from_user.id res = get(f"{FLASK_SERVER}/api/users/{user_id}").json() if res["message"] == 'ok': update.message.reply_text("У вас уже есть аккаунт!") sessionStorage[user_id]["login_stage"] = 0 return login(update, context) else: if user_id not in sessionStorage.keys(): form = RegisterForm() sessionStorage[user_id] = { "register_stage": 0, "reg_form": form, } update.message.reply_text("Hello, я - телеграм бот Myeng." "\nЗдесь вы можете изучать английский по разделам," "\nсмотреть полезную информацию на разным темам," "\nувидеть интересные ссылки для изучения анлийского," "\nзнания тут закрепляються с помощью разных тестов по словам темы." "\nТакже у меня есть встроенный переводчик, который доступен в любой момент!" "\nИзучать английский интресно и весело! Вперед!") update.message.reply_text("Для начала вам нужно зарегистрироваться", reply_keyboard=ReplyKeyboardMarkup([], one_time_keyboard=True)) stage = sessionStorage[user_id]['register_stage'] if stage != len(RegisterForm.stages): if stage != 0: if stage == 1: sessionStorage[user_id]["reg_form"].name = mes if stage == 2: sessionStorage[user_id]["reg_form"].surname = mes if stage == 3: if "@" not in mes: update.message.reply_text("email должен содержать символ '@' !") return 1 sessionStorage[user_id]["reg_form"].email = mes if stage == 4: if len(mes) < 8: update.message.reply_text("Пароль должен состоять \n " "как минимум из 8 символом") return 1 sessionStorage[user_id]["reg_form"].password = mes if stage == 5: if mes != sessionStorage[user_id]["reg_form"].password: update.message.reply_text("Пароли должны совпадать!") return 1 sessionStorage[user_id]["reg_form"].password_again = mes if stage == 6: sessionStorage[user_id]["reg_form"].age = int(mes) if stage == 7: sessionStorage[user_id]["reg_form"].address = mes if stage == 7: update.message.reply_text(RegisterForm.stages[stage], reply_markup=aims_markup) else: update.message.reply_text(RegisterForm.stages[stage]) sessionStorage[user_id]['register_stage'] += 1 return 1 sessionStorage[user_id]["reg_form"].aim = "" for section in mes.lower().split(','): section = section.lower().strip() if len(section) == 0: continue if section not in ['путешествия', 'для работы за границей', 'разговорный']: update.message.reply_text( "Выберите цели из предложенных! (путешествия, для работы за границей, разговорный)." "\nЕсли целей много, то вводите их через запятую(,)") return 1 else: sessionStorage[user_id]["reg_form"].aim += section + ',' sessionStorage[user_id]['reg_form'].aim = sessionStorage[user_id]['reg_form'].aim[:-1] data = sessionStorage[user_id]["reg_form"] a = True nick = None try: nick = update.message.from_user.username except Exception: a = False if a: res = post(f'{FLASK_SERVER}/api/users', json={ 'id': user_id, 'name': data.name, 'surname': data.surname, 'email': data.email, 'password': data.password, 'address': data.address, 'age': data.age, 'aim': data.aim, 'telegram_name': nick, }).json() else: res = post(f'{FLASK_SERVER}/api/users', json={ 'id': user_id, 'name': data.name, 'surname': data.surname, 'email': data.email, 'password': data.password, 'address': data.address, 'age': data.age, 'aim': data.aim, 'telegram_name': "", }).json() print(res) sessionStorage[user_id]["login_stage"] = 0 update.message.reply_text("Вы успешно зарегистрированы!") return learning(update, context)
def register(update, context): mes = update.message.text user_id = update.message.from_user.id res = get(f"http://127.0.0.1:5000/api/users/{user_id}").json() if res["message"] == 'ok': update.message.reply_text("У вас уже есть аккаунт!") sessionStorage[user_id]["login_stage"] = 0 return login(update, context) else: if user_id not in sessionStorage.keys(): form = RegisterForm() sessionStorage[user_id] = { 'has_account': True, "register_stage": 0, "reg_form": form, "reg_ended": False, } stage = sessionStorage[user_id]['register_stage'] if stage != len(RegisterForm.stages): if stage != 0: if stage == 1: sessionStorage[user_id]["reg_form"].name = mes if stage == 2: sessionStorage[user_id]["reg_form"].surname = mes if stage == 3: if "@" not in mes: update.message.reply_text( "email должен содержать символ '@' !") return 1 sessionStorage[user_id]["reg_form"].email = mes if stage == 4: if len(mes) < 8: update.message.reply_text("Пароль должен состоять \n " "как минимум из 8 символом") return 1 sessionStorage[user_id]["reg_form"].password = mes if stage == 5: if mes != sessionStorage[user_id]["reg_form"].password: update.message.reply_text("Пароли должны совпадать!") return 1 sessionStorage[user_id]["reg_form"].password_again = mes if stage == 6: sessionStorage[user_id]["reg_form"].age = int(mes) if stage == 7: sessionStorage[user_id]["reg_form"].address = mes if stage == 8: if mes not in ["учитель", "ученик"]: update.message.reply_text( "Введите либо учитель, либо ученик") return 1 sessionStorage[user_id]["reg_form"].position = mes update.message.reply_text(RegisterForm.stages[stage]) sessionStorage[user_id]['register_stage'] += 1 return 1 if mes not in ['путешествия', 'бизнес', 'разговорный']: update.message.reply_text( "Выберите одно из предложенных направлений! (путешествия, бизнес, разговорный)" ) return 1 sessionStorage[user_id]["reg_form"].aim = mes data = sessionStorage[user_id]["reg_form"] res = post('http://127.0.0.1:5000/api/users', json={ 'id': user_id, 'name': data.name, 'surname': data.surname, 'email': data.email, 'password': data.password, 'address': data.address, 'age': data.age, 'position': data.position, 'aim': data.aim }).json() print(res) sessionStorage[user_id]["login_stage"] = 0 sessionStorage[user_id]["reg_ended"] = True update.message.reply_text("Вы успешно зарегестрированы!") return login(update, context)