Skip to content

TaskyBot. Telegram-бот для управления списком задач с функцией напоминаний. Пользователь может добавлять, просматривать, удалять и отмечать задачи как выполненные, а также задавать время напоминания. Бот присылает уведомление в личные сообщения, когда подходит срок.

Notifications You must be signed in to change notification settings

MaksimIgnatov/TaskyBot

Repository files navigation

TaskyBot 🤖

Telegram-бот для управления списком задач с функцией напоминаний.

Описание

TaskyBot позволяет пользователям создавать, управлять и отслеживать свои задачи прямо в Telegram. Бот поддерживает напоминания и автоматически уведомляет пользователей о приближающихся сроках.

Функционал

Основные команды

  • /start — приветствие и список доступных команд
  • /add <текст> — добавить новую задачу
  • /list — показать все задачи пользователя
  • /done <id> — отметить задачу как выполненную
  • /delete <id> — удалить задачу
  • /remind <id> <минуты> — установить напоминание для задачи

Автоматические функции

  • Проверка напоминаний: каждые 30 секунд бот проверяет задачи с установленными напоминаниями
  • Уведомления: автоматическая отправка напоминаний в личные сообщения

Установка и запуск

Требования

  • Python 3.8+ (для локального запуска)
  • Docker и Docker Compose (для контейнерного развертывания)
  • Telegram Bot Token (получить у @BotFather)

Быстрый запуск с Docker (рекомендуется)

  1. Клонируйте репозиторий:
git clone https://github.com/yourusername/tg-bot.git
cd tg-bot
  1. Настройте переменные окружения:
# Скопируйте пример файла
cp .env.example .env

# Отредактируйте .env файл и добавьте токен бота
nano .env
  1. Запустите бота:
# Сделайте скрипты исполняемыми (Linux/Mac)
chmod +x scripts/*.sh

# Запустите бота
./scripts/start.sh

# Или используйте Docker Compose напрямую
docker-compose up -d
  1. Полезные команды:
# Просмотр логов
./scripts/logs.sh

# Остановка бота
./scripts/stop.sh

# Резервное копирование
./scripts/backup.sh

Локальная установка (без Docker)

  1. Клонируйте репозиторий:
git clone https://github.com/yourusername/tg-bot.git
cd tg-bot
  1. Установите зависимости:
pip install -r requirements.txt
  1. Получите токен бота:

    • Напишите @BotFather в Telegram
    • Создайте нового бота командой /newbot
    • Скопируйте полученный токен
  2. Установите токен бота:

# Windows
set BOT_TOKEN=your_bot_token_here

# Linux/Mac
export BOT_TOKEN=your_bot_token_here
  1. Запустите бота:
python main.py

Использование

  1. Найдите вашего бота в Telegram по имени
  2. Отправьте команду /start для начала работы
  3. Добавьте первую задачу: /add Купить молоко
  4. Посмотрите список задач: /list
  5. Установите напоминание: /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 развертывание

Проект полностью готов для развертывания с помощью Docker:

  • Dockerfile: Оптимизированный образ на базе Python 3.11-slim
  • docker-compose.yml: Готовая конфигурация с мониторингом и ограничениями ресурсов
  • Скрипты управления: Автоматизированные скрипты для запуска, остановки и мониторинга
  • Резервное копирование: Автоматическое создание бэкапов данных

Особенности Docker конфигурации:

  • Безопасность: запуск от непривилегированного пользователя
  • Мониторинг: встроенный 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 секунд
  • Напоминания отправляются автоматически при наступлении времени
  • После отправки напоминание удаляется

Разработка

Добавление новых команд

  1. Создайте функцию-обработчик в main.py
  2. Добавьте обработчик команд в функцию main()
  3. Обновите документацию

Тестирование

Для тестирования бота:

  1. Создайте тестового бота через @BotFather
  2. Установите тестовый токен
  3. Запустите бота и протестируйте все команды

Лицензия

MIT License

Поддержка

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

About

TaskyBot. Telegram-бот для управления списком задач с функцией напоминаний. Пользователь может добавлять, просматривать, удалять и отмечать задачи как выполненные, а также задавать время напоминания. Бот присылает уведомление в личные сообщения, когда подходит срок.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published