Telegram dating bot Michelangelo 💞
Aiogram 3i18nSqlAlchemyMatplotlib,GeopyRedis,PostgreSQL \ Sqlite
- 💬 Matchmaking: Helps users find each other based on shared interests.
- 🌍 Geolocation: Uses
Geopyto determine user locations. - 📊 Analytics: Generates visual graphs with
Matplotlib. - 🗂️ Multilingual Support: Supports multiple languages via
i18n. - ⚡ High Performance: Utilizes
Redisfor FSM storage andPostgreSQLfor database operations. - 🔒 Secure: Implements secure data handling and user privacy.
First you need to bend the repository to the correct derictory.
git clone https://github.com/devvsima/dating-bot.git
cd dating-botpython3 -m venv .venv
source .venv/bin/activate
pip3 install -r requirements.txtpython -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
> 💡 You may have to install apt install python3.10-venv or something like that.uv syncFirst, copy the .env.dist file and rename it to .env:
Now you need to customize the .env file
| Name | Description | Example |
|---|---|---|
| TOKEN | Bot Token from @BotFather | 1234567:ASDSFDkjdjdsedmD |
| ADMINS | List of administrator id's | 2345678,12345677 |
| MODERATOR_GROUP_ID | (Optional) ID of the administrator group, where user complaints will be sent. | -100123456789 |
| SKIP_UPDATES | Option whether the bot will skip updates while not active | True, False |
If the settings for the database are not filled out, asynchronous Sqlite will be used. You can specify a link to the database connection in the DB_URL field.
| Name | Description | Example |
|---|---|---|
| DB_NAME | Database name | 1234567:ASDSFDkjdjdsedmD |
| DB_HOST | Database host | 2345678,12345677 |
| DB_PORT | Database port | -100123456789 |
| DB_USER | Database owner | True, False |
| DB_PASS | Database password | postgresql |
| DB_URL | (Optional)Full link to connect to the database | postgresql+asyncpg://user:password@localhost:port/name |
The radishes will be used as FSM storage. If redis is not connected the standard aiogram storage will be used.
You can specify a link to the Redis connection in the RD_URL field at once.
| Name | Description | Example |
|---|---|---|
| REDIS_HOST | Database host | localhost |
| REDIS_PORT | Database port | 6379 |
| REDIS_DB | Database name | 5 |
| RD_URL | (Optional)Full link to connect to the database | redis://localhost:6379/5 |
This project uses Alembic for database migrations.
-
Create a new migration:
alembic revision --autogenerate -m "Migration description" -
Apply migrations:
alembic upgrade head # Apply all new migrations alembic upgrade "migration_name" # Apply a specific migration
-
Rollback migrations:
alembic downgrade base # Reset database to the initial state alembic downgrade "migration_name" # Rollback to a specific migration
Ensure alembic.ini has the correct database URL before running migrations.
First you need to install dependencies and do a database migration if you haven't already done one.
python main.pyuv run main.pyWe welcome contributions from the community! To contribute:
- Fork the repository.
- Create a new branch:
git checkout -b feature/your-feature-name. - Make your changes and commit them:
git commit -m "Add your feature". - Push your changes:
git push origin feature/your-feature-name. - Create a Pull Request.
Please ensure your code adheres to the project's style and passes all tests.
This project is licensed under the Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) license. See the LICENSE file for details.
