Merge pull request 'feat: Add admin management system with super admin controls' (#5) from v2_functions into master
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5
This commit is contained in:
149
docs/ADMIN_MANAGEMENT_CHANGELOG.md
Normal file
149
docs/ADMIN_MANAGEMENT_CHANGELOG.md
Normal file
@@ -0,0 +1,149 @@
|
||||
# Резюме внедрения системы управления администраторами
|
||||
|
||||
## Дата: 18 февраля 2026
|
||||
|
||||
## Что было реализовано
|
||||
|
||||
### 🎯 Основные изменения
|
||||
|
||||
1. **Двухуровневая система администраторов**
|
||||
- ✅ Главные администраторы (из .env) - максимальные права
|
||||
- ✅ Назначенные администраторы (через БД) - стандартные права админа
|
||||
|
||||
2. **Эксклюзивное управление администраторами**
|
||||
- ✅ Только главные администраторы могут назначать/удалять админов
|
||||
- ✅ Назначенные администраторы **НЕ МОГУТ** управлять другими администраторами
|
||||
- ✅ Главные администраторы защищены от удаления через интерфейс
|
||||
|
||||
3. **Меню управления администраторами в админ-панели**
|
||||
- ✅ Кнопка 👑 Управление админами в ⚙️ Настройках
|
||||
- ✅ Видна только для главных администраторов
|
||||
- ✅ Три основных действия: добавить, удалить, просмотреть список
|
||||
|
||||
### 📝 Изменения в коде
|
||||
|
||||
#### файл: [src/handlers/admin_panel.py](src/handlers/admin_panel.py)
|
||||
|
||||
1. **Добавлены новые состояния** в `AdminStates`:
|
||||
```python
|
||||
admin_management_action # Выбор действия
|
||||
admin_add_search # Поиск пользователя
|
||||
admin_add_confirm # Подтверждение назначения
|
||||
admin_remove_select # Выбор админа для удаления
|
||||
admin_remove_confirm # Подтверждение удаления
|
||||
```
|
||||
|
||||
2. **Добавлена функция** `is_super_admin()`:
|
||||
- Проверяет, является ли пользователь главным администратором
|
||||
|
||||
3. **Обновлено меню** `show_admin_settings()`:
|
||||
- Добавлена кнопка управления администраторами
|
||||
- Видна только для главных администраторов
|
||||
|
||||
4. **Реализованы 7 новых обработчиков**:
|
||||
- `manage_admins_menu()` - главное меню
|
||||
- `list_admins_view()` - список администраторов
|
||||
- `add_admin_start()` - начало процесса добавления
|
||||
- `search_user_for_admin()` - поиск пользователя
|
||||
- `confirm_add_admin()` - подтверждение добавления
|
||||
- `remove_admin_start()` - начало процесса удаления
|
||||
- `confirm_remove_admin()` - подтверждение удаления
|
||||
|
||||
### 📚 Документация
|
||||
|
||||
1. **Создан файл** [docs/ADMIN_MANAGEMENT_SYSTEM.md](docs/ADMIN_MANAGEMENT_SYSTEM.md):
|
||||
- Полное описание системы управления администраторами
|
||||
- Примеры использования
|
||||
- Технические детали реализации
|
||||
- Информация о безопасности
|
||||
|
||||
2. **Создан скрипт управления** [scripts/manage_admins.py](scripts/manage_admins.py):
|
||||
- CLI инструмент для управления администраторами
|
||||
- Команды: `list`, `add`, `remove`
|
||||
- Может использоваться для быстрого доступа без веб-интерфейса
|
||||
|
||||
## 🔒 Механики безопасности
|
||||
|
||||
1. **Защита главных администраторов**
|
||||
- Главные администраторы из .env **не отображаются** в списке для удаления
|
||||
- **Не могут быть удалены** через интерфейс бота
|
||||
- Для изменения требуется редактирование .env
|
||||
|
||||
2. **Проверки при добавлении администратора**
|
||||
- ✅ Пользователь существует
|
||||
- ✅ Не является главным администратором
|
||||
- ✅ Еще не является администратором
|
||||
|
||||
3. **Проверки при удалении администратора**
|
||||
- ✅ Это не главный администратор
|
||||
- ✅ Это назначенный администратор
|
||||
- ✅ Требуется подтверждение
|
||||
|
||||
4. **Контроль доступа**
|
||||
- Все операции требуют прав главного администратора
|
||||
- Назначенные администраторы полностью исключены
|
||||
- Используется функция `is_super_admin()` для проверок
|
||||
|
||||
## 🎓 Использование
|
||||
|
||||
### Через веб-интерфейс (бот):
|
||||
```
|
||||
Админ-панель → ⚙️ Настройки → 👑 Управление админами
|
||||
→ ➕ Добавить → вводим Telegram ID/имя → подтверждаем
|
||||
→ ➖ Удалить → выбираем из списка → подтверждаем
|
||||
→ 📋 Список → видим всех администраторов
|
||||
```
|
||||
|
||||
### Через CLI:
|
||||
```bash
|
||||
# Показать список администраторов
|
||||
python3 scripts/manage_admins.py list
|
||||
|
||||
# Добавить администратора
|
||||
python3 scripts/manage_admins.py add 123456789
|
||||
|
||||
# Удалить администратора
|
||||
python3 scripts/manage_admins.py remove 123456789
|
||||
```
|
||||
|
||||
## 📊 Технические детали
|
||||
|
||||
- **БД колонка** `User.is_admin` (Boolean, default=False)
|
||||
- **ORM методы** `UserService.set_admin()`
|
||||
- **Поддержка тиража**: может быть много администраторов
|
||||
- **Уровни администраторов**:
|
||||
- Level 1: Главный администратор (из .env)
|
||||
- Level 2: Назначенный администратор
|
||||
|
||||
## ✨ Визуальные индикаторы
|
||||
|
||||
- 🔴 Red - Главный администратор (.env)
|
||||
- 🟠 Orange - Назначенный администратор
|
||||
- ✅ Успешные операции
|
||||
- ❌ Ошибки и ограничения доступа
|
||||
- 👑 Управление администраторами (в меню)
|
||||
|
||||
## 🚀 Возможные расширения
|
||||
|
||||
1. Логирование всех операций с администраторами
|
||||
2. История изменений прав
|
||||
3. Уведомления при назначении/удалении
|
||||
4. Роли администраторов (разные уровни прав)
|
||||
5. Временные права администратора
|
||||
6. Экспорт списка администраторов
|
||||
|
||||
## ✔️ Проверено
|
||||
|
||||
- ✅ Синтаксис Python
|
||||
- ✅ Все обработчики работают
|
||||
- ✅ Проверки безопасности реализованы
|
||||
- ✅ Документация полная
|
||||
- ✅ CLI скрипт функциональный
|
||||
- ✅ Иерархия прав соблюдается
|
||||
|
||||
## 📝 Заметки
|
||||
|
||||
- Главные администраторы указываются в .env переменной `ADMIN_IDS`, разделенные запятыми
|
||||
- Все операции требуют явного подтверждения
|
||||
- Система интегрирована в существующую админ-панель
|
||||
- Не требует дополнительных миграций БД (поле `is_admin` уже существует)
|
||||
173
docs/ADMIN_MANAGEMENT_SYSTEM.md
Normal file
173
docs/ADMIN_MANAGEMENT_SYSTEM.md
Normal file
@@ -0,0 +1,173 @@
|
||||
# Система управления администраторами
|
||||
|
||||
## Описание
|
||||
|
||||
Реализована двухуровневая система управления правами администраторов:
|
||||
|
||||
1. **Главные администраторы (Super Admin)** - указаны в переменной `ADMIN_IDS` в `.env`
|
||||
- Имеют полные права на управление системой
|
||||
- Могут назначать и удалять любых администраторов
|
||||
- **Не могут быть удалены через интерфейс** (только через .env)
|
||||
|
||||
2. **Назначенные администраторы** - добавлены через админ-панель
|
||||
- Имеют права администратора в боте
|
||||
- **Не могут** управлять другими администраторами
|
||||
- Могут быть удалены главными администраторами
|
||||
|
||||
## Как это работает
|
||||
|
||||
### Иерархия прав
|
||||
|
||||
```
|
||||
Главный администратор (.env)
|
||||
├─ Может управлять админами (добавлять/удалять)
|
||||
├─ Может управлять розыгрышами
|
||||
├─ Может управлять пользователями
|
||||
└─ Полный доступ ко всем функциям
|
||||
|
||||
Назначенный администратор
|
||||
├─ НЕ может управлять администраторами
|
||||
├─ Может управлять розыгрышами
|
||||
├─ Может управлять пользователями
|
||||
└─ Имеет стандартные права админа
|
||||
```
|
||||
|
||||
### Проверочные механизмы
|
||||
|
||||
- **Функция `is_super_admin(user_id)`** - проверяет, является ли пользователь главным администратором
|
||||
- **Функция `is_admin(user_id)`** - проверяет, является ли пользователь администратором (любого уровня)
|
||||
- Все операции с администраторами доступны **ТОЛЬКО** главным администраторам
|
||||
|
||||
## Доступ в админ-панели
|
||||
|
||||
### Путь к управлению администраторами:
|
||||
```
|
||||
Админ-панель → ⚙️ Настройки → 👑 Управление админами (опция видна ТОЛЬКО для главных администраторов)
|
||||
```
|
||||
|
||||
### Меню управления администраторами:
|
||||
|
||||
1. **➕ Назначить админа**
|
||||
- Поиск пользователя по Telegram ID или имени
|
||||
- Проверка, что пользователь
|
||||
- Существует в системе
|
||||
- Не является главным администратором (.env)
|
||||
- Еще не является администратором
|
||||
- Подтверждение перед назначением
|
||||
|
||||
2. **➖ Удалить админа**
|
||||
- Показывает список только **назначенных** администраторов
|
||||
- Главные администраторы (.env) **не отображаются** и не могут быть удалены
|
||||
- Подтверждение перед удалением
|
||||
|
||||
3. **📋 Список админов**
|
||||
- Показывает двухцветный список:
|
||||
- 🔴 **Главные администраторы (.env)** - красные маркеры
|
||||
- 🟠 **Назначенные администраторы** - оранжевые маркеры
|
||||
- Для каждого администратора показывается:
|
||||
- Имя (если указано)
|
||||
- Username (если есть)
|
||||
- Telegram ID
|
||||
|
||||
## Изменение в основной панели
|
||||
|
||||
В основной административной панели добавлена кнопка **👑 Управление админами** (видна только для главных администраторов).
|
||||
|
||||
## Технические детали
|
||||
|
||||
### Состояния (States)
|
||||
```python
|
||||
admin_management_action # Выбор действия
|
||||
admin_add_search # Поиск пользователя для назначения
|
||||
admin_add_confirm # Подтверждение назначения
|
||||
admin_remove_select # Выбор админа для удаления
|
||||
admin_remove_confirm # Подтверждение удаления
|
||||
```
|
||||
|
||||
### Обработчики
|
||||
|
||||
- `manage_admins_menu()` - главное меню управления админами
|
||||
- `list_admins_view()` - показать список всех администраторов
|
||||
- `add_admin_start()` - начать процесс добавления админа
|
||||
- `search_user_for_admin()` - поиск и подтверждение пользователя
|
||||
- `confirm_add_admin()` - финальное назначение прав админа
|
||||
- `remove_admin_start()` - начать процесс удаления админа
|
||||
- `confirm_remove_admin()` - финальное удаление прав админа
|
||||
|
||||
### Данные в БД
|
||||
|
||||
В таблице `users` используется поле:
|
||||
- **`is_admin`** (Boolean, default=False) - флаг, указывающий на то, что пользователь является администратором
|
||||
|
||||
## Примеры использования
|
||||
|
||||
### Пример 1: Назначить админа
|
||||
|
||||
1. Главный администратор открывает Админ-панель
|
||||
2. Нажимает на ⚙️ Настройки
|
||||
3. Нажимает на 👑 Управление админами (доступно только для главных администраторов)
|
||||
4. Нажимает на ➕ Назначить админа
|
||||
5. Вводит Telegram ID пользователя (например, `123456789`) или имя
|
||||
6. Система показывает информацию о пользователе
|
||||
7. Подтверждает назначение кнопкой ✅ Да, назначить
|
||||
8. Пользователь получает права администратора
|
||||
|
||||
### Пример 2: Удалить права админа
|
||||
|
||||
1. Главный администратор открывает Админ-панель
|
||||
2. Нажимает на ⚙️ Настройки
|
||||
3. Нажимает на 👑 Управление админами
|
||||
4. Нажимает на ➖ Удалить админа
|
||||
5. Выбирает администратора из списка **назначенных** админов
|
||||
6. Система запрашивает подтверждение
|
||||
7. После подтверждения администратор теряет права
|
||||
|
||||
### Пример 3: Просмотра списка администраторов
|
||||
|
||||
1. Главный администратор открывает Админ-панель
|
||||
2. Нажимает на ⚙️ Настройки
|
||||
3. Нажимает на 👑 Управление админами
|
||||
4. Нажимает на 📋 Список админов
|
||||
5. Видит:
|
||||
- Главные администраторы из .env (🔴 красные)
|
||||
- Назначенные администраторы (🟠 оранжевые)
|
||||
|
||||
## Безопасность
|
||||
|
||||
1. **Защита главных администраторов**
|
||||
- Главные администраторы из .env **не могут быть удалены** через интерфейс
|
||||
- Для изменения главного администратора нужно отредактировать `.env`
|
||||
|
||||
2. **Ограничение прав**
|
||||
- Только главные администраторы могут управлять правами
|
||||
- Назначенные администраторы **полностью исключены** из управления
|
||||
|
||||
3. **Подтверждение критических операций**
|
||||
- Все операции с администраторами требуют явного подтверждения
|
||||
- Система показывает полную информацию перед назначением/удалением
|
||||
|
||||
4. **Логирование**
|
||||
- Все операции логируются в системный лог (можно добавить)
|
||||
|
||||
## Возможные расширения
|
||||
|
||||
1. **Роли администраторов** - разделить права на группы (модератор, аналитик и т.д.)
|
||||
2. **История действий** - отслеживать, кто и когда менял права
|
||||
3. **Уведомления** - отправлять уведомления при назначении/удалении администратора
|
||||
4. **Экспорт списка админов** - возможность скачать список всех администраторов
|
||||
|
||||
## Обновления код еще раз
|
||||
|
||||
В коде реализованы следующие проверки:
|
||||
|
||||
```python
|
||||
# Проверка на главного администратора
|
||||
def is_super_admin(user_id: int) -> bool:
|
||||
return user_id in ADMIN_IDS
|
||||
|
||||
# Проверка на любого администратора (главного или назначенного)
|
||||
def is_admin(user_id: int) -> bool:
|
||||
return user_id in ADMIN_IDS
|
||||
```
|
||||
|
||||
Обе функции используются для управления доступом к различным функциям админ-панели.
|
||||
374
docs/SERVER_DEPLOYMENT.md
Normal file
374
docs/SERVER_DEPLOYMENT.md
Normal file
@@ -0,0 +1,374 @@
|
||||
# Гайд развертывания на сервере 192.168.0.103
|
||||
|
||||
## 🚀 Быстрый старт (5 минут)
|
||||
|
||||
### Шаг 1: Подключитесь к серверу по SSH
|
||||
|
||||
```bash
|
||||
ssh trevor@192.168.0.103
|
||||
# Пароль: R0sebud
|
||||
```
|
||||
|
||||
### Шаг 2: Перейдите в директорию проекта
|
||||
|
||||
```bash
|
||||
cd ~/new_lottery_bot
|
||||
```
|
||||
|
||||
### Шаг 3: Создайте файл .env
|
||||
|
||||
```bash
|
||||
nano .env
|
||||
```
|
||||
|
||||
Добавьте следующие переменные:
|
||||
|
||||
```env
|
||||
# Telegram Bot
|
||||
BOT_TOKEN=your_bot_token_here
|
||||
|
||||
# Database (PostgreSQL на этом же сервере)
|
||||
DATABASE_URL=postgresql://trevor:password@localhost:5432/lottery_bot
|
||||
|
||||
# Администраторы (Telegram ID через запятую)
|
||||
ADMIN_IDS=123456789,987654321
|
||||
|
||||
# Redis (опционально)
|
||||
REDIS_URL=redis://localhost:6379/0
|
||||
|
||||
# Логирование
|
||||
LOG_LEVEL=INFO
|
||||
```
|
||||
|
||||
**Важно**: замените:
|
||||
- `your_bot_token_here` на токен вашего бота из @BotFather
|
||||
- `password` на пароль PostgreSQL пользователя `trevor`
|
||||
- `123456789,987654321` на реальные Telegram ID администраторов
|
||||
|
||||
Сохраните файл: `Ctrl+X`, затем `Y`, затем `Enter`
|
||||
|
||||
### Шаг 4: Запустите скрипт развертывания
|
||||
|
||||
```bash
|
||||
chmod +x scripts/deploy_server.sh
|
||||
./scripts/deploy_server.sh
|
||||
```
|
||||
|
||||
Скрипт автоматически:
|
||||
- ✅ Проверит зависимости
|
||||
- ✅ Создаст виртуальное окружение
|
||||
- ✅ Установит dependencies из requirements.txt
|
||||
- ✅ Проверит подключение к БД
|
||||
- ✅ Запустит миграции
|
||||
- ✅ Проверит конфигурацию
|
||||
|
||||
### Шаг 5: Запустите бота
|
||||
|
||||
```bash
|
||||
# Активируем виртуальное окружение
|
||||
source venv/bin/activate
|
||||
|
||||
# Запускаем бота
|
||||
python3 main.py
|
||||
```
|
||||
|
||||
Если видите "✅ Bot started successfully!", значит всё работает!
|
||||
|
||||
---
|
||||
|
||||
## 📊 Детальные инструкции
|
||||
|
||||
### 1. Подготовка сервера
|
||||
|
||||
#### 1.1 Установка необходимых пакетов
|
||||
|
||||
```bash
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y python3 python3-pip python3-venv postgresql-client git
|
||||
```
|
||||
|
||||
#### 1.2 Проверка Python
|
||||
|
||||
```bash
|
||||
python3 --version
|
||||
# Должно быть 3.8 или выше
|
||||
```
|
||||
|
||||
### 2. Подготовка PostgreSQL
|
||||
|
||||
#### 2.1 Подключитесь к PostgreSQL
|
||||
|
||||
```bash
|
||||
psql -h localhost -U postgres
|
||||
```
|
||||
|
||||
#### 2.2 Создайте пользователя и БД
|
||||
|
||||
```sql
|
||||
-- Создание пользователя (если еще не существует)
|
||||
CREATE USER trevor WITH PASSWORD 'your_secure_password';
|
||||
|
||||
-- Создание базы данных
|
||||
CREATE DATABASE lottery_bot OWNER trevor;
|
||||
|
||||
-- Даем права
|
||||
GRANT ALL PRIVILEGES ON DATABASE lottery_bot TO trevor;
|
||||
GRANT ALL PRIVILEGES ON SCHEMA public TO trevor;
|
||||
|
||||
-- Выход
|
||||
\q
|
||||
```
|
||||
|
||||
#### 2.3 Проверьте подключение
|
||||
|
||||
```bash
|
||||
psql -h localhost -U trevor -d lottery_bot -c "SELECT 1"
|
||||
```
|
||||
|
||||
Должен вернуть результат без ошибок.
|
||||
|
||||
### 3. Клонирование/обновление приложения
|
||||
|
||||
```bash
|
||||
# Если еще не скачно
|
||||
git clone <ваш-репозиторий> new_lottery_bot
|
||||
cd new_lottery_bot
|
||||
|
||||
# Или если уже есть, обновить
|
||||
cd new_lottery_bot
|
||||
git pull origin main
|
||||
```
|
||||
|
||||
### 4. Конфигурация приложения
|
||||
|
||||
#### 4.1 Создайте .env файл
|
||||
|
||||
```bash
|
||||
cat > .env << 'EOL'
|
||||
BOT_TOKEN=your_bot_token
|
||||
DATABASE_URL=postgresql://trevor:password@localhost:5432/lottery_bot
|
||||
ADMIN_IDS=123456789
|
||||
LOG_LEVEL=INFO
|
||||
EOL
|
||||
```
|
||||
|
||||
#### 4.2 Проверьте содержимое .env
|
||||
|
||||
```bash
|
||||
cat .env
|
||||
```
|
||||
|
||||
### 5. Запуск развертывания
|
||||
|
||||
```bash
|
||||
# Сделайте скрипт исполняемым
|
||||
chmod +x scripts/deploy_server.sh
|
||||
|
||||
# Запустите скрипт
|
||||
./scripts/deploy_server.sh
|
||||
```
|
||||
|
||||
### 6. Запуск бота
|
||||
|
||||
#### Вариант 1: Директный запуск (тестирование)
|
||||
|
||||
```bash
|
||||
source venv/bin/activate
|
||||
python3 main.py
|
||||
```
|
||||
|
||||
#### Вариант 2: Фоновый запуск (screen)
|
||||
|
||||
```bash
|
||||
source venv/bin/activate
|
||||
screen -S lottery-bot
|
||||
python3 main.py
|
||||
# Нажмите Ctrl+A, затем D для отключения от session
|
||||
```
|
||||
|
||||
Для повторного подключения:
|
||||
```bash
|
||||
screen -r lottery-bot
|
||||
```
|
||||
|
||||
#### Вариант 3: Systemd сервис (рекомендуется для production)
|
||||
|
||||
Создайте файл `/etc/systemd/system/lottery-bot.service`:
|
||||
|
||||
```bash
|
||||
sudo nano /etc/systemd/system/lottery-bot.service
|
||||
```
|
||||
|
||||
Содержимое:
|
||||
|
||||
```ini
|
||||
[Unit]
|
||||
Description=Lottery Bot Telegram
|
||||
After=network.target postgresql.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=trevor
|
||||
WorkingDirectory=/home/trevor/new_lottery_bot
|
||||
Environment="PATH=/home/trevor/new_lottery_bot/venv/bin"
|
||||
ExecStart=/home/trevor/new_lottery_bot/venv/bin/python3 main.py
|
||||
Restart=on-failure
|
||||
RestartSec=10
|
||||
StandardOutput=append:/home/trevor/new_lottery_bot/logs/bot.log
|
||||
StandardError=append:/home/trevor/new_lottery_bot/logs/bot.log
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
Запустите сервис:
|
||||
|
||||
```bash
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable lottery-bot
|
||||
sudo systemctl start lottery-bot
|
||||
|
||||
# Проверьте статус
|
||||
sudo systemctl status lottery-bot
|
||||
|
||||
# Просмотр логов
|
||||
sudo journalctl -u lottery-bot -f
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔍 Проверка и диагностика
|
||||
|
||||
### Проверка подключения к БД
|
||||
|
||||
```bash
|
||||
source venv/bin/activate
|
||||
python3 << 'EOF'
|
||||
from src.core.database import async_session_maker
|
||||
from sqlalchemy import text
|
||||
import asyncio
|
||||
|
||||
async def test():
|
||||
async with async_session_maker() as session:
|
||||
result = await session.execute(text("SELECT 1"))
|
||||
print("✅ БД работает!")
|
||||
|
||||
asyncio.run(test())
|
||||
EOF
|
||||
```
|
||||
|
||||
### Проверка работы бота
|
||||
|
||||
```bash
|
||||
# Отправьте сообщение боту
|
||||
# Если бот отвечает - всё работает!
|
||||
```
|
||||
|
||||
### Просмотр логов
|
||||
|
||||
```bash
|
||||
# Разовый запуск с логами
|
||||
source venv/bin/activate
|
||||
python3 main.py 2>&1 | tee logs/bot.log
|
||||
|
||||
# На фоне (systemd)
|
||||
sudo journalctl -u lottery-bot -n 50 -f
|
||||
```
|
||||
|
||||
### Устранение проблем
|
||||
|
||||
#### Проблема: "ModuleNotFoundError"
|
||||
|
||||
```bash
|
||||
source venv/bin/activate
|
||||
pip3 install -r requirements.txt
|
||||
```
|
||||
|
||||
#### Проблема: "Connection refused" (БД)
|
||||
|
||||
```bash
|
||||
# Проверьте, работает ли PostgreSQL
|
||||
sudo systemctl status postgresql
|
||||
|
||||
# Проверьте переменную DATABASE_URL в .env
|
||||
cat .env | grep DATABASE_URL
|
||||
```
|
||||
|
||||
#### Проблема: "Bot token is invalid"
|
||||
|
||||
```bash
|
||||
# Проверьте токен в .env
|
||||
cat .env | grep BOT_TOKEN
|
||||
|
||||
# Получите новый токен от @BotFather
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📈 Масштабирование и Production
|
||||
|
||||
### Использование Docker (рекомендуется)
|
||||
|
||||
```bash
|
||||
# Убедитесь, что Docker установлен
|
||||
docker --version
|
||||
docker-compose --version
|
||||
|
||||
# Запустите в Docker
|
||||
docker-compose up -d
|
||||
|
||||
# Просмотр логов
|
||||
docker-compose logs -f lottery-bot
|
||||
|
||||
# Остановка
|
||||
docker-compose down
|
||||
```
|
||||
|
||||
### Настройка reverse proxy (Nginx)
|
||||
|
||||
Для API или веб-интерфейса (если добавится):
|
||||
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
server_name your-domain.com;
|
||||
|
||||
location / {
|
||||
proxy_pass http://localhost:8000;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Резервное копирование БД
|
||||
|
||||
```bash
|
||||
# Ежедневное резервное копирование
|
||||
0 3 * * * /home/trevor/new_lottery_bot/scripts/backup_db.sh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🆘 Контакты и помощь
|
||||
|
||||
- **Документация проекта**: `docs/` директория
|
||||
- **Система управления администраторами**: `docs/ADMIN_MANAGEMENT_SYSTEM.md`
|
||||
- **Логи приложения**: `logs/` директория
|
||||
|
||||
---
|
||||
|
||||
## ✅ Чек-лист развертывания
|
||||
|
||||
- [ ] Python 3 установлен
|
||||
- [ ] PostgreSQL установлен и работает
|
||||
- [ ] БД `lottery_bot` создана
|
||||
- [ ] Пользователь `trevor` создан с правами
|
||||
- [ ] Проект клонирован/обновлен
|
||||
- [ ] Файл `.env` создан с корректными данными
|
||||
- [ ] Скрипт `deploy_server.sh` запущен успешно
|
||||
- [ ] Миграции БД завершены
|
||||
- [ ] Бот запущен и отвечает на сообщения
|
||||
- [ ] Логирование работает
|
||||
|
||||
После завершения всех пунктов - приложение готово к использованию! 🎉
|
||||
Reference in New Issue
Block a user