https://github.com/expressapp/asyncbox-framework
Framework for Express bots
https://github.com/expressapp/asyncbox-framework
Last synced: 3 months ago
JSON representation
Framework for Express bots
- Host: GitHub
- URL: https://github.com/expressapp/asyncbox-framework
- Owner: ExpressApp
- Created: 2021-10-08T09:27:00.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2021-11-08T07:51:56.000Z (about 4 years ago)
- Last Synced: 2023-02-28T10:56:21.339Z (almost 3 years ago)
- Language: Python
- Size: 192 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Asyncbox Framework
[](https://codecov.io/gh/ExpressApp/asyncbox-framework)
## Установка
1. Установка
a) из исходников
Склонировать репозиторий с исходниками
```bash
git clone https://github.com/ExpressApp/asyncbox-framework.git
```
Собрать пакет и установить его
```bash
cd asyncbox-framework
poetry build
pip install --user dist/asyncbox-0.4.0-py3-none-any.whl
```
b) из pypi
```bash
pip install asyncbox
```
2. Создание проекта из шаблона
```bash
asyncbox -v -t http://path/to/template -p plugin1 -p plugin2 bot_project_name
cd bot_project_name
```
3. Установка зависимостей
```bash
poetry install
```
Важно: библиотека asyncbox в созданном проекте будет установлена той версии, которя
указана в шаблоне файла pyproject.toml. При необходимости вы можете указать нужную
версию или ветку репозитория следующим образом:
```
asyncbox = { git = "https://github.com/ExpressApp/asyncbox-framework.git", branch = "master"}
```
4. Обновление
Для обновления библиотеки в проекте:
```bash
poetry update
```
Для обновления шаблона для новых проектов - повторить операции из пункта 1.
5. Настройки бота
Настройки бота находятся в файле `app/settings.py` и представляют собой класс
унаследованный от `pydantic.BaseSettings`. При необходимости можно изменить место
расположения настроек с помощью переменной окружения `APP_SETTINGS` задав её
значением строку вида `app.settings:AppSettings`, где до двоеточия указывается
модуль, а после двоеточия объект внутри модуля.
Функциональность бота можно расширять при помощи плагинов. Список включеных плагинов
задаётся настройкой `PLUGINS`, которая является списком строк в описанном выше
формате. Имя класса `Plugin` можно не указывать.
Плагины вкючённые в библиотеку:
| Путь | Описание
-----------------------------------|:-----------------------------------
| asyncbox.plugins.logger | расширенное логирование (Loguru)
| asyncbox.plugins.sqlalchemy | БД (PostgreSQL)
| asyncbox.plugins.redis | Redis
| asyncbox.plugins.sentry | мониторинг ошибок (Sentry)
| asyncbox.plugins.prometheus | сбор метрик (Prometheus)
Каждый из плагинов может требовать наличия определённых настроек. В этом случае
необходимо добавить соответствующую настройку в класс AppSettings
Список коллекторов хэндлеров комманд задаётся в настройке `COLLECTORS` в таком же
формате как и список плагинов.
Настройка `DEFAULT_ROUTER` содержит путь к экземпляру `fatsapi.APIRouter`, который
обрабатывает API запросы от BotX и по умолчанию имеет значение
`"asyncbox.endpoints:router"`. Для внесения изменений в логику обработки таких
запросов следует создать модуль, в котором будет определён экземпляр
`fatsapi.APIRouter`, обрабатывающий запросы на маршрутах `/command` и `/status`
и указать путь к этому экземпляру в `DEFAULT_ROUTER`.