8499142e22d84948697f222bab2f1382dd4329c1
Birthday Bot (bdbot)
Telegram-бот для отслеживания дней рождения и отправки тематических поздравлений в чатах.
Возможности
- 📅 Отслеживание дней рождения пользователей
- 🎉 Автоматическая отправка тематических поздравлений
- 📊 Статистика по чатам
- 🔔 Уведомления о предстоящих днях рождения
- 🎨 12 тем для персонализации поздравлений
Требования
- Python 3.12+
- PostgreSQL 14+
- Docker и Docker Compose (опционально)
Установка
Локальная установка
- Клонируйте репозиторий:
git clone <repository-url>
cd bdbot
- Установите зависимости:
pip install uv
uv pip install -e .
- Создайте файл
.envна основе.env.example:
cp .env.example .env
- Заполните
.envфайл:
BOT_TOKEN=your_bot_token_here
DATABASE_URL=postgresql://user:password@localhost:5432/bdbot
NOTIFICATION_TIME=09:00
TIMEZONE=Europe/Moscow
-
Создайте базу данных PostgreSQL и убедитесь, что она доступна.
-
Запустите бота:
python main.py
Docker Compose
-
Создайте файл
.env(см. выше). -
Запустите с помощью Docker Compose:
docker-compose up -d
Использование
Для администраторов чата
- Добавьте бота в чат
- Выдайте боту права администратора
- Бот автоматически покажет статистику и предложит участникам поделиться днем рождения
Для пользователей
- Напишите боту в личку
/start - Отправьте свой день рождения в формате
ДД.ММилиДД.ММ.ГГГГ(например:15.03или15.03.1990) - Выберите тему предпочтений из предложенных вариантов
- Готово! Бот будет поздравлять вас во всех чатах, где вы состоите
Команды в чатах
/stats- Показать статистику: сколько человек поделились днем рождения/week- Показать дни рождения на ближайшие 7 дней/month- Показать дни рождения на ближайшие 30 дней/help- Показать справку по командам
Обновление данных
Используйте команду /update в личке с ботом, чтобы обновить свой день рождения или тему предпочтений.
Темы предпочтений
- Автомобили
- Спорт
- Танцы
- Музыка
- Аниме
- Игры
- Книги
- Кино
- Путешествия
- Еда
- Технологии
- Искусство
Конфигурация
Все настройки находятся в файле .env:
BOT_TOKEN- токен Telegram бота (получить у @BotFather)DATABASE_URL- строка подключения к PostgreSQLNOTIFICATION_TIME- время отправки поздравлений (формат: HH:MM, по умолчанию 09:00)TIMEZONE- часовой пояс (например: Europe/Moscow, UTC)
Структура проекта
bdbot/
├── main.py # Точка входа
├── bot.py # Основной класс бота
├── config.py # Конфигурация
├── database.py # Модели базы данных
├── messages.py # Тематические поздравления
├── handlers/ # Обработчики событий
│ ├── group_handlers.py # Обработка событий в группах
│ ├── private_handlers.py # Обработка команд в личке
│ ├── command_handlers.py # Обработка команд в группах
│ └── scheduler.py # Планировщик поздравлений
├── Dockerfile # Docker образ
├── docker-compose.yml # Docker Compose конфигурация
└── .env.example # Пример конфигурации
Разработка
Проект использует:
- Python 3.12+
- pyTelegramBotAPI для работы с Telegram API
- SQLAlchemy для работы с базой данных
- APScheduler для планирования задач
- PostgreSQL как основную БД
Лицензия
from olly & cursor with <3
Description
Languages
Python
98.9%
Dockerfile
1.1%