# Channel Notifier Telegram-бот на aiogram 3, который автоматически отправляет личное сообщение пользователям, подавшим заявку в закрытый канал. ## Стек - Python 3.11 - aiogram 3.28.2 - SQLAlchemy 2.x - aiosqlite - Alembic - APScheduler - aiohttp - pydantic-settings - pytz ## Быстрый старт 1. Создание виртуального окружения: ```bash python3.11 -m venv .venv source .venv/bin/activate ``` 2. Установка зависимостей: ```bash pip install -r requirements.txt ``` 3. Создание локального конфига: ```bash cp .env.example .env ``` 4. Заполнение `.env`: ```env BOT_TOKEN=123456:telegram_bot_token BOT_ADMIN_IDS=123456789 BOT_DATABASE_EXPORT=False ``` `BOT_ADMIN_IDS` можно указать через запятую: `123456789,987654321`. 5. Применение миграций: ```bash python migrate.py up ``` Без аргументов `python migrate.py` только показывает подсказки. Бот сам миграции при старте не запускает, чтобы не менять схему базы неожиданно. 6. Запуск бота: ```bash python main.py ``` ## Настройки | Параметр | Что делает | | --- | --- | | `BOT_TOKEN` | Токен Telegram-бота от BotFather | | `BOT_ADMIN_IDS` | Telegram ID админов, один или несколько через запятую | | `BOT_DATABASE_EXPORT` | Разрешает отправку файла БД админам через `/db` и ежедневный автобэкап | | `BOT_STATUS_NOTIFICATION` | Включает уведомление админов о запуске | | `BOT_TIMEZONE` | Временная зона бота | | `BOT_USER_CACHE_TTL` | Время кеширования пользователя в middleware | | `BOT_THROTTLE_RATE` | Базовая задержка антиспама | | `PATH_DATABASE` | Путь к SQLite-базе | | `PATH_LOGS` | Путь к файлу логов | По умолчанию `BOT_DATABASE_EXPORT=False`. Это специально: база может содержать персональные данные, поэтому экспорт надо включать руками и осознанно.