Exemplo n.º 1
0
    def vkinder_init_command(self, event): #корневой раздел сервиса знакомств

        session = Session()
        dating_id = event.user_id
        user = session.query(DatingUser).filter(DatingUser.dating_id == dating_id).all()

        if len(user) == 0: # если отсутствет информация о пользователе то создаётся запись в БД
            self.add_new_dating_user(event)
            return self.vkinder_init_command(event)
        else:
            self.write_msg(event.user_id, "что будем делать?")#переходы из корневого раздела к другим командам
            for event in self.longpoll.listen():
                if event.type == VkEventType.MESSAGE_NEW:
                    if event.to_me:
                        request = event.text

                        if request == "новые партнёры":
                            self.search_new_partners(event)
                        elif request == "покажи понравившихся":
                            self.see_liked(event)
                        elif request == 'покажи чс':
                            self.see_blacklisted(event)
                        elif request == 'обнови информацию':
                            self.update_user_data(event)
                        elif request == 'удали понравившихся':
                            self.drop_liked(event)
                        elif request == 'удали чс':
                            self.drop_blacklisted(event)
                        elif request == 'удали пользователя':
                            self.drop_user_data(event)
                        elif request == 'в начало':
                            self.write_msg(event.user_id, "перешли в начало")
                            return
                        else:
                            self.show_vkinder_commands(event)
Exemplo n.º 2
0
    def search_new_partners(self, event):
        # получение исходных данных для поиска партнёров
        session = Session()
        user = session.query(DatingUser).all()
        age_min = user[0].age_min
        age_max = user[0].age_max
        city_id = user[0].city_id
        offset = 0
        sex = user[0].partners_sex

        self.show_possible_partners(event, search_token, offset, city_id, sex, age_min, age_max)
Exemplo n.º 3
0
    def see_blacklisted(self, event): #вывод из БД чёрного списка
        session = Session()

        id_dater = event.user_id
        blacklisted_users = session.query(BlacklistedUser).filter(BlacklistedUser.id_dater == id_dater).all()
        for user in blacklisted_users:
            first_name = user.first_name
            last_name = user.last_name
            id = user.blacklisted_id
            bl_user = first_name + ' ' + last_name + ' ' + 'https://vk.com/id' + str(id)
            self.write_msg(event.user_id, bl_user)
Exemplo n.º 4
0
    def drop_user_data(self, event):
        self.write_msg(event.user_id, 'вы уверены?')
        reply = self.wait_command()
        if reply == 'да':
            session = Session()

            self.drop_blacklisted(event)
            self.drop_liked(event)
            dating_id = event.user_id
            session.query(DatingUser).filter(DatingUser.dating_id == dating_id).delete()
            self.write_msg(event.user_id, 'данные удалены')
        else:
            self.write_msg(event.user_id, 'ну и хорошо')
Exemplo n.º 5
0
def database_check(check_id):  # метод для проверки на вхождение в БД
    session = Session()

    liked_users = session.query(MatchingUser).all()
    liked_users_list = [liked_user.matching_id for liked_user in liked_users]

    disliked_users = session.query(BlacklistedUser).all()
    disliked_users_list = [
        disliked_user.blacklisted_id for disliked_user in disliked_users
    ]

    if check_id in liked_users_list or check_id in disliked_users_list:
        return True
    else:
        return False
Exemplo n.º 6
0
    def see_liked(self, event): #вывод из БД понравившихся
        session = Session()

        id_dater = event.user_id
        liked_users = session.query(MatchingUser).filter(MatchingUser.id_dater == id_dater).all()

        for liked_user in liked_users:
            first_name = liked_user.first_name
            last_name = liked_user.last_name
            id = liked_user.matching_id
            user_info = first_name + ' ' + last_name + ' ' + 'https://vk.com/id' + str(id)
            self.write_msg(event.user_id, user_info)
            photos = session.query(Photos).filter(Photos.id_matcher == id).all()
            for photo in photos:
                if id == photo.id_matcher:
                    self.write_msg(event.user_id, photo.photo_link)
Exemplo n.º 7
0
    def update_user_data(self, event): #метод для обновления информации для поиска
        session = Session()
        user = session.query(DatingUser).all()[0]
        id = user.dating_id

        self.write_msg(event.user_id, f'Укажите минимальный возраст для поиска партнёров')
        age_min = self.wait_command()

        self.write_msg(event.user_id, f'Укажите максимальный возраст для поиска партнёров')
        age_max = self.wait_command()

        self.write_msg(event.user_id, f'Укажите пол партнёров для поиска поиска, м или ж')
        partners_sex = self.wait_command()
        if partners_sex == 'м':
            partners_sex = 2
        elif partners_sex == 'ж':
            partners_sex = 1
        else:
            self.write_msg(event.user_id, f'ничего не понял, спрошу ещё раз')
            return self.update_user_data(event)

        session.query(DatingUser).filter(DatingUser.dating_id == id).update(
            {"age_min": age_min, "age_max": age_max, "partners_sex": partners_sex}
        )
        session.commit()
        self.write_msg(event.user_id, 'информация обновлена')
Exemplo n.º 8
0
    def drop_liked(self, event):
        session = Session()
        id_dater = event.user_id
        liked_users = session.query(MatchingUser).filter(MatchingUser.id_dater == id_dater).all()

        for liked_user in liked_users:
            id_matcher = liked_user.matching_id
            session.query(Photos).filter(Photos.id_matcher == id_matcher).delete()

        session.query(MatchingUser).filter(MatchingUser.id_dater == id_dater).delete()

        self.write_msg(event.user_id, 'список понравившихся очищен')
Exemplo n.º 9
0
    def add_blocked(self, entry_id): #метод для записи в БД чёрного списка
        session = Session()
        user = session.query(DatingUser).all()

        id_dater = user[0].dating_id
        blacklisted_id = entry_id[2]
        first_name = entry_id[0]
        last_name =entry_id[1]

        disliked_iser = BlacklistedUser(blacklisted_id=blacklisted_id, first_name=first_name, last_name=last_name, id_dater=id_dater)
        session.add(disliked_iser)
        session.commit()
Exemplo n.º 10
0
    def add_new_dating_user(self, event): #метод для первоначального добавления пользователя

        session = Session()

        self.write_msg(event.user_id, 'Необходимо ввести данные для работы бота VKinder')
        vk_id = event.user_id

        r = requests.get(
            'https://api.vk.com/method/users.get',
            params={
                'access_token': vk_token,
                'v': 5.89,
                'user_ids': vk_id,
                'fields': 'bdate, sex, city',
                'name_case': 'Nom'
            }
        )
        r = r.json()
        first_name = r['response'][0]['first_name']
        last_name = r['response'][0]['last_name']
        city_name = r['response'][0]['city']['title']
        city_id = r['response'][0]['city']['id']
        bdate = r['response'][0]['bdate']
        sex = r['response'][0]['sex']

        self.write_msg(event.user_id, f'Укажите минимальный возраст для поиска партнёров')
        age_min = self.wait_command()
        # print(age_min)

        self.write_msg(event.user_id, f'Укажите максимальный возраст для поиска партнёров')
        age_max = self.wait_command()

        self.write_msg(event.user_id, f'Укажите пол партнёров для поиска поиска, м или ж')
        partners_sex = self.wait_command()
        if partners_sex == 'м':
            partners_sex = 2
        elif partners_sex == 'ж':
            partners_sex = 1
        else:
            self.write_msg(event.user_id, f'ничего не понял, спрошу ещё раз')
            return self.add_new_dating_user(event)

        user = DatingUser(dating_id=vk_id, first_name=first_name, last_name=last_name, city_name=city_name, city_id=city_id, bdate=bdate,
                          age_min=age_min, age_max=age_max, sex=sex, partners_sex=partners_sex)
        session.add(user)
        session.commit()

        self.write_msg(event.user_id, f'Пользователь {vk_id} добавлен')
Exemplo n.º 11
0
 def drop_blacklisted(self, event):
     session = Session()
     id_dater = event.user_id
     session.query(BlacklistedUser).filter(BlacklistedUser.id_dater == id_dater).delete()
     self.write_msg(event.user_id, 'список чс очищен')
Exemplo n.º 12
0
    def add_liked(self, top3_pics, matching_id): #метод для записи в БД понравившихся пользователей
        session = Session()
        user = session.query(DatingUser).all()
        id_dater = user[0].dating_id

        r = requests.get(
            'https://api.vk.com/method/users.get',
            params={
                'access_token': vk_token,
                'v': 5.89,
                'user_ids': matching_id,
                'fields': 'bdate, sex',
                'name_case': 'Nom'
            }
        )
        r = r.json()
        first_name = r['response'][0]['first_name']
        last_name = r['response'][0]['last_name']
        try:
            bdate = r['response'][0]['bdate']
        except:
            bdate = 'NA'
        sex = r['response'][0]['sex']

        liked_user = MatchingUser(matching_id=matching_id, first_name=first_name, last_name=last_name, bdate=bdate, id_dater=id_dater, sex=sex)
        session.add(liked_user)
        session.commit()

        for photo in top3_pics:
            pic_link = photo[0]
            pic_likes = photo[1]
            photo = Photos(id_matcher=matching_id, photo_link=pic_link, likes_count=pic_likes)
            session.add(photo)
            session.commit()