Skip to content

asasxa/penguins

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages