Telegram-бот для автоматических напоминаний о днях рождения с современным интерфейсом и гибкими настройками.
- Умное текстовое добавление — имя, тег и дата разбираются из одного сообщения на естественном языке (например,
Иван 15.08.1990илиМаша 3 августа) - Интерактивный UI — список, редактирование, выбор даты и удаление контактов через inline-кнопки с пагинацией (по 8 контактов на странице)
- Даты без года рождения — в списке такие записи показываются в формате
ДД.ММбез возраста - Импорт контакта из адресной книги Telegram в один клик
- Автоматическая привязка
@usernameдля упоминаний в уведомлениях - Гибкие уведомления: за месяц, неделю, 3 дня, накануне или в день события в выбранное время, за 30 и 5 минут до наступления, а также ровно в полночь
- Сортировка списка по имени или по дате ближайшего дня рождения
- Экспорт всех записей в JSON и импорт обратно
- Готовый Docker-образ с лимитами ресурсов и настройкой часового пояса
-
Клонируйте репозиторий:
git clone https://github.com/renkagod/birthday-notifier-bot.git cd birthday-notifier-bot -
Настройте окружение:
cp .env.example .env # укажите BOT_TOKEN в .env -
Запуск:
docker compose up -d --build
После запуска отправьте боту /start.
- 📅 Мой список — интерактивное меню просмотра контактов с постраничной навигацией, быстрым переименованием, изменением даты или удалением
- ➕ Добавить — добавление вручную, через контакт из Telegram или пошаговый inline-календарь
- 🔥 Ближайшие — именинники в следующие 30 дней
- ⚙️ Настройки — время ежедневных напоминаний и активные интервалы (с быстрыми пресетами)
- 💾 Бэкап — экспорт списка в JSON или восстановление из файла
| Переменная | Обязательна | Описание |
|---|---|---|
BOT_TOKEN |
да | Токен бота от @BotFather |
BIRTHDAY_BOT_DB_PATH |
нет | Путь к файлу базы SQLite (по умолчанию data/birthdays.db) |
docker-compose.yml монтирует ./data в /app/data для базы SQLite, фиксирует часовой пояс контейнера (TZ=Europe/Moscow — влияет на время срабатывания напоминаний), проверяет доступность базы через healthcheck и ограничивает контейнер до 256 MB / 0.30 CPU (резерв — 64 MB / 0.10 CPU).
docker compose up -d --build # запуск
docker compose logs -f # логи
docker compose down # остановкаДля разработки нужен Python 3.11+:
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt -r requirements-dev.txt
cp .env.example .env # укажите BOT_TOKEN
# Линтер и тесты
ruff check bot tests
pytest -v
# Запуск бота
python -m bot.main