Skip to content

BotalovSerg/telegram-bot-notes

Repository files navigation

"Интерактивный сервис заметки"

Cтек технологий

  • 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

About

Telegram bot

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published