Сделал Ananev Nikita
Решение первой тестовой задачи от BWG, согласно техническому заданию
Воспользуйтесь dotenv (для Docker
.env.docker
), либо средства Докер для указания переменных
- LOG_LEVEL — уровень логирования, по умолчанию info, (возможные варианты: debug, info, warning, error , critical);
- TELEGRAM_API_TOKEN — токен для работы с Telegram;
- TELEGRAM_CHAT_ID — идентификатор "общего" чата.
Скопируйте .env.example
в .env.docker
и заполните его.
docker compose up -d # Equal "make up"
Архитектура придерживается методологии чистой архитектуры. Внешние взаимодействия описаны в адаптерах. Бизнес логика описана в доменной части, а именно в главном и единственном use-case.
- aiogram — асинхронное взаимодействие с Telegram API
- environs — адаптер переменного окружения
- unittest — Unit-тестирование
- mypy — проверка типов
- black — форматер кода
- pylint — линтинг кода
- isort — сортировщик импортов
aiogram==3.1.1
├── aiofiles [required: ~=23.1.0, installed: 23.1.0]
├── aiohttp [required: ~=3.8.5, installed: 3.8.6]
│ ├── aiosignal [required: >=1.1.2, installed: 1.3.1]
│ │ └── frozenlist [required: >=1.1.0, installed: 1.4.0]
│ ├── async-timeout [required: >=4.0.0a3,<5.0, installed: 4.0.3]
│ ├── attrs [required: >=17.3.0, installed: 23.1.0]
│ ├── charset-normalizer [required: >=2.0,<4.0, installed: 3.3.0]
│ ├── frozenlist [required: >=1.1.1, installed: 1.4.0]
│ ├── multidict [required: >=4.5,<7.0, installed: 6.0.4]
│ └── yarl [required: >=1.0,<2.0, installed: 1.9.2]
│ ├── idna [required: >=2.0, installed: 3.4]
│ └── multidict [required: >=4.0, installed: 6.0.4]
├── certifi [required: >=2023.7.22, installed: 2023.7.22]
├── magic-filter [required: ~=1.0.11, installed: 1.0.12]
├── pydantic [required: >=2.1.1,<2.4, installed: 2.3.0]
│ ├── annotated-types [required: >=0.4.0, installed: 0.6.0]
│ ├── pydantic-core [required: ==2.6.3, installed: 2.6.3]
│ │ └── typing-extensions [required: >=4.6.0,!=4.7.0, installed: 4.7.1]
│ └── typing-extensions [required: >=4.6.1, installed: 4.7.1]
└── typing-extensions [required: ~=4.7.1, installed: 4.7.1]
environs==9.5.0
├── marshmallow [required: >=3.0.0, installed: 3.20.1]
│ └── packaging [required: >=17.0, installed: 23.2]
└── python-dotenv [required: Any, installed: 1.0.0]
Частично реализованно тестирование адаптера библиотеки телеграмм API
Команда: make pretty
>> pylint src
--------------------------------------------------------------------
Your code has been rated at 10.00/10 (previous run: 10.00/10, +0.00)
>> black src
All done! ✨ 🍰 ✨
20 files left unchanged.
>> mypy src
Success: no issues found in 20 source files