# ❤️ Love Date Bot ![Python](https://img.shields.io/badge/python-3.11+-blue.svg) ![Telegram](https://img.shields.io/badge/Telegram-Bot-blue.svg) ![Docker](https://img.shields.io/badge/docker-✓-blue.svg) ![License](https://img.shields.io/badge/license-MIT-green.svg) Telegram-бот для отслеживания особых дат и отношений. Бот помогает считать дни, месяцы и годы с важных событий, учитывает високосные годы и отправляет ежедневные напоминания. ## ✨ Возможности - 📅 **Добавление дат** - сохранение особых дат (знакомство, свадьба и т.д.) - 📊 **Статистика** - подробная информация о прошедшем времени - ⏰ **Ежедневные уведомления** - автоматические напоминания в 09:00 - 📈 **Ежемесячные отчеты** - статистика 1 числа каждого месяца - 🎉 **Годовщины** - автоматическое поздравление с годовщинами - 📱 **Удобные команды** - простой интерфейс в Telegram - 🐳 **Docker поддержка** - легкий запуск в контейнере ## 🚀 Быстрый старт ### 1. Создание бота в Telegram 1. Откройте [@BotFather](https://t.me/botfather) в Telegram 2. Используйте команду `/newbot` 3. Следуйте инструкциям для создания бота 4. Скопируйте полученный токен ### 2. Клонирование репозитория ```bash git clone cd love-date-bot ``` ### 3. Настройка окружения Создайте файл `.env` в корне проекта: ```bash TELEGRAM_BOT_TOKEN=ваш_токен_бота NOTIFY_HOUR=9 NOTIFY_MINUTE=0 MONTHLY_REPORT_DAY=1 TIMEZONE=Asia/Krasnoyarsk ``` ### 4. Запуск с Docker ```bash docker-compose build --no-cache docker-compose up -d ``` ### 5. Запуск без Docker ```bash # Установка зависимостей pip install -r requirements.txt # Создание папок для данных mkdir -p data logs # Запуск бота python bot.py ``` ##№ ⚙️ Настройка ## Переменные окружения (.env) Создайте файл `.env` в корне проекта на основе `.env.example`: ```env # Обязательные параметры TELEGRAM_BOT_TOKEN=ваш_токен_бота_здесь # Токен от @BotFather (ОБЯЗАТЕЛЬНО) # Необязательные параметры (есть значения по умолчанию) NOTIFY_HOUR=9 # Час ежедневных уведомлений (0-23) NOTIFY_MINUTE=0 # Минута ежедневных уведомлений (0-59) MONTHLY_REPORT_DAY=1 # День месяца для отправки отчетов (1-31) TIMEZONE=Asia/Krasnoyarsk # Часовой пояс бота ```` ### Файл данных Данные хранятся в `data/love_dates.json` в формате: ```json { "user_id_1": { "Название даты 1": "2020-03-01", "Название даты 2": "2022-06-15" }, "user_id_2": { "Другая дата": "2021-01-01" } } ``` ### 🔧 Управление через Makefile ```bash make build # Собрать Docker образ make run # Запустить контейнер (в фоне) make up # Запустить и смотреть логи make stop # Остановить контейнер make restart # Перезапустить контейнер make logs # Просмотр логов в реальном времени make clean # Остановить и удалить контейнер make shell # Войти в контейнер ``` ### 📊 Особенности реализации 1. Учет високосных годов 2. Бот корректно обрабатывает 29 февраля и считает дни с учетом високосных годов. ### Точный расчет времени 1. Рассчитывает точное количество лет, месяцев и дней 2. Учитывает разное количество дней в месяцах 3. Корректно обрабатывает переходы через год ### Автоматические уведомления 1. Ежедневно в 09:00 - напоминание о всех датах 2. 1 числа каждого месяца - ежемесячный отчет 3. В день годовщины - специальное поздравление ### 📈 Планы развития 1. Поддержка нескольких языков 2. Интеграция с календарями (Google Calendar, iCal) 3. Напоминания о подарках к датам