* feat: 整合开发历史

* codepy安全性升级

* 优化一些东西

* 再次优化

* 更新一下 requirements.txt

* CQ码支持以及视频解析

* hotfix

* 更新DEV readme.md

* feat: 添加Docker沙箱代码执行功能

- 新增Docker沙箱执行环境,提供安全隔离的代码执行能力
- 重构code_py插件,使用Docker容器替代子进程执行
- 添加docker配置项和权限检查功能
- 实现代码执行队列和并发控制
- 新增广播插件,仅限管理员使用
This commit is contained in:
镀铬酸钾
2026-01-06 22:59:50 +08:00
committed by GitHub
parent 5b3cd5bbd0
commit aaf4a896dd
13 changed files with 620 additions and 1160 deletions

View File

@@ -227,6 +227,14 @@ class PermissionManager:
Returns:
bool: 如果用户权限 >= 所需权限,返回 True否则返回 False
"""
# 如果传入的是字符串,先转换为 Permission 对象
if isinstance(required_permission, str):
required_permission = _PERMISSIONS.get(required_permission.lower())
if not required_permission:
# 如果是无效的权限字符串,默认拒绝
logger.warning(f"检测到无效的权限检查字符串: {required_permission}")
return False
user_permission = await self.get_user_permission(user_id)
return user_permission >= required_permission
@@ -249,4 +257,21 @@ class PermissionManager:
# 全局权限管理器实例
permission_manager = PermissionManager()
permission_manager = PermissionManager()
def require_admin(func):
"""
一个装饰器,用于限制命令只能由管理员执行。
"""
from functools import wraps
from models.events.message import MessageEvent
@wraps(func)
async def wrapper(event: MessageEvent, *args, **kwargs):
user_id = event.user_id
if await permission_manager.check_permission(user_id, ADMIN):
return await func(event, *args, **kwargs)
else:
await event.reply("抱歉,您没有权限执行此命令。")
return None
return wrapper