/
tsps
/
core
Обзор
Документация
Войти
/
tsps
/
core
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
master
scripts/create_bot_admin.py
79 строк
2 KB
Василий Петров
Создание бота-админа
07 мар 2026, 12:35
07 мар 2026, 12:35
7c399f4
Код
Авторство
О чём код?
#!/usr/bin/env python3 """ Скрипт создания/обновления системного админа-бота для автоматических задач Идемпотентен: безопасен для повторных запусков """ import sys import os from pathlib import Path # Добавляем корень проекта в PYTHONPATH root = Path(__file__).parent.parent sys.path.insert(0, str(root)) from app.database import SessionLocal from app.models.admin import Admin BOT_EMAIL = "bot@system.internal" BOT_FIRST_NAME = "Админ" BOT_LAST_NAME = "Бот" def get_bot_password() -> str: """Получает пароль из окружения или запрашивает вручную с подтверждением.""" password = os.getenv("BOT_ADMIN_PASSWORD") if password: return password print("Переменная окружения BOT_ADMIN_PASSWORD не задана.") while True: pwd1 = input("Введите пароль для бота: ").strip() pwd2 = input("Подтвердите пароль: ").strip() if pwd1 != pwd2: print("Пароли не совпадают") continue return pwd1 def main(): print("Создание/обновление админа-бота...") db = SessionLocal() try: bot = db.query(Admin).filter(Admin.email == BOT_EMAIL).first() if bot: print(f"Бот уже существует: {bot}") update = input("Обновить пароль? (y/n): ").strip().lower() if update == "y": password = get_bot_password() bot.set_password(password) db.commit() print("Пароль бота обновлён") else: print("Ничего не изменено") else: password = get_bot_password() bot = Admin( email=BOT_EMAIL, first_name=BOT_FIRST_NAME, last_name=BOT_LAST_NAME, ) bot.set_password(password) db.add(bot) db.commit() db.refresh(bot) print(f"Бот создан: {bot}") except Exception as e: db.rollback() print(f"Ошибка: {e}") sys.exit(1) finally: db.close() print("Сессия БД закрыта") if __name__ == "__main__": main()