mirror of
https://github.com/xuthus83/LittlePaimon.git
synced 2024-12-16 13:40:53 +08:00
🐛 修复与其他使用了Tortoise-orm
的插件冲突问题
This commit is contained in:
parent
b1c574d451
commit
b68ba1ff80
@ -1,54 +1,89 @@
|
||||
from pathlib import Path
|
||||
from typing import List, Optional, Union
|
||||
|
||||
from tortoise import Tortoise
|
||||
from nonebot.log import logger
|
||||
from LittlePaimon.config import GENSHIN_DB_PATH, SUB_DB_PATH, GENSHIN_VOICE_DB_PATH, MANAGER_DB_PATH, LEARNING_CHAT_DB_PATH
|
||||
|
||||
|
||||
DATABASE = {
|
||||
"connections": {
|
||||
"genshin": {
|
||||
"engine": "tortoise.backends.sqlite",
|
||||
"credentials": {"file_path": GENSHIN_DB_PATH},
|
||||
},
|
||||
"subscription": {
|
||||
"engine": "tortoise.backends.sqlite",
|
||||
"credentials": {"file_path": SUB_DB_PATH},
|
||||
},
|
||||
'genshin_voice': {
|
||||
"engine": "tortoise.backends.sqlite",
|
||||
"credentials": {"file_path": GENSHIN_VOICE_DB_PATH},
|
||||
},
|
||||
'manager': {
|
||||
"engine": "tortoise.backends.sqlite",
|
||||
"credentials": {"file_path": MANAGER_DB_PATH},
|
||||
},
|
||||
'learning_chat': {
|
||||
"engine": "tortoise.backends.sqlite",
|
||||
"credentials": {"file_path": LEARNING_CHAT_DB_PATH},
|
||||
},
|
||||
# DATABASE = {
|
||||
# "connections": {
|
||||
# "genshin": {
|
||||
# "engine": "tortoise.backends.sqlite",
|
||||
# "credentials": {"file_path": GENSHIN_DB_PATH},
|
||||
# },
|
||||
# "subscription": {
|
||||
# "engine": "tortoise.backends.sqlite",
|
||||
# "credentials": {"file_path": SUB_DB_PATH},
|
||||
# },
|
||||
# 'genshin_voice': {
|
||||
# "engine": "tortoise.backends.sqlite",
|
||||
# "credentials": {"file_path": GENSHIN_VOICE_DB_PATH},
|
||||
# },
|
||||
# 'manager': {
|
||||
# "engine": "tortoise.backends.sqlite",
|
||||
# "credentials": {"file_path": MANAGER_DB_PATH},
|
||||
# },
|
||||
# 'learning_chat': {
|
||||
# "engine": "tortoise.backends.sqlite",
|
||||
# "credentials": {"file_path": LEARNING_CHAT_DB_PATH},
|
||||
# },
|
||||
# },
|
||||
# "apps": {
|
||||
# "genshin": {
|
||||
# "models": ['LittlePaimon.database.models.player_info', 'LittlePaimon.database.models.abyss_info', 'LittlePaimon.database.models.character', 'LittlePaimon.database.models.cookie'],
|
||||
# "default_connection": "genshin",
|
||||
# },
|
||||
# "subscription": {
|
||||
# "models": ['LittlePaimon.database.models.subscription'],
|
||||
# "default_connection": "subscription",
|
||||
# },
|
||||
# "genshin_voice": {
|
||||
# "models": ['LittlePaimon.database.models.genshin_voice'],
|
||||
# "default_connection": "genshin_voice",
|
||||
# },
|
||||
# "manager": {
|
||||
# "models": ['LittlePaimon.database.models.manager'],
|
||||
# "default_connection": "manager",
|
||||
# },
|
||||
# "learning_chat": {
|
||||
# "models": ['LittlePaimon.database.models.learning_chat'],
|
||||
# "default_connection": "learning_chat",
|
||||
# }
|
||||
# },
|
||||
# }
|
||||
DATABASE = [
|
||||
{
|
||||
'db_url': f'sqlite://{GENSHIN_DB_PATH}',
|
||||
'models': ['LittlePaimon.database.models.player_info', 'LittlePaimon.database.models.abyss_info', 'LittlePaimon.database.models.character', 'LittlePaimon.database.models.cookie'],
|
||||
},
|
||||
"apps": {
|
||||
"genshin": {
|
||||
"models": ['LittlePaimon.database.models.player_info', 'LittlePaimon.database.models.abyss_info', 'LittlePaimon.database.models.character', 'LittlePaimon.database.models.cookie'],
|
||||
"default_connection": "genshin",
|
||||
},
|
||||
"subscription": {
|
||||
"models": ['LittlePaimon.database.models.subscription'],
|
||||
"default_connection": "subscription",
|
||||
},
|
||||
"genshin_voice": {
|
||||
"models": ['LittlePaimon.database.models.genshin_voice'],
|
||||
"default_connection": "genshin_voice",
|
||||
},
|
||||
"manager": {
|
||||
"models": ['LittlePaimon.database.models.manager'],
|
||||
"default_connection": "manager",
|
||||
},
|
||||
"learning_chat": {
|
||||
"models": ['LittlePaimon.database.models.learning_chat'],
|
||||
"default_connection": "learning_chat",
|
||||
}
|
||||
{
|
||||
'db_url': f'sqlite://{SUB_DB_PATH}',
|
||||
'models': ['LittlePaimon.database.models.subscription'],
|
||||
},
|
||||
}
|
||||
{
|
||||
'db_url': f'sqlite://{GENSHIN_VOICE_DB_PATH}',
|
||||
'models': ['LittlePaimon.database.models.genshin_voice'],
|
||||
},
|
||||
{
|
||||
'db_url': f'sqlite://{MANAGER_DB_PATH}',
|
||||
'models': ['LittlePaimon.database.models.manager'],
|
||||
},
|
||||
{
|
||||
'db_url': f'sqlite://{LEARNING_CHAT_DB_PATH}',
|
||||
'models': ['LittlePaimon.database.models.learning_chat'],
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
def register_database(db_path: Optional[Union[str, Path]], models: List[Union[str, Path]]):
|
||||
"""
|
||||
注册数据库
|
||||
"""
|
||||
DATABASE.append({
|
||||
'db_url': f'sqlite://{db_path}',
|
||||
'models': models,
|
||||
})
|
||||
|
||||
|
||||
async def connect():
|
||||
@ -56,11 +91,15 @@ async def connect():
|
||||
建立数据库连接
|
||||
"""
|
||||
try:
|
||||
await Tortoise.init(DATABASE)
|
||||
await Tortoise.generate_schemas()
|
||||
for db in DATABASE:
|
||||
await Tortoise.init(
|
||||
db_url=db['db_url'],
|
||||
modules={'models': db['models']},
|
||||
)
|
||||
await Tortoise.generate_schemas()
|
||||
logger.opt(colors=True).success("<u><y>[数据库]</y></u><g>连接成功</g>")
|
||||
except Exception as e:
|
||||
logger.opt(colors=True).warning("<u><y>[数据库]</y></u><r>连接失败:{e}</r>")
|
||||
logger.opt(colors=True).warning(f"<u><y>[数据库]</y></u><r>连接失败:{e}</r>")
|
||||
raise e
|
||||
|
||||
|
||||
|
@ -56,8 +56,6 @@ class Config(BaseModel):
|
||||
ssbq_end: int = Field(6, alias='实时便签停止检查结束时间')
|
||||
ssbq_check: int = Field(16, alias='实时便签检查间隔')
|
||||
|
||||
AI_voice_cooldown: int = Field(10, alias='原神语音合成冷却')
|
||||
|
||||
ys_auto_update: int = Field(24, alias='ys自动更新小时')
|
||||
ysa_auto_update: int = Field(24, alias='ysa自动更新小时')
|
||||
ysd_auto_update: int = Field(6, alias='ysd自动更新小时')
|
||||
|
@ -196,7 +196,7 @@ async def _(event: MessageEvent):
|
||||
@pck.handle()
|
||||
async def _(event: MessageEvent, msg: Message = CommandArg()):
|
||||
if msg := msg.extract_plain_text().strip():
|
||||
if await get_bind_game_info(msg):
|
||||
if await get_bind_game_info(msg, True):
|
||||
ck = await PublicCookie.create(cookie=msg)
|
||||
logger.info('原神Cookie', f'{ck.id}号公共cookie', None, '添加成功', True)
|
||||
await pck.finish(f'成功添加{ck.id}号公共cookie', at_sender=True)
|
||||
|
@ -213,14 +213,15 @@ async def get_cookie(user_id: str, uid: str, check: bool = True, own: bool = Fal
|
||||
return None, ''
|
||||
|
||||
|
||||
async def get_bind_game_info(cookie) -> Optional[dict]:
|
||||
async def get_bind_game_info(cookie: str, use_for_public: bool = False) -> Optional[dict]:
|
||||
"""
|
||||
通过cookie,获取米游社绑定的原神游戏信息
|
||||
:param cookie: cookie
|
||||
:param use_for_public: 是否用于公共cookie
|
||||
:return: 原神信息
|
||||
"""
|
||||
if mys_id := re.search(r'(account_id|ltuid|stuid|login_uid)=(\d*)', cookie):
|
||||
mys_id = mys_id.group(2)
|
||||
mys_id = mys_id[2]
|
||||
data = (await aiorequests.get(url=GAME_RECORD_API,
|
||||
headers=mihoyo_headers(cookie, f'uid={mys_id}'),
|
||||
params={
|
||||
@ -231,6 +232,8 @@ async def get_bind_game_info(cookie) -> Optional[dict]:
|
||||
if game_data['game_id'] == 2:
|
||||
game_data['mys_id'] = mys_id
|
||||
return game_data
|
||||
if use_for_public:
|
||||
return {'game_biz': 'hk4e_cn', 'mys_id': mys_id}
|
||||
return None
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user