Skip to content

UrFU-Python-GitHub-Classroom/python-telegram-bot-template

Repository files navigation

python-telegram-bot-template

Подготовка окружения для разработки

  • либо использовать make init_dev
  • либо открыть Makefile и подсмотреть комады там

Подготовка переменных окружения

  • скопировать файл .env.example в .env
  • заполнить значения переменных
  • .env содержит секреты, которые не должна лежать в репозитории, поэтому он добавлен в .gitignore
  • .env подтягивается как при запуске приложения без контейнера, так и добавляется в конфигурации docker-compose.yml, где пробрасывается внутрь контейнера

Отладка кода без контейнера (на примере VSCode)

  • открыть main.py
  • расставить точки останова (опционально)
  • слева выбрать меню отладки (Ctrl+Shift+D)
  • рядом с зеленой стрелочкой выбрать конфигурацию Python Debugger: Current File
  • запустить отладку

Отладка кода в контейнере (необязательно)

  • изменить конфигурацию на Docker: Python - General
  • запустить отладку

Отладка кода в контейнере с помощью docker-compose (необязательно 2)

  • запустить контейнер для отладки с помощью команды make debug
  • изменить конфигурацию на Python Debugger: Remote Attach
  • подключиться отладчиком
  • после завершения отладки выполнить команду make stopdebug

Запуск приложения (на сервере, например)

  • создать директорию data и дать права 777 (или создать docker volume)
  • выполнить команду docker compose up -d --build
  • или через make (подсмотреть в Makefile)
  • посмотреть логи контейнера можно командой docker compose logs -f
  • чтобы остановить логи нажать Ctrl+C

Остановка и очистка

  • остановка командой docker compose down
  • после нескольких тестовых сборок можно почистить образы/контейнеры которые накопились: docker system prune
  • для очистки volume (данных приложения) можно использовать docker system prune --volumes (использовать с осторожностью!)

Автоматическая сборка контейнера

  • с использоанием Github Actions можно автоматически собирать контейнеры
  • описание сборки в файле docker-image.yml
  • но будут нужны дополнительные настройки для доступа к нему (сделать публичным, например)
  • тогда после каждого коммита (или публикации тэга и тд) будет подготавливаться новая версия образа приложения
  • образ можно заранее прописать в файле docker-compose.yml на сервере
  • тогда для обновления приложение достаточно будет запустить команду docker compose pull && docker compose up -d
  • сборка на сервере уже не потребуется

Документация

Документация по VSCode (Python, Docker)

Возможные темы для минимального обязательного выполнения

  • "шаблон" без всякого лишнего, который можно использовать: clean_bot_template.py
  • предлагаю выбрать любое открытое API из списка public-apis
  • добавить обработку ботом сообщения от пользователя и выдачи результата
  • например (выбрать одно, лучше придумать своё):
    • пользователь вводит команду, получает картинку кота
    • пользователь проверяет курс валют
    • пользователь запрашивает погоду по местоположению
    • пользователь отправляет английский текст и получает перевод на русский
    • пользователь вычисляет метоположение по IP
    • пользователь отправляет ссылку, получает сокращенный вариант
    • и тд
  • если не хочется использовать апи, реализуйте локальные функции: заметки, список покупок, калькулятор и тд

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages