✅ Регистрация и верификация жильцов ✅ Рейтинг активности (уровни) ✅ Детект шпионов (Score 0-100) ✅ Анти-мат система (3 предупреждения → бан) ✅ Админ-панель с рассылкой ✅ Учёт квартир (несколько жильцов) ✅ Телефоны экстренных служб и мастеров ✅ Еженедельный экспорт JSON ✅ Прокси (socks5) для обхода РКН Бекап: backups/versions/v1.0_mvp_2026-02-26/ Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
6 KiB
6 KiB
🚦 Управление ботом — полная инструкция
📋 Скрипты управления
В папке /home/matrixhasyou/domovoy_bot/ есть 3 скрипта:
| Скрипт | Описание |
|---|---|
./run.sh |
Умный запуск — проверяет на дубликаты, спрашивает что делать |
./start.sh |
Жёсткий запуск — убивает старый процесс, запускает новый |
./stop.sh |
Остановка — корректно останавливает бота |
🎯 В чём была проблема?
Сценарий "Как ты создал двух ботов":
- Ты запустил
./run.sh→ бот запустился (PID 1) - Ты не закрыл терминал, открыл новое окно
- Запустил
./run.shснова → создался второй процесс (PID 2) - Telegram получал запросы от двух ботов одновременно
- Ошибка:
Conflict: terminated by other getUpdates request
Почему так произошло?
run.sh запускал бота в foreground (на переднем плане):
python main.py # Работает пока терминал открыт
Если открыть второй терминал и запустить снова — создаётся второй процесс!
✅ Как теперь (исправлено)
./run.sh — умный запуск:
./run.sh
Что делает:
- Проверяет — запущен ли бот
- Если запущен — спрашивает: остановить или выйти
- Запускает в фоне (nohup)
- Показывает PID и логи
Пример:
⚠️ Бот уже запущен (PID: 12345)!
Выберите действие:
1) Остановить и перезапустить бота
2) Выйти (бот продолжит работать)
Ваш выбор (1/2):
./start.sh — жёсткий запуск:
./start.sh
Что делает:
- Убивает все процессы бота (pkill -9)
- Запускает заново в фоне
- Показывает логи
Используй когда:
- Бот "заглючил"
- Не знаешь сколько процессов запущено
- Хочешь просто перезапустить
./stop.sh — остановка:
./stop.sh
Что делает:
- Находит все процессы бота
- Корректно останавливает
- Если не получается — убивает силой
🧪 Проверка статуса
Узнать запущен ли бот:
pgrep -f "python.*main.py"
Если вернёт число (PID) — бот работает.
Посмотреть логи:
cd /home/matrixhasyou/domovoy_bot
tail -f logs/bot.log
Посмотреть все процессы:
ps aux | grep "python.*main" | grep -v grep
📊 Типовые сценарии
1️⃣ Первый запуск:
cd /home/matrixhasyou/domovoy_bot
./run.sh
2️⃣ Перезапуск после изменений:
./start.sh
3️⃣ Остановка:
./stop.sh
4️⃣ Проверка работы:
tail -f logs/bot.log
🐛 Если что-то пошло не так
"Бот не отвечает"
-
Проверь процессы:
pgrep -f "python.*main.py" -
Если пусто — бот не запущен:
./run.sh -
Если есть PID — смотри логи:
tail -f logs/bot.log
"Ошибка Conflict: terminated by other getUpdates"
Значит: Запущено два или больше процессов бота.
Решение:
# Остановить всё
./stop.sh
# Запустить заново
./start.sh
"Бот завис"
Решение:
# Убить силой
pkill -9 -f "python.*main.py"
# Запустить
./start.sh
💡 Почему теперь два бота не запустятся?
В run.sh:
EXISTING_PID=$(pgrep -f "python.*main.py")
if [ -n "$EXISTING_PID" ]; then
# Бот уже запущен!
# Спрашиваем что делать
fi
В start.sh:
# Убиваем ВСЕ процессы перед запуском
pkill -9 -f "python.*main.py"
Запуск в фоне:
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" |
Убить силой |
✅ Золотое правило
Всегда используй скрипты!
❌ НЕ запускай напрямую:
python main.py # Плохо!
✅ Используй скрипты:
./run.sh # Хорошо!
./start.sh # Тоже хорошо!
Теперь два бота никогда не запустятся одновременно! 🎉