Skip to content

Телеграм бот для управления задачами и заметками с уведомлениями, авторизацией и хранением в PostgreSQL.

Notifications You must be signed in to change notification settings

Rtuty/telegram-bot-todo-list

Repository files navigation

TodoList Telegram Bot

Телеграм бот для управления задачами и заметками с уведомлениями, авторизацией и хранением в PostgreSQL.

🚀 Особенности

📝 Управление задачами

  • Авторизация по паролю - безопасный доступ к боту
  • Управление задачами - создание, редактирование, завершение и удаление задач
  • Приоритеты задач - высокий, средний, низкий приоритет
  • Уведомления - настраиваемые напоминания о задачах
  • Быстрое создание - отправьте любой текст для создания задачи

📚 Управление заметками и полезной информацией

  • Текстовые заметки - сохранение любой текстовой информации
  • Автоматическое распознавание ссылок - отправьте URL для автосохранения
  • Поддержка файлов - сохранение документов, изображений, видео и аудио
  • Категории - организация заметок (работа, учеба, личное, ресурсы, идеи)
  • Избранное - отмечайте важные заметки звездочкой
  • Поиск - быстрый поиск по содержимому заметок
  • Теги - дополнительная организация с помощью тегов

🔧 Системные возможности

  • Чистая архитектура - следование принципам Clean Architecture
  • SQL Builder - использование Squirrel для безопасности запросов
  • Docker поддержка - полная контейнеризация
  • Graceful shutdown - корректное завершение работы
  • Логирование - структурированные логи с помощью Zap

📋 Команды бота

Авторизация

  • /start пароль - авторизация в системе

Управление задачами

  • /tasks, /list - показать все задачи
  • /pending - показать невыполненные задачи
  • /completed - показать выполненные задачи
  • /add название - создать новую задачу
  • /complete ID - отметить задачу как выполненную
  • /delete ID - удалить задачу
  • /show ID - показать подробную информацию о задаче

Уведомления

  • /notify ID время - установить напоминание

Примеры времени:

  • 15:30 - сегодня в 15:30
  • завтра 10:00 - завтра в 10:00
  • 25.12 14:00 - 25 декабря в 14:00

Управление заметками

  • /notes - показать все заметки
  • /note заголовок - создать новую заметку
  • /nshow ID - показать заметку
  • /ndelete ID - удалить заметку
  • /favorites - показать избранные заметки
  • /favorite ID - добавить/убрать из избранного
  • /search запрос - поиск заметок
  • /links - показать все ссылки
  • /files - показать все файлы

Прочее

  • /help - показать справку
  • /logout - выйти из системы

Быстрое создание

  • Задачи: Просто отправьте любой текст боту - он станет новой задачей!
  • Заметки: Отправьте документ, изображение, видео или аудио - они автоматически сохранятся как заметки!

🛠 Технологии

  • Go 1.24.4 - основной язык программирования
  • PostgreSQL - база данных
  • Telegram Bot API - интеграция с Telegram
  • Squirrel - SQL builder для безопасных запросов
  • Cron - планировщик для уведомлений
  • Zap - структурированное логирование
  • Docker - контейнеризация
  • Clean Architecture - архитектурный подход

🚀 Быстрый старт

Требования

  • Docker и Docker Compose
  • Токен телеграм бота (получить у @BotFather)

Установка

  1. Клонируйте репозиторий:
git clone <repository-url>
cd telegram-bot-todo-list
  1. Скопируйте файл с переменными окружения:
cp .env.example .env
  1. Отредактируйте .env файл:
nano .env

Укажите ваш токен бота и при необходимости измените пароль для авторизации.

  1. Запустите приложение:
docker-compose up -d
  1. Проверьте логи:
docker-compose logs -f todobot

Запуск с pgAdmin (опционально)

Для доступа к веб-интерфейсу базы данных:

docker-compose --profile admin up -d

pgAdmin будет доступен по адресу: http://localhost:8080

🔧 Разработка

Локальный запуск

  1. Установите зависимости:
go mod download
  1. Запустите PostgreSQL:
docker-compose up -d postgres
  1. Настройте переменные окружения:
export BOT_TOKEN=your_bot_token
export AUTH_PASSWORD=your_password
# ... другие переменные из .env.example
  1. Запустите приложение:
go run cmd/main.go

Структура проекта

telegram-bot-todo-list/
├── cmd/                    # Точка входа приложения
│   └── main.go
├── config/                 # Конфигурация
│   └── config.go
├── internal/
│   ├── domain/            # Доменные модели и интерфейсы
│   │   ├── task.go
│   │   ├── user.go
│   │   ├── note.go
│   │   └── repository.go
│   ├── repository/        # Слой данных
│   │   └── postgres/
│   │       ├── database.go
│   │       ├── task_repository.go
│   │       ├── user_repository.go
│   │       ├── session_repository.go
│   │       └── note_repository.go
│   ├── usecase/          # Бизнес-логика
│   │   ├── auth_service.go
│   │   ├── task_service.go
│   │   ├── note_service.go
│   │   └── notification_service.go
│   ├── handler/          # Обработчики
│   │   └── telegram/
│   │       ├── bot.go
│   │       ├── handlers.go
│   │       └── note_handlers.go
│   └── scheduler/        # Планировщик задач
│       └── cron.go
├── migrations/           # Миграции базы данных
│   ├── 001_initial.up.sql
│   ├── 001_initial.down.sql
│   ├── 002_add_notes_table.up.sql
│   └── 002_add_notes_table.down.sql
├── docker-compose.yml
├── Dockerfile
├── .env.example
├── .gitignore
├── go.mod
├── go.sum
└── README.md

🗃️ База данных

Проект использует PostgreSQL с четырьмя основными таблицами:

  • users - информация о пользователях
  • sessions - активные сессии пользователей
  • tasks - задачи пользователей
  • notes - заметки и полезная информация пользователей

Миграции выполняются автоматически при запуске приложения.

📝 Примеры использования

Создание задачи

Пользователь: Купить молоко
Бот: ✅ Задача [1] создана!
📌 Купить молоко

Создание заметки из текста

Пользователь: /note Полезная ссылка
Бот: 📝 Создание новой заметки

1️⃣ Введите заголовок заметки:
Пользователь: Полезная ссылка
Бот: 2️⃣ Введите содержимое заметки:
Пользователь: https://example.com
Бот: ✅ Заметка [1] создана!
🔗 Ссылка Полезная ссылка

Сохранение файла как заметки

Пользователь: [отправляет документ с подписью "Важный документ"]
Бот: ✅ 📄 Документ [2] сохранен!
📎 Важный документ (245.3 KB)

Поиск заметок

Пользователь: /search ссылка
Бот: 🔍 Результаты поиска по "ссылка":

🔗 [1] Полезная ссылка
📅 25.12.2024

Установка уведомления

Пользователь: /notify 1 завтра 10:00
Бот: ⏰ Уведомление установлено!
📌 Задача [1]: Купить молоко
🕐 Время: 25.12.2024 10:00

Список задач

Пользователь: /tasks
Бот: 📝 Ваши задачи:

⏳ 🟡 [1] Купить молоко
   ⏰ 25.12.2024 10:00

✅ 🟢 [2] Сделать домашнее задание

🔐 Безопасность

  • Все SQL запросы используют параметризированные запросы через Squirrel
  • Авторизация по паролю для доступа к боту
  • Сессии с ограниченным временем жизни
  • Автоматическая очистка истекших сессий

📊 Мониторинг

Приложение пишет структурированные логи в JSON формате:

# Просмотр логов в реальном времени
docker-compose logs -f todobot

# Просмотр логов конкретного сервиса
docker-compose logs postgres

🚦 Управление

Остановка приложения

docker-compose down

Остановка с удалением данных

docker-compose down -v

Перезапуск

docker-compose restart todobot

Обновление

git pull
docker-compose build
docker-compose up -d

🤝 Вклад в проект

  1. Форкните репозиторий
  2. Создайте ветку для ваших изменений (git checkout -b feature/amazing-feature)
  3. Зафиксируйте изменения (git commit -m 'Add some amazing feature')
  4. Отправьте в ветку (git push origin feature/amazing-feature)
  5. Откройте Pull Request

📄 Лицензия

Этот проект распространяется под лицензией MIT. См. файл LICENSE для деталей.

📞 Поддержка

Если у вас есть вопросы или проблемы, создайте issue в репозитории проекта.


Приятного использования! 🎉

About

Телеграм бот для управления задачами и заметками с уведомлениями, авторизацией и хранением в PostgreSQL.

Resources

Stars

Watchers

Forks

Packages

No packages published