{"id":13611112,"url":"https://github.com/aiogram/bot","last_synced_at":"2025-04-07T12:08:26.748Z","repository":{"id":40641849,"uuid":"213241196","full_name":"aiogram/bot","owner":"aiogram","description":"This bot is used as example of usage aiogram framework and as admin-helper in our community chats.","archived":false,"fork":false,"pushed_at":"2023-06-10T00:48:08.000Z","size":419,"stargazers_count":263,"open_issues_count":15,"forks_count":56,"subscribers_count":16,"default_branch":"master","last_synced_at":"2024-10-29T12:37:44.068Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://t.me/aiogram_bot","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aiogram.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}},"created_at":"2019-10-06T20:45:49.000Z","updated_at":"2024-10-28T15:00:24.000Z","dependencies_parsed_at":"2022-07-20T13:48:07.757Z","dependency_job_id":"fd2fa1c4-2973-4a0a-99bb-0242ed6fd03c","html_url":"https://github.com/aiogram/bot","commit_stats":{"total_commits":127,"total_committers":4,"mean_commits":31.75,"dds":0.03149606299212604,"last_synced_commit":"a657822bbe94269a84c96fc7472f8a7b5e6329a5"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aiogram%2Fbot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aiogram%2Fbot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aiogram%2Fbot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aiogram%2Fbot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aiogram","download_url":"https://codeload.github.com/aiogram/bot/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247334062,"owners_count":20922135,"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":[],"created_at":"2024-08-01T19:01:51.911Z","updated_at":"2025-04-07T12:08:26.731Z","avatar_url":"https://github.com/aiogram.png","language":"Python","funding_links":[],"categories":["Python","Bots"],"sub_categories":[],"readme":"# aiogram_bot\n\nThis bot is used as example of usage [aiogram](https://github.com/aiogram/aiogram) framework \nand as admin-helper in our community chats.\n\n## What this bot can do?\n\n- May exist\n- Watch new chat members and filter users (ask question and restrict user)\n- Has simple admin commands for making restrictions\n- Chat admins notifier (command which send message to all admins when someone is report message in chat)\n- Can be translated (en, ru, uk languages)\n\n## Development\n\n### System dependencies\n\n- Python 3.7\n- pipenv\n- Docker\n- docker-compose\n- make\n\n### Setup environment\n\n- Install dependencies in venv: `pipenv install --dev`\n- Copy `.env.dist` to `.env` file and change values in this file\n- Run databases in docker: `make docker-up-db`\n- Apply migrations: `make migrate`\n\n### Project structure\n\n- Application package is in `app`\n- All text translations is placed in `locales`\n- Migrations is placed in `migrations`\n- Entry-point is `app/__main__.py` (Can be executed as `python -m app`)\n...\n\n### Contributing\n\nBefore you will make commit need to run `black`, `isort` and `Flake8` via command `make lint`\nIf you change Database models you will need to generate migrations: `make migration message=\"do something\"`\n\n## Deployment\n\nHere listed only Docker deployment methods. \nThat's mean you can't read here how to deploy the bot with other methods instead of Docker \nbut you can do that manually.\n\nAlso this bot can't be normally started in Docker with polling mode \nbecause in this mode aiohttp server will be not started and healthcheck can not be started.\n\n### docker-compose\n\nPre-requirements:\n- Docker\n- docker-compose\n\nSteps:\n- Prepare `.env` file\n- ... (TODO)\n- `make app-create` - for first deploy, for updating or restarting\n\nStopping:\n- `make docker-stop`\n\nDestroying (with volumes):\n- `make docker-destroy`\n\n### Docker Swarm\n\nPre-requirements:\n- Docker (with activated swarm mode)\n- traefik 2.0 in Docker (with overlay network named `web`)\n\n### Commands:\n\n...\n\n### How this bot is deployed now?\n\nIn Docker Swarm at [Illemius](https://illemius.xyz) with CI/CD\n\nSteps:\n1. GitHub Actions:\n    1. Build docker image\n    1. Publish it to the private **Illemius** Docker registry\n    1. Trigger Portainer webhook in the **Illemius** cluster via cURL\n1. Portainer will trigger updating of the bot service\n1. Docker run new instance of container at specified node\n    1. When container is started by first step it will run migrations\n1. Docker wait until new instance will be healthy\n1. Traefik watch Docker container and update the routes when new one is available\n1. Stop old instance of Bot container\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faiogram%2Fbot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faiogram%2Fbot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faiogram%2Fbot/lists"}