Телеграм бот для управления задачами и заметками с уведомлениями, авторизацией и хранением в 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:0025.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)
- Клонируйте репозиторий:
git clone <repository-url>
cd telegram-bot-todo-list
- Скопируйте файл с переменными окружения:
cp .env.example .env
- Отредактируйте
.env
файл:
nano .env
Укажите ваш токен бота и при необходимости измените пароль для авторизации.
- Запустите приложение:
docker-compose up -d
- Проверьте логи:
docker-compose logs -f todobot
Для доступа к веб-интерфейсу базы данных:
docker-compose --profile admin up -d
pgAdmin будет доступен по адресу: http://localhost:8080
- Email: admin@todobot.local
- Password: admin
- Установите зависимости:
go mod download
- Запустите PostgreSQL:
docker-compose up -d postgres
- Настройте переменные окружения:
export BOT_TOKEN=your_bot_token
export AUTH_PASSWORD=your_password
# ... другие переменные из .env.example
- Запустите приложение:
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
- Форкните репозиторий
- Создайте ветку для ваших изменений (
git checkout -b feature/amazing-feature
) - Зафиксируйте изменения (
git commit -m 'Add some amazing feature'
) - Отправьте в ветку (
git push origin feature/amazing-feature
) - Откройте Pull Request
Этот проект распространяется под лицензией MIT. См. файл LICENSE
для деталей.
Если у вас есть вопросы или проблемы, создайте issue в репозитории проекта.
Приятного использования! 🎉