Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Содержание


Общее описание проекта

Проект представляет собой бота для ВКонтакте, который помогает пользователям искать пару, сохранять избранные анкеты и добавлять пользователей в черный список. Бот работает с базой данных PostgreSQL для хранения информации о пользователях и их предпочтениях.


Начало работы:

Перед запуском бота необходимо сгенерировать настройки, следуйте этим шагам:

  1. Создать базу данных под вашим пользователем postgres;
  2. Зайти в папку generating_settings;
  3. Запустить фаил generate_settings.py;
  4. Ввести данные настроек в появившееся окно:
    • postgresql_url - URL PostgreSQL (формат: 'postgresql://имя_пользователя:пароль@localhost/наименование_базы_данных')
    • vk_token - VK Token созданной группы вконтакте
  5. После можно запускать самого бота

Подробнее о настройках можно узнать в разделе generating_settings.


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

Визуализация схемы базы данных

VKinder.png

Таблица user

Описание

Таблица user хранит информацию о пользователях, использующих бота. Каждый пользователь имеет уникальный идентификатор ВКонтакте (vk_id_user) и основные данные, такие как имя, фамилия, возраст, пол и город.

Структура

Поле Тип данных Описание
vk_id_user Integer Уникальный идентификатор пользователя ВКонтакте (первичный ключ).
first_name String Имя пользователя (может быть NULL).
last_name String Фамилия пользователя (может быть NULL).
age Integer Возраст пользователя (может быть NULL).
gender String Пол пользователя (может быть NULL).
city String Город проживания пользователя (может быть NULL).

Связи

  • favorites: Связь с моделью Favorite, определяет список избранных пользователей.
  • blacklist: Связь с моделью BlackList, определяет список заблокированных пользователей.

Таблица favorite

Описание

Таблица favorite хранит информацию о пользователях, которых текущий пользователь добавил в избранное.

Структура

Поле Тип данных Описание
id Integer Уникальный идентификатор записи (первичный ключ).
user_id Integer Идентификатор пользователя, который добавил фаворита (внешний ключ, ссылается на user.vk_id_user).
vk_id_favorite Integer Идентификатор избранного пользователя ВКонтакте.
name String Имя избранного пользователя.
url String Ссылка на профиль избранного пользователя.

Связь

  • user: Связь с моделью User, определяет пользователя, который создал запись в избранном.

Таблица blacklist

Описание

Таблица blacklist хранит информацию о пользователях, которых текущий пользователь заблокировал.

Структура

Поле Тип данных Описание
id Integer Уникальный идентификатор записи (первичный ключ).
user_id Integer Идентификатор пользователя, который заблокировал (внешний ключ, ссылается на user.vk_id_user).
vk_id_blacklist Integer Идентификатор заблокированного пользователя ВКонтакте.
name String Имя заблокированного пользователя.
url String Ссылка на профиль заблокированного пользователя.

Связь

  • user: Связь с моделью User, определяет пользователя, который создал запись в черном списке.

Дополнительная информация

  1. Первичные ключи:

    • В таблице user первичным ключом является vk_id_user.
    • В таблицах favorite и blacklist первичным ключом является поле id.
  2. Внешние ключи:

    • В таблицах favorite и blacklist поле user_id является внешним ключом, которое ссылается на поле vk_id_user таблицы user.
  3. Дополнительные поля в favorite и blacklist:

    • Поля name и url добавлены для хранения имени и ссылки на профиль соответствующего пользователя ВКонтакте.

Содержимое папки DB

В папке DB хранятся файлы, связанные с настройкой и структурой базы данных приложения.

Файлы

  • Этот файл содержит определения моделей базы данных, написанные с использованием SQLAlchemy. Здесь описаны таблицы user, favorite и blacklist, а также их связи и структура. Модели используют декларативный стиль SQLAlchemy для создания таблиц и управления отношениями между ними.
  • Функция create_tables(engine) : В этом же файле (modules.py) определена функция create_tables(engine), которая используется для создания или пересоздания таблиц в базе данных. Она очищает существующие таблицы и создает новые на основе определенных моделей.
Логика работы
  • Функция create_tables выполняет следующие действия: Очистка существующих таблиц:
    • Если в базе данных уже существуют таблицы, связанные с текущими моделями, они полностью удаляются. Это позволяет избежать конфликтов при изменении структуры базы данных. Создание новых таблиц:
    • После очистки (или если таблицы отсутствуют), создаются новые таблицы на основе определенных декларативных моделей SQLAlchemy.
    • Все таблицы создаются согласно их описанию в коде (например, модели User, Favorite, BlackList). Подготовка базы данных:
    • Функция обеспечивает чистую и актуальную структуру базы данных, готовую к работе. Это особенно полезно на этапах разработки или тестирования.
Зависимости
  • Функция использует следующие компоненты:
    • Объект Base из SQLAlchemy для доступа к метаданным моделей.
    • Объект engine для подключения к базе данных.
Важные моменты
  • Функция предназначена для сброса и создания структуры базы данных.
  • Она не сохраняет данные из старых таблиц, так как полностью их удаляет перед созданием новых.
  • Рекомендуется использовать её только в разработочных или тестовых средах, где потеря данных не критична.
Описание
  • Файл содержит функцию delete_user, которая используется для удаления пользователя из базы данных по его идентификатору ВКонтакте (vk_id).
Логика работы
  • Функция delete_user выполняет следующие действия:
    • Создает сессию для взаимодействия с базой данных.
    • Ищет пользователя по переданному vk_id.
    • Удаляет найденного пользователя из таблицы user, если он существует.
    • Сохраняет изменения в базе данных.

Зависимости

  • Функция использует следующие компоненты:
    • Session из sqlalchemy.orm для работы с базой данных.
    • Модель User из файла DB.modules, которая представляет таблицу пользователей.
    • Объект engine из модуля .engine для подключения к базе данных.
Важные моменты
  • Если пользователь с указанным vk_id не найден, функция завершается без каких-либо действий.
  • Функция должна использоваться с осторожностью, так как удаление пользователя является необратимым действием.
Описание
  • Файл содержит настройку подключения к базе данных PostgreSQL с использованием SQLAlchemy.
Логика работы
  • Файл выполняет следующие действия:
    • Импортирует функцию create_engine из SQLAlchemy для создания движка подключения к базе данных.
    • Импортирует переменную url из модуля tokens.urlpostgresql, которая содержит строку подключения к PostgreSQL.
    • Создает объект engine, который представляет собой движок SQLAlchemy для взаимодействия с базой данных.
    • Проверяет подключение к базе данных с помощью метода engine.connect().
Зависимости
  • Файл использует следующие компоненты:
    • create_engine из sqlalchemy для создания движка базы данных.
    • Переменная url из модуля tokens.urlpostgresql, содержащая строку подключения к PostgreSQL.
Важные моменты
  • Файл необходим для установления соединения с базой данных и его дальнейшего использования в других модулях проекта.
  • Строка подключения (url) должна быть правильно настроена в файле tokens.urlpostgresql для успешного подключения к базе данных.
  • Метод engine.connect() проверяет доступность базы данных, но не закрывает соединение — оно остается активным для последующего использования.
  • Убедитесь, что база данных PostgreSQL запущена и доступна по указанному URL.
Описание
  • Файл содержит функции для получения данных о пользователях, их черном списке и избранных пользователях из базы данных.
Логика работы
  • Функция get_user_vk:

    • Создает сессию для взаимодействия с базой данных.
    • Выполняет запрос к таблице user, фильтруя запись по переданному vk_id.
    • Возвращает найденного пользователя или None, если пользователь не существует.
  • Функция get_user_blacklist:

    • Создает сессию для взаимодействия с базой данных.
    • Выполняет запрос к таблице blacklist, получая все записи, связанные с указанным vk_id.
    • Преобразует результат в список словарей, исключая служебные атрибуты объектов.
    • Возвращает список заблокированных пользователей.
  • Функция get_user_favorite:

    • Создает сессию для взаимодействия с базой данных.
    • Выполняет запрос к таблице favorite, получая все записи, связанные с указанным vk_id.
    • Преобразует результат в список словарей, исключая служебные атрибуты объектов.
    • Возвращает список избранных пользователей.
Зависимости
  • Файл использует следующие компоненты:
    • Session из sqlalchemy.orm для работы с базой данных.
    • Модели User, BlackList и Favorite из файла DB.modules, представляющие таблицы пользователей, черного списка и избранного соответственно.
    • Объект engine из модуля .engine для подключения к базе данных.
Важные моменты
  • Все функции работают только при наличии установленного соединения с базой данных через engine.
  • Если запрос не находит соответствующих записей, функции возвращают пустой результат (None для get_user_vk и пустой список для get_user_blacklist и get_user_favorite).
  • Преобразование объектов в словари (__dict__) используется для удобства дальнейшей обработки данных вне функций.
  • Убедитесь, что перед использованием функций данные в базе данных корректно заполнены и соответствуют ожидаемой структуре.
Описание
  • Файл содержит функцию insert_user для добавления нового пользователя в таблицу user базы данных.
Логика работы
  • Функция insert_user:
    • Создает сессию для взаимодействия с базой данных.
    • Создает новый объект модели User с переданными параметрами (id_user, firstname, lastname, age, gender, city).
    • Добавляет созданный объект в сессию с помощью метода session.add().
    • Сохраняет изменения в базе данных с помощью session.commit().
Зависимости
  • Файл использует следующие компоненты:
    • Session из sqlalchemy.orm для работы с базой данных.
    • Модель User из файла DB.modules, представляющая таблицу пользователей.
    • Объект engine из модуля .engine для подключения к базе данных.
Важные моменты
  • Функция добавляет нового пользователя только в том случае, если переданы все необходимые параметры.
  • Если пользователь с указанным id_user уже существует в базе данных, SQLAlchemy не будет создавать дубликат записи (но это зависит от настроек уникальности поля vk_id_user в модели User).
  • Убедитесь, что переданные параметры соответствуют типам данных, определенным в модели User.
  • После вызова функции данные сразу сохраняются в базе данных благодаря session.commit().
Описание
  • Файл содержит функцию insert_user_blacklist для добавления пользователя в черный список (blacklist) конкретного пользователя.
Логика работы
  • Функция insert_user_blacklist:
    • Создает сессию для взаимодействия с базой данных.
    • Создает новый объект модели BlackList с переданными параметрами (id_user, id_blacklist, name, url).
    • Добавляет созданный объект в сессию с помощью метода session.add().
    • Сохраняет изменения в базе данных с помощью session.commit().
Зависимости
  • Файл использует следующие компоненты:
    • Session из sqlalchemy.orm для работы с базой данных.
    • Модель BlackList из файла DB.modules, представляющая таблицу черного списка.
    • Объект engine из модуля .engine для подключения к базе данных.
Важные моменты
  • Функция добавляет запись о пользователе в черный список только в том случае, если переданы все необходимые параметры.
  • Если запись с указанным id_blacklist для данного id_user уже существует, SQLAlchemy не создаст дубликат (зависит от уникальности настроек в модели BlackList).
  • Убедитесь, что переданные параметры соответствуют типам данных, определенным в модели BlackList.
  • После вызова функции данные сразу сохраняются в базе данных благодаря session.commit().
Описание
  • Файл содержит функцию insert_user_favorite для добавления пользователя в список избранных (favorite) конкретного пользователя.
Логика работы
  • Функция insert_user_favorite:
    • Создает сессию для взаимодействия с базой данных.
    • Создает новый объект модели Favorite с переданными параметрами (id_user, id_favorite, name, url).
    • Добавляет созданный объект в сессию с помощью метода session.add().
    • Сохраняет изменения в базе данных с помощью session.commit().
Зависимости
  • Файл использует следующие компоненты:
    • Session из sqlalchemy.orm для работы с базой данных.
    • Модель Favorite из файла DB.modules, представляющая таблицу избранных пользователей.
    • Объект engine из модуля .engine для подключения к базе данных.
Важные моменты
  • Функция добавляет запись о пользователе в список избранных только в том случае, если переданы все необходимые параметры.
  • Если запись с указанным id_favorite для данного id_user уже существует, SQLAlchemy не создаст дубликат (зависит от уникальности настроек в модели Favorite).
  • Убедитесь, что переданные параметры соответствуют типам данных, определенным в модели Favorite.
  • После вызова функции данные сразу сохраняются в базе данных благодаря session.commit().

Содержимое папки func

Описание
  • Файл содержит функцию check_and_save_user для проверки и сохранения данных пользователя в базу данных.
Логика работы
  • Функция check_and_save_user:
    • Проверяет, что все обязательные параметры (city, age, gender) переданы и не являются пустыми.
    • Если проверка успешна, вызывает функцию insert_user для добавления пользователя в таблицу user.
    • Если хотя бы один из обязательных параметров отсутствует, функция ничего не делает.
Зависимости
  • Файл использует следующие компоненты:
    • Функция insert_user из модуля DB.insert_user для добавления пользователя в базу данных.
    • Модуль .sender (не используется напрямую в коде, но может быть задействован в контексте вызова).
Важные моменты
  • Функция не выполняет никаких действий, если обязательные параметры (city, age, gender) не заполнены.
  • Обработка ошибок или дополнительная логика (например, уведомления о неудачной записи) может быть добавлена при необходимости.
  • Убедитесь, что переданные параметры соответствуют типам данных, определенным в модели User.
Описание
  • Файл содержит функции для загрузки и отправки фотографий через API ВКонтакте.
Логика работы
  • Функция download_photo:

    • Выполняет GET-запрос к указанному URL для скачивания фото.
    • Если запрос успешен (код ответа 200), возвращает файловую строку (BytesIO) с содержимым изображения.
    • Если запрос не успешен, выбрасывает исключение с указанием кода ошибки.
  • Функция upload_and_send_photos:

    • Получает URL-адреса фотографий, которые необходимо отправить пользователю.
    • Для каждой фотографии:
      • Вызывает функцию download_photo для загрузки фото.
      • Отправляет фото на сервер загрузки ВКонтакте с использованием метода photos.getMessagesUploadServer.
      • Сохраняет фото с помощью метода photos.saveMessagesPhoto.
      • Добавляет сохраненное фото в список для последующей отправки.
    • Отправляет сообщение пользователю с прикрепленными фотографиями через метод messages.send.
Зависимости
  • Файл использует следующие компоненты:
    • Библиотека requests для выполнения HTTP-запросов.
    • Класс BytesIO из модуля io для работы с бинарными данными.
    • Объект vk для взаимодействия с API ВКонтакте.
    • Параметры user_id, photo_urls, message, keyboard для настройки отправки сообщений.
Важные моменты
  • Функция download_photo должна получать корректные URL-адреса изображений.
  • Метод vk.photos.getMessagesUploadServer предоставляет URL для загрузки фото на сервер ВКонтакте.
  • При сохранении фото используется метод vk.photos.saveMessagesPhoto, который требует параметров photo, server и hash.
  • Если возникают ошибки во время выполнения (например, недоступность сервера или некорректные данные), они обрабатываются через блок try-except, и сообщение об ошибке выводится в консоль.
  • Убедитесь, что API-токен и права доступа для объекта vk позволяют выполнять необходимые действия (загрузка и отправка фото).
Описание
  • Файл содержит функцию get_age_from_vk, которая рассчитывает возраст пользователя на основе даты рождения, полученной из профиля ВКонтакте.
Логика работы
  • Функция get_age_from_vk выполняет следующие действия:
    • Проверяет, что параметр bdate не является None. Если bdate равен None, возвращает None.
    • Разбивает строку bdate по точкам (.) на список, где первый элемент — день, второй — месяц, а третий — год.
    • Если длина списка меньше 3 (т.е. год отсутствует), возвращает None, так как невозможно точно определить возраст.
    • Использует текущую дату (datetime.today()) для расчета возраста: вычитает год рождения из текущего года.
    • Проверяет, наступил ли уже день рождения в текущем году. Если нет, уменьшает возраст на 1.
    • В случае возникновения ошибки KeyError (например, если структура данных некорректна), возвращает None.
Зависимости
  • Модуль datetime используется для получения текущей даты и выполнения операций с датами.
Важные моменты
  • Функция возвращает None, если дата рождения не указана, имеет неполный формат или данные о ней некорректны.
  • Формат даты должен соответствовать стандарту ВКонтакте "DD.MM.YYYY".
  • Функция безопасно обрабатывает ошибки и некорректные данные, предотвращая выброс исключений.
Описание
  • Файл содержит функцию get_city_id для получения идентификатора города из API ВКонтакте по его названию.
Логика работы
  • Функция get_city_id выполняет следующие действия:
    • Выполняет запрос к методу vk.database.getCities с указанием страны (country_id=1 для России), названия города (q=city_name) и ограничением результатов (count=1).
    • Проверяет, содержит ли ответ ключ 'items' и есть ли в нем данные.
    • Если город найден, возвращает идентификатор первого результата (response['items'][0]['id']).
    • Если город не найден, выводит сообщение об ошибке и возвращает None.
    • При возникновении любых исключений выводит сообщение об ошибке и также возвращает None.
Зависимости
  • Функция использует объект vk для взаимодействия с API ВКонтакте.
  • Метод vk.database.getCities используется для поиска городов.
Важные моменты
  • Функция работает только с городами России (country_id=1).
  • Если город с указанным названием не существует или запрос выполнен некорректно, функция безопасно обрабатывает эту ситуацию и возвращает None.
  • Убедитесь, что у объекта vk есть необходимые права доступа для вызова метода database.getCities.
Описание
  • Файл содержит функцию get_sex, которая преобразует числовое значение пола из API ВКонтакте в строковое представление.
Логика работы
  • Функция get_sex выполняет следующие действия:
    • Если значение sex равно 1, возвращает строку 'женский'.
    • Если значение sex равно 2, возвращает строку 'мужской'.
    • Для других значений ничего не возвращает (функция завершается без результата).
Зависимости
  • Функция не зависит от внешних модулей или объектов.
Важные моменты
  • Функция работает только с числами 1 и 2. Другие значения игнорируются.
  • Используется для удобного представления пола пользователя в читаемом виде.
  • Убедитесь, что передаваемое значение соответствует формату, используемому в API ВКонтакте.
Описание
  • Файл содержит функцию get_top_photos, которая выбирает топ фотографий профиля пользователя ВКонтакте на основе количества лайков.
Логика работы
  • Функция get_top_photos выполняет следующие действия:
    • Выполняет запрос к методу vk.photos.get для получения фотографий профиля пользователя с указанным user_id.
    • Проверяет, содержит ли ответ ключ 'items' и есть ли в нем данные. Если нет, возвращает пустой список.
    • Сортирует фотографии по количеству лайков в порядке убывания.
    • Выбирает указанное количество (count) самых популярных фотографий.
    • Для каждой выбранной фотографии находит размер с максимальным разрешением и добавляет его URL в результат.
    • Возвращает список URL лучших фотографий.
    • При возникновении ошибок выводит сообщение об ошибке и возвращает пустой список.
Зависимости
  • Функция использует объект vk для взаимодействия с API ВКонтакте.
  • Метод vk.photos.get используется для получения фотографий профиля.
Важные моменты
  • По умолчанию возвращаются 3 лучших фотографии, но это число можно изменить с помощью параметра count.
  • Фотографии сортируются по количеству лайков. Если лайки отсутствуют, они считаются равными 0.
  • Функция выбирает размеры фото с максимальным разрешением (height * width).
  • Убедитесь, что у объекта vk есть необходимые права доступа для вызова метода photos.get.
Описание
  • Файл содержит функцию search_users, которая осуществляет поиск пользователей ВКонтакте по заданным параметрам.
Логика работы
  • Функция search_users выполняет следующие действия:
    • Проверяет корректность города с помощью функции get_city_id. Если город не найден, возвращает сообщение об ошибке.
    • Получает идентификатор города (city_id) с помощью функции get_city_id.
    • Определяет противоположный пол для поиска: если sex == 2 (мужской), то opposite_sex = 1 (женский), и наоборот.
    • Выполняет запрос к методу vk.users.search с указанием параметров:
      • count=1000: ограничение количества результатов.
      • city=city_id: идентификатор города.
      • age_from и age_to: диапазон возраста.
      • sex=opposite_sex: противоположный пол.
      • status=6: Relationship status "В активном поиске".
      • has_photo=1: наличие фотографий.
      • fields: дополнительные поля для получения информации о пользователях.
    • Фильтрует результаты, исключая закрытые профили (is_closed=False).
    • Возвращает список открытых пользователей.
Зависимости
  • Функция использует объект vk для взаимодействия с API ВКонтакте.
  • Метод vk.users.search используется для поиска пользователей.
  • Функция get_city_id из модуля .get_city_id для получения идентификатора города.
Важные моменты
  • Поиск осуществляется среди пользователей противоположного пола, находящихся в активном поиске и имеющих фотографии.
  • Если город не найден или произошла ошибка при его определении, функция завершается с сообщением об ошибке.
  • Убедитесь, что у объекта vk есть необходимые права доступа для вызова метода users.search.
  • Результатом является список открытых профилей пользователей с запрошенными параметрами.
Описание
  • Файл содержит функцию sender, которая отправляет сообщения пользователям через API ВКонтакте.
Логика работы
  • Функция sender выполняет следующие действия:
    • Использует метод vk.messages.send для отправки сообщения пользователю с указанным id.
    • Параметры:
      • user_id: идентификатор получателя.
      • message: текст сообщения.
      • random_id: уникальный идентификатор сообщения (установлен в 0).
      • keyboard: необязательный параметр для отправки клавиатуры (по умолчанию None).
Зависимости
  • Функция использует объект vk для взаимодействия с API ВКонтакте.
  • Метод vk.messages.send используется для отправки сообщений.
Важные моменты
  • Функция отправляет сообщение указанному пользователю с возможностью добавления клавиатуры.
  • Параметр keyboard является опциональным и может быть использован для создания интерактивных элементов в чате.
  • Убедитесь, что у объекта vk есть необходимые права доступа для вызова
Описание
  • Файл содержит функцию url_search_user, которая генерирует ссылку на профиль пользователя ВКонтакте.
Логика работы
  • Функция url_search_user выполняет следующие действия:
    • Извлекает идентификатор пользователя (user_id) из параметра user.
    • Проверяет наличие поля screen_name в данных пользователя:
      • Если screen_name существует, формирует ссылку вида https://vk.com/{screen_name}.
      • Если screen_name отсутствует, формирует ссылку вида https://vk.com/id{user_id}.
    • Возвращает сформированную ссылку на профиль пользователя.
Зависимости
  • Функция не зависит от внешних модулей или объектов, использует только входной параметр user.
Важные моменты
  • Функция корректно обрабатывает случаи, когда у пользователя есть screen_name, а также когда его нет.
  • Ссылка всегда будет валидной, так как используется стандартное форматирование URL ВКонтакте.
  • Убедитесь, что параметр user содержит корректные данные, включая ключи id и screen_name (если доступен).

Содержимое папки generating_settings

Описание
  • Файл содержит функцию generate_settings, которая создает необходимые файлы настроек для проекта, включая токены и URL для подключения к базе данных PostgreSQL и API ВКонтакте.
Логика работы
  • Функция generate_settings выполняет следующие действия:
    • Проверяет existence директории ../tokens. Если она уже существует и содержит файлы, выбрасывает ошибку.
    • Создает графический интерфейс с помощью библиотеки tkinter для ввода параметров:
      • URL PostgreSQL: строка подключения к базе данных PostgreSQL.
      • VK Token: токен доступа для API ВКонтакте.
    • После нажатия кнопки "Сохранить":
      • Вызывает внутреннюю функцию create_postgresql_file, передавая введенные данные.
      • Создает следующие файлы в директории ../tokens:
        • urlpostgresql.py: содержит строку подключения к PostgreSQL.
        • token_vk.py: содержит токен доступа к API ВКонтакте.
        • urlvkid.py: содержит URL для авторизации в VK OAuth.
        • __init__.py: пустой файл для преобразования директории в Python-пакет.
      • Выводит сообщение об успешном создании файлов или ошибку, если что-то пошло не так.
Зависимости
  • Модуль os используется для работы с файловой системой.
  • Модуль tkinter используется для создания графического интерфейса.
  • Модуль messagebox из tkinter используется для вывода информационных и предупреждающих сообщений.
Важные моменты
  • Программа проверяет, что директория ../tokens пуста перед созданием файлов. Если файлы уже существуют, программа завершается с предупреждением.
  • Создаются четыре файла:
    • urlpostgresql.py: хранит строку подключения к PostgreSQL.
    • token_vk.py: хранит токен доступа к API ВКонтакте.
    • urlvkid.py: хранит URL для авторизации через VK OAuth.
    • __init__.py: делает директорию tokens пакетом Python.
  • Убедитесь, что предоставленные данные (URL PostgreSQL и VK Token) корректны, так как они будут использоваться в дальнейшей работе приложения.
  • Программа предназначена для однократного использования. После создания файлов её повторный запуск невозможен, пока не будет удалена директория ../tokens.

Содержимое папки keyboards_inline

Описание
  • Файл содержит функцию kb_yes_or_not, которая создает клавиатуру для взаимодействия с пользователем в чате ВКонтакте.
Логика работы
  • Функция kb_yes_or_not выполняет следующие действия:
    • Создает объект VkKeyboard с параметром inline=True для создания встроенной клавиатуры.
    • Добавляет четыре кнопки:
      • Кнопка "Лайк" с положительным цветом (VkKeyboardColor.POSITIVE).
      • Кнопка "В блэклист" с отрицательным цветом (VkKeyboardColor.NEGATIVE).
      • Кнопка "Пропустить" с вторичным цветом (VkKeyboardColor.SECONDARY).
      • Кнопка "Перестать смотреть людей" с вторичным цветом (VkKeyboardColor.SECONDARY).
    • Возвращает созданную клавиатуру для дальнейшего использования.
Зависимости
  • Модуль vk_api.keyboard используется для создания клавиатуры и кнопок.
  • Константы VkKeyboardColor определяют цвета кнопок.
Важные моменты
  • Клавиатура является встроенной (inline=True), что означает, она будет отображаться под сообщением.
  • Каждая кнопка имеет свой цвет, который помогает пользователям быстро различать их назначение.
  • Функция может быть использована для предоставления пользователю простых вариантов действий при просмотре профилей других пользователей.
Описание
  • Файл содержит функцию keyboard_sex, которая создает клавиатуру для выбора пола пользователя в чате ВКонтакте.
Логика работы
  • Функция keyboard_sex выполняет следующие действия:
    • Создает объект VkKeyboard с параметром inline=True для создания встроенной клавиатуры.
    • Добавляет две кнопки:
      • Кнопка "Мужской" с вторичным цветом (VkKeyboardColor.SECONDARY).
      • Кнопка "Женский" с вторичным цветом (VkKeyboardColor.SECONDARY).
    • Возвращает созданную клавиатуру для дальнейшего использования.
Зависимости
  • Модуль vk_api.keyboard используется для создания клавиатуры и кнопок.
  • Константа VkKeyboardColor определяет цвет кнопок.
Важные моменты
  • Клавиатура является встроенной (inline=True), что означает, она будет отображаться под сообщением.
  • Кнопки имеют нейтральный цвет (SECONDARY), так как они предоставляют простой выбор без эмоциональной окраски.
  • Функция может быть использована при настройке поиска или регистрации пользователя для выбора пола.
Описание
  • Файл содержит функцию keyboard_starts, которая создает простую клавиатуру с одной кнопкой для запуска работы бота.
Логика работы
  • Функция keyboard_starts выполняет следующие действия:
    • Создает объект VkKeyboard с параметром inline=True для создания встроенной клавиатуры.
    • Добавляет одну кнопку:
      • Кнопка "Начать работу" с основным цветом (VkKeyboardColor.PRIMARY).
    • Возвращает созданную клавиатуру для использования в чате.
Зависимости
  • Модуль vk_api.keyboard используется для создания клавиатуры и кнопок.
  • Константа VkKeyboardColor определяет цвет кнопки.
Важные моменты
  • Клавиатура является встроенной (inline=True) и отображается под сообщением.
  • Кнопка имеет основной цвет (PRIMARY), что делает её заметной и призывает пользователя к действию.
  • Функция может быть использована для запуска взаимодействия с ботом или активации основного функционала.
Описание
  • Файл содержит функцию kb_yes, которая создает главную клавиатуру для управления взаимодействием с ботом.
Логика работы
  • Функция kb_yes выполняет следующие действия:
    • Создает объект VkKeyboard с параметром inline=True для создания встроенной клавиатуры.
    • Добавляет три кнопки:
      • Кнопка "Искать пару" с положительным цветом (VkKeyboardColor.POSITIVE).
      • Кнопка "Избранное" с вторичным цветом (VkKeyboardColor.SECONDARY).
      • Кнопка "Блэклист" с вторичным цветом (VkKeyboardColor.SECONDARY).
    • Возвращает созданную клавиатуру для использования в чате.
Зависимости
  • Модуль vk_api.keyboard используется для создания клавиатуры и кнопок.
  • Константа VkKeyboardColor определяет цвета кнопок.
Важные моменты
  • Клавиатура является встроенной (inline=True) и отображается под сообщением.
  • Кнопка "Искать пару" выделена положительным цветом, чтобы привлечь внимание пользователя к основному действию.
  • Кнопки "Избранное" и "Блэклист" имеют нейтральный цвет (SECONDARY), что позволяет легко переключаться между дополнительными функциями.
  • Функция может быть использована для предоставления пользователю быстрого доступа к основным функциям бота.

Содержимое папки pictures

  • Фаил VKinder.png, визуальное представление структуры DB.

Фаил с описанием проекта и документацие README.md

Фаил requirements.txt с настройками среды разработки

фаил main.py с основной логикой проекта

Описание
  • Файл содержит основную логику работы бота ВКонтакте, включая обработку сообщений пользователей, взаимодействие с базой данных и управление состояниями пользователя.
Логика работы
  • Файл выполняет следующие действия:
    • Инициализирует подключение к API ВКонтакте с помощью модуля vk_api.
    • Создает объекты для работы с long polling (VkLongPoll) и методами API (vk1).
    • Запускает бесконечный цикл прослушивания событий из чата.
    • Обрабатывает входящие сообщения от пользователей, анализируя их текст и состояние пользователя.
    • Реализует различные состояния пользователя (например, ожидание ввода города, возраста, пола или токена).
    • Сохраняет данные пользователя в базу данных через функцию check_and_save_user.
    • Предоставляет интерактивное меню с помощью клавиатур (keyboard_starts, kb_yes, kb_yes_or_not, keyboard_sex).
    • Выполняет поиск подходящих пользователей через функцию search_users и отправляет их анкеты с фотографиями.
    • Обрабатывает действия пользователя, такие как добавление в избранное, блэклист или пропуск профиля.
    • Отображает содерж

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages