VKinder Бот Это скрипт на Python, который использует API VK для взаимодействий. VKinder Бот помогает пользователям найти потенциальную пару для знакомства на сайте ВКонтакте (VK) на основе указанных предпочтений.
Предварительные требования Перед запуском бота убедитесь, что у вас установлены следующие зависимости:
- 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.
Это класс для обработки 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): Получает информацию о городе по его идентификатору или названию.