Telegram dating bot Michelangelo 💞
Aiogram 3
i18n
SqlAlchemy
Matplotlib
,Geopy
Redis
,PostgreSQL \ Sqlite
- 💬 Matchmaking: Helps users find each other based on shared interests.
- 🌍 Geolocation: Uses
Geopy
to determine user locations. - 📊 Analytics: Generates visual graphs with
Matplotlib
. - 🗂️ Multilingual Support: Supports multiple languages via
i18n
. - ⚡ High Performance: Utilizes
Redis
for FSM storage andPostgreSQL
for 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-bot
python3 -m venv .venv
source .venv/bin/activate
pip3 install -r requirements.txt
python -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 sync
First, 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.py
uv run main.py
We 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.