def main(): while True: if server1.listen(): user_id, message = server1.listen() server1.send_msg(user_id, 'Приветсвую!') user_info = bot.collect_info(user_id) working(user_id, user_info)
def working(user_id, user_info): candidat_list = bot.selection(user_id, user_info) pages = bot.get_photo(candidat_list) bot.show_photo(pages) server1.send_msg(user_id, 'Выполнить поиск еще раз?( да/нет )') while True: user_input = server1.listen()[1] if user_input.lower() == ('да'): working(user_id, user_info) else: main()
def get_age(self, resp): try: user_year = resp[0]['bdate'].split('.')[2] return user_year except (KeyError, IndexError): server1.send_msg(self.user_id, 'Введите год рождения, например: 1990) ') while True: user_year = int(server1.listen()[1]) if 1900 < user_year < 2100: return user_year else: server1.send_msg(self.user_id, 'Неверный ввод')
def get_sex(self, resp): if resp[0]['sex'] != 0: # определение пола user_sex = resp[0]['sex'] return user_sex else: while True: # если пол не указан, потребуем его написать server1.send_msg(self.user_id, 'Укажите пол( м/ж ) ') user_sex = server1.listen()[1] if user_sex == ('м'): user_sex = 2 return user_sex elif user_sex == ('ж'): user_sex = 1 return user_sex else: server1.send_msg(self.user_id, 'Неверный ввод')
def get_town(self, resp): try: city_id = resp[0]['city']['id'] return city_id except KeyError: server1.send_msg(self.user_id, 'Введите свой город, пожалуйста не вводите города не из России ') while True: user_city = server1.listen()[1].capitalize() vk = self.vk_session.get_api() resp = vk.database.getCities(country_id=1, q=user_city) # id города понадобится при поиске time.sleep(1) for i in resp['items']: if user_city == i['title']: city_id = i['id'] return city_id server1.send_msg(self.user_id, 'Не получилось найти такой город, проверьте правописание или введите' ' другой ')
def selection(self, name, info): """ выборка подходящих людей """ vk = self.vk_session.get_api() age_from = 2021 - int(info[1]) - 5 age_to = 2021 - int(info[1]) + 5 if info[2] == 1: # противоположный пол unsex = 2 else: unsex = 1 city_id = info[0] server1.send_msg(self.user_id, 'Начинаю поиск пары') response = vk.users.search(sex=unsex, age_from=age_from, age_to=age_to, city=city_id, status=6, has_photo=1, count=1000, offset=randrange(10**2)) # чтобы избежать повторов при недоступности БД time.sleep(1) cdt_list = [] history_list = DB.get_data(name) # получение истории поиска по имени пользователя if history_list is not None: for i in response['items']: if i["can_access_closed"] and (len(cdt_list) < 10) and (i['id'] not in history_list): cdt_list.append(i['id']) else: for i in response['items']: if i["can_access_closed"] and len(cdt_list) < 10: cdt_list.append(i['id']) if len(cdt_list) < 1: server1.send_msg(self.user_id, 'Никого не нашел:с\n' 'попробуйте поменять город или выполнить поиск еще раз ') return cdt_list
def show_photo(self, photos): for i, y in photos.items(): server1.send_msg(self.user_id, f'Возможная пара: {i}') for photo in y: server1.send_photo(self.user_id, photo)