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:
autofix_commit_msg: ":rotating_light: auto fix by pre-commit hooks"
autofix_prs: true
autoupdate_branch: dev
autoupdate_schedule: weekly
autoupdate_branch: master
autoupdate_schedule: monthly
autoupdate_commit_msg: ":arrow_up: auto update by pre-commit hooks"
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.5.6
rev: v0.8.1
hooks:
- id: ruff
args: [--fix, --exit-non-zero-on-fix]
stages: [commit]
- repo: https://github.com/pycqa/isort
rev: 5.13.2
hooks:
- id: isort
stages: [commit]
- repo: https://github.com/psf/black
rev: 24.8.0
hooks:
- id: black
stages: [commit]
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v4.0.0-alpha.8
hooks:
- id: prettier
types_or: [javascript, jsx, ts, tsx, markdown, yaml, json]
stages: [commit]
args: [--fix]
stages: [pre-commit]
- id: ruff-format
stages: [pre-commit]

View File

@ -40,7 +40,6 @@ psutil = "^5.9.8"
feedparser = "^6.0.11"
opencv-python = "^4.9.0.80"
imagehash = "^4.3.1"
black = "^24.4.2"
cn2an = "^0.5.22"
aiohttp = "^3.9.5"
dateparser = "^1.2.0"
@ -59,6 +58,9 @@ pytest-mock = "^3.6.1"
pytest-asyncio = "^0.23.5"
pytest-xdist = "^3.3.1"
respx = "^0.21.1"
ruff = "^0.8.0"
pre-commit = "^4.0.0"
[tool.nonebot]
plugins = [
@ -75,31 +77,19 @@ adapters = [
{ name = "开黑啦", module_name = "nonebot.adapters.kaiheila" },
]
[tool.black]
line-length = 88
target-version = ["py39", "py310", "py311", "py312"]
include = '\.pyi?$'
extend-exclude = '''
'''
[tool.isort]
profile = "black"
line_length = 88
length_sort = true
skip_gitignore = true
force_sort_within_sections = true
src_paths = ["zhenxun", "tests"]
extra_standard_library = ["typing_extensions"]
[tool.ruff]
line-length = 88
target-version = "py310"
[tool.ruff.format]
line-ending = "lf"
[tool.ruff.lint]
select = [
"F", # Pyflakes
"W", # pycodestyle warnings
"E", # pycodestyle errors
"I", # isort
"UP", # pyupgrade
"ASYNC", # flake8-async
"C4", # flake8-comprehensions
@ -108,6 +98,7 @@ select = [
"PYI", # flake8-pyi
"PT", # flake8-pytest-style
"Q", # flake8-quotes
"TID", # flake8-tidy-imports
"RUF", # Ruff-specific rules
]
ignore = [
@ -118,10 +109,18 @@ ignore = [
"RUF003", # ambiguous-unicode-character-comment
]
[tool.ruff.lint.isort]
force-sort-within-sections = true
known-first-party = ["zhenxun", "tests/*"]
extra-standard-library = ["typing_extensions"]
[tool.ruff.lint.flake8-pytest-style]
fixture-parentheses = false
mark-parentheses = false
[tool.ruff.lint.pyupgrade]
keep-runtime-typing = true
[tool.pyright]
pythonVersion = "3.10"
pythonPlatform = "All"

View File

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

View File

@ -1,20 +1,20 @@
from collections.abc import Callable
import io
import os
import tarfile
import zipfile
from typing import cast
from pathlib import Path
from collections.abc import Callable
import tarfile
from typing import cast
import zipfile
from nonebug import App
from respx import MockRouter
from pytest_mock import MockerFixture
from nonebot.adapters.onebot.v11 import Bot
from nonebot.adapters.onebot.v11.message import Message
from nonebug import App
from pytest_mock import MockerFixture
from respx import MockRouter
from tests.config import BotId, UserId, GroupId, MessageId
from tests.utils import get_response_json as _get_response_json
from tests.config import BotId, GroupId, MessageId, UserId
from tests.utils import _v11_group_message_event, _v11_private_message_send
from tests.utils import get_response_json as _get_response_json
def get_response_json(file: str) -> dict:
@ -62,10 +62,10 @@ def init_mocked_api(mocked_api: MockRouter) -> None:
zip_bytes = io.BytesIO()
from zhenxun.builtin_plugins.auto_update.config import (
REPLACE_FOLDERS,
REQ_TXT_FILE_STRING,
PYPROJECT_FILE_STRING,
PYPROJECT_LOCK_FILE_STRING,
REPLACE_FOLDERS,
REQ_TXT_FILE_STRING,
)
# 指定要添加到压缩文件中的文件路径列表
@ -196,10 +196,10 @@ def add_directory_to_tar(tarinfo, tar):
def init_mocker_path(mocker: MockerFixture, tmp_path: Path):
from zhenxun.builtin_plugins.auto_update.config import (
REQ_TXT_FILE_STRING,
VERSION_FILE_STRING,
PYPROJECT_FILE_STRING,
PYPROJECT_LOCK_FILE_STRING,
REQ_TXT_FILE_STRING,
VERSION_FILE_STRING,
)
mocker.patch(
@ -268,10 +268,10 @@ async def test_check_update_release(
"""
from zhenxun.builtin_plugins.auto_update import _matcher
from zhenxun.builtin_plugins.auto_update.config import (
REPLACE_FOLDERS,
REQ_TXT_FILE_STRING,
PYPROJECT_FILE_STRING,
PYPROJECT_LOCK_FILE_STRING,
REPLACE_FOLDERS,
REQ_TXT_FILE_STRING,
)
init_mocked_api(mocked_api=mocked_api)
@ -359,10 +359,10 @@ async def test_check_update_dev(
"""
from zhenxun.builtin_plugins.auto_update import _matcher
from zhenxun.builtin_plugins.auto_update.config import (
REPLACE_FOLDERS,
REQ_TXT_FILE_STRING,
PYPROJECT_FILE_STRING,
PYPROJECT_LOCK_FILE_STRING,
REPLACE_FOLDERS,
REQ_TXT_FILE_STRING,
)
init_mocked_api(mocked_api=mocked_api)
@ -450,10 +450,10 @@ async def test_check_update_main(
"""
from zhenxun.builtin_plugins.auto_update import _matcher
from zhenxun.builtin_plugins.auto_update.config import (
REPLACE_FOLDERS,
REQ_TXT_FILE_STRING,
PYPROJECT_FILE_STRING,
PYPROJECT_LOCK_FILE_STRING,
REPLACE_FOLDERS,
REQ_TXT_FILE_STRING,
)
init_mocked_api(mocked_api=mocked_api)

View File

@ -1,17 +1,17 @@
from collections.abc import Callable
from pathlib import Path
import platform
from typing import cast
from pathlib import Path
from collections.abc import Callable
import nonebot
from nonebug import App
from respx import MockRouter
from pytest_mock import MockerFixture
from nonebot.adapters.onebot.v11 import Bot
from nonebot.adapters.onebot.v11.event import GroupMessageEvent
from nonebug import App
from pytest_mock import MockerFixture
from respx import MockRouter
from tests.config import BotId, GroupId, MessageId, UserId
from tests.utils import _v11_group_message_event
from tests.config import BotId, UserId, GroupId, MessageId
platform_uname = platform.uname_result(
system="Linux",
@ -67,9 +67,9 @@ async def test_check(
"""
测试自检
"""
from zhenxun.configs.config import BotConfig
from zhenxun.builtin_plugins.check import _matcher
from zhenxun.builtin_plugins.check.data_source import __get_version
from zhenxun.configs.config import BotConfig
(
mock_psutil,
@ -137,9 +137,9 @@ async def test_check_arm(
"""
测试自检arm
"""
from zhenxun.configs.config import BotConfig
from zhenxun.builtin_plugins.check import _matcher
from zhenxun.builtin_plugins.check.data_source import __get_version
from zhenxun.configs.config import BotConfig
platform_uname_arm = platform.uname_result(
system="Linux",

View File

@ -1,18 +1,18 @@
from typing import cast
from pathlib import Path
from collections.abc import Callable
from pathlib import Path
from typing import cast
import pytest
from nonebug import App
from respx import MockRouter
from pytest_mock import MockerFixture
from nonebot.adapters.onebot.v11 import Bot
from nonebot.adapters.onebot.v11.message import Message
from nonebot.adapters.onebot.v11.event import GroupMessageEvent
from nonebot.adapters.onebot.v11.message import Message
from nonebug import App
import pytest
from pytest_mock import MockerFixture
from respx import MockRouter
from tests.utils import _v11_group_message_event
from tests.config import BotId, UserId, GroupId, MessageId
from tests.builtin_plugins.plugin_store.utils import init_mocked_api
from tests.config import BotId, GroupId, MessageId, UserId
from tests.utils import _v11_group_message_event
@pytest.mark.parametrize("package_api", ["jsd", "gh"])

View File

@ -1,16 +1,16 @@
from typing import cast
from pathlib import Path
from collections.abc import Callable
from pathlib import Path
from typing import cast
from nonebug import App
from respx import MockRouter
from pytest_mock import MockerFixture
from nonebot.adapters.onebot.v11 import Bot, Message
from nonebot.adapters.onebot.v11.event import GroupMessageEvent
from nonebug import App
from pytest_mock import MockerFixture
from respx import MockRouter
from tests.utils import _v11_group_message_event
from tests.config import BotId, UserId, GroupId, MessageId
from tests.builtin_plugins.plugin_store.utils import init_mocked_api
from tests.config import BotId, GroupId, MessageId, UserId
from tests.utils import _v11_group_message_event
async def test_plugin_store(

View File

@ -1,19 +1,19 @@
# ruff: noqa: ASYNC230
from typing import cast
from pathlib import Path
from collections.abc import Callable
from pathlib import Path
from typing import cast
from nonebug import App
from respx import MockRouter
from pytest_mock import MockerFixture
from nonebot.adapters.onebot.v11 import Bot
from nonebot.adapters.onebot.v11.message import Message
from nonebot.adapters.onebot.v11.event import GroupMessageEvent
from nonebot.adapters.onebot.v11.message import Message
from nonebug import App
from pytest_mock import MockerFixture
from respx import MockRouter
from tests.builtin_plugins.plugin_store.utils import get_content_bytes, init_mocked_api
from tests.config import BotId, GroupId, MessageId, UserId
from tests.utils import _v11_group_message_event
from tests.config import BotId, UserId, GroupId, MessageId
from tests.builtin_plugins.plugin_store.utils import init_mocked_api, get_content_bytes
async def test_remove_plugin(

View File

@ -1,17 +1,17 @@
from typing import cast
from pathlib import Path
from collections.abc import Callable
from pathlib import Path
from typing import cast
from nonebug import App
from respx import MockRouter
from pytest_mock import MockerFixture
from nonebot.adapters.onebot.v11 import Bot
from nonebot.adapters.onebot.v11.message import Message
from nonebot.adapters.onebot.v11.event import GroupMessageEvent
from nonebot.adapters.onebot.v11.message import Message
from nonebug import App
from pytest_mock import MockerFixture
from respx import MockRouter
from tests.utils import _v11_group_message_event
from tests.config import BotId, UserId, GroupId, MessageId
from tests.builtin_plugins.plugin_store.utils import init_mocked_api
from tests.config import BotId, GroupId, MessageId, UserId
from tests.utils import _v11_group_message_event
async def test_search_plugin_name(

View File

@ -1,17 +1,17 @@
from typing import cast
from pathlib import Path
from collections.abc import Callable
from pathlib import Path
from typing import cast
from nonebug import App
from respx import MockRouter
from pytest_mock import MockerFixture
from nonebot.adapters.onebot.v11 import Bot
from nonebot.adapters.onebot.v11.message import Message
from nonebot.adapters.onebot.v11.event import GroupMessageEvent
from nonebot.adapters.onebot.v11.message import Message
from nonebug import App
from pytest_mock import MockerFixture
from respx import MockRouter
from tests.utils import _v11_group_message_event
from tests.config import BotId, UserId, GroupId, MessageId
from tests.builtin_plugins.plugin_store.utils import init_mocked_api
from tests.config import BotId, GroupId, MessageId, UserId
from tests.utils import _v11_group_message_event
async def test_update_all_plugin_basic_need_update(
@ -36,7 +36,6 @@ async def test_update_all_plugin_basic_need_update(
return_value=[("search_image", "0.0")],
)
async with app.test_matcher(_matcher) as ctx:
bot = create_bot(ctx)
bot: Bot = cast(Bot, bot)
@ -90,7 +89,6 @@ async def test_update_all_plugin_basic_is_new(
return_value=[("search_image", "0.1")],
)
async with app.test_matcher(_matcher) as ctx:
bot = create_bot(ctx)
bot: Bot = cast(Bot, bot)

View File

@ -1,17 +1,17 @@
from typing import cast
from pathlib import Path
from collections.abc import Callable
from pathlib import Path
from typing import cast
from nonebug import App
from respx import MockRouter
from pytest_mock import MockerFixture
from nonebot.adapters.onebot.v11 import Bot
from nonebot.adapters.onebot.v11.message import Message
from nonebot.adapters.onebot.v11.event import GroupMessageEvent
from nonebot.adapters.onebot.v11.message import Message
from nonebug import App
from pytest_mock import MockerFixture
from respx import MockRouter
from tests.utils import _v11_group_message_event
from tests.config import BotId, UserId, GroupId, MessageId
from tests.builtin_plugins.plugin_store.utils import init_mocked_api
from tests.config import BotId, GroupId, MessageId, UserId
from tests.utils import _v11_group_message_event
async def test_update_plugin_basic_need_update(

View File

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

View File

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

View File

@ -1,13 +1,13 @@
import uuid
from datetime import datetime
import uuid
import nonebot
import ujson as json
from nonebot import require
from tortoise import Tortoise
from nonebot.adapters import Bot
from nonebot.drivers import Driver
from tortoise import Tortoise
from tortoise.exceptions import OperationalError
import ujson as json
require("nonebot_plugin_apscheduler")
require("nonebot_plugin_alconna")
@ -16,15 +16,15 @@ require("nonebot_plugin_userinfo")
require("nonebot_plugin_htmlrender")
# require("nonebot_plugin_uninfo")
from zhenxun.services.log import logger
from zhenxun.models.sign_user import SignUser
from zhenxun.models.goods_info import GoodsInfo
from zhenxun.utils.platform import PlatformUtils
from zhenxun.models.bot_console import BotConsole
from zhenxun.models.user_console import UserConsole
from zhenxun.utils.decorator.shop import shop_register
from zhenxun.models.bot_connect_log import BotConnectLog
from zhenxun.models.bot_console import BotConsole
from zhenxun.models.goods_info import GoodsInfo
from zhenxun.models.group_member_info import GroupInfoUser
from zhenxun.models.sign_user import SignUser
from zhenxun.models.user_console import UserConsole
from zhenxun.services.log import logger
from zhenxun.utils.decorator.shop import shop_register
from zhenxun.utils.platform import PlatformUtils
driver: Driver = nonebot.get_driver()

View File

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

View File

@ -1,18 +1,18 @@
from nonebot.plugin import PluginMetadata
from nonebot_plugin_session import EventSession
from nonebot_plugin_alconna import Alconna, Arparma, on_alconna
from nonebot_plugin_session import EventSession
from zhenxun.services.log import logger
from zhenxun.configs.config import Config
from zhenxun.configs.utils import PluginExtraData, RegisterConfig
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType
from zhenxun.utils.exception import EmptyError
from zhenxun.utils.message import MessageUtils
from zhenxun.utils.rules import admin_check, ensure_group
from zhenxun.configs.utils import RegisterConfig, PluginExtraData
from .normal_help import build_help
from .config import ADMIN_HELP_IMAGE
from .html_help import build_html_help
from .normal_help import build_help
__plugin_meta__ = PluginMetadata(
name="群组管理员帮助",

View File

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

View File

@ -1,10 +1,10 @@
from nonebot_plugin_htmlrender import template_to_pic
from zhenxun.builtin_plugins.admin.admin_help.config import ADMIN_HELP_IMAGE
from zhenxun.configs.config import BotConfig
from zhenxun.configs.path_config import TEMPLATE_PATH
from zhenxun.models.task_info import TaskInfo
from zhenxun.utils._build_image import BuildImage
from zhenxun.configs.path_config import TEMPLATE_PATH
from zhenxun.builtin_plugins.admin.admin_help.config import ADMIN_HELP_IMAGE
from .utils import get_plugins

View File

@ -1,14 +1,14 @@
from PIL.ImageFont import FreeTypeFont
from nonebot.plugin import PluginMetadata
from PIL.ImageFont import FreeTypeFont
from zhenxun.services.log import logger
from zhenxun.models.task_info import TaskInfo
from zhenxun.models.plugin_info import PluginInfo
from zhenxun.models.task_info import TaskInfo
from zhenxun.services.log import logger
from zhenxun.utils._build_image import BuildImage
from zhenxun.utils.image_utils import text2image, group_image, build_sort_image
from zhenxun.utils.image_utils import build_sort_image, group_image, text2image
from .utils import get_plugins
from .config import ADMIN_HELP_IMAGE
from .utils import get_plugins
async def build_usage_des_image(

View File

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

View File

@ -1,13 +1,13 @@
from nonebot import on_notice
from nonebot.plugin import PluginMetadata
from nonebot.adapters.onebot.v11 import GroupAdminNoticeEvent
from nonebot.plugin import PluginMetadata
from zhenxun.services.log import logger
from zhenxun.configs.config import Config
from zhenxun.configs.utils import PluginExtraData, RegisterConfig
from zhenxun.models.level_user import LevelUser
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType
from zhenxun.utils.rules import notice_rule
from zhenxun.models.level_user import LevelUser
from zhenxun.configs.utils import RegisterConfig, PluginExtraData
__plugin_meta__ = PluginMetadata(
name="群管理员变动监测",

View File

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

View File

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

View File

@ -1,19 +1,19 @@
import nonebot
from nonebot import on_notice
from nonebot.adapters import Bot
from nonebot.plugin import PluginMetadata
from nonebot_plugin_session import EventSession
from nonebot_plugin_apscheduler import scheduler
from nonebot_plugin_alconna import Alconna, Arparma, on_alconna
from nonebot.adapters.onebot.v11 import GroupIncreaseNoticeEvent
from nonebot.plugin import PluginMetadata
from nonebot_plugin_alconna import Alconna, Arparma, on_alconna
from nonebot_plugin_apscheduler import scheduler
from nonebot_plugin_session import EventSession
from zhenxun.configs.config import BotConfig
from zhenxun.configs.utils import PluginExtraData
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType
from zhenxun.configs.config import BotConfig
from zhenxun.utils.message import MessageUtils
from zhenxun.utils.platform import PlatformUtils
from zhenxun.configs.utils import PluginExtraData
from zhenxun.utils.rules import admin_check, notice_rule, ensure_group
from zhenxun.utils.rules import admin_check, ensure_group, notice_rule
from ._data_source import MemberUpdateManage

View File

@ -4,11 +4,11 @@ import nonebot
from nonebot.adapters import Bot
from nonebot_plugin_uninfo import Member, SceneType, get_interface
from zhenxun.services.log import logger
from zhenxun.configs.config import Config
from zhenxun.models.level_user import LevelUser
from zhenxun.utils.platform import PlatformUtils
from zhenxun.models.group_member_info import GroupInfoUser
from zhenxun.models.level_user import LevelUser
from zhenxun.services.log import logger
from zhenxun.utils.platform import PlatformUtils
class MemberUpdateManage:

View File

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

View File

@ -1,16 +1,16 @@
from nonebot.adapters import Bot
from nonebot.plugin import PluginMetadata
from nonebot_plugin_alconna import AlconnaQuery, Arparma, Match, Query
from nonebot_plugin_session import EventSession
from nonebot_plugin_alconna import Match, Query, Arparma, AlconnaQuery
from zhenxun.services.log import logger
from zhenxun.configs.config import Config
from zhenxun.utils.message import MessageUtils
from zhenxun.configs.utils import PluginExtraData, RegisterConfig
from zhenxun.services.log import logger
from zhenxun.utils.enum import BlockType, PluginType
from zhenxun.configs.utils import RegisterConfig, PluginExtraData
from zhenxun.utils.message import MessageUtils
from .command import _status_matcher, _group_status_matcher
from ._data_source import PluginManage, build_task, build_plugin, delete_help_image
from ._data_source import PluginManage, build_plugin, build_task, delete_help_image
from .command import _group_status_matcher, _status_matcher
base_config = Config.get("plugin_switch")

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.utils.image_utils import RowStyle, BuildImage, ImageTemplate
from zhenxun.models.group_console import GroupConsole
from zhenxun.models.plugin_info import PluginInfo
from zhenxun.models.task_info import TaskInfo
from zhenxun.utils.enum import BlockType, PluginType
from zhenxun.utils.exception import GroupInfoNotFound
from zhenxun.utils.image_utils import BuildImage, ImageTemplate, RowStyle
HELP_FILE = IMAGE_PATH / "SIMPLE_HELP.png"
@ -35,12 +35,8 @@ def plugin_row_style(column: str, text: str) -> RowStyle:
RowStyle: RowStyle
"""
style = RowStyle()
if (
column == "全局状态"
and text == "开启"
or column != "全局状态"
and column == "加载状态"
and text == "SUCCESS"
if (column == "全局状态" and text == "开启") or (
column != "全局状态" and column == "加载状态" and text == "SUCCESS"
):
style.font_color = "#67C23A"
elif column in {"全局状态", "加载状态"}:

View File

@ -1,21 +1,21 @@
import shutil
from pathlib import Path
import shutil
from typing import Annotated
import ujson as json
from nonebot import on_command
from nonebot.params import Command
from nonebot.plugin import PluginMetadata
from nonebot_plugin_alconna import Image, Text, UniMsg
from nonebot_plugin_session import EventSession
from nonebot_plugin_alconna import Text, Image, UniMsg
import ujson as json
from zhenxun.services.log import logger
from zhenxun.configs.config import Config
from zhenxun.configs.path_config import DATA_PATH
from zhenxun.configs.utils import PluginExtraData, RegisterConfig
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType
from zhenxun.utils.http_utils import AsyncHttpx
from zhenxun.configs.path_config import DATA_PATH
from zhenxun.utils.rules import admin_check, ensure_group
from zhenxun.configs.utils import RegisterConfig, PluginExtraData
base_config = Config.get("admin_bot_manage")

View File

@ -1,14 +1,14 @@
from nonebot.rule import to_me
from nonebot.adapters import Bot
from nonebot.permission import SUPERUSER
from nonebot.plugin import PluginMetadata
from nonebot.rule import to_me
from nonebot_plugin_alconna import Alconna, Args, Match, on_alconna
from nonebot_plugin_session import EventSession
from nonebot_plugin_alconna import Args, Match, Alconna, on_alconna
from zhenxun.configs.utils import PluginExtraData, RegisterConfig
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType
from zhenxun.utils.message import MessageUtils
from zhenxun.configs.utils import RegisterConfig, PluginExtraData
from ._data_source import UpdateManage

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,23 +1,23 @@
from nonebot.rule import to_me
from nonebot.adapters import Bot
from nonebot_plugin_uninfo import Uninfo
from nonebot.plugin import PluginMetadata
from nonebot.rule import to_me
from nonebot_plugin_alconna import (
Args,
Match,
Query,
Option,
Alconna,
AlconnaQuery,
Args,
Match,
Option,
Query,
on_alconna,
store_true,
)
from nonebot_plugin_uninfo import Uninfo
from zhenxun.builtin_plugins.help._config import GROUP_HELP_PATH, SIMPLE_HELP_IMAGE
from zhenxun.configs.utils import PluginExtraData, RegisterConfig
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType
from zhenxun.utils.message import MessageUtils
from zhenxun.configs.utils import RegisterConfig, PluginExtraData
from zhenxun.builtin_plugins.help._config import GROUP_HELP_PATH, SIMPLE_HELP_IMAGE
from ._data_source import create_help_img, get_plugin_help

View File

@ -1,16 +1,16 @@
import nonebot
from nonebot_plugin_uninfo import Uninfo
from zhenxun.utils.enum import PluginType
from zhenxun.configs.path_config import IMAGE_PATH
from zhenxun.models.level_user import LevelUser
from zhenxun.models.plugin_info import PluginInfo
from zhenxun.configs.path_config import IMAGE_PATH
from zhenxun.utils.enum import PluginType
from zhenxun.utils.image_utils import BuildImage, ImageTemplate
from ._config import GROUP_HELP_PATH, SIMPLE_HELP_IMAGE, base_config
from .html_help import build_html_image
from .normal_help import build_normal_image
from .zhenxun_help import build_zhenxun_image
from ._config import GROUP_HELP_PATH, SIMPLE_HELP_IMAGE, base_config
random_bk_path = IMAGE_PATH / "background" / "help" / "simple_help"

View File

@ -1,8 +1,8 @@
from collections.abc import Callable
from zhenxun.utils.enum import PluginType
from zhenxun.models.plugin_info import PluginInfo
from zhenxun.models.group_console import GroupConsole
from zhenxun.models.plugin_info import PluginInfo
from zhenxun.utils.enum import PluginType
async def sort_type() -> dict[str, list[PluginInfo]]:

View File

@ -1,13 +1,13 @@
import os
import random
from pydantic import BaseModel
from nonebot_plugin_htmlrender import template_to_pic
from pydantic import BaseModel
from zhenxun.utils.enum import BlockType
from zhenxun.models.plugin_info import PluginInfo
from zhenxun.configs.path_config import TEMPLATE_PATH
from zhenxun.models.group_console import GroupConsole
from zhenxun.models.plugin_info import PluginInfo
from zhenxun.utils.enum import BlockType
from ._utils import classify_plugin

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.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

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_uninfo import Uninfo
from pydantic import BaseModel
from zhenxun.utils.enum import BlockType
from zhenxun.configs.config import BotConfig
from zhenxun.utils.platform import PlatformUtils
from zhenxun.models.plugin_info import PluginInfo
from zhenxun.configs.path_config import TEMPLATE_PATH
from zhenxun.models.group_console import GroupConsole
from zhenxun.models.plugin_info import PluginInfo
from zhenxun.utils.enum import BlockType
from zhenxun.utils.platform import PlatformUtils
from ._utils import classify_plugin

View File

@ -2,20 +2,20 @@ import os
import random
from nonebot import on_message
from nonebot.rule import to_me
from nonebot.matcher import Matcher
from nonebot.plugin import PluginMetadata
from nonebot.rule import to_me
from nonebot_plugin_alconna import UniMsg
from nonebot_plugin_session import EventSession
from zhenxun.configs.path_config import IMAGE_PATH
from zhenxun.configs.utils import PluginExtraData
from zhenxun.models.ban_console import BanConsole
from zhenxun.models.group_console import GroupConsole
from zhenxun.models.plugin_info import PluginInfo
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType
from zhenxun.utils.message import MessageUtils
from zhenxun.configs.utils import PluginExtraData
from zhenxun.models.ban_console import BanConsole
from zhenxun.models.plugin_info import PluginInfo
from zhenxun.configs.path_config import IMAGE_PATH
from zhenxun.models.group_console import GroupConsole
__plugin_meta__ = PluginMetadata(
name="笨蛋检测",

View File

@ -1,30 +1,30 @@
from pydantic import BaseModel
from nonebot.matcher import Matcher
from nonebot.adapters import Bot, Event
from nonebot_plugin_alconna import At, UniMsg
from nonebot.exception import IgnoredException
from tortoise.exceptions import IntegrityError
from nonebot_plugin_session import EventSession
from nonebot.adapters.onebot.v11 import PokeNotifyEvent
from nonebot.exception import IgnoredException
from nonebot.matcher import Matcher
from nonebot_plugin_alconna import At, UniMsg
from nonebot_plugin_session import EventSession
from pydantic import BaseModel
from tortoise.exceptions import IntegrityError
from zhenxun.services.log import logger
from zhenxun.configs.config import Config
from zhenxun.utils.message import MessageUtils
from zhenxun.models.level_user import LevelUser
from zhenxun.models.bot_console import BotConsole
from zhenxun.models.group_console import GroupConsole
from zhenxun.models.level_user import LevelUser
from zhenxun.models.plugin_info import PluginInfo
from zhenxun.models.plugin_limit import PluginLimit
from zhenxun.models.user_console import UserConsole
from zhenxun.utils.exception import InsufficientGold
from zhenxun.models.group_console import GroupConsole
from zhenxun.utils.utils import FreqLimiter, CountLimiter, UserBlockLimiter
from zhenxun.services.log import logger
from zhenxun.utils.enum import (
BlockType,
GoldHandle,
PluginType,
LimitWatchType,
PluginLimitType,
PluginType,
)
from zhenxun.utils.exception import InsufficientGold
from zhenxun.utils.message import MessageUtils
from zhenxun.utils.utils import CountLimiter, FreqLimiter, UserBlockLimiter
base_config = Config.get("hook")

View File

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

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.message import run_preprocessor
from nonebot.exception import IgnoredException
from nonebot.matcher import Matcher
from nonebot.message import run_preprocessor
from nonebot.typing import T_State
from nonebot_plugin_alconna import At
from nonebot_plugin_session import EventSession
from zhenxun.services.log import logger
from zhenxun.configs.config import Config
from zhenxun.utils.enum import PluginType
from zhenxun.utils.utils import FreqLimiter
from zhenxun.utils.message import MessageUtils
from zhenxun.models.ban_console import BanConsole
from zhenxun.models.group_console import GroupConsole
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType
from zhenxun.utils.message import MessageUtils
from zhenxun.utils.utils import FreqLimiter
Config.add_plugin_config(
"hook",

View File

@ -1,20 +1,20 @@
import time
from collections import defaultdict
import time
from nonebot.adapters import Event
from nonebot.typing import T_State
from nonebot.matcher import Matcher
from nonebot_plugin_alconna import At
from nonebot.adapters.onebot.v11 import Bot
from nonebot.message import run_preprocessor
from nonebot.exception import IgnoredException
from nonebot.matcher import Matcher
from nonebot.message import run_preprocessor
from nonebot.typing import T_State
from nonebot_plugin_alconna import At
from nonebot_plugin_session import EventSession
from zhenxun.services.log import logger
from zhenxun.configs.config import Config
from zhenxun.models.ban_console import BanConsole
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType
from zhenxun.utils.message import MessageUtils
from zhenxun.models.ban_console import BanConsole
malicious_check_time = Config.get_config("hook", "MALICIOUS_CHECK_TIME")
malicious_ban_count = Config.get_config("hook", "MALICIOUS_BAN_COUNT")

View File

@ -1,14 +1,14 @@
from nonebot.adapters import Bot
from nonebot_plugin_uninfo import Uninfo
from nonebot.plugin import PluginMetadata
from nonebot_plugin_alconna import Alconna, Args, Arparma, At, Match, on_alconna
from nonebot_plugin_uninfo import Uninfo
from playwright.async_api import TimeoutError
from nonebot_plugin_alconna import At, Args, Match, Alconna, Arparma, on_alconna
from zhenxun.configs.utils import PluginExtraData
from zhenxun.models.group_member_info import GroupInfoUser
from zhenxun.services.log import logger
from zhenxun.utils.depends import UserName
from zhenxun.utils.message import MessageUtils
from zhenxun.configs.utils import PluginExtraData
from zhenxun.models.group_member_info import GroupInfoUser
from .my_info import get_user_info

View File

@ -1,18 +1,18 @@
import random
from datetime import datetime, timedelta
import random
from tortoise.functions import Count
from tortoise.expressions import RawSQL
from nonebot_plugin_uninfo import Uninfo
from nonebot_plugin_htmlrender import template_to_pic
from nonebot_plugin_uninfo import Uninfo
from tortoise.expressions import RawSQL
from tortoise.functions import Count
from zhenxun.models.sign_user import SignUser
from zhenxun.models.level_user import LevelUser
from zhenxun.models.statistics import Statistics
from zhenxun.utils.platform import PlatformUtils
from zhenxun.models.chat_history import ChatHistory
from zhenxun.models.user_console import UserConsole
from zhenxun.configs.path_config import TEMPLATE_PATH
from zhenxun.models.chat_history import ChatHistory
from zhenxun.models.level_user import LevelUser
from zhenxun.models.sign_user import SignUser
from zhenxun.models.statistics import Statistics
from zhenxun.models.user_console import UserConsole
from zhenxun.utils.platform import PlatformUtils
RACE = [
"龙族",

View File

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

View File

@ -1,16 +1,16 @@
from pathlib import Path
import nonebot
from ruamel.yaml import YAML
from nonebot.plugin import Plugin
from nonebot.drivers import Driver
from nonebot import get_loaded_plugins
from nonebot.drivers import Driver
from nonebot.plugin import Plugin
from ruamel.yaml import YAML
from ruamel.yaml.comments import CommentedMap
from zhenxun.services.log import logger
from zhenxun.configs.config import Config
from zhenxun.configs.utils import RegisterConfig
from zhenxun.configs.path_config import DATA_PATH
from zhenxun.configs.utils import RegisterConfig
from zhenxun.services.log import logger
_yaml = YAML(pure=True)
_yaml.allow_unicode = True

View File

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

View File

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

View File

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

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

View File

@ -1,29 +1,28 @@
import os
import re
import random
from pathlib import Path
from datetime import datetime
import os
from pathlib import Path
import random
import re
import ujson as json
from nonebot.adapters import Bot
from nonebot_plugin_alconna import At
from nonebot_plugin_uninfo import Uninfo
import ujson as json
from zhenxun.services.log import logger
from zhenxun.builtin_plugins.platform.qq.exception import ForceAddGroupError
from zhenxun.configs.config import Config
from zhenxun.utils.utils import FreqLimiter
from zhenxun.utils.message import MessageUtils
from zhenxun.configs.path_config import DATA_PATH, IMAGE_PATH
from zhenxun.models.fg_request import FgRequest
from zhenxun.models.level_user import LevelUser
from zhenxun.utils.enum import RequestHandleType
from zhenxun.utils.platform import PlatformUtils
from zhenxun.models.plugin_info import PluginInfo
from zhenxun.utils.common_utils import CommonUtils
from zhenxun.models.group_console import GroupConsole
from zhenxun.models.group_member_info import GroupInfoUser
from zhenxun.configs.path_config import DATA_PATH, IMAGE_PATH
from ..exception import ForceAddGroupError
from zhenxun.models.level_user import LevelUser
from zhenxun.models.plugin_info import PluginInfo
from zhenxun.services.log import logger
from zhenxun.utils.common_utils import CommonUtils
from zhenxun.utils.enum import RequestHandleType
from zhenxun.utils.message import MessageUtils
from zhenxun.utils.platform import PlatformUtils
from zhenxun.utils.utils import FreqLimiter
base_config = Config.get("invite_manager")

View File

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

View File

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

View File

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

View File

@ -1,26 +1,26 @@
import time
from datetime import datetime
import time
from nonebot.plugin import PluginMetadata
from nonebot import on_message, on_request
from nonebot_plugin_session import EventSession
from nonebot_plugin_apscheduler import scheduler
from nonebot.adapters.onebot.v11 import Bot as v11Bot
from nonebot.adapters.onebot.v12 import Bot as v12Bot
from nonebot.adapters.onebot.v11 import (
ActionFailed,
GroupRequestEvent,
FriendRequestEvent,
GroupRequestEvent,
)
from nonebot.adapters.onebot.v11 import Bot as v11Bot
from nonebot.adapters.onebot.v12 import Bot as v12Bot
from nonebot.plugin import PluginMetadata
from nonebot_plugin_apscheduler import scheduler
from nonebot_plugin_session import EventSession
from zhenxun.services.log import logger
from zhenxun.configs.config import BotConfig, Config
from zhenxun.configs.utils import PluginExtraData, RegisterConfig
from zhenxun.models.fg_request import FgRequest
from zhenxun.utils.platform import PlatformUtils
from zhenxun.models.friend_user import FriendUser
from zhenxun.configs.config import Config, BotConfig
from zhenxun.models.group_console import GroupConsole
from zhenxun.configs.utils import RegisterConfig, PluginExtraData
from zhenxun.utils.enum import PluginType, RequestType, RequestHandleType
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType, RequestHandleType, RequestType
from zhenxun.utils.platform import PlatformUtils
base_config = Config.get("invite_manager")

View File

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

View File

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

View File

@ -1,15 +1,15 @@
from datetime import datetime, timedelta
import pytz
import nonebot
from nonebot_plugin_apscheduler import scheduler
import pytz
from zhenxun.services.log import logger
from zhenxun.configs.config import Config
from zhenxun.models.task_info import TaskInfo
from zhenxun.utils.platform import PlatformUtils
from zhenxun.models.chat_history import ChatHistory
from zhenxun.models.group_console import GroupConsole
from zhenxun.models.task_info import TaskInfo
from zhenxun.services.log import logger
from zhenxun.utils.platform import PlatformUtils
Config.add_plugin_config(
"chat_check",

View File

@ -3,14 +3,14 @@ from nonebot.adapters import Bot
from nonebot.plugin import PluginMetadata
from nonebot_plugin_apscheduler import scheduler
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType
from zhenxun.configs.config import BotConfig
from zhenxun.utils.message import MessageUtils
from zhenxun.configs.path_config import IMAGE_PATH
from zhenxun.configs.utils import PluginExtraData, Task
from zhenxun.services.log import logger
from zhenxun.utils.common_utils import CommonUtils
from zhenxun.utils.enum import PluginType
from zhenxun.utils.message import MessageUtils
from zhenxun.utils.platform import broadcast_group
from zhenxun.configs.utils import Task, PluginExtraData
__plugin_meta__ = PluginMetadata(
name="早晚安被动技能",

View File

@ -1,15 +1,15 @@
from asyncio.exceptions import TimeoutError
import nonebot
import aiofiles
import ujson as json
import nonebot
from nonebot.drivers import Driver
from nonebot_plugin_apscheduler import scheduler
import ujson as json
from zhenxun.services.log import logger
from zhenxun.utils.http_utils import AsyncHttpx
from zhenxun.configs.path_config import TEXT_PATH
from zhenxun.models.group_console import GroupConsole
from zhenxun.services.log import logger
from zhenxun.utils.http_utils import AsyncHttpx
driver: Driver = nonebot.get_driver()

View File

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

View File

@ -1,27 +1,27 @@
import time
import asyncio
import inspect
from typing import Any, Literal
from types import MappingProxyType
from collections.abc import Callable
import inspect
import time
from types import MappingProxyType
from typing import Any, Literal
from nonebot.adapters import Bot, Event
from nonebot_plugin_alconna import UniMessage, UniMsg
from nonebot_plugin_session import EventSession
from nonebot_plugin_uninfo import Uninfo
from pydantic import BaseModel, create_model
from nonebot_plugin_session import EventSession
from nonebot_plugin_alconna import UniMsg, UniMessage
from zhenxun.services.log import logger
from zhenxun.models.goods_info import GoodsInfo
from zhenxun.utils.platform import PlatformUtils
from zhenxun.models.friend_user import FriendUser
from zhenxun.configs.path_config import IMAGE_PATH
from zhenxun.models.friend_user import FriendUser
from zhenxun.models.goods_info import GoodsInfo
from zhenxun.models.group_member_info import GroupInfoUser
from zhenxun.models.user_console import UserConsole
from zhenxun.models.user_gold_log import UserGoldLog
from zhenxun.utils.enum import GoldHandle, PropHandle
from zhenxun.models.user_props_log import UserPropsLog
from zhenxun.models.group_member_info import GroupInfoUser
from zhenxun.services.log import logger
from zhenxun.utils.enum import GoldHandle, PropHandle
from zhenxun.utils.image_utils import BuildImage, ImageTemplate, text2image
from zhenxun.utils.platform import PlatformUtils
ICON_PATH = IMAGE_PATH / "shop_icon"

View File

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

View File

@ -1,23 +1,23 @@
from datetime import datetime
from pathlib import Path
import random
import secrets
from pathlib import Path
from datetime import datetime
import pytz
from nonebot_plugin_uninfo import Uninfo
import pytz
from zhenxun.services.log import logger
from zhenxun.configs.path_config import IMAGE_PATH
from zhenxun.models.friend_user import FriendUser
from zhenxun.models.group_member_info import GroupInfoUser
from zhenxun.models.sign_log import SignLog
from zhenxun.models.sign_user import SignUser
from zhenxun.utils.platform import PlatformUtils
from zhenxun.models.friend_user import FriendUser
from zhenxun.configs.path_config import IMAGE_PATH
from zhenxun.models.user_console import UserConsole
from zhenxun.models.group_member_info import GroupInfoUser
from zhenxun.services.log import logger
from zhenxun.utils.image_utils import BuildImage, ImageTemplate
from zhenxun.utils.platform import PlatformUtils
from .utils import get_card
from ._random_event import random_event
from .utils import get_card
ICON_PATH = IMAGE_PATH / "_icon"

View File

@ -1,30 +1,30 @@
import os
import random
from io import BytesIO
from pathlib import Path
from datetime import datetime
from io import BytesIO
import os
from pathlib import Path
import random
import pytz
import nonebot
from nonebot.drivers import Driver
from nonebot_plugin_uninfo import Uninfo
from nonebot_plugin_htmlrender import template_to_pic
from nonebot_plugin_uninfo import Uninfo
import pytz
from zhenxun.configs.config import BotConfig, Config
from zhenxun.configs.path_config import IMAGE_PATH, TEMPLATE_PATH
from zhenxun.models.sign_log import SignLog
from zhenxun.models.sign_user import SignUser
from zhenxun.utils.http_utils import AsyncHttpx
from zhenxun.utils.image_utils import BuildImage
from zhenxun.configs.config import Config, BotConfig
from zhenxun.configs.path_config import IMAGE_PATH, TEMPLATE_PATH
from .config import (
SIGN_BACKGROUND_PATH,
SIGN_BORDER_PATH,
SIGN_RESOURCE_PATH,
SIGN_BACKGROUND_PATH,
SIGN_TODAY_CARD_PATH,
level2attitude,
lik2level,
lik2relation,
level2attitude,
)
assert (

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]:
if file.exists():
with open(file, "r", encoding="utf8") as f:
with open(file, encoding="utf8") as f:
data = json.load(f)
if not (statistics_group_file.parent / f"{file}.bak").exists():
with open(f"{file}.bak", "w", encoding="utf8") as wf:

View File

@ -2,14 +2,14 @@ from datetime import datetime, timedelta
from tortoise.functions import Count
from zhenxun.utils.enum import PluginType
from zhenxun.models.statistics import Statistics
from zhenxun.utils.image_utils import BuildImage
from zhenxun.models.plugin_info import PluginInfo
from zhenxun.utils.echart_utils import ChartUtils
from zhenxun.utils.echart_utils.models import Barh
from zhenxun.models.group_console import GroupConsole
from zhenxun.models.group_member_info import GroupInfoUser
from zhenxun.models.plugin_info import PluginInfo
from zhenxun.models.statistics import Statistics
from zhenxun.utils.echart_utils import ChartUtils
from zhenxun.utils.echart_utils.models import Barh
from zhenxun.utils.enum import PluginType
from zhenxun.utils.image_utils import BuildImage
class StatisticsManage:

View File

@ -1,18 +1,18 @@
from datetime import datetime
from nonebot.matcher import Matcher
from nonebot.adapters import Bot, Event
from nonebot.plugin import PluginMetadata
from nonebot.message import run_postprocessor
from nonebot_plugin_session import EventSession
from nonebot_plugin_apscheduler import scheduler
from nonebot.adapters.onebot.v11 import PokeNotifyEvent
from nonebot.matcher import Matcher
from nonebot.message import run_postprocessor
from nonebot.plugin import PluginMetadata
from nonebot_plugin_apscheduler import scheduler
from nonebot_plugin_session import EventSession
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType
from zhenxun.models.statistics import Statistics
from zhenxun.configs.utils import PluginExtraData
from zhenxun.models.plugin_info import PluginInfo
from zhenxun.models.statistics import Statistics
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType
__plugin_meta__ = PluginMetadata(
name="功能调用统计",

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_session import EventSession
from nonebot_plugin_apscheduler import scheduler
from nonebot_plugin_alconna import Alconna, on_alconna
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType
from zhenxun.utils.message import MessageUtils
from zhenxun.configs.path_config import TEMP_PATH
from zhenxun.configs.utils import PluginExtraData
from zhenxun.utils.utils import ResourceDirManager
from zhenxun.utils.enum import PluginType
__plugin_meta__ = PluginMetadata(
name="Bot管理",

View File

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

View File

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

View File

@ -1,18 +1,18 @@
from tortoise import Tortoise
from nonebot import on_command
from nonebot.rule import to_me
from nonebot.permission import SUPERUSER
from nonebot.plugin import PluginMetadata
from nonebot.rule import to_me
from nonebot_plugin_alconna import UniMsg
from nonebot_plugin_session import EventSession
from tortoise import Tortoise
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType
from zhenxun.configs.config import BotConfig
from zhenxun.utils.message import MessageUtils
from zhenxun.configs.utils import PluginExtraData
from zhenxun.models.ban_console import BanConsole
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType
from zhenxun.utils.image_utils import ImageTemplate
from zhenxun.utils.message import MessageUtils
__plugin_meta__ = PluginMetadata(
name="数据库操作",
@ -57,7 +57,8 @@ SELECT name FROM sqlite_master WHERE type='table';
SELECT_TABLE_PSQL_SQL = """
select a.tablename as name,d.description as desc from pg_tables a
left join pg_class c on relname=tablename
left join pg_description d on oid=objoid and objsubid=0 where a.schemaname = 'public'
left join pg_description d on oid=objoid and objsubid=0
where a.schemaname = 'public'
"""

View File

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

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 GroupConsole.filter(group_id=group_id).delete()
except Exception as e:
logger.error(f"退出群组失败", "退群", session=session, target=group_id, e=e)
logger.error("退出群组失败", "退群", session=session, target=group_id, e=e)
await MessageUtils.build_message(f"退出群组 {group_id} 失败...").send()
else:
# TODO: 其他平台的退群操作
await MessageUtils.build_message(f"暂未支持退群操作...").send()
await MessageUtils.build_message("暂未支持退群操作...").send()

View File

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

View File

@ -1,17 +1,17 @@
from nonebot.permission import SUPERUSER
from nonebot.plugin import PluginMetadata
from nonebot_plugin_session import EventSession
from nonebot_plugin_alconna import Alconna, Arparma, on_alconna
from nonebot_plugin_session import EventSession
from zhenxun.services.log import logger
from zhenxun.configs.config import Config
from zhenxun.configs.utils import PluginExtraData, RegisterConfig
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType
from zhenxun.utils.exception import EmptyError
from zhenxun.utils.message import MessageUtils
from zhenxun.configs.utils import RegisterConfig, PluginExtraData
from .normal_help import build_help
from .config import SUPERUSER_HELP_IMAGE
from .normal_help import build_help
from .zhenxun_help import build_html_help
__plugin_meta__ = PluginMetadata(

View File

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

View File

@ -1,14 +1,14 @@
from PIL.ImageFont import FreeTypeFont
from nonebot.plugin import PluginMetadata
from PIL.ImageFont import FreeTypeFont
from zhenxun.services.log import logger
from zhenxun.models.task_info import TaskInfo
from zhenxun.models.plugin_info import PluginInfo
from zhenxun.models.task_info import TaskInfo
from zhenxun.services.log import logger
from zhenxun.utils._build_image import BuildImage
from zhenxun.utils.image_utils import text2image, group_image, build_sort_image
from zhenxun.utils.image_utils import build_sort_image, group_image, text2image
from .utils import get_plugins
from .config import SUPERUSER_HELP_IMAGE
from .utils import get_plugins
async def build_usage_des_image(

View File

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

View File

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

View File

@ -1,29 +1,29 @@
import asyncio
import secrets
from fastapi import APIRouter, FastAPI
import nonebot
from fastapi import FastAPI, APIRouter
from nonebot.plugin import PluginMetadata
from nonebot.log import default_filter, default_format
from nonebot.plugin import PluginMetadata
from zhenxun.utils.enum import PluginType
from zhenxun.services.log import logger, logger_
from zhenxun.configs.config import Config as gConfig
from zhenxun.configs.utils import RegisterConfig, PluginExtraData
from zhenxun.configs.utils import PluginExtraData, RegisterConfig
from zhenxun.services.log import logger, logger_
from zhenxun.utils.enum import PluginType
from .public import init_public
from .auth import router as auth_router
from .api.logs import router as ws_log_routes
from .api.logs.log_manager import LOG_STORAGE
from .api.tabs.main import router as main_router
from .api.tabs.manage import router as manage_router
from .api.tabs.system import router as system_router
from .api.tabs.main import ws_router as status_routes
from .api.tabs.database import router as database_router
from .api.tabs.dashboard import router as dashboard_router
from .api.tabs.database import router as database_router
from .api.tabs.main import router as main_router
from .api.tabs.main import ws_router as status_routes
from .api.tabs.manage import router as manage_router
from .api.tabs.manage.chat import ws_router as chat_routes
from .api.tabs.plugin_manage import router as plugin_router
from .api.tabs.plugin_manage.store import router as store_router
from .api.tabs.system import router as system_router
from .auth import router as auth_router
from .public import init_public
__plugin_meta__ = PluginMetadata(
name="WebUi",

View File

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

View File

@ -1,7 +1,7 @@
from loguru import logger
from fastapi import APIRouter
from loguru import logger
from nonebot.utils import escape_tag
from starlette.websockets import WebSocket, WebSocketState, WebSocketDisconnect
from starlette.websockets import WebSocket, WebSocketDisconnect, WebSocketState
from .log_manager import LOG_STORAGE

View File

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

View File

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

View File

@ -1,16 +1,16 @@
import time
from datetime import datetime, timedelta
import time
import nonebot
from nonebot.adapters import Bot
from nonebot.drivers import Driver
from builtin_plugins.web_ui.api.tabs.main.data_source import bot_live
from zhenxun.models.chat_history import ChatHistory
from zhenxun.models.statistics import Statistics
from zhenxun.utils.platform import PlatformUtils
from zhenxun.models.chat_history import ChatHistory
from .model import BotInfo
from ..main.data_source import bot_live
driver: Driver = nonebot.get_driver()

View File

@ -1,18 +1,18 @@
import nonebot
from tortoise import Tortoise
from nonebot.drivers import Driver
from fastapi import Request, APIRouter
from fastapi import APIRouter, Request
from fastapi.responses import JSONResponse
import nonebot
from nonebot.drivers import Driver
from tortoise import Tortoise
from tortoise.exceptions import OperationalError
from builtin_plugins.web_ui.base_model import BaseResultModel, QueryModel, Result
from builtin_plugins.web_ui.utils import authentication
from zhenxun.configs.config import BotConfig
from zhenxun.models.task_info import TaskInfo
from zhenxun.models.plugin_info import PluginInfo
from zhenxun.models.task_info import TaskInfo
from .models.model import Column, SqlModel, SqlText
from .models.sql_log import SqlLog
from ....utils import authentication
from .models.model import Column, SqlText, SqlModel
from ....base_model import Result, QueryModel, BaseResultModel
router = APIRouter(prefix="/database")

View File

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

View File

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

View File

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

View File

@ -1,41 +1,41 @@
import nonebot
from fastapi import APIRouter
from tortoise.functions import Count
from fastapi.responses import JSONResponse
import nonebot
from nonebot.adapters.onebot.v11 import ActionFailed
from tortoise.functions import Count
from zhenxun.services.log import logger
from builtin_plugins.web_ui.base_model import Result
from builtin_plugins.web_ui.config import AVA_URL, GROUP_AVA_URL
from builtin_plugins.web_ui.utils import authentication
from zhenxun.configs.config import BotConfig
from zhenxun.models.task_info import TaskInfo
from zhenxun.models.fg_request import FgRequest
from zhenxun.models.statistics import Statistics
from zhenxun.utils.platform import PlatformUtils
from zhenxun.models.ban_console import BanConsole
from zhenxun.models.plugin_info import PluginInfo
from zhenxun.utils.exception import NotFoundError
from zhenxun.models.chat_history import ChatHistory
from zhenxun.models.fg_request import FgRequest
from zhenxun.models.group_console import GroupConsole
from zhenxun.utils.enum import RequestType, RequestHandleType
from zhenxun.models.plugin_info import PluginInfo
from zhenxun.models.statistics import Statistics
from zhenxun.models.task_info import TaskInfo
from zhenxun.services.log import logger
from zhenxun.utils.enum import RequestHandleType, RequestType
from zhenxun.utils.exception import NotFoundError
from zhenxun.utils.platform import PlatformUtils
from ....base_model import Result
from ....utils import authentication
from ....config import AVA_URL, GROUP_AVA_URL
from .model import (
Task,
Friend,
Plugin,
ReqResult,
LeaveGroup,
UserDetail,
GroupDetail,
GroupResult,
SendMessage,
UpdateGroup,
ClearRequest,
DeleteFriend,
HandleRequest,
GroupRequestResult,
Friend,
FriendRequestResult,
GroupDetail,
GroupRequestResult,
GroupResult,
HandleRequest,
LeaveGroup,
Plugin,
ReqResult,
SendMessage,
Task,
UpdateGroup,
UserDetail,
)
router = APIRouter(prefix="/manage")

View File

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

View File

@ -1,21 +1,21 @@
import re
import cattrs
from fastapi import Query, APIRouter
from fastapi import APIRouter, Query
from fastapi.responses import JSONResponse
from zhenxun.services.log import logger
from builtin_plugins.web_ui.base_model import Result
from builtin_plugins.web_ui.utils import authentication
from zhenxun.configs.config import Config
from zhenxun.utils.enum import BlockType, PluginType
from zhenxun.models.plugin_info import PluginInfo as DbPluginInfo
from zhenxun.services.log import logger
from zhenxun.utils.enum import BlockType, PluginType
from ....base_model import Result
from ....utils import authentication
from .model import (
PluginInfo,
PluginCount,
PluginConfig,
PluginCount,
PluginDetail,
PluginInfo,
PluginSwitch,
UpdatePlugin,
)

View File

@ -1,12 +1,12 @@
from nonebot import require
from fastapi import APIRouter
from fastapi.responses import JSONResponse
from nonebot import require
from builtin_plugins.web_ui.base_model import Result
from builtin_plugins.web_ui.utils import authentication
from zhenxun.models.plugin_info import PluginInfo
from .model import PluginIr
from ....base_model import Result
from ....utils import authentication
router = APIRouter(prefix="/store")

View File

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

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