domovoy_bot/database/init_db.py
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

83 lines
4.1 KiB
Python
Raw 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.

#!/usr/bin/env python3
"""
Скрипт инициализации базы данных
Запускается один раз при первом запуске бота
"""
import asyncio
import sys
sys.path.insert(0, '/home/matrixhasyou/domovoy_bot')
from database.db import init_db, AsyncSessionLocal
from database.models import User, Service, Announcement
from sqlalchemy import select
from datetime import datetime
async def fill_initial_data():
"""Заполнение начальными данными"""
async with AsyncSessionLocal() as session:
# Проверяем, есть ли уже данные
stmt = select(Service)
result = await session.execute(stmt)
services = list(result.scalars().all())
if services:
print(' Данные уже есть в БД, пропускаем заполнение')
return
# Телефоны экстренных служб (заглушки, заменишь на свои)
emergency_services = [
{'name': 'Скорая помощь', 'category': 'emergency', 'phone': '103', 'description': 'Экстренная медицинская помощь'},
{'name': 'Пожарная охрана', 'category': 'emergency', 'phone': '101', 'description': 'Пожарная служба'},
{'name': 'Полиция', 'category': 'emergency', 'phone': '102', 'description': 'Экстренная служба полиции'},
{'name': 'Газовая служба', 'category': 'emergency', 'phone': '104', 'description': 'Аварийная газовая служба'},
{'name': 'Единая служба спасения', 'category': 'emergency', 'phone': '112', 'description': 'Работает с мобильного'},
{'name': 'Диспетчер УК', 'category': 'utility', 'phone': '+7 (XXX) XXX-XX-XX', 'description': 'Круглосуточно', 'verified_by_admin': True},
{'name': 'Аварийная водоканал', 'category': 'utility', 'phone': '+7 (XXX) XXX-XX-XX', 'description': 'Протечки, засоры'},
{'name': 'Аварийная электросети', 'category': 'utility', 'phone': '+7 (XXX) XXX-XX-XX', 'description': 'Проблемы с электричеством'},
{'name': 'Участковый', 'category': 'police', 'phone': '+7 (XXX) XXX-XX-XX', 'description': 'Приёмные часы: Вт, Чт 18:00-20:00'},
]
for svc_data in emergency_services:
service = Service(**svc_data)
session.add(service)
# Приветственное объявление
announcement = Announcement(
title='🏠 Добро пожаловать в чат дома!',
text='''Уважаемые жильцы!
Этот бот создан для помощи всем жителям нашего дома.
📞 Что он умеет:
• Показать телефоны экстренных служб
• Вызвать сантехника/электрика
• Сообщить о проблемах
• Получить юридическую консультацию
❗ Важно: Для полного доступа пройдите верификацию — укажите номер квартиры.
С уважением, администрация чата''',
category='general',
is_pinned=True
)
session.add(announcement)
await session.commit()
print('✅ Начальные данные добавлены')
async def main():
print('🔄 Инициализация базы данных...')
await init_db()
print('✅ Таблицы созданы')
print('🔄 Заполнение начальными данными...')
await fill_initial_data()
print('\n✅ База данных готова к работе!')
print('📍 Путь: ./database/domovoy.db')
if __name__ == '__main__':
asyncio.run(main())