- Общее описание проекта
- Папка DB
- Папка func
- Папка generating_settings
- Папка keyboards_inline
- Дополнительные файлы
- Папка pictures
Проект представляет собой бота для ВКонтакте, который помогает пользователям искать пару, сохранять избранные анкеты и добавлять пользователей в черный список. Бот работает с базой данных PostgreSQL для хранения информации о пользователях и их предпочтениях.
- Создать базу данных под вашим пользователем postgres;
- Зайти в папку generating_settings;
- Запустить фаил generate_settings.py;
- Ввести данные настроек в появившееся окно:
- postgresql_url - URL PostgreSQL (формат: 'postgresql://имя_пользователя:пароль@localhost/наименование_базы_данных')
- vk_token - VK Token созданной группы вконтакте
- После можно запускать самого бота
Подробнее о настройках можно узнать в разделе generating_settings.
Таблица 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 хранит информацию о пользователях, которых текущий пользователь добавил в избранное.
| Поле | Тип данных | Описание |
|---|---|---|
id |
Integer |
Уникальный идентификатор записи (первичный ключ). |
user_id |
Integer |
Идентификатор пользователя, который добавил фаворита (внешний ключ, ссылается на user.vk_id_user). |
vk_id_favorite |
Integer |
Идентификатор избранного пользователя ВКонтакте. |
name |
String |
Имя избранного пользователя. |
url |
String |
Ссылка на профиль избранного пользователя. |
- user: Связь с моделью
User, определяет пользователя, который создал запись в избранном.
Таблица blacklist хранит информацию о пользователях, которых текущий пользователь заблокировал.
| Поле | Тип данных | Описание |
|---|---|---|
id |
Integer |
Уникальный идентификатор записи (первичный ключ). |
user_id |
Integer |
Идентификатор пользователя, который заблокировал (внешний ключ, ссылается на user.vk_id_user). |
vk_id_blacklist |
Integer |
Идентификатор заблокированного пользователя ВКонтакте. |
name |
String |
Имя заблокированного пользователя. |
url |
String |
Ссылка на профиль заблокированного пользователя. |
- user: Связь с моделью
User, определяет пользователя, который создал запись в черном списке.
-
Первичные ключи:
- В таблице
userпервичным ключом являетсяvk_id_user. - В таблицах
favoriteиblacklistпервичным ключом является полеid.
- В таблице
-
Внешние ключи:
- В таблицах
favoriteиblacklistполеuser_idявляется внешним ключом, которое ссылается на полеvk_id_userтаблицыuser.
- В таблицах
-
Дополнительные поля в
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-пакет.
- Выводит сообщение об успешном создании файлов или ошибку, если что-то пошло не так.
- Вызывает внутреннюю функцию
- Проверяет existence директории
- Модуль
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и отправляет их анкеты с фотографиями. - Обрабатывает действия пользователя, такие как добавление в избранное, блэклист или пропуск профиля.
- Отображает содерж
- Инициализирует подключение к API ВКонтакте с помощью модуля
