예제 #1
0
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)
예제 #2
0
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()
예제 #3
0
 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, 'Неверный ввод')
예제 #4
0
    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, 'Неверный ввод')
예제 #5
0
    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, 'Не получилось найти такой город, проверьте правописание или введите'
                                               ' другой ')
예제 #6
0
    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
예제 #7
0
 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)