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

6 KiB
Raw Permalink Blame History

🚦 Управление ботом — полная инструкция

📋 Скрипты управления

В папке /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 (на переднем плане):

python main.py  # Работает пока терминал открыт

Если открыть второй терминал и запустить снова — создаётся второй процесс!


Как теперь (исправлено)

./run.sh — умный запуск:

./run.sh

Что делает:

  1. Проверяет — запущен ли бот
  2. Если запущен — спрашивает: остановить или выйти
  3. Запускает в фоне (nohup)
  4. Показывает PID и логи

Пример:

⚠️  Бот уже запущен (PID: 12345)!

Выберите действие:
  1) Остановить и перезапустить бота
  2) Выйти (бот продолжит работать)

Ваш выбор (1/2):

./start.sh — жёсткий запуск:

./start.sh

Что делает:

  1. Убивает все процессы бота (pkill -9)
  2. Запускает заново в фоне
  3. Показывает логи

Используй когда:

  • Бот "заглючил"
  • Не знаешь сколько процессов запущено
  • Хочешь просто перезапустить

./stop.sh — остановка:

./stop.sh

Что делает:

  1. Находит все процессы бота
  2. Корректно останавливает
  3. Если не получается — убивает силой

🧪 Проверка статуса

Узнать запущен ли бот:

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

🐛 Если что-то пошло не так

"Бот не отвечает"

  1. Проверь процессы:

    pgrep -f "python.*main.py"
    
  2. Если пусто — бот не запущен:

    ./run.sh
    
  3. Если есть 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  # Тоже хорошо!

Теперь два бота никогда не запустятся одновременно! 🎉