diff --git a/zhenxun/builtin_plugins/admin/group_member_update/_data_source.py b/zhenxun/builtin_plugins/admin/group_member_update/_data_source.py
index 4c3b204c..6ece97cc 100644
--- a/zhenxun/builtin_plugins/admin/group_member_update/_data_source.py
+++ b/zhenxun/builtin_plugins/admin/group_member_update/_data_source.py
@@ -1,4 +1,4 @@
-from datetime import datetime, timedelta, timezone
+from datetime import datetime, timezone, timedelta
from nonebot.adapters import Bot
@@ -6,10 +6,10 @@ from nonebot.adapters import Bot
from nonebot.adapters.onebot.v11 import Bot as v11Bot
from nonebot.adapters.onebot.v12 import Bot as v12Bot
-from zhenxun.configs.config import Config
-from zhenxun.models.group_member_info import GroupInfoUser
-from zhenxun.models.level_user import LevelUser
from zhenxun.services.log import logger
+from zhenxun.configs.config import Config
+from zhenxun.models.level_user import LevelUser
+from zhenxun.models.group_member_info import GroupInfoUser
# from nonebot.adapters.discord import Bot as DiscordBot
# from nonebot.adapters.dodo import Bot as DodoBot
@@ -19,6 +19,10 @@ class MemberUpdateManage:
@classmethod
async def update(cls, bot: Bot, group_id: str):
+ if not group_id:
+ return logger.warning(
+ f"bot: {bot.self_id},group_id为空,无法更新群成员信息..."
+ )
if isinstance(bot, v11Bot):
await cls.v11(bot, group_id)
elif isinstance(bot, v12Bot):
diff --git a/zhenxun/builtin_plugins/help_help.py b/zhenxun/builtin_plugins/help_help.py
index d472440b..7da4e7ca 100644
--- a/zhenxun/builtin_plugins/help_help.py
+++ b/zhenxun/builtin_plugins/help_help.py
@@ -2,29 +2,30 @@ 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="功能名称当命令检测",
+ name="笨蛋检测",
description="功能名称当命令检测",
- usage=f"""被动""".strip(),
+ usage="""被动""".strip(),
extra=PluginExtraData(
author="HibiKier",
version="0.1",
plugin_type=PluginType.DEPENDANT,
+ menu_type="其他",
).dict(),
)
@@ -57,10 +58,12 @@ async def _(matcher: Matcher, message: UniMsg, session: EventSession):
if image:
message_list.append(image)
message_list.append(
- f"桀桀桀,预判到会有 '笨蛋' 把功能名称当命令用,特地前来嘲笑!但还是好心来帮帮你啦!\n请at我发送 '帮助{plugin.name}' 或者 '帮助{plugin.id}' 来获取该功能帮助!"
+ "桀桀桀,预判到会有 '笨蛋' 把功能名称当命令用,特地前来嘲笑!"
+ f"但还是好心来帮帮你啦!\n请at我发送 '帮助{plugin.name}' 或者"
+ f" '帮助{plugin.id}' 来获取该功能帮助!"
)
logger.info(
- f"检测到功能名称当命令使用,已发送帮助信息", "功能帮助", session=session
+ "检测到功能名称当命令使用,已发送帮助信息", "功能帮助", session=session
)
await MessageUtils.build_message(message_list).send(reply_to=True)
matcher.stop_propagation()
diff --git a/zhenxun/builtin_plugins/init/__init__.py b/zhenxun/builtin_plugins/init/__init__.py
index f296b1a9..e48b89bb 100644
--- a/zhenxun/builtin_plugins/init/__init__.py
+++ b/zhenxun/builtin_plugins/init/__init__.py
@@ -39,5 +39,5 @@ async def _(bot: Bot):
await GroupConsole.filter(group_id__in=update_id).update(group_flag=1)
logger.debug(
f"更新Bot: {bot.self_id} 的群认证完成,共创建 {len(create_list)} 条数据,"
- "共修改 {len(update_id)} 条数据..."
+ f"共修改 {len(update_id)} 条数据..."
)
diff --git a/zhenxun/builtin_plugins/superuser/set_admin.py b/zhenxun/builtin_plugins/superuser/set_admin.py
index 033d7a3d..7feaf43c 100644
--- a/zhenxun/builtin_plugins/superuser/set_admin.py
+++ b/zhenxun/builtin_plugins/superuser/set_admin.py
@@ -1,35 +1,36 @@
from nonebot.permission import SUPERUSER
from nonebot.plugin import PluginMetadata
+from nonebot_plugin_session import EventSession, SessionLevel
from nonebot_plugin_alconna import (
- Alconna,
- Args,
- Arparma,
At,
+ Args,
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="用户权限管理",
description="设置用户权限",
usage="""
- 权限设置 add [level: 权限等级] [at: at对象或用户id] [gid: 群组]
- 权限设置 delete [at: at对象或用户id]
-
- 权限设置 add 5 @user
- 权限设置 add 5 422 352352
+ 权限设置 add [level: 权限等级] [at: at对象或用户id] ?[-g gid: 群组]
+ 权限设置 delete [at: at对象或用户id] ?[-g gid: 群组]
+
+ 添加权限 5 @user
+ 权限设置 add 5 422 -g 352352
+
+ 删除权限 @user
+ 删除权限 1234123 -g 123123
- 权限设置 delete @user
- 权限设置 delete 123456
-
""".strip(),
extra=PluginExtraData(
author="HibiKier",
@@ -44,16 +45,31 @@ _matcher = on_alconna(
"权限设置",
Subcommand(
"add",
- Args["level", int]["uid", [str, At]]["gid?", str],
+ Args["level", int]["uid", [str, At]],
help_text="添加权限",
),
- Subcommand("delete", Args["uid", [str, At]]["gid?", str], help_text="删除权限"),
+ Subcommand("delete", Args["uid", [str, At]], help_text="删除权限"),
+ Option("-g|--group", Args["gid", str], help_text="指定群组"),
),
permission=SUPERUSER,
priority=5,
block=True,
)
+_matcher.shortcut(
+ "添加权限",
+ command="权限设置",
+ arguments=["add", "{%0}"],
+ prefix=True,
+)
+
+_matcher.shortcut(
+ "删除权限",
+ command="权限设置",
+ arguments=["delete", "{%0}"],
+ prefix=True,
+)
+
@_matcher.assign("add")
async def _(
@@ -82,9 +98,10 @@ async def _(
]
).finish(reply_to=True)
await MessageUtils.build_message(
- f"成功为 \n群组:{group_id}\n用户:{uid} \n设置权限!\n权限:{old_level} -> {level}"
+ f"成功为 \n群组:{group_id}\n用户:{uid} \n"
+ f"设置权限!\n权限:{old_level} -> {level}"
).finish()
- await MessageUtils.build_message(f"设置权限时群组不能为空...").finish()
+ await MessageUtils.build_message("设置权限时群组不能为空...").finish()
@_matcher.assign("delete")
@@ -107,7 +124,7 @@ async def _(
session=session,
)
await MessageUtils.build_message(
- ["成功删除 ", At(flag="user", target=uid), f" 的权限等级!"]
+ ["成功删除 ", At(flag="user", target=uid), " 的权限等级!"]
).finish(reply_to=True)
logger.info(
f"删除群组用户权限: {user.user_level} -> 0",
@@ -115,7 +132,8 @@ async def _(
session=session,
)
await MessageUtils.build_message(
- f"成功删除 \n群组:{group_id}\n用户:{uid} \n的权限等级!\n权限:{user.user_level} -> 0"
+ f"成功删除 \n群组:{group_id}\n用户:{uid} \n"
+ f"的权限等级!\n权限:{user.user_level} -> 0"
).finish()
- await MessageUtils.build_message(f"对方目前暂无权限喔...").finish()
- await MessageUtils.build_message(f"设置权限时群组不能为空...").finish()
+ await MessageUtils.build_message("对方目前暂无权限喔...").finish()
+ await MessageUtils.build_message("设置权限时群组不能为空...").finish()
diff --git a/zhenxun/services/db_context.py b/zhenxun/services/db_context.py
index a39e7175..ed6bc540 100644
--- a/zhenxun/services/db_context.py
+++ b/zhenxun/services/db_context.py
@@ -1,7 +1,7 @@
-from nonebot.utils import is_coroutine_callable
from tortoise import Tortoise
from tortoise.connection import connections
from tortoise.models import Model as Model_
+from nonebot.utils import is_coroutine_callable
from zhenxun.configs.config import BotConfig
from zhenxun.configs.path_config import DATA_PATH
@@ -28,9 +28,25 @@ class Model(Model_):
SCRIPT_METHOD.append((cls.__module__, func))
+class DbUrlIsNode(Exception):
+ """
+ 数据库链接地址为空
+ """
+
+ pass
+
+
+class DbConnectError(Exception):
+ """
+ 数据库连接错误
+ """
+
+ pass
+
+
async def init():
if not BotConfig.db_url:
- raise Exception(f"数据库配置为空,请在.env.dev中配置DB_URL...")
+ raise DbUrlIsNode("数据库配置为空,请在.env.dev中配置DB_URL...")
try:
await Tortoise.init(
db_url=BotConfig.db_url,
@@ -40,15 +56,13 @@ async def init():
if SCRIPT_METHOD:
db = Tortoise.get_connection("default")
logger.debug(
- f"即将运行SCRIPT_METHOD方法, 合计 {len(SCRIPT_METHOD)} 个..."
+ "即将运行SCRIPT_METHOD方法, 合计 "
+ f"{len(SCRIPT_METHOD)} 个..."
)
sql_list = []
for module, func in SCRIPT_METHOD:
try:
- if is_coroutine_callable(func):
- sql = await func()
- else:
- sql = func()
+ sql = await func() if is_coroutine_callable(func) else func()
if sql:
sql_list += sql
except Exception as e:
@@ -63,9 +77,9 @@ async def init():
if sql_list:
logger.debug("SCRIPT_METHOD方法执行完毕!")
await Tortoise.generate_schemas()
- logger.info(f"Database loaded successfully!")
+ logger.info("Database loaded successfully!")
except Exception as e:
- raise Exception(f"数据库连接错误... e:{e}")
+ raise DbConnectError(f"数据库连接错误... e:{e}") from e
async def disconnect():