/telegram-bot-boilerplate

Telegram bot boilerplate based on Falcon framework and python-telegram-bot library

Primary LanguagePython

CircleCI codecov

Шаблон для Телеграм ботов

Шаблон построен на базе библиотеки python-telegram-bot и фреймворка falcon для приема вебхуков. Схема работы по-умолчанию – установка нового вебхука через API телеграм и прием данных через хуки. Не лонг-поллинг!

Шаблон включает в себя:

  1. Примеры базовых команд для бота
  2. Сохранение пользователей и их команд в MongoDB, а так же базовые классы моделей MongoEngine ORM
  3. Очереди в Celery с базовыми классами для быстрой разработки воркеров
  4. Поддержку локального запуска в виде Docker контейнеров через docker-compose
  5. Возможность разворачивания в Heroku в виде Docker образов через heroku.yml
  6. Отправку статистики в Sentry из коробки
  7. Отправку продуктовых метрик в Amplitude
  8. Преднастроенный набор линтеров flake-8
  9. Базовые автотесты через pytest

Подготовка к использованию

  1. Исправить в файлах docker-compose.yaml и infra/mongodb/mongo-init.js тестовые логины и пароли для доступа к Mongodb
  2. Скопировать файл с переменными окружения .env.default в .env и указать в нем актуальные значения для необходимых сервисов
  3. Для включения деплоя на Heroku в файле .circleci/config.yml раскомментировать соответствующий блок в разделе workflows

Развертывание через CircleCI

Бойлерплейт идет вместе с шаблоном для непрерывной интеграции через CircleCI. Она включает в себя сборку приложения при любом обновлении любой ветки в следующем формате:

  1. Сборку Docker контейнеров
  2. Запуск автотестов
  3. Запуск линтеров
  4. Отправку результатов автотестов в Codecov
  5. Публикацию приложения в Heroku, если обновилась ветка master

Шпаргалка по командам

  1. Запуск автотестов локально – pytest
  2. Запуск линтеров – flake8
  3. Запуск автоформатирования кода – isort -rc .