{"id":29925521,"url":"https://github.com/expressapp/asyncbox-framework","last_synced_at":"2025-10-15T16:09:45.067Z","repository":{"id":46195441,"uuid":"414924198","full_name":"ExpressApp/asyncbox-framework","owner":"ExpressApp","description":"Framework for Express bots","archived":false,"fork":false,"pushed_at":"2021-11-08T07:51:56.000Z","size":197,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2023-02-28T10:56:21.339Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ExpressApp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-10-08T09:27:00.000Z","updated_at":"2021-11-08T07:51:58.000Z","dependencies_parsed_at":"2022-09-23T05:51:40.926Z","dependency_job_id":null,"html_url":"https://github.com/ExpressApp/asyncbox-framework","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/ExpressApp/asyncbox-framework","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ExpressApp%2Fasyncbox-framework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ExpressApp%2Fasyncbox-framework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ExpressApp%2Fasyncbox-framework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ExpressApp%2Fasyncbox-framework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ExpressApp","download_url":"https://codeload.github.com/ExpressApp/asyncbox-framework/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ExpressApp%2Fasyncbox-framework/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268380008,"owners_count":24241168,"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","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":"2025-08-02T11:37:19.551Z","updated_at":"2025-10-15T16:09:40.014Z","avatar_url":"https://github.com/ExpressApp.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Asyncbox Framework\n\n[![codecov](https://codecov.io/gh/ExpressApp/asyncbox-framework/branch/main/graph/badge.svg?token=JNXGP4IVZ2)](https://codecov.io/gh/ExpressApp/asyncbox-framework)\n\n\n## Установка \n\n1. Установка\n\n    a) из исходников   \n    Склонировать репозиторий с исходниками\n    ```bash\n    git clone https://github.com/ExpressApp/asyncbox-framework.git\n    ```\n    Собрать пакет и установить его\n    ```bash\n    cd asyncbox-framework\n    poetry build\n    pip install --user dist/asyncbox-0.4.0-py3-none-any.whl\n    ```\n   \n    b) из pypi\n    ```bash\n    pip install asyncbox\n    ```\n\n2.  Создание проекта из шаблона\n   \n    ```bash\n    asyncbox -v -t http://path/to/template -p plugin1 -p plugin2 bot_project_name\n    cd bot_project_name\n    ```\n   \n3. Установка зависимостей\n\n    ```bash\n    poetry install\n    ```\n    Важно: библиотека asyncbox в созданном проекте будет установлена той версии, которя\n    указана в шаблоне файла pyproject.toml. При необходимости вы можете указать нужную\n    версию или ветку репозитория следующим образом: \n    ```\n    asyncbox = { git = \"https://github.com/ExpressApp/asyncbox-framework.git\", branch = \"master\"}\n    ```    \n\n4. Обновление\n   \n    Для обновления библиотеки в проекте:\n    ```bash\n    poetry update\n    ```\n   \n    Для обновления шаблона для новых проектов - повторить операции из пункта 1.\n\n\n5. Настройки бота\n    \n    Настройки бота находятся в файле `app/settings.py` и представляют собой класс\n    унаследованный от `pydantic.BaseSettings`. При необходимости можно изменить место\n    расположения настроек с помощью переменной окружения `APP_SETTINGS` задав её\n    значением строку вида `app.settings:AppSettings`, где до двоеточия указывается\n    модуль, а после двоеточия объект внутри модуля.\n   \n    Функциональность бота можно расширять при помощи плагинов. Список включеных плагинов\n    задаётся настройкой `PLUGINS`, которая является списком строк в описанном выше\n    формате. Имя класса `Plugin` можно не указывать.\n    Плагины вкючённые в библиотеку:\n   \n    | Путь                             | Описание\n    -----------------------------------|:-----------------------------------\n    | asyncbox.plugins.logger          | расширенное логирование (Loguru)\n    | asyncbox.plugins.sqlalchemy      | БД (PostgreSQL)\n    | asyncbox.plugins.redis           | Redis\n    | asyncbox.plugins.sentry          | мониторинг ошибок (Sentry)\n    | asyncbox.plugins.prometheus      | сбор метрик (Prometheus)\n\n    Каждый из плагинов может требовать наличия определённых настроек. В этом случае\n    необходимо добавить соответствующую настройку в класс AppSettings\n   \n    Список коллекторов хэндлеров комманд задаётся в настройке `COLLECTORS` в таком же\n    формате как и список плагинов.\n   \n    Настройка `DEFAULT_ROUTER` содержит путь к экземпляру `fatsapi.APIRouter`, который\n    обрабатывает API запросы от BotX и по умолчанию имеет значение \n    `\"asyncbox.endpoints:router\"`. Для внесения изменений в логику обработки таких \n    запросов следует создать модуль, в котором будет определён экземпляр \n    `fatsapi.APIRouter`, обрабатывающий запросы на маршрутах `/command` и `/status`\n    и указать путь к этому экземпляру в `DEFAULT_ROUTER`.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexpressapp%2Fasyncbox-framework","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexpressapp%2Fasyncbox-framework","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexpressapp%2Fasyncbox-framework/lists"}