- Python
- Aiogram
- PostgreSQL
- SQLAlchemy
- Alembic
- Redis (for fsm storage)
- Скачать репозиторий
- Создать виртуальное окружение и активировать его
python3 -m venv .venv
source .venv/bin/activate
- Для poentry
poentry install
- Установить зависимости
pip install -r requirements.txt
-
Запустить приложение командой:
python3 main.py
-
В корневой директории создать файл .env и добавить переменные окружения, как в примере .env.exemple. Токен бота можно взять у https://t.me/BotFather.
-
Для запуска приложения в docker контайнере выполните команду:
docker compose up -d
Целью данного проекта является создание интерактивного сервиса для создания заметок и управления ими через Telegram Bot. Пользователи смогут создавать, редактировать и удалять заметки, а также просматривать их.
Описание работы приложения:
- При запуске бота, появляется приветствие с кратким описание работы
- Внизу находятся кнопки управления "Создать заметку", "Посмотреть все заметки", "Удалить заметку"
- В левом нижнем углу находится интерктивное меню с командами /help, /settings, /contact
- Создание заметки: Пользователь может создать новую заметку, отправив сообщение боту.
- Редактирование заметки: Пользователь может изменить содержание заметки, отправив обновленную версию сообщения боту.
- Удаление заметки: Пользователь может удалить ненужную заметку, отправив команду боту.
- Просмотр календаря: Пользователь может увидеть все свои заметки, отсортированные по дате создания.
Проект будет состоять из следующих компонентов:
- main.py: Основной модуль, который запускает бота и обрабатывает входящие сообщения.
- config_data Пакет для хранения файлов с конфигурационными данными. config.py Файл с конфигурационными данными для бота, базы данных, сторонних сервисов и т.п.
- database Пакет для работы с базой данныхю. database.py - файл с клаасом для создания и взаимодействия с базой данных
- filters Пакет с кастомными фильтрами
- handlers Пакет, в котором хранятся обработчики апдейтов. admin_handlers.py Модуль с хэндлерами, срабатывающими на действия пользователя, если он является администратором бота. user_handlers.py Модуль с хэндлерами для пользователей
- keyboards Пакет с модулями, в которых хранятся и/или динамически формируются клавиатуры, отправляемые пользователям ботом, в процессе взаимодействия. keyboard_utils.py Вспомогательные функции, помогающие формировать клавиатуры. set_menu.py Модуль для установки команд в нативную кнопку "Menu" бота.
- lexicon Пакет для хранения текстов - ответов бота. lexicon_ru.py Модуль со словарем соответствий данных текстам на русском языке.
- states Пакет с модулями, в которых описаны классы, отражающими возможные состояния пользователей, в процессе взаимодействия с ботом, для реализации машины состояний. states.py модуль с классами, отражающими возможные состояния пользователя, в процессе взаимодействия с ботом.
- tests Пакет с тестами для тестирования работы бота.
docker compose up -d
or only db
docker compose up -d db
Инициализация alembic
alembic init --template async bot/db/migrations
Миграции
alembic revision --autogenerate -m "init"
Применить миграции
alembic upgrade head
run container db postgres without docker compose
docker run --rm -e POSTGRES_DB=bot_db -e POSTGRES_PASSWORD=botalov -e POSTGRES_USER=botalov -p 5433:5432 --name postgres_bot -d postgres