generated from FOSS/Bot-Template
77 lines
2.4 KiB
Markdown
77 lines
2.4 KiB
Markdown
# 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`. Это специально: база может содержать персональные данные, поэтому экспорт надо включать руками и осознанно. |