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

60 lines
2.1 KiB
Python
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.

"""
Миграция v1.2: создать таблицу spam_warnings для предупреждений о спаме
"""
import sqlite3
import asyncio
DB_PATH = 'database/domovoy.db'
async def migrate():
"""Создать таблицу spam_warnings"""
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
# Проверяем, есть ли уже таблица spam_warnings
cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='spam_warnings'")
existing = cursor.fetchone()
if existing:
print(" Таблица spam_warnings уже существует")
else:
print(" Создаём таблицу spam_warnings...")
cursor.execute("""
CREATE TABLE spam_warnings (
warning_id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id BIGINT NOT NULL,
message_text TEXT,
reason TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
is_active BOOLEAN DEFAULT 1,
FOREIGN KEY (user_id) REFERENCES users(user_id)
)
""")
# Создаём индексы
cursor.execute("CREATE INDEX ix_spam_warnings_user ON spam_warnings(user_id)")
cursor.execute("CREATE INDEX ix_spam_warnings_active ON spam_warnings(is_active)")
print("✅ Таблица spam_warnings создана")
print("✅ Индексы созданы")
# Проверяем есть ли поле spam_warning_count в users
cursor.execute("PRAGMA table_info(users)")
columns = [col[1] for col in cursor.fetchall()]
if 'spam_warning_count' not in columns:
print(" Добавляем поле spam_warning_count...")
cursor.execute("ALTER TABLE users ADD COLUMN spam_warning_count INTEGER DEFAULT 0")
print("✅ Поле spam_warning_count добавлено")
else:
print(" Поле spam_warning_count уже существует")
conn.commit()
conn.close()
print("✅ Миграция v1.2 завершена!")
if __name__ == '__main__':
asyncio.run(migrate())