🐛 修复插件管理器报错

This commit is contained in:
CMHopeSunshine 2022-11-14 19:03:12 +08:00
parent f6a2bdcff2
commit 42a250ab98

View File

@ -49,13 +49,37 @@ class PluginManager:
if plugin.name not in HIDDEN_PLUGINS:
# 将所有PluginPermission相同的只保留一个
if group_list:
await asyncio.gather(
*[PluginPermission.update_or_create(name=plugin.name, session_id=group['group_id'],
session_type='group') for group in group_list])
for group in group_list:
count = await PluginPermission.filter(
name=plugin.name, session_id=group['group_id'], session_type='group'
).count()
if count > 1:
first = await PluginPermission.filter(
name=plugin.name, session_id=group['group_id'], session_type='group'
).order_by('id').first()
await PluginPermission.filter(
name=plugin.name, session_id=group['group_id'], session_type='group'
).delete()
await first.delete()
await asyncio.gather(
*[PluginPermission.update_or_create(name=plugin.name, session_id=group['group_id'],
session_type='group') for group in group_list])
if user_list:
await asyncio.gather(
*[PluginPermission.update_or_create(name=plugin.name, session_id=user['user_id'],
session_type='user') for user in user_list])
for user in user_list:
count = await PluginPermission.filter(
name=plugin.name, session_id=user['user_id'], session_type='user'
).count()
if count > 1:
first = await PluginPermission.filter(
name=plugin.name, session_id=user['user_id'], session_type='user'
).order_by('id').first()
await PluginPermission.filter(
name=plugin.name, session_id=user['user_id'], session_type='user'
).delete()
await first.delete()
await asyncio.gather(
*[PluginPermission.update_or_create(name=plugin.name, session_id=user['user_id'],
session_type='user') for user in user_list])
if plugin.name not in HIDDEN_PLUGINS:
if plugin.name not in cls.plugins:
if metadata := plugin.metadata:
@ -143,8 +167,8 @@ async def _(event: MessageEvent, matcher: Matcher):
return
# 权限检查
perm = await PluginPermission.filter(name=matcher.plugin_name, session_id=session_id,
session_type=session_type).first()
perm = await PluginPermission.get_or_none(name=matcher.plugin_name, session_id=session_id,
session_type=session_type)
if not perm:
await PluginPermission.create(name=matcher.plugin_name, session_id=session_id, session_type=session_type)
return