An open API service indexing awesome lists of open source software.

https://github.com/rulen111/vkinder

VK dating bot
https://github.com/rulen111/vkinder

dating vk-api

Last synced: 2 months ago
JSON representation

VK dating bot

Awesome Lists containing this project

README

          

# VKinder
VKinder Бот
Это скрипт на Python, который использует API VK для взаимодействий. VKinder Бот помогает пользователям найти потенциальную пару для знакомства на сайте ВКонтакте (VK) на основе указанных предпочтений.

## Описание func

Предварительные требования
Перед запуском бота убедитесь, что у вас установлены следующие зависимости:

* vk_api
* yaml

### Настройка

Для настройки бота необходим файл **_config.yaml_**. Убедитесь, что у вас правильно установлены следующие параметры:

**VK.VERSION**: Версия API VK, которую необходимо использовать.

**VK.APP_ID**: Ваш идентификатор самостоятельного приложения (или введите его интерактивно, если не установлен).

**VK.GROUP_TOKEN**: Токен доступа к группе VK (или введите его интерактивно, если не установлен).

**VK.GROUP_ID**: Идентификатор группы VK (или введите его интерактивно, если не установлен).

**VK.USER_TOKEN**: Токен пользователя для API VK.

## Использование

Убедитесь, что файл **_config.yaml_** правильно настроен.
Запустите скрипт.

Бот использует файлы JSON для макетов. Предоставлены следующие макеты:

**keyboard_main.json**: Основной макет.

**keyboard_choose.json**: Для выбора предпочтений.

**keyboard_search.json**: Для функции поиска.

**keyboard_empty.json**: Пустой макет.

**keyboard_settings.json**: Для настроек.

**keyboard_authorize.json**: Для авторизации.

**keyboard_list_fav.json**: Для списка избранных.

**keyboard_list_fav_gallery.json**: Для списка избранных в виде галереи.

## Логирование

Бот регистрирует события и ошибки в файлы в каталоге **_logs/_**. Каждый файл журнала назван по дате.

### Функциональность

**logger**: Декоратор для регистрации вызовов функций.

**api_handler**: Декоратор для перехвата ошибок VK API.

**update_config**: Функция для обновления данных конфигурации в файле config.yaml.

## VKhandler

Это класс для обработки **_Longpoll_**. Обрабатывает поступающие события бота.

## Методы

**init_user_client**: Этот метод обрабатывает инициализацию объекта VKClient для использования с пользовательским токеном. Принимает токен в качестве аргумента и устанавливает его в user_client.

**start**: Обрабатывает событие "start". При вызове этого метода бот отправляет сообщение, объясняющее пользователю, как начать работу с ботом.

**token**: Обрабатывает событие "token". Метод получает токен, введенный пользователем, и инициализирует user_client. Если токен успешно установлен, он записывается в конфигурационный файл.

**random_msg**: Обрабатывает событие "random_msg". Этот метод отправляет случайное сообщение пользователю, предлагая в случае пропажи клавиатуры написать слово "Начать".

**main_menu**: Обрабатывает событие "main_menu". Этот метод выводит главное меню пользователю.

**search**: Обрабатывает событие "search". Метод инициирует процесс поиска, запрашивая у пользователя подтверждение поисковых параметров.

**search_start**: Обрабатывает событие "search_start". Этот метод запускает процесс поиска на основе указанных пользовательских параметров.

**rotation**: Обрабатывает событие "rotation". Метод отображает профиль пользователя из результатов поиска и предоставляет возможность просмотра следующего профиля.

**next_person**: Обрабатывает событие "next_person". Этот метод перемещается к следующему профилю в результате поиска.

**show_help**: Обрабатывает событие "show_help". Данный метод выводит справочную информацию.

**settings**: Обрабатывает событие "settings". Метод предоставляет пользователю возможность изменить настройки.

**change_city**: Обрабатывает событие "change_city". Этот метод инициирует процесс изменения города пользователя.

**change_city_value**: Обрабатывает событие "change_city_value". Метод изменяет город пользователя на указанный.

**change_age**: Обрабатывает событие "change_age". Этот метод инициирует процесс изменения возраста пользователя.

**change_age_value**: Обрабатывает событие "change_age_value". Метод изменяет возраст пользователя на указанный.

**change_sex**: Обрабатывает событие "change_sex". Этот метод инициирует процесс изменения пола пользователя.

**change_sex_value**: Обрабатывает событие "change_sex_value". Метод изменяет пол пользователя на указанный.

**add_to_fav**: Обрабатывает событие "add_to_fav". Метод добавляет профиль пользователя в список избранного.

**list_fav**: Обрабатывает событие "list_fav". Метод выводит список избранных профилей пользователю.

**list_fav_list**: Обрабатывает событие "list_fav_list". Метод выводит список избранных профилей пользователю списком.

**list_fav_gallery**: Обрабатывает событие "list_fav_gallery". Метод выводит список избранных профилей пользователю в виде галереи.

**fav_gallery_next**: Обрабатывает событие "fav_gallery_next". Метод отображает следующий профиль из избранного.

**start_polling**: Запускает процесс приема и обработки событий от серверов VK. Итерируется по каждому входящему событию и вызывает соответствующий обработчик.

## Работа с БД

Данный проект представляет собой набор классов и функций для работы с базой данных пользователей и их избранных в социальной сети VKontakte (VK).

### Структура базы данных

Проект использует базу данных, организованную с использованием SQLAlchemy. В базе данных есть следующие таблицы:

**Favourite**: Хранит информацию о пользователях, добавленных в избранное.

**Client**: Содержит информацию о клиентах, включая их параметры поиска и город проживания.

**Client_Favourite**: Эта таблица устанавливает отношение "многие ко многим" между клиентами и их избранными пользователями.

**City**: Хранит информацию о городах.

![Диаграмма структуры базы данных](./img/db_diagram.png "Диаграмма структуры базы данных")

## Описание классов

**Favourite**: Класс описывает модель избранного пользователя VK.

**Client**: Представляет модель клиента с параметрами поиска и городом проживания.

**Client_Favourite**: Модель представляет собой ассоциативную таблицу для установления отношения "многие ко многим" между клиентами и их избранными пользователями.

**City**: Представляет модель города.

## Функции работы с базой данных

**create_tables(engine)**: Создает все таблицы в базе данных, используя определенную структуру.

**drop_tables(engine)**: Удаляет все таблицы из базы данных.

**add_fav_entry(session, client_user_id, user_id, first_name, last_name, attachment)**: Добавляет запись об избранном пользователе в базу данных.

**get_fav_list(session, client_id)**: Получает список избранных пользователей для указанного клиента.

**add_client_info(session, user_id, age_from, age_to, sex, city)**: Добавляет информацию о клиенте в базу данных.

**get_client_info(session, user_id)**: Получает информацию о клиенте по его идентификатору.

**add_city_entry(session, city_id, name)**: Добавляет информацию о городе в базу данных.

**get_city_entry(session, city_id, name=None)**: Получает информацию о городе по его идентификатору или названию.