Telegram dating bot Michelangelo π
As support, you can put βοΈ on the repository =)
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 |
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 --statistics
pybabel update -i data/locales/bot.pot -d data/locales -D bot
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.