From bc5a9c4fcca5d5acacd5c7ce77b7657432907645 Mon Sep 17 00:00:00 2001 From: BalconyJH <73932916+BalconyJH@users.noreply.github.com> Date: Tue, 10 Dec 2024 19:49:11 +0800 Subject: [PATCH] =?UTF-8?q?Develop:=20=E5=AE=8C=E5=85=A8=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=20ruff=20=E6=9B=BF=E4=BB=A3=20isort=20=E4=B8=8E=20black=20(#17?= =?UTF-8?q?57)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * :rotating_light: 完全使用 ruff 替代 isort 与 black * :rotating_light: ruff lint&format --- .pre-commit-config.yaml | 33 +++------- pyproject.toml | 33 +++++----- scripts/bot_check.py | 6 +- .../auto_update/test_check_update.py | 38 ++++++------ tests/builtin_plugins/check/test_check.py | 16 ++--- .../plugin_store/test_add_plugin.py | 18 +++--- .../plugin_store/test_plugin_store.py | 14 ++--- .../plugin_store/test_remove_plugin.py | 16 ++--- .../plugin_store/test_search_plugin.py | 16 ++--- .../plugin_store/test_update_all_plugin.py | 18 +++--- .../plugin_store/test_update_plugin.py | 16 ++--- tests/conftest.py | 18 +++--- tests/utils.py | 2 +- zhenxun/builtin_plugins/__init__.py | 20 +++--- zhenxun/builtin_plugins/about.py | 8 +-- .../admin/admin_help/__init__.py | 8 +-- .../admin/admin_help/config.py | 4 +- .../admin/admin_help/html_help.py | 4 +- .../admin/admin_help/normal_help.py | 10 +-- .../builtin_plugins/admin/admin_help/utils.py | 2 +- zhenxun/builtin_plugins/admin/admin_watch.py | 8 +-- zhenxun/builtin_plugins/admin/ban/__init__.py | 18 +++--- .../builtin_plugins/admin/ban/_data_source.py | 2 +- .../admin/group_member_update/__init__.py | 14 ++--- .../admin/group_member_update/_data_source.py | 6 +- zhenxun/builtin_plugins/admin/group_update.py | 2 +- .../admin/plugin_switch/__init__.py | 12 ++-- .../admin/plugin_switch/_data_source.py | 20 +++--- .../builtin_plugins/admin/welcome_message.py | 12 ++-- .../builtin_plugins/auto_update/__init__.py | 6 +- .../auto_update/_data_source.py | 26 ++++---- zhenxun/builtin_plugins/catchphrase.py | 2 +- .../builtin_plugins/chat_history/__init__.py | 3 +- .../chat_history/chat_message.py | 2 +- .../chat_history/chat_message_handle.py | 7 ++- zhenxun/builtin_plugins/check/data_source.py | 10 +-- zhenxun/builtin_plugins/help/__init__.py | 16 ++--- zhenxun/builtin_plugins/help/_data_source.py | 6 +- zhenxun/builtin_plugins/help/_utils.py | 4 +- zhenxun/builtin_plugins/help/html_help.py | 6 +- zhenxun/builtin_plugins/help/normal_help.py | 6 +- zhenxun/builtin_plugins/help/zhenxun_help.py | 10 +-- zhenxun/builtin_plugins/help_help.py | 12 ++-- .../builtin_plugins/hooks/_auth_checker.py | 26 ++++---- zhenxun/builtin_plugins/hooks/auth_hook.py | 4 +- zhenxun/builtin_plugins/hooks/ban_hook.py | 16 ++--- zhenxun/builtin_plugins/hooks/chkdsk_hook.py | 14 ++--- zhenxun/builtin_plugins/info/__init__.py | 8 +-- zhenxun/builtin_plugins/info/my_info.py | 20 +++--- zhenxun/builtin_plugins/init/__init__.py | 2 +- zhenxun/builtin_plugins/init/init_config.py | 10 +-- zhenxun/builtin_plugins/init/init_plugin.py | 18 +++--- zhenxun/builtin_plugins/init/manager.py | 4 +- zhenxun/builtin_plugins/nickname.py | 20 +++--- .../platform/qq/group_handle/__init__.py | 20 +++--- .../platform/qq/group_handle/data_source.py | 31 +++++----- .../platform/qq_api/ug_watch.py | 6 +- .../builtin_plugins/plugin_store/__init__.py | 11 ++-- .../plugin_store/data_source.py | 19 +++--- zhenxun/builtin_plugins/record_request.py | 24 ++++---- zhenxun/builtin_plugins/restart/__init__.py | 12 ++-- .../builtin_plugins/scheduler/auto_backup.py | 4 +- .../builtin_plugins/scheduler/chat_check.py | 8 +-- zhenxun/builtin_plugins/scheduler/morning.py | 8 +-- zhenxun/builtin_plugins/scripts.py | 8 +-- zhenxun/builtin_plugins/shop/__init__.py | 28 ++++----- zhenxun/builtin_plugins/shop/_data_source.py | 24 ++++---- zhenxun/builtin_plugins/sign_in/__init__.py | 17 +++--- .../builtin_plugins/sign_in/_data_source.py | 18 +++--- zhenxun/builtin_plugins/sign_in/utils.py | 20 +++--- .../builtin_plugins/statistics/__init__.py | 2 +- .../statistics/_data_source.py | 12 ++-- .../statistics/statistics_hook.py | 16 ++--- .../superuser/bot_manage/__init__.py | 15 +---- .../superuser/broadcast/_data_source.py | 4 +- .../builtin_plugins/superuser/clear_data.py | 10 ++- zhenxun/builtin_plugins/superuser/exec_sql.py | 13 ++-- .../builtin_plugins/superuser/fg_manage.py | 5 +- .../builtin_plugins/superuser/group_manage.py | 4 +- .../builtin_plugins/superuser/set_admin.py | 12 ++-- .../superuser/super_help/__init__.py | 8 +-- .../superuser/super_help/config.py | 4 +- .../superuser/super_help/normal_help.py | 10 +-- .../superuser/super_help/utils.py | 2 +- .../superuser/super_help/zhenxun_help.py | 4 +- zhenxun/builtin_plugins/web_ui/__init__.py | 24 ++++---- .../web_ui/api/logs/log_manager.py | 2 +- .../builtin_plugins/web_ui/api/logs/logs.py | 4 +- .../web_ui/api/tabs/__init__.py | 10 +-- .../web_ui/api/tabs/dashboard/__init__.py | 16 ++--- .../web_ui/api/tabs/dashboard/data_source.py | 6 +- .../web_ui/api/tabs/database/__init__.py | 16 ++--- .../web_ui/api/tabs/main/__init__.py | 34 +++++------ .../web_ui/api/tabs/main/data_source.py | 2 +- .../web_ui/api/tabs/main/model.py | 2 +- .../web_ui/api/tabs/manage/__init__.py | 50 +++++++-------- .../web_ui/api/tabs/manage/chat.py | 12 ++-- .../web_ui/api/tabs/plugin_manage/__init__.py | 14 ++--- .../web_ui/api/tabs/plugin_manage/store.py | 6 +- .../web_ui/api/tabs/system/__init__.py | 8 +-- .../web_ui/api/tabs/system/model.py | 9 +-- .../builtin_plugins/web_ui/auth/__init__.py | 16 ++--- zhenxun/builtin_plugins/web_ui/config.py | 2 +- .../builtin_plugins/web_ui/public/__init__.py | 4 +- .../web_ui/public/data_source.py | 7 +-- zhenxun/builtin_plugins/web_ui/utils.py | 14 ++--- zhenxun/builtin_plugins/withdraw.py | 10 +-- zhenxun/configs/path_config.py | 6 -- zhenxun/configs/utils/__init__.py | 12 ++-- zhenxun/models/bag_user.py | 13 ++-- zhenxun/models/ban_console.py | 2 +- zhenxun/models/chat_history.py | 26 +++++--- zhenxun/models/fg_request.py | 8 +-- zhenxun/models/friend_user.py | 8 +-- zhenxun/models/goods_info.py | 8 +-- zhenxun/models/group_member_info.py | 23 ++++--- zhenxun/models/level_user.py | 12 ++-- zhenxun/models/plugin_info.py | 2 +- zhenxun/models/sign_group_user.py | 15 ++--- zhenxun/models/sign_log.py | 4 -- zhenxun/models/sign_user.py | 4 +- zhenxun/models/user_console.py | 5 +- zhenxun/models/user_gold_log.py | 1 - zhenxun/models/user_props.py | 7 +-- zhenxun/models/user_props_log.py | 5 -- zhenxun/services/db_context.py | 2 +- zhenxun/services/log.py | 4 +- zhenxun/services/plugin_init.py | 2 +- zhenxun/utils/_build_image.py | 10 +-- zhenxun/utils/_build_mat.py | 9 +-- zhenxun/utils/_image_template.py | 6 +- zhenxun/utils/common_utils.py | 6 +- zhenxun/utils/decorator/shop.py | 6 +- zhenxun/utils/depends/__init__.py | 6 +- zhenxun/utils/echart_utils/__init__.py | 2 +- zhenxun/utils/github_utils/__init__.py | 8 +-- zhenxun/utils/github_utils/func.py | 3 +- zhenxun/utils/github_utils/models.py | 7 ++- zhenxun/utils/http_utils.py | 20 +++--- zhenxun/utils/image_utils.py | 21 +++---- zhenxun/utils/message.py | 12 ++-- zhenxun/utils/platform.py | 20 +++--- zhenxun/utils/rules.py | 4 +- zhenxun/utils/typing.py | 2 - zhenxun/utils/user_agent.py | 61 +++++++++++++------ zhenxun/utils/utils.py | 10 +-- zhenxun/utils/withdraw_manage.py | 5 +- 147 files changed, 823 insertions(+), 863 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c5280f74..7cdafdb1 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,33 +1,16 @@ -default_install_hook_types: [pre-commit, prepare-commit-msg] +default_install_hook_types: [pre-commit] ci: autofix_commit_msg: ":rotating_light: auto fix by pre-commit hooks" autofix_prs: true - autoupdate_branch: dev - autoupdate_schedule: weekly + autoupdate_branch: master + autoupdate_schedule: monthly autoupdate_commit_msg: ":arrow_up: auto update by pre-commit hooks" repos: - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.5.6 + rev: v0.8.1 hooks: - id: ruff - args: [--fix, --exit-non-zero-on-fix] - stages: [commit] - - - repo: https://github.com/pycqa/isort - rev: 5.13.2 - hooks: - - id: isort - stages: [commit] - - - repo: https://github.com/psf/black - rev: 24.8.0 - hooks: - - id: black - stages: [commit] - - - repo: https://github.com/pre-commit/mirrors-prettier - rev: v4.0.0-alpha.8 - hooks: - - id: prettier - types_or: [javascript, jsx, ts, tsx, markdown, yaml, json] - stages: [commit] \ No newline at end of file + args: [--fix] + stages: [pre-commit] + - id: ruff-format + stages: [pre-commit] \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 96905137..39096e48 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,6 @@ psutil = "^5.9.8" feedparser = "^6.0.11" opencv-python = "^4.9.0.80" imagehash = "^4.3.1" -black = "^24.4.2" cn2an = "^0.5.22" aiohttp = "^3.9.5" dateparser = "^1.2.0" @@ -59,6 +58,9 @@ pytest-mock = "^3.6.1" pytest-asyncio = "^0.23.5" pytest-xdist = "^3.3.1" respx = "^0.21.1" +ruff = "^0.8.0" +pre-commit = "^4.0.0" + [tool.nonebot] plugins = [ @@ -75,31 +77,19 @@ adapters = [ { name = "开黑啦", module_name = "nonebot.adapters.kaiheila" }, ] -[tool.black] -line-length = 88 -target-version = ["py39", "py310", "py311", "py312"] -include = '\.pyi?$' -extend-exclude = ''' -''' - -[tool.isort] -profile = "black" -line_length = 88 -length_sort = true -skip_gitignore = true -force_sort_within_sections = true -src_paths = ["zhenxun", "tests"] -extra_standard_library = ["typing_extensions"] - [tool.ruff] line-length = 88 target-version = "py310" +[tool.ruff.format] +line-ending = "lf" + [tool.ruff.lint] select = [ "F", # Pyflakes "W", # pycodestyle warnings "E", # pycodestyle errors + "I", # isort "UP", # pyupgrade "ASYNC", # flake8-async "C4", # flake8-comprehensions @@ -108,6 +98,7 @@ select = [ "PYI", # flake8-pyi "PT", # flake8-pytest-style "Q", # flake8-quotes + "TID", # flake8-tidy-imports "RUF", # Ruff-specific rules ] ignore = [ @@ -118,10 +109,18 @@ ignore = [ "RUF003", # ambiguous-unicode-character-comment ] +[tool.ruff.lint.isort] +force-sort-within-sections = true +known-first-party = ["zhenxun", "tests/*"] +extra-standard-library = ["typing_extensions"] + [tool.ruff.lint.flake8-pytest-style] fixture-parentheses = false mark-parentheses = false +[tool.ruff.lint.pyupgrade] +keep-runtime-typing = true + [tool.pyright] pythonVersion = "3.10" pythonPlatform = "All" diff --git a/scripts/bot_check.py b/scripts/bot_check.py index 7da685b9..3e6c2d2a 100644 --- a/scripts/bot_check.py +++ b/scripts/bot_check.py @@ -1,18 +1,18 @@ +import asyncio import os import re -import asyncio import nonebot -from nonebot.log import logger # from nonebot.adapters.discord import Adapter as DiscordAdapter from nonebot.adapters.dodo import Adapter as DoDoAdapter from nonebot.adapters.kaiheila import Adapter as KaiheilaAdapter from nonebot.adapters.onebot.v11 import Adapter as OneBotV11Adapter +from nonebot.log import logger nonebot.init() -from zhenxun.services.db_context import init, disconnect +from zhenxun.services.db_context import disconnect, init driver = nonebot.get_driver() diff --git a/tests/builtin_plugins/auto_update/test_check_update.py b/tests/builtin_plugins/auto_update/test_check_update.py index 4ef910b7..bc2b06ce 100644 --- a/tests/builtin_plugins/auto_update/test_check_update.py +++ b/tests/builtin_plugins/auto_update/test_check_update.py @@ -1,20 +1,20 @@ +from collections.abc import Callable import io import os -import tarfile -import zipfile -from typing import cast from pathlib import Path -from collections.abc import Callable +import tarfile +from typing import cast +import zipfile -from nonebug import App -from respx import MockRouter -from pytest_mock import MockerFixture from nonebot.adapters.onebot.v11 import Bot from nonebot.adapters.onebot.v11.message import Message +from nonebug import App +from pytest_mock import MockerFixture +from respx import MockRouter -from tests.config import BotId, UserId, GroupId, MessageId -from tests.utils import get_response_json as _get_response_json +from tests.config import BotId, GroupId, MessageId, UserId from tests.utils import _v11_group_message_event, _v11_private_message_send +from tests.utils import get_response_json as _get_response_json def get_response_json(file: str) -> dict: @@ -62,10 +62,10 @@ def init_mocked_api(mocked_api: MockRouter) -> None: zip_bytes = io.BytesIO() from zhenxun.builtin_plugins.auto_update.config import ( - REPLACE_FOLDERS, - REQ_TXT_FILE_STRING, PYPROJECT_FILE_STRING, PYPROJECT_LOCK_FILE_STRING, + REPLACE_FOLDERS, + REQ_TXT_FILE_STRING, ) # 指定要添加到压缩文件中的文件路径列表 @@ -196,10 +196,10 @@ def add_directory_to_tar(tarinfo, tar): def init_mocker_path(mocker: MockerFixture, tmp_path: Path): from zhenxun.builtin_plugins.auto_update.config import ( - REQ_TXT_FILE_STRING, - VERSION_FILE_STRING, PYPROJECT_FILE_STRING, PYPROJECT_LOCK_FILE_STRING, + REQ_TXT_FILE_STRING, + VERSION_FILE_STRING, ) mocker.patch( @@ -268,10 +268,10 @@ async def test_check_update_release( """ from zhenxun.builtin_plugins.auto_update import _matcher from zhenxun.builtin_plugins.auto_update.config import ( - REPLACE_FOLDERS, - REQ_TXT_FILE_STRING, PYPROJECT_FILE_STRING, PYPROJECT_LOCK_FILE_STRING, + REPLACE_FOLDERS, + REQ_TXT_FILE_STRING, ) init_mocked_api(mocked_api=mocked_api) @@ -359,10 +359,10 @@ async def test_check_update_dev( """ from zhenxun.builtin_plugins.auto_update import _matcher from zhenxun.builtin_plugins.auto_update.config import ( - REPLACE_FOLDERS, - REQ_TXT_FILE_STRING, PYPROJECT_FILE_STRING, PYPROJECT_LOCK_FILE_STRING, + REPLACE_FOLDERS, + REQ_TXT_FILE_STRING, ) init_mocked_api(mocked_api=mocked_api) @@ -450,10 +450,10 @@ async def test_check_update_main( """ from zhenxun.builtin_plugins.auto_update import _matcher from zhenxun.builtin_plugins.auto_update.config import ( - REPLACE_FOLDERS, - REQ_TXT_FILE_STRING, PYPROJECT_FILE_STRING, PYPROJECT_LOCK_FILE_STRING, + REPLACE_FOLDERS, + REQ_TXT_FILE_STRING, ) init_mocked_api(mocked_api=mocked_api) diff --git a/tests/builtin_plugins/check/test_check.py b/tests/builtin_plugins/check/test_check.py index 5dbd3f6c..41180b68 100644 --- a/tests/builtin_plugins/check/test_check.py +++ b/tests/builtin_plugins/check/test_check.py @@ -1,17 +1,17 @@ +from collections.abc import Callable +from pathlib import Path import platform from typing import cast -from pathlib import Path -from collections.abc import Callable import nonebot -from nonebug import App -from respx import MockRouter -from pytest_mock import MockerFixture from nonebot.adapters.onebot.v11 import Bot from nonebot.adapters.onebot.v11.event import GroupMessageEvent +from nonebug import App +from pytest_mock import MockerFixture +from respx import MockRouter +from tests.config import BotId, GroupId, MessageId, UserId from tests.utils import _v11_group_message_event -from tests.config import BotId, UserId, GroupId, MessageId platform_uname = platform.uname_result( system="Linux", @@ -67,9 +67,9 @@ async def test_check( """ 测试自检 """ - from zhenxun.configs.config import BotConfig from zhenxun.builtin_plugins.check import _matcher from zhenxun.builtin_plugins.check.data_source import __get_version + from zhenxun.configs.config import BotConfig ( mock_psutil, @@ -137,9 +137,9 @@ async def test_check_arm( """ 测试自检(arm) """ - from zhenxun.configs.config import BotConfig from zhenxun.builtin_plugins.check import _matcher from zhenxun.builtin_plugins.check.data_source import __get_version + from zhenxun.configs.config import BotConfig platform_uname_arm = platform.uname_result( system="Linux", diff --git a/tests/builtin_plugins/plugin_store/test_add_plugin.py b/tests/builtin_plugins/plugin_store/test_add_plugin.py index f2d99bd3..9f2d6144 100644 --- a/tests/builtin_plugins/plugin_store/test_add_plugin.py +++ b/tests/builtin_plugins/plugin_store/test_add_plugin.py @@ -1,18 +1,18 @@ -from typing import cast -from pathlib import Path from collections.abc import Callable +from pathlib import Path +from typing import cast -import pytest -from nonebug import App -from respx import MockRouter -from pytest_mock import MockerFixture from nonebot.adapters.onebot.v11 import Bot -from nonebot.adapters.onebot.v11.message import Message from nonebot.adapters.onebot.v11.event import GroupMessageEvent +from nonebot.adapters.onebot.v11.message import Message +from nonebug import App +import pytest +from pytest_mock import MockerFixture +from respx import MockRouter -from tests.utils import _v11_group_message_event -from tests.config import BotId, UserId, GroupId, MessageId from tests.builtin_plugins.plugin_store.utils import init_mocked_api +from tests.config import BotId, GroupId, MessageId, UserId +from tests.utils import _v11_group_message_event @pytest.mark.parametrize("package_api", ["jsd", "gh"]) diff --git a/tests/builtin_plugins/plugin_store/test_plugin_store.py b/tests/builtin_plugins/plugin_store/test_plugin_store.py index 7a308354..90ce3f60 100644 --- a/tests/builtin_plugins/plugin_store/test_plugin_store.py +++ b/tests/builtin_plugins/plugin_store/test_plugin_store.py @@ -1,16 +1,16 @@ -from typing import cast -from pathlib import Path from collections.abc import Callable +from pathlib import Path +from typing import cast -from nonebug import App -from respx import MockRouter -from pytest_mock import MockerFixture from nonebot.adapters.onebot.v11 import Bot, Message from nonebot.adapters.onebot.v11.event import GroupMessageEvent +from nonebug import App +from pytest_mock import MockerFixture +from respx import MockRouter -from tests.utils import _v11_group_message_event -from tests.config import BotId, UserId, GroupId, MessageId from tests.builtin_plugins.plugin_store.utils import init_mocked_api +from tests.config import BotId, GroupId, MessageId, UserId +from tests.utils import _v11_group_message_event async def test_plugin_store( diff --git a/tests/builtin_plugins/plugin_store/test_remove_plugin.py b/tests/builtin_plugins/plugin_store/test_remove_plugin.py index 5ebd4584..4d5e3ab1 100644 --- a/tests/builtin_plugins/plugin_store/test_remove_plugin.py +++ b/tests/builtin_plugins/plugin_store/test_remove_plugin.py @@ -1,19 +1,19 @@ # ruff: noqa: ASYNC230 -from typing import cast -from pathlib import Path from collections.abc import Callable +from pathlib import Path +from typing import cast -from nonebug import App -from respx import MockRouter -from pytest_mock import MockerFixture from nonebot.adapters.onebot.v11 import Bot -from nonebot.adapters.onebot.v11.message import Message from nonebot.adapters.onebot.v11.event import GroupMessageEvent +from nonebot.adapters.onebot.v11.message import Message +from nonebug import App +from pytest_mock import MockerFixture +from respx import MockRouter +from tests.builtin_plugins.plugin_store.utils import get_content_bytes, init_mocked_api +from tests.config import BotId, GroupId, MessageId, UserId from tests.utils import _v11_group_message_event -from tests.config import BotId, UserId, GroupId, MessageId -from tests.builtin_plugins.plugin_store.utils import init_mocked_api, get_content_bytes async def test_remove_plugin( diff --git a/tests/builtin_plugins/plugin_store/test_search_plugin.py b/tests/builtin_plugins/plugin_store/test_search_plugin.py index c97f71c0..8bc6876e 100644 --- a/tests/builtin_plugins/plugin_store/test_search_plugin.py +++ b/tests/builtin_plugins/plugin_store/test_search_plugin.py @@ -1,17 +1,17 @@ -from typing import cast -from pathlib import Path from collections.abc import Callable +from pathlib import Path +from typing import cast -from nonebug import App -from respx import MockRouter -from pytest_mock import MockerFixture from nonebot.adapters.onebot.v11 import Bot -from nonebot.adapters.onebot.v11.message import Message from nonebot.adapters.onebot.v11.event import GroupMessageEvent +from nonebot.adapters.onebot.v11.message import Message +from nonebug import App +from pytest_mock import MockerFixture +from respx import MockRouter -from tests.utils import _v11_group_message_event -from tests.config import BotId, UserId, GroupId, MessageId from tests.builtin_plugins.plugin_store.utils import init_mocked_api +from tests.config import BotId, GroupId, MessageId, UserId +from tests.utils import _v11_group_message_event async def test_search_plugin_name( diff --git a/tests/builtin_plugins/plugin_store/test_update_all_plugin.py b/tests/builtin_plugins/plugin_store/test_update_all_plugin.py index d9205765..640391c8 100644 --- a/tests/builtin_plugins/plugin_store/test_update_all_plugin.py +++ b/tests/builtin_plugins/plugin_store/test_update_all_plugin.py @@ -1,17 +1,17 @@ -from typing import cast -from pathlib import Path from collections.abc import Callable +from pathlib import Path +from typing import cast -from nonebug import App -from respx import MockRouter -from pytest_mock import MockerFixture from nonebot.adapters.onebot.v11 import Bot -from nonebot.adapters.onebot.v11.message import Message from nonebot.adapters.onebot.v11.event import GroupMessageEvent +from nonebot.adapters.onebot.v11.message import Message +from nonebug import App +from pytest_mock import MockerFixture +from respx import MockRouter -from tests.utils import _v11_group_message_event -from tests.config import BotId, UserId, GroupId, MessageId from tests.builtin_plugins.plugin_store.utils import init_mocked_api +from tests.config import BotId, GroupId, MessageId, UserId +from tests.utils import _v11_group_message_event async def test_update_all_plugin_basic_need_update( @@ -36,7 +36,6 @@ async def test_update_all_plugin_basic_need_update( return_value=[("search_image", "0.0")], ) - async with app.test_matcher(_matcher) as ctx: bot = create_bot(ctx) bot: Bot = cast(Bot, bot) @@ -90,7 +89,6 @@ async def test_update_all_plugin_basic_is_new( return_value=[("search_image", "0.1")], ) - async with app.test_matcher(_matcher) as ctx: bot = create_bot(ctx) bot: Bot = cast(Bot, bot) diff --git a/tests/builtin_plugins/plugin_store/test_update_plugin.py b/tests/builtin_plugins/plugin_store/test_update_plugin.py index 7a73bb16..59fb0bc3 100644 --- a/tests/builtin_plugins/plugin_store/test_update_plugin.py +++ b/tests/builtin_plugins/plugin_store/test_update_plugin.py @@ -1,17 +1,17 @@ -from typing import cast -from pathlib import Path from collections.abc import Callable +from pathlib import Path +from typing import cast -from nonebug import App -from respx import MockRouter -from pytest_mock import MockerFixture from nonebot.adapters.onebot.v11 import Bot -from nonebot.adapters.onebot.v11.message import Message from nonebot.adapters.onebot.v11.event import GroupMessageEvent +from nonebot.adapters.onebot.v11.message import Message +from nonebug import App +from pytest_mock import MockerFixture +from respx import MockRouter -from tests.utils import _v11_group_message_event -from tests.config import BotId, UserId, GroupId, MessageId from tests.builtin_plugins.plugin_store.utils import init_mocked_api +from tests.config import BotId, GroupId, MessageId, UserId +from tests.utils import _v11_group_message_event async def test_update_plugin_basic_need_update( diff --git a/tests/conftest.py b/tests/conftest.py index 038f51d3..a1b7bf2f 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,15 +1,15 @@ -import os -import json -from pathlib import Path from collections.abc import Callable +import json +import os +from pathlib import Path -import pytest import nonebot -from nonebug.app import App -from respx import MockRouter -from pytest_mock import MockerFixture from nonebug import NONEBOT_INIT_KWARGS +from nonebug.app import App from nonebug.mixin.process import MatcherContext +import pytest +from pytest_mock import MockerFixture +from respx import MockRouter from tests.config import BotId, UserId @@ -61,7 +61,7 @@ def _init_bot(nonebug_init: None): @pytest.fixture async def app(app: App, tmp_path: Path, mocker: MockerFixture): - from zhenxun.services.db_context import init, disconnect + from zhenxun.services.db_context import disconnect, init driver = nonebot.get_driver() # 清除连接钩子,现在 NoneBug 会自动触发 on_bot_connect @@ -89,7 +89,7 @@ async def app(app: App, tmp_path: Path, mocker: MockerFixture): @pytest.fixture def create_bot() -> Callable: - from nonebot.adapters.onebot.v11 import Bot, Adapter + from nonebot.adapters.onebot.v11 import Adapter, Bot def _create_bot(context: MatcherContext) -> Bot: return context.create_bot( diff --git a/tests/utils.py b/tests/utils.py index 5e554a8e..f05aa8e9 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -1,8 +1,8 @@ import json from pathlib import Path +from nonebot.adapters.onebot.v11 import GroupMessageEvent, Message, MessageSegment from nonebot.adapters.onebot.v11.event import Sender -from nonebot.adapters.onebot.v11 import Message, MessageSegment, GroupMessageEvent def get_response_json(base_path: Path, file: str) -> dict: diff --git a/zhenxun/builtin_plugins/__init__.py b/zhenxun/builtin_plugins/__init__.py index 6655a028..bead7254 100644 --- a/zhenxun/builtin_plugins/__init__.py +++ b/zhenxun/builtin_plugins/__init__.py @@ -1,13 +1,13 @@ -import uuid from datetime import datetime +import uuid import nonebot -import ujson as json from nonebot import require -from tortoise import Tortoise from nonebot.adapters import Bot from nonebot.drivers import Driver +from tortoise import Tortoise from tortoise.exceptions import OperationalError +import ujson as json require("nonebot_plugin_apscheduler") require("nonebot_plugin_alconna") @@ -16,15 +16,15 @@ require("nonebot_plugin_userinfo") require("nonebot_plugin_htmlrender") # require("nonebot_plugin_uninfo") -from zhenxun.services.log import logger -from zhenxun.models.sign_user import SignUser -from zhenxun.models.goods_info import GoodsInfo -from zhenxun.utils.platform import PlatformUtils -from zhenxun.models.bot_console import BotConsole -from zhenxun.models.user_console import UserConsole -from zhenxun.utils.decorator.shop import shop_register from zhenxun.models.bot_connect_log import BotConnectLog +from zhenxun.models.bot_console import BotConsole +from zhenxun.models.goods_info import GoodsInfo from zhenxun.models.group_member_info import GroupInfoUser +from zhenxun.models.sign_user import SignUser +from zhenxun.models.user_console import UserConsole +from zhenxun.services.log import logger +from zhenxun.utils.decorator.shop import shop_register +from zhenxun.utils.platform import PlatformUtils driver: Driver = nonebot.get_driver() diff --git a/zhenxun/builtin_plugins/about.py b/zhenxun/builtin_plugins/about.py index 4094c8a4..008ea670 100644 --- a/zhenxun/builtin_plugins/about.py +++ b/zhenxun/builtin_plugins/about.py @@ -1,16 +1,16 @@ from pathlib import Path import aiofiles -from nonebot.rule import to_me -from nonebot_plugin_uninfo import Uninfo from nonebot.plugin import PluginMetadata +from nonebot.rule import to_me from nonebot_plugin_alconna import Alconna, Arparma, on_alconna +from nonebot_plugin_uninfo import Uninfo +from zhenxun.configs.path_config import DATA_PATH +from zhenxun.configs.utils import PluginExtraData from zhenxun.services.log import logger from zhenxun.utils.message import MessageUtils from zhenxun.utils.platform import PlatformUtils -from zhenxun.configs.path_config import DATA_PATH -from zhenxun.configs.utils import PluginExtraData __plugin_meta__ = PluginMetadata( name="关于", diff --git a/zhenxun/builtin_plugins/admin/admin_help/__init__.py b/zhenxun/builtin_plugins/admin/admin_help/__init__.py index 7a8d501a..ef1d2987 100644 --- a/zhenxun/builtin_plugins/admin/admin_help/__init__.py +++ b/zhenxun/builtin_plugins/admin/admin_help/__init__.py @@ -1,18 +1,18 @@ from nonebot.plugin import PluginMetadata -from nonebot_plugin_session import EventSession from nonebot_plugin_alconna import Alconna, Arparma, on_alconna +from nonebot_plugin_session import EventSession -from zhenxun.services.log import logger from zhenxun.configs.config import Config +from zhenxun.configs.utils import PluginExtraData, RegisterConfig +from zhenxun.services.log import logger from zhenxun.utils.enum import PluginType from zhenxun.utils.exception import EmptyError from zhenxun.utils.message import MessageUtils from zhenxun.utils.rules import admin_check, ensure_group -from zhenxun.configs.utils import RegisterConfig, PluginExtraData -from .normal_help import build_help from .config import ADMIN_HELP_IMAGE from .html_help import build_html_help +from .normal_help import build_help __plugin_meta__ = PluginMetadata( name="群组管理员帮助", diff --git a/zhenxun/builtin_plugins/admin/admin_help/config.py b/zhenxun/builtin_plugins/admin/admin_help/config.py index dbc62efc..86a12daa 100644 --- a/zhenxun/builtin_plugins/admin/admin_help/config.py +++ b/zhenxun/builtin_plugins/admin/admin_help/config.py @@ -1,8 +1,8 @@ -from pydantic import BaseModel from nonebot.plugin import PluginMetadata +from pydantic import BaseModel -from zhenxun.models.plugin_info import PluginInfo from zhenxun.configs.path_config import IMAGE_PATH +from zhenxun.models.plugin_info import PluginInfo ADMIN_HELP_IMAGE = IMAGE_PATH / "ADMIN_HELP.png" if ADMIN_HELP_IMAGE.exists(): diff --git a/zhenxun/builtin_plugins/admin/admin_help/html_help.py b/zhenxun/builtin_plugins/admin/admin_help/html_help.py index 653dcff6..69699bbb 100644 --- a/zhenxun/builtin_plugins/admin/admin_help/html_help.py +++ b/zhenxun/builtin_plugins/admin/admin_help/html_help.py @@ -1,10 +1,10 @@ from nonebot_plugin_htmlrender import template_to_pic +from zhenxun.builtin_plugins.admin.admin_help.config import ADMIN_HELP_IMAGE from zhenxun.configs.config import BotConfig +from zhenxun.configs.path_config import TEMPLATE_PATH from zhenxun.models.task_info import TaskInfo from zhenxun.utils._build_image import BuildImage -from zhenxun.configs.path_config import TEMPLATE_PATH -from zhenxun.builtin_plugins.admin.admin_help.config import ADMIN_HELP_IMAGE from .utils import get_plugins diff --git a/zhenxun/builtin_plugins/admin/admin_help/normal_help.py b/zhenxun/builtin_plugins/admin/admin_help/normal_help.py index 5a9bb923..a677ba1b 100644 --- a/zhenxun/builtin_plugins/admin/admin_help/normal_help.py +++ b/zhenxun/builtin_plugins/admin/admin_help/normal_help.py @@ -1,14 +1,14 @@ -from PIL.ImageFont import FreeTypeFont from nonebot.plugin import PluginMetadata +from PIL.ImageFont import FreeTypeFont -from zhenxun.services.log import logger -from zhenxun.models.task_info import TaskInfo from zhenxun.models.plugin_info import PluginInfo +from zhenxun.models.task_info import TaskInfo +from zhenxun.services.log import logger from zhenxun.utils._build_image import BuildImage -from zhenxun.utils.image_utils import text2image, group_image, build_sort_image +from zhenxun.utils.image_utils import build_sort_image, group_image, text2image -from .utils import get_plugins from .config import ADMIN_HELP_IMAGE +from .utils import get_plugins async def build_usage_des_image( diff --git a/zhenxun/builtin_plugins/admin/admin_help/utils.py b/zhenxun/builtin_plugins/admin/admin_help/utils.py index 8efbf673..2385238e 100644 --- a/zhenxun/builtin_plugins/admin/admin_help/utils.py +++ b/zhenxun/builtin_plugins/admin/admin_help/utils.py @@ -1,8 +1,8 @@ import nonebot +from zhenxun.models.plugin_info import PluginInfo from zhenxun.utils.enum import PluginType from zhenxun.utils.exception import EmptyError -from zhenxun.models.plugin_info import PluginInfo from .config import PluginData diff --git a/zhenxun/builtin_plugins/admin/admin_watch.py b/zhenxun/builtin_plugins/admin/admin_watch.py index 45947b52..cad91f08 100644 --- a/zhenxun/builtin_plugins/admin/admin_watch.py +++ b/zhenxun/builtin_plugins/admin/admin_watch.py @@ -1,13 +1,13 @@ from nonebot import on_notice -from nonebot.plugin import PluginMetadata from nonebot.adapters.onebot.v11 import GroupAdminNoticeEvent +from nonebot.plugin import PluginMetadata -from zhenxun.services.log import logger from zhenxun.configs.config import Config +from zhenxun.configs.utils import PluginExtraData, RegisterConfig +from zhenxun.models.level_user import LevelUser +from zhenxun.services.log import logger from zhenxun.utils.enum import PluginType from zhenxun.utils.rules import notice_rule -from zhenxun.models.level_user import LevelUser -from zhenxun.configs.utils import RegisterConfig, PluginExtraData __plugin_meta__ = PluginMetadata( name="群管理员变动监测", diff --git a/zhenxun/builtin_plugins/admin/ban/__init__.py b/zhenxun/builtin_plugins/admin/ban/__init__.py index a391d85d..b692124d 100644 --- a/zhenxun/builtin_plugins/admin/ban/__init__.py +++ b/zhenxun/builtin_plugins/admin/ban/__init__.py @@ -2,23 +2,23 @@ from arclet.alconna import Args from nonebot.adapters import Bot from nonebot.permission import SUPERUSER from nonebot.plugin import PluginMetadata -from nonebot_plugin_session import EventSession from nonebot_plugin_alconna import ( + Alconna, + Arparma, At, Match, Option, - Alconna, - Arparma, on_alconna, store_true, ) +from nonebot_plugin_session import EventSession +from zhenxun.configs.config import BotConfig, Config +from zhenxun.configs.utils import PluginExtraData, RegisterConfig from zhenxun.services.log import logger from zhenxun.utils.enum import PluginType -from zhenxun.utils.rules import admin_check from zhenxun.utils.message import MessageUtils -from zhenxun.configs.config import Config, BotConfig -from zhenxun.configs.utils import RegisterConfig, PluginExtraData +from zhenxun.utils.rules import admin_check from ._data_source import BanManage @@ -175,10 +175,8 @@ async def _( _duration = duration.result * 60 if duration.available else -1 _duration_text = f"{duration.result} 分钟" if duration.available else " 到世界湮灭" if (gid := session.id3 or session.id2) and not group_id.available: - if ( - not user_id - or user_id == bot.self_id - and session.id1 not in bot.config.superusers + if not user_id or ( + user_id == bot.self_id and session.id1 not in bot.config.superusers ): _duration = 0.5 await MessageUtils.build_message("倒反天罡,小小管理速速退下!").send() diff --git a/zhenxun/builtin_plugins/admin/ban/_data_source.py b/zhenxun/builtin_plugins/admin/ban/_data_source.py index 579f2f2d..46c5237b 100644 --- a/zhenxun/builtin_plugins/admin/ban/_data_source.py +++ b/zhenxun/builtin_plugins/admin/ban/_data_source.py @@ -3,8 +3,8 @@ from typing import Literal from nonebot_plugin_session import EventSession -from zhenxun.models.level_user import LevelUser from zhenxun.models.ban_console import BanConsole +from zhenxun.models.level_user import LevelUser from zhenxun.utils.image_utils import BuildImage, ImageTemplate diff --git a/zhenxun/builtin_plugins/admin/group_member_update/__init__.py b/zhenxun/builtin_plugins/admin/group_member_update/__init__.py index 4c63790d..55534ab5 100644 --- a/zhenxun/builtin_plugins/admin/group_member_update/__init__.py +++ b/zhenxun/builtin_plugins/admin/group_member_update/__init__.py @@ -1,19 +1,19 @@ import nonebot from nonebot import on_notice from nonebot.adapters import Bot -from nonebot.plugin import PluginMetadata -from nonebot_plugin_session import EventSession -from nonebot_plugin_apscheduler import scheduler -from nonebot_plugin_alconna import Alconna, Arparma, on_alconna from nonebot.adapters.onebot.v11 import GroupIncreaseNoticeEvent +from nonebot.plugin import PluginMetadata +from nonebot_plugin_alconna import Alconna, Arparma, on_alconna +from nonebot_plugin_apscheduler import scheduler +from nonebot_plugin_session import EventSession +from zhenxun.configs.config import BotConfig +from zhenxun.configs.utils import PluginExtraData from zhenxun.services.log import logger from zhenxun.utils.enum import PluginType -from zhenxun.configs.config import BotConfig from zhenxun.utils.message import MessageUtils from zhenxun.utils.platform import PlatformUtils -from zhenxun.configs.utils import PluginExtraData -from zhenxun.utils.rules import admin_check, notice_rule, ensure_group +from zhenxun.utils.rules import admin_check, ensure_group, notice_rule from ._data_source import MemberUpdateManage diff --git a/zhenxun/builtin_plugins/admin/group_member_update/_data_source.py b/zhenxun/builtin_plugins/admin/group_member_update/_data_source.py index 78bbd31c..778fdcf1 100644 --- a/zhenxun/builtin_plugins/admin/group_member_update/_data_source.py +++ b/zhenxun/builtin_plugins/admin/group_member_update/_data_source.py @@ -4,11 +4,11 @@ import nonebot from nonebot.adapters import Bot from nonebot_plugin_uninfo import Member, SceneType, get_interface -from zhenxun.services.log import logger from zhenxun.configs.config import Config -from zhenxun.models.level_user import LevelUser -from zhenxun.utils.platform import PlatformUtils from zhenxun.models.group_member_info import GroupInfoUser +from zhenxun.models.level_user import LevelUser +from zhenxun.services.log import logger +from zhenxun.utils.platform import PlatformUtils class MemberUpdateManage: diff --git a/zhenxun/builtin_plugins/admin/group_update.py b/zhenxun/builtin_plugins/admin/group_update.py index 9b263703..70073e79 100644 --- a/zhenxun/builtin_plugins/admin/group_update.py +++ b/zhenxun/builtin_plugins/admin/group_update.py @@ -41,5 +41,5 @@ async def _(bot: Bot, session: EventSession, arparma: Arparma): try: await PlatformUtils.update_group(bot) await MessageUtils.build_message("已经成功更新了群组信息!").send(reply_to=True) - except Exception as e: + except Exception: await MessageUtils.build_message("更新群组信息失败!").finish(reply_to=True) diff --git a/zhenxun/builtin_plugins/admin/plugin_switch/__init__.py b/zhenxun/builtin_plugins/admin/plugin_switch/__init__.py index 13528f88..5088d6ee 100644 --- a/zhenxun/builtin_plugins/admin/plugin_switch/__init__.py +++ b/zhenxun/builtin_plugins/admin/plugin_switch/__init__.py @@ -1,16 +1,16 @@ from nonebot.adapters import Bot from nonebot.plugin import PluginMetadata +from nonebot_plugin_alconna import AlconnaQuery, Arparma, Match, Query from nonebot_plugin_session import EventSession -from nonebot_plugin_alconna import Match, Query, Arparma, AlconnaQuery -from zhenxun.services.log import logger from zhenxun.configs.config import Config -from zhenxun.utils.message import MessageUtils +from zhenxun.configs.utils import PluginExtraData, RegisterConfig +from zhenxun.services.log import logger from zhenxun.utils.enum import BlockType, PluginType -from zhenxun.configs.utils import RegisterConfig, PluginExtraData +from zhenxun.utils.message import MessageUtils -from .command import _status_matcher, _group_status_matcher -from ._data_source import PluginManage, build_task, build_plugin, delete_help_image +from ._data_source import PluginManage, build_plugin, build_task, delete_help_image +from .command import _group_status_matcher, _status_matcher base_config = Config.get("plugin_switch") diff --git a/zhenxun/builtin_plugins/admin/plugin_switch/_data_source.py b/zhenxun/builtin_plugins/admin/plugin_switch/_data_source.py index 1c1bd030..7af8dc29 100644 --- a/zhenxun/builtin_plugins/admin/plugin_switch/_data_source.py +++ b/zhenxun/builtin_plugins/admin/plugin_switch/_data_source.py @@ -1,10 +1,10 @@ -from zhenxun.models.task_info import TaskInfo -from zhenxun.models.plugin_info import PluginInfo -from zhenxun.utils.enum import BlockType, PluginType -from zhenxun.models.group_console import GroupConsole -from zhenxun.utils.exception import GroupInfoNotFound from zhenxun.configs.path_config import DATA_PATH, IMAGE_PATH -from zhenxun.utils.image_utils import RowStyle, BuildImage, ImageTemplate +from zhenxun.models.group_console import GroupConsole +from zhenxun.models.plugin_info import PluginInfo +from zhenxun.models.task_info import TaskInfo +from zhenxun.utils.enum import BlockType, PluginType +from zhenxun.utils.exception import GroupInfoNotFound +from zhenxun.utils.image_utils import BuildImage, ImageTemplate, RowStyle HELP_FILE = IMAGE_PATH / "SIMPLE_HELP.png" @@ -35,12 +35,8 @@ def plugin_row_style(column: str, text: str) -> RowStyle: RowStyle: RowStyle """ style = RowStyle() - if ( - column == "全局状态" - and text == "开启" - or column != "全局状态" - and column == "加载状态" - and text == "SUCCESS" + if (column == "全局状态" and text == "开启") or ( + column != "全局状态" and column == "加载状态" and text == "SUCCESS" ): style.font_color = "#67C23A" elif column in {"全局状态", "加载状态"}: diff --git a/zhenxun/builtin_plugins/admin/welcome_message.py b/zhenxun/builtin_plugins/admin/welcome_message.py index e9bb9c33..47097ff0 100644 --- a/zhenxun/builtin_plugins/admin/welcome_message.py +++ b/zhenxun/builtin_plugins/admin/welcome_message.py @@ -1,21 +1,21 @@ -import shutil from pathlib import Path +import shutil from typing import Annotated -import ujson as json from nonebot import on_command from nonebot.params import Command from nonebot.plugin import PluginMetadata +from nonebot_plugin_alconna import Image, Text, UniMsg from nonebot_plugin_session import EventSession -from nonebot_plugin_alconna import Text, Image, UniMsg +import ujson as json -from zhenxun.services.log import logger from zhenxun.configs.config import Config +from zhenxun.configs.path_config import DATA_PATH +from zhenxun.configs.utils import PluginExtraData, RegisterConfig +from zhenxun.services.log import logger from zhenxun.utils.enum import PluginType from zhenxun.utils.http_utils import AsyncHttpx -from zhenxun.configs.path_config import DATA_PATH from zhenxun.utils.rules import admin_check, ensure_group -from zhenxun.configs.utils import RegisterConfig, PluginExtraData base_config = Config.get("admin_bot_manage") diff --git a/zhenxun/builtin_plugins/auto_update/__init__.py b/zhenxun/builtin_plugins/auto_update/__init__.py index 5bb7505c..fb9eb161 100644 --- a/zhenxun/builtin_plugins/auto_update/__init__.py +++ b/zhenxun/builtin_plugins/auto_update/__init__.py @@ -1,14 +1,14 @@ -from nonebot.rule import to_me from nonebot.adapters import Bot from nonebot.permission import SUPERUSER from nonebot.plugin import PluginMetadata +from nonebot.rule import to_me +from nonebot_plugin_alconna import Alconna, Args, Match, on_alconna from nonebot_plugin_session import EventSession -from nonebot_plugin_alconna import Args, Match, Alconna, on_alconna +from zhenxun.configs.utils import PluginExtraData, RegisterConfig from zhenxun.services.log import logger from zhenxun.utils.enum import PluginType from zhenxun.utils.message import MessageUtils -from zhenxun.configs.utils import RegisterConfig, PluginExtraData from ._data_source import UpdateManage diff --git a/zhenxun/builtin_plugins/auto_update/_data_source.py b/zhenxun/builtin_plugins/auto_update/_data_source.py index be5e3b23..e4ee72cc 100644 --- a/zhenxun/builtin_plugins/auto_update/_data_source.py +++ b/zhenxun/builtin_plugins/auto_update/_data_source.py @@ -1,35 +1,35 @@ import os import shutil +import subprocess import tarfile import zipfile -import subprocess from nonebot.adapters import Bot from nonebot.utils import run_sync from zhenxun.services.log import logger -from zhenxun.utils.http_utils import AsyncHttpx -from zhenxun.utils.platform import PlatformUtils from zhenxun.utils.github_utils import GithubUtils from zhenxun.utils.github_utils.models import RepoInfo +from zhenxun.utils.http_utils import AsyncHttpx +from zhenxun.utils.platform import PlatformUtils from .config import ( - TMP_PATH, - BASE_PATH, BACKUP_PATH, - RELEASE_URL, - REQ_TXT_FILE, - VERSION_FILE, - PYPROJECT_FILE, - REPLACE_FOLDERS, + BASE_PATH, BASE_PATH_STRING, + DEFAULT_GITHUB_URL, DOWNLOAD_GZ_FILE, DOWNLOAD_ZIP_FILE, - DEFAULT_GITHUB_URL, - PYPROJECT_LOCK_FILE, - REQ_TXT_FILE_STRING, + PYPROJECT_FILE, PYPROJECT_FILE_STRING, + PYPROJECT_LOCK_FILE, PYPROJECT_LOCK_FILE_STRING, + RELEASE_URL, + REPLACE_FOLDERS, + REQ_TXT_FILE, + REQ_TXT_FILE_STRING, + TMP_PATH, + VERSION_FILE, ) diff --git a/zhenxun/builtin_plugins/catchphrase.py b/zhenxun/builtin_plugins/catchphrase.py index 3cea8fa8..23736b5b 100644 --- a/zhenxun/builtin_plugins/catchphrase.py +++ b/zhenxun/builtin_plugins/catchphrase.py @@ -2,8 +2,8 @@ from typing import Any from nonebot.adapters import Bot -from zhenxun.services.log import logger from zhenxun.configs.config import Config +from zhenxun.services.log import logger Config.add_plugin_config( "catchphrase", diff --git a/zhenxun/builtin_plugins/chat_history/__init__.py b/zhenxun/builtin_plugins/chat_history/__init__.py index 838488cf..eb35e275 100644 --- a/zhenxun/builtin_plugins/chat_history/__init__.py +++ b/zhenxun/builtin_plugins/chat_history/__init__.py @@ -1,4 +1,5 @@ -import nonebot from pathlib import Path +import nonebot + nonebot.load_plugins(str(Path(__file__).parent.resolve())) diff --git a/zhenxun/builtin_plugins/chat_history/chat_message.py b/zhenxun/builtin_plugins/chat_history/chat_message.py index 2cfdd607..f254db21 100644 --- a/zhenxun/builtin_plugins/chat_history/chat_message.py +++ b/zhenxun/builtin_plugins/chat_history/chat_message.py @@ -70,7 +70,7 @@ async def _(): await ChatHistory.bulk_create(message_list) logger.debug(f"批量添加聊天记录 {len(message_list)} 条", "定时任务") except Exception as e: - logger.error(f"定时批量添加聊天记录", "定时任务", e=e) + logger.error("定时批量添加聊天记录", "定时任务", e=e) # @test.handle() diff --git a/zhenxun/builtin_plugins/chat_history/chat_message_handle.py b/zhenxun/builtin_plugins/chat_history/chat_message_handle.py index 1287e1b0..4407c778 100644 --- a/zhenxun/builtin_plugins/chat_history/chat_message_handle.py +++ b/zhenxun/builtin_plugins/chat_history/chat_message_handle.py @@ -1,6 +1,5 @@ from datetime import datetime, timedelta -import pytz from nonebot.plugin import PluginMetadata from nonebot_plugin_alconna import ( Alconna, @@ -13,6 +12,7 @@ from nonebot_plugin_alconna import ( store_true, ) from nonebot_plugin_session import EventSession +import pytz from zhenxun.configs.utils import PluginExtraData from zhenxun.models.chat_history import ChatHistory @@ -113,7 +113,10 @@ async def _( date_scope = time_now.replace(microsecond=0) date_str = f"{str(date_scope).split('+')[0]} - 至今" else: - date_str = f"{date_scope[0].replace(microsecond=0)} - {date_scope[1].replace(microsecond=0)}" + date_str = ( + f"{date_scope[0].replace(microsecond=0)} - " + f"{date_scope[1].replace(microsecond=0)}" + ) A = await ImageTemplate.table_page( f"消息排行({count.result})", date_str, column_name, data_list ) diff --git a/zhenxun/builtin_plugins/check/data_source.py b/zhenxun/builtin_plugins/check/data_source.py index 34d7fc0b..0ca8f95e 100644 --- a/zhenxun/builtin_plugins/check/data_source.py +++ b/zhenxun/builtin_plugins/check/data_source.py @@ -1,17 +1,17 @@ +from dataclasses import dataclass import os +from pathlib import Path import platform import subprocess -from pathlib import Path -from dataclasses import dataclass -import psutil import cpuinfo import nonebot -from pydantic import BaseModel from nonebot.utils import run_sync +import psutil +from pydantic import BaseModel -from zhenxun.services.log import logger from zhenxun.configs.config import BotConfig +from zhenxun.services.log import logger from zhenxun.utils.http_utils import AsyncHttpx BAIDU_URL = "https://www.baidu.com/" diff --git a/zhenxun/builtin_plugins/help/__init__.py b/zhenxun/builtin_plugins/help/__init__.py index 85f3cc2f..cdc63272 100644 --- a/zhenxun/builtin_plugins/help/__init__.py +++ b/zhenxun/builtin_plugins/help/__init__.py @@ -1,23 +1,23 @@ -from nonebot.rule import to_me from nonebot.adapters import Bot -from nonebot_plugin_uninfo import Uninfo from nonebot.plugin import PluginMetadata +from nonebot.rule import to_me from nonebot_plugin_alconna import ( - Args, - Match, - Query, - Option, Alconna, AlconnaQuery, + Args, + Match, + Option, + Query, on_alconna, store_true, ) +from nonebot_plugin_uninfo import Uninfo +from zhenxun.builtin_plugins.help._config import GROUP_HELP_PATH, SIMPLE_HELP_IMAGE +from zhenxun.configs.utils import PluginExtraData, RegisterConfig from zhenxun.services.log import logger from zhenxun.utils.enum import PluginType from zhenxun.utils.message import MessageUtils -from zhenxun.configs.utils import RegisterConfig, PluginExtraData -from zhenxun.builtin_plugins.help._config import GROUP_HELP_PATH, SIMPLE_HELP_IMAGE from ._data_source import create_help_img, get_plugin_help diff --git a/zhenxun/builtin_plugins/help/_data_source.py b/zhenxun/builtin_plugins/help/_data_source.py index 1e99dee9..19a3af8a 100644 --- a/zhenxun/builtin_plugins/help/_data_source.py +++ b/zhenxun/builtin_plugins/help/_data_source.py @@ -1,16 +1,16 @@ import nonebot from nonebot_plugin_uninfo import Uninfo -from zhenxun.utils.enum import PluginType +from zhenxun.configs.path_config import IMAGE_PATH from zhenxun.models.level_user import LevelUser from zhenxun.models.plugin_info import PluginInfo -from zhenxun.configs.path_config import IMAGE_PATH +from zhenxun.utils.enum import PluginType from zhenxun.utils.image_utils import BuildImage, ImageTemplate +from ._config import GROUP_HELP_PATH, SIMPLE_HELP_IMAGE, base_config from .html_help import build_html_image from .normal_help import build_normal_image from .zhenxun_help import build_zhenxun_image -from ._config import GROUP_HELP_PATH, SIMPLE_HELP_IMAGE, base_config random_bk_path = IMAGE_PATH / "background" / "help" / "simple_help" diff --git a/zhenxun/builtin_plugins/help/_utils.py b/zhenxun/builtin_plugins/help/_utils.py index abf46f6f..2fc5559d 100644 --- a/zhenxun/builtin_plugins/help/_utils.py +++ b/zhenxun/builtin_plugins/help/_utils.py @@ -1,8 +1,8 @@ from collections.abc import Callable -from zhenxun.utils.enum import PluginType -from zhenxun.models.plugin_info import PluginInfo from zhenxun.models.group_console import GroupConsole +from zhenxun.models.plugin_info import PluginInfo +from zhenxun.utils.enum import PluginType async def sort_type() -> dict[str, list[PluginInfo]]: diff --git a/zhenxun/builtin_plugins/help/html_help.py b/zhenxun/builtin_plugins/help/html_help.py index 5e88fc28..69afda31 100644 --- a/zhenxun/builtin_plugins/help/html_help.py +++ b/zhenxun/builtin_plugins/help/html_help.py @@ -1,13 +1,13 @@ import os import random -from pydantic import BaseModel from nonebot_plugin_htmlrender import template_to_pic +from pydantic import BaseModel -from zhenxun.utils.enum import BlockType -from zhenxun.models.plugin_info import PluginInfo from zhenxun.configs.path_config import TEMPLATE_PATH from zhenxun.models.group_console import GroupConsole +from zhenxun.models.plugin_info import PluginInfo +from zhenxun.utils.enum import BlockType from ._utils import classify_plugin diff --git a/zhenxun/builtin_plugins/help/normal_help.py b/zhenxun/builtin_plugins/help/normal_help.py index 5a937745..943c8a7e 100644 --- a/zhenxun/builtin_plugins/help/normal_help.py +++ b/zhenxun/builtin_plugins/help/normal_help.py @@ -1,8 +1,8 @@ -from zhenxun.utils.enum import BlockType -from zhenxun.utils._build_image import BuildImage from zhenxun.configs.path_config import IMAGE_PATH from zhenxun.models.group_console import GroupConsole -from zhenxun.utils.image_utils import group_image, build_sort_image +from zhenxun.utils._build_image import BuildImage +from zhenxun.utils.enum import BlockType +from zhenxun.utils.image_utils import build_sort_image, group_image from ._utils import sort_type diff --git a/zhenxun/builtin_plugins/help/zhenxun_help.py b/zhenxun/builtin_plugins/help/zhenxun_help.py index 7da89677..fbe4d94b 100644 --- a/zhenxun/builtin_plugins/help/zhenxun_help.py +++ b/zhenxun/builtin_plugins/help/zhenxun_help.py @@ -1,13 +1,13 @@ -from pydantic import BaseModel -from nonebot_plugin_uninfo import Uninfo from nonebot_plugin_htmlrender import template_to_pic +from nonebot_plugin_uninfo import Uninfo +from pydantic import BaseModel -from zhenxun.utils.enum import BlockType from zhenxun.configs.config import BotConfig -from zhenxun.utils.platform import PlatformUtils -from zhenxun.models.plugin_info import PluginInfo from zhenxun.configs.path_config import TEMPLATE_PATH from zhenxun.models.group_console import GroupConsole +from zhenxun.models.plugin_info import PluginInfo +from zhenxun.utils.enum import BlockType +from zhenxun.utils.platform import PlatformUtils from ._utils import classify_plugin diff --git a/zhenxun/builtin_plugins/help_help.py b/zhenxun/builtin_plugins/help_help.py index 7da4e7ca..cbf66135 100644 --- a/zhenxun/builtin_plugins/help_help.py +++ b/zhenxun/builtin_plugins/help_help.py @@ -2,20 +2,20 @@ import os import random from nonebot import on_message -from nonebot.rule import to_me from nonebot.matcher import Matcher from nonebot.plugin import PluginMetadata +from nonebot.rule import to_me from nonebot_plugin_alconna import UniMsg from nonebot_plugin_session import EventSession +from zhenxun.configs.path_config import IMAGE_PATH +from zhenxun.configs.utils import PluginExtraData +from zhenxun.models.ban_console import BanConsole +from zhenxun.models.group_console import GroupConsole +from zhenxun.models.plugin_info import PluginInfo from zhenxun.services.log import logger from zhenxun.utils.enum import PluginType from zhenxun.utils.message import MessageUtils -from zhenxun.configs.utils import PluginExtraData -from zhenxun.models.ban_console import BanConsole -from zhenxun.models.plugin_info import PluginInfo -from zhenxun.configs.path_config import IMAGE_PATH -from zhenxun.models.group_console import GroupConsole __plugin_meta__ = PluginMetadata( name="笨蛋检测", diff --git a/zhenxun/builtin_plugins/hooks/_auth_checker.py b/zhenxun/builtin_plugins/hooks/_auth_checker.py index a539aef9..79fa43e5 100644 --- a/zhenxun/builtin_plugins/hooks/_auth_checker.py +++ b/zhenxun/builtin_plugins/hooks/_auth_checker.py @@ -1,30 +1,30 @@ -from pydantic import BaseModel -from nonebot.matcher import Matcher from nonebot.adapters import Bot, Event -from nonebot_plugin_alconna import At, UniMsg -from nonebot.exception import IgnoredException -from tortoise.exceptions import IntegrityError -from nonebot_plugin_session import EventSession from nonebot.adapters.onebot.v11 import PokeNotifyEvent +from nonebot.exception import IgnoredException +from nonebot.matcher import Matcher +from nonebot_plugin_alconna import At, UniMsg +from nonebot_plugin_session import EventSession +from pydantic import BaseModel +from tortoise.exceptions import IntegrityError -from zhenxun.services.log import logger from zhenxun.configs.config import Config -from zhenxun.utils.message import MessageUtils -from zhenxun.models.level_user import LevelUser from zhenxun.models.bot_console import BotConsole +from zhenxun.models.group_console import GroupConsole +from zhenxun.models.level_user import LevelUser from zhenxun.models.plugin_info import PluginInfo from zhenxun.models.plugin_limit import PluginLimit from zhenxun.models.user_console import UserConsole -from zhenxun.utils.exception import InsufficientGold -from zhenxun.models.group_console import GroupConsole -from zhenxun.utils.utils import FreqLimiter, CountLimiter, UserBlockLimiter +from zhenxun.services.log import logger from zhenxun.utils.enum import ( BlockType, GoldHandle, - PluginType, LimitWatchType, PluginLimitType, + PluginType, ) +from zhenxun.utils.exception import InsufficientGold +from zhenxun.utils.message import MessageUtils +from zhenxun.utils.utils import CountLimiter, FreqLimiter, UserBlockLimiter base_config = Config.get("hook") diff --git a/zhenxun/builtin_plugins/hooks/auth_hook.py b/zhenxun/builtin_plugins/hooks/auth_hook.py index 9df91a4d..0ccca75c 100644 --- a/zhenxun/builtin_plugins/hooks/auth_hook.py +++ b/zhenxun/builtin_plugins/hooks/auth_hook.py @@ -1,5 +1,3 @@ -from typing import Optional - from nonebot.adapters.onebot.v11 import Bot, Event from nonebot.matcher import Matcher from nonebot.message import run_postprocessor, run_preprocessor @@ -27,7 +25,7 @@ async def _( @run_postprocessor async def _( matcher: Matcher, - exception: Optional[Exception], + exception: Exception | None, bot: Bot, event: Event, session: EventSession, diff --git a/zhenxun/builtin_plugins/hooks/ban_hook.py b/zhenxun/builtin_plugins/hooks/ban_hook.py index 5ec48f89..d9030527 100644 --- a/zhenxun/builtin_plugins/hooks/ban_hook.py +++ b/zhenxun/builtin_plugins/hooks/ban_hook.py @@ -1,18 +1,18 @@ -from nonebot.typing import T_State -from nonebot.matcher import Matcher -from nonebot_plugin_alconna import At from nonebot.adapters import Bot, Event -from nonebot.message import run_preprocessor from nonebot.exception import IgnoredException +from nonebot.matcher import Matcher +from nonebot.message import run_preprocessor +from nonebot.typing import T_State +from nonebot_plugin_alconna import At from nonebot_plugin_session import EventSession -from zhenxun.services.log import logger from zhenxun.configs.config import Config -from zhenxun.utils.enum import PluginType -from zhenxun.utils.utils import FreqLimiter -from zhenxun.utils.message import MessageUtils from zhenxun.models.ban_console import BanConsole from zhenxun.models.group_console import GroupConsole +from zhenxun.services.log import logger +from zhenxun.utils.enum import PluginType +from zhenxun.utils.message import MessageUtils +from zhenxun.utils.utils import FreqLimiter Config.add_plugin_config( "hook", diff --git a/zhenxun/builtin_plugins/hooks/chkdsk_hook.py b/zhenxun/builtin_plugins/hooks/chkdsk_hook.py index 915a1969..ec5ccfed 100644 --- a/zhenxun/builtin_plugins/hooks/chkdsk_hook.py +++ b/zhenxun/builtin_plugins/hooks/chkdsk_hook.py @@ -1,20 +1,20 @@ -import time from collections import defaultdict +import time from nonebot.adapters import Event -from nonebot.typing import T_State -from nonebot.matcher import Matcher -from nonebot_plugin_alconna import At from nonebot.adapters.onebot.v11 import Bot -from nonebot.message import run_preprocessor from nonebot.exception import IgnoredException +from nonebot.matcher import Matcher +from nonebot.message import run_preprocessor +from nonebot.typing import T_State +from nonebot_plugin_alconna import At from nonebot_plugin_session import EventSession -from zhenxun.services.log import logger from zhenxun.configs.config import Config +from zhenxun.models.ban_console import BanConsole +from zhenxun.services.log import logger from zhenxun.utils.enum import PluginType from zhenxun.utils.message import MessageUtils -from zhenxun.models.ban_console import BanConsole malicious_check_time = Config.get_config("hook", "MALICIOUS_CHECK_TIME") malicious_ban_count = Config.get_config("hook", "MALICIOUS_BAN_COUNT") diff --git a/zhenxun/builtin_plugins/info/__init__.py b/zhenxun/builtin_plugins/info/__init__.py index 0bb1b2f4..54269c77 100644 --- a/zhenxun/builtin_plugins/info/__init__.py +++ b/zhenxun/builtin_plugins/info/__init__.py @@ -1,14 +1,14 @@ from nonebot.adapters import Bot -from nonebot_plugin_uninfo import Uninfo from nonebot.plugin import PluginMetadata +from nonebot_plugin_alconna import Alconna, Args, Arparma, At, Match, on_alconna +from nonebot_plugin_uninfo import Uninfo from playwright.async_api import TimeoutError -from nonebot_plugin_alconna import At, Args, Match, Alconna, Arparma, on_alconna +from zhenxun.configs.utils import PluginExtraData +from zhenxun.models.group_member_info import GroupInfoUser from zhenxun.services.log import logger from zhenxun.utils.depends import UserName from zhenxun.utils.message import MessageUtils -from zhenxun.configs.utils import PluginExtraData -from zhenxun.models.group_member_info import GroupInfoUser from .my_info import get_user_info diff --git a/zhenxun/builtin_plugins/info/my_info.py b/zhenxun/builtin_plugins/info/my_info.py index 144bf1e9..90f42d5b 100644 --- a/zhenxun/builtin_plugins/info/my_info.py +++ b/zhenxun/builtin_plugins/info/my_info.py @@ -1,18 +1,18 @@ -import random from datetime import datetime, timedelta +import random -from tortoise.functions import Count -from tortoise.expressions import RawSQL -from nonebot_plugin_uninfo import Uninfo from nonebot_plugin_htmlrender import template_to_pic +from nonebot_plugin_uninfo import Uninfo +from tortoise.expressions import RawSQL +from tortoise.functions import Count -from zhenxun.models.sign_user import SignUser -from zhenxun.models.level_user import LevelUser -from zhenxun.models.statistics import Statistics -from zhenxun.utils.platform import PlatformUtils -from zhenxun.models.chat_history import ChatHistory -from zhenxun.models.user_console import UserConsole from zhenxun.configs.path_config import TEMPLATE_PATH +from zhenxun.models.chat_history import ChatHistory +from zhenxun.models.level_user import LevelUser +from zhenxun.models.sign_user import SignUser +from zhenxun.models.statistics import Statistics +from zhenxun.models.user_console import UserConsole +from zhenxun.utils.platform import PlatformUtils RACE = [ "龙族", diff --git a/zhenxun/builtin_plugins/init/__init__.py b/zhenxun/builtin_plugins/init/__init__.py index e48b89bb..3d97a47c 100644 --- a/zhenxun/builtin_plugins/init/__init__.py +++ b/zhenxun/builtin_plugins/init/__init__.py @@ -3,9 +3,9 @@ from pathlib import Path import nonebot from nonebot.adapters import Bot +from zhenxun.models.group_console import GroupConsole from zhenxun.services.log import logger from zhenxun.utils.platform import PlatformUtils -from zhenxun.models.group_console import GroupConsole nonebot.load_plugins(str(Path(__file__).parent.resolve())) diff --git a/zhenxun/builtin_plugins/init/init_config.py b/zhenxun/builtin_plugins/init/init_config.py index a2a7f332..ec6bd170 100644 --- a/zhenxun/builtin_plugins/init/init_config.py +++ b/zhenxun/builtin_plugins/init/init_config.py @@ -1,16 +1,16 @@ from pathlib import Path import nonebot -from ruamel.yaml import YAML -from nonebot.plugin import Plugin -from nonebot.drivers import Driver from nonebot import get_loaded_plugins +from nonebot.drivers import Driver +from nonebot.plugin import Plugin +from ruamel.yaml import YAML from ruamel.yaml.comments import CommentedMap -from zhenxun.services.log import logger from zhenxun.configs.config import Config -from zhenxun.configs.utils import RegisterConfig from zhenxun.configs.path_config import DATA_PATH +from zhenxun.configs.utils import RegisterConfig +from zhenxun.services.log import logger _yaml = YAML(pure=True) _yaml.allow_unicode = True diff --git a/zhenxun/builtin_plugins/init/init_plugin.py b/zhenxun/builtin_plugins/init/init_plugin.py index 37cdeab0..366df312 100644 --- a/zhenxun/builtin_plugins/init/init_plugin.py +++ b/zhenxun/builtin_plugins/init/init_plugin.py @@ -1,24 +1,24 @@ -import nonebot import aiofiles -import ujson as json -from ruamel.yaml import YAML -from nonebot.drivers import Driver +import nonebot from nonebot import get_loaded_plugins +from nonebot.drivers import Driver from nonebot.plugin import Plugin, PluginMetadata +from ruamel.yaml import YAML +import ujson as json -from zhenxun.services.log import logger -from zhenxun.models.task_info import TaskInfo from zhenxun.configs.path_config import DATA_PATH +from zhenxun.configs.utils import PluginExtraData, PluginSetting +from zhenxun.models.group_console import GroupConsole from zhenxun.models.plugin_info import PluginInfo from zhenxun.models.plugin_limit import PluginLimit -from zhenxun.models.group_console import GroupConsole -from zhenxun.configs.utils import PluginSetting, PluginExtraData +from zhenxun.models.task_info import TaskInfo +from zhenxun.services.log import logger from zhenxun.utils.enum import ( BlockType, - PluginType, LimitCheckType, LimitWatchType, PluginLimitType, + PluginType, ) from .manager import manager diff --git a/zhenxun/builtin_plugins/init/manager.py b/zhenxun/builtin_plugins/init/manager.py index 039b2980..52103455 100644 --- a/zhenxun/builtin_plugins/init/manager.py +++ b/zhenxun/builtin_plugins/init/manager.py @@ -2,12 +2,12 @@ from copy import deepcopy from ruamel.yaml import YAML -from zhenxun.services.log import logger from zhenxun.configs.path_config import DATA_PATH +from zhenxun.configs.utils import BaseBlock, PluginCdBlock, PluginCountBlock from zhenxun.models.plugin_info import PluginInfo from zhenxun.models.plugin_limit import PluginLimit +from zhenxun.services.log import logger from zhenxun.utils.enum import BlockType, LimitCheckType, PluginLimitType -from zhenxun.configs.utils import BaseBlock, PluginCdBlock, PluginCountBlock _yaml = YAML(pure=True) _yaml.indent = 2 diff --git a/zhenxun/builtin_plugins/nickname.py b/zhenxun/builtin_plugins/nickname.py index 0ad2cdc5..812e40b6 100644 --- a/zhenxun/builtin_plugins/nickname.py +++ b/zhenxun/builtin_plugins/nickname.py @@ -2,23 +2,23 @@ import random from typing import Any from nonebot import on_regex -from nonebot.rule import to_me from nonebot.adapters import Bot -from nonebot.plugin import PluginMetadata from nonebot.params import Depends, RegexGroup +from nonebot.plugin import PluginMetadata +from nonebot.rule import to_me +from nonebot_plugin_alconna import Alconna, Option, on_alconna, store_true from nonebot_plugin_session import EventSession -from nonebot_plugin_userinfo import UserInfo, EventUserInfo -from nonebot_plugin_alconna import Option, Alconna, on_alconna, store_true +from nonebot_plugin_userinfo import EventUserInfo, UserInfo -from zhenxun.services.log import logger -from zhenxun.utils.enum import PluginType -from zhenxun.utils.depends import UserName -from zhenxun.utils.message import MessageUtils +from zhenxun.configs.config import BotConfig, Config +from zhenxun.configs.utils import PluginExtraData, RegisterConfig from zhenxun.models.ban_console import BanConsole from zhenxun.models.friend_user import FriendUser -from zhenxun.configs.config import Config, BotConfig from zhenxun.models.group_member_info import GroupInfoUser -from zhenxun.configs.utils import RegisterConfig, PluginExtraData +from zhenxun.services.log import logger +from zhenxun.utils.depends import UserName +from zhenxun.utils.enum import PluginType +from zhenxun.utils.message import MessageUtils __plugin_meta__ = PluginMetadata( name="昵称系统", diff --git a/zhenxun/builtin_plugins/platform/qq/group_handle/__init__.py b/zhenxun/builtin_plugins/platform/qq/group_handle/__init__.py index a1729c9c..0cde0a6c 100644 --- a/zhenxun/builtin_plugins/platform/qq/group_handle/__init__.py +++ b/zhenxun/builtin_plugins/platform/qq/group_handle/__init__.py @@ -1,7 +1,5 @@ -from nonebot.adapters import Bot -from nonebot_plugin_uninfo import Uninfo from nonebot import on_notice, on_request -from nonebot.plugin import PluginMetadata +from nonebot.adapters import Bot from nonebot.adapters.onebot.v11 import ( GroupDecreaseNoticeEvent, GroupIncreaseNoticeEvent, @@ -10,17 +8,19 @@ from nonebot.adapters.onebot.v12 import ( GroupMemberDecreaseEvent, GroupMemberIncreaseEvent, ) +from nonebot.plugin import PluginMetadata +from nonebot_plugin_uninfo import Uninfo -from zhenxun.utils.enum import PluginType -from zhenxun.utils.rules import notice_rule -from zhenxun.utils.platform import PlatformUtils -from zhenxun.utils.common_utils import CommonUtils -from zhenxun.configs.config import Config, BotConfig +from zhenxun.builtin_plugins.platform.qq.exception import ForceAddGroupError +from zhenxun.configs.config import BotConfig, Config +from zhenxun.configs.utils import PluginExtraData, RegisterConfig, Task from zhenxun.models.group_console import GroupConsole -from zhenxun.configs.utils import Task, RegisterConfig, PluginExtraData +from zhenxun.utils.common_utils import CommonUtils +from zhenxun.utils.enum import PluginType +from zhenxun.utils.platform import PlatformUtils +from zhenxun.utils.rules import notice_rule from .data_source import GroupManager -from ..exception import ForceAddGroupError __plugin_meta__ = PluginMetadata( name="QQ群事件处理", diff --git a/zhenxun/builtin_plugins/platform/qq/group_handle/data_source.py b/zhenxun/builtin_plugins/platform/qq/group_handle/data_source.py index c32a6139..9ffde102 100644 --- a/zhenxun/builtin_plugins/platform/qq/group_handle/data_source.py +++ b/zhenxun/builtin_plugins/platform/qq/group_handle/data_source.py @@ -1,29 +1,28 @@ -import os -import re -import random -from pathlib import Path from datetime import datetime +import os +from pathlib import Path +import random +import re -import ujson as json from nonebot.adapters import Bot from nonebot_plugin_alconna import At from nonebot_plugin_uninfo import Uninfo +import ujson as json -from zhenxun.services.log import logger +from zhenxun.builtin_plugins.platform.qq.exception import ForceAddGroupError from zhenxun.configs.config import Config -from zhenxun.utils.utils import FreqLimiter -from zhenxun.utils.message import MessageUtils +from zhenxun.configs.path_config import DATA_PATH, IMAGE_PATH from zhenxun.models.fg_request import FgRequest -from zhenxun.models.level_user import LevelUser -from zhenxun.utils.enum import RequestHandleType -from zhenxun.utils.platform import PlatformUtils -from zhenxun.models.plugin_info import PluginInfo -from zhenxun.utils.common_utils import CommonUtils from zhenxun.models.group_console import GroupConsole from zhenxun.models.group_member_info import GroupInfoUser -from zhenxun.configs.path_config import DATA_PATH, IMAGE_PATH - -from ..exception import ForceAddGroupError +from zhenxun.models.level_user import LevelUser +from zhenxun.models.plugin_info import PluginInfo +from zhenxun.services.log import logger +from zhenxun.utils.common_utils import CommonUtils +from zhenxun.utils.enum import RequestHandleType +from zhenxun.utils.message import MessageUtils +from zhenxun.utils.platform import PlatformUtils +from zhenxun.utils.utils import FreqLimiter base_config = Config.get("invite_manager") diff --git a/zhenxun/builtin_plugins/platform/qq_api/ug_watch.py b/zhenxun/builtin_plugins/platform/qq_api/ug_watch.py index 438cb2bc..4e7a708c 100644 --- a/zhenxun/builtin_plugins/platform/qq_api/ug_watch.py +++ b/zhenxun/builtin_plugins/platform/qq_api/ug_watch.py @@ -1,11 +1,11 @@ -from nonebot_plugin_uninfo import Uninfo from nonebot.message import run_preprocessor +from nonebot_plugin_uninfo import Uninfo -from zhenxun.services.log import logger -from zhenxun.utils.platform import PlatformUtils from zhenxun.models.friend_user import FriendUser from zhenxun.models.group_console import GroupConsole from zhenxun.models.group_member_info import GroupInfoUser +from zhenxun.services.log import logger +from zhenxun.utils.platform import PlatformUtils @run_preprocessor diff --git a/zhenxun/builtin_plugins/plugin_store/__init__.py b/zhenxun/builtin_plugins/plugin_store/__init__.py index 06e0b481..ab931dff 100644 --- a/zhenxun/builtin_plugins/plugin_store/__init__.py +++ b/zhenxun/builtin_plugins/plugin_store/__init__.py @@ -1,12 +1,12 @@ from nonebot.permission import SUPERUSER from nonebot.plugin import PluginMetadata +from nonebot_plugin_alconna import Alconna, Args, Subcommand, on_alconna from nonebot_plugin_session import EventSession -from nonebot_plugin_alconna import Args, Alconna, Subcommand, on_alconna +from zhenxun.configs.utils import PluginExtraData from zhenxun.services.log import logger from zhenxun.utils.enum import PluginType from zhenxun.utils.message import MessageUtils -from zhenxun.configs.utils import PluginExtraData from .data_source import ShopManage @@ -153,6 +153,7 @@ async def _(session: EventSession, plugin_id: int | str): logger.info(f"更新插件 Id: {plugin_id}", "插件商店", session=session) await MessageUtils.build_message(result).send() + @_matcher.assign("update_all") async def _(session: EventSession): try: @@ -160,8 +161,6 @@ async def _(session: EventSession): result = await ShopManage.update_all_plugin() except Exception as e: logger.error("更新全部插件失败", "插件商店", session=session, e=e) - await MessageUtils.build_message( - f"更新全部插件失败 e: {e}" - ).finish() + await MessageUtils.build_message(f"更新全部插件失败 e: {e}").finish() logger.info("更新全部插件", "插件商店", session=session) - await MessageUtils.build_message(result).send() \ No newline at end of file + await MessageUtils.build_message(result).send() diff --git a/zhenxun/builtin_plugins/plugin_store/data_source.py b/zhenxun/builtin_plugins/plugin_store/data_source.py index d63309b8..818fb53f 100644 --- a/zhenxun/builtin_plugins/plugin_store/data_source.py +++ b/zhenxun/builtin_plugins/plugin_store/data_source.py @@ -1,21 +1,21 @@ +from pathlib import Path import shutil import subprocess -from pathlib import Path -import ujson as json from aiocache import cached +import ujson as json -from zhenxun.services.log import logger -from zhenxun.utils.http_utils import AsyncHttpx +from zhenxun.builtin_plugins.auto_update.config import REQ_TXT_FILE_STRING +from zhenxun.builtin_plugins.plugin_store.models import StorePluginInfo from zhenxun.models.plugin_info import PluginInfo +from zhenxun.services.log import logger +from zhenxun.services.plugin_init import PluginInitManager from zhenxun.utils.github_utils import GithubUtils from zhenxun.utils.github_utils.models import RepoAPI -from zhenxun.services.plugin_init import PluginInitManager -from zhenxun.builtin_plugins.plugin_store.models import StorePluginInfo -from zhenxun.utils.image_utils import RowStyle, BuildImage, ImageTemplate -from zhenxun.builtin_plugins.auto_update.config import REQ_TXT_FILE_STRING +from zhenxun.utils.http_utils import AsyncHttpx +from zhenxun.utils.image_utils import BuildImage, ImageTemplate, RowStyle -from .config import BASE_PATH, EXTRA_GITHUB_URL, DEFAULT_GITHUB_URL +from .config import BASE_PATH, DEFAULT_GITHUB_URL, EXTRA_GITHUB_URL def row_style(column: str, text: str) -> RowStyle: @@ -418,6 +418,7 @@ class ShopManage: return "已更新插件 {}\n共计{}个插件! 重启后生效".format( "\n- ".join(update_list), len(update_list) ) + @classmethod async def _resolve_plugin_key(cls, plugin_id: int | str) -> str: data: dict[str, StorePluginInfo] = await cls.get_data() diff --git a/zhenxun/builtin_plugins/record_request.py b/zhenxun/builtin_plugins/record_request.py index f7ac4b21..8577692b 100644 --- a/zhenxun/builtin_plugins/record_request.py +++ b/zhenxun/builtin_plugins/record_request.py @@ -1,26 +1,26 @@ -import time from datetime import datetime +import time -from nonebot.plugin import PluginMetadata from nonebot import on_message, on_request -from nonebot_plugin_session import EventSession -from nonebot_plugin_apscheduler import scheduler -from nonebot.adapters.onebot.v11 import Bot as v11Bot -from nonebot.adapters.onebot.v12 import Bot as v12Bot from nonebot.adapters.onebot.v11 import ( ActionFailed, - GroupRequestEvent, FriendRequestEvent, + GroupRequestEvent, ) +from nonebot.adapters.onebot.v11 import Bot as v11Bot +from nonebot.adapters.onebot.v12 import Bot as v12Bot +from nonebot.plugin import PluginMetadata +from nonebot_plugin_apscheduler import scheduler +from nonebot_plugin_session import EventSession -from zhenxun.services.log import logger +from zhenxun.configs.config import BotConfig, Config +from zhenxun.configs.utils import PluginExtraData, RegisterConfig from zhenxun.models.fg_request import FgRequest -from zhenxun.utils.platform import PlatformUtils from zhenxun.models.friend_user import FriendUser -from zhenxun.configs.config import Config, BotConfig from zhenxun.models.group_console import GroupConsole -from zhenxun.configs.utils import RegisterConfig, PluginExtraData -from zhenxun.utils.enum import PluginType, RequestType, RequestHandleType +from zhenxun.services.log import logger +from zhenxun.utils.enum import PluginType, RequestHandleType, RequestType +from zhenxun.utils.platform import PlatformUtils base_config = Config.get("invite_manager") diff --git a/zhenxun/builtin_plugins/restart/__init__.py b/zhenxun/builtin_plugins/restart/__init__.py index 3adce4cc..314404c3 100644 --- a/zhenxun/builtin_plugins/restart/__init__.py +++ b/zhenxun/builtin_plugins/restart/__init__.py @@ -1,23 +1,23 @@ import os -import platform from pathlib import Path +import platform -import nonebot import aiofiles +import nonebot from nonebot import on_command -from nonebot.rule import to_me from nonebot.adapters import Bot from nonebot.params import ArgStr from nonebot.permission import SUPERUSER -from nonebot_plugin_uninfo import Uninfo from nonebot.plugin import PluginMetadata +from nonebot.rule import to_me +from nonebot_plugin_uninfo import Uninfo +from zhenxun.configs.config import BotConfig +from zhenxun.configs.utils import PluginExtraData from zhenxun.services.log import logger from zhenxun.utils.enum import PluginType -from zhenxun.configs.config import BotConfig from zhenxun.utils.message import MessageUtils from zhenxun.utils.platform import PlatformUtils -from zhenxun.configs.utils import PluginExtraData __plugin_meta__ = PluginMetadata( name="重启", diff --git a/zhenxun/builtin_plugins/scheduler/auto_backup.py b/zhenxun/builtin_plugins/scheduler/auto_backup.py index 8b5bc9ac..af5ef382 100644 --- a/zhenxun/builtin_plugins/scheduler/auto_backup.py +++ b/zhenxun/builtin_plugins/scheduler/auto_backup.py @@ -1,10 +1,10 @@ -import shutil from pathlib import Path +import shutil from nonebot_plugin_apscheduler import scheduler -from zhenxun.services.log import logger from zhenxun.configs.config import Config +from zhenxun.services.log import logger Config.add_plugin_config( "_backup", diff --git a/zhenxun/builtin_plugins/scheduler/chat_check.py b/zhenxun/builtin_plugins/scheduler/chat_check.py index 30442a00..4c30ffe2 100644 --- a/zhenxun/builtin_plugins/scheduler/chat_check.py +++ b/zhenxun/builtin_plugins/scheduler/chat_check.py @@ -1,15 +1,15 @@ from datetime import datetime, timedelta -import pytz import nonebot from nonebot_plugin_apscheduler import scheduler +import pytz -from zhenxun.services.log import logger from zhenxun.configs.config import Config -from zhenxun.models.task_info import TaskInfo -from zhenxun.utils.platform import PlatformUtils from zhenxun.models.chat_history import ChatHistory from zhenxun.models.group_console import GroupConsole +from zhenxun.models.task_info import TaskInfo +from zhenxun.services.log import logger +from zhenxun.utils.platform import PlatformUtils Config.add_plugin_config( "chat_check", diff --git a/zhenxun/builtin_plugins/scheduler/morning.py b/zhenxun/builtin_plugins/scheduler/morning.py index d3519219..f8bb9e6f 100644 --- a/zhenxun/builtin_plugins/scheduler/morning.py +++ b/zhenxun/builtin_plugins/scheduler/morning.py @@ -3,14 +3,14 @@ from nonebot.adapters import Bot from nonebot.plugin import PluginMetadata from nonebot_plugin_apscheduler import scheduler -from zhenxun.services.log import logger -from zhenxun.utils.enum import PluginType from zhenxun.configs.config import BotConfig -from zhenxun.utils.message import MessageUtils from zhenxun.configs.path_config import IMAGE_PATH +from zhenxun.configs.utils import PluginExtraData, Task +from zhenxun.services.log import logger from zhenxun.utils.common_utils import CommonUtils +from zhenxun.utils.enum import PluginType +from zhenxun.utils.message import MessageUtils from zhenxun.utils.platform import broadcast_group -from zhenxun.configs.utils import Task, PluginExtraData __plugin_meta__ = PluginMetadata( name="早晚安被动技能", diff --git a/zhenxun/builtin_plugins/scripts.py b/zhenxun/builtin_plugins/scripts.py index 257ad246..27705301 100644 --- a/zhenxun/builtin_plugins/scripts.py +++ b/zhenxun/builtin_plugins/scripts.py @@ -1,15 +1,15 @@ from asyncio.exceptions import TimeoutError -import nonebot import aiofiles -import ujson as json +import nonebot from nonebot.drivers import Driver from nonebot_plugin_apscheduler import scheduler +import ujson as json -from zhenxun.services.log import logger -from zhenxun.utils.http_utils import AsyncHttpx from zhenxun.configs.path_config import TEXT_PATH from zhenxun.models.group_console import GroupConsole +from zhenxun.services.log import logger +from zhenxun.utils.http_utils import AsyncHttpx driver: Driver = nonebot.get_driver() diff --git a/zhenxun/builtin_plugins/shop/__init__.py b/zhenxun/builtin_plugins/shop/__init__.py index 9e80e1a4..5c48c3f2 100644 --- a/zhenxun/builtin_plugins/shop/__init__.py +++ b/zhenxun/builtin_plugins/shop/__init__.py @@ -1,28 +1,28 @@ from nonebot.adapters import Bot, Event -from nonebot_plugin_uninfo import Uninfo from nonebot.plugin import PluginMetadata -from nonebot_plugin_session import EventSession from nonebot_plugin_alconna import ( - Args, - Match, - Query, - Option, - UniMsg, Alconna, + AlconnaQuery, + Args, Arparma, + Match, + Option, + Query, Subcommand, UniMessage, - AlconnaQuery, + UniMsg, on_alconna, store_true, ) +from nonebot_plugin_session import EventSession +from nonebot_plugin_uninfo import Uninfo +from zhenxun.configs.utils import BaseBlock, PluginExtraData from zhenxun.services.log import logger from zhenxun.utils.depends import UserName -from zhenxun.utils.message import MessageUtils -from zhenxun.utils.exception import GoodsNotFound from zhenxun.utils.enum import BlockType, PluginType -from zhenxun.configs.utils import BaseBlock, PluginExtraData +from zhenxun.utils.exception import GoodsNotFound +from zhenxun.utils.message import MessageUtils from ._data_source import ShopManage, gold_rank @@ -184,9 +184,9 @@ async def _( elif isinstance(result, UniMessage): await result.finish(reply_to=True) except GoodsNotFound: - await MessageUtils.build_message(f"没有找到道具 {name.result} 或道具数量不足...").send( - reply_to=True - ) + await MessageUtils.build_message( + f"没有找到道具 {name.result} 或道具数量不足..." + ).send(reply_to=True) @_matcher.assign("gold-list") diff --git a/zhenxun/builtin_plugins/shop/_data_source.py b/zhenxun/builtin_plugins/shop/_data_source.py index 289149f5..58657f86 100644 --- a/zhenxun/builtin_plugins/shop/_data_source.py +++ b/zhenxun/builtin_plugins/shop/_data_source.py @@ -1,27 +1,27 @@ -import time import asyncio -import inspect -from typing import Any, Literal -from types import MappingProxyType from collections.abc import Callable +import inspect +import time +from types import MappingProxyType +from typing import Any, Literal from nonebot.adapters import Bot, Event +from nonebot_plugin_alconna import UniMessage, UniMsg +from nonebot_plugin_session import EventSession from nonebot_plugin_uninfo import Uninfo from pydantic import BaseModel, create_model -from nonebot_plugin_session import EventSession -from nonebot_plugin_alconna import UniMsg, UniMessage -from zhenxun.services.log import logger -from zhenxun.models.goods_info import GoodsInfo -from zhenxun.utils.platform import PlatformUtils -from zhenxun.models.friend_user import FriendUser from zhenxun.configs.path_config import IMAGE_PATH +from zhenxun.models.friend_user import FriendUser +from zhenxun.models.goods_info import GoodsInfo +from zhenxun.models.group_member_info import GroupInfoUser from zhenxun.models.user_console import UserConsole from zhenxun.models.user_gold_log import UserGoldLog -from zhenxun.utils.enum import GoldHandle, PropHandle from zhenxun.models.user_props_log import UserPropsLog -from zhenxun.models.group_member_info import GroupInfoUser +from zhenxun.services.log import logger +from zhenxun.utils.enum import GoldHandle, PropHandle from zhenxun.utils.image_utils import BuildImage, ImageTemplate, text2image +from zhenxun.utils.platform import PlatformUtils ICON_PATH = IMAGE_PATH / "shop_icon" diff --git a/zhenxun/builtin_plugins/sign_in/__init__.py b/zhenxun/builtin_plugins/sign_in/__init__.py index d9e02b7d..17ef93b7 100644 --- a/zhenxun/builtin_plugins/sign_in/__init__.py +++ b/zhenxun/builtin_plugins/sign_in/__init__.py @@ -1,26 +1,25 @@ -from nonebot_plugin_uninfo import Uninfo from nonebot.plugin import PluginMetadata -from nonebot_plugin_session import EventSession -from nonebot_plugin_apscheduler import scheduler from nonebot_plugin_alconna import ( - Args, - Query, - Option, Alconna, - Arparma, AlconnaQuery, + Args, + Arparma, + Option, + Query, on_alconna, store_true, ) +from nonebot_plugin_apscheduler import scheduler +from nonebot_plugin_uninfo import Uninfo +from zhenxun.configs.utils import PluginCdBlock, PluginExtraData, RegisterConfig from zhenxun.services.log import logger from zhenxun.utils.depends import UserName from zhenxun.utils.message import MessageUtils -from zhenxun.configs.utils import PluginCdBlock, RegisterConfig, PluginExtraData from ._data_source import SignManage -from .utils import clear_sign_data_pic from .goods_register import driver # noqa: F401 +from .utils import clear_sign_data_pic __plugin_meta__ = PluginMetadata( name="签到", diff --git a/zhenxun/builtin_plugins/sign_in/_data_source.py b/zhenxun/builtin_plugins/sign_in/_data_source.py index 50b2e21b..8e4a56e4 100644 --- a/zhenxun/builtin_plugins/sign_in/_data_source.py +++ b/zhenxun/builtin_plugins/sign_in/_data_source.py @@ -1,23 +1,23 @@ +from datetime import datetime +from pathlib import Path import random import secrets -from pathlib import Path -from datetime import datetime -import pytz from nonebot_plugin_uninfo import Uninfo +import pytz -from zhenxun.services.log import logger +from zhenxun.configs.path_config import IMAGE_PATH +from zhenxun.models.friend_user import FriendUser +from zhenxun.models.group_member_info import GroupInfoUser from zhenxun.models.sign_log import SignLog from zhenxun.models.sign_user import SignUser -from zhenxun.utils.platform import PlatformUtils -from zhenxun.models.friend_user import FriendUser -from zhenxun.configs.path_config import IMAGE_PATH from zhenxun.models.user_console import UserConsole -from zhenxun.models.group_member_info import GroupInfoUser +from zhenxun.services.log import logger from zhenxun.utils.image_utils import BuildImage, ImageTemplate +from zhenxun.utils.platform import PlatformUtils -from .utils import get_card from ._random_event import random_event +from .utils import get_card ICON_PATH = IMAGE_PATH / "_icon" diff --git a/zhenxun/builtin_plugins/sign_in/utils.py b/zhenxun/builtin_plugins/sign_in/utils.py index 8083a0c0..6fc3dbf8 100644 --- a/zhenxun/builtin_plugins/sign_in/utils.py +++ b/zhenxun/builtin_plugins/sign_in/utils.py @@ -1,30 +1,30 @@ -import os -import random -from io import BytesIO -from pathlib import Path from datetime import datetime +from io import BytesIO +import os +from pathlib import Path +import random -import pytz import nonebot from nonebot.drivers import Driver -from nonebot_plugin_uninfo import Uninfo from nonebot_plugin_htmlrender import template_to_pic +from nonebot_plugin_uninfo import Uninfo +import pytz +from zhenxun.configs.config import BotConfig, Config +from zhenxun.configs.path_config import IMAGE_PATH, TEMPLATE_PATH from zhenxun.models.sign_log import SignLog from zhenxun.models.sign_user import SignUser from zhenxun.utils.http_utils import AsyncHttpx from zhenxun.utils.image_utils import BuildImage -from zhenxun.configs.config import Config, BotConfig -from zhenxun.configs.path_config import IMAGE_PATH, TEMPLATE_PATH from .config import ( + SIGN_BACKGROUND_PATH, SIGN_BORDER_PATH, SIGN_RESOURCE_PATH, - SIGN_BACKGROUND_PATH, SIGN_TODAY_CARD_PATH, + level2attitude, lik2level, lik2relation, - level2attitude, ) assert ( diff --git a/zhenxun/builtin_plugins/statistics/__init__.py b/zhenxun/builtin_plugins/statistics/__init__.py index 5cf30279..8090e1cf 100644 --- a/zhenxun/builtin_plugins/statistics/__init__.py +++ b/zhenxun/builtin_plugins/statistics/__init__.py @@ -25,7 +25,7 @@ statistics_user_file = DATA_PATH / "statistics" / "_prefix_user_count.json" for file in [statistics_group_file, statistics_user_file]: if file.exists(): - with open(file, "r", encoding="utf8") as f: + with open(file, encoding="utf8") as f: data = json.load(f) if not (statistics_group_file.parent / f"{file}.bak").exists(): with open(f"{file}.bak", "w", encoding="utf8") as wf: diff --git a/zhenxun/builtin_plugins/statistics/_data_source.py b/zhenxun/builtin_plugins/statistics/_data_source.py index 61f3981c..d51cb685 100644 --- a/zhenxun/builtin_plugins/statistics/_data_source.py +++ b/zhenxun/builtin_plugins/statistics/_data_source.py @@ -2,14 +2,14 @@ from datetime import datetime, timedelta from tortoise.functions import Count -from zhenxun.utils.enum import PluginType -from zhenxun.models.statistics import Statistics -from zhenxun.utils.image_utils import BuildImage -from zhenxun.models.plugin_info import PluginInfo -from zhenxun.utils.echart_utils import ChartUtils -from zhenxun.utils.echart_utils.models import Barh from zhenxun.models.group_console import GroupConsole from zhenxun.models.group_member_info import GroupInfoUser +from zhenxun.models.plugin_info import PluginInfo +from zhenxun.models.statistics import Statistics +from zhenxun.utils.echart_utils import ChartUtils +from zhenxun.utils.echart_utils.models import Barh +from zhenxun.utils.enum import PluginType +from zhenxun.utils.image_utils import BuildImage class StatisticsManage: diff --git a/zhenxun/builtin_plugins/statistics/statistics_hook.py b/zhenxun/builtin_plugins/statistics/statistics_hook.py index 9842ad09..71455ac0 100644 --- a/zhenxun/builtin_plugins/statistics/statistics_hook.py +++ b/zhenxun/builtin_plugins/statistics/statistics_hook.py @@ -1,18 +1,18 @@ from datetime import datetime -from nonebot.matcher import Matcher from nonebot.adapters import Bot, Event -from nonebot.plugin import PluginMetadata -from nonebot.message import run_postprocessor -from nonebot_plugin_session import EventSession -from nonebot_plugin_apscheduler import scheduler from nonebot.adapters.onebot.v11 import PokeNotifyEvent +from nonebot.matcher import Matcher +from nonebot.message import run_postprocessor +from nonebot.plugin import PluginMetadata +from nonebot_plugin_apscheduler import scheduler +from nonebot_plugin_session import EventSession -from zhenxun.services.log import logger -from zhenxun.utils.enum import PluginType -from zhenxun.models.statistics import Statistics from zhenxun.configs.utils import PluginExtraData from zhenxun.models.plugin_info import PluginInfo +from zhenxun.models.statistics import Statistics +from zhenxun.services.log import logger +from zhenxun.utils.enum import PluginType __plugin_meta__ = PluginMetadata( name="功能调用统计", diff --git a/zhenxun/builtin_plugins/superuser/bot_manage/__init__.py b/zhenxun/builtin_plugins/superuser/bot_manage/__init__.py index f196c167..a794c413 100644 --- a/zhenxun/builtin_plugins/superuser/bot_manage/__init__.py +++ b/zhenxun/builtin_plugins/superuser/bot_manage/__init__.py @@ -1,20 +1,7 @@ -import os -import time - -from nonebot.rule import to_me -from nonebot.utils import run_sync -from nonebot.permission import SUPERUSER from nonebot.plugin import PluginMetadata -from nonebot_plugin_session import EventSession -from nonebot_plugin_apscheduler import scheduler -from nonebot_plugin_alconna import Alconna, on_alconna -from zhenxun.services.log import logger -from zhenxun.utils.enum import PluginType -from zhenxun.utils.message import MessageUtils -from zhenxun.configs.path_config import TEMP_PATH from zhenxun.configs.utils import PluginExtraData -from zhenxun.utils.utils import ResourceDirManager +from zhenxun.utils.enum import PluginType __plugin_meta__ = PluginMetadata( name="Bot管理", diff --git a/zhenxun/builtin_plugins/superuser/broadcast/_data_source.py b/zhenxun/builtin_plugins/superuser/broadcast/_data_source.py index 44d7ebba..195fc429 100644 --- a/zhenxun/builtin_plugins/superuser/broadcast/_data_source.py +++ b/zhenxun/builtin_plugins/superuser/broadcast/_data_source.py @@ -1,6 +1,5 @@ from nonebot.adapters import Bot import nonebot_plugin_alconna as alc -from nonebot_plugin_session import EventSession # from nonebot.adapters.discord import Bot as DiscordBot # from nonebot.adapters.dodo import Bot as DodoBot @@ -8,11 +7,12 @@ from nonebot_plugin_session import EventSession # from nonebot.adapters.onebot.v11 import Bot as v11Bot # from nonebot.adapters.onebot.v12 import Bot as v12Bot from nonebot_plugin_alconna import Image, UniMsg +from nonebot_plugin_session import EventSession from zhenxun.services.log import logger +from zhenxun.utils.common_utils import CommonUtils from zhenxun.utils.message import MessageUtils from zhenxun.utils.platform import PlatformUtils -from zhenxun.utils.common_utils import CommonUtils class BroadcastManage: diff --git a/zhenxun/builtin_plugins/superuser/clear_data.py b/zhenxun/builtin_plugins/superuser/clear_data.py index 10770bf9..6c904942 100644 --- a/zhenxun/builtin_plugins/superuser/clear_data.py +++ b/zhenxun/builtin_plugins/superuser/clear_data.py @@ -47,10 +47,10 @@ async def _(session: EventSession): await MessageUtils.build_message("开始清理临时数据...").send() size = await _clear_data() await MessageUtils.build_message( - "共清理了 {:.2f}MB 的数据...".format(size / 1024 / 1024) + f"共清理了 {size / 1024 / 1024:.2f}MB 的数据..." ).send() logger.info( - "清理临时数据完成,共清理了 {:.2f}MB 的数据...".format(size / 1024 / 1024), + f"清理临时数据完成,共清理了 {size / 1024 / 1024:.2f}MB 的数据...", session=session, ) @@ -79,9 +79,7 @@ def _clear_data() -> float: "清理临时数据", e=e, ) - logger.debug( - "清理临时文件夹大小: {:.2f}MB".format(size / 1024 / 1024), "清理临时数据" - ) + logger.debug(f"清理临时文件夹大小: {size / 1024 / 1024:.2f}MB", "清理临时数据") return float(size) @@ -93,6 +91,6 @@ def _clear_data() -> float: async def _(): size = await _clear_data() logger.info( - "自动清理临时数据完成,共清理了 {:.2f}MB 的数据...".format(size / 1024 / 1024), + f"自动清理临时数据完成,共清理了 {size / 1024 / 1024:.2f}MB 的数据...", "定时任务", ) diff --git a/zhenxun/builtin_plugins/superuser/exec_sql.py b/zhenxun/builtin_plugins/superuser/exec_sql.py index 379e3445..44bcc73d 100644 --- a/zhenxun/builtin_plugins/superuser/exec_sql.py +++ b/zhenxun/builtin_plugins/superuser/exec_sql.py @@ -1,18 +1,18 @@ -from tortoise import Tortoise from nonebot import on_command -from nonebot.rule import to_me from nonebot.permission import SUPERUSER from nonebot.plugin import PluginMetadata +from nonebot.rule import to_me from nonebot_plugin_alconna import UniMsg from nonebot_plugin_session import EventSession +from tortoise import Tortoise -from zhenxun.services.log import logger -from zhenxun.utils.enum import PluginType from zhenxun.configs.config import BotConfig -from zhenxun.utils.message import MessageUtils from zhenxun.configs.utils import PluginExtraData from zhenxun.models.ban_console import BanConsole +from zhenxun.services.log import logger +from zhenxun.utils.enum import PluginType from zhenxun.utils.image_utils import ImageTemplate +from zhenxun.utils.message import MessageUtils __plugin_meta__ = PluginMetadata( name="数据库操作", @@ -57,7 +57,8 @@ SELECT name FROM sqlite_master WHERE type='table'; SELECT_TABLE_PSQL_SQL = """ select a.tablename as name,d.description as desc from pg_tables a left join pg_class c on relname=tablename - left join pg_description d on oid=objoid and objsubid=0 where a.schemaname = 'public' + left join pg_description d on oid=objoid and objsubid=0 + where a.schemaname = 'public' """ diff --git a/zhenxun/builtin_plugins/superuser/fg_manage.py b/zhenxun/builtin_plugins/superuser/fg_manage.py index e2ff51d7..3d1a0d3c 100644 --- a/zhenxun/builtin_plugins/superuser/fg_manage.py +++ b/zhenxun/builtin_plugins/superuser/fg_manage.py @@ -10,7 +10,6 @@ from zhenxun.configs.utils import PluginExtraData from zhenxun.services.log import logger from zhenxun.utils.enum import PluginType from zhenxun.utils.message import MessageUtils -from zhenxun.utils.rules import admin_check, ensure_group __plugin_meta__ = PluginMetadata( name="好友群组列表", @@ -72,7 +71,7 @@ async def _( msg = f"| UID | 昵称 | 共{len(fl)}个好友\n" + msg await MessageUtils.build_message(msg).send() logger.info("查看好友列表", "好友列表", session=session) - except (ApiNotAvailable, AttributeError) as e: + except (ApiNotAvailable, AttributeError): await MessageUtils.build_message("Api未实现...").send() except Exception as e: logger.error("好友列表发生错误", "好友列表", session=session, e=e) @@ -92,7 +91,7 @@ async def _( msg = f"| GID | 名称 | 共{len(gl)}个群组\n" + msg await MessageUtils.build_message(msg).send() logger.info("查看群组列表", "群组列表", session=session) - except (ApiNotAvailable, AttributeError) as e: + except (ApiNotAvailable, AttributeError): await MessageUtils.build_message("Api未实现...").send() except Exception as e: logger.error("查看群组列表发生错误", "群组列表", session=session, e=e) diff --git a/zhenxun/builtin_plugins/superuser/group_manage.py b/zhenxun/builtin_plugins/superuser/group_manage.py index 4c228c2a..3255b23b 100644 --- a/zhenxun/builtin_plugins/superuser/group_manage.py +++ b/zhenxun/builtin_plugins/superuser/group_manage.py @@ -204,8 +204,8 @@ async def _(bot: Bot, session: EventSession, arparma: Arparma, group_id: int): await MessageUtils.build_message(f"退出群组 {group_id} 成功!").send() await GroupConsole.filter(group_id=group_id).delete() except Exception as e: - logger.error(f"退出群组失败", "退群", session=session, target=group_id, e=e) + logger.error("退出群组失败", "退群", session=session, target=group_id, e=e) await MessageUtils.build_message(f"退出群组 {group_id} 失败...").send() else: # TODO: 其他平台的退群操作 - await MessageUtils.build_message(f"暂未支持退群操作...").send() + await MessageUtils.build_message("暂未支持退群操作...").send() diff --git a/zhenxun/builtin_plugins/superuser/set_admin.py b/zhenxun/builtin_plugins/superuser/set_admin.py index 7feaf43c..ad02995e 100644 --- a/zhenxun/builtin_plugins/superuser/set_admin.py +++ b/zhenxun/builtin_plugins/superuser/set_admin.py @@ -1,22 +1,22 @@ from nonebot.permission import SUPERUSER from nonebot.plugin import PluginMetadata -from nonebot_plugin_session import EventSession, SessionLevel from nonebot_plugin_alconna import ( - At, + Alconna, Args, + Arparma, + At, Match, Option, - Alconna, - Arparma, Subcommand, on_alconna, ) +from nonebot_plugin_session import EventSession, SessionLevel +from zhenxun.configs.utils import PluginExtraData +from zhenxun.models.level_user import LevelUser from zhenxun.services.log import logger from zhenxun.utils.enum import PluginType from zhenxun.utils.message import MessageUtils -from zhenxun.models.level_user import LevelUser -from zhenxun.configs.utils import PluginExtraData __plugin_meta__ = PluginMetadata( name="用户权限管理", diff --git a/zhenxun/builtin_plugins/superuser/super_help/__init__.py b/zhenxun/builtin_plugins/superuser/super_help/__init__.py index d9b98097..681cf726 100644 --- a/zhenxun/builtin_plugins/superuser/super_help/__init__.py +++ b/zhenxun/builtin_plugins/superuser/super_help/__init__.py @@ -1,17 +1,17 @@ from nonebot.permission import SUPERUSER from nonebot.plugin import PluginMetadata -from nonebot_plugin_session import EventSession from nonebot_plugin_alconna import Alconna, Arparma, on_alconna +from nonebot_plugin_session import EventSession -from zhenxun.services.log import logger from zhenxun.configs.config import Config +from zhenxun.configs.utils import PluginExtraData, RegisterConfig +from zhenxun.services.log import logger from zhenxun.utils.enum import PluginType from zhenxun.utils.exception import EmptyError from zhenxun.utils.message import MessageUtils -from zhenxun.configs.utils import RegisterConfig, PluginExtraData -from .normal_help import build_help from .config import SUPERUSER_HELP_IMAGE +from .normal_help import build_help from .zhenxun_help import build_html_help __plugin_meta__ = PluginMetadata( diff --git a/zhenxun/builtin_plugins/superuser/super_help/config.py b/zhenxun/builtin_plugins/superuser/super_help/config.py index 55e32f51..5f5371d9 100644 --- a/zhenxun/builtin_plugins/superuser/super_help/config.py +++ b/zhenxun/builtin_plugins/superuser/super_help/config.py @@ -1,8 +1,8 @@ -from pydantic import BaseModel from nonebot.plugin import PluginMetadata +from pydantic import BaseModel -from zhenxun.models.plugin_info import PluginInfo from zhenxun.configs.path_config import IMAGE_PATH +from zhenxun.models.plugin_info import PluginInfo SUPERUSER_HELP_IMAGE = IMAGE_PATH / "SUPERUSER_HELP.png" if SUPERUSER_HELP_IMAGE.exists(): diff --git a/zhenxun/builtin_plugins/superuser/super_help/normal_help.py b/zhenxun/builtin_plugins/superuser/super_help/normal_help.py index 0fbdb774..7407e9e3 100644 --- a/zhenxun/builtin_plugins/superuser/super_help/normal_help.py +++ b/zhenxun/builtin_plugins/superuser/super_help/normal_help.py @@ -1,14 +1,14 @@ -from PIL.ImageFont import FreeTypeFont from nonebot.plugin import PluginMetadata +from PIL.ImageFont import FreeTypeFont -from zhenxun.services.log import logger -from zhenxun.models.task_info import TaskInfo from zhenxun.models.plugin_info import PluginInfo +from zhenxun.models.task_info import TaskInfo +from zhenxun.services.log import logger from zhenxun.utils._build_image import BuildImage -from zhenxun.utils.image_utils import text2image, group_image, build_sort_image +from zhenxun.utils.image_utils import build_sort_image, group_image, text2image -from .utils import get_plugins from .config import SUPERUSER_HELP_IMAGE +from .utils import get_plugins async def build_usage_des_image( diff --git a/zhenxun/builtin_plugins/superuser/super_help/utils.py b/zhenxun/builtin_plugins/superuser/super_help/utils.py index 43ea0e6f..201687ec 100644 --- a/zhenxun/builtin_plugins/superuser/super_help/utils.py +++ b/zhenxun/builtin_plugins/superuser/super_help/utils.py @@ -1,8 +1,8 @@ import nonebot +from zhenxun.models.plugin_info import PluginInfo from zhenxun.utils.enum import PluginType from zhenxun.utils.exception import EmptyError -from zhenxun.models.plugin_info import PluginInfo from .config import PluginData diff --git a/zhenxun/builtin_plugins/superuser/super_help/zhenxun_help.py b/zhenxun/builtin_plugins/superuser/super_help/zhenxun_help.py index cf389e87..0a93a160 100644 --- a/zhenxun/builtin_plugins/superuser/super_help/zhenxun_help.py +++ b/zhenxun/builtin_plugins/superuser/super_help/zhenxun_help.py @@ -1,12 +1,12 @@ from nonebot_plugin_htmlrender import template_to_pic from zhenxun.configs.config import BotConfig +from zhenxun.configs.path_config import TEMPLATE_PATH from zhenxun.models.task_info import TaskInfo from zhenxun.utils._build_image import BuildImage -from zhenxun.configs.path_config import TEMPLATE_PATH -from .utils import get_plugins from .config import SUPERUSER_HELP_IMAGE +from .utils import get_plugins async def get_task() -> dict[str, str] | None: diff --git a/zhenxun/builtin_plugins/web_ui/__init__.py b/zhenxun/builtin_plugins/web_ui/__init__.py index 83ea0c80..bbea8708 100644 --- a/zhenxun/builtin_plugins/web_ui/__init__.py +++ b/zhenxun/builtin_plugins/web_ui/__init__.py @@ -1,29 +1,29 @@ import asyncio import secrets +from fastapi import APIRouter, FastAPI import nonebot -from fastapi import FastAPI, APIRouter -from nonebot.plugin import PluginMetadata from nonebot.log import default_filter, default_format +from nonebot.plugin import PluginMetadata -from zhenxun.utils.enum import PluginType -from zhenxun.services.log import logger, logger_ from zhenxun.configs.config import Config as gConfig -from zhenxun.configs.utils import RegisterConfig, PluginExtraData +from zhenxun.configs.utils import PluginExtraData, RegisterConfig +from zhenxun.services.log import logger, logger_ +from zhenxun.utils.enum import PluginType -from .public import init_public -from .auth import router as auth_router from .api.logs import router as ws_log_routes from .api.logs.log_manager import LOG_STORAGE -from .api.tabs.main import router as main_router -from .api.tabs.manage import router as manage_router -from .api.tabs.system import router as system_router -from .api.tabs.main import ws_router as status_routes -from .api.tabs.database import router as database_router from .api.tabs.dashboard import router as dashboard_router +from .api.tabs.database import router as database_router +from .api.tabs.main import router as main_router +from .api.tabs.main import ws_router as status_routes +from .api.tabs.manage import router as manage_router from .api.tabs.manage.chat import ws_router as chat_routes from .api.tabs.plugin_manage import router as plugin_router from .api.tabs.plugin_manage.store import router as store_router +from .api.tabs.system import router as system_router +from .auth import router as auth_router +from .public import init_public __plugin_meta__ = PluginMetadata( name="WebUi", diff --git a/zhenxun/builtin_plugins/web_ui/api/logs/log_manager.py b/zhenxun/builtin_plugins/web_ui/api/logs/log_manager.py index 83e0fb01..3938c525 100644 --- a/zhenxun/builtin_plugins/web_ui/api/logs/log_manager.py +++ b/zhenxun/builtin_plugins/web_ui/api/logs/log_manager.py @@ -1,6 +1,6 @@ import asyncio +from collections.abc import Awaitable, Callable from typing import Generic, TypeVar -from collections.abc import Callable, Awaitable _T = TypeVar("_T") LogListener = Callable[[_T], Awaitable[None]] diff --git a/zhenxun/builtin_plugins/web_ui/api/logs/logs.py b/zhenxun/builtin_plugins/web_ui/api/logs/logs.py index 1a420583..b7fc660c 100644 --- a/zhenxun/builtin_plugins/web_ui/api/logs/logs.py +++ b/zhenxun/builtin_plugins/web_ui/api/logs/logs.py @@ -1,7 +1,7 @@ -from loguru import logger from fastapi import APIRouter +from loguru import logger from nonebot.utils import escape_tag -from starlette.websockets import WebSocket, WebSocketState, WebSocketDisconnect +from starlette.websockets import WebSocket, WebSocketDisconnect, WebSocketState from .log_manager import LOG_STORAGE diff --git a/zhenxun/builtin_plugins/web_ui/api/tabs/__init__.py b/zhenxun/builtin_plugins/web_ui/api/tabs/__init__.py index 99ed6ea1..19482ba7 100644 --- a/zhenxun/builtin_plugins/web_ui/api/tabs/__init__.py +++ b/zhenxun/builtin_plugins/web_ui/api/tabs/__init__.py @@ -1,5 +1,5 @@ -from .database import * -from .main import * -from .manage import * -from .plugin_manage import * -from .system import * +from .database import * # noqa: F403 +from .main import * # noqa: F403 +from .manage import * # noqa: F403 +from .plugin_manage import * # noqa: F403 +from .system import * # noqa: F403 diff --git a/zhenxun/builtin_plugins/web_ui/api/tabs/dashboard/__init__.py b/zhenxun/builtin_plugins/web_ui/api/tabs/dashboard/__init__.py index 2375d4bf..a17c6a8f 100644 --- a/zhenxun/builtin_plugins/web_ui/api/tabs/dashboard/__init__.py +++ b/zhenxun/builtin_plugins/web_ui/api/tabs/dashboard/__init__.py @@ -1,21 +1,21 @@ from datetime import datetime, timedelta +from fastapi import APIRouter +from fastapi.responses import JSONResponse import nonebot from nonebot import require -from fastapi import APIRouter from nonebot.config import Config -from tortoise.functions import Count from tortoise.expressions import RawSQL -from fastapi.responses import JSONResponse +from tortoise.functions import Count -from zhenxun.models.statistics import Statistics -from zhenxun.models.chat_history import ChatHistory +from builtin_plugins.web_ui.base_model import BaseResultModel, QueryModel, Result +from builtin_plugins.web_ui.utils import authentication from zhenxun.models.bot_connect_log import BotConnectLog +from zhenxun.models.chat_history import ChatHistory +from zhenxun.models.statistics import Statistics from .data_source import BotManage -from ....utils import authentication -from ....base_model import Result, QueryModel, BaseResultModel -from .model import BotInfo, ChatCallMonthCount, QueryChatCallCount, AllChatAndCallCount +from .model import AllChatAndCallCount, BotInfo, ChatCallMonthCount, QueryChatCallCount require("plugin_store") diff --git a/zhenxun/builtin_plugins/web_ui/api/tabs/dashboard/data_source.py b/zhenxun/builtin_plugins/web_ui/api/tabs/dashboard/data_source.py index c4d196c8..d1b2ed1f 100644 --- a/zhenxun/builtin_plugins/web_ui/api/tabs/dashboard/data_source.py +++ b/zhenxun/builtin_plugins/web_ui/api/tabs/dashboard/data_source.py @@ -1,16 +1,16 @@ -import time from datetime import datetime, timedelta +import time import nonebot from nonebot.adapters import Bot from nonebot.drivers import Driver +from builtin_plugins.web_ui.api.tabs.main.data_source import bot_live +from zhenxun.models.chat_history import ChatHistory from zhenxun.models.statistics import Statistics from zhenxun.utils.platform import PlatformUtils -from zhenxun.models.chat_history import ChatHistory from .model import BotInfo -from ..main.data_source import bot_live driver: Driver = nonebot.get_driver() diff --git a/zhenxun/builtin_plugins/web_ui/api/tabs/database/__init__.py b/zhenxun/builtin_plugins/web_ui/api/tabs/database/__init__.py index 8ec609e5..48cba883 100644 --- a/zhenxun/builtin_plugins/web_ui/api/tabs/database/__init__.py +++ b/zhenxun/builtin_plugins/web_ui/api/tabs/database/__init__.py @@ -1,18 +1,18 @@ -import nonebot -from tortoise import Tortoise -from nonebot.drivers import Driver -from fastapi import Request, APIRouter +from fastapi import APIRouter, Request from fastapi.responses import JSONResponse +import nonebot +from nonebot.drivers import Driver +from tortoise import Tortoise from tortoise.exceptions import OperationalError +from builtin_plugins.web_ui.base_model import BaseResultModel, QueryModel, Result +from builtin_plugins.web_ui.utils import authentication from zhenxun.configs.config import BotConfig -from zhenxun.models.task_info import TaskInfo from zhenxun.models.plugin_info import PluginInfo +from zhenxun.models.task_info import TaskInfo +from .models.model import Column, SqlModel, SqlText from .models.sql_log import SqlLog -from ....utils import authentication -from .models.model import Column, SqlText, SqlModel -from ....base_model import Result, QueryModel, BaseResultModel router = APIRouter(prefix="/database") diff --git a/zhenxun/builtin_plugins/web_ui/api/tabs/main/__init__.py b/zhenxun/builtin_plugins/web_ui/api/tabs/main/__init__.py index 98361268..4375fa8f 100644 --- a/zhenxun/builtin_plugins/web_ui/api/tabs/main/__init__.py +++ b/zhenxun/builtin_plugins/web_ui/api/tabs/main/__init__.py @@ -1,35 +1,35 @@ -import time import asyncio import contextlib -from pathlib import Path from datetime import datetime, timedelta +from pathlib import Path +import time -import nonebot from fastapi import APIRouter -from nonebot.config import Config -from tortoise.functions import Count from fastapi.responses import JSONResponse -from websockets.exceptions import ConnectionClosedOK, ConnectionClosedError -from starlette.websockets import WebSocket, WebSocketState, WebSocketDisconnect +import nonebot +from nonebot.config import Config +from starlette.websockets import WebSocket, WebSocketDisconnect, WebSocketState +from tortoise.functions import Count +from websockets.exceptions import ConnectionClosedError, ConnectionClosedOK -from zhenxun.services.log import logger -from zhenxun.models.statistics import Statistics -from zhenxun.utils.platform import PlatformUtils -from zhenxun.models.plugin_info import PluginInfo +from builtin_plugins.web_ui.base_model import Result +from builtin_plugins.web_ui.config import AVA_URL, GROUP_AVA_URL, QueryDateType +from builtin_plugins.web_ui.utils import authentication, get_system_status +from zhenxun.models.bot_connect_log import BotConnectLog from zhenxun.models.chat_history import ChatHistory from zhenxun.models.group_console import GroupConsole -from zhenxun.models.bot_connect_log import BotConnectLog +from zhenxun.models.plugin_info import PluginInfo +from zhenxun.models.statistics import Statistics +from zhenxun.services.log import logger +from zhenxun.utils.platform import PlatformUtils -from ....base_model import Result from .data_source import bot_live -from ....utils import authentication, get_system_status -from ....config import AVA_URL, GROUP_AVA_URL, QueryDateType from .model import ( + ActiveGroup, BaseInfo, HotPlugin, - QueryCount, - ActiveGroup, NonebotData, + QueryCount, TemplateBaseInfo, ) diff --git a/zhenxun/builtin_plugins/web_ui/api/tabs/main/data_source.py b/zhenxun/builtin_plugins/web_ui/api/tabs/main/data_source.py index 281ac701..ca445016 100644 --- a/zhenxun/builtin_plugins/web_ui/api/tabs/main/data_source.py +++ b/zhenxun/builtin_plugins/web_ui/api/tabs/main/data_source.py @@ -1,8 +1,8 @@ import time import nonebot -from nonebot.drivers import Driver from nonebot.adapters.onebot.v11 import Bot +from nonebot.drivers import Driver driver: Driver = nonebot.get_driver() diff --git a/zhenxun/builtin_plugins/web_ui/api/tabs/main/model.py b/zhenxun/builtin_plugins/web_ui/api/tabs/main/model.py index 92834245..95a65515 100644 --- a/zhenxun/builtin_plugins/web_ui/api/tabs/main/model.py +++ b/zhenxun/builtin_plugins/web_ui/api/tabs/main/model.py @@ -1,6 +1,6 @@ -from pydantic import BaseModel from nonebot.adapters import Bot from nonebot.config import Config +from pydantic import BaseModel class SystemStatus(BaseModel): diff --git a/zhenxun/builtin_plugins/web_ui/api/tabs/manage/__init__.py b/zhenxun/builtin_plugins/web_ui/api/tabs/manage/__init__.py index bad05975..c59a60be 100644 --- a/zhenxun/builtin_plugins/web_ui/api/tabs/manage/__init__.py +++ b/zhenxun/builtin_plugins/web_ui/api/tabs/manage/__init__.py @@ -1,41 +1,41 @@ -import nonebot from fastapi import APIRouter -from tortoise.functions import Count from fastapi.responses import JSONResponse +import nonebot from nonebot.adapters.onebot.v11 import ActionFailed +from tortoise.functions import Count -from zhenxun.services.log import logger +from builtin_plugins.web_ui.base_model import Result +from builtin_plugins.web_ui.config import AVA_URL, GROUP_AVA_URL +from builtin_plugins.web_ui.utils import authentication from zhenxun.configs.config import BotConfig -from zhenxun.models.task_info import TaskInfo -from zhenxun.models.fg_request import FgRequest -from zhenxun.models.statistics import Statistics -from zhenxun.utils.platform import PlatformUtils from zhenxun.models.ban_console import BanConsole -from zhenxun.models.plugin_info import PluginInfo -from zhenxun.utils.exception import NotFoundError from zhenxun.models.chat_history import ChatHistory +from zhenxun.models.fg_request import FgRequest from zhenxun.models.group_console import GroupConsole -from zhenxun.utils.enum import RequestType, RequestHandleType +from zhenxun.models.plugin_info import PluginInfo +from zhenxun.models.statistics import Statistics +from zhenxun.models.task_info import TaskInfo +from zhenxun.services.log import logger +from zhenxun.utils.enum import RequestHandleType, RequestType +from zhenxun.utils.exception import NotFoundError +from zhenxun.utils.platform import PlatformUtils -from ....base_model import Result -from ....utils import authentication -from ....config import AVA_URL, GROUP_AVA_URL from .model import ( - Task, - Friend, - Plugin, - ReqResult, - LeaveGroup, - UserDetail, - GroupDetail, - GroupResult, - SendMessage, - UpdateGroup, ClearRequest, DeleteFriend, - HandleRequest, - GroupRequestResult, + Friend, FriendRequestResult, + GroupDetail, + GroupRequestResult, + GroupResult, + HandleRequest, + LeaveGroup, + Plugin, + ReqResult, + SendMessage, + Task, + UpdateGroup, + UserDetail, ) router = APIRouter(prefix="/manage") diff --git a/zhenxun/builtin_plugins/web_ui/api/tabs/manage/chat.py b/zhenxun/builtin_plugins/web_ui/api/tabs/manage/chat.py index 7927536e..d9b54b82 100644 --- a/zhenxun/builtin_plugins/web_ui/api/tabs/manage/chat.py +++ b/zhenxun/builtin_plugins/web_ui/api/tabs/manage/chat.py @@ -1,15 +1,15 @@ -import nonebot from fastapi import APIRouter +import nonebot from nonebot import on_message -from nonebot_plugin_session import EventSession from nonebot.adapters.onebot.v11 import MessageEvent -from nonebot_plugin_alconna import At, Text, Hyper, Image, UniMsg -from starlette.websockets import WebSocket, WebSocketState, WebSocketDisconnect +from nonebot_plugin_alconna import At, Hyper, Image, Text, UniMsg +from nonebot_plugin_session import EventSession +from starlette.websockets import WebSocket, WebSocketDisconnect, WebSocketState -from zhenxun.utils.depends import UserName +from builtin_plugins.web_ui.config import AVA_URL from zhenxun.models.group_member_info import GroupInfoUser +from zhenxun.utils.depends import UserName -from ....config import AVA_URL from .model import Message, MessageItem driver = nonebot.get_driver() diff --git a/zhenxun/builtin_plugins/web_ui/api/tabs/plugin_manage/__init__.py b/zhenxun/builtin_plugins/web_ui/api/tabs/plugin_manage/__init__.py index e4c876e4..0e59e49e 100644 --- a/zhenxun/builtin_plugins/web_ui/api/tabs/plugin_manage/__init__.py +++ b/zhenxun/builtin_plugins/web_ui/api/tabs/plugin_manage/__init__.py @@ -1,21 +1,21 @@ import re import cattrs -from fastapi import Query, APIRouter +from fastapi import APIRouter, Query from fastapi.responses import JSONResponse -from zhenxun.services.log import logger +from builtin_plugins.web_ui.base_model import Result +from builtin_plugins.web_ui.utils import authentication from zhenxun.configs.config import Config -from zhenxun.utils.enum import BlockType, PluginType from zhenxun.models.plugin_info import PluginInfo as DbPluginInfo +from zhenxun.services.log import logger +from zhenxun.utils.enum import BlockType, PluginType -from ....base_model import Result -from ....utils import authentication from .model import ( - PluginInfo, - PluginCount, PluginConfig, + PluginCount, PluginDetail, + PluginInfo, PluginSwitch, UpdatePlugin, ) diff --git a/zhenxun/builtin_plugins/web_ui/api/tabs/plugin_manage/store.py b/zhenxun/builtin_plugins/web_ui/api/tabs/plugin_manage/store.py index 41869068..2ed3c03c 100644 --- a/zhenxun/builtin_plugins/web_ui/api/tabs/plugin_manage/store.py +++ b/zhenxun/builtin_plugins/web_ui/api/tabs/plugin_manage/store.py @@ -1,12 +1,12 @@ -from nonebot import require from fastapi import APIRouter from fastapi.responses import JSONResponse +from nonebot import require +from builtin_plugins.web_ui.base_model import Result +from builtin_plugins.web_ui.utils import authentication from zhenxun.models.plugin_info import PluginInfo from .model import PluginIr -from ....base_model import Result -from ....utils import authentication router = APIRouter(prefix="/store") diff --git a/zhenxun/builtin_plugins/web_ui/api/tabs/system/__init__.py b/zhenxun/builtin_plugins/web_ui/api/tabs/system/__init__.py index c81a06ff..6d6044e9 100644 --- a/zhenxun/builtin_plugins/web_ui/api/tabs/system/__init__.py +++ b/zhenxun/builtin_plugins/web_ui/api/tabs/system/__init__.py @@ -1,16 +1,16 @@ import os -import shutil from pathlib import Path +import shutil import aiofiles from fastapi import APIRouter from fastapi.responses import JSONResponse +from builtin_plugins.web_ui.base_model import Result, SystemFolderSize +from builtin_plugins.web_ui.utils import authentication, get_system_disk from zhenxun.utils._build_image import BuildImage -from ....base_model import Result, SystemFolderSize -from ....utils import authentication, get_system_disk -from .model import AddFile, DirFile, SaveFile, DeleteFile, RenameFile +from .model import AddFile, DeleteFile, DirFile, RenameFile, SaveFile router = APIRouter(prefix="/system") diff --git a/zhenxun/builtin_plugins/web_ui/api/tabs/system/model.py b/zhenxun/builtin_plugins/web_ui/api/tabs/system/model.py index 7cabc86a..e84d6190 100644 --- a/zhenxun/builtin_plugins/web_ui/api/tabs/system/model.py +++ b/zhenxun/builtin_plugins/web_ui/api/tabs/system/model.py @@ -1,6 +1,3 @@ -from datetime import datetime -from typing import Literal, Optional - from pydantic import BaseModel @@ -15,7 +12,7 @@ class DirFile(BaseModel): """是否为图片""" name: str """文件夹或文件名称""" - parent: Optional[str] = None + parent: str | None = None """父级""" @@ -33,7 +30,7 @@ class RenameFile(BaseModel): 删除文件 """ - parent: Optional[str] + parent: str | None """父路径""" old_name: str """旧名称""" @@ -46,7 +43,7 @@ class AddFile(BaseModel): 新建文件 """ - parent: Optional[str] + parent: str | None """父路径""" name: str """新名称""" diff --git a/zhenxun/builtin_plugins/web_ui/auth/__init__.py b/zhenxun/builtin_plugins/web_ui/auth/__init__.py index d5a4ead7..f2080f14 100644 --- a/zhenxun/builtin_plugins/web_ui/auth/__init__.py +++ b/zhenxun/builtin_plugins/web_ui/auth/__init__.py @@ -1,20 +1,20 @@ -import json from datetime import timedelta +import json -import nonebot +import aiofiles from fastapi import APIRouter, Depends from fastapi.security import OAuth2PasswordRequestForm +import nonebot -from zhenxun.configs.config import Config - -from ..base_model import Result -from ..utils import ( +from builtin_plugins.web_ui.base_model import Result +from builtin_plugins.web_ui.utils import ( ACCESS_TOKEN_EXPIRE_MINUTES, create_token, get_user, token_data, token_file, ) +from zhenxun.configs.config import Config app = nonebot.get_app() @@ -40,8 +40,8 @@ async def login_get_token(form_data: OAuth2PasswordRequestForm = Depends()): token_data["token"].append(access_token) if len(token_data["token"]) > 3: token_data["token"] = token_data["token"][1:] - with open(token_file, "w", encoding="utf8") as f: - json.dump(token_data, f, ensure_ascii=False, indent=4) + async with aiofiles.open(token_file, "w", encoding="utf8") as f: + await f.write(json.dumps(token_data, ensure_ascii=False, indent=4)) return Result.ok( {"access_token": access_token, "token_type": "bearer"}, "欢迎回家, 欧尼酱!" ) diff --git a/zhenxun/builtin_plugins/web_ui/config.py b/zhenxun/builtin_plugins/web_ui/config.py index 4fa6fa77..bddcb062 100644 --- a/zhenxun/builtin_plugins/web_ui/config.py +++ b/zhenxun/builtin_plugins/web_ui/config.py @@ -1,6 +1,6 @@ +from fastapi.middleware.cors import CORSMiddleware import nonebot from strenum import StrEnum -from fastapi.middleware.cors import CORSMiddleware from zhenxun.configs.path_config import DATA_PATH, TEMP_PATH diff --git a/zhenxun/builtin_plugins/web_ui/public/__init__.py b/zhenxun/builtin_plugins/web_ui/public/__init__.py index 389c60e9..ff260282 100644 --- a/zhenxun/builtin_plugins/web_ui/public/__init__.py +++ b/zhenxun/builtin_plugins/web_ui/public/__init__.py @@ -1,10 +1,10 @@ -from fastapi import FastAPI, APIRouter +from fastapi import APIRouter, FastAPI from fastapi.responses import FileResponse from fastapi.staticfiles import StaticFiles +from builtin_plugins.web_ui.config import PUBLIC_PATH from zhenxun.services.log import logger -from ..config import PUBLIC_PATH from .data_source import COMMAND_NAME, update_webui_assets router = APIRouter() diff --git a/zhenxun/builtin_plugins/web_ui/public/data_source.py b/zhenxun/builtin_plugins/web_ui/public/data_source.py index a1645178..18f41cc0 100644 --- a/zhenxun/builtin_plugins/web_ui/public/data_source.py +++ b/zhenxun/builtin_plugins/web_ui/public/data_source.py @@ -1,14 +1,13 @@ +from pathlib import Path import shutil import zipfile -from pathlib import Path from nonebot.utils import run_sync +from builtin_plugins.web_ui.config import PUBLIC_PATH, TMP_PATH, WEBUI_DIST_GITHUB_URL from zhenxun.services.log import logger -from zhenxun.utils.http_utils import AsyncHttpx from zhenxun.utils.github_utils import GithubUtils - -from ..config import TMP_PATH, PUBLIC_PATH, WEBUI_DIST_GITHUB_URL +from zhenxun.utils.http_utils import AsyncHttpx COMMAND_NAME = "WebUI资源管理" diff --git a/zhenxun/builtin_plugins/web_ui/utils.py b/zhenxun/builtin_plugins/web_ui/utils.py index 6d2d2235..df2fdd35 100644 --- a/zhenxun/builtin_plugins/web_ui/utils.py +++ b/zhenxun/builtin_plugins/web_ui/utils.py @@ -1,19 +1,19 @@ -import os import contextlib +from datetime import datetime, timedelta, timezone +import os from pathlib import Path -from datetime import datetime, timezone, timedelta -import psutil -import ujson as json -from jose import JWTError, jwt -from nonebot.utils import run_sync from fastapi import Depends, HTTPException from fastapi.security import OAuth2PasswordBearer +from jose import JWTError, jwt +from nonebot.utils import run_sync +import psutil +import ujson as json from zhenxun.configs.config import Config from zhenxun.configs.path_config import DATA_PATH -from .base_model import User, SystemStatus, SystemFolderSize +from .base_model import SystemFolderSize, SystemStatus, User ALGORITHM = "HS256" ACCESS_TOKEN_EXPIRE_MINUTES = 30 diff --git a/zhenxun/builtin_plugins/withdraw.py b/zhenxun/builtin_plugins/withdraw.py index 81056e2c..fb72912a 100644 --- a/zhenxun/builtin_plugins/withdraw.py +++ b/zhenxun/builtin_plugins/withdraw.py @@ -1,15 +1,15 @@ -from nonebot.rule import Rule from nonebot.adapters import Bot, Event -from nonebot_plugin_uninfo import Uninfo from nonebot.plugin import PluginMetadata -from nonebot_plugin_alconna.uniseg.tools import reply_fetch +from nonebot.rule import Rule from nonebot_plugin_alconna import Alconna, Arparma, on_alconna +from nonebot_plugin_alconna.uniseg.tools import reply_fetch +from nonebot_plugin_uninfo import Uninfo +from zhenxun.configs.utils import PluginExtraData from zhenxun.services.log import logger +from zhenxun.utils.manager.message_manager import MessageManager from zhenxun.utils.message import MessageUtils from zhenxun.utils.platform import PlatformUtils -from zhenxun.configs.utils import PluginExtraData -from zhenxun.utils.manager.message_manager import MessageManager __plugin_meta__ = PluginMetadata( name="消息撤回", diff --git a/zhenxun/configs/path_config.py b/zhenxun/configs/path_config.py index 1a22cb02..e100ca2d 100644 --- a/zhenxun/configs/path_config.py +++ b/zhenxun/configs/path_config.py @@ -18,7 +18,6 @@ TEMP_PATH = Path() / "resources" / "temp" TEMPLATE_PATH = Path() / "resources" / "template" - IMAGE_PATH.mkdir(parents=True, exist_ok=True) RECORD_PATH.mkdir(parents=True, exist_ok=True) TEXT_PATH.mkdir(parents=True, exist_ok=True) @@ -26,8 +25,3 @@ LOG_PATH.mkdir(parents=True, exist_ok=True) FONT_PATH.mkdir(parents=True, exist_ok=True) DATA_PATH.mkdir(parents=True, exist_ok=True) TEMP_PATH.mkdir(parents=True, exist_ok=True) - - - - - diff --git a/zhenxun/configs/utils/__init__.py b/zhenxun/configs/utils/__init__.py index fd0a0839..5518e1c3 100644 --- a/zhenxun/configs/utils/__init__.py +++ b/zhenxun/configs/utils/__init__.py @@ -1,16 +1,16 @@ -import copy -from typing import Any -from pathlib import Path from collections.abc import Callable +import copy +from pathlib import Path +from typing import Any import cattrs -from ruamel.yaml import YAML from pydantic import BaseModel +from ruamel.yaml import YAML from ruamel.yaml.scanner import ScannerError -from zhenxun.services.log import logger from zhenxun.configs.path_config import DATA_PATH -from zhenxun.utils.enum import BlockType, PluginType, LimitWatchType, PluginLimitType +from zhenxun.services.log import logger +from zhenxun.utils.enum import BlockType, LimitWatchType, PluginLimitType, PluginType _yaml = YAML(pure=True) _yaml.indent = 2 diff --git a/zhenxun/models/bag_user.py b/zhenxun/models/bag_user.py index 711de8f7..9f829abe 100644 --- a/zhenxun/models/bag_user.py +++ b/zhenxun/models/bag_user.py @@ -1,5 +1,3 @@ -from typing import Dict - from tortoise import fields from zhenxun.services.db_context import Model @@ -8,7 +6,6 @@ from .goods_info import GoodsInfo class BagUser(Model): - id = fields.IntField(pk=True, generated=True, auto_increment=True) """自增id""" user_id = fields.CharField(255) @@ -25,7 +22,7 @@ class BagUser(Model): """今日获取金币""" spend_today_gold = fields.IntField(default=0) """今日获取金币""" - property: Dict[str, int] = fields.JSONField(default={}) # type: ignore + property: dict[str, int] = fields.JSONField(default={}) # type: ignore """道具""" class Meta: @@ -50,7 +47,7 @@ class BagUser(Model): @classmethod async def get_property( cls, user_id: str, group_id: str, only_active: bool = False - ) -> Dict[str, int]: + ) -> dict[str, int]: """获取当前道具 参数: @@ -153,8 +150,10 @@ class BagUser(Model): @classmethod async def _run_script(cls): return [ - "ALTER TABLE bag_users DROP props;", # 删除 props 字段 - "ALTER TABLE bag_users RENAME COLUMN user_qq TO user_id;", # 将user_qq改为user_id + # 删除 props 字段 + "ALTER TABLE bag_users DROP props;", + # 将user_qq改为user_id + "ALTER TABLE bag_users RENAME COLUMN user_qq TO user_id;", "ALTER TABLE bag_users ALTER COLUMN user_id TYPE character varying(255);", # 将user_id字段类型改为character varying(255) "ALTER TABLE bag_users ALTER COLUMN group_id TYPE character varying(255);", diff --git a/zhenxun/models/ban_console.py b/zhenxun/models/ban_console.py index d66d8c2c..5b9e5b2a 100644 --- a/zhenxun/models/ban_console.py +++ b/zhenxun/models/ban_console.py @@ -3,8 +3,8 @@ from typing_extensions import Self from tortoise import fields -from zhenxun.services.log import logger from zhenxun.services.db_context import Model +from zhenxun.services.log import logger from zhenxun.utils.exception import UserAndGroupIsNone diff --git a/zhenxun/models/chat_history.py b/zhenxun/models/chat_history.py index dd603683..5e23887d 100644 --- a/zhenxun/models/chat_history.py +++ b/zhenxun/models/chat_history.py @@ -1,15 +1,14 @@ from datetime import datetime, timedelta from typing import Literal +from typing_extensions import Self from tortoise import fields from tortoise.functions import Count -from typing_extensions import Self from zhenxun.services.db_context import Model class ChatHistory(Model): - id = fields.IntField(pk=True, generated=True, auto_increment=True) """自增id""" user_id = fields.CharField(255) @@ -27,7 +26,7 @@ class ChatHistory(Model): platform = fields.CharField(255, null=True) """平台""" - class Meta: # type: ignore + class Meta: # type: ignore table = "chat_history" table_description = "聊天记录数据表" @@ -116,13 +115,20 @@ class ChatHistory(Model): @classmethod async def _run_script(cls): return [ - "alter table chat_history alter group_id drop not null;", # 允许 group_id 为空 - "alter table chat_history alter text drop not null;", # 允许 text 为空 - "alter table chat_history alter plain_text drop not null;", # 允许 plain_text 为空 - "ALTER TABLE chat_history RENAME COLUMN user_qq TO user_id;", # 将user_id改为user_id - "ALTER TABLE chat_history ALTER COLUMN user_id TYPE character varying(255);", - "ALTER TABLE chat_history ALTER COLUMN group_id TYPE character varying(255);", - "ALTER TABLE chat_history ADD bot_id VARCHAR(255);", # 添加bot_id字段 + # 允许 group_id 为空 + "alter table chat_history alter group_id drop not null;", + # 允许 text 为空 + "alter table chat_history alter text drop not null;", + # 允许 plain_text 为空 + "alter table chat_history alter plain_text drop not null;", + # 将user_id改为user_id + "ALTER TABLE chat_history RENAME COLUMN user_qq TO user_id;", + "ALTER TABLE chat_history " + "ALTER COLUMN user_id TYPE character varying(255);", + "ALTER TABLE chat_history " + "ALTER COLUMN group_id TYPE character varying(255);", + # 添加bot_id字段 + "ALTER TABLE chat_history ADD bot_id VARCHAR(255);", "ALTER TABLE chat_history ALTER COLUMN bot_id TYPE character varying(255);", "ALTER TABLE chat_history ADD COLUMN platform character varying(255);", ] diff --git a/zhenxun/models/fg_request.py b/zhenxun/models/fg_request.py index 6a62fa8d..899ae5dd 100644 --- a/zhenxun/models/fg_request.py +++ b/zhenxun/models/fg_request.py @@ -1,10 +1,10 @@ -from tortoise import fields from nonebot.adapters import Bot +from tortoise import fields -from zhenxun.services.db_context import Model -from zhenxun.utils.exception import NotFoundError from zhenxun.models.group_console import GroupConsole -from zhenxun.utils.enum import RequestType, RequestHandleType +from zhenxun.services.db_context import Model +from zhenxun.utils.enum import RequestHandleType, RequestType +from zhenxun.utils.exception import NotFoundError class FgRequest(Model): diff --git a/zhenxun/models/friend_user.py b/zhenxun/models/friend_user.py index 597ce4f1..e4e5ca03 100644 --- a/zhenxun/models/friend_user.py +++ b/zhenxun/models/friend_user.py @@ -1,5 +1,3 @@ -from typing import Union - from tortoise import fields from zhenxun.configs.config import Config @@ -78,6 +76,8 @@ class FriendUser(Model): @classmethod def _run_script(cls): return [ - "ALTER TABLE friend_users ALTER COLUMN user_id TYPE character varying(255);", - "ALTER TABLE friend_users ADD COLUMN platform character varying(255) default 'qq';", + "ALTER TABLE friend_users " + "ALTER COLUMN user_id TYPE character varying(255);", + "ALTER TABLE friend_users " + "ADD COLUMN platform character varying(255) default 'qq';", ] diff --git a/zhenxun/models/goods_info.py b/zhenxun/models/goods_info.py index f776500b..4560d903 100644 --- a/zhenxun/models/goods_info.py +++ b/zhenxun/models/goods_info.py @@ -1,8 +1,7 @@ +from typing_extensions import Self import uuid -from typing import Dict from tortoise import fields -from typing_extensions import Self from zhenxun.services.db_context import Model @@ -147,7 +146,7 @@ class GoodsInfo(Model): goods_lst = [] for _ in range(len(query)): min_id = min(id_lst) - goods_lst.append([x for x in query if x.id == min_id][0]) + goods_lst.append(next(x for x in query if x.id == min_id)) id_lst.remove(min_id) return goods_lst @@ -158,5 +157,6 @@ class GoodsInfo(Model): "ALTER TABLE goods_info ADD daily_limit Integer DEFAULT 0;", "ALTER TABLE goods_info ADD is_passive boolean DEFAULT False;", "ALTER TABLE goods_info ADD icon VARCHAR(255);", - "ALTER TABLE goods_info DROP daily_purchase_limit;", # 删除 daily_purchase_limit 字段 + # 删除 daily_purchase_limit 字段 + "ALTER TABLE goods_info DROP daily_purchase_limit;", ] diff --git a/zhenxun/models/group_member_info.py b/zhenxun/models/group_member_info.py index dc9100ca..edb74d66 100644 --- a/zhenxun/models/group_member_info.py +++ b/zhenxun/models/group_member_info.py @@ -1,5 +1,3 @@ -from typing import Set - from tortoise import fields from zhenxun.configs.config import Config @@ -30,7 +28,7 @@ class GroupInfoUser(Model): unique_together = ("user_id", "group_id") @classmethod - async def get_all_uid(cls, group_id: str) -> Set[int]: + async def get_all_uid(cls, group_id: str) -> set[int]: """获取该群所有用户id 参数: @@ -101,11 +99,18 @@ class GroupInfoUser(Model): @classmethod async def _run_script(cls): return [ - "alter table group_info_users alter user_join_time drop not null;", # 允许 user_join_time 为空 - "ALTER TABLE group_info_users ALTER COLUMN user_join_time TYPE timestamp with time zone USING user_join_time::timestamp with time zone;", - "ALTER TABLE group_info_users RENAME COLUMN user_qq TO user_id;", # 将user_id改为user_id - "ALTER TABLE group_info_users ALTER COLUMN user_id TYPE character varying(255);", + # 允许 user_join_time 为空 + "alter table group_info_users alter user_join_time drop not null;", + "ALTER TABLE group_info_users " + "ALTER COLUMN user_join_time TYPE timestamp with time zone " + "USING user_join_time::timestamp with time zone;", + # 将user_id改为user_id + "ALTER TABLE group_info_users RENAME COLUMN user_qq TO user_id;", + "ALTER TABLE group_info_users " + "ALTER COLUMN user_id TYPE character varying(255);", # 将user_id字段类型改为character varying(255) - "ALTER TABLE group_info_users ALTER COLUMN group_id TYPE character varying(255);", - "ALTER TABLE group_info_users ADD COLUMN platform character varying(255) default 'qq';", + "ALTER TABLE group_info_users " + "ALTER COLUMN group_id TYPE character varying(255);", + "ALTER TABLE group_info_users " + "ADD COLUMN platform character varying(255) default 'qq';", ] diff --git a/zhenxun/models/level_user.py b/zhenxun/models/level_user.py index c2c4fc31..72ed26e1 100644 --- a/zhenxun/models/level_user.py +++ b/zhenxun/models/level_user.py @@ -1,6 +1,3 @@ -from datetime import datetime -from typing import Union - from tortoise import fields from zhenxun.services.db_context import Model @@ -120,8 +117,11 @@ class LevelUser(Model): @classmethod async def _run_script(cls): return [ - "ALTER TABLE level_users RENAME COLUMN user_qq TO user_id;", # 将user_id改为user_id - "ALTER TABLE level_users ALTER COLUMN user_id TYPE character varying(255);", + # 将user_id改为user_id + "ALTER TABLE level_users RENAME COLUMN user_qq TO user_id;", + "ALTER TABLE level_users " + "ALTER COLUMN user_id TYPE character varying(255);", # 将user_id字段类型改为character varying(255) - "ALTER TABLE level_users ALTER COLUMN group_id TYPE character varying(255);", + "ALTER TABLE level_users " + "ALTER COLUMN group_id TYPE character varying(255);", ] diff --git a/zhenxun/models/plugin_info.py b/zhenxun/models/plugin_info.py index d93e7c6e..aea208bd 100644 --- a/zhenxun/models/plugin_info.py +++ b/zhenxun/models/plugin_info.py @@ -2,9 +2,9 @@ from typing_extensions import Self from tortoise import fields +from zhenxun.models.plugin_limit import PluginLimit # noqa: F401 from zhenxun.services.db_context import Model from zhenxun.utils.enum import BlockType, PluginType -from zhenxun.models.plugin_limit import PluginLimit # noqa: F401 class PluginInfo(Model): diff --git a/zhenxun/models/sign_group_user.py b/zhenxun/models/sign_group_user.py index ca397270..6aab53d1 100644 --- a/zhenxun/models/sign_group_user.py +++ b/zhenxun/models/sign_group_user.py @@ -1,5 +1,4 @@ from datetime import datetime -from typing import List, Literal, Optional, Tuple, Union from tortoise import fields @@ -7,7 +6,6 @@ from zhenxun.services.db_context import Model class SignGroupUser(Model): - id = fields.IntField(pk=True, generated=True, auto_increment=True) """自增id""" user_id = fields.CharField(255) @@ -49,8 +47,8 @@ class SignGroupUser(Model): @classmethod async def get_all_impression( - cls, group_id: Union[int, str] - ) -> Tuple[List[str], List[float], List[str]]: + cls, group_id: int | str + ) -> tuple[list[str], list[float], list[str]]: """ 说明: 获取该群所有用户 id 及对应 好感度 @@ -74,8 +72,11 @@ class SignGroupUser(Model): @classmethod async def _run_script(cls): return [ - "ALTER TABLE sign_group_users RENAME COLUMN user_qq TO user_id;", # 将user_id改为user_id - "ALTER TABLE sign_group_users ALTER COLUMN user_id TYPE character varying(255);", + # 将user_id改为user_id + "ALTER TABLE sign_group_users RENAME COLUMN user_qq TO user_id;", + "ALTER TABLE sign_group_users " + "ALTER COLUMN user_id TYPE character varying(255);", # 将user_id字段类型改为character varying(255) - "ALTER TABLE sign_group_users ALTER COLUMN group_id TYPE character varying(255);", + "ALTER TABLE sign_group_users " + "ALTER COLUMN group_id TYPE character varying(255);", ] diff --git a/zhenxun/models/sign_log.py b/zhenxun/models/sign_log.py index cbfca947..16efd198 100644 --- a/zhenxun/models/sign_log.py +++ b/zhenxun/models/sign_log.py @@ -1,13 +1,9 @@ -from datetime import datetime -from typing import List, Literal, Optional, Tuple, Union - from tortoise import fields from zhenxun.services.db_context import Model class SignLog(Model): - id = fields.IntField(pk=True, generated=True, auto_increment=True) """自增id""" user_id = fields.CharField(255, description="用户id") diff --git a/zhenxun/models/sign_user.py b/zhenxun/models/sign_user.py index eb25b6cb..9fb6299d 100644 --- a/zhenxun/models/sign_user.py +++ b/zhenxun/models/sign_user.py @@ -1,6 +1,7 @@ -from tortoise import fields from typing_extensions import Self +from tortoise import fields + from zhenxun.services.db_context import Model from .sign_log import SignLog @@ -8,7 +9,6 @@ from .user_console import UserConsole class SignUser(Model): - id = fields.IntField(pk=True, generated=True, auto_increment=True) """自增id""" user_id = fields.CharField(255, unique=True, description="用户id") diff --git a/zhenxun/models/user_console.py b/zhenxun/models/user_console.py index 55fd021b..1059ddff 100644 --- a/zhenxun/models/user_console.py +++ b/zhenxun/models/user_console.py @@ -1,5 +1,3 @@ -from typing import Dict - from tortoise import fields from zhenxun.models.goods_info import GoodsInfo @@ -11,7 +9,6 @@ from .user_gold_log import UserGoldLog class UserConsole(Model): - id = fields.IntField(pk=True, generated=True, auto_increment=True) """自增id""" user_id = fields.CharField(255, unique=True, description="用户id") @@ -22,7 +19,7 @@ class UserConsole(Model): """金币数量""" sign = fields.ReverseRelation["SignUser"] # type: ignore """好感度""" - props: Dict[str, int] = fields.JSONField(default={}) # type: ignore + props: dict[str, int] = fields.JSONField(default={}) # type: ignore """道具""" platform = fields.CharField(255, null=True, description="平台") """平台""" diff --git a/zhenxun/models/user_gold_log.py b/zhenxun/models/user_gold_log.py index 30e83242..ebcff2d1 100644 --- a/zhenxun/models/user_gold_log.py +++ b/zhenxun/models/user_gold_log.py @@ -5,7 +5,6 @@ from zhenxun.utils.enum import GoldHandle class UserGoldLog(Model): - id = fields.IntField(pk=True, generated=True, auto_increment=True) """自增id""" user_id = fields.CharField(255, description="用户id") diff --git a/zhenxun/models/user_props.py b/zhenxun/models/user_props.py index 3e3a5e2b..ff9fd6fb 100644 --- a/zhenxun/models/user_props.py +++ b/zhenxun/models/user_props.py @@ -1,21 +1,16 @@ -from typing import Dict - from tortoise import fields from zhenxun.services.db_context import Model -from .sign_user import SignUser - class UserProps(Model): - id = fields.IntField(pk=True, generated=True, auto_increment=True) """自增id""" user_id = fields.CharField(255, unique=True, description="用户id") """用户id""" name = fields.CharField(255, description="道具名称") """道具名称""" - property: Dict[str, int] = fields.JSONField(default={}) # type: ignore + property: dict[str, int] = fields.JSONField(default={}) # type: ignore """道具""" platform = fields.CharField(255, null=True) """平台""" diff --git a/zhenxun/models/user_props_log.py b/zhenxun/models/user_props_log.py index 16ae405c..bc4f3cc4 100644 --- a/zhenxun/models/user_props_log.py +++ b/zhenxun/models/user_props_log.py @@ -1,15 +1,10 @@ -from typing import Dict - from tortoise import fields from zhenxun.services.db_context import Model from zhenxun.utils.enum import PropHandle -from .sign_user import SignUser - class UserPropsLog(Model): - id = fields.IntField(pk=True, generated=True, auto_increment=True) """自增id""" user_id = fields.CharField(255, description="用户id") diff --git a/zhenxun/services/db_context.py b/zhenxun/services/db_context.py index f0b599b5..9a44fa74 100644 --- a/zhenxun/services/db_context.py +++ b/zhenxun/services/db_context.py @@ -1,7 +1,7 @@ +from nonebot.utils import is_coroutine_callable from tortoise import Tortoise from tortoise.connection import connections from tortoise.models import Model as Model_ -from nonebot.utils import is_coroutine_callable from zhenxun.configs.config import BotConfig diff --git a/zhenxun/services/log.py b/zhenxun/services/log.py index d8087ee0..7d80c706 100644 --- a/zhenxun/services/log.py +++ b/zhenxun/services/log.py @@ -1,12 +1,12 @@ -from typing import Any, overload from datetime import datetime, timedelta +from typing import Any, overload from nonebot import require require("nonebot_plugin_session") from loguru import logger as logger_ -from nonebot_plugin_session import Session from nonebot.log import default_filter, default_format +from nonebot_plugin_session import Session from nonebot_plugin_uninfo import Session as uninfoSession from zhenxun.configs.path_config import LOG_PATH diff --git a/zhenxun/services/plugin_init.py b/zhenxun/services/plugin_init.py index 7d6ac487..159e042c 100644 --- a/zhenxun/services/plugin_init.py +++ b/zhenxun/services/plugin_init.py @@ -2,8 +2,8 @@ from abc import ABC, abstractmethod from collections.abc import Callable import nonebot -from pydantic import BaseModel from nonebot.utils import is_coroutine_callable +from pydantic import BaseModel from zhenxun.services.log import logger diff --git a/zhenxun/utils/_build_image.py b/zhenxun/utils/_build_image.py index 3fdf4600..83d82aea 100644 --- a/zhenxun/utils/_build_image.py +++ b/zhenxun/utils/_build_image.py @@ -1,17 +1,17 @@ -import math -import uuid import base64 -import itertools import contextlib from io import BytesIO +import itertools +import math from pathlib import Path -from typing_extensions import Self from typing import Literal, TypeAlias, overload +from typing_extensions import Self +import uuid from nonebot.utils import run_sync +from PIL import Image, ImageDraw, ImageFilter, ImageFont from PIL.Image import Image as tImage from PIL.ImageFont import FreeTypeFont -from PIL import Image, ImageDraw, ImageFont, ImageFilter from zhenxun.configs.path_config import FONT_PATH diff --git a/zhenxun/utils/_build_mat.py b/zhenxun/utils/_build_mat.py index 6f30d301..e41f2cda 100644 --- a/zhenxun/utils/_build_mat.py +++ b/zhenxun/utils/_build_mat.py @@ -1,7 +1,6 @@ -import random from io import BytesIO from pathlib import Path -from re import S +import random from pydantic import BaseModel from strenum import StrEnum @@ -10,7 +9,6 @@ from ._build_image import BuildImage class MatType(StrEnum): - LINE = "LINE" """折线图""" BAR = "BAR" @@ -20,7 +18,6 @@ class MatType(StrEnum): class BuildMatData(BaseModel): - mat_type: MatType """类型""" data: list[int | float] = [] @@ -64,7 +61,6 @@ class BuildMat: """ class InitGraph(BaseModel): - mark_image: BuildImage """BuildImage""" x_height: int @@ -291,7 +287,8 @@ class BuildMat: self.build_data.font, self.build_data.font_size + 4 ) title_width, title_height = BuildImage.get_text_size( - self.build_data.x_name, font # type: ignore + self.build_data.x_name, + font, # type: ignore ) pos = ( A.width - title_width - 20, diff --git a/zhenxun/utils/_image_template.py b/zhenxun/utils/_image_template.py index 56cd2fe4..7f27db76 100644 --- a/zhenxun/utils/_image_template.py +++ b/zhenxun/utils/_image_template.py @@ -1,10 +1,10 @@ -import random +from collections.abc import Callable from io import BytesIO from pathlib import Path -from collections.abc import Callable +import random -from pydantic import BaseModel from PIL.ImageFont import FreeTypeFont +from pydantic import BaseModel from ._build_image import BuildImage diff --git a/zhenxun/utils/common_utils.py b/zhenxun/utils/common_utils.py index 4c36930d..b69069ba 100644 --- a/zhenxun/utils/common_utils.py +++ b/zhenxun/utils/common_utils.py @@ -1,11 +1,11 @@ from nonebot.adapters import Bot -from nonebot_plugin_uninfo import Uninfo, Session, SupportScope, get_interface +from nonebot_plugin_uninfo import Session, SupportScope, Uninfo, get_interface -from zhenxun.services.log import logger from zhenxun.configs.config import BotConfig -from zhenxun.models.task_info import TaskInfo from zhenxun.models.ban_console import BanConsole from zhenxun.models.group_console import GroupConsole +from zhenxun.models.task_info import TaskInfo +from zhenxun.services.log import logger class CommonUtils: diff --git a/zhenxun/utils/decorator/shop.py b/zhenxun/utils/decorator/shop.py index a48b6c2b..61cfa320 100644 --- a/zhenxun/utils/decorator/shop.py +++ b/zhenxun/utils/decorator/shop.py @@ -1,14 +1,13 @@ from collections.abc import Callable -from pydantic import BaseModel -from nonebot.plugin import require from nonebot.adapters.onebot.v11 import Message, MessageSegment +from nonebot.plugin import require +from pydantic import BaseModel from zhenxun.models.goods_info import GoodsInfo class Goods(BaseModel): - before_handle: list[Callable] = [] after_handle: list[Callable] = [] price: int @@ -25,7 +24,6 @@ class Goods(BaseModel): class ShopRegister(dict): - def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self._data: dict[str, Goods] = {} diff --git a/zhenxun/utils/depends/__init__.py b/zhenxun/utils/depends/__init__.py index 767fc2e4..887813dd 100644 --- a/zhenxun/utils/depends/__init__.py +++ b/zhenxun/utils/depends/__init__.py @@ -1,10 +1,10 @@ from typing import Any -from nonebot.params import Command -from nonebot.matcher import Matcher -from nonebot_plugin_uninfo import Uninfo from nonebot.internal.params import Depends +from nonebot.matcher import Matcher +from nonebot.params import Command from nonebot_plugin_session import EventSession +from nonebot_plugin_uninfo import Uninfo from zhenxun.configs.config import Config from zhenxun.utils.message import MessageUtils diff --git a/zhenxun/utils/echart_utils/__init__.py b/zhenxun/utils/echart_utils/__init__.py index 27a53d9a..d3de899e 100644 --- a/zhenxun/utils/echart_utils/__init__.py +++ b/zhenxun/utils/echart_utils/__init__.py @@ -3,8 +3,8 @@ import random from nonebot_plugin_htmlrender import template_to_pic -from zhenxun.utils._build_image import BuildImage from zhenxun.configs.path_config import TEMPLATE_PATH +from zhenxun.utils._build_image import BuildImage from .models import Barh diff --git a/zhenxun/utils/github_utils/__init__.py b/zhenxun/utils/github_utils/__init__.py index eb1b047f..ecb80bb1 100644 --- a/zhenxun/utils/github_utils/__init__.py +++ b/zhenxun/utils/github_utils/__init__.py @@ -1,13 +1,13 @@ from collections.abc import Generator from .const import GITHUB_REPO_URL_PATTERN -from .func import get_fastest_raw_formats, get_fastest_archive_formats -from .models import RepoAPI, RepoInfo, GitHubStrategy, JsdelivrStrategy +from .func import get_fastest_archive_formats, get_fastest_raw_formats +from .models import GitHubStrategy, JsdelivrStrategy, RepoAPI, RepoInfo __all__ = [ - "get_fastest_raw_formats", - "get_fastest_archive_formats", "GithubUtils", + "get_fastest_archive_formats", + "get_fastest_raw_formats", ] diff --git a/zhenxun/utils/github_utils/func.py b/zhenxun/utils/github_utils/func.py index 03c43182..19daf10d 100644 --- a/zhenxun/utils/github_utils/func.py +++ b/zhenxun/utils/github_utils/func.py @@ -1,6 +1,7 @@ from aiocache import cached -from ..http_utils import AsyncHttpx +from zhenxun.utils.http_utils import AsyncHttpx + from .const import ( ARCHIVE_URL_FORMAT, RAW_CONTENT_FORMAT, diff --git a/zhenxun/utils/github_utils/models.py b/zhenxun/utils/github_utils/models.py index a7bbad06..14f9a5ac 100644 --- a/zhenxun/utils/github_utils/models.py +++ b/zhenxun/utils/github_utils/models.py @@ -1,14 +1,15 @@ from typing import Protocol from aiocache import cached -from strenum import StrEnum from pydantic import BaseModel +from strenum import StrEnum + +from zhenxun.utils.http_utils import AsyncHttpx -from ..http_utils import AsyncHttpx from .const import CACHED_API_TTL, GIT_API_TREES_FORMAT, JSD_PACKAGE_API_FORMAT from .func import ( - get_fastest_raw_formats, get_fastest_archive_formats, + get_fastest_raw_formats, get_fastest_release_source_formats, ) diff --git a/zhenxun/utils/http_utils.py b/zhenxun/utils/http_utils.py index dc62f760..00c4fe28 100644 --- a/zhenxun/utils/http_utils.py +++ b/zhenxun/utils/http_utils.py @@ -1,22 +1,22 @@ -import time import asyncio -from pathlib import Path -from typing import Any, Literal, ClassVar +from asyncio.exceptions import TimeoutError from collections.abc import AsyncGenerator from contextlib import asynccontextmanager -from asyncio.exceptions import TimeoutError +from pathlib import Path +import time +from typing import Any, ClassVar, Literal -import rich -import httpx import aiofiles -from retrying import retry -from playwright.async_api import Page +import httpx +from httpx import ConnectTimeout, HTTPStatusError, Response from nonebot_plugin_alconna import UniMessage from nonebot_plugin_htmlrender import get_browser -from httpx import Response, ConnectTimeout, HTTPStatusError +from playwright.async_api import Page +from retrying import retry +import rich -from zhenxun.services.log import logger from zhenxun.configs.config import BotConfig +from zhenxun.services.log import logger from zhenxun.utils.message import MessageUtils from zhenxun.utils.user_agent import get_user_agent diff --git a/zhenxun/utils/image_utils.py b/zhenxun/utils/image_utils.py index ddcabd47..1659ff5c 100644 --- a/zhenxun/utils/image_utils.py +++ b/zhenxun/utils/image_utils.py @@ -1,22 +1,22 @@ -import os -import re -import random +from collections.abc import Awaitable, Callable from io import BytesIO +import os from pathlib import Path -from collections.abc import Callable, Awaitable +import random +import re import cv2 import imagehash -from PIL import Image from nonebot.utils import is_coroutine_callable +from PIL import Image +from zhenxun.configs.path_config import IMAGE_PATH, TEMP_PATH from zhenxun.services.log import logger from zhenxun.utils.http_utils import AsyncHttpx -from zhenxun.configs.path_config import TEMP_PATH, IMAGE_PATH from ._build_image import BuildImage, ColorAlias -from ._build_mat import MatType, BuildMat # noqa: F401 -from ._image_template import RowStyle, ImageTemplate # noqa: F401 +from ._build_mat import BuildMat, MatType # noqa: F401 +from ._image_template import ImageTemplate, RowStyle # noqa: F401 # TODO: text2image 长度错误 @@ -39,8 +39,8 @@ async def text2image( fs / font_size: int -> 特殊文本大小 fc / font_color: Union[str, Tuple[int, int, int]] -> 特殊文本颜色 示例 - 在不在,HibiKi小姐, - 你最近还好吗,我非常想你,这段时间我非常不好过, + 在不在,HibiKi, + 你最近还好吗,我非常想你抽卡抽不到金色,这让我很痛苦 参数: text: 文本 @@ -272,7 +272,6 @@ def group_image(image_list: list[BuildImage]) -> tuple[list[list[BuildImage]], i _min_h = 999999 _min_index = -1 for i, ig in enumerate(image_group): - # if i not in is_use and (_h := sum([x.h for x in ig]) + img.h) > _min_h: if (_h := sum([x.height for x in ig]) + img.height) < _min_h: _min_h = _h _min_index = i diff --git a/zhenxun/utils/message.py b/zhenxun/utils/message.py index d3c9802c..c736d194 100644 --- a/zhenxun/utils/message.py +++ b/zhenxun/utils/message.py @@ -3,22 +3,22 @@ from io import BytesIO from pathlib import Path import nonebot -from pydantic import BaseModel from nonebot.adapters.onebot.v11 import Message, MessageSegment from nonebot_plugin_alconna import ( At, - Text, AtAll, + CustomNode, Image, + Reference, + Text, + UniMessage, Video, Voice, - Reference, - CustomNode, - UniMessage, ) +from pydantic import BaseModel -from zhenxun.services.log import logger from zhenxun.configs.config import BotConfig +from zhenxun.services.log import logger from zhenxun.utils._build_image import BuildImage driver = nonebot.get_driver() diff --git a/zhenxun/utils/platform.py b/zhenxun/utils/platform.py index e60b07cc..2046885b 100644 --- a/zhenxun/utils/platform.py +++ b/zhenxun/utils/platform.py @@ -1,27 +1,27 @@ +from collections.abc import Awaitable, Callable import random from typing import Literal -from collections.abc import Callable, Awaitable import httpx import nonebot -from pydantic import BaseModel from nonebot.adapters import Bot -from nonebot.utils import is_coroutine_callable -from nonebot_plugin_alconna import SupportScope from nonebot.adapters.dodo import Bot as DodoBot +from nonebot.adapters.kaiheila import Bot as KaiheilaBot from nonebot.adapters.onebot.v11 import Bot as v11Bot from nonebot.adapters.onebot.v12 import Bot as v12Bot +from nonebot.utils import is_coroutine_callable +from nonebot_plugin_alconna import SupportScope +from nonebot_plugin_alconna.uniseg import Receipt, Target, UniMessage from nonebot_plugin_uninfo import Uninfo, get_interface -from nonebot.adapters.kaiheila import Bot as KaiheilaBot -from nonebot_plugin_alconna.uniseg import Target, Receipt, UniMessage +from pydantic import BaseModel -from zhenxun.services.log import logger from zhenxun.configs.config import BotConfig -from zhenxun.utils.message import MessageUtils -from zhenxun.utils.http_utils import AsyncHttpx from zhenxun.models.friend_user import FriendUser -from zhenxun.utils.exception import NotFindSuperuser from zhenxun.models.group_console import GroupConsole +from zhenxun.services.log import logger +from zhenxun.utils.exception import NotFindSuperuser +from zhenxun.utils.http_utils import AsyncHttpx +from zhenxun.utils.message import MessageUtils driver = nonebot.get_driver() diff --git a/zhenxun/utils/rules.py b/zhenxun/utils/rules.py index a8ed2cce..d439e3fe 100644 --- a/zhenxun/utils/rules.py +++ b/zhenxun/utils/rules.py @@ -1,8 +1,8 @@ -from nonebot.internal.rule import Rule from nonebot.adapters import Bot, Event +from nonebot.internal.rule import Rule from nonebot.permission import SUPERUSER -from nonebot_plugin_uninfo import Uninfo from nonebot_plugin_session import EventSession +from nonebot_plugin_uninfo import Uninfo from zhenxun.configs.config import Config from zhenxun.models.level_user import LevelUser diff --git a/zhenxun/utils/typing.py b/zhenxun/utils/typing.py index b28b04f6..8b137891 100644 --- a/zhenxun/utils/typing.py +++ b/zhenxun/utils/typing.py @@ -1,3 +1 @@ - - diff --git a/zhenxun/utils/user_agent.py b/zhenxun/utils/user_agent.py index 3047da33..36a29f78 100644 --- a/zhenxun/utils/user_agent.py +++ b/zhenxun/utils/user_agent.py @@ -1,44 +1,69 @@ import random user_agent = [ - "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50", - "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50", + "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) " + "AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50", + "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) " + "AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50", "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0", - "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.3; rv:11.0) like Gecko", + "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; " + ".NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.3; rv:11.0) " + "like Gecko", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)", - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1", + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) " + "Gecko/20100101 Firefox/4.0.1", "Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1", "Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; en) Presto/2.8.131 Version/11.11", "Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11", - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11", + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) " + "AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0)", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; TencentTraveler 4.0)", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; The World)", - "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SE 2.X MetaSr 1.0; SE 2.X MetaSr 1.0; .NET CLR 2.0.50727; SE 2.X MetaSr 1.0)", + "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; " + "Trident/4.0; SE 2.X MetaSr 1.0; " + "SE 2.X MetaSr 1.0; .NET CLR 2.0.50727; SE 2.X MetaSr 1.0)", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser)", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)", - "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5", - "Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5", - "Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5", - "Mozilla/5.0 (Linux; U; Android 2.3.7; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1", - "MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1", - "Opera/9.80 (Android 2.3.4; Linux; Opera Mobi/build-1107180945; U; en-GB) Presto/2.8.149 Version/11.10", - "Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13", - "Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en) AppleWebKit/534.1+ (KHTML, like Gecko) Version/6.0.0.337 Mobile Safari/534.1+", - "Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.0; U; en-US) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/233.70 Safari/534.6 TouchPad/1.0", - "Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/20.0.019; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.18124", - "Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Titan)", + "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) " + "AppleWebKit/533.17.9 (KHTML, like Gecko) " + "Version/5.0.2 Mobile/8J2 Safari/6533.18.5", + "Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) " + "AppleWebKit/533.17.9 (KHTML, like Gecko) " + "Version/5.0.2 Mobile/8J2 Safari/6533.18.5", + "Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; en-us) " + "AppleWebKit/533.17.9 (KHTML, like Gecko) " + "Version/5.0.2 Mobile/8J2 Safari/6533.18.5", + "Mozilla/5.0 (Linux; U; Android 2.3.7; en-us; Nexus One Build/FRF91) " + "AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1", + "MQQBrowser/26 Mozilla/5.0 " + "(Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) " + "AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1", + "Opera/9.80 (Android 2.3.4; Linux; Opera Mobi/build-1107180945; U; en-GB) " + "Presto/2.8.149 Version/11.10", + "Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) " + "AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13", + "Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en) " + "AppleWebKit/534.1+ (KHTML, like Gecko) Version/6.0.0.337 Mobile Safari/534.1+", + "Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.0; U; en-US) " + "AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/233.70 Safari/534.6 TouchPad/1.0", + "Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/20.0.019; " + "Profile/MIDP-2.1 Configuration/CLDC-1.1) " + "AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.18124", + "Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; " + "Trident/5.0; IEMobile/9.0; HTC; Titan)", "UCWEB7.0.2.37/28/999", "NOKIA5700/ UCWEB7.0.2.37/28/999", "Openwave/ UCWEB7.0.2.37/28/999", "Mozilla/4.0 (compatible; MSIE 6.0; ) Opera/UCWEB7.0.2.37/28/999", # iPhone 6: - "Mozilla/6.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/8.0 Mobile/10A5376e Safari/8536.25", + "Mozilla/6.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) " + "AppleWebKit/536.26 (KHTML, like Gecko) Version/8.0 Mobile/10A5376e Safari/8536.25", ] diff --git a/zhenxun/utils/utils.py b/zhenxun/utils/utils.py index 98e734f7..3bdf2df1 100644 --- a/zhenxun/utils/utils.py +++ b/zhenxun/utils/utils.py @@ -1,16 +1,16 @@ +from collections import defaultdict +from datetime import datetime import os +from pathlib import Path import time from typing import Any -from pathlib import Path -from datetime import datetime -from collections import defaultdict -import pytz import httpx import pypinyin +import pytz -from zhenxun.services.log import logger from zhenxun.configs.config import Config +from zhenxun.services.log import logger class ResourceDirManager: diff --git a/zhenxun/utils/withdraw_manage.py b/zhenxun/utils/withdraw_manage.py index f6ab4e0e..3dfc5e80 100644 --- a/zhenxun/utils/withdraw_manage.py +++ b/zhenxun/utils/withdraw_manage.py @@ -1,20 +1,19 @@ import asyncio from nonebot.adapters import Bot -from ruamel.yaml.comments import CommentedSeq -from nonebot_plugin_session import EventSession # from nonebot.adapters.discord import Bot as DiscordBot # from nonebot.adapters.dodo import Bot as DodoBot # from nonebot.adapters.kaiheila import Bot as KaiheilaBot from nonebot.adapters.onebot.v11 import Bot as v11Bot from nonebot.adapters.onebot.v12 import Bot as v12Bot +from nonebot_plugin_session import EventSession +from ruamel.yaml.comments import CommentedSeq from zhenxun.services.log import logger class WithdrawManager: - _data = {} # noqa: RUF012 _index = 0