domovoy_bot/УПРАВЛЕНИЕ.md
Admin ba4676b0af v1.0 MVP - Инициализация проекта 🏠
 Регистрация и верификация жильцов
 Рейтинг активности (уровни)
 Детект шпионов (Score 0-100)
 Анти-мат система (3 предупреждения → бан)
 Админ-панель с рассылкой
 Учёт квартир (несколько жильцов)
 Телефоны экстренных служб и мастеров
 Еженедельный экспорт JSON
 Прокси (socks5) для обхода РКН

Бекап: backups/versions/v1.0_mvp_2026-02-26/

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-27 10:54:16 +00:00

246 lines
6 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🚦 Управление ботом — полная инструкция
## 📋 Скрипты управления
В папке `/home/matrixhasyou/domovoy_bot/` есть 3 скрипта:
| Скрипт | Описание |
|--------|----------|
| `./run.sh` | **Умный запуск** — проверяет на дубликаты, спрашивает что делать |
| `./start.sh` | **Жёсткий запуск** — убивает старый процесс, запускает новый |
| `./stop.sh` | **Остановка** — корректно останавливает бота |
---
## 🎯 В чём была проблема?
### Сценарий "Как ты создал двух ботов":
1. Ты запустил `./run.sh` → бот запустился (PID 1)
2. Ты **не закрыл терминал**, открыл новое окно
3. Запустил `./run.sh` снова → создался **второй процесс** (PID 2)
4. Telegram получал запросы от **двух ботов одновременно**
5. Ошибка: `Conflict: terminated by other getUpdates request`
### Почему так произошло?
**`run.sh` запускал бота в foreground** (на переднем плане):
```bash
python main.py # Работает пока терминал открыт
```
Если открыть **второй терминал** и запустить снова — создаётся второй процесс!
---
## ✅ Как теперь (исправлено)
### `./run.sh` — умный запуск:
```bash
./run.sh
```
**Что делает:**
1. Проверяет — запущен ли бот
2. Если запущен — **спрашивает**: остановить или выйти
3. Запускает в **фоне** (nohup)
4. Показывает PID и логи
**Пример:**
```
⚠️ Бот уже запущен (PID: 12345)!
Выберите действие:
1) Остановить и перезапустить бота
2) Выйти (бот продолжит работать)
Ваш выбор (1/2):
```
---
### `./start.sh` — жёсткий запуск:
```bash
./start.sh
```
**Что делает:**
1. **Убивает все процессы бота** (pkill -9)
2. Запускает заново в фоне
3. Показывает логи
**Используй когда:**
- Бот "заглючил"
- Не знаешь сколько процессов запущено
- Хочешь просто перезапустить
---
### `./stop.sh` — остановка:
```bash
./stop.sh
```
**Что делает:**
1. Находит все процессы бота
2. Корректно останавливает
3. Если не получается — убивает силой
---
## 🧪 Проверка статуса
### Узнать запущен ли бот:
```bash
pgrep -f "python.*main.py"
```
Если вернёт число (PID) — бот работает.
### Посмотреть логи:
```bash
cd /home/matrixhasyou/domovoy_bot
tail -f logs/bot.log
```
### Посмотреть все процессы:
```bash
ps aux | grep "python.*main" | grep -v grep
```
---
## 📊 Типовые сценарии
### 1⃣ Первый запуск:
```bash
cd /home/matrixhasyou/domovoy_bot
./run.sh
```
### 2⃣ Перезапуск после изменений:
```bash
./start.sh
```
### 3⃣ Остановка:
```bash
./stop.sh
```
### 4⃣ Проверка работы:
```bash
tail -f logs/bot.log
```
---
## 🐛 Если что-то пошло не так
### "Бот не отвечает"
1. Проверь процессы:
```bash
pgrep -f "python.*main.py"
```
2. Если пусто — бот не запущен:
```bash
./run.sh
```
3. Если есть PID — смотри логи:
```bash
tail -f logs/bot.log
```
### "Ошибка Conflict: terminated by other getUpdates"
**Значит:** Запущено **два или больше процессов** бота.
**Решение:**
```bash
# Остановить всё
./stop.sh
# Запустить заново
./start.sh
```
### "Бот завис"
**Решение:**
```bash
# Убить силой
pkill -9 -f "python.*main.py"
# Запустить
./start.sh
```
---
## 💡 Почему теперь два бота не запустятся?
### В `run.sh`:
```bash
EXISTING_PID=$(pgrep -f "python.*main.py")
if [ -n "$EXISTING_PID" ]; then
# Бот уже запущен!
# Спрашиваем что делать
fi
```
### В `start.sh`:
```bash
# Убиваем ВСЕ процессы перед запуском
pkill -9 -f "python.*main.py"
```
### Запуск в фоне:
```bash
nohup python main.py >> logs/bot.log 2>&1 &
```
**`nohup`** — работает даже после закрытия терминала
**`&`** — запускает в фоне
**`>> logs/bot.log`** — пишет логи в файл
---
## 📚 Команды для управления
| Команда | Что делает |
|---------|------------|
| `./run.sh` | Умный запуск (спрашивает) |
| `./start.sh` | Жёсткий запуск (убивает старый) |
| `./stop.sh` | Остановка |
| `pgrep -f "python.*main.py"` | Проверка запущен ли |
| `tail -f logs/bot.log` | Смотреть логи |
| `pkill -f "python.*main.py"` | Остановить вручную |
| `pkill -9 -f "python.*main.py"` | Убить силой |
---
## ✅ Золотое правило
**Всегда используй скрипты!**
**НЕ запускай напрямую:**
```bash
python main.py # Плохо!
```
**Используй скрипты:**
```bash
./run.sh # Хорошо!
./start.sh # Тоже хорошо!
```
---
**Теперь два бота никогда не запустятся одновременно!** 🎉