zhenxun_bot/zhenxun/builtin_plugins/hooks/auth_hook.py

44 lines
1.2 KiB
Python
Raw Normal View History

2025-04-08 17:11:44 +08:00
import time
2025-01-08 15:23:10 +08:00
from nonebot.adapters import Bot, Event
2024-02-26 03:04:32 +08:00
from nonebot.matcher import Matcher
from nonebot.message import run_postprocessor, run_preprocessor
from nonebot_plugin_alconna import UniMsg
2025-01-08 15:23:10 +08:00
from nonebot_plugin_uninfo import Uninfo
2024-02-26 03:04:32 +08:00
2025-04-08 17:11:44 +08:00
from zhenxun.services.log import logger
from .auth.config import LOGGER_COMMAND
2025-01-08 15:23:10 +08:00
from .auth_checker import LimitManage, auth
2024-02-26 03:04:32 +08:00
# # 权限检测
@run_preprocessor
2025-01-08 15:23:10 +08:00
async def _(matcher: Matcher, event: Event, bot: Bot, session: Uninfo, message: UniMsg):
2025-04-08 17:11:44 +08:00
start_time = time.time()
2025-01-08 15:23:10 +08:00
await auth(
2024-08-13 00:47:39 +08:00
matcher,
event,
bot,
session,
message,
)
2025-04-08 17:11:44 +08:00
logger.info(f"权限检测耗时:{time.time() - start_time}", LOGGER_COMMAND)
2024-02-26 03:04:32 +08:00
# 解除命令block阻塞
@run_postprocessor
2025-01-08 15:23:10 +08:00
async def _(matcher: Matcher, session: Uninfo):
user_id = session.user.id
group_id = None
channel_id = None
if session.group:
if session.group.parent:
group_id = session.group.parent.id
channel_id = session.group.id
else:
group_id = session.group.id
2024-02-26 03:04:32 +08:00
if user_id and matcher.plugin:
module = matcher.plugin.name
LimitManage.unblock(module, user_id, group_id, channel_id)