Шаблон для Телеграм ботов
Шаблон построен на базе библиотеки python-telegram-bot и фреймворка falcon для приема вебхуков. Схема работы по-умолчанию – установка нового вебхука через API телеграм и прием данных через хуки. Не лонг-поллинг!
Шаблон включает в себя:
- Примеры базовых команд для бота
- Сохранение пользователей и их команд в MongoDB, а так же базовые классы моделей MongoEngine ORM
- Очереди в Celery с базовыми классами для быстрой разработки воркеров
- Поддержку локального запуска в виде Docker контейнеров через docker-compose
- Возможность разворачивания в Heroku в виде Docker образов через heroku.yml
- Отправку статистики в Sentry из коробки
- Отправку продуктовых метрик в Amplitude
- Преднастроенный набор линтеров flake-8
- Базовые автотесты через pytest
Подготовка к использованию
- Исправить в файлах
docker-compose.yaml
иinfra/mongodb/mongo-init.js
тестовые логины и пароли для доступа к Mongodb - Скопировать файл с переменными окружения
.env.default
в.env
и указать в нем актуальные значения для необходимых сервисов - Для включения деплоя на Heroku в файле
.circleci/config.yml
раскомментировать соответствующий блок в разделеworkflows
Развертывание через CircleCI
Бойлерплейт идет вместе с шаблоном для непрерывной интеграции через CircleCI. Она включает в себя сборку приложения при любом обновлении любой ветки в следующем формате:
- Сборку Docker контейнеров
- Запуск автотестов
- Запуск линтеров
- Отправку результатов автотестов в Codecov
- Публикацию приложения в Heroku, если обновилась ветка
master
Шпаргалка по командам
- Запуск автотестов локально –
pytest
- Запуск линтеров –
flake8
- Запуск автоформатирования кода –
isort -rc .