8d10098f62ba30be430aeb024704f37ddb61714e
❤️ Love Date Bot
Telegram-бот для отслеживания особых дат и отношений. Бот помогает считать дни, месяцы и годы с важных событий, учитывает високосные годы и отправляет ежедневные напоминания.
✨ Возможности
- 📅 Добавление дат - сохранение особых дат (знакомство, свадьба и т.д.)
- 📊 Статистика - подробная информация о прошедшем времени
- ⏰ Ежедневные уведомления - автоматические напоминания в 09:00
- 📈 Ежемесячные отчеты - статистика 1 числа каждого месяца
- 🎉 Годовщины - автоматическое поздравление с годовщинами
- 📱 Удобные команды - простой интерфейс в Telegram
- 🐳 Docker поддержка - легкий запуск в контейнере
🚀 Быстрый старт
1. Создание бота в Telegram
- Откройте @BotFather в Telegram
- Используйте команду
/newbot - Следуйте инструкциям для создания бота
- Скопируйте полученный токен
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 # Войти в контейнер
📊 Особенности реализации
- Учет високосных годов
- Бот корректно обрабатывает 29 февраля и считает дни с учетом високосных годов.
Точный расчет времени
- Рассчитывает точное количество лет, месяцев и дней
- Учитывает разное количество дней в месяцах
- Корректно обрабатывает переходы через год
Автоматические уведомления
- Ежедневно в 09:00 - напоминание о всех датах
- 1 числа каждого месяца - ежемесячный отчет
- В день годовщины - специальное поздравление
📈 Планы развития
- Поддержка нескольких языков
- Интеграция с календарями (Google Calendar, iCal)
- Напоминания о подарках к датам
Languages
Python
93.8%
Makefile
3.6%
Dockerfile
2.6%