Michelangelo
    
    Telegram dating bot π
Hi, I made my own telegram dating bot, I hope it will be useful for someone. If you want to support me, you can put a star on the repository ; )
- π Languages: Localization into different languages: English, Russian, Ukrainian, Spanish, French, Polish
- π¬ Matchmaking: Helps users find each other based on shared interests.
- π Secure: Implements secure data handling and user privacy.
- π 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.
First you need to bend the repository to the correct derictory.
git clone https://github.com/devvsima/dating-bot.git
cd dating-botFirst, copy the .env.dist file and rename it to .env:
Now you need to customize the .env file
| Name | Description | Example | 
|---|---|---|
| TELEGRAM_BOT_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 | 
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.
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 | 
The bot has localization for 6 languages: en, ru, uk, fr, pl, es
- Collecting all the texts from the project
pybabel extract --input-dirs=. -o data/locales/bot.pot --project=bot- Create files with translations into different languages
pybabel init -i data/locales/bot.pot -d data/locales -D bot -l en
pybabel init -i data/locales/bot.pot -d data/locales -D bot -l ru
pybabel init -i data/locales/bot.pot -d data/locales -D bot -l uk
pybabel init -i data/locales/bot.pot -d data/locales -D bot -l fr
pybabel init -i data/locales/bot.pot -d data/locales -D bot -l pl
pybabel init -i data/locales/bot.pot -d data/locales -D bot -l es- Once all the texts are translated, you need to compile all the translations
pybabel compile -d data/locales -D bot --statisticspybabel update -i data/locales/bot.pot -d data/locales -D botFirst you need to install dependencies and do a database migration if you haven't already done one.
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
python main.pypython3 -m venv .venv
source .venv/bin/activate
pip3 install -r requirements.txt
python main.pyπ‘ You may have to install apt install python3.10-venv or something like that.
uv sync
uv run main.pyThis project is licensed under the Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) license. See the LICENSE file for details.

