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
- Host: GitHub
- URL: https://github.com/rulen111/vkinder
- Owner: rulen111
- Created: 2024-01-18T15:07:52.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-07-08T10:53:38.000Z (over 1 year ago)
- Last Synced: 2024-12-28T13:27:53.250Z (about 1 year ago)
- Topics: dating, vk-api
- Language: Python
- Homepage:
- Size: 59.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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**: Хранит информацию о городах.

## Описание классов
**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)**: Получает информацию о городе по его идентификатору или названию.