mirror of
https://github.com/Genshin-bots/gsuid_core.git
synced 2025-06-03 22:19:47 +08:00
🐛 修复很多关于网页控制台的错误
This commit is contained in:
parent
09d07aff1f
commit
f6c7eb86a2
@ -97,19 +97,26 @@ async def get_global_analysis(bot_id: str, bot_self_id: str):
|
||||
|
||||
out_user = []
|
||||
new_user = []
|
||||
for i in user_list[0]:
|
||||
if i not in user_before_list:
|
||||
out_user.append(i)
|
||||
if user_list:
|
||||
for i in user_list[0]:
|
||||
if i not in user_before_list:
|
||||
out_user.append(i)
|
||||
|
||||
for i in user_list[-1]:
|
||||
if i not in user_after_list:
|
||||
new_user.append(i)
|
||||
if user_list:
|
||||
for i in user_list[-1]:
|
||||
if i not in user_after_list:
|
||||
new_user.append(i)
|
||||
|
||||
_user_all_list = list(set(user_all_list))
|
||||
|
||||
user_num = len(user_data)
|
||||
group_num = len(group_data)
|
||||
|
||||
data = {
|
||||
'DAU': '{0:.2f}'.format(sum(user_data) / len(user_data)),
|
||||
'DAG': '{0:.2f}'.format(sum(group_data) / len(group_data)),
|
||||
'DAU': '{0:.2f}'.format(sum(user_data) / user_num) if user_num else 0,
|
||||
'DAG': (
|
||||
'{0:.2f}'.format(sum(group_data) / group_num) if group_num else 0
|
||||
),
|
||||
'NU': str(len(new_user)),
|
||||
'OU': (
|
||||
'{0:.2f}%'.format((len(out_user) / len(_user_all_list)) * 100)
|
||||
|
@ -2,6 +2,7 @@ import sys
|
||||
import asyncio
|
||||
import logging
|
||||
import datetime
|
||||
from functools import wraps
|
||||
from typing import TYPE_CHECKING, List
|
||||
|
||||
import loguru
|
||||
@ -11,8 +12,6 @@ from gsuid_core.config import core_config
|
||||
from gsuid_core.models import Event, Message
|
||||
from gsuid_core.data_store import get_res_path
|
||||
|
||||
is_clear: bool = False
|
||||
is_RL: bool = False
|
||||
log_history = []
|
||||
LOG_PATH = get_res_path() / 'logs'
|
||||
|
||||
@ -111,21 +110,20 @@ def format_event(record):
|
||||
def std_format_event(record):
|
||||
try:
|
||||
data = format_event(record)
|
||||
if is_RL:
|
||||
_data = data.format_map(record)
|
||||
_data = (
|
||||
_data.replace('<g>', '\033[37m')
|
||||
.replace('</g>', '\033[0m')
|
||||
.replace('<c><u>', '\033[34m')
|
||||
.replace('</u></c>', '\033[0m')
|
||||
.replace('<m><b>', '\033[35m')
|
||||
.replace('</b></m>', '\033[0m')
|
||||
.replace('<c><b>', '\033[32m')
|
||||
.replace('</b></c>', '\033[0m')
|
||||
.replace('<lvl>', '')
|
||||
.replace('</lvl>', '')
|
||||
)
|
||||
log_history.append(_data.format_map(record))
|
||||
_data = (
|
||||
data.replace('<g>', '\033[37m')
|
||||
.replace('</g>', '\033[0m')
|
||||
.replace('<c><u>', '\033[34m')
|
||||
.replace('</u></c>', '\033[0m')
|
||||
.replace('<m><b>', '\033[35m')
|
||||
.replace('</b></m>', '\033[0m')
|
||||
.replace('<c><b>', '\033[32m')
|
||||
.replace('</b></c>', '\033[0m')
|
||||
.replace('<lvl>', '')
|
||||
.replace('</lvl>', '')
|
||||
)
|
||||
log = _data.format_map(record)
|
||||
log_history.append(log[:-5])
|
||||
return data
|
||||
except: # noqa: E722
|
||||
return 'UnknowLog'
|
||||
@ -165,25 +163,30 @@ if 'file' in logger_list:
|
||||
|
||||
async def read_log():
|
||||
global log_history
|
||||
global is_RL
|
||||
is_RL = True
|
||||
index = 0
|
||||
while True:
|
||||
if index <= len(log_history) - 1:
|
||||
yield log_history[index]
|
||||
if log_history[index]:
|
||||
yield log_history[index]
|
||||
index += 1
|
||||
else:
|
||||
await asyncio.sleep(1)
|
||||
|
||||
|
||||
async def clear_log():
|
||||
global is_clear
|
||||
async def clean_log():
|
||||
global log_history
|
||||
while True:
|
||||
await asyncio.sleep(480)
|
||||
log_history = []
|
||||
|
||||
if is_clear:
|
||||
return
|
||||
|
||||
is_clear = True
|
||||
await asyncio.sleep(18000)
|
||||
log_history = []
|
||||
is_clear = False
|
||||
def handle_exceptions(async_function):
|
||||
@wraps(async_function)
|
||||
async def wrapper(*args, **kwargs):
|
||||
try:
|
||||
return await async_function(*args, **kwargs)
|
||||
except Exception as e:
|
||||
logger.exception("[错误发生] %s: %s", async_function.__name__, e)
|
||||
return None
|
||||
|
||||
return wrapper
|
||||
|
@ -523,10 +523,8 @@ async def update_plugins(
|
||||
break
|
||||
|
||||
for _n in PLUGINS_PATH.iterdir():
|
||||
_name = _n.name
|
||||
sim = len(set(_name.lower()) & set(pn))
|
||||
if sim >= 0.9 * len(_name):
|
||||
plugin_name = _name
|
||||
if pn == _n.name.lower():
|
||||
plugin_name = _n.name
|
||||
break
|
||||
|
||||
log_list = await update_from_git_in_tread(
|
||||
|
@ -1 +1 @@
|
||||
__version__ = "0.6.1"
|
||||
__version__ = "0.6.2"
|
||||
|
@ -18,7 +18,7 @@ from gsuid_core.data_store import image_res
|
||||
from gsuid_core.webconsole.mount_app import site
|
||||
from gsuid_core.segment import Message, MessageSegment
|
||||
from gsuid_core.config import CONFIG_DEFAULT, core_config
|
||||
from gsuid_core.logger import logger, read_log, clear_log
|
||||
from gsuid_core.logger import logger, read_log, clean_log
|
||||
from gsuid_core.aps import start_scheduler, shutdown_scheduler
|
||||
from gsuid_core.server import core_start_def, core_shutdown_def
|
||||
from gsuid_core.utils.database.models import CoreUser, CoreGroup
|
||||
@ -52,6 +52,7 @@ async def lifespan(app: FastAPI):
|
||||
|
||||
await start_check() # type:ignore
|
||||
await start_scheduler()
|
||||
asyncio.create_task(clean_log())
|
||||
yield
|
||||
await shutdown_scheduler()
|
||||
try:
|
||||
@ -421,7 +422,6 @@ async def get_image(image_id: str, background_tasks: BackgroundTasks):
|
||||
|
||||
@app.get("/corelogs")
|
||||
async def core_log():
|
||||
asyncio.create_task(clear_log())
|
||||
return StreamingResponse(read_log(), media_type='text/plain')
|
||||
|
||||
|
||||
|
@ -54,6 +54,5 @@ async def get_analysis_page():
|
||||
],
|
||||
)
|
||||
)
|
||||
|
||||
page['body'].append(get_tabs(tabs))
|
||||
return page
|
||||
|
@ -1,6 +1,6 @@
|
||||
def create_log_page():
|
||||
return {
|
||||
"type": "log",
|
||||
"height": 600,
|
||||
"height": 730,
|
||||
"source": "/corelogs",
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
import fastapi_amis_admin
|
||||
|
||||
from gsuid_core.version import __version__ as GenshinUID_version
|
||||
from gsuid_core.version import __version__ as gscore_version
|
||||
|
||||
web_url = 'https://docs.sayu-bot.com'
|
||||
login_html = f'''
|
||||
@ -43,9 +43,9 @@ login_html = f'''
|
||||
|
||||
footer_html = f'''
|
||||
<p align='right'>
|
||||
<div class='p-2 text-center bg-light'>Copyright © 2021 - 2022
|
||||
<div class='p-2 text-center bg-light'>Copyright © 2021 - 2024
|
||||
<a href='https://github.com/KimigaiiWuyi/GenshinUID' target='_blank'
|
||||
class='link-secondary'>GenshinUID {GenshinUID_version}
|
||||
class='link-secondary'>GenshinUID {gscore_version}
|
||||
</a>
|
||||
X
|
||||
<a target='_blank'
|
||||
|
@ -38,12 +38,12 @@ from fastapi_amis_admin.amis.components import (
|
||||
ButtonToolbar,
|
||||
)
|
||||
|
||||
from gsuid_core.logger import logger
|
||||
from gsuid_core.logger import logger, handle_exceptions
|
||||
from gsuid_core.utils.database.base_models import db_url
|
||||
from gsuid_core.utils.cookie_manager.add_ck import _deal_ck
|
||||
from gsuid_core.version import __version__ as gscore_version
|
||||
from gsuid_core.webconsole.html import gsuid_webconsole_help
|
||||
from gsuid_core.webconsole.create_sv_panel import get_sv_page
|
||||
from gsuid_core.version import __version__ as GenshinUID_version
|
||||
from gsuid_core.webconsole.create_log_panel import create_log_page
|
||||
from gsuid_core.webconsole.create_task_panel import get_tasks_panel
|
||||
from gsuid_core.webconsole.create_config_panel import get_config_page
|
||||
@ -301,14 +301,12 @@ class UserBindFormAdmin(GsNormalForm):
|
||||
im = await _deal_ck(data.bot_id, data.cookie, data.user_id)
|
||||
except Exception as e:
|
||||
logger.warning(e)
|
||||
return BaseApiOut(
|
||||
status=-1, msg='你输入的CK可能已经失效/或者该用户ID未绑定UID'
|
||||
)
|
||||
return BaseApiOut(status=-1, msg='你输入的CK可能已经失效/或者该用户ID未绑定UID') # type: ignore
|
||||
ok_num = im.count('成功')
|
||||
if ok_num < 1:
|
||||
return BaseApiOut(status=-1, msg=im)
|
||||
return BaseApiOut(status=-1, msg=im) # type: ignore
|
||||
else:
|
||||
return BaseApiOut(msg=im)
|
||||
return BaseApiOut(msg=im) # type: ignore
|
||||
|
||||
|
||||
class GsAdminModel(admin.ModelAdmin):
|
||||
@ -397,14 +395,14 @@ class MyHomeAdmin(admin.HomeAdmin):
|
||||
),
|
||||
amis.Divider(),
|
||||
Property(
|
||||
title='GenshinUID Info',
|
||||
title='早柚核心 信息',
|
||||
column=4,
|
||||
items=[
|
||||
Property.Item(label='system', content=platform.system()),
|
||||
Property.Item(
|
||||
label='python', content=platform.python_version()
|
||||
),
|
||||
Property.Item(label='version', content=GenshinUID_version),
|
||||
Property.Item(label='version', content=gscore_version),
|
||||
Property.Item(label='license', content='GPLv3'),
|
||||
],
|
||||
),
|
||||
@ -430,6 +428,7 @@ class AnalysisPage(GsAdminPage):
|
||||
sort=100,
|
||||
) # type: ignore
|
||||
|
||||
@handle_exceptions
|
||||
async def get_page(self, request: Request) -> Page:
|
||||
return Page.parse_obj(await get_analysis_page())
|
||||
|
||||
@ -444,6 +443,7 @@ class CoreManagePage(GsAdminPage):
|
||||
sort=100,
|
||||
) # type: ignore
|
||||
|
||||
@handle_exceptions
|
||||
async def get_page(self, request: Request) -> Page:
|
||||
return Page.parse_obj(get_core_config_page())
|
||||
|
||||
@ -458,6 +458,7 @@ class SVManagePage(GsAdminPage):
|
||||
sort=100,
|
||||
) # type: ignore
|
||||
|
||||
@handle_exceptions
|
||||
async def get_page(self, request: Request) -> Page:
|
||||
return Page.parse_obj(get_sv_page())
|
||||
|
||||
@ -472,6 +473,7 @@ class ConfigManagePage(GsAdminPage):
|
||||
sort=100,
|
||||
) # type: ignore
|
||||
|
||||
@handle_exceptions
|
||||
async def get_page(self, request: Request) -> Page:
|
||||
return Page.parse_obj(get_config_page())
|
||||
|
||||
@ -486,6 +488,7 @@ class PluginsManagePage(GsAdminPage):
|
||||
sort=100,
|
||||
) # type: ignore
|
||||
|
||||
@handle_exceptions
|
||||
async def get_page(self, request: Request) -> Page:
|
||||
return Page.parse_obj(get_tasks_panel())
|
||||
|
||||
@ -500,6 +503,7 @@ class LogsPage(GsAdminPage):
|
||||
sort=100,
|
||||
) # type: ignore
|
||||
|
||||
@handle_exceptions
|
||||
async def get_page(self, request: Request) -> Page:
|
||||
return Page.parse_obj(create_log_page())
|
||||
|
||||
@ -514,6 +518,7 @@ class PushPage(GsAdminPage):
|
||||
sort=100,
|
||||
) # type: ignore
|
||||
|
||||
@handle_exceptions
|
||||
async def get_page(self, request: Request) -> Page:
|
||||
return Page.parse_obj(await get_batch_push_panel())
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user