284 lines
16 KiB
Python
284 lines
16 KiB
Python
# SQLite3/bd_func/bd_user_create.py
|
||
# Создание базы данных
|
||
|
||
import sqlite3
|
||
from ProjectsFiles import BotVar
|
||
|
||
# Настройка экспорта в модули
|
||
__all__ = ("create_user_db",)
|
||
|
||
|
||
# Функция создания базы данных
|
||
async def create_user_db(bd_name: str = BotVar.bd_names):
|
||
with sqlite3.connect(bd_name) as db:
|
||
cursor = db.cursor()
|
||
|
||
# Таблица пользователей
|
||
cursor.execute('''
|
||
CREATE TABLE IF NOT EXISTS users (
|
||
user_id INTEGER PRIMARY KEY,
|
||
tg_id INTEGER NOT NULL UNIQUE,
|
||
username TEXT,
|
||
first_name TEXT,
|
||
last_name TEXT,
|
||
role TEXT DEFAULT NULL,
|
||
status TEXT DEFAULT 'active',
|
||
user TEXT DEFAULT 'user'
|
||
);''')
|
||
|
||
# Таблица сообщений пользователей
|
||
cursor.execute('''
|
||
CREATE TABLE IF NOT EXISTS user_messages (
|
||
user_id INTEGER PRIMARY KEY, -- Уникальный ключ
|
||
last_message TEXT,
|
||
last_message_id INTEGER,
|
||
last_message_time TEXT,
|
||
messages_per_day INTEGER DEFAULT 0,
|
||
messages_per_week INTEGER DEFAULT 0,
|
||
messages_per_month INTEGER DEFAULT 0,
|
||
total_messages INTEGER DEFAULT 0,
|
||
FOREIGN KEY (user_id) REFERENCES users (user_id) ON DELETE CASCADE
|
||
);''')
|
||
|
||
# Таблица персонажей
|
||
cursor.execute('''
|
||
CREATE TABLE IF NOT EXISTS characters (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
region TEXT NOT NULL,
|
||
name TEXT NOT NULL,
|
||
status TEXT DEFAULT 'Свободно',
|
||
user_id INTEGER DEFAULT NULL,
|
||
comment TEXT DEFAULT '',
|
||
FOREIGN KEY (user_id) REFERENCES users (user_id) ON DELETE SET NULL
|
||
);''')
|
||
|
||
# Таблица персонажей Хонкай
|
||
cursor.execute('''
|
||
CREATE TABLE IF NOT EXISTS characters_hsr (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
region TEXT NOT NULL,
|
||
name TEXT NOT NULL,
|
||
status TEXT DEFAULT 'Свободно',
|
||
user_id INTEGER DEFAULT NULL,
|
||
comment TEXT DEFAULT '',
|
||
FOREIGN KEY (user_id) REFERENCES users (user_id) ON DELETE SET NULL
|
||
);''')
|
||
|
||
characters_genshin = [
|
||
# Мондштадт
|
||
("Мондштадт", "Венти", "Свободно", ""),
|
||
("Мондштадт", "Кэйа", "Свободно", ""),
|
||
("Мондштадт", "Альбедо", "Свободно", ""),
|
||
("Мондштадт", "Дилюк", "Свободно", ""),
|
||
("Мондштадт", "Мика", "Свободно", ""),
|
||
("Мондштадт", "Беннет", "Свободно", ""),
|
||
("Мондштадт", "Рэйзор", "Свободно", ""),
|
||
("Мондштадт", "Эола", "Свободно", ""),
|
||
("Мондштадт", "Мона", "Свободно", ""),
|
||
("Мондштадт", "Джинн", "Свободно", ""),
|
||
("Мондштадт", "Диона", "Свободно", ""),
|
||
("Мондштадт", "Лиза", "Свободно", ""),
|
||
("Мондштадт", "Ноэлль", "Свободно", ""),
|
||
("Мондштадт", "Сахароза", "Свободно", ""),
|
||
("Мондштадт", "Розария", "Свободно", ""),
|
||
("Мондштадт", "Эмбер", "Свободно", ""),
|
||
("Мондштадт", "Фишль", "Свободно", ""),
|
||
("Мондштадт", "Барбара", "Свободно", ""),
|
||
|
||
# Ли Юэ
|
||
("Ли Юэ", "Чжун Ли", "Свободно", ""),
|
||
("Ли Юэ", "Сяо", "Свободно", ""),
|
||
("Ли Юэ", "Син Цю", "Свободно", ""),
|
||
("Ли Юэ", "Чун Юнь", "Свободно", ""),
|
||
("Ли Юэ", "Бай Чжу", "Свободно", ""),
|
||
("Ли Юэ", "Е Лань", "Свободно", ""),
|
||
("Ли Юэ", "Шень Хэ", "Свободно", ""),
|
||
("Ли Юэ", "Гань Юй", "Свободно", ""),
|
||
("Ли Юэ", "Ци Ци", "Свободно", ""),
|
||
("Ли Юэ", "Кэ Цин", "Свободно", ""),
|
||
("Ли Юэ", "Янь Фэй", "Свободно", ""),
|
||
("Ли Юэ", "Нин Гуан", "Свободно", ""),
|
||
("Ли Юэ", "Бэй Доу", "Свободно", ""),
|
||
("Ли Юэ", "Яо Яо", "Свободно", ""),
|
||
("Ли Юэ", "Ка Мин", "Свободно", ""),
|
||
("Ли Юэ", "Сянь Юнь", "Свободно", ""),
|
||
("Ли Юэ", "Юнь Цзинь", "Свободно", ""),
|
||
("Ли Юэ", "Ху Тао", "Свободно", ""),
|
||
("Ли Юэ", "Лань Янь", "Свободно", ""),
|
||
|
||
# Инадзума
|
||
("Инадзума", "Итто", "Свободно", ""),
|
||
("Инадзума", "Горо", "Свободно", ""),
|
||
("Инадзума", "Аято", "Свободно", ""),
|
||
("Инадзума", "Хэйдзо", "Свободно", ""),
|
||
("Инадзума", "Тома", "Свободно", ""),
|
||
("Инадзума", "Кадзуха", "Свободно", ""),
|
||
("Инадзума", "Кирара", "Свободно", ""),
|
||
("Инадзума", "Кудзё Сара", "Свободно", ""),
|
||
("Инадзума", "Ёимия", "Свободно", ""),
|
||
("Инадзума", "Аяка", "Свободно", ""),
|
||
("Инадзума", "Сангономия Кокоми", "Свободно", ""),
|
||
("Инадзума", "Яэ Мико", "Свободно", ""),
|
||
("Инадзума", "Райдэн Эи", "Свободно", ""),
|
||
("Инадзума", "Саю", "Свободно", ""),
|
||
("Инадзума", "Куки Синобу", "Свободно", ""),
|
||
("Инадзума", "Мидзуки", "Свободно", ""),
|
||
|
||
# Сумеру
|
||
("Сумеру", "Аль-Хайтам", "Свободно", ""),
|
||
("Сумеру", "Кавех", "Свободно", ""),
|
||
("Сумеру", "Сайно", "Свободно", ""),
|
||
("Сумеру", "Тигнари", "Свободно", ""),
|
||
("Сумеру", "Сетос", "Свободно", ""),
|
||
("Сумеру", "Нилу", "Свободно", ""),
|
||
("Сумеру", "Нахида", "Свободно", ""),
|
||
("Сумеру", "Лайла", "Свободно", ""),
|
||
("Сумеру", "Кандакия", "Свободно", ""),
|
||
("Сумеру", "Дори", "Свободно", ""),
|
||
("Сумеру", "Дэхья", "Свободно", ""),
|
||
("Сумеру", "Коллеи", "Свободно", ""),
|
||
("Сумеру", "Фарузан", "Свободно", ""),
|
||
|
||
# Фонтейн
|
||
("Фонтейн", "Лини", "Свободно", ""),
|
||
("Фонтейн", "Ризли", "Свободно", ""),
|
||
("Фонтейн", "Невиллет", "Свободно", ""),
|
||
("Фонтейн", "Фремине", "Свободно", ""),
|
||
("Фонтейн", "Линетт", "Свободно", ""),
|
||
("Фонтейн", "Эмилия", "Свободно", ""),
|
||
("Фонтейн", "Клоринда", "Свободно", ""),
|
||
("Фонтейн", "Навия", "Свободно", ""),
|
||
("Фонтейн", "Шарлотта", "Свободно", ""),
|
||
("Фонтейн", "Фурина", "Свободно", ""),
|
||
("Фонтейн", "Тиори", "Свободно", ""),
|
||
("Фонтейн", "Сиджвин", "Свободно", ""),
|
||
|
||
# Натлан
|
||
("Натлан", "Кинич", "Свободно", ""),
|
||
("Натлан", "Оророн", "Свободно", ""),
|
||
("Натлан", "Муалани", "Свободно", ""),
|
||
("Натлан", "Ситлали", "Свободно", ""),
|
||
("Натлан", "Шилонен", "Свободно", ""),
|
||
("Натлан", "Иансан", "Свободно", ""),
|
||
("Натлан", "Мавуика", "Свободно", ""),
|
||
("Натлан", "Часка", "Свободно", ""),
|
||
|
||
# Фатуи
|
||
("Фатуи", "Тарталья", "Свободно", ""),
|
||
("Фатуи", "Панталоне", "Свободно", ""),
|
||
("Фатуи", "Дотторе", "Свободно", ""),
|
||
("Фатуи", "Капитано", "Свободно", ""),
|
||
("Фатуи", "Пьеро", "Свободно", ""),
|
||
("Фатуи", "Пульничелла", "Свободно", ""),
|
||
("Фатуи", "Синьора", "Свободно", ""),
|
||
("Фатуи", "Арлекино", "Свободно", ""),
|
||
("Фатуи", "Коломбина", "Свободно", ""),
|
||
("Фатуи", "Царица", "Свободно", ""),
|
||
("Фатуи", "Странник", "Свободно", ""),
|
||
|
||
# Иные персонажи
|
||
("Иные персонажи", "Итэр", "Свободно", ""),
|
||
("Иные персонажи", "Люмин", "Свободно", ""),
|
||
("Иные персонажи", "Элой", "Свободно", ""),
|
||
("Иные персонажи", "Паймон", "Свободно", ""),
|
||
("Иные персонажи", "Дайнслейф", "Свободно", ""),
|
||
]
|
||
|
||
characters_hsr = [
|
||
# Ярило-6
|
||
("Ярило-6", "Броня", "Свободно", ""),
|
||
("Ярило-6", "Гепард", "Свободно", ""),
|
||
("Ярило-6", "Зеле", "Свободно", ""),
|
||
("Ярило-6", "Клара", "Свободно", ""),
|
||
("Ярило-6", "Лука", "Свободно", ""),
|
||
("Ярило-6", "Наташа", "Свободно", ""),
|
||
("Ярило-6", "Пела", "Свободно", ""),
|
||
("Ярило-6", "Рысь", "Свободно", ""),
|
||
("Ярило-6", "Сампо", "Свободно", ""),
|
||
("Ярило-6", "Сервал", "Свободно", ""),
|
||
("Ярило-6", "Хук", "Свободно", ""),
|
||
|
||
# Станция «Герта»
|
||
("Станция «Герта»", "Арлан", "Свободно", ""),
|
||
("Станция «Герта»", "Аста", "Свободно", ""),
|
||
("Станция «Герта»", "Великая Герта", "Свободно", ""),
|
||
("Станция «Герта»", "Кукла «Герта»", "Свободно", ""),
|
||
("Станция «Герта»", "Жуань Мэй", "Свободно", ""),
|
||
|
||
# Пенакония
|
||
("Пенакония", "Авантюрин", "Свободно", ""),
|
||
("Пенакония", "Ахерон", "Свободно", ""),
|
||
("Пенакония", "Галлахер", "Свободно", ""),
|
||
("Пенакония", "Зарянка", "Свободно", ""),
|
||
("Пенакония", "Миша", "Свободно", ""),
|
||
("Пенакония", "Мистер Река", "Свободно", ""),
|
||
("Пенакония", "Раппа", "Свободно", ""),
|
||
("Пенакония", "Чёрный Лебедь", "Свободно", ""),
|
||
("Пенакония", "Яшма", "Свободно", ""),
|
||
("Пенакония", "Воскресенье", "Свободно", ""),
|
||
|
||
# Звёздный Экспресс
|
||
("Звёздный Экспресс", "Вельт", "Свободно", ""),
|
||
("Звёздный Экспресс", "Келус", "Свободно", ""),
|
||
("Звёздный Экспресс", "Стелла", "Свободно", ""),
|
||
("Звёздный Экспресс", "Дань Хэн", "Свободно", ""),
|
||
("Звёздный Экспресс", "Март 7", "Свободно", ""),
|
||
("Звёздный Экспресс", "Химеко", "Свободно", ""),
|
||
("Звёздный Экспресс", "Пом Пом", "Свободно", ""),
|
||
|
||
# Галактика
|
||
("Галактика", "Аргенти", "Свободно", ""),
|
||
("Галактика", "Блэйд", "Свободно", ""),
|
||
("Галактика", "Бутхилл", "Свободно", ""),
|
||
("Галактика", "Доктор Рацио", "Свободно", ""),
|
||
("Галактика", "Кафка", "Свободно", ""),
|
||
("Галактика", "Светлячок", "Свободно", ""),
|
||
("Галактика", "Искорка", "Свободно", ""),
|
||
("Галактика", "Серебряный Волк", "Свободно", ""),
|
||
("Галактика", "Топаз", "Свободно", ""),
|
||
|
||
# Амфореус
|
||
("Амфореус", "Аглая", "Свободно", ""),
|
||
("Амфореус", "Мидей", "Свободно", ""),
|
||
("Амфореус", "Трибби", "Свободно", ""),
|
||
|
||
# Альянс Сяньчжоу
|
||
("Альянс Сяньчжоу", "Байлу", "Свободно", ""),
|
||
("Альянс Сяньчжоу", "Гуйнайфей", "Свободно", ""),
|
||
("Альянс Сяньчжоу", "Линша", "Свободно", ""),
|
||
("Альянс Сяньчжоу", "Лоча", "Свободно", ""),
|
||
("Альянс Сяньчжоу", "Моцзэ", "Свободно", ""),
|
||
("Альянс Сяньчжоу", "Пожиратель Луны", "Свободно", ""),
|
||
("Альянс Сяньчжоу", "Сушан", "Свободно", ""),
|
||
("Альянс Сяньчжоу", "Сюзи", "Свободно", ""),
|
||
("Альянс Сяньчжоу", "Фуга", "Свободно", ""),
|
||
("Альянс Сяньчжоу", "Фэйсяо", "Свободно", ""),
|
||
("Альянс Сяньчжоу", "Ханья", "Свободно", ""),
|
||
("Альянс Сяньчжоу", "Хохо", "Свободно", ""),
|
||
("Альянс Сяньчжоу", "Цзин Юань", "Свободно", ""),
|
||
("Альянс Сяньчжоу", "Цзиннлю", "Свободно", ""),
|
||
("Альянс Сяньчжоу", "Цзяоцю", "Свободно", ""),
|
||
("Альянс Сяньчжоу", "Цинцюэ", "Свободно", ""),
|
||
("Альянс Сяньчжоу", "Юйкун", "Свободно", ""),
|
||
("Альянс Сяньчжоу", "Юньли", "Свободно", ""),
|
||
("Альянс Сяньчжоу", "Яньцин", "Свободно", ""),
|
||
]
|
||
|
||
# Проверяем, пуста ли таблица characters
|
||
cursor.execute("SELECT COUNT(*) FROM characters;")
|
||
if cursor.fetchone()[0] == 0:
|
||
cursor.executemany('''
|
||
INSERT INTO characters (region, name, status, comment)
|
||
VALUES (?, ?, ?, ?);
|
||
''', characters_genshin)
|
||
|
||
# Проверяем, пуста ли таблица characters_hsr
|
||
cursor.execute("SELECT COUNT(*) FROM characters_hsr;")
|
||
if cursor.fetchone()[0] == 0:
|
||
cursor.executemany('''
|
||
INSERT INTO characters_hsr (region, name, status, comment)
|
||
VALUES (?, ?, ?, ?);
|
||
''', characters_hsr)
|
||
|
||
db.commit()
|