Пример #1
0
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
Пример #3
0
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)
Пример #4
0
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)
Пример #7
0
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)