Develop: 完全使用 ruff 替代 isort 与 black (#1757)

* 🚨 完全使用 ruff 替代 isort 与 black

* 🚨 ruff lint&format
This commit is contained in:
BalconyJH 2024-12-10 19:49:11 +08:00 committed by GitHub
parent 28dd15a950
commit bc5a9c4fcc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
147 changed files with 823 additions and 863 deletions

View File

@ -1,33 +1,16 @@
default_install_hook_types: [pre-commit, prepare-commit-msg] default_install_hook_types: [pre-commit]
ci: ci:
autofix_commit_msg: ":rotating_light: auto fix by pre-commit hooks" autofix_commit_msg: ":rotating_light: auto fix by pre-commit hooks"
autofix_prs: true autofix_prs: true
autoupdate_branch: dev autoupdate_branch: master
autoupdate_schedule: weekly autoupdate_schedule: monthly
autoupdate_commit_msg: ":arrow_up: auto update by pre-commit hooks" autoupdate_commit_msg: ":arrow_up: auto update by pre-commit hooks"
repos: repos:
- repo: https://github.com/astral-sh/ruff-pre-commit - repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.5.6 rev: v0.8.1
hooks: hooks:
- id: ruff - id: ruff
args: [--fix, --exit-non-zero-on-fix] args: [--fix]
stages: [commit] stages: [pre-commit]
- id: ruff-format
- repo: https://github.com/pycqa/isort stages: [pre-commit]
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]

View File

@ -40,7 +40,6 @@ psutil = "^5.9.8"
feedparser = "^6.0.11" feedparser = "^6.0.11"
opencv-python = "^4.9.0.80" opencv-python = "^4.9.0.80"
imagehash = "^4.3.1" imagehash = "^4.3.1"
black = "^24.4.2"
cn2an = "^0.5.22" cn2an = "^0.5.22"
aiohttp = "^3.9.5" aiohttp = "^3.9.5"
dateparser = "^1.2.0" dateparser = "^1.2.0"
@ -59,6 +58,9 @@ pytest-mock = "^3.6.1"
pytest-asyncio = "^0.23.5" pytest-asyncio = "^0.23.5"
pytest-xdist = "^3.3.1" pytest-xdist = "^3.3.1"
respx = "^0.21.1" respx = "^0.21.1"
ruff = "^0.8.0"
pre-commit = "^4.0.0"
[tool.nonebot] [tool.nonebot]
plugins = [ plugins = [
@ -75,31 +77,19 @@ adapters = [
{ name = "开黑啦", module_name = "nonebot.adapters.kaiheila" }, { 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] [tool.ruff]
line-length = 88 line-length = 88
target-version = "py310" target-version = "py310"
[tool.ruff.format]
line-ending = "lf"
[tool.ruff.lint] [tool.ruff.lint]
select = [ select = [
"F", # Pyflakes "F", # Pyflakes
"W", # pycodestyle warnings "W", # pycodestyle warnings
"E", # pycodestyle errors "E", # pycodestyle errors
"I", # isort
"UP", # pyupgrade "UP", # pyupgrade
"ASYNC", # flake8-async "ASYNC", # flake8-async
"C4", # flake8-comprehensions "C4", # flake8-comprehensions
@ -108,6 +98,7 @@ select = [
"PYI", # flake8-pyi "PYI", # flake8-pyi
"PT", # flake8-pytest-style "PT", # flake8-pytest-style
"Q", # flake8-quotes "Q", # flake8-quotes
"TID", # flake8-tidy-imports
"RUF", # Ruff-specific rules "RUF", # Ruff-specific rules
] ]
ignore = [ ignore = [
@ -118,10 +109,18 @@ ignore = [
"RUF003", # ambiguous-unicode-character-comment "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] [tool.ruff.lint.flake8-pytest-style]
fixture-parentheses = false fixture-parentheses = false
mark-parentheses = false mark-parentheses = false
[tool.ruff.lint.pyupgrade]
keep-runtime-typing = true
[tool.pyright] [tool.pyright]
pythonVersion = "3.10" pythonVersion = "3.10"
pythonPlatform = "All" pythonPlatform = "All"

View File

@ -1,18 +1,18 @@
import asyncio
import os import os
import re import re
import asyncio
import nonebot import nonebot
from nonebot.log import logger
# from nonebot.adapters.discord import Adapter as DiscordAdapter # from nonebot.adapters.discord import Adapter as DiscordAdapter
from nonebot.adapters.dodo import Adapter as DoDoAdapter from nonebot.adapters.dodo import Adapter as DoDoAdapter
from nonebot.adapters.kaiheila import Adapter as KaiheilaAdapter from nonebot.adapters.kaiheila import Adapter as KaiheilaAdapter
from nonebot.adapters.onebot.v11 import Adapter as OneBotV11Adapter from nonebot.adapters.onebot.v11 import Adapter as OneBotV11Adapter
from nonebot.log import logger
nonebot.init() nonebot.init()
from zhenxun.services.db_context import init, disconnect from zhenxun.services.db_context import disconnect, init
driver = nonebot.get_driver() driver = nonebot.get_driver()

View File

@ -1,20 +1,20 @@
from collections.abc import Callable
import io import io
import os import os
import tarfile
import zipfile
from typing import cast
from pathlib import Path 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 import Bot
from nonebot.adapters.onebot.v11.message import Message 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.config import BotId, GroupId, MessageId, UserId
from tests.utils import get_response_json as _get_response_json
from tests.utils import _v11_group_message_event, _v11_private_message_send 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: def get_response_json(file: str) -> dict:
@ -62,10 +62,10 @@ def init_mocked_api(mocked_api: MockRouter) -> None:
zip_bytes = io.BytesIO() zip_bytes = io.BytesIO()
from zhenxun.builtin_plugins.auto_update.config import ( from zhenxun.builtin_plugins.auto_update.config import (
REPLACE_FOLDERS,
REQ_TXT_FILE_STRING,
PYPROJECT_FILE_STRING, PYPROJECT_FILE_STRING,
PYPROJECT_LOCK_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): def init_mocker_path(mocker: MockerFixture, tmp_path: Path):
from zhenxun.builtin_plugins.auto_update.config import ( from zhenxun.builtin_plugins.auto_update.config import (
REQ_TXT_FILE_STRING,
VERSION_FILE_STRING,
PYPROJECT_FILE_STRING, PYPROJECT_FILE_STRING,
PYPROJECT_LOCK_FILE_STRING, PYPROJECT_LOCK_FILE_STRING,
REQ_TXT_FILE_STRING,
VERSION_FILE_STRING,
) )
mocker.patch( 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 import _matcher
from zhenxun.builtin_plugins.auto_update.config import ( from zhenxun.builtin_plugins.auto_update.config import (
REPLACE_FOLDERS,
REQ_TXT_FILE_STRING,
PYPROJECT_FILE_STRING, PYPROJECT_FILE_STRING,
PYPROJECT_LOCK_FILE_STRING, PYPROJECT_LOCK_FILE_STRING,
REPLACE_FOLDERS,
REQ_TXT_FILE_STRING,
) )
init_mocked_api(mocked_api=mocked_api) 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 import _matcher
from zhenxun.builtin_plugins.auto_update.config import ( from zhenxun.builtin_plugins.auto_update.config import (
REPLACE_FOLDERS,
REQ_TXT_FILE_STRING,
PYPROJECT_FILE_STRING, PYPROJECT_FILE_STRING,
PYPROJECT_LOCK_FILE_STRING, PYPROJECT_LOCK_FILE_STRING,
REPLACE_FOLDERS,
REQ_TXT_FILE_STRING,
) )
init_mocked_api(mocked_api=mocked_api) 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 import _matcher
from zhenxun.builtin_plugins.auto_update.config import ( from zhenxun.builtin_plugins.auto_update.config import (
REPLACE_FOLDERS,
REQ_TXT_FILE_STRING,
PYPROJECT_FILE_STRING, PYPROJECT_FILE_STRING,
PYPROJECT_LOCK_FILE_STRING, PYPROJECT_LOCK_FILE_STRING,
REPLACE_FOLDERS,
REQ_TXT_FILE_STRING,
) )
init_mocked_api(mocked_api=mocked_api) init_mocked_api(mocked_api=mocked_api)

View File

@ -1,17 +1,17 @@
from collections.abc import Callable
from pathlib import Path
import platform import platform
from typing import cast from typing import cast
from pathlib import Path
from collections.abc import Callable
import nonebot 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 import Bot
from nonebot.adapters.onebot.v11.event import GroupMessageEvent 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.utils import _v11_group_message_event
from tests.config import BotId, UserId, GroupId, MessageId
platform_uname = platform.uname_result( platform_uname = platform.uname_result(
system="Linux", 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 import _matcher
from zhenxun.builtin_plugins.check.data_source import __get_version from zhenxun.builtin_plugins.check.data_source import __get_version
from zhenxun.configs.config import BotConfig
( (
mock_psutil, mock_psutil,
@ -137,9 +137,9 @@ async def test_check_arm(
""" """
测试自检arm 测试自检arm
""" """
from zhenxun.configs.config import BotConfig
from zhenxun.builtin_plugins.check import _matcher from zhenxun.builtin_plugins.check import _matcher
from zhenxun.builtin_plugins.check.data_source import __get_version from zhenxun.builtin_plugins.check.data_source import __get_version
from zhenxun.configs.config import BotConfig
platform_uname_arm = platform.uname_result( platform_uname_arm = platform.uname_result(
system="Linux", system="Linux",

View File

@ -1,18 +1,18 @@
from typing import cast
from pathlib import Path
from collections.abc import Callable 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 import Bot
from nonebot.adapters.onebot.v11.message import Message
from nonebot.adapters.onebot.v11.event import GroupMessageEvent 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.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"]) @pytest.mark.parametrize("package_api", ["jsd", "gh"])

View File

@ -1,16 +1,16 @@
from typing import cast
from pathlib import Path
from collections.abc import Callable 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 import Bot, Message
from nonebot.adapters.onebot.v11.event import GroupMessageEvent 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.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( async def test_plugin_store(

View File

@ -1,19 +1,19 @@
# ruff: noqa: ASYNC230 # ruff: noqa: ASYNC230
from typing import cast
from pathlib import Path
from collections.abc import Callable 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 import Bot
from nonebot.adapters.onebot.v11.message import Message
from nonebot.adapters.onebot.v11.event import GroupMessageEvent 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.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( async def test_remove_plugin(

View File

@ -1,17 +1,17 @@
from typing import cast
from pathlib import Path
from collections.abc import Callable 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 import Bot
from nonebot.adapters.onebot.v11.message import Message
from nonebot.adapters.onebot.v11.event import GroupMessageEvent 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.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( async def test_search_plugin_name(

View File

@ -1,17 +1,17 @@
from typing import cast
from pathlib import Path
from collections.abc import Callable 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 import Bot
from nonebot.adapters.onebot.v11.message import Message
from nonebot.adapters.onebot.v11.event import GroupMessageEvent 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.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( 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")], return_value=[("search_image", "0.0")],
) )
async with app.test_matcher(_matcher) as ctx: async with app.test_matcher(_matcher) as ctx:
bot = create_bot(ctx) bot = create_bot(ctx)
bot: Bot = cast(Bot, bot) bot: Bot = cast(Bot, bot)
@ -90,7 +89,6 @@ async def test_update_all_plugin_basic_is_new(
return_value=[("search_image", "0.1")], return_value=[("search_image", "0.1")],
) )
async with app.test_matcher(_matcher) as ctx: async with app.test_matcher(_matcher) as ctx:
bot = create_bot(ctx) bot = create_bot(ctx)
bot: Bot = cast(Bot, bot) bot: Bot = cast(Bot, bot)

View File

@ -1,17 +1,17 @@
from typing import cast
from pathlib import Path
from collections.abc import Callable 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 import Bot
from nonebot.adapters.onebot.v11.message import Message
from nonebot.adapters.onebot.v11.event import GroupMessageEvent 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.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( async def test_update_plugin_basic_need_update(

View File

@ -1,15 +1,15 @@
import os
import json
from pathlib import Path
from collections.abc import Callable from collections.abc import Callable
import json
import os
from pathlib import Path
import pytest
import nonebot import nonebot
from nonebug.app import App
from respx import MockRouter
from pytest_mock import MockerFixture
from nonebug import NONEBOT_INIT_KWARGS from nonebug import NONEBOT_INIT_KWARGS
from nonebug.app import App
from nonebug.mixin.process import MatcherContext from nonebug.mixin.process import MatcherContext
import pytest
from pytest_mock import MockerFixture
from respx import MockRouter
from tests.config import BotId, UserId from tests.config import BotId, UserId
@ -61,7 +61,7 @@ def _init_bot(nonebug_init: None):
@pytest.fixture @pytest.fixture
async def app(app: App, tmp_path: Path, mocker: MockerFixture): 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() driver = nonebot.get_driver()
# 清除连接钩子,现在 NoneBug 会自动触发 on_bot_connect # 清除连接钩子,现在 NoneBug 会自动触发 on_bot_connect
@ -89,7 +89,7 @@ async def app(app: App, tmp_path: Path, mocker: MockerFixture):
@pytest.fixture @pytest.fixture
def create_bot() -> Callable: 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: def _create_bot(context: MatcherContext) -> Bot:
return context.create_bot( return context.create_bot(

View File

@ -1,8 +1,8 @@
import json import json
from pathlib import Path 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.event import Sender
from nonebot.adapters.onebot.v11 import Message, MessageSegment, GroupMessageEvent
def get_response_json(base_path: Path, file: str) -> dict: def get_response_json(base_path: Path, file: str) -> dict:

View File

@ -1,13 +1,13 @@
import uuid
from datetime import datetime from datetime import datetime
import uuid
import nonebot import nonebot
import ujson as json
from nonebot import require from nonebot import require
from tortoise import Tortoise
from nonebot.adapters import Bot from nonebot.adapters import Bot
from nonebot.drivers import Driver from nonebot.drivers import Driver
from tortoise import Tortoise
from tortoise.exceptions import OperationalError from tortoise.exceptions import OperationalError
import ujson as json
require("nonebot_plugin_apscheduler") require("nonebot_plugin_apscheduler")
require("nonebot_plugin_alconna") require("nonebot_plugin_alconna")
@ -16,15 +16,15 @@ require("nonebot_plugin_userinfo")
require("nonebot_plugin_htmlrender") require("nonebot_plugin_htmlrender")
# require("nonebot_plugin_uninfo") # 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_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.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() driver: Driver = nonebot.get_driver()

View File

@ -1,16 +1,16 @@
from pathlib import Path from pathlib import Path
import aiofiles import aiofiles
from nonebot.rule import to_me
from nonebot_plugin_uninfo import Uninfo
from nonebot.plugin import PluginMetadata from nonebot.plugin import PluginMetadata
from nonebot.rule import to_me
from nonebot_plugin_alconna import Alconna, Arparma, on_alconna 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.services.log import logger
from zhenxun.utils.message import MessageUtils from zhenxun.utils.message import MessageUtils
from zhenxun.utils.platform import PlatformUtils from zhenxun.utils.platform import PlatformUtils
from zhenxun.configs.path_config import DATA_PATH
from zhenxun.configs.utils import PluginExtraData
__plugin_meta__ = PluginMetadata( __plugin_meta__ = PluginMetadata(
name="关于", name="关于",

View File

@ -1,18 +1,18 @@
from nonebot.plugin import PluginMetadata from nonebot.plugin import PluginMetadata
from nonebot_plugin_session import EventSession
from nonebot_plugin_alconna import Alconna, Arparma, on_alconna 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.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.enum import PluginType
from zhenxun.utils.exception import EmptyError from zhenxun.utils.exception import EmptyError
from zhenxun.utils.message import MessageUtils from zhenxun.utils.message import MessageUtils
from zhenxun.utils.rules import admin_check, ensure_group 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 .config import ADMIN_HELP_IMAGE
from .html_help import build_html_help from .html_help import build_html_help
from .normal_help import build_help
__plugin_meta__ = PluginMetadata( __plugin_meta__ = PluginMetadata(
name="群组管理员帮助", name="群组管理员帮助",

View File

@ -1,8 +1,8 @@
from pydantic import BaseModel
from nonebot.plugin import PluginMetadata 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.configs.path_config import IMAGE_PATH
from zhenxun.models.plugin_info import PluginInfo
ADMIN_HELP_IMAGE = IMAGE_PATH / "ADMIN_HELP.png" ADMIN_HELP_IMAGE = IMAGE_PATH / "ADMIN_HELP.png"
if ADMIN_HELP_IMAGE.exists(): if ADMIN_HELP_IMAGE.exists():

View File

@ -1,10 +1,10 @@
from nonebot_plugin_htmlrender import template_to_pic 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.config import BotConfig
from zhenxun.configs.path_config import TEMPLATE_PATH
from zhenxun.models.task_info import TaskInfo from zhenxun.models.task_info import TaskInfo
from zhenxun.utils._build_image import BuildImage 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 from .utils import get_plugins

View File

@ -1,14 +1,14 @@
from PIL.ImageFont import FreeTypeFont
from nonebot.plugin import PluginMetadata 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.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._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 .config import ADMIN_HELP_IMAGE
from .utils import get_plugins
async def build_usage_des_image( async def build_usage_des_image(

View File

@ -1,8 +1,8 @@
import nonebot import nonebot
from zhenxun.models.plugin_info import PluginInfo
from zhenxun.utils.enum import PluginType from zhenxun.utils.enum import PluginType
from zhenxun.utils.exception import EmptyError from zhenxun.utils.exception import EmptyError
from zhenxun.models.plugin_info import PluginInfo
from .config import PluginData from .config import PluginData

View File

@ -1,13 +1,13 @@
from nonebot import on_notice from nonebot import on_notice
from nonebot.plugin import PluginMetadata
from nonebot.adapters.onebot.v11 import GroupAdminNoticeEvent 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.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.enum import PluginType
from zhenxun.utils.rules import notice_rule from zhenxun.utils.rules import notice_rule
from zhenxun.models.level_user import LevelUser
from zhenxun.configs.utils import RegisterConfig, PluginExtraData
__plugin_meta__ = PluginMetadata( __plugin_meta__ = PluginMetadata(
name="群管理员变动监测", name="群管理员变动监测",

View File

@ -2,23 +2,23 @@ from arclet.alconna import Args
from nonebot.adapters import Bot from nonebot.adapters import Bot
from nonebot.permission import SUPERUSER from nonebot.permission import SUPERUSER
from nonebot.plugin import PluginMetadata from nonebot.plugin import PluginMetadata
from nonebot_plugin_session import EventSession
from nonebot_plugin_alconna import ( from nonebot_plugin_alconna import (
Alconna,
Arparma,
At, At,
Match, Match,
Option, Option,
Alconna,
Arparma,
on_alconna, on_alconna,
store_true, 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.services.log import logger
from zhenxun.utils.enum import PluginType from zhenxun.utils.enum import PluginType
from zhenxun.utils.rules import admin_check
from zhenxun.utils.message import MessageUtils from zhenxun.utils.message import MessageUtils
from zhenxun.configs.config import Config, BotConfig from zhenxun.utils.rules import admin_check
from zhenxun.configs.utils import RegisterConfig, PluginExtraData
from ._data_source import BanManage from ._data_source import BanManage
@ -175,10 +175,8 @@ async def _(
_duration = duration.result * 60 if duration.available else -1 _duration = duration.result * 60 if duration.available else -1
_duration_text = f"{duration.result} 分钟" if duration.available else " 到世界湮灭" _duration_text = f"{duration.result} 分钟" if duration.available else " 到世界湮灭"
if (gid := session.id3 or session.id2) and not group_id.available: if (gid := session.id3 or session.id2) and not group_id.available:
if ( if not user_id or (
not user_id user_id == bot.self_id and session.id1 not in bot.config.superusers
or user_id == bot.self_id
and session.id1 not in bot.config.superusers
): ):
_duration = 0.5 _duration = 0.5
await MessageUtils.build_message("倒反天罡,小小管理速速退下!").send() await MessageUtils.build_message("倒反天罡,小小管理速速退下!").send()

View File

@ -3,8 +3,8 @@ from typing import Literal
from nonebot_plugin_session import EventSession from nonebot_plugin_session import EventSession
from zhenxun.models.level_user import LevelUser
from zhenxun.models.ban_console import BanConsole from zhenxun.models.ban_console import BanConsole
from zhenxun.models.level_user import LevelUser
from zhenxun.utils.image_utils import BuildImage, ImageTemplate from zhenxun.utils.image_utils import BuildImage, ImageTemplate

View File

@ -1,19 +1,19 @@
import nonebot import nonebot
from nonebot import on_notice from nonebot import on_notice
from nonebot.adapters import Bot 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.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.services.log import logger
from zhenxun.utils.enum import PluginType from zhenxun.utils.enum import PluginType
from zhenxun.configs.config import BotConfig
from zhenxun.utils.message import MessageUtils from zhenxun.utils.message import MessageUtils
from zhenxun.utils.platform import PlatformUtils from zhenxun.utils.platform import PlatformUtils
from zhenxun.configs.utils import PluginExtraData from zhenxun.utils.rules import admin_check, ensure_group, notice_rule
from zhenxun.utils.rules import admin_check, notice_rule, ensure_group
from ._data_source import MemberUpdateManage from ._data_source import MemberUpdateManage

View File

@ -4,11 +4,11 @@ import nonebot
from nonebot.adapters import Bot from nonebot.adapters import Bot
from nonebot_plugin_uninfo import Member, SceneType, get_interface from nonebot_plugin_uninfo import Member, SceneType, get_interface
from zhenxun.services.log import logger
from zhenxun.configs.config import Config 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.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: class MemberUpdateManage:

View File

@ -41,5 +41,5 @@ async def _(bot: Bot, session: EventSession, arparma: Arparma):
try: try:
await PlatformUtils.update_group(bot) await PlatformUtils.update_group(bot)
await MessageUtils.build_message("已经成功更新了群组信息!").send(reply_to=True) await MessageUtils.build_message("已经成功更新了群组信息!").send(reply_to=True)
except Exception as e: except Exception:
await MessageUtils.build_message("更新群组信息失败!").finish(reply_to=True) await MessageUtils.build_message("更新群组信息失败!").finish(reply_to=True)

View File

@ -1,16 +1,16 @@
from nonebot.adapters import Bot from nonebot.adapters import Bot
from nonebot.plugin import PluginMetadata from nonebot.plugin import PluginMetadata
from nonebot_plugin_alconna import AlconnaQuery, Arparma, Match, Query
from nonebot_plugin_session import EventSession 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.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.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_plugin, build_task, delete_help_image
from ._data_source import PluginManage, build_task, build_plugin, delete_help_image from .command import _group_status_matcher, _status_matcher
base_config = Config.get("plugin_switch") base_config = Config.get("plugin_switch")

View File

@ -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.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" HELP_FILE = IMAGE_PATH / "SIMPLE_HELP.png"
@ -35,12 +35,8 @@ def plugin_row_style(column: str, text: str) -> RowStyle:
RowStyle: RowStyle RowStyle: RowStyle
""" """
style = RowStyle() style = RowStyle()
if ( if (column == "全局状态" and text == "开启") or (
column == "全局状态" column != "全局状态" and column == "加载状态" and text == "SUCCESS"
and text == "开启"
or column != "全局状态"
and column == "加载状态"
and text == "SUCCESS"
): ):
style.font_color = "#67C23A" style.font_color = "#67C23A"
elif column in {"全局状态", "加载状态"}: elif column in {"全局状态", "加载状态"}:

View File

@ -1,21 +1,21 @@
import shutil
from pathlib import Path from pathlib import Path
import shutil
from typing import Annotated from typing import Annotated
import ujson as json
from nonebot import on_command from nonebot import on_command
from nonebot.params import Command from nonebot.params import Command
from nonebot.plugin import PluginMetadata from nonebot.plugin import PluginMetadata
from nonebot_plugin_alconna import Image, Text, UniMsg
from nonebot_plugin_session import EventSession 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.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.enum import PluginType
from zhenxun.utils.http_utils import AsyncHttpx 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.utils.rules import admin_check, ensure_group
from zhenxun.configs.utils import RegisterConfig, PluginExtraData
base_config = Config.get("admin_bot_manage") base_config = Config.get("admin_bot_manage")

View File

@ -1,14 +1,14 @@
from nonebot.rule import to_me
from nonebot.adapters import Bot from nonebot.adapters import Bot
from nonebot.permission import SUPERUSER from nonebot.permission import SUPERUSER
from nonebot.plugin import PluginMetadata 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_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.services.log import logger
from zhenxun.utils.enum import PluginType from zhenxun.utils.enum import PluginType
from zhenxun.utils.message import MessageUtils from zhenxun.utils.message import MessageUtils
from zhenxun.configs.utils import RegisterConfig, PluginExtraData
from ._data_source import UpdateManage from ._data_source import UpdateManage

View File

@ -1,35 +1,35 @@
import os import os
import shutil import shutil
import subprocess
import tarfile import tarfile
import zipfile import zipfile
import subprocess
from nonebot.adapters import Bot from nonebot.adapters import Bot
from nonebot.utils import run_sync from nonebot.utils import run_sync
from zhenxun.services.log import logger 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 import GithubUtils
from zhenxun.utils.github_utils.models import RepoInfo from zhenxun.utils.github_utils.models import RepoInfo
from zhenxun.utils.http_utils import AsyncHttpx
from zhenxun.utils.platform import PlatformUtils
from .config import ( from .config import (
TMP_PATH,
BASE_PATH,
BACKUP_PATH, BACKUP_PATH,
RELEASE_URL, BASE_PATH,
REQ_TXT_FILE,
VERSION_FILE,
PYPROJECT_FILE,
REPLACE_FOLDERS,
BASE_PATH_STRING, BASE_PATH_STRING,
DEFAULT_GITHUB_URL,
DOWNLOAD_GZ_FILE, DOWNLOAD_GZ_FILE,
DOWNLOAD_ZIP_FILE, DOWNLOAD_ZIP_FILE,
DEFAULT_GITHUB_URL, PYPROJECT_FILE,
PYPROJECT_LOCK_FILE,
REQ_TXT_FILE_STRING,
PYPROJECT_FILE_STRING, PYPROJECT_FILE_STRING,
PYPROJECT_LOCK_FILE,
PYPROJECT_LOCK_FILE_STRING, PYPROJECT_LOCK_FILE_STRING,
RELEASE_URL,
REPLACE_FOLDERS,
REQ_TXT_FILE,
REQ_TXT_FILE_STRING,
TMP_PATH,
VERSION_FILE,
) )

View File

@ -2,8 +2,8 @@ from typing import Any
from nonebot.adapters import Bot from nonebot.adapters import Bot
from zhenxun.services.log import logger
from zhenxun.configs.config import Config from zhenxun.configs.config import Config
from zhenxun.services.log import logger
Config.add_plugin_config( Config.add_plugin_config(
"catchphrase", "catchphrase",

View File

@ -1,4 +1,5 @@
import nonebot
from pathlib import Path from pathlib import Path
import nonebot
nonebot.load_plugins(str(Path(__file__).parent.resolve())) nonebot.load_plugins(str(Path(__file__).parent.resolve()))

View File

@ -70,7 +70,7 @@ async def _():
await ChatHistory.bulk_create(message_list) await ChatHistory.bulk_create(message_list)
logger.debug(f"批量添加聊天记录 {len(message_list)}", "定时任务") logger.debug(f"批量添加聊天记录 {len(message_list)}", "定时任务")
except Exception as e: except Exception as e:
logger.error(f"定时批量添加聊天记录", "定时任务", e=e) logger.error("定时批量添加聊天记录", "定时任务", e=e)
# @test.handle() # @test.handle()

View File

@ -1,6 +1,5 @@
from datetime import datetime, timedelta from datetime import datetime, timedelta
import pytz
from nonebot.plugin import PluginMetadata from nonebot.plugin import PluginMetadata
from nonebot_plugin_alconna import ( from nonebot_plugin_alconna import (
Alconna, Alconna,
@ -13,6 +12,7 @@ from nonebot_plugin_alconna import (
store_true, store_true,
) )
from nonebot_plugin_session import EventSession from nonebot_plugin_session import EventSession
import pytz
from zhenxun.configs.utils import PluginExtraData from zhenxun.configs.utils import PluginExtraData
from zhenxun.models.chat_history import ChatHistory from zhenxun.models.chat_history import ChatHistory
@ -113,7 +113,10 @@ async def _(
date_scope = time_now.replace(microsecond=0) date_scope = time_now.replace(microsecond=0)
date_str = f"{str(date_scope).split('+')[0]} - 至今" date_str = f"{str(date_scope).split('+')[0]} - 至今"
else: 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( A = await ImageTemplate.table_page(
f"消息排行({count.result})", date_str, column_name, data_list f"消息排行({count.result})", date_str, column_name, data_list
) )

View File

@ -1,17 +1,17 @@
from dataclasses import dataclass
import os import os
from pathlib import Path
import platform import platform
import subprocess import subprocess
from pathlib import Path
from dataclasses import dataclass
import psutil
import cpuinfo import cpuinfo
import nonebot import nonebot
from pydantic import BaseModel
from nonebot.utils import run_sync 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.configs.config import BotConfig
from zhenxun.services.log import logger
from zhenxun.utils.http_utils import AsyncHttpx from zhenxun.utils.http_utils import AsyncHttpx
BAIDU_URL = "https://www.baidu.com/" BAIDU_URL = "https://www.baidu.com/"

View File

@ -1,23 +1,23 @@
from nonebot.rule import to_me
from nonebot.adapters import Bot from nonebot.adapters import Bot
from nonebot_plugin_uninfo import Uninfo
from nonebot.plugin import PluginMetadata from nonebot.plugin import PluginMetadata
from nonebot.rule import to_me
from nonebot_plugin_alconna import ( from nonebot_plugin_alconna import (
Args,
Match,
Query,
Option,
Alconna, Alconna,
AlconnaQuery, AlconnaQuery,
Args,
Match,
Option,
Query,
on_alconna, on_alconna,
store_true, 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.services.log import logger
from zhenxun.utils.enum import PluginType from zhenxun.utils.enum import PluginType
from zhenxun.utils.message import MessageUtils 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 from ._data_source import create_help_img, get_plugin_help

View File

@ -1,16 +1,16 @@
import nonebot import nonebot
from nonebot_plugin_uninfo import Uninfo 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.level_user import LevelUser
from zhenxun.models.plugin_info import PluginInfo 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 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 .html_help import build_html_image
from .normal_help import build_normal_image from .normal_help import build_normal_image
from .zhenxun_help import build_zhenxun_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" random_bk_path = IMAGE_PATH / "background" / "help" / "simple_help"

View File

@ -1,8 +1,8 @@
from collections.abc import Callable 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.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]]: async def sort_type() -> dict[str, list[PluginInfo]]:

View File

@ -1,13 +1,13 @@
import os import os
import random import random
from pydantic import BaseModel
from nonebot_plugin_htmlrender import template_to_pic 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.configs.path_config import TEMPLATE_PATH
from zhenxun.models.group_console import GroupConsole 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 from ._utils import classify_plugin

View File

@ -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.configs.path_config import IMAGE_PATH
from zhenxun.models.group_console import GroupConsole 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 from ._utils import sort_type

View File

@ -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_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.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.configs.path_config import TEMPLATE_PATH
from zhenxun.models.group_console import GroupConsole 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 from ._utils import classify_plugin

View File

@ -2,20 +2,20 @@ import os
import random import random
from nonebot import on_message from nonebot import on_message
from nonebot.rule import to_me
from nonebot.matcher import Matcher from nonebot.matcher import Matcher
from nonebot.plugin import PluginMetadata from nonebot.plugin import PluginMetadata
from nonebot.rule import to_me
from nonebot_plugin_alconna import UniMsg from nonebot_plugin_alconna import UniMsg
from nonebot_plugin_session import EventSession 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.services.log import logger
from zhenxun.utils.enum import PluginType from zhenxun.utils.enum import PluginType
from zhenxun.utils.message import MessageUtils 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( __plugin_meta__ = PluginMetadata(
name="笨蛋检测", name="笨蛋检测",

View File

@ -1,30 +1,30 @@
from pydantic import BaseModel
from nonebot.matcher import Matcher
from nonebot.adapters import Bot, Event 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.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.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.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_info import PluginInfo
from zhenxun.models.plugin_limit import PluginLimit from zhenxun.models.plugin_limit import PluginLimit
from zhenxun.models.user_console import UserConsole from zhenxun.models.user_console import UserConsole
from zhenxun.utils.exception import InsufficientGold from zhenxun.services.log import logger
from zhenxun.models.group_console import GroupConsole
from zhenxun.utils.utils import FreqLimiter, CountLimiter, UserBlockLimiter
from zhenxun.utils.enum import ( from zhenxun.utils.enum import (
BlockType, BlockType,
GoldHandle, GoldHandle,
PluginType,
LimitWatchType, LimitWatchType,
PluginLimitType, 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") base_config = Config.get("hook")

View File

@ -1,5 +1,3 @@
from typing import Optional
from nonebot.adapters.onebot.v11 import Bot, Event from nonebot.adapters.onebot.v11 import Bot, Event
from nonebot.matcher import Matcher from nonebot.matcher import Matcher
from nonebot.message import run_postprocessor, run_preprocessor from nonebot.message import run_postprocessor, run_preprocessor
@ -27,7 +25,7 @@ async def _(
@run_postprocessor @run_postprocessor
async def _( async def _(
matcher: Matcher, matcher: Matcher,
exception: Optional[Exception], exception: Exception | None,
bot: Bot, bot: Bot,
event: Event, event: Event,
session: EventSession, session: EventSession,

View File

@ -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.adapters import Bot, Event
from nonebot.message import run_preprocessor
from nonebot.exception import IgnoredException 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 nonebot_plugin_session import EventSession
from zhenxun.services.log import logger
from zhenxun.configs.config import Config 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.ban_console import BanConsole
from zhenxun.models.group_console import GroupConsole 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( Config.add_plugin_config(
"hook", "hook",

View File

@ -1,20 +1,20 @@
import time
from collections import defaultdict from collections import defaultdict
import time
from nonebot.adapters import Event 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.adapters.onebot.v11 import Bot
from nonebot.message import run_preprocessor
from nonebot.exception import IgnoredException 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 nonebot_plugin_session import EventSession
from zhenxun.services.log import logger
from zhenxun.configs.config import Config 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.enum import PluginType
from zhenxun.utils.message import MessageUtils from zhenxun.utils.message import MessageUtils
from zhenxun.models.ban_console import BanConsole
malicious_check_time = Config.get_config("hook", "MALICIOUS_CHECK_TIME") malicious_check_time = Config.get_config("hook", "MALICIOUS_CHECK_TIME")
malicious_ban_count = Config.get_config("hook", "MALICIOUS_BAN_COUNT") malicious_ban_count = Config.get_config("hook", "MALICIOUS_BAN_COUNT")

View File

@ -1,14 +1,14 @@
from nonebot.adapters import Bot from nonebot.adapters import Bot
from nonebot_plugin_uninfo import Uninfo
from nonebot.plugin import PluginMetadata 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 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.services.log import logger
from zhenxun.utils.depends import UserName from zhenxun.utils.depends import UserName
from zhenxun.utils.message import MessageUtils 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 from .my_info import get_user_info

View File

@ -1,18 +1,18 @@
import random
from datetime import datetime, timedelta 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_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.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 = [ RACE = [
"龙族", "龙族",

View File

@ -3,9 +3,9 @@ from pathlib import Path
import nonebot import nonebot
from nonebot.adapters import Bot from nonebot.adapters import Bot
from zhenxun.models.group_console import GroupConsole
from zhenxun.services.log import logger from zhenxun.services.log import logger
from zhenxun.utils.platform import PlatformUtils from zhenxun.utils.platform import PlatformUtils
from zhenxun.models.group_console import GroupConsole
nonebot.load_plugins(str(Path(__file__).parent.resolve())) nonebot.load_plugins(str(Path(__file__).parent.resolve()))

View File

@ -1,16 +1,16 @@
from pathlib import Path from pathlib import Path
import nonebot 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 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 ruamel.yaml.comments import CommentedMap
from zhenxun.services.log import logger
from zhenxun.configs.config import Config from zhenxun.configs.config import Config
from zhenxun.configs.utils import RegisterConfig
from zhenxun.configs.path_config import DATA_PATH 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 = YAML(pure=True)
_yaml.allow_unicode = True _yaml.allow_unicode = True

View File

@ -1,24 +1,24 @@
import nonebot
import aiofiles import aiofiles
import ujson as json import nonebot
from ruamel.yaml import YAML
from nonebot.drivers import Driver
from nonebot import get_loaded_plugins from nonebot import get_loaded_plugins
from nonebot.drivers import Driver
from nonebot.plugin import Plugin, PluginMetadata 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.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_info import PluginInfo
from zhenxun.models.plugin_limit import PluginLimit from zhenxun.models.plugin_limit import PluginLimit
from zhenxun.models.group_console import GroupConsole from zhenxun.models.task_info import TaskInfo
from zhenxun.configs.utils import PluginSetting, PluginExtraData from zhenxun.services.log import logger
from zhenxun.utils.enum import ( from zhenxun.utils.enum import (
BlockType, BlockType,
PluginType,
LimitCheckType, LimitCheckType,
LimitWatchType, LimitWatchType,
PluginLimitType, PluginLimitType,
PluginType,
) )
from .manager import manager from .manager import manager

View File

@ -2,12 +2,12 @@ from copy import deepcopy
from ruamel.yaml import YAML from ruamel.yaml import YAML
from zhenxun.services.log import logger
from zhenxun.configs.path_config import DATA_PATH 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_info import PluginInfo
from zhenxun.models.plugin_limit import PluginLimit from zhenxun.models.plugin_limit import PluginLimit
from zhenxun.services.log import logger
from zhenxun.utils.enum import BlockType, LimitCheckType, PluginLimitType from zhenxun.utils.enum import BlockType, LimitCheckType, PluginLimitType
from zhenxun.configs.utils import BaseBlock, PluginCdBlock, PluginCountBlock
_yaml = YAML(pure=True) _yaml = YAML(pure=True)
_yaml.indent = 2 _yaml.indent = 2

View File

@ -2,23 +2,23 @@ import random
from typing import Any from typing import Any
from nonebot import on_regex from nonebot import on_regex
from nonebot.rule import to_me
from nonebot.adapters import Bot from nonebot.adapters import Bot
from nonebot.plugin import PluginMetadata
from nonebot.params import Depends, RegexGroup 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_session import EventSession
from nonebot_plugin_userinfo import UserInfo, EventUserInfo from nonebot_plugin_userinfo import EventUserInfo, UserInfo
from nonebot_plugin_alconna import Option, Alconna, on_alconna, store_true
from zhenxun.services.log import logger from zhenxun.configs.config import BotConfig, Config
from zhenxun.utils.enum import PluginType from zhenxun.configs.utils import PluginExtraData, RegisterConfig
from zhenxun.utils.depends import UserName
from zhenxun.utils.message import MessageUtils
from zhenxun.models.ban_console import BanConsole from zhenxun.models.ban_console import BanConsole
from zhenxun.models.friend_user import FriendUser from zhenxun.models.friend_user import FriendUser
from zhenxun.configs.config import Config, BotConfig
from zhenxun.models.group_member_info import GroupInfoUser 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( __plugin_meta__ = PluginMetadata(
name="昵称系统", name="昵称系统",

View File

@ -1,7 +1,5 @@
from nonebot.adapters import Bot
from nonebot_plugin_uninfo import Uninfo
from nonebot import on_notice, on_request from nonebot import on_notice, on_request
from nonebot.plugin import PluginMetadata from nonebot.adapters import Bot
from nonebot.adapters.onebot.v11 import ( from nonebot.adapters.onebot.v11 import (
GroupDecreaseNoticeEvent, GroupDecreaseNoticeEvent,
GroupIncreaseNoticeEvent, GroupIncreaseNoticeEvent,
@ -10,17 +8,19 @@ from nonebot.adapters.onebot.v12 import (
GroupMemberDecreaseEvent, GroupMemberDecreaseEvent,
GroupMemberIncreaseEvent, GroupMemberIncreaseEvent,
) )
from nonebot.plugin import PluginMetadata
from nonebot_plugin_uninfo import Uninfo
from zhenxun.utils.enum import PluginType from zhenxun.builtin_plugins.platform.qq.exception import ForceAddGroupError
from zhenxun.utils.rules import notice_rule from zhenxun.configs.config import BotConfig, Config
from zhenxun.utils.platform import PlatformUtils from zhenxun.configs.utils import PluginExtraData, RegisterConfig, Task
from zhenxun.utils.common_utils import CommonUtils
from zhenxun.configs.config import Config, BotConfig
from zhenxun.models.group_console import GroupConsole 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 .data_source import GroupManager
from ..exception import ForceAddGroupError
__plugin_meta__ = PluginMetadata( __plugin_meta__ = PluginMetadata(
name="QQ群事件处理", name="QQ群事件处理",

View File

@ -1,29 +1,28 @@
import os
import re
import random
from pathlib import Path
from datetime import datetime 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.adapters import Bot
from nonebot_plugin_alconna import At from nonebot_plugin_alconna import At
from nonebot_plugin_uninfo import Uninfo 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.configs.config import Config
from zhenxun.utils.utils import FreqLimiter from zhenxun.configs.path_config import DATA_PATH, IMAGE_PATH
from zhenxun.utils.message import MessageUtils
from zhenxun.models.fg_request import FgRequest 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_console import GroupConsole
from zhenxun.models.group_member_info import GroupInfoUser from zhenxun.models.group_member_info import GroupInfoUser
from zhenxun.configs.path_config import DATA_PATH, IMAGE_PATH from zhenxun.models.level_user import LevelUser
from zhenxun.models.plugin_info import PluginInfo
from ..exception import ForceAddGroupError 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") base_config = Config.get("invite_manager")

View File

@ -1,11 +1,11 @@
from nonebot_plugin_uninfo import Uninfo
from nonebot.message import run_preprocessor 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.friend_user import FriendUser
from zhenxun.models.group_console import GroupConsole from zhenxun.models.group_console import GroupConsole
from zhenxun.models.group_member_info import GroupInfoUser from zhenxun.models.group_member_info import GroupInfoUser
from zhenxun.services.log import logger
from zhenxun.utils.platform import PlatformUtils
@run_preprocessor @run_preprocessor

View File

@ -1,12 +1,12 @@
from nonebot.permission import SUPERUSER from nonebot.permission import SUPERUSER
from nonebot.plugin import PluginMetadata from nonebot.plugin import PluginMetadata
from nonebot_plugin_alconna import Alconna, Args, Subcommand, on_alconna
from nonebot_plugin_session import EventSession 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.services.log import logger
from zhenxun.utils.enum import PluginType from zhenxun.utils.enum import PluginType
from zhenxun.utils.message import MessageUtils from zhenxun.utils.message import MessageUtils
from zhenxun.configs.utils import PluginExtraData
from .data_source import ShopManage 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) logger.info(f"更新插件 Id: {plugin_id}", "插件商店", session=session)
await MessageUtils.build_message(result).send() await MessageUtils.build_message(result).send()
@_matcher.assign("update_all") @_matcher.assign("update_all")
async def _(session: EventSession): async def _(session: EventSession):
try: try:
@ -160,8 +161,6 @@ async def _(session: EventSession):
result = await ShopManage.update_all_plugin() result = await ShopManage.update_all_plugin()
except Exception as e: except Exception as e:
logger.error("更新全部插件失败", "插件商店", session=session, e=e) logger.error("更新全部插件失败", "插件商店", session=session, e=e)
await MessageUtils.build_message( await MessageUtils.build_message(f"更新全部插件失败 e: {e}").finish()
f"更新全部插件失败 e: {e}"
).finish()
logger.info("更新全部插件", "插件商店", session=session) logger.info("更新全部插件", "插件商店", session=session)
await MessageUtils.build_message(result).send() await MessageUtils.build_message(result).send()

View File

@ -1,21 +1,21 @@
from pathlib import Path
import shutil import shutil
import subprocess import subprocess
from pathlib import Path
import ujson as json
from aiocache import cached from aiocache import cached
import ujson as json
from zhenxun.services.log import logger from zhenxun.builtin_plugins.auto_update.config import REQ_TXT_FILE_STRING
from zhenxun.utils.http_utils import AsyncHttpx from zhenxun.builtin_plugins.plugin_store.models import StorePluginInfo
from zhenxun.models.plugin_info import PluginInfo 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 import GithubUtils
from zhenxun.utils.github_utils.models import RepoAPI from zhenxun.utils.github_utils.models import RepoAPI
from zhenxun.services.plugin_init import PluginInitManager from zhenxun.utils.http_utils import AsyncHttpx
from zhenxun.builtin_plugins.plugin_store.models import StorePluginInfo from zhenxun.utils.image_utils import BuildImage, ImageTemplate, RowStyle
from zhenxun.utils.image_utils import RowStyle, BuildImage, ImageTemplate
from zhenxun.builtin_plugins.auto_update.config import REQ_TXT_FILE_STRING
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: def row_style(column: str, text: str) -> RowStyle:
@ -418,6 +418,7 @@ class ShopManage:
return "已更新插件 {}\n共计{}个插件! 重启后生效".format( return "已更新插件 {}\n共计{}个插件! 重启后生效".format(
"\n- ".join(update_list), len(update_list) "\n- ".join(update_list), len(update_list)
) )
@classmethod @classmethod
async def _resolve_plugin_key(cls, plugin_id: int | str) -> str: async def _resolve_plugin_key(cls, plugin_id: int | str) -> str:
data: dict[str, StorePluginInfo] = await cls.get_data() data: dict[str, StorePluginInfo] = await cls.get_data()

View File

@ -1,26 +1,26 @@
import time
from datetime import datetime from datetime import datetime
import time
from nonebot.plugin import PluginMetadata
from nonebot import on_message, on_request 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 ( from nonebot.adapters.onebot.v11 import (
ActionFailed, ActionFailed,
GroupRequestEvent,
FriendRequestEvent, 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.models.fg_request import FgRequest
from zhenxun.utils.platform import PlatformUtils
from zhenxun.models.friend_user import FriendUser from zhenxun.models.friend_user import FriendUser
from zhenxun.configs.config import Config, BotConfig
from zhenxun.models.group_console import GroupConsole from zhenxun.models.group_console import GroupConsole
from zhenxun.configs.utils import RegisterConfig, PluginExtraData from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType, RequestType, RequestHandleType from zhenxun.utils.enum import PluginType, RequestHandleType, RequestType
from zhenxun.utils.platform import PlatformUtils
base_config = Config.get("invite_manager") base_config = Config.get("invite_manager")

View File

@ -1,23 +1,23 @@
import os import os
import platform
from pathlib import Path from pathlib import Path
import platform
import nonebot
import aiofiles import aiofiles
import nonebot
from nonebot import on_command from nonebot import on_command
from nonebot.rule import to_me
from nonebot.adapters import Bot from nonebot.adapters import Bot
from nonebot.params import ArgStr from nonebot.params import ArgStr
from nonebot.permission import SUPERUSER from nonebot.permission import SUPERUSER
from nonebot_plugin_uninfo import Uninfo
from nonebot.plugin import PluginMetadata 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.services.log import logger
from zhenxun.utils.enum import PluginType from zhenxun.utils.enum import PluginType
from zhenxun.configs.config import BotConfig
from zhenxun.utils.message import MessageUtils from zhenxun.utils.message import MessageUtils
from zhenxun.utils.platform import PlatformUtils from zhenxun.utils.platform import PlatformUtils
from zhenxun.configs.utils import PluginExtraData
__plugin_meta__ = PluginMetadata( __plugin_meta__ = PluginMetadata(
name="重启", name="重启",

View File

@ -1,10 +1,10 @@
import shutil
from pathlib import Path from pathlib import Path
import shutil
from nonebot_plugin_apscheduler import scheduler from nonebot_plugin_apscheduler import scheduler
from zhenxun.services.log import logger
from zhenxun.configs.config import Config from zhenxun.configs.config import Config
from zhenxun.services.log import logger
Config.add_plugin_config( Config.add_plugin_config(
"_backup", "_backup",

View File

@ -1,15 +1,15 @@
from datetime import datetime, timedelta from datetime import datetime, timedelta
import pytz
import nonebot import nonebot
from nonebot_plugin_apscheduler import scheduler from nonebot_plugin_apscheduler import scheduler
import pytz
from zhenxun.services.log import logger
from zhenxun.configs.config import Config 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.chat_history import ChatHistory
from zhenxun.models.group_console import GroupConsole 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( Config.add_plugin_config(
"chat_check", "chat_check",

View File

@ -3,14 +3,14 @@ from nonebot.adapters import Bot
from nonebot.plugin import PluginMetadata from nonebot.plugin import PluginMetadata
from nonebot_plugin_apscheduler import scheduler 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.configs.config import BotConfig
from zhenxun.utils.message import MessageUtils
from zhenxun.configs.path_config import IMAGE_PATH 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.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.utils.platform import broadcast_group
from zhenxun.configs.utils import Task, PluginExtraData
__plugin_meta__ = PluginMetadata( __plugin_meta__ = PluginMetadata(
name="早晚安被动技能", name="早晚安被动技能",

View File

@ -1,15 +1,15 @@
from asyncio.exceptions import TimeoutError from asyncio.exceptions import TimeoutError
import nonebot
import aiofiles import aiofiles
import ujson as json import nonebot
from nonebot.drivers import Driver from nonebot.drivers import Driver
from nonebot_plugin_apscheduler import scheduler 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.configs.path_config import TEXT_PATH
from zhenxun.models.group_console import GroupConsole 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() driver: Driver = nonebot.get_driver()

View File

@ -1,28 +1,28 @@
from nonebot.adapters import Bot, Event from nonebot.adapters import Bot, Event
from nonebot_plugin_uninfo import Uninfo
from nonebot.plugin import PluginMetadata from nonebot.plugin import PluginMetadata
from nonebot_plugin_session import EventSession
from nonebot_plugin_alconna import ( from nonebot_plugin_alconna import (
Args,
Match,
Query,
Option,
UniMsg,
Alconna, Alconna,
AlconnaQuery,
Args,
Arparma, Arparma,
Match,
Option,
Query,
Subcommand, Subcommand,
UniMessage, UniMessage,
AlconnaQuery, UniMsg,
on_alconna, on_alconna,
store_true, 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.services.log import logger
from zhenxun.utils.depends import UserName 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.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 from ._data_source import ShopManage, gold_rank
@ -184,9 +184,9 @@ async def _(
elif isinstance(result, UniMessage): elif isinstance(result, UniMessage):
await result.finish(reply_to=True) await result.finish(reply_to=True)
except GoodsNotFound: except GoodsNotFound:
await MessageUtils.build_message(f"没有找到道具 {name.result} 或道具数量不足...").send( await MessageUtils.build_message(
reply_to=True f"没有找到道具 {name.result} 或道具数量不足..."
) ).send(reply_to=True)
@_matcher.assign("gold-list") @_matcher.assign("gold-list")

View File

@ -1,27 +1,27 @@
import time
import asyncio import asyncio
import inspect
from typing import Any, Literal
from types import MappingProxyType
from collections.abc import Callable 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.adapters import Bot, Event
from nonebot_plugin_alconna import UniMessage, UniMsg
from nonebot_plugin_session import EventSession
from nonebot_plugin_uninfo import Uninfo from nonebot_plugin_uninfo import Uninfo
from pydantic import BaseModel, create_model 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.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_console import UserConsole
from zhenxun.models.user_gold_log import UserGoldLog 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.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.image_utils import BuildImage, ImageTemplate, text2image
from zhenxun.utils.platform import PlatformUtils
ICON_PATH = IMAGE_PATH / "shop_icon" ICON_PATH = IMAGE_PATH / "shop_icon"

View File

@ -1,26 +1,25 @@
from nonebot_plugin_uninfo import Uninfo
from nonebot.plugin import PluginMetadata from nonebot.plugin import PluginMetadata
from nonebot_plugin_session import EventSession
from nonebot_plugin_apscheduler import scheduler
from nonebot_plugin_alconna import ( from nonebot_plugin_alconna import (
Args,
Query,
Option,
Alconna, Alconna,
Arparma,
AlconnaQuery, AlconnaQuery,
Args,
Arparma,
Option,
Query,
on_alconna, on_alconna,
store_true, 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.services.log import logger
from zhenxun.utils.depends import UserName from zhenxun.utils.depends import UserName
from zhenxun.utils.message import MessageUtils from zhenxun.utils.message import MessageUtils
from zhenxun.configs.utils import PluginCdBlock, RegisterConfig, PluginExtraData
from ._data_source import SignManage from ._data_source import SignManage
from .utils import clear_sign_data_pic
from .goods_register import driver # noqa: F401 from .goods_register import driver # noqa: F401
from .utils import clear_sign_data_pic
__plugin_meta__ = PluginMetadata( __plugin_meta__ = PluginMetadata(
name="签到", name="签到",

View File

@ -1,23 +1,23 @@
from datetime import datetime
from pathlib import Path
import random import random
import secrets import secrets
from pathlib import Path
from datetime import datetime
import pytz
from nonebot_plugin_uninfo import Uninfo 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_log import SignLog
from zhenxun.models.sign_user import SignUser 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.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.image_utils import BuildImage, ImageTemplate
from zhenxun.utils.platform import PlatformUtils
from .utils import get_card
from ._random_event import random_event from ._random_event import random_event
from .utils import get_card
ICON_PATH = IMAGE_PATH / "_icon" ICON_PATH = IMAGE_PATH / "_icon"

View File

@ -1,30 +1,30 @@
import os
import random
from io import BytesIO
from pathlib import Path
from datetime import datetime from datetime import datetime
from io import BytesIO
import os
from pathlib import Path
import random
import pytz
import nonebot import nonebot
from nonebot.drivers import Driver from nonebot.drivers import Driver
from nonebot_plugin_uninfo import Uninfo
from nonebot_plugin_htmlrender import template_to_pic 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_log import SignLog
from zhenxun.models.sign_user import SignUser from zhenxun.models.sign_user import SignUser
from zhenxun.utils.http_utils import AsyncHttpx from zhenxun.utils.http_utils import AsyncHttpx
from zhenxun.utils.image_utils import BuildImage 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 ( from .config import (
SIGN_BACKGROUND_PATH,
SIGN_BORDER_PATH, SIGN_BORDER_PATH,
SIGN_RESOURCE_PATH, SIGN_RESOURCE_PATH,
SIGN_BACKGROUND_PATH,
SIGN_TODAY_CARD_PATH, SIGN_TODAY_CARD_PATH,
level2attitude,
lik2level, lik2level,
lik2relation, lik2relation,
level2attitude,
) )
assert ( assert (

View File

@ -25,7 +25,7 @@ statistics_user_file = DATA_PATH / "statistics" / "_prefix_user_count.json"
for file in [statistics_group_file, statistics_user_file]: for file in [statistics_group_file, statistics_user_file]:
if file.exists(): if file.exists():
with open(file, "r", encoding="utf8") as f: with open(file, encoding="utf8") as f:
data = json.load(f) data = json.load(f)
if not (statistics_group_file.parent / f"{file}.bak").exists(): if not (statistics_group_file.parent / f"{file}.bak").exists():
with open(f"{file}.bak", "w", encoding="utf8") as wf: with open(f"{file}.bak", "w", encoding="utf8") as wf:

View File

@ -2,14 +2,14 @@ from datetime import datetime, timedelta
from tortoise.functions import Count 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_console import GroupConsole
from zhenxun.models.group_member_info import GroupInfoUser 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: class StatisticsManage:

View File

@ -1,18 +1,18 @@
from datetime import datetime from datetime import datetime
from nonebot.matcher import Matcher
from nonebot.adapters import Bot, Event 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.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.configs.utils import PluginExtraData
from zhenxun.models.plugin_info import PluginInfo 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( __plugin_meta__ = PluginMetadata(
name="功能调用统计", name="功能调用统计",

View File

@ -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 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.configs.utils import PluginExtraData
from zhenxun.utils.utils import ResourceDirManager from zhenxun.utils.enum import PluginType
__plugin_meta__ = PluginMetadata( __plugin_meta__ = PluginMetadata(
name="Bot管理", name="Bot管理",

View File

@ -1,6 +1,5 @@
from nonebot.adapters import Bot from nonebot.adapters import Bot
import nonebot_plugin_alconna as alc import nonebot_plugin_alconna as alc
from nonebot_plugin_session import EventSession
# from nonebot.adapters.discord import Bot as DiscordBot # from nonebot.adapters.discord import Bot as DiscordBot
# from nonebot.adapters.dodo import Bot as DodoBot # 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.v11 import Bot as v11Bot
# from nonebot.adapters.onebot.v12 import Bot as v12Bot # from nonebot.adapters.onebot.v12 import Bot as v12Bot
from nonebot_plugin_alconna import Image, UniMsg from nonebot_plugin_alconna import Image, UniMsg
from nonebot_plugin_session import EventSession
from zhenxun.services.log import logger from zhenxun.services.log import logger
from zhenxun.utils.common_utils import CommonUtils
from zhenxun.utils.message import MessageUtils from zhenxun.utils.message import MessageUtils
from zhenxun.utils.platform import PlatformUtils from zhenxun.utils.platform import PlatformUtils
from zhenxun.utils.common_utils import CommonUtils
class BroadcastManage: class BroadcastManage:

View File

@ -47,10 +47,10 @@ async def _(session: EventSession):
await MessageUtils.build_message("开始清理临时数据...").send() await MessageUtils.build_message("开始清理临时数据...").send()
size = await _clear_data() size = await _clear_data()
await MessageUtils.build_message( await MessageUtils.build_message(
"共清理了 {:.2f}MB 的数据...".format(size / 1024 / 1024) f"共清理了 {size / 1024 / 1024:.2f}MB 的数据..."
).send() ).send()
logger.info( logger.info(
"清理临时数据完成,共清理了 {:.2f}MB 的数据...".format(size / 1024 / 1024), f"清理临时数据完成,共清理了 {size / 1024 / 1024:.2f}MB 的数据...",
session=session, session=session,
) )
@ -79,9 +79,7 @@ def _clear_data() -> float:
"清理临时数据", "清理临时数据",
e=e, e=e,
) )
logger.debug( logger.debug(f"清理临时文件夹大小: {size / 1024 / 1024:.2f}MB", "清理临时数据")
"清理临时文件夹大小: {:.2f}MB".format(size / 1024 / 1024), "清理临时数据"
)
return float(size) return float(size)
@ -93,6 +91,6 @@ def _clear_data() -> float:
async def _(): async def _():
size = await _clear_data() size = await _clear_data()
logger.info( logger.info(
"自动清理临时数据完成,共清理了 {:.2f}MB 的数据...".format(size / 1024 / 1024), f"自动清理临时数据完成,共清理了 {size / 1024 / 1024:.2f}MB 的数据...",
"定时任务", "定时任务",
) )

View File

@ -1,18 +1,18 @@
from tortoise import Tortoise
from nonebot import on_command from nonebot import on_command
from nonebot.rule import to_me
from nonebot.permission import SUPERUSER from nonebot.permission import SUPERUSER
from nonebot.plugin import PluginMetadata from nonebot.plugin import PluginMetadata
from nonebot.rule import to_me
from nonebot_plugin_alconna import UniMsg from nonebot_plugin_alconna import UniMsg
from nonebot_plugin_session import EventSession 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.configs.config import BotConfig
from zhenxun.utils.message import MessageUtils
from zhenxun.configs.utils import PluginExtraData from zhenxun.configs.utils import PluginExtraData
from zhenxun.models.ban_console import BanConsole 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.image_utils import ImageTemplate
from zhenxun.utils.message import MessageUtils
__plugin_meta__ = PluginMetadata( __plugin_meta__ = PluginMetadata(
name="数据库操作", name="数据库操作",
@ -57,7 +57,8 @@ SELECT name FROM sqlite_master WHERE type='table';
SELECT_TABLE_PSQL_SQL = """ SELECT_TABLE_PSQL_SQL = """
select a.tablename as name,d.description as desc from pg_tables a select a.tablename as name,d.description as desc from pg_tables a
left join pg_class c on relname=tablename 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'
""" """

View File

@ -10,7 +10,6 @@ from zhenxun.configs.utils import PluginExtraData
from zhenxun.services.log import logger from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType from zhenxun.utils.enum import PluginType
from zhenxun.utils.message import MessageUtils from zhenxun.utils.message import MessageUtils
from zhenxun.utils.rules import admin_check, ensure_group
__plugin_meta__ = PluginMetadata( __plugin_meta__ = PluginMetadata(
name="好友群组列表", name="好友群组列表",
@ -72,7 +71,7 @@ async def _(
msg = f"| UID | 昵称 | 共{len(fl)}个好友\n" + msg msg = f"| UID | 昵称 | 共{len(fl)}个好友\n" + msg
await MessageUtils.build_message(msg).send() await MessageUtils.build_message(msg).send()
logger.info("查看好友列表", "好友列表", session=session) logger.info("查看好友列表", "好友列表", session=session)
except (ApiNotAvailable, AttributeError) as e: except (ApiNotAvailable, AttributeError):
await MessageUtils.build_message("Api未实现...").send() await MessageUtils.build_message("Api未实现...").send()
except Exception as e: except Exception as e:
logger.error("好友列表发生错误", "好友列表", session=session, e=e) logger.error("好友列表发生错误", "好友列表", session=session, e=e)
@ -92,7 +91,7 @@ async def _(
msg = f"| GID | 名称 | 共{len(gl)}个群组\n" + msg msg = f"| GID | 名称 | 共{len(gl)}个群组\n" + msg
await MessageUtils.build_message(msg).send() await MessageUtils.build_message(msg).send()
logger.info("查看群组列表", "群组列表", session=session) logger.info("查看群组列表", "群组列表", session=session)
except (ApiNotAvailable, AttributeError) as e: except (ApiNotAvailable, AttributeError):
await MessageUtils.build_message("Api未实现...").send() await MessageUtils.build_message("Api未实现...").send()
except Exception as e: except Exception as e:
logger.error("查看群组列表发生错误", "群组列表", session=session, e=e) logger.error("查看群组列表发生错误", "群组列表", session=session, e=e)

View File

@ -204,8 +204,8 @@ async def _(bot: Bot, session: EventSession, arparma: Arparma, group_id: int):
await MessageUtils.build_message(f"退出群组 {group_id} 成功!").send() await MessageUtils.build_message(f"退出群组 {group_id} 成功!").send()
await GroupConsole.filter(group_id=group_id).delete() await GroupConsole.filter(group_id=group_id).delete()
except Exception as e: 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() await MessageUtils.build_message(f"退出群组 {group_id} 失败...").send()
else: else:
# TODO: 其他平台的退群操作 # TODO: 其他平台的退群操作
await MessageUtils.build_message(f"暂未支持退群操作...").send() await MessageUtils.build_message("暂未支持退群操作...").send()

View File

@ -1,22 +1,22 @@
from nonebot.permission import SUPERUSER from nonebot.permission import SUPERUSER
from nonebot.plugin import PluginMetadata from nonebot.plugin import PluginMetadata
from nonebot_plugin_session import EventSession, SessionLevel
from nonebot_plugin_alconna import ( from nonebot_plugin_alconna import (
At, Alconna,
Args, Args,
Arparma,
At,
Match, Match,
Option, Option,
Alconna,
Arparma,
Subcommand, Subcommand,
on_alconna, 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.services.log import logger
from zhenxun.utils.enum import PluginType from zhenxun.utils.enum import PluginType
from zhenxun.utils.message import MessageUtils from zhenxun.utils.message import MessageUtils
from zhenxun.models.level_user import LevelUser
from zhenxun.configs.utils import PluginExtraData
__plugin_meta__ = PluginMetadata( __plugin_meta__ = PluginMetadata(
name="用户权限管理", name="用户权限管理",

View File

@ -1,17 +1,17 @@
from nonebot.permission import SUPERUSER from nonebot.permission import SUPERUSER
from nonebot.plugin import PluginMetadata from nonebot.plugin import PluginMetadata
from nonebot_plugin_session import EventSession
from nonebot_plugin_alconna import Alconna, Arparma, on_alconna 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.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.enum import PluginType
from zhenxun.utils.exception import EmptyError from zhenxun.utils.exception import EmptyError
from zhenxun.utils.message import MessageUtils 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 .config import SUPERUSER_HELP_IMAGE
from .normal_help import build_help
from .zhenxun_help import build_html_help from .zhenxun_help import build_html_help
__plugin_meta__ = PluginMetadata( __plugin_meta__ = PluginMetadata(

View File

@ -1,8 +1,8 @@
from pydantic import BaseModel
from nonebot.plugin import PluginMetadata 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.configs.path_config import IMAGE_PATH
from zhenxun.models.plugin_info import PluginInfo
SUPERUSER_HELP_IMAGE = IMAGE_PATH / "SUPERUSER_HELP.png" SUPERUSER_HELP_IMAGE = IMAGE_PATH / "SUPERUSER_HELP.png"
if SUPERUSER_HELP_IMAGE.exists(): if SUPERUSER_HELP_IMAGE.exists():

View File

@ -1,14 +1,14 @@
from PIL.ImageFont import FreeTypeFont
from nonebot.plugin import PluginMetadata 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.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._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 .config import SUPERUSER_HELP_IMAGE
from .utils import get_plugins
async def build_usage_des_image( async def build_usage_des_image(

View File

@ -1,8 +1,8 @@
import nonebot import nonebot
from zhenxun.models.plugin_info import PluginInfo
from zhenxun.utils.enum import PluginType from zhenxun.utils.enum import PluginType
from zhenxun.utils.exception import EmptyError from zhenxun.utils.exception import EmptyError
from zhenxun.models.plugin_info import PluginInfo
from .config import PluginData from .config import PluginData

View File

@ -1,12 +1,12 @@
from nonebot_plugin_htmlrender import template_to_pic from nonebot_plugin_htmlrender import template_to_pic
from zhenxun.configs.config import BotConfig from zhenxun.configs.config import BotConfig
from zhenxun.configs.path_config import TEMPLATE_PATH
from zhenxun.models.task_info import TaskInfo from zhenxun.models.task_info import TaskInfo
from zhenxun.utils._build_image import BuildImage 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 .config import SUPERUSER_HELP_IMAGE
from .utils import get_plugins
async def get_task() -> dict[str, str] | None: async def get_task() -> dict[str, str] | None:

View File

@ -1,29 +1,29 @@
import asyncio import asyncio
import secrets import secrets
from fastapi import APIRouter, FastAPI
import nonebot import nonebot
from fastapi import FastAPI, APIRouter
from nonebot.plugin import PluginMetadata
from nonebot.log import default_filter, default_format 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.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 import router as ws_log_routes
from .api.logs.log_manager import LOG_STORAGE 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.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.manage.chat import ws_router as chat_routes
from .api.tabs.plugin_manage import router as plugin_router from .api.tabs.plugin_manage import router as plugin_router
from .api.tabs.plugin_manage.store import router as store_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( __plugin_meta__ = PluginMetadata(
name="WebUi", name="WebUi",

View File

@ -1,6 +1,6 @@
import asyncio import asyncio
from collections.abc import Awaitable, Callable
from typing import Generic, TypeVar from typing import Generic, TypeVar
from collections.abc import Callable, Awaitable
_T = TypeVar("_T") _T = TypeVar("_T")
LogListener = Callable[[_T], Awaitable[None]] LogListener = Callable[[_T], Awaitable[None]]

View File

@ -1,7 +1,7 @@
from loguru import logger
from fastapi import APIRouter from fastapi import APIRouter
from loguru import logger
from nonebot.utils import escape_tag 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 from .log_manager import LOG_STORAGE

View File

@ -1,5 +1,5 @@
from .database import * from .database import * # noqa: F403
from .main import * from .main import * # noqa: F403
from .manage import * from .manage import * # noqa: F403
from .plugin_manage import * from .plugin_manage import * # noqa: F403
from .system import * from .system import * # noqa: F403

View File

@ -1,21 +1,21 @@
from datetime import datetime, timedelta from datetime import datetime, timedelta
from fastapi import APIRouter
from fastapi.responses import JSONResponse
import nonebot import nonebot
from nonebot import require from nonebot import require
from fastapi import APIRouter
from nonebot.config import Config from nonebot.config import Config
from tortoise.functions import Count
from tortoise.expressions import RawSQL from tortoise.expressions import RawSQL
from fastapi.responses import JSONResponse from tortoise.functions import Count
from zhenxun.models.statistics import Statistics from builtin_plugins.web_ui.base_model import BaseResultModel, QueryModel, Result
from zhenxun.models.chat_history import ChatHistory from builtin_plugins.web_ui.utils import authentication
from zhenxun.models.bot_connect_log import BotConnectLog 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 .data_source import BotManage
from ....utils import authentication from .model import AllChatAndCallCount, BotInfo, ChatCallMonthCount, QueryChatCallCount
from ....base_model import Result, QueryModel, BaseResultModel
from .model import BotInfo, ChatCallMonthCount, QueryChatCallCount, AllChatAndCallCount
require("plugin_store") require("plugin_store")

View File

@ -1,16 +1,16 @@
import time
from datetime import datetime, timedelta from datetime import datetime, timedelta
import time
import nonebot import nonebot
from nonebot.adapters import Bot from nonebot.adapters import Bot
from nonebot.drivers import Driver 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.models.statistics import Statistics
from zhenxun.utils.platform import PlatformUtils from zhenxun.utils.platform import PlatformUtils
from zhenxun.models.chat_history import ChatHistory
from .model import BotInfo from .model import BotInfo
from ..main.data_source import bot_live
driver: Driver = nonebot.get_driver() driver: Driver = nonebot.get_driver()

View File

@ -1,18 +1,18 @@
import nonebot from fastapi import APIRouter, Request
from tortoise import Tortoise
from nonebot.drivers import Driver
from fastapi import Request, APIRouter
from fastapi.responses import JSONResponse from fastapi.responses import JSONResponse
import nonebot
from nonebot.drivers import Driver
from tortoise import Tortoise
from tortoise.exceptions import OperationalError 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.configs.config import BotConfig
from zhenxun.models.task_info import TaskInfo
from zhenxun.models.plugin_info import PluginInfo 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 .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") router = APIRouter(prefix="/database")

View File

@ -1,35 +1,35 @@
import time
import asyncio import asyncio
import contextlib import contextlib
from pathlib import Path
from datetime import datetime, timedelta from datetime import datetime, timedelta
from pathlib import Path
import time
import nonebot
from fastapi import APIRouter from fastapi import APIRouter
from nonebot.config import Config
from tortoise.functions import Count
from fastapi.responses import JSONResponse from fastapi.responses import JSONResponse
from websockets.exceptions import ConnectionClosedOK, ConnectionClosedError import nonebot
from starlette.websockets import WebSocket, WebSocketState, WebSocketDisconnect 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 builtin_plugins.web_ui.base_model import Result
from zhenxun.models.statistics import Statistics from builtin_plugins.web_ui.config import AVA_URL, GROUP_AVA_URL, QueryDateType
from zhenxun.utils.platform import PlatformUtils from builtin_plugins.web_ui.utils import authentication, get_system_status
from zhenxun.models.plugin_info import PluginInfo from zhenxun.models.bot_connect_log import BotConnectLog
from zhenxun.models.chat_history import ChatHistory from zhenxun.models.chat_history import ChatHistory
from zhenxun.models.group_console import GroupConsole 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 .data_source import bot_live
from ....utils import authentication, get_system_status
from ....config import AVA_URL, GROUP_AVA_URL, QueryDateType
from .model import ( from .model import (
ActiveGroup,
BaseInfo, BaseInfo,
HotPlugin, HotPlugin,
QueryCount,
ActiveGroup,
NonebotData, NonebotData,
QueryCount,
TemplateBaseInfo, TemplateBaseInfo,
) )

View File

@ -1,8 +1,8 @@
import time import time
import nonebot import nonebot
from nonebot.drivers import Driver
from nonebot.adapters.onebot.v11 import Bot from nonebot.adapters.onebot.v11 import Bot
from nonebot.drivers import Driver
driver: Driver = nonebot.get_driver() driver: Driver = nonebot.get_driver()

View File

@ -1,6 +1,6 @@
from pydantic import BaseModel
from nonebot.adapters import Bot from nonebot.adapters import Bot
from nonebot.config import Config from nonebot.config import Config
from pydantic import BaseModel
class SystemStatus(BaseModel): class SystemStatus(BaseModel):

View File

@ -1,41 +1,41 @@
import nonebot
from fastapi import APIRouter from fastapi import APIRouter
from tortoise.functions import Count
from fastapi.responses import JSONResponse from fastapi.responses import JSONResponse
import nonebot
from nonebot.adapters.onebot.v11 import ActionFailed 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.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.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.chat_history import ChatHistory
from zhenxun.models.fg_request import FgRequest
from zhenxun.models.group_console import GroupConsole 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 ( from .model import (
Task,
Friend,
Plugin,
ReqResult,
LeaveGroup,
UserDetail,
GroupDetail,
GroupResult,
SendMessage,
UpdateGroup,
ClearRequest, ClearRequest,
DeleteFriend, DeleteFriend,
HandleRequest, Friend,
GroupRequestResult,
FriendRequestResult, FriendRequestResult,
GroupDetail,
GroupRequestResult,
GroupResult,
HandleRequest,
LeaveGroup,
Plugin,
ReqResult,
SendMessage,
Task,
UpdateGroup,
UserDetail,
) )
router = APIRouter(prefix="/manage") router = APIRouter(prefix="/manage")

View File

@ -1,15 +1,15 @@
import nonebot
from fastapi import APIRouter from fastapi import APIRouter
import nonebot
from nonebot import on_message from nonebot import on_message
from nonebot_plugin_session import EventSession
from nonebot.adapters.onebot.v11 import MessageEvent from nonebot.adapters.onebot.v11 import MessageEvent
from nonebot_plugin_alconna import At, Text, Hyper, Image, UniMsg from nonebot_plugin_alconna import At, Hyper, Image, Text, UniMsg
from starlette.websockets import WebSocket, WebSocketState, WebSocketDisconnect 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.models.group_member_info import GroupInfoUser
from zhenxun.utils.depends import UserName
from ....config import AVA_URL
from .model import Message, MessageItem from .model import Message, MessageItem
driver = nonebot.get_driver() driver = nonebot.get_driver()

View File

@ -1,21 +1,21 @@
import re import re
import cattrs import cattrs
from fastapi import Query, APIRouter from fastapi import APIRouter, Query
from fastapi.responses import JSONResponse 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.configs.config import Config
from zhenxun.utils.enum import BlockType, PluginType
from zhenxun.models.plugin_info import PluginInfo as DbPluginInfo 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 ( from .model import (
PluginInfo,
PluginCount,
PluginConfig, PluginConfig,
PluginCount,
PluginDetail, PluginDetail,
PluginInfo,
PluginSwitch, PluginSwitch,
UpdatePlugin, UpdatePlugin,
) )

View File

@ -1,12 +1,12 @@
from nonebot import require
from fastapi import APIRouter from fastapi import APIRouter
from fastapi.responses import JSONResponse 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 zhenxun.models.plugin_info import PluginInfo
from .model import PluginIr from .model import PluginIr
from ....base_model import Result
from ....utils import authentication
router = APIRouter(prefix="/store") router = APIRouter(prefix="/store")

View File

@ -1,16 +1,16 @@
import os import os
import shutil
from pathlib import Path from pathlib import Path
import shutil
import aiofiles import aiofiles
from fastapi import APIRouter from fastapi import APIRouter
from fastapi.responses import JSONResponse 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 zhenxun.utils._build_image import BuildImage
from ....base_model import Result, SystemFolderSize from .model import AddFile, DeleteFile, DirFile, RenameFile, SaveFile
from ....utils import authentication, get_system_disk
from .model import AddFile, DirFile, SaveFile, DeleteFile, RenameFile
router = APIRouter(prefix="/system") router = APIRouter(prefix="/system")

Some files were not shown because too many files have changed in this diff Show More