❤️ Love Date Bot

Python Telegram Docker License

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

Возможности

  • 📅 Добавление дат - сохранение особых дат (знакомство, свадьба и т.д.)
  • 📊 Статистика - подробная информация о прошедшем времени
  • Ежедневные уведомления - автоматические напоминания в 09:00
  • 📈 Ежемесячные отчеты - статистика 1 числа каждого месяца
  • 🎉 Годовщины - автоматическое поздравление с годовщинами
  • 📱 Удобные команды - простой интерфейс в Telegram
  • 🐳 Docker поддержка - легкий запуск в контейнере

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

1. Создание бота в Telegram

  1. Откройте @BotFather в Telegram
  2. Используйте команду /newbot
  3. Следуйте инструкциям для создания бота
  4. Скопируйте полученный токен

2. Клонирование репозитория

git clone 
cd love-date-bot

3. Настройка окружения

Создайте файл .env в корне проекта:

TELEGRAM_BOT_TOKEN=ваш_токен_бота
NOTIFY_HOUR=9
NOTIFY_MINUTE=0
MONTHLY_REPORT_DAY=1
TIMEZONE=Asia/Krasnoyarsk

4. Запуск с Docker

docker-compose build --no-cache
docker-compose up -d

5. Запуск без Docker

# Установка зависимостей
pip install -r requirements.txt
# Создание папок для данных
mkdir -p data logs
# Запуск бота
python bot.py

##№ ⚙️ Настройка

Переменные окружения (.env)

Создайте файл .env в корне проекта на основе .env.example:

# Обязательные параметры
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 в формате:

{
  "user_id_1": {
    "Название даты 1": "2020-03-01",
    "Название даты 2": "2022-06-15"
  },
  "user_id_2": {
    "Другая дата": "2021-01-01"
  }
}

🔧 Управление через Makefile

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. Напоминания о подарках к датам
Description
No description provided
Readme MIT 39 KiB
Languages
Python 93.8%
Makefile 3.6%
Dockerfile 2.6%