-
Notifications
You must be signed in to change notification settings - Fork 0
/
registration.py
99 lines (71 loc) · 3.3 KB
/
registration.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import config
import db_users
import main
import user
import keyboards
from aiogram import types
from aiogram.dispatcher.filters.state import State, StatesGroup
user = user.User()
class StageRegistration(StatesGroup):
waiting_for_registration = State()
waiting_for_name = State()
waiting_for_age = State()
waiting_for_sex = State()
waiting_for_sex_chosen = State()
waiting_for_city = State()
waiting_for_photo = State()
async def registration(message):
user.set_id(message.from_user.id)
await message.answer('Как тебя зовут?')
await StageRegistration.waiting_for_name.set()
async def get_name(message: types.Message):
name = message.text
user.set_name(name)
await message.answer('Сколько тебе лет?')
await StageRegistration.waiting_for_age.set()
async def get_age(message: types.Message):
age = message.text
if not age.isdigit():
await message.answer('Возраст должен быть цифрами, введите заново')
return
else:
age = int(age)
if age <= 0 or age > 80:
await message.answer('Столько люди не живут!')
return
else:
user.set_age(age)
await get_sex(message)
async def get_sex(message: types.Message):
keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
keyboard.add(*keyboards.keys_for_sex)
await message.answer('А какой у тебя пол?', reply_markup=keyboard)
await StageRegistration.waiting_for_sex_chosen.set()
async def sex_chosen(message: types.Message):
if message.text not in keyboards.keys_for_sex:
await message.answer("Пожалуйста, выберите пол, используя клавиатуру ниже.")
await StageRegistration.waiting_for_sex_chosen.set()
else:
sex = message.text
user.set_sex(sex)
await message.answer('В каком городе ты находишься?', reply_markup=types.ReplyKeyboardRemove())
await StageRegistration.waiting_for_city.set()
async def get_city(message: types.Message):
city = message.text
user.set_city(city)
await message.answer('Осталось только загрузить фото')
await StageRegistration.waiting_for_photo.set()
async def get_photo(message: types.Message):
file_path = f'photos/{message.from_user.id}_photo.jpg'
await message.photo[-1].download(destination=file_path)
user.set_photo(file_path)
db_users.save_user_form(user)
db_users.set_state(user.id, config.S_MENU)
await say_info(message)
async def say_info(message: types.Message):
await message.answer('Основная регистрация профиля завершина!\n\n'
'Однако, чтобы воспользоваться дополнительными функциями поиска друзей, стоит пройти '
'дополнительную регистрацию.\n'
'Это можно сделать в любое время, когда тебе удобно.\n'
'Пока что тебе будет доступен просмотр всех анкет.')
await main.create_notifications(message)