{"id":25715271,"url":"https://github.com/devvsima/dating-bot","last_synced_at":"2025-05-05T16:46:16.619Z","repository":{"id":190448261,"uuid":"670107674","full_name":"devvsima/dating-bot","owner":"devvsima","description":"Telegram dating bot Michalangelo(Michi), an analog of Daivinchik(Leo). The bot is intended for making new acquaintances, including friendly ones. ","archived":false,"fork":false,"pushed_at":"2025-04-16T09:28:26.000Z","size":1045,"stargazers_count":18,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-16T12:30:45.885Z","etag":null,"topics":["aiogram","aiogram3","dating","dating-app","dating-bot","i18n","leo","leonardo","matching","peewee","postgres","postgresql","redis","sqlalchemy","telegram","telegram-bot","telegram-dating-bot","tgbot"],"latest_commit_sha":null,"homepage":"https://t.me/michalangelo_bot?start=7ezJ6d","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devvsima.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-07-24T10:05:40.000Z","updated_at":"2025-04-16T09:28:30.000Z","dependencies_parsed_at":"2023-10-14T19:46:27.080Z","dependency_job_id":"667b15a7-b401-46ea-9392-2fdd2333841b","html_url":"https://github.com/devvsima/dating-bot","commit_stats":null,"previous_names":["sima3443/michelangelo-bot","devsimaa/michelangelo-bot","devvsima/michelangelo-bot"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devvsima%2Fdating-bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devvsima%2Fdating-bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devvsima%2Fdating-bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devvsima%2Fdating-bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devvsima","download_url":"https://codeload.github.com/devvsima/dating-bot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252535757,"owners_count":21764008,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aiogram","aiogram3","dating","dating-app","dating-bot","i18n","leo","leonardo","matching","peewee","postgres","postgresql","redis","sqlalchemy","telegram","telegram-bot","telegram-dating-bot","tgbot"],"created_at":"2025-02-25T13:52:29.252Z","updated_at":"2025-05-05T16:46:16.613Z","avatar_url":"https://github.com/devvsima.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# \u003ccenter\u003eTelegram dating bot [Michelangelo](https://t.me/michalangelo_bot?start=Oj0wd) 💞\u003c/center\u003e\n\n![Python](https://img.shields.io/badge/python-3.13-blue)\n![License](https://img.shields.io/badge/license-CC%20BY--NC%204.0-green)\n![Contributions](https://img.shields.io/badge/contributions-welcome-orange)\n![Aiogram](https://img.shields.io/badge/aiogram-3.x-blueviolet)\n![PostgreSQL](https://img.shields.io/badge/database-PostgreSQL-lightblue)\n![Redis](https://img.shields.io/badge/storage-Redis-red)\n\nAs support, you can put ⭐️ on the repository =)\n- `Aiogram 3`\n- `i18n`\n- `SqlAlchemy`\n- `Matplotlib`, `Geopy`\n- `Redis`, `PostgreSQL \\ Sqlite`\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://i.ibb.co/PGwpsJGp/Screenshot-62.png\" alt=\"diagram\" width=\"1100\"\u003e\n\u003c/p\u003e\n\n\n---\n\n## Navigation\n\n- [Telegram dating bot Michelangelo 💞](#telegram-dating-bot-michelangelo-)\n  - [Navigation](#navigation)\n  - [Features](#features)\n  - [Install](#install)\n    - [Windows](#windows)\n    - [Linux](#linux)\n    - [UV](#uv)\n  - [Settings](#settings)\n    - [Bot](#bot)\n    - [Database](#database)\n      - [Migrations](#migrations)\n    - [Redis](#redis)\n    - [Localization](#localization)\n  - [Startup](#startup)\n    - [Python](#python)\n    - [UV run](#uv-run)\n  - [Contributing](#contributing)\n  - [License](#license)\n\n---\n\n## Features\n\n- 💬 **Matchmaking**: Helps users find each other based on shared interests.\n- 🌍 **Geolocation**: Uses `Geopy` to determine user locations.\n- 📊 **Analytics**: Generates visual graphs with `Matplotlib`.\n- 🗂️ **Multilingual Support**: Supports multiple languages via `i18n`.\n- ⚡ **High Performance**: Utilizes `Redis` for FSM storage and `PostgreSQL` for database operations.\n- 🔒 **Secure**: Implements secure data handling and user privacy.\n\n---\n## Install\nFirst you need to bend the repository to the correct derictory.\n\n```bash\ngit clone https://github.com/devvsima/dating-bot.git\ncd dating-bot\n```\n### Windows\n\n```bash\npython3 -m venv .venv\n\nsource .venv/bin/activate\n\npip3 install -r requirements.txt\n```\n### Linux\n\n```bash\npython -m venv .venv\n\n.venv\\Scripts\\activate\n\npip install -r requirements.txt\n\n\u003e 💡 You may have to install apt install python3.10-venv or something like that.\n```\n### UV\n\n```bash\nuv sync\n```\n\n---\n## Settings\n\nFirst, copy the `.env.dist` file and rename it to `.env`:\nNow you need to customize the `.env` file\n### Bot\n\n| \u003ccenter\u003eName\u003c/center\u003e | \u003ccenter\u003eDescription\u003c/center\u003e                                                  | \u003ccenter\u003eExample\u003c/center\u003e |\n| --------------------- | ----------------------------------------------------------------------------- | ------------------------ |\n| TOKEN                 | Bot Token from [@BotFather](https://t.me/BotFather)                           | 1234567:ASDSFDkjdjdsedmD |\n| ADMINS                | List of administrator id's                                                    | 2345678,12345677         |\n| MODERATOR_GROUP_ID    | (Optional) ID of the administrator group, where user complaints will be sent. | -100123456789            |\n| SKIP_UPDATES          | Option whether the bot will skip updates while not active                     | True, False              |\n\n### Database\nIf the settings for the database are not filled out, asynchronous Sqlite will be used.\nYou can specify a link to the database connection in the DB_URL field.\n\n| \u003ccenter\u003eName\u003c/center\u003e | \u003ccenter\u003eDescription\u003c/center\u003e                   | \u003ccenter\u003eExample\u003c/center\u003e                               |\n| --------------------- | ---------------------------------------------- | ------------------------------------------------------ |\n| DB_NAME               | Database name                                  | 1234567:ASDSFDkjdjdsedmD                               |\n| DB_HOST               | Database host                                  | 2345678,12345677                                       |\n| DB_PORT               | Database port                                  | -100123456789                                          |\n| DB_USER               | Database owner                                 | True, False                                            |\n| DB_PASS               | Database password                              | postgresql                                             |\n| DB_URL                | (Optional)Full link to connect to the database | postgresql+asyncpg://user:password@localhost:port/name |\n\n#### Migrations\n\nThis project uses **Alembic** for database migrations.\n\n- **Create a new migration:**\n\n    ```sh\n    alembic revision --autogenerate -m \"Migration description\"\n    ```\n\n- **Apply migrations:**\n\n    ```sh\n    alembic upgrade head  # Apply all new migrations\n    alembic upgrade \"migration_name\"  # Apply a specific migration\n    ```\n\n- **Rollback migrations:**\n\n    ```sh\n    alembic downgrade base  # Reset database to the initial state\n    alembic downgrade \"migration_name\"  # Rollback to a specific migration\n    ```\n\n\nEnsure `alembic.ini` has the correct database URL before running migrations.\n\n\n### Redis\nThe radishes will be used as FSM storage. If redis is not connected the standard aiogram storage will be used.\nYou can specify a link to the Redis connection in the `RD_URL` field at once.\n\n| \u003ccenter\u003eName\u003c/center\u003e | \u003ccenter\u003eDescription\u003c/center\u003e                   | \u003ccenter\u003eExample\u003c/center\u003e |\n| --------------------- | ---------------------------------------------- | ------------------------ |\n| REDIS_HOST            | Database host                                  | localhost                |\n| REDIS_PORT            | Database port                                  | 6379                     |\n| REDIS_DB              | Database name                                  | 5                        |\n| RD_URL                | (Optional)Full link to connect to the database | redis://localhost:6379/5 |\n\n### Localization\nThe bot has localization for 6 languages: en, ru, uk, fr, pl, es\n\n- Collecting all the texts from the project\n```bash\npybabel extract --input-dirs=. -o data/locales/bot.pot --project=bot\n```\n\n- Create files with translations into different languages\n```bash\npybabel init -i data/locales/bot.pot -d data/locales -D bot -l en\npybabel init -i data/locales/bot.pot -d data/locales -D bot -l ru\npybabel init -i data/locales/bot.pot -d data/locales -D bot -l uk\npybabel init -i data/locales/bot.pot -d data/locales -D bot -l fr\npybabel init -i data/locales/bot.pot -d data/locales -D bot -l pl\npybabel init -i data/locales/bot.pot -d data/locales -D bot -l es\n```\n\n\n- Once all the texts are translated, you need to compile all the translations\n```bash\npybabel compile -d data/locales -D bot --statistics\n```\n\n```bash\npybabel update -i data/locales/bot.pot -d data/locales -D bot\n```\n\n---\n\n## Startup\n\nFirst you need to [install dependencies](#Install) and do a [database migration](#Migrations) if you haven't already done one.\n\n### Python\n```bash\npython main.py\n```\n\n### UV run\n```bash\nuv run main.py\n```\n---\n\n## Contributing\n\nWe welcome contributions from the community! To contribute:\n\n1. Fork the repository.\n2. Create a new branch: `git checkout -b feature/your-feature-name`.\n3. Make your changes and commit them: `git commit -m \"Add your feature\"`.\n4. Push your changes: `git push origin feature/your-feature-name`.\n5. Create a Pull Request.\n\nPlease ensure your code adheres to the project's style and passes all tests.\n\n---\n\n## License\n\nThis project is licensed under the **Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)** license. See the [LICENSE](./LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevvsima%2Fdating-bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevvsima%2Fdating-bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevvsima%2Fdating-bot/lists"}