Framework for building telegram bots
Project description
Django Telegram Bot Framework
Фреймворк для создания чат-ботов Telegram на базе Django. Предоставляет свою стейт-машину, вебхук и редактируемые текстовки в БД.
Как развернуть local-окружение
Для запуска ПО вам понадобятся консольный Git, Docker и Docker Compose. Инструкции по их установке ищите на официальных сайтах:
Склонируйте репозиторий.
В репозитории используются хуки pre-commit, чтобы автоматически запускать линтеры и автотесты. Перед началом разработки установите pre-commit package manager.
В корне репозитория запустите команду для настройки хуков:
$ pre-commit install
В последующем при коммите автоматически будут запускаться линтеры и автотесты. Есть линтеры будет недовольны, или автотесты сломаются, то коммит прервётся с ошибкой.
Сначала скачайте и соберите докер-образы с помощью Docker Сompose:
$ docker compose pull --ignore-buildable
$ docker compose build
Как вести разработку
Как обновить local-окружение
Чтобы обновить local-окружение до последней версии подтяните код из центрального окружения и пересоберите докер-образы:
$ git pull
$ docker compose build
Как установить python-пакет в образ
В качестве менеджера пакетов для образа используется Poetry.
Конфигурационные файлы Poetry pyproject.toml
и poetry.lock
проброшены в контейнер в виде volume, поэтому изменения зависимостей внутри контейнера попадают и наружу в git-репозиторий.
Вот пример как добавить в зависимости библиотеку asks. Запустите все контейнеры. Подключитесь к уже работающему контейнеру django_tg_bot_framework
и внутри запустите команду poetry add asks
:
$ docker compose up -d
$ docker compose exec django_tg_bot_framework bash
container:$ poetry add asks
Конфигурационные файлы pyproject.toml
и poetry.lock
обновятся не только внутри контейнера, но и в репозитории благодаря настроенным docker volumes. Осталось только закоммитить изменения.
Чтобы все новые контейнеры также получали свежий набор зависимостей не забудьте обновить докер-образ:
$ docker compose build django_tg_bot_framework
Аналогичным образом можно удалять python-пакеты.
Как запустить линтеры Python
Линтеры запускаются в отдельном docker-контейнере, а код подключается к нему с помощью volume. Например, чтобы проверить линтером код в каталогах django_tg_bot_framework
и tests
запустите команду:
$ docker compose run --rm py-linters flake8 /django_tg_bot_framework/ /tests/
[+] Building 0.0s (0/0)
[+] Building 0.0s (0/0)
/django_tg_bot_framework/models.py:118:1: W391 blank line at end of file
1
Цифра в конце 1
-- это количество найденных линтером ошибок форматирования кода.
Тот же образ с линтером можно использовать, чтобы подсветить ошибки форматирования прямо внутри IDE. Вот пример настройки Sublime Text с предустановленными плагинами SublimeLinter и SublimeLinter-flake8:
// project settings file
{
"settings": {
// specify folder where docker-compose.yaml file placed to be able to launch `docker compose`
"SublimeLinter.linters.flake8.working_dir": "/path/to/repo/",
"SublimeLinter.linters.flake8.executable": ["docker", "compose", "run", "--rm", "py-linters", "flake8"],
},
}
Как запустить тесты
В проекте используются автотесты pytest. Запустить их можно так:
$ docker compose run --rm django_tg_bot_framework pytest
=========================== test session starts ===========================
platform linux -- Python 3.11.4, pytest-7.3.2, pluggy-1.2.0
rootdir: /opt/app/src
plugins: django-4.5.2, httpx-0.22.0, anyio-3.7.0
collected 23 items
test_decorators.py ...... [ 26%]
test_route_validation.py ........ [ 60%]
test_router.py ... [ 73%]
test_state_machine.py ..... [ 95%]
test_states.py . [100%]
============================================================= 6 passed in 0.22s==============================================
Если вы чините поломанный тест, часто его запускаете и не хотите ждать когда отработают остальные, то можно запускать их по-отдельности. При этом полезно включать опцию -s
, чтобы pytest не перехватывал вывод в консоль и выводил все сообщения. Пример для теста test_redirect_tg_commands
из файла tests/test_decorators.py.py
:
$ docker compose run --rm django_tg_bot_framework pytest -s test_decorators.py::test_redirect_tg_commands
Подробнее про Pytest usage.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file django_tg_bot_framework-1.0.0.tar.gz
.
File metadata
- Download URL: django_tg_bot_framework-1.0.0.tar.gz
- Upload date:
- Size: 9.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.5.1 CPython/3.11.4 Windows/10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0760fcc4f70af798aaa41fb02e8b7fbb2103434c92e0c4f87e711148dfde09bb |
|
MD5 | 2e6c590e585a98d7f7a18eb34b8552a5 |
|
BLAKE2b-256 | 01c6951f3868521756da069c2b50bab450dde209fe97ab3b232a64291b721679 |
File details
Details for the file django_tg_bot_framework-1.0.0-py3-none-any.whl
.
File metadata
- Download URL: django_tg_bot_framework-1.0.0-py3-none-any.whl
- Upload date:
- Size: 12.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.5.1 CPython/3.11.4 Windows/10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 05669508fead65f70d3c7677df0aa3152b206453ba9e70c1fdd5126a827c250a |
|
MD5 | bfca7062f422006014b55dc9359333f5 |
|
BLAKE2b-256 | 7235df8cc26d886c8f48b4df1a8d0a592097d78e846c0ea8657594aa303ac33d |