Compare commits

..

5 Commits

2 changed files with 24 additions and 21 deletions

10
cmds.py
View File

@ -64,9 +64,8 @@ def cmds(app, data):
action="store_true")
parser.add_argument('-g', '--group', help='组名')
parser.add_argument('-m', '--command', help='命令名')
parser.add_argument('-au', '--adduser', help='添加用户到组',
parser.add_argument('-au', '--adduser', help='添加用户/群到组',
action="store_true")
parser.add_argument('-u', '--user', help='用户QQ号')
args = parser.parse_args(sqt.args)
e: AsyncEnforcer = sqt.app.ctx.e
@ -80,9 +79,9 @@ def cmds(app, data):
else:
msg = Message(content='缺失参数,请使用-h查看帮助', room_id=sqt.room_id)
if args.adduser:
if args.user and args.group:
if await e.add_role_for_user(args.user, args.group):
msg = Message(content=f'添加成功g, {args.user}, {args.group}', room_id=sqt.room_id)
if args.group:
if await e.add_role_for_user(str(sqt.room_id), args.group):
msg = Message(content=f'添加成功g, {sqt.room_id}, {args.group}', room_id=sqt.room_id)
else:
msg = Message(content='添加失败,用户已在组内或其它错误', room_id=sqt.room_id)
else:
@ -94,5 +93,6 @@ def cmds(app, data):
if msg == '':
msg = Message(content='参数错误,请使用-h查看帮助', room_id=sqt.room_id)
await sqt.app.ctx.sio.emit('sendMessage', msg.to_json())
await e.save_policy()
return sio_decorator

View File

@ -3,7 +3,7 @@ from dataclasses import dataclass
from functools import wraps
from typing import Optional, List, Union, Literal, Dict, Any
from casbin import Enforcer
from casbin import Enforcer, AsyncEnforcer
from pydantic import BaseModel, Field, model_validator
from sanic import Sanic
from sanic.log import logger
@ -117,6 +117,9 @@ class SioDecorator:
room_id = self.data['roomId']
if sender_id != self.app.ctx.sio_config.self_id:
e: AsyncEnforcer = self.app.ctx.e
if (e.enforce(str(room_id), self._cmd[0][1:]) or
(await e.has_role_for_user(str(sender_id), 'admin'))):
parser = ArgumentParser(self._cmd[0])
sqt = SioRequest(app=self.app,