config.json新增白名单配置

This commit is contained in:
‘KimigaiiWuyi’ 2023-04-26 19:50:39 +08:00
parent fe98ec6b76
commit 08dbd01791
5 changed files with 61 additions and 6 deletions

View File

@ -48,7 +48,7 @@ class GsClient:
user_type='direct', user_type='direct',
user_pm=2, user_pm=2,
group_id=None, group_id=None,
user_id='51', user_id='511',
content=content, content=content,
) )
msg_send = msgjson.encode(msg) msg_send = msgjson.encode(msg)

View File

@ -71,7 +71,15 @@ def main():
if name in SL.lst: if name in SL.lst:
sv = SL.lst[name] sv = SL.lst[name]
data['pm'] = int(data['pm']) data['pm'] = int(data['pm'])
data['black_list'] = data['black_list'].replace('', ';')
data['white_list'] = data['white_list'].replace('', ';')
data['black_list'] = data['black_list'].split(';') data['black_list'] = data['black_list'].split(';')
data['white_list'] = data['white_list'].split(';')
if data['black_list'] == ['']:
data['black_list'] = []
if data['white_list'] == ['']:
data['white_list'] = []
sv.set(**data) sv.set(**data)
@app.post('/genshinuid/setGsConfig') @app.post('/genshinuid/setGsConfig')

View File

@ -91,11 +91,21 @@ async def handle_event(ws: _Bot, msg: MessageReceive):
and user_pm <= SL.lst[sv].pm and user_pm <= SL.lst[sv].pm
and msg.group_id not in SL.lst[sv].black_list and msg.group_id not in SL.lst[sv].black_list
and msg.user_id not in SL.lst[sv].black_list and msg.user_id not in SL.lst[sv].black_list
and True and (
if SL.lst[sv].area == 'ALL' True
or (msg.group_id and SL.lst[sv].area == 'GROUP') if SL.lst[sv].area == 'ALL'
or (not msg.group_id and SL.lst[sv].area == 'DIRECT') or (msg.group_id and SL.lst[sv].area == 'GROUP')
else False or (not msg.group_id and SL.lst[sv].area == 'DIRECT')
else False
)
and (
True
if (not SL.lst[sv].white_list or SL.lst[sv].white_list == [''])
else (
msg.user_id in SL.lst[sv].white_list
or msg.group_id in SL.lst[sv].white_list
)
)
) )
] ]
await asyncio.gather(*pending, return_exceptions=True) await asyncio.gather(*pending, return_exceptions=True)

View File

@ -49,6 +49,7 @@ class SV:
enabled: bool = True, enabled: bool = True,
area: Literal['GROUP', 'DIRECT', 'ALL'] = 'ALL', area: Literal['GROUP', 'DIRECT', 'ALL'] = 'ALL',
black_list: List = [], black_list: List = [],
white_list: List = [],
): ):
if not self.is_initialized: if not self.is_initialized:
logger.info(f'{name}】模块初始化中...') logger.info(f'{name}】模块初始化中...')
@ -65,6 +66,11 @@ class SV:
self.pm = config_sv[name]['pm'] self.pm = config_sv[name]['pm']
self.black_list = config_sv[name]['black_list'] self.black_list = config_sv[name]['black_list']
self.area = config_sv[name]['area'] self.area = config_sv[name]['area']
if 'white_list' not in config_sv[name]:
self.white_list = white_list
self.set(white_list=white_list)
else:
self.white_list = config_sv[name]['white_list']
else: else:
# sv优先级 # sv优先级
self.priority = priority self.priority = priority
@ -76,6 +82,7 @@ class SV:
self.pm = pm self.pm = pm
# 作用范围 # 作用范围
self.area = area self.area = area
self.white_list = white_list
# 写入 # 写入
self.set( self.set(
priority=priority, priority=priority,
@ -83,6 +90,7 @@ class SV:
pm=pm, pm=pm,
black_list=black_list, black_list=black_list,
area=area, area=area,
white_list=white_list,
) )
if name == '测试开关': if name == '测试开关':

View File

@ -10,6 +10,7 @@ def get_sv_panel(
enabled: bool = True, enabled: bool = True,
area: Literal['GROUP', 'DIRECT', 'ALL'] = 'ALL', area: Literal['GROUP', 'DIRECT', 'ALL'] = 'ALL',
black_list: List = [], black_list: List = [],
white_list: List = [],
): ):
api = f'/genshinuid/setSV/{name}' api = f'/genshinuid/setSV/{name}'
card = { card = {
@ -230,6 +231,33 @@ def get_sv_panel(
'id': 'u:a7b2f1bbc0a8', 'id': 'u:a7b2f1bbc0a8',
'label': '', 'label': '',
}, },
{
'type': 'flex',
'className': 'p-1',
'items': [
{
'type': 'container',
'size': 'xs',
'body': [
{
'type': 'input-text',
'label': '白名单(以;为分割)',
'name': 'white_list',
'id': 'u:ab168d425936',
'value': ';'.join(white_list),
}
],
'wrapperBody': False,
'style': {'flex': '0 0 auto', 'display': 'block'},
'id': 'u:48c938f71548',
}
],
'direction': 'column',
'justify': 'center',
'alignItems': 'stretch',
'id': 'u:a7b2f1bbc0a8',
'label': '',
},
], ],
'actions': [ 'actions': [
{ {
@ -282,6 +310,7 @@ def get_sv_page():
sv.enabled, sv.enabled,
sv.area, # type:ignore sv.area, # type:ignore
sv.black_list, sv.black_list,
sv.white_list,
) )
page['body'].append(panel) page['body'].append(panel)