Telegram-бот для управления списком задач с функцией напоминаний.
TaskyBot позволяет пользователям создавать, управлять и отслеживать свои задачи прямо в Telegram. Бот поддерживает напоминания и автоматически уведомляет пользователей о приближающихся сроках.
/start
— приветствие и список доступных команд/add <текст>
— добавить новую задачу/list
— показать все задачи пользователя/done <id>
— отметить задачу как выполненную/delete <id>
— удалить задачу/remind <id> <минуты>
— установить напоминание для задачи
- Проверка напоминаний: каждые 30 секунд бот проверяет задачи с установленными напоминаниями
- Уведомления: автоматическая отправка напоминаний в личные сообщения
- Python 3.8+ (для локального запуска)
- Docker и Docker Compose (для контейнерного развертывания)
- Telegram Bot Token (получить у @BotFather)
- Клонируйте репозиторий:
git clone https://github.com/yourusername/tg-bot.git
cd tg-bot
- Настройте переменные окружения:
# Скопируйте пример файла
cp .env.example .env
# Отредактируйте .env файл и добавьте токен бота
nano .env
- Запустите бота:
# Сделайте скрипты исполняемыми (Linux/Mac)
chmod +x scripts/*.sh
# Запустите бота
./scripts/start.sh
# Или используйте Docker Compose напрямую
docker-compose up -d
- Полезные команды:
# Просмотр логов
./scripts/logs.sh
# Остановка бота
./scripts/stop.sh
# Резервное копирование
./scripts/backup.sh
- Клонируйте репозиторий:
git clone https://github.com/yourusername/tg-bot.git
cd tg-bot
- Установите зависимости:
pip install -r requirements.txt
-
Получите токен бота:
- Напишите @BotFather в Telegram
- Создайте нового бота командой
/newbot
- Скопируйте полученный токен
-
Установите токен бота:
# Windows
set BOT_TOKEN=your_bot_token_here
# Linux/Mac
export BOT_TOKEN=your_bot_token_here
- Запустите бота:
python main.py
- Найдите вашего бота в Telegram по имени
- Отправьте команду
/start
для начала работы - Добавьте первую задачу:
/add Купить молоко
- Посмотрите список задач:
/list
- Установите напоминание:
/remind 1 30
(напомнить через 30 минут)
tg-bot/
├── main.py # Основной файл бота
├── models.py # Модели данных (Task, TaskManager)
├── config.py # Конфигурация
├── requirements.txt # Зависимости Python
├── Dockerfile # Docker образ
├── docker-compose.yml # Docker Compose конфигурация
├── .dockerignore # Игнорируемые файлы для Docker
├── .env.example # Пример переменных окружения
├── tasks.json # База данных задач (создается автоматически)
├── .gitignore # Игнорируемые файлы
├── README.md # Документация
├── docs/ # Дополнительная документация
│ ├── API.md # API документация
│ └── DEPLOYMENT.md # Руководство по развертыванию
└── scripts/ # Скрипты для управления
├── start.sh # Запуск бота
├── stop.sh # Остановка бота
├── logs.sh # Просмотр логов
└── backup.sh # Резервное копирование
- main.py: Содержит обработчики команд и основную логику бота
- models.py: Определяет классы
Task
иTaskManager
для работы с данными - config.py: Управляет конфигурацией и переменными окружения
Проект полностью готов для развертывания с помощью Docker:
- Dockerfile: Оптимизированный образ на базе Python 3.11-slim
- docker-compose.yml: Готовая конфигурация с мониторингом и ограничениями ресурсов
- Скрипты управления: Автоматизированные скрипты для запуска, остановки и мониторинга
- Резервное копирование: Автоматическое создание бэкапов данных
- Безопасность: запуск от непривилегированного пользователя
- Мониторинг: встроенный healthcheck
- Персистентность: данные сохраняются в volume
- Ограничения ресурсов: контроль использования CPU и памяти
- Логирование: централизованные логи через Docker
Данные хранятся в JSON-файле tasks.json
в формате:
{
"tasks": {
"user_id": [
{
"id": 1,
"user_id": 123456789,
"text": "Купить молоко",
"completed": false,
"created_at": "2024-01-01T12:00:00",
"reminder_minutes": 30,
"reminder_set_at": "2024-01-01T12:00:00"
}
]
},
"next_task_id": 2
}
- Проверка происходит каждые 30 секунд
- Напоминания отправляются автоматически при наступлении времени
- После отправки напоминание удаляется
- Создайте функцию-обработчик в
main.py
- Добавьте обработчик команд в функцию
main()
- Обновите документацию
Для тестирования бота:
- Создайте тестового бота через @BotFather
- Установите тестовый токен
- Запустите бота и протестируйте все команды
MIT License
Если у вас возникли вопросы или проблемы, создайте issue в репозитории GitHub.